From 47110b04e5eda63d1aae03969ddde03b89d5f1d5 Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Sat, 17 May 2025 09:42:23 -0400 Subject: [PATCH] Makes gibbing 75% more efficient! (#17719) * Makes explosions 75% more efficient! * fix this while im here --- .../equipment_vendor.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 2 +- code/modules/organs/organ_external.dm | 75 +++++++++---------- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm index 84f1558008..2d5a9d3770 100644 --- a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm @@ -15,7 +15,7 @@ var/icon_vend = "minevend-vend" circuit = /obj/item/circuitboard/mining_equipment_vendor var/obj/item/card/id/inserted_id - var/list/prize_list = list() //Generated during Initialize + var/list/prize_list //Generated during Initialize var/dirty_items = FALSE // Used to refresh the static/redundant data in case the machine gets VV'd /datum/data/mining_equipment diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index a10ac55780..a8f27e5af9 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human/gib() - + transforming = 1 //Tells the gib system to NOT SEND MESSAGES FOR EVERYTHING when we gib. if(vr_holder) exit_vr() // Delete the link, because this mob won't be around much longer diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 452467eb29..40638b2115 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -601,8 +601,7 @@ This function completely restores a damaged organ to perfect condition. to_chat(owner, span_bolddanger(span_massive("OH GOD! Something just tore in your [name]!"))) //Let's make this CLEAR that an artery was severed. This was vague enough that most players didn't realize they had IB. //Burn damage can cause fluid loss due to blistering and cook-off - - if((damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT) && !(data.get_species_flags() & NO_BLOOD)) + if(owner && (damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT) && !(data.get_species_flags() & NO_BLOOD)) var/fluid_loss = 0.4 * (damage/(owner.getMaxHealth() - (-owner.getMaxHealth()))) * owner.species.blood_volume*(1 - owner.species.blood_level_fatal) owner.remove_blood(fluid_loss) @@ -917,42 +916,42 @@ Note that amputating the affected organ does in fact remove the infection from t disintegrate = DROPLIMB_BLUNT //splut GLOB.lost_limbs_shift_roundstat++ - - switch(disintegrate) - if(DROPLIMB_EDGE) - if(!clean) - var/gore_sound = "[(robotic >= ORGAN_ROBOT) ? "tortured metal" : "ripping tendons and flesh"]" + if(owner && !owner.transforming) + switch(disintegrate) + if(DROPLIMB_EDGE) + if(!clean) + var/gore_sound = "[(robotic >= ORGAN_ROBOT) ? "tortured metal" : "ripping tendons and flesh"]" + owner.visible_message( + span_danger("\The [owner]'s [src.name] flies off in an arc!"),\ + span_bolddanger("Your [src.name] goes flying off!"),\ + span_danger("You hear a terrible sound of [gore_sound].")) + if(DROPLIMB_BURN) + if(cannot_gib) + return + var/gore = "[(robotic >= ORGAN_ROBOT) ? "": " of burning flesh"]" owner.visible_message( - span_danger("\The [owner]'s [src.name] flies off in an arc!"),\ - span_bolddanger("Your [src.name] goes flying off!"),\ - span_danger("You hear a terrible sound of [gore_sound].")) - if(DROPLIMB_BURN) - if(cannot_gib) - return - var/gore = "[(robotic >= ORGAN_ROBOT) ? "": " of burning flesh"]" - owner.visible_message( - span_danger("\The [owner]'s [src.name] flashes away into ashes!"),\ - span_bolddanger("Your [src.name] flashes away into ashes!"),\ - span_danger("You hear a crackling sound[gore].")) - if(DROPLIMB_BLUNT) - if(cannot_gib) - return - var/gore = "[(robotic >= ORGAN_ROBOT) ? "": " in shower of gore"]" - var/gore_sound = "[(status >= ORGAN_ROBOT) ? "rending sound of tortured metal" : "sickening splatter of gore"]" - owner.visible_message( - span_danger("\The [owner]'s [src.name] explodes[gore]!"),\ - span_bolddanger("Your [src.name] explodes[gore]!"),\ - span_danger("You hear the [gore_sound].")) + span_danger("\The [owner]'s [src.name] flashes away into ashes!"),\ + span_bolddanger("Your [src.name] flashes away into ashes!"),\ + span_danger("You hear a crackling sound[gore].")) + if(DROPLIMB_BLUNT) + if(cannot_gib) + return + var/gore = "[(robotic >= ORGAN_ROBOT) ? "": " in shower of gore"]" + var/gore_sound = "[(status >= ORGAN_ROBOT) ? "rending sound of tortured metal" : "sickening splatter of gore"]" + owner.visible_message( + span_danger("\The [owner]'s [src.name] explodes[gore]!"),\ + span_bolddanger("Your [src.name] explodes[gore]!"),\ + span_danger("You hear the [gore_sound].")) - if(DROPLIMB_ACID) - if(cannot_gib) - return - var/gore = "[(robotic >= ORGAN_ROBOT) ? "": " in gush of gore"]" - var/gore_sound = "[(status >= ORGAN_ROBOT) ? "sizzling sound of melting metal" : "sickening drips of melting flesh"]" - owner.visible_message( - span_danger("\The [owner]'s [src.name] sloughs off[gore]!"),\ - span_bolddanger("Your [src.name] sloughs off of your body[gore]!"),\ - span_danger("You hear the [gore_sound].")) + if(DROPLIMB_ACID) + if(cannot_gib) + return + var/gore = "[(robotic >= ORGAN_ROBOT) ? "": " in gush of gore"]" + var/gore_sound = "[(status >= ORGAN_ROBOT) ? "sizzling sound of melting metal" : "sickening drips of melting flesh"]" + owner.visible_message( + span_danger("\The [owner]'s [src.name] sloughs off[gore]!"),\ + span_bolddanger("Your [src.name] sloughs off of your body[gore]!"),\ + span_danger("You hear the [gore_sound].")) var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed(). var/obj/item/organ/external/parent_organ = parent @@ -1137,7 +1136,7 @@ Note that amputating the affected organ does in fact remove the infection from t status |= ORGAN_BROKEN broken_description = pick("broken","fracture","hairline fracture") if(owner) - if(organ_can_feel_pain() && !isbelly(owner.loc) && !isliving(owner.loc)) + if(organ_can_feel_pain() && !isbelly(owner.loc) && !isliving(owner.loc) && !owner.transforming) owner.visible_message(\ span_danger("You hear a loud cracking sound coming from \the [owner]."),\ span_danger("Something feels like it shattered in your [name]!"),\ @@ -1361,7 +1360,7 @@ Note that amputating the affected organ does in fact remove the infection from t return if(brute_dam + force < min_broken_damage/5) //no papercuts moving bones return - if(internal_organs.len && prob(brute_dam + force)) + if(internal_organs.len && prob(brute_dam + force) && !owner.transforming) owner.custom_pain("A piece of bone in your [encased ? encased : name] moves painfully!", 50) var/obj/item/organ/I = pick(internal_organs) I.take_damage(rand(3,5))