From ef129ac94fda7de918da3fc73eced048bbabeb30 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Thu, 24 Jun 2021 06:54:15 -0700 Subject: [PATCH] Makes master support ss.postpone()ing the next fire of running subsystems (#59792) Sadly it can't apply this to the next fire resume of paused subsystems, but at least its not resetting that postpone. --- code/controllers/master.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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