Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -292,7 +292,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
SS.state = SS_IDLE
|
||||
if (SS.flags & SS_TICKER)
|
||||
tickersubsystems += SS
|
||||
timer += world.tick_lag * rand(1, 5)
|
||||
// Timer subsystems aren't allowed to bunch up, so we offset them a bit
|
||||
timer += world.tick_lag * rand(0, 1)
|
||||
SS.next_fire = timer
|
||||
continue
|
||||
|
||||
@@ -371,14 +372,16 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
var/checking_runlevel = current_runlevel
|
||||
if(cached_runlevel != checking_runlevel)
|
||||
//resechedule subsystems
|
||||
var/list/old_subsystems = current_runlevel_subsystems
|
||||
cached_runlevel = checking_runlevel
|
||||
current_runlevel_subsystems = runlevel_sorted_subsystems[cached_runlevel]
|
||||
var/stagger = world.time
|
||||
for(var/I in current_runlevel_subsystems)
|
||||
var/datum/controller/subsystem/SS = I
|
||||
if(SS.next_fire <= world.time)
|
||||
stagger += world.tick_lag * rand(1, 5)
|
||||
SS.next_fire = stagger
|
||||
|
||||
//now we'll go through all the subsystems we want to offset and give them a next_fire
|
||||
for(var/datum/controller/subsystem/SS as anything in current_runlevel_subsystems)
|
||||
//we only want to offset it if it's new and also behind
|
||||
if(SS.next_fire > world.time || (SS in old_subsystems))
|
||||
continue
|
||||
SS.next_fire = world.time + world.tick_lag * rand(0, DS2TICKS(min(SS.wait, 2 SECONDS)))
|
||||
|
||||
subsystems_to_check = current_runlevel_subsystems
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user