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)