diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 23fd8ab112a..2549d62b2ff 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -313,7 +313,10 @@ var/global/datum/controller/gameticker/ticker
if(!delay_end)
sleep(restart_timeout)
- world.Reboot()
+ if(!delay_end)
+ world.Reboot()
+ else
+ world << "\blue An admin has delayed the round end"
else
world << "\blue An admin has delayed the round end"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 7a14927c057..2d956d6928a 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -799,10 +799,16 @@ var/global/floorIsLava = 0
/datum/admins/proc/delay()
set category = "Server"
- set desc="Delay the game start"
+ set desc="Delay the game start/end"
set name="Delay"
if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
- return alert("Too late... The game has already started!", null, null, null, null, null)
+ 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)
+ else
+ usr << "\red You are not a high enough rank."
+ return //alert("Round end delayed", null, null, null, null, null)
going = !( going )
if (!( going ))
world << "The game start has been delayed."