diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index adce79343b2..f1b13b65628 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -275,13 +275,15 @@
if("RestartNanoMob")
if(mob_hunt_server)
- var/loading_msg = pick("Respawning spawns", "Reticulating splines", "Flipping hat",
- "Capturing all of them", "Fixing minor text issues", "Being the very best",
- "Nerfing this", "Not communicating with playerbase", "Coding a ripoff in a 2D spaceman game")
- to_chat(usr, "Restarting Nano-Mob Hunter GO! game server. [loading_msg]...")
- mob_hunt_server.manual_reboot()
+ if(mob_hunt_server.manual_reboot())
+ var/loading_msg = pick("Respawning spawns", "Reticulating splines", "Flipping hat",
+ "Capturing all of them", "Fixing minor text issues", "Being the very best",
+ "Nerfing this", "Not communicating with playerbase", "Coding a ripoff in a 2D spaceman game")
+ to_chat(usr, "Restarting Nano-Mob Hunter GO! game server. [loading_msg]...")
+ else
+ to_chat(usr, "Nano-Mob Hunter GO! game server reboot failed due to recent restart. Please wait before re-attempting.")
else
- to_chat(usr, "Nano-Mob Hunter GO! game server is offline for extended maintenance. Contact your Central Command administrators for more info if desired.")
+ to_chat(usr, "Nano-Mob Hunter GO! game server is offline for extended maintenance. Contact your Central Command administrators for more info if desired.")
if("AcceptDocking")
to_chat(usr, "Docking request accepted!")
diff --git a/code/modules/arcade/mob_hunt/game_server.dm b/code/modules/arcade/mob_hunt/game_server.dm
index 7058eb5f575..3ad04e5a9f9 100644
--- a/code/modules/arcade/mob_hunt/game_server.dm
+++ b/code/modules/arcade/mob_hunt/game_server.dm
@@ -7,6 +7,7 @@ var/global/datum/controller/process/mob_hunt/mob_hunt_server
var/list/trap_spawns = list()
var/list/connected_clients = list()
var/server_status = 1 //1 is online, 0 is offline
+ var/reset_cooldown = 0 //number of controller cycles before the manual_reboot proc can be used again (ignored if server is offline so you can always boot back up)
/datum/controller/process/mob_hunt/setup()
name = "Nano-Mob Hunter GO Server"
@@ -21,6 +22,8 @@ var/global/datum/controller/process/mob_hunt/mob_hunt_server
return ..()
/datum/controller/process/mob_hunt/doWork()
+ if(reset_cooldown) //if reset_cooldown is set (we are on cooldown, duh), reduce the remaining cooldown every cycle
+ reset_cooldown--
if(server_status == 0)
return
client_mob_update()
@@ -66,11 +69,15 @@ var/global/datum/controller/process/mob_hunt/mob_hunt_server
spawn_mob()
/datum/controller/process/mob_hunt/proc/manual_reboot()
+ if(server_status && reset_cooldown)
+ return 0
for(var/obj/effect/nanomob/N in trap_spawns)
N.despawn()
for(var/obj/effect/nanomob/N in normal_spawns)
N.despawn()
server_status = 1
+ reset_cooldown = 25 //25 controller cycle cooldown for manual restarts
+ return 1
/datum/controller/process/mob_hunt/proc/spawn_mob()
var/list/nanomob_types = subtypesof(/datum/mob_hunt)