From a678ec339002d5226101e746f0ce7e92135b357d Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Tue, 30 Jun 2026 13:58:38 -0400 Subject: [PATCH] Fixes EMP double damage (#19552) --- code/modules/organs/organ.dm | 21 ++++++++++++++++----- code/modules/organs/organ_external.dm | 23 ----------------------- 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index dc33a001d7e..df8d7918e43 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -425,16 +425,27 @@ if(!(robotic >= ORGAN_ASSISTED)) return + var/damage_to_take for(var/i = 1; i <= robotic; i++) switch (severity) if (EMP_HEAVY) - take_damage(rand(5,9)) + damage_to_take += rand(5,9) if (EMP_MEDIUM) - take_damage(rand(3,7)) + damage_to_take += rand(3,7) if (EMP_LIGHT) - take_damage(rand(2,5)) - if (EMP_HARMLESS) - take_damage(rand(1,3)) + damage_to_take += rand(2,5) + if (EMP_HARMLESS) //harmless, you say? + damage_to_take += rand(1,3) + if(damage_to_take) + if(isorgan(src)) + var/obj/item/organ/external/limb_to_take_damage = src + //Randomly split the damage up between brute and burn. + var/burn_to_take = rand(0, damage_to_take) + damage_to_take -= burn_to_take + limb_to_take_damage.take_damage(damage_to_take, burn_to_take) + return + take_damage(damage_to_take) + /obj/item/organ/proc/removed(mob/living/user) if(owner) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index a95077bd56c..285db9b8f12 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -129,29 +129,6 @@ return ..() -/obj/item/organ/external/emp_act(severity, recursive) - . = ..() - if (. & EMP_PROTECT_SELF) - return - for(var/obj/O as anything in src.contents) - O.emp_act(severity, recursive) - - if(!(robotic >= ORGAN_ROBOT)) - return - var/burn_damage = 0 - switch (severity) - if (1) - burn_damage += rand(5, 8) - if (2) - burn_damage += rand(4, 6) - if(3) - burn_damage += rand(2, 5) - if(4) - burn_damage += rand(1, 3) - - if(burn_damage) - take_damage(0, burn_damage) - /obj/item/organ/external/attack_self(mob/living/user) . = ..(user) if(.)