diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm
index 77fe76ed7d4..e90299ac587 100644
--- a/code/controllers/voting.dm
+++ b/code/controllers/voting.dm
@@ -21,7 +21,7 @@ datum/controller/vote
if(mode)
// No more change mode votes after the game has started.
// 3 is GAME_STATE_PLAYING, but that #define is undefined for some reason
- if(mode == "gamemode" && ticker.current_state >= 3)
+ if(mode == "gamemode" && ticker.current_state >= 2)
world << "Voting aborted due to game start."
src.reset()
return
@@ -151,10 +151,15 @@ datum/controller/vote
reset()
switch(vote_type)
- if("restart") choices.Add("Restart Round","Continue Playing")
+ if("restart")
+ choices.Add("Restart Round","Continue Playing")
if("gamemode")
+ if(ticker.current_state >= 2)
+ return 0
choices.Add(config.votable_modes)
if("crew_transfer")
+ if(ticker.current_state <= 2)
+ return 0
question = "End the shift?"
choices.Add("Initiate Crew Transfer", "Continue The Round")
if("custom")
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index fbdc336282d..ecb8ea81dfd 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -52,7 +52,9 @@ var/global/datum/controller/gameticker/ticker
world << "Welcome to the pre-game lobby!"
world << "Please, setup your character and select ready. Game will start in [pregame_timeleft] seconds"
while(current_state == GAME_STATE_PREGAME)
- sleep(10)
+ for(var/i=0, i<10, i++)
+ sleep(1)
+ vote.process()
if(going)
pregame_timeleft--