diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 42a00f53fb..49f5244440 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -88,14 +88,15 @@ var/global/datum/controller/subsystem/ticker/ticker Master.SetRunLevel(RUNLEVEL_SETUP) return - if(pregame_timeleft <= config.vote_autogamemode_timeleft) - SSvote.autogamemode() // Start the game mode vote + if(pregame_timeleft <= config.vote_autogamemode_timeleft && !SSvote.gamemode_vote_called) + SSvote.autogamemode() // Start the game mode vote (if we haven't had one already) // Called during GAME_STATE_SETTING_UP (RUNLEVEL_SETUP) /datum/controller/subsystem/ticker/proc/setup_tick(resumed = FALSE) if(!setup_choose_gamemode()) // It failed, go back to lobby state and re-send the welcome message pregame_timeleft = config.pregame_time + SSvote.gamemode_vote_called = FALSE // Allow another autogamemode vote current_state = GAME_STATE_PREGAME Master.SetRunLevel(RUNLEVEL_LOBBY) pregame_welcome() diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index e3eca943bf..210d97a2a2 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -13,6 +13,7 @@ SUBSYSTEM_DEF(vote) var/duration var/mode var/question + var/gamemode_vote_called = FALSE // Have we had a gamemode vote this round? Only auto-call if we haven't var/list/choices = list() var/list/gamemode_names = list() var/list/voted = list() @@ -257,6 +258,7 @@ SUBSYSTEM_DEF(vote) world << sound('sound/ambience/alarm4.ogg', repeat = 0, wait = 0, volume = 50, channel = 3) if(mode == VOTE_GAMEMODE && round_progressing) + gamemode_vote_called = TRUE round_progressing = 0 to_world("Round start has been delayed.")