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)