diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a05a90ef6a2..281486a5650 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -441,8 +441,7 @@ /mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob) if(M.Victim) return // can't attack while eating! - if (health > -100) - + if(stat != DEAD) M.do_attack_animation(src) visible_message("The [M.name] glomps [src]!", \ "The [M.name] glomps [src]!") diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index cbf77866005..c0d566d63e7 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -1,7 +1,7 @@ //Updates the mob's health from organs and mob damage variables /mob/living/carbon/human/updatehealth() if(status_flags & GODMODE) - health = 100 + health = maxHealth stat = CONSCIOUS return @@ -12,15 +12,15 @@ total_brute += O.brute_dam //calculates health based on organ brute and burn total_burn += O.burn_dam - health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute + health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute //TODO: fix husking - if(((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) //100 is the magic human max health number - ChangeToHusk() //BECAUSE NO ONE THOUGHT TO USE LIVING/VAR/MAXHEALTH I GUESS + if(((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD) + ChangeToHusk() if(species.can_revive_by_healing) var/obj/item/organ/brain/B = internal_organs_by_name["brain"] if(B) - if((health >= (config.health_threshold_dead / 100 * 75)) && stat == DEAD) + if((health >= (config.health_threshold_dead + config.health_threshold_crit) * 0.5) && stat == DEAD) update_revive() if(stat == CONSCIOUS && (src in dead_mob_list)) //Defib fix update_revive() diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 4442d59fe85..5278f0cc723 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -13,7 +13,7 @@ handle_embedded_objects() //Moving with objects stuck in you can cause bad times. - var/health_deficiency = (100 - health + staminaloss) + var/health_deficiency = (maxHealth - health + staminaloss) if(reagents) for(var/datum/reagent/R in reagents.reagent_list) if(R.shock_reduction) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8f078f18f90..76d4ce0a711 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -2,7 +2,7 @@ /mob/living/Destroy() ..() return QDEL_HINT_HARDDEL_NOW - + /mob/living/Stat() . = ..() if(. && get_rig_stats) @@ -34,11 +34,17 @@ /mob/living/verb/succumb() set hidden = 1 if (InCritical()) - src.attack_log += "[src] has ["succumbed to death"] with [round(health, 0.1)] points of health!" - src.adjustOxyLoss(src.health - config.health_threshold_dead) + attack_log += "[src] has ["succumbed to death"] with [round(health, 0.1)] points of health!" + adjustOxyLoss(health - config.health_threshold_dead) updatehealth() + // super check for weird mobs, including ones that adjust hp + // we don't want to go overboard and gib them, though + for(var/i = 1 to 5) + if(health < config.health_threshold_dead) + break + take_overall_damage(max(5, health - config.health_threshold_dead), 0) + updatehealth() src << "You have given up life and succumbed to death." - death() /mob/living/proc/InCritical() return (src.health < 0 && src.health > -95.0 && stat == UNCONSCIOUS)