From f8e1ace1ba73438f1747e54a36f408b3e4bd18df Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 23 Dec 2021 18:49:48 +0100 Subject: [PATCH] [MIRROR] Thermite exploit fix [MDB IGNORE] (#10217) * Thermite exploit fix (#63509) * Thermite exploit fix Co-authored-by: Seth Scherer Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> --- code/datums/components/thermite.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm index cd8546c6a17..1eb1986562d 100644 --- a/code/datums/components/thermite.dm +++ b/code/datums/components/thermite.dm @@ -3,6 +3,7 @@ var/amount var/burn_require var/overlay + var/burn_timer var/static/list/blacklist = typecacheof(list( /turf/open/lava, @@ -59,13 +60,19 @@ amount += newC.amount else amount += _amount + if (burn_timer) // prevent people from skipping a longer timer + deltimer(burn_timer) + var/fakefire + for (var/obj/effect/overlay/thermite/fire in parent) + fakefire = fire + burn_timer = addtimer(CALLBACK(src, .proc/burn_parent, fakefire, usr), min(amount * 0.35 SECONDS, 20 SECONDS), TIMER_STOPPABLE) /datum/component/thermite/proc/thermite_melt(mob/user) var/turf/master = parent master.cut_overlay(overlay) playsound(master, 'sound/items/welder.ogg', 100, TRUE) var/obj/effect/overlay/thermite/fakefire = new(master) - addtimer(CALLBACK(src, .proc/burn_parent, fakefire, user), min(amount * 0.35 SECONDS, 20 SECONDS)) + burn_timer = addtimer(CALLBACK(src, .proc/burn_parent, fakefire, user), min(amount * 0.35 SECONDS, 20 SECONDS), TIMER_STOPPABLE) UnregisterFromParent() /datum/component/thermite/proc/burn_parent(datum/fakefire, mob/user)