diff --git a/code/__DEFINES/dcs/signals/signals_subsystem.dm b/code/__DEFINES/dcs/signals/signals_subsystem.dm index c39b59262b1..de01867eb19 100644 --- a/code/__DEFINES/dcs/signals/signals_subsystem.dm +++ b/code/__DEFINES/dcs/signals/signals_subsystem.dm @@ -3,7 +3,7 @@ // All signals send the source datum of the signal as the first argument ///Subsystem signals -///From base of datum/controller/subsystem/Initialize: (start_timeofday) +///From base of datum/controller/subsystem/Initialize #define COMSIG_SUBSYSTEM_POST_INITIALIZE "subsystem_post_initialize" ///Called when the ticker enters the pre-game phase diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 36cfc164cfd..026170b06a6 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -314,3 +314,6 @@ #define SSMACHINES_DT (SSmachines.wait/10) #define SSMOBS_DT (SSmobs.wait/10) #define SSOBJ_DT (SSobj.wait/10) + +/// The timer key used to know how long subsystem initialization takes +#define SS_INIT_TIMER_KEY "ss_init" diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 660dd0f51cd..8c841fd8807 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -241,7 +241,10 @@ GLOBAL_REAL(Master, /datum/controller/master) = new if (subsystem.flags & SS_NO_INIT || subsystem.initialized) //Don't init SSs with the correspondig flag or if they already are initialzized continue current_initializing_subsystem = subsystem - subsystem.Initialize(REALTIMEOFDAY) + + rustg_time_reset(SS_INIT_TIMER_KEY) + subsystem.Initialize() + CHECK_TICK current_initializing_subsystem = null init_stage_completed = current_init_stage diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index d1582ba7c68..c214017f634 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -255,14 +255,18 @@ /datum/controller/subsystem/proc/OnConfigLoad() //used to initialize the subsystem AFTER the map has loaded -/datum/controller/subsystem/Initialize(start_timeofday) +/datum/controller/subsystem/Initialize() initialized = TRUE - SEND_SIGNAL(src, COMSIG_SUBSYSTEM_POST_INITIALIZE, start_timeofday) - var/time = (REALTIMEOFDAY - start_timeofday) / 10 - var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!" - add_startup_message(msg) //SKYRAT EDIT CHANGE + SEND_SIGNAL(src, COMSIG_SUBSYSTEM_POST_INITIALIZE) + + var/time = rustg_time_milliseconds(SS_INIT_TIMER_KEY) + var/seconds = round(time / 1000, 0.01) + + var/msg = "Initialized [name] subsystem within [seconds] second[seconds == 1 ? "" : "s"]!" + add_startup_message(msg) //SKYRAT EDIT CHANGE - ORIGINAL: to_chat(world, span_boldannounce("[msg]")) log_world(msg) - return time + SSblackbox.record_feedback("tally", "subsystem_initialize", time, name) + return seconds /datum/controller/subsystem/stat_entry(msg) if(can_fire && !(SS_NO_FIRE & flags) && init_stage <= Master.init_stage_completed)