diff --git a/code/controllers/master.dm b/code/controllers/master.dm
index 0f4ae021ad..74847ed88c 100644
--- a/code/controllers/master.dm
+++ b/code/controllers/master.dm
@@ -177,7 +177,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
to_chat(world, "[msg]")
log_world(msg)
- SetRunLevel(1)
+ if (!current_runlevel)
+ SetRunLevel(1)
// Sort subsystems by display setting for easy access.
sortTim(subsystems, /proc/cmp_subsystem_display)
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index a54c74966a..c839c7c33d 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -744,6 +744,15 @@ SUBSYSTEM_DEF(ticker)
cinematic = SSticker.cinematic
maprotatechecked = SSticker.maprotatechecked
+ switch (current_state)
+ if(GAME_STATE_SETTING_UP)
+ Master.SetRunLevel(RUNLEVEL_SETUP)
+ if(GAME_STATE_PLAYING)
+ Master.SetRunLevel(RUNLEVEL_GAME)
+ if(GAME_STATE_FINISHED)
+ Master.SetRunLevel(RUNLEVEL_POSTGAME)
+
+
modevoted = SSticker.modevoted
/datum/controller/subsystem/ticker/proc/send_news_report()
@@ -844,7 +853,7 @@ SUBSYSTEM_DEF(ticker)
if(delay_end)
to_chat(world, "An admin has delayed the round end.")
return
-
+
to_chat(world, "Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]")
var/start_wait = world.time
@@ -854,7 +863,7 @@ SUBSYSTEM_DEF(ticker)
if(delay_end)
to_chat(world, "Reboot was cancelled by an admin.")
return
-
+
SSblackbox.set_details("[feedback_c]","[feedback_r]")
log_game("Rebooting World. [reason]")