diff --git a/code/_helpers/time.dm b/code/_helpers/time.dm index 1930f13b29..d1badd69fd 100644 --- a/code/_helpers/time.dm +++ b/code/_helpers/time.dm @@ -128,15 +128,12 @@ GLOBAL_VAR_INIT(round_start_time, 0) /proc/update_midnight_rollover() // Day has wrapped (world.timeofday drops to 0 at the start of each real day) if (world.timeofday < rollovercheck_last_timeofday) - // Compare the last wrap date (or server startup date) to our current date - var/curday = text2num(time2text(world.timeofday, "DD")) - // If the date is the same as the startup or last wrap, we should avoid wrapping, may be clock adjustment - // note that this won't protect against going from 00:01 to 23:59 and crossing the boundary again - if(rollover_safety_date != curday) + // If the day started/last wrap was < 12 hours ago, this is spurious + if(rollover_safety_date < world.realtime - (12 HOURS)) midnight_rollovers++ - rollover_safety_date = curday + rollover_safety_date = world.realtime else - warning("Time rollover error: world.timeofday decreased from previous check, but date remained the same. System clock?") + warning("Time rollover error: world.timeofday decreased from previous check, but the day or last rollover is less than 12 hours old. System clock?") rollovercheck_last_timeofday = world.timeofday return midnight_rollovers diff --git a/code/game/world.dm b/code/game/world.dm index c62f2e35b0..150a94de3e 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,7 +1,7 @@ #define RECOMMENDED_VERSION 501 /world/New() world_startup_time = world.timeofday - rollover_safety_date = text2num(time2text(world_startup_time, "DD")) + rollover_safety_date = world.realtime - world.timeofday // 00:00 today (ish, since floating point error with world.realtime) of today to_world_log("Map Loading Complete") //logs //VOREStation Edit Start