diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 0f4de4b6890..0ff617d7532 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -6,7 +6,7 @@ if (notransform) return - if(..()) + if(..()) //not dead // GROW! if(amount_grown < max_grown) amount_grown++ diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0c3b27ba8d1..5d7003106aa 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -29,20 +29,26 @@ if (notransform) return - if(..()) + if(..()) //not dead for(var/datum/mutation/human/HM in dna.mutations) HM.on_life(src) + if(stat != DEAD) //heart attack stuff handle_heart() + if(stat != DEAD) //Stuff jammed in your limbs hurts handle_embedded_objects() + //Update our name based on whether our face is obscured/disfigured name = get_visible_name() dna.species.spec_life(src) // for mutantraces + if(stat != DEAD) + return 1 + /mob/living/carbon/human/calculate_affecting_pressure(pressure) if((wear_suit && (wear_suit.flags & STOPSPRESSUREDMAGE)) && (head && (head.flags & STOPSPRESSUREDMAGE))) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index aa701d7f1b3..aa898296f9a 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -9,11 +9,10 @@ damageoverlaytemp = 0 update_damage_hud() - if(..()) - . = 1 - + if(..()) //not dead handle_blood() + if(stat != DEAD) for(var/X in internal_organs) var/obj/item/organ/O = X O.on_life() @@ -21,6 +20,9 @@ //Updates the number of stored chemicals for powers handle_changeling() + if(stat != DEAD) + return 1 + /////////////// // BREATHING // /////////////// diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 10c9a2a50f8..6695c4a1271 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -3,13 +3,9 @@ if(stat != DEAD) death(1) - if(buckled) - buckled.unbuckle_mob(src,force=1) //to update alien nest overlay, forced because we don't exist anymore - if(!prev_lying) gib_animation() - spill_organs(no_brain, no_organs, no_bodyparts) if(!no_bodyparts) @@ -64,8 +60,6 @@ living_mob_list -= src if(!gibbed) dead_mob_list += src - else if(buckled) - buckled.unbuckle_mob(src,force=1) paralysis = 0 stunned = 0 weakened = 0 diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 5d2c0c48535..19cca48a15b 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -19,21 +19,18 @@ var/datum/gas_mixture/environment = loc.return_air() if(stat != DEAD) - //Breathing, if applicable handle_breathing() - + if(stat != DEAD) //Mutations and radiation handle_mutations_and_radiation() - + if(stat != DEAD) //Chemicals in the body handle_chemicals_in_body() - + if(stat != DEAD) //Random events (vomiting etc) handle_random_events() - . = 1 - //Handle temperature/pressure differences between body and environment if(environment) handle_environment(environment) @@ -48,11 +45,14 @@ if(machine) machine.check_eye(src) - if(stat != DEAD) handle_disabilities() // eye, ear, brain damages + if(stat != DEAD) handle_status_effects() //all special effects, stunned, weakened, jitteryness, hallucination, sleeping, etc + if(stat != DEAD) + return 1 + /mob/living/proc/handle_breathing() return diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b06fef840ca..74a24079251 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -29,6 +29,9 @@ /mob/living/Destroy() ..() + if(buckled) + buckled.unbuckle_mob(src,force=1) + for(var/mob/living/simple_animal/drone/D in player_list) for(var/image/I in staticOverlays) D.staticOverlays.Remove(I) diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 946f2e04900..c4a68499d21 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -4,7 +4,7 @@ #define POWER_RESTORATION_APC_FOUND 3 /mob/living/silicon/ai/Life() - if (src.stat == DEAD) + if (stat == DEAD) return else //I'm not removing that shitton of tabs, unneeded as they are. -- Urist //Being dead doesn't mean your temperature never changes diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 191f28d7c37..f934a959316 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -1,7 +1,7 @@ /mob/living/silicon/pai/Life() - if (src.stat == DEAD) + if(stat == DEAD) return - if(src.cable) + if(cable) if(get_dist(src, src.cable) > 1) var/turf/T = get_turf(src.loc) T.visible_message("[src.cable] rapidly retracts back into its spool.", "You hear a click and the sound of wire spooling rapidly.") diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 2f75310ff25..58cd9503ede 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -53,6 +53,10 @@ environment_target_typecache = typecacheof(environment_target_typecache) +/mob/living/simple_animal/hostile/Destroy() + targets_from = null + return ..() + /mob/living/simple_animal/hostile/Life() . = ..() if(!.) //dead @@ -225,7 +229,7 @@ else Goto(target,move_to_delay,minimum_distance) if(target) - if(isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack + if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack AttackingTarget() return 1 return 0 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index edca0beac1d..0821369f929 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -104,10 +104,14 @@ /mob/living/simple_animal/Life() if(..()) //alive if(!ckey) - handle_automated_movement() - handle_automated_action() - handle_automated_speech() - return 1 + if(stat != DEAD) + handle_automated_movement() + if(stat != DEAD) + handle_automated_action() + if(stat != DEAD) + handle_automated_speech() + if(stat != DEAD) + return 1 /mob/living/simple_animal/updatehealth() ..() @@ -302,6 +306,7 @@ ghostize() stat = DEAD qdel(src) + return else health = 0 icon_state = icon_dead