diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 99ec5276ef2..ff63b37f822 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -125,7 +125,7 @@ SUBSYSTEM_DEF(ticker) check_maprotate() scripture_states = scripture_unlock_alert(scripture_states) - if(!mode.explosion_in_progress && mode.check_finished() || force_ending) + if(!mode.explosion_in_progress && mode.check_finished(force_ending) || force_ending) current_state = GAME_STATE_FINISHED toggle_ooc(1) // Turn it on declare_completion(force_ending) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index dbbc4b02436..b67dd1979d1 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -162,6 +162,10 @@ . = 1 sleep(rand(600,1800)) + if(!SSticker.IsRoundInProgress()) + message_admins("Roundtype conversion cancelled, the game appears to have finished!") + round_converted = 0 + return //somewhere between 1 and 3 minutes from now if(!config.midround_antag[SSticker.mode.config_tag]) round_converted = 0 @@ -177,7 +181,7 @@ return 0 -/datum/game_mode/proc/check_finished() //to be called by SSticker +/datum/game_mode/proc/check_finished(force_ending) //to be called by SSticker if(replacementmode && round_converted == 2) return replacementmode.check_finished() if(SSshuttle.emergency && (SSshuttle.emergency.mode == SHUTTLE_ENDGAME)) @@ -208,7 +212,7 @@ living_antag_player = Player return 0 - if(!config.continuous[config_tag]) + if(!config.continuous[config_tag] || force_ending) return 1 else