diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 9ee06ba491..cbba5727eb 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -29,6 +29,7 @@ var/global/datum/controller/gameticker/ticker
var/pregame_timeleft = 0
+ var/delay_end = 0 //if set to nonzero, the round will not restart on it's own
/datum/controller/gameticker/proc/pregame()
login_music = pick('title2.ogg') // choose title music!
@@ -277,17 +278,22 @@ var/global/datum/controller/gameticker/ticker
spawn(50)
if (mode.station_was_nuked)
feedback_set_details("end_proper","nuke")
- world << "\blue Rebooting due to destruction of station in [restart_timeout/10] seconds"
+ if(!delay_end)
+ world << "\blue Rebooting due to destruction of station in [restart_timeout/10] seconds"
else
feedback_set_details("end_proper","proper completion")
- world << "\blue Restarting in [restart_timeout/10] seconds"
+ if(!delay_end)
+ world << "\blue Restarting in [restart_timeout/10] seconds"
if(blackbox)
blackbox.save_all_data_to_sql()
- sleep(restart_timeout)
- world.Reboot()
+ if(!delay_end)
+ sleep(restart_timeout)
+ world.Reboot()
+ else
+ world << "\blue An admin has delayed the round end"
return 1
@@ -304,7 +310,7 @@ var/global/datum/controller/gameticker/ticker
if (aiPlayer.connected_robots.len)
var/robolist = "The AI's loyal minions were: "
for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots)
- robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":", (Played by: [robo.key])"]"
+ robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":" (Played by: [robo.key]), "]"
world << "[robolist]"
for (var/mob/living/silicon/robot/robo in world)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index c871d20142..7902fc99f2 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -65,6 +65,12 @@ var/global/BSACooldown = 0
alert("You cannot perform this action. You must be of a higher administrative rank!")
return
+ if(href_list["delay_round_end"])
+ if (src.rank in list("Badmin", "Game Admin", "Game Master"))
+ ticker.delay_end = !ticker.delay_end
+ log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
+ message_admins("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
+ href_list["secretsadmin"] = "check_antagonist"
if(href_list["simplemake"])
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index bc8d392c20..ef1226001a 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -392,7 +392,7 @@
dat += "Send Back
"
if(1)
dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
"
-
+ dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
"
if(ticker.mode.syndicates.len)
dat += "
| Syndicates |