diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index 7eea0f7937a..4c575f6bbbe 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -180,6 +180,7 @@ SUBSYSTEM_DEF(ticker) hide_mode = TRUE var/list/datum/game_mode/runnable_modes + var/is_admin_forced = FALSE if(GLOB.master_mode == "random" || GLOB.master_mode == "secret") runnable_modes = GLOB.configuration.gamemode.get_runnable_modes() @@ -190,9 +191,9 @@ SUBSYSTEM_DEF(ticker) Master.SetRunLevel(RUNLEVEL_LOBBY) return FALSE if(GLOB.secret_force_mode != "secret") - var/datum/game_mode/M = GLOB.configuration.gamemode.pick_mode(GLOB.secret_force_mode) - if(M.can_start()) - mode = GLOB.configuration.gamemode.pick_mode(GLOB.secret_force_mode) + mode = GLOB.configuration.gamemode.pick_mode(GLOB.secret_force_mode) + is_admin_forced = TRUE + SSjobs.ResetOccupations() if(!mode) mode = pickweight(runnable_modes) @@ -202,7 +203,7 @@ SUBSYSTEM_DEF(ticker) else mode = GLOB.configuration.gamemode.pick_mode(GLOB.master_mode) - if(!mode.can_start()) + if(!mode.can_start() && !is_admin_forced) to_chat(world, "Unable to start [mode.name]. Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby.") mode = null current_state = GAME_STATE_PREGAME