From 963a74711bdd45019dce43a13bb7fdf6ea061142 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 11 Jul 2026 10:33:47 -0400 Subject: [PATCH] Timer Processing Cleanup (#22821) image Not a single one of these timers are doing anything, but they occupy processing time. This PR makes them not do that. When you activate a timer, they start processing. When the timer finishes, it stops processing. No need for it to linger in the processing queue indefinitely. There's like a hundred of these things on live. --- code/modules/assembly/timer.dm | 18 +++++++++++------- .../hellfirejag-timer-process-cleanup.yml | 4 ++++ 2 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 html/changelogs/hellfirejag-timer-process-cleanup.yml diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 8e40acb9ccb..4d1df6ca29d 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -20,6 +20,7 @@ timing = !timing update_icon() + START_PROCESSING(SSprocessing, src) return FALSE /obj/item/assembly/timer/toggle_secure() @@ -33,6 +34,7 @@ return secured /obj/item/assembly/timer/proc/timer_end() + STOP_PROCESSING(SSprocessing, src) if(!secured) return FALSE pulse(FALSE) @@ -42,13 +44,15 @@ addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 1 SECOND) /obj/item/assembly/timer/process() - if(timing) - if(time > 0) - time-- - if(time <= 0) - timing = FALSE - timer_end() - time = 10 + if(!timing) + return PROCESS_KILL + + if(time > 0) + time-- + if(time <= 0) + timing = FALSE + timer_end() + time = 10 /obj/item/assembly/timer/update_icon() ClearOverlays() diff --git a/html/changelogs/hellfirejag-timer-process-cleanup.yml b/html/changelogs/hellfirejag-timer-process-cleanup.yml new file mode 100644 index 00000000000..e568f37a7b3 --- /dev/null +++ b/html/changelogs/hellfirejag-timer-process-cleanup.yml @@ -0,0 +1,4 @@ +author: Hellfirejag +delete-after: True +changes: + - bugfix: "Fixed Timers processing forever even after their time runs out."