tgstation / tgstation

The /tg/station branch of SS13.
https://www.tgstation13.org/
GNU Affero General Public License v3.0
1.67k stars 4.9k forks source link

Posibrain bans prevent people from spawning as roundstart AIs #85301

Open Lorwp opened 1 month ago

Lorwp commented 1 month ago

Reporting client version: 515.1641

Issue Summary

Reported in this ticket (Admins only): https://statbus.space/tgdb/tickets/232710/1

Likely caused by #80355

People banned from the posibrain ghost role (but not banned from AI) can't join as roundstart AIs, despite getting the role. They get spawned as a cyborg instead, which has a MMI. The AI core stays networked to be latejoined.

the resulting cyborg can still have their MMI shoved in a AI core per usual.

Round ID:

232710

Testmerges:

Reproduction:

  1. Ban user from Ghost roles (or just posibrain)
  2. Try to have them (or you, lets be honest you're just banning yourself to test this) ready up as a roundstart AI
  3. Find they (or you) get spawned as a borg or some other role instead.
Timberpoes commented 1 month ago

This doesn't appear to have been the bug that caused no AI to spawn.

From the job assignment debug logs for assigning the AI role:

[2024-07-27 03:05:21.920] DEBUG-JOB: DO, Running AI Check
[2024-07-27 03:05:21.920] DEBUG-JOB: Running FOC, Job: /datum/job/ai, Level: High Priority
[2024-07-27 03:05:21.920] DEBUG-JOB: FOC player job not enabled, Player: Chowder McArthor
[2024-07-27 03:05:21.920] DEBUG-JOB: FOC player job enabled at wrong level, Player: Y0SH1_M4S73R, TheirLevel: Low Priority, ReqLevel: High Priority
[2024-07-27 03:05:21.921] DEBUG-JOB: FOC player job not enabled, Player: VERYFASTMONKEY
[2024-07-27 03:05:21.921] DEBUG-JOB: FOC player job enabled at wrong level, Player: Hotmud9, TheirLevel: Medium Priority, ReqLevel: High Priority
[2024-07-27 03:05:21.921] DEBUG-JOB: FOC player job not enabled, Player: Bingusdingus
[2024-07-27 03:05:21.921] DEBUG-JOB: FOC player job not enabled, Player: Castone001
[2024-07-27 03:05:21.922] DEBUG-JOB: FOC player job not enabled, Player: Nukularpower
[2024-07-27 03:05:21.922] DEBUG-JOB: FOC player job not enabled, Player: CopperCrow
[2024-07-27 03:05:21.922] DEBUG-JOB: FOC player job not enabled, Player: CrazyPro
[2024-07-27 03:05:21.922] DEBUG-JOB: FOC player job not enabled, Player: 0moog
[2024-07-27 03:05:21.923] DEBUG-JOB: FOC player job not enabled, Player: SnowJohn
[2024-07-27 03:05:21.923] DEBUG-JOB: FOC player job not enabled, Player: Aoxdragon
[2024-07-27 03:05:21.923] DEBUG-JOB: FOC player job not enabled, Player: DaydreamIQ
[2024-07-27 03:05:21.924] DEBUG-JOB: FOC pass, Player: ThatVaultie, Level: High Priority
[2024-07-27 03:05:21.924] DEBUG-JOB: FOC player job not enabled, Player: Mokl123
[2024-07-27 03:05:21.924] DEBUG-JOB: FOC player job enabled at wrong level, Player: Nyozzl, TheirLevel: Low Priority, ReqLevel: High Priority
[2024-07-27 03:05:21.925] DEBUG-JOB: FOC player job not enabled, Player: Cillian69
[2024-07-27 03:05:21.925] DEBUG-JOB: FOC player job not enabled, Player: Tonty
[2024-07-27 03:05:21.925] DEBUG-JOB: FOC player job not enabled, Player: PJ_2005
[2024-07-27 03:05:21.926] DEBUG-JOB: FOC pass, Player: LizeLive, Level: High Priority
[2024-07-27 03:05:21.926] DEBUG-JOB: FOC player job not enabled, Player: Orange337
[2024-07-27 03:05:21.926] DEBUG-JOB: FOC player job not enabled, Player: Bugstep
[2024-07-27 03:05:21.927] DEBUG-JOB: FOC player job not enabled, Player: SmArtKar
[2024-07-27 03:05:21.927] DEBUG-JOB: FOC player job not enabled, Player: BHat0451
[2024-07-27 03:05:21.927] DEBUG-JOB: FOC player job not enabled, Player: ThCommodore
[2024-07-27 03:05:21.927] DEBUG-JOB: FOC player job not enabled, Player: Kuricityy
[2024-07-27 03:05:21.928] DEBUG-JOB: FOC player job not enabled, Player: Anthro9426
[2024-07-27 03:05:21.928] DEBUG-JOB: FOC player job not enabled, Player: Hiertus
[2024-07-27 03:05:21.928] DEBUG-JOB: FOC player job not enabled, Player: Saltyham
[2024-07-27 03:05:21.929] DEBUG-JOB: FOC player job not enabled, Player: Riolusx2
[2024-07-27 03:05:21.929] DEBUG-JOB: FOC player job not enabled, Player: Redbert
[2024-07-27 03:05:21.929] DEBUG-JOB: FOC player job not enabled, Player: AyamePup
[2024-07-27 03:05:21.929] DEBUG-JOB: FOC player job not enabled, Player: Maializard
[2024-07-27 03:05:21.930] DEBUG-JOB: FOC player job not enabled, Player: Donuts222
[2024-07-27 03:05:21.930] DEBUG-JOB: FOC pass, Player: Funke-Monke, Level: High Priority
[2024-07-27 03:05:21.930] DEBUG-JOB: FOC player job not enabled, Player: CestLaDonut
[2024-07-27 03:05:21.931] DEBUG-JOB: FOC pass, Player: Ducker96, Level: High Priority
[2024-07-27 03:05:21.931] DEBUG-JOB: FOC player job enabled at wrong level, Player: Mrjafar, TheirLevel: Low Priority, ReqLevel: High Priority
[2024-07-27 03:05:21.931] DEBUG-JOB: FOC player job not enabled, Player: Chonchy
[2024-07-27 03:05:21.931] DEBUG-JOB: FOC player job not enabled, Player: Gmet
[2024-07-27 03:05:21.932] DEBUG-JOB: FOC player job not enabled, Player: IsaacExists
[2024-07-27 03:05:21.932] DEBUG-JOB: FOC player job not enabled, Player: DonEvaristoMoya
[2024-07-27 03:05:21.932] DEBUG-JOB: FOC player job not enabled, Player: AeORockin36
[2024-07-27 03:05:21.933] DEBUG-JOB: FOC player job not enabled, Player: Chumpkin
[2024-07-27 03:05:21.933] DEBUG-JOB: FOC player job not enabled, Player: HMcFlea
[2024-07-27 03:05:21.933] DEBUG-JOB: FOC player job not enabled, Player: Warbluke
[2024-07-27 03:05:21.933] DEBUG-JOB: FOC player job not enabled, Player: SteeleStealsSteel
[2024-07-27 03:05:21.934] DEBUG-JOB: FOC player job not enabled, Player: Lamerguy2323
[2024-07-27 03:05:21.934] DEBUG-JOB: FOC player job not enabled, Player: Cowboy Owlbear
[2024-07-27 03:05:21.934] DEBUG-JOB: FOC player job not enabled, Player: Pumpkin0
[2024-07-27 03:05:21.935] DEBUG-JOB: Running AR, Player: Ducker96, Job: /datum/job/ai, LateJoin: 0
[2024-07-27 03:05:21.935] DEBUG-JOB: Player: Ducker96 is now Rank: AI, JCP:0, JPL:1
[2024-07-27 03:05:21.935] DEBUG-JOB: DO, AI Check end

The problem being that after they were assigned the AI, they weren't removed from the pool of players to be assigned roles.

    Line 2846: [2024-07-27 03:05:23.774] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 2905: [2024-07-27 03:05:23.794] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 2961: [2024-07-27 03:05:23.815] DEBUG-JOB: FOC pass, Player: Ducker96, Level: High Priority
    Line 3016: [2024-07-27 03:05:23.833] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3068: [2024-07-27 03:05:23.851] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3117: [2024-07-27 03:05:23.867] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3168: [2024-07-27 03:05:23.883] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3216: [2024-07-27 03:05:23.899] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3264: [2024-07-27 03:05:23.917] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3542: [2024-07-27 03:05:24.022] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3543: [2024-07-27 03:05:24.023] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3544: [2024-07-27 03:05:24.023] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3545: [2024-07-27 03:05:24.023] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3546: [2024-07-27 03:05:24.024] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3547: [2024-07-27 03:05:24.024] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3548: [2024-07-27 03:05:24.024] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3549: [2024-07-27 03:05:24.025] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3550: [2024-07-27 03:05:24.025] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3551: [2024-07-27 03:05:24.025] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3552: [2024-07-27 03:05:24.026] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3553: [2024-07-27 03:05:24.026] DEBUG-JOB: FOC player job enabled but at different level, Player: Ducker96, TheirLevel: Low Priority, ReqLevel: High Priority
    Line 3554: [2024-07-27 03:05:24.026] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3555: [2024-07-27 03:05:24.026] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3556: [2024-07-27 03:05:24.027] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3557: [2024-07-27 03:05:24.027] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3558: [2024-07-27 03:05:24.027] DEBUG-JOB: FOC player job enabled but at different level, Player: Ducker96, TheirLevel: Medium Priority, ReqLevel: High Priority
    Line 3559: [2024-07-27 03:05:24.028] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3560: [2024-07-27 03:05:24.028] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3561: [2024-07-27 03:05:24.028] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3562: [2024-07-27 03:05:24.029] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3563: [2024-07-27 03:05:24.029] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3564: [2024-07-27 03:05:24.029] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3565: [2024-07-27 03:05:24.029] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3566: [2024-07-27 03:05:24.030] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3567: [2024-07-27 03:05:24.030] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3568: [2024-07-27 03:05:24.030] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3569: [2024-07-27 03:05:24.031] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 3570: [2024-07-27 03:05:24.031] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4182: [2024-07-27 03:05:24.265] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4203: [2024-07-27 03:05:24.273] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4221: [2024-07-27 03:05:24.279] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4239: [2024-07-27 03:05:24.284] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4288: [2024-07-27 03:05:24.301] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4289: [2024-07-27 03:05:24.304] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4290: [2024-07-27 03:05:24.304] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4291: [2024-07-27 03:05:24.305] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4292: [2024-07-27 03:05:24.305] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4293: [2024-07-27 03:05:24.306] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4294: [2024-07-27 03:05:24.306] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4295: [2024-07-27 03:05:24.306] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4296: [2024-07-27 03:05:24.307] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4297: [2024-07-27 03:05:24.307] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4298: [2024-07-27 03:05:24.308] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4299: [2024-07-27 03:05:24.308] DEBUG-JOB: FOC player job not enabled, Player: Ducker96
    Line 4300: [2024-07-27 03:05:24.308] DEBUG-JOB: DO pass, Player: Ducker96, Level:2, Job:Mime
    Line 4301: [2024-07-27 03:05:24.309] DEBUG-JOB: Running AR, Player: Ducker96, Job: /datum/job/mime, LateJoin: 0
    Line 4302: [2024-07-27 03:05:24.309] DEBUG-JOB: Player: Ducker96 is now Rank: Mime, JCP:0, JPL:1
    Line 4886: [2024-07-27 03:05:33.181] DEBUG-MOBTAG: TAG: mob_3305 NEW OWNER: Ducker96/(Hushed Harriet)

And eventually got the mime role, which overwrote their AI role and left the station without a roundstart AI spawn.

Isratosh commented 1 month ago

I tested this locally (by editing client.ban_cache = list("Posibrain") directly as I could not get ezdb to work) and I was able to join as an AI at round start just fine. The job system uses clearly defined job datums and is_banned_from() takes a string of the job title, and I don't see how it would confuse AI with Posibrain or pAI. The AI mob does not actually contain a positronic brain object, nor did it contain an MMI previously, these objects only exist when the AI core is an unfinished structure.

I looked through debug.log for that round and its difficult to make any sense of it. I think there are several dry runs included. LizeLive was eligible and considered for AI alongside 2 others, and they were not selected. The player who was chosen for AI ended up with a different job in manifest.log, so there was no AI at round start. Not sure how that happened. I'm also not sure why it reports LizeLive as having both AI and cyborg at high priority when that's not normally possible. A maintainer can access this log directly from the server using the get-server-logs verb if need be.

Timberpoes commented 1 month ago

The issue with this was:

[2024-07-27 03:05:23.828] DEBUG-JOB: Running AR, Player: Funke-Monke, Job: /datum/job/ai, LateJoin: 0
[2024-07-27 03:05:23.828] DEBUG-JOB: Player: Funke-Monke is now Rank: AI, JCP:0, JPL:1

...

[2024-07-27 03:05:26.728] GAME-ACCESS: Logout: Funke-Monke/(Funke-Monke)
[2024-07-27 03:05:26.729] GAME: Funke-Monke[DC]/(Funke-Monke) (mob_57) Funke-Monke[DC]/(Funke-Monke) is no longer owning mob Funke-Monke(/mob/dead/new_player) (start area (8,248,1))

...

[2024-07-27 03:05:39.082] GAME: *no key*/(Zenith-Arhista) (mob_3195) *no key*/(Zenith-Arhista) is no longer owning mob Zenith-Arhista(/mob/dead/observer) (Hermit's Cabin (155,103,2))
[2024-07-27 03:05:39.083] GAME-ACCESS: Mob Login: Crimson Zenith/(Homer Roberts) was assigned to a /mob/living/carbon/human (mob_3311)
[2024-07-27 03:05:39.117] GAME: Crimson Zenith/(Homer Roberts) (mob_3311) Client Crimson Zenith/(Homer Roberts) has taken ownership of mob Homer Roberts(/mob/living/carbon/human) (Hermit's Cabin (155,103,2))
[2024-07-27 03:05:39.636] GAME-EMOTE: Cowboy Owlbear/(Io IO) (mob_3270) cracks their knuckles. (Courtroom (103,160,3))
[2024-07-27 03:05:39.709] GAME-SAY: 0moog/(SIRIUS) (mob_3257) "Hello" (AI Satellite Antechamber (150,49,4))
[2024-07-27 03:05:39.710] GAME-SAY: 0moog/(SIRIUS) (mob_3257) (binary) "Hello" (AI Satellite Antechamber (150,49,4))
[2024-07-27 03:05:39.712] GAME-SAY: Gmet/(Gmet Mottezer) (mob_3304) "oh boy" (Locker Room (77,137,4))
[2024-07-27 03:05:39.758] GAME-SAY: PJ_2005/(Kiera Dimeling) (mob_3259) "botany time" (Hydroponics (133,135,4))
[2024-07-27 03:05:39.901] GAME-ACCESS: Mob Login: Funke-Monke/(Funke-Monke) was assigned to a /mob/dead/new_player (mob_3308)
[2024-07-27 03:05:40.409] GAME: Funke-Monke/(Funke-Monke) (mob_3308) Client Funke-Monke/(Funke-Monke) has taken ownership of mob Funke-Monke(/mob/dead/new_player) (start area (8,248,1))

...

[2024-07-27 03:08:52.709] DEBUG-JOB: Running AR, Player: Funke-Monke, Job: /datum/job/chief_medical_officer, LateJoin: 1
[2024-07-27 03:08:52.710] DEBUG-JOB: Player: Funke-Monke is now Rank: Chief Medical Officer, JCP:0, JPL:1

That another player was selected for AI, and said player disconnected in the short moments between being selected for AI and the shift starting with everyone being converted from observer to player.

This meant they weren't spawned in at all and were dumped back to the lobby to latejoin when they reconnected.

Jacquerel commented 1 month ago

I'm not closing this right now because it seems like there is a bug here, but it's not the one reported 😅