From 320185d1a438188ea75fa52f6fb72b83fc32ad62 Mon Sep 17 00:00:00 2001 From: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Date: Sat, 19 Jul 2025 16:41:20 +1000 Subject: [PATCH] Ensures that components can stop attack_self() proc code from running on energy guns if it would return COMSIG_CANCEL_ATTACK_CHAIN (#92019) ## About The Pull Request What it says on the tin. ## Why It's Good For The Game Should a component potentially want to override the behaviour of energy guns attack_self() proc, it will not be able to prevent this code from running without this check. --- code/datums/components/crank_recharge.dm | 1 + code/modules/projectiles/guns/energy.dm | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/datums/components/crank_recharge.dm b/code/datums/components/crank_recharge.dm index 4940a02b055..14f7834ba8e 100644 --- a/code/datums/components/crank_recharge.dm +++ b/code/datums/components/crank_recharge.dm @@ -43,6 +43,7 @@ SIGNAL_HANDLER INVOKE_ASYNC(src, PROC_REF(crank), source, user) //game doesnt like signal handler and do afters mingling + return COMPONENT_CANCEL_ATTACK_CHAIN /datum/component/crank_recharge/proc/crank(obj/source, mob/user) if(charging_cell.charge >= charging_cell.maxcharge) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 9565f1933c3..734bce37122 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -179,9 +179,12 @@ update_appearance() /obj/item/gun/energy/attack_self(mob/living/user as mob) + . = ..() + if(.) + return + if(ammo_type.len > 1 && can_select) select_fire(user) - return ..() /obj/item/gun/energy/can_shoot() var/obj/item/ammo_casing/energy/shot = ammo_type[select]