diff --git a/code/controllers/master.dm b/code/controllers/master.dm index c1e327f4708..5844ee749d1 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -525,7 +525,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new queue_node.last_fire = world.time queue_node.times_fired++ - + + var/postpone = queue_node.next_fire - queue_node.queued_time + if (queue_node_flags & SS_TICKER) queue_node.next_fire = world.time + (world.tick_lag * queue_node.wait) else if (queue_node_flags & SS_POST_FIRE_TIMING) @@ -535,6 +537,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new else queue_node.next_fire = queue_node.queued_time + queue_node.wait + (world.tick_lag * (queue_node.tick_overrun/100)) + if (postpone >= world.tick_lag) + queue_node.next_fire += postpone + queue_node.queued_time = 0 //remove from queue