diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm
index 0cda53c1820..da1e59f0dea 100644
--- a/code/modules/mob/living/carbon/brain/brain_item.dm
+++ b/code/modules/mob/living/carbon/brain/brain_item.dm
@@ -1,6 +1,6 @@
/obj/item/organ/brain
name = "brain"
- health = 400 //They need to live awhile longer than other organs.
+ health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
desc = "A piece of juicy meat found in a person's head."
organ_tag = "brain"
parent_organ = "head"
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 5085d174090..19a97c65a8f 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -235,16 +235,21 @@
custom_pain("Your head feels numb and painful.")
if(getBrainLoss() >= 15)
if(4 <= rn && rn <= 6) if(eye_blurry <= 0)
- src << "\red It becomes hard to see for some reason."
+ src << "It becomes hard to see for some reason."
eye_blurry = 10
if(getBrainLoss() >= 35)
if(7 <= rn && rn <= 9) if(get_active_hand())
- src << "\red Your hand won't respond properly, you drop what you're holding."
+ src << "Your hand won't respond properly, you drop what you're holding!"
drop_item()
- if(getBrainLoss() >= 50)
- if(10 <= rn && rn <= 12) if(!lying)
- src << "\red Your legs won't respond properly, you fall down."
- resting = 1
+ if(getBrainLoss() >= 45)
+ if(10 <= rn && rn <= 12)
+ if(prob(50))
+ src << "You suddenly black out!"
+ Paralyse(10)
+ else if(!lying)
+ src << "Your legs won't respond properly, you fall down!"
+ Weaken(10)
+
proc/handle_stasis_bag()
// Handle side effects from stasis bag
diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm
index 3555a5985ba..038a350fb58 100644
--- a/code/modules/organs/organ.dm
+++ b/code/modules/organs/organ.dm
@@ -65,22 +65,27 @@ var/list/organ_cache = list()
processing_objects -= src
if(dead_icon)
icon_state = dead_icon
+ if(owner && vital)
+ owner.death()
/obj/item/organ/process()
+ if(loc != owner)
+ owner = null
+
+ //dead already, no need for more processing
+ if(status & ORGAN_DEAD)
+ return
// Don't process if we're in a freezer, an MMI or a stasis bag.or a freezer or something I dunno
if(istype(loc,/obj/item/device/mmi))
return
if(istype(loc,/obj/structure/closet/body_bag/cryobag) || istype(loc,/obj/structure/closet/crate/freezer) || istype(loc,/obj/item/weapon/storage/box/freezer))
return
//Process infections
- if (robotic >= 2 || (owner && owner.species && (owner.species.flags & IS_PLANT)))
+ if ((status & ORGAN_ROBOT) || (owner && owner.species && (owner.species.flags & IS_PLANT)))
germ_level = 0
return
- if(loc != owner)
- owner = null
-
if(!owner)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
if(B && prob(40))
@@ -98,6 +103,10 @@ var/list/organ_cache = list()
handle_rejection()
handle_germ_effects()
+ //check if we've hit max_damage
+ if(damage >= max_damage)
+ die()
+
/obj/item/organ/examine(mob/user)
..(user)
if(status & ORGAN_DEAD)