diff --git a/code/game/world.dm b/code/game/world.dm index 38caf49036fc..b57d0f4bf25b 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,6 +1,8 @@ #define RESTART_COUNTER_PATH "data/round_counter.txt" GLOBAL_VAR(restart_counter) +//TODO: Replace INFINITY with the version that fixes http://www.byond.com/forum/?post=2407430 +GLOBAL_VAR_INIT(bypass_tgs_reboot, world.system_type == UNIX && world.byond_build < INFINITY) //This happens after the Master subsystem new(s) (it's a global datum) //So subsystems globals exist, but are not initialised @@ -14,7 +16,7 @@ GLOBAL_VAR(restart_counter) make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once) - TgsNew(minimum_required_security_level = TGS_SECURITY_TRUSTED) + TgsNew(new /datum/tgs_event_handler/tg, minimum_required_security_level = TGS_SECURITY_TRUSTED) GLOB.revdata = new @@ -205,7 +207,8 @@ GLOBAL_VAR(restart_counter) to_chat(world, "Rebooting world...") Master.Shutdown() //run SS shutdowns - TgsReboot() + if(!GLOB.bypass_tgs_reboot) + TgsReboot() if(TEST_RUN_PARAMETER in params) FinishTestRun() diff --git a/code/modules/tgs/event_handler.dm b/code/modules/tgs/event_handler.dm new file mode 100644 index 000000000000..3581302671c1 --- /dev/null +++ b/code/modules/tgs/event_handler.dm @@ -0,0 +1,4 @@ +/datum/tgs_event_handler/tg/HandleEvent(event_code, ...) + switch(event_code) + if(TGS_EVENT_COMPILE_COMPLETE) + GLOB.bypass_tgs_reboot = FALSE diff --git a/tgstation.dme b/tgstation.dme index b16f8c5b018e..6ea22b8bf6d3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2640,6 +2640,7 @@ #include "code\modules\surgery\organs\tails.dm" #include "code\modules\surgery\organs\tongue.dm" #include "code\modules\surgery\organs\vocal_cords.dm" +#include "code\modules\tgs\event_handler.dm" #include "code\modules\tgs\includes.dm" #include "code\modules\tgui\external.dm" #include "code\modules\tgui\states.dm"