From ffe1b2b1d7065b53ba20394e2ee2754f3ef3936a Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 20 May 2021 23:32:32 +0200 Subject: [PATCH] [MIRROR] Fix unintended case allowing multiple AI spawns shiftstart (#5808) * Fix unintended case allowing multiple AI spawns shiftstart (#59160) * Fix unintended case allowing multiple AI spawns shiftstart Co-authored-by: Timberpoes --- code/controllers/subsystem/job.dm | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index bd373b43464..a524a943a8f 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -290,23 +290,20 @@ SUBSYSTEM_DEF(job) var/mob/dead/new_player/candidate = pick(candidates) AssignRole(candidate, command_position) -/datum/controller/subsystem/job/proc/FillAIPosition() - var/ai_selected = FALSE - var/datum/job/job = GetJob("AI") - if(!job) - return FALSE - for(var/i = job.total_positions, i > 0, i--) +/// Attempts to fill out all available AI positions. +/datum/controller/subsystem/job/proc/fill_ai_positions() + var/datum/job/ai_job = GetJob("AI") + if(!ai_job) + return + // In byond for(in to) loops, the iteration is inclusive so we need to stop at ai_job.total_positions - 1 + for(var/i in ai_job.current_positions to ai_job.total_positions - 1) for(var/level in level_order) var/list/candidates = list() - candidates = FindOccupationCandidates(job, level) + candidates = FindOccupationCandidates(ai_job, level) if(candidates.len) var/mob/dead/new_player/candidate = pick(candidates) if(AssignRole(candidate, "AI")) - ai_selected++ break - if(ai_selected) - return TRUE - return FALSE /** Proc DivideOccupations @@ -372,9 +369,9 @@ SUBSYSTEM_DEF(job) FillHeadPosition() JobDebug("DO, Head Check end") - //Check for an AI + // Fill out any remaining AI positions. JobDebug("DO, Running AI Check") - FillAIPosition() + fill_ai_positions() JobDebug("DO, AI Check end") //Other jobs are now checked