From 284cbf6cc931a49406a1ea593ef3739080d37eff Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Thu, 6 Jun 2024 14:30:40 -0500 Subject: [PATCH] Fixes a runtime with loader modsuits dropping crates (#25727) * stacking do_afters is the source of all evil * Update code/modules/mod/modules/modules_supply.dm Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> --------- Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> --- code/modules/mod/modules/modules_supply.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index a475f232d7e..f4744a6cdcb 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -58,7 +58,7 @@ if(target_turf.density) return playsound(src, 'sound/mecha/hydraulic.ogg', 25, TRUE) - if(!do_after(mod.wearer, load_time, target = target)) + if(!do_after(mod.wearer, load_time, target = target, extra_checks = list(CALLBACK(src, TYPE_PROC_REF(/obj/item/mod/module/clamp, should_cancel_drop))))) return if(target_turf.density) return @@ -86,6 +86,10 @@ return FALSE return TRUE +/// Checks if the target crate has already been dropped by another on_select_use call +/obj/item/mod/module/clamp/proc/should_cancel_drop() + return !length(stored_crates) + /obj/item/mod/module/clamp/loader name = "MOD loader hydraulic clamp module" icon_state = "clamp_loader"