diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index c463ff64104..8fd942735c1 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -121,6 +121,7 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) applyOrganDamage(decay_factor * maxHealth * delta_time) /obj/item/organ/proc/on_life(delta_time, times_fired) //repair organ damage if the organ is not failing + check_failing_thresholds(owner) // Check if an organ should/shouldnt be failing if(organ_flags & ORGAN_FAILING) handle_failing_organs(delta_time) return @@ -199,14 +200,12 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) var/delta = damage - prev_damage if(delta > 0) if(damage >= maxHealth) - organ_flags |= ORGAN_FAILING return now_failing if(damage > high_threshold && prev_damage <= high_threshold) return high_threshold_passed if(damage > low_threshold && prev_damage <= low_threshold) return low_threshold_passed else - organ_flags &= ~ORGAN_FAILING if(prev_damage > low_threshold && damage <= low_threshold) return low_threshold_cleared if(prev_damage > high_threshold && damage <= high_threshold) @@ -214,6 +213,16 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) if(prev_damage == maxHealth) return now_fixed +/**check_failing_thresholds + * input: mob/organ_owner (a mob, the owner of the organ we call the proc on) + * output: failing organ flags on a failing/no longer failing organ. + */ +/obj/item/organ/proc/check_failing_thresholds(mob/organ_owner) + if(damage >= maxHealth) + organ_flags |= ORGAN_FAILING + if(damage < maxHealth) + organ_flags &= ~ORGAN_FAILING + //Looking for brains? //Try code/modules/mob/living/carbon/brain/brain_item.dm