From 4506011bbfed8cbf8ed345f8a6bc2e4501362948 Mon Sep 17 00:00:00 2001 From: Toastical <20125180+Toastical@users.noreply.github.com> Date: Wed, 3 Dec 2025 18:12:10 +0200 Subject: [PATCH] add an argument that toggles spammability of use_tool() (#30962) * add an argument that toggles spammability of use_tool() * make argument more specific --- code/game/objects/items/tools/tool_behaviour.dm | 8 ++++++-- code/game/objects/items/tools/welder.dm | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/tools/tool_behaviour.dm b/code/game/objects/items/tools/tool_behaviour.dm index 5ab8729770f..0271e9a0fed 100644 --- a/code/game/objects/items/tools/tool_behaviour.dm +++ b/code/game/objects/items/tools/tool_behaviour.dm @@ -2,7 +2,7 @@ * Called when a mob tries to use the item as a tool. * Handles most checks. */ -/obj/item/proc/use_tool(atom/target, mob/living/user, delay, amount=0, volume=0, datum/callback/extra_checks) +/obj/item/proc/use_tool(atom/target, mob/living/user, delay, amount=0, volume=0, datum/callback/extra_checks, do_after_once = FALSE) // No delay means there is no start message, and no reason to call tool_start_check before use_tool. // Run the start check here so we wouldn't have to call it manually. target.add_fingerprint(user) @@ -21,9 +21,13 @@ if(!do_mob(user, target, delay, extra_checks = list(tool_check))) return - else + else if(!do_after_once) if(!do_after(user, delay, target=target, extra_checks = list(tool_check))) return + else + if(!do_after_once(user, delay, target=target, extra_checks = list(tool_check))) + return + else // Invoke the extra checks once, just in case. if(extra_checks && !extra_checks.Invoke()) diff --git a/code/game/objects/items/tools/welder.dm b/code/game/objects/items/tools/welder.dm index 1a594061b72..2f286b92dca 100644 --- a/code/game/objects/items/tools/welder.dm +++ b/code/game/objects/items/tools/welder.dm @@ -187,7 +187,7 @@ cig.light(user, target) return TRUE -/obj/item/weldingtool/use_tool(atom/target, user, delay, amount, volume, datum/callback/extra_checks) +/obj/item/weldingtool/use_tool(atom/target, user, delay, amount, volume, datum/callback/extra_checks, do_after_once) target.add_overlay(GLOB.welding_sparks) var/did_thing = ..() if(did_thing)