diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 03675f282e5..087ca959902 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -1,7 +1,7 @@ /obj/item/organ/internal/brain name = "brain" health = 400 //They need to live awhile longer than other organs. - max_damage = 200 + max_damage = 120 icon_state = "brain2" force = 1.0 w_class = WEIGHT_CLASS_SMALL @@ -100,6 +100,19 @@ log_debug("Multibrain shenanigans at ([target.x],[target.y],[target.z]), mob '[target]'") ..(target, special = special) +/obj/item/organ/internal/brain/receive_damage(amount, silent = 0) //brains are special; if they receive damage by other means, we really just want the damage to be passed ot the owner and back onto the brain. + if(owner) + owner.adjustBrainLoss(amount) + +/obj/item/organ/internal/brain/necrotize(update_sprite = TRUE) //Brain also has special handling for when it necrotizes + damage = max_damage + status |= ORGAN_DEAD + processing_objects -= src + if(dead_icon && !is_robotic()) + icon_state = dead_icon + if(owner && vital) + owner.setBrainLoss(120) + /obj/item/organ/internal/brain/prepare_eat() return // Too important to eat. diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 7e9739a816d..d7a9bde2cef 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -31,7 +31,10 @@ if(sponge) if(dna.species && amount > 0) amount = amount * dna.species.brain_mod - sponge.receive_damage(amount, 1) + sponge.damage = Clamp(sponge.damage + amount, 0, 120) + if(sponge.damage >= 120) + visible_message("[src] goes limp, [p_their()] facial expression utterly blank.") + death() if(updating) update_stat("adjustBrainLoss") return STATUS_UPDATE_STAT @@ -45,7 +48,10 @@ if(sponge) if(dna.species && amount > 0) amount = amount * dna.species.brain_mod - sponge.damage = min(max(amount, 0), (maxHealth*2)) + sponge.damage = Clamp(amount, 0, 120) + if(sponge.damage >= 120) + visible_message("[src] goes limp, [p_their()] facial expression utterly blank.") + death() if(updating) update_stat("setBrainLoss") return STATUS_UPDATE_STAT diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 3571deb392a..e180fa5f431 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -790,7 +790,6 @@ handle_organs() if(getBrainLoss() >= 120 || (health + (getOxyLoss() / 2)) <= -500) - visible_message("[src] goes limp, their facial expression utterly blank.") death() return diff --git a/code/modules/mob/living/carbon/human/update_stat.dm b/code/modules/mob/living/carbon/human/update_stat.dm index 5dfd98c0b63..6228038c710 100644 --- a/code/modules/mob/living/carbon/human/update_stat.dm +++ b/code/modules/mob/living/carbon/human/update_stat.dm @@ -2,16 +2,7 @@ if(status_flags & GODMODE) return ..(reason) - if(stat != DEAD) - switch(getBrainLoss()) - if(100 to 120) - Weaken(20) - create_debug_log("collapsed from brain damage, trigger reason: [reason]") - if(120 to INFINITY) - visible_message("[src] goes limp, [p_their()] facial expression utterly blank.") - death() - create_debug_log("died of brain damage, trigger reason: [reason]") - else + if(stat == DEAD) if(dna.species && dna.species.can_revive_by_healing) var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain) if(B)