diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/game/gamemodes/changeling/powers/headcrab.dm
index 4adbc39e7fc..16ad41a36ea 100644
--- a/code/game/gamemodes/changeling/powers/headcrab.dm
+++ b/code/game/gamemodes/changeling/powers/headcrab.dm
@@ -20,7 +20,7 @@
H.EyeBlurry(20)
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
- E.damage = max(E.damage+5, 0)
+ E.take_damage(5, 1)
H.AdjustConfused(3)
for(var/mob/living/silicon/S in range(2,user))
to_chat(S, "Your sensors are disabled by a shower of blood!")
diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm
index 3bef09d2645..feb6615971b 100644
--- a/code/game/gamemodes/changeling/powers/revive.dm
+++ b/code/game/gamemodes/changeling/powers/revive.dm
@@ -48,7 +48,7 @@
O.status = 0
O.trace_chemicals.Cut()
for(var/obj/item/organ/internal/IO in H.internal_organs)
- IO.damage = 0
+ IO.rejuvenate()
IO.trace_chemicals.Cut()
H.remove_all_embedded_objects()
H.updatehealth()
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 6aa33fc9714..36ef7167d85 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -37,7 +37,7 @@
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(E)
- E.damage += 8
+ E.take_damage(8, 1)
if(M.flash_eyes(affect_silicon = 1))
M.Stun(max(10/distance, 3))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 88377ea9cea..06b45c84a1a 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -323,15 +323,15 @@
if(1)
to_chat(src, "Your eyes sting a little.")
if(prob(40)) //waiting on carbon organs
- E.damage += 1
+ E.take_damage(1, 1)
if(2)
to_chat(src, "Your eyes burn.")
- E.damage += rand(2, 4)
+ E.take_damage(rand(2, 4), 1)
else
to_chat(src, "Your eyes itch and burn severely!")
- E.damage += rand(12, 16)
+ E.take_damage(rand(12, 16), 1)
if(E.damage > E.min_bruised_damage)
AdjustEyeBlind(damage)
diff --git a/code/modules/reagents/chemistry/reagents/admin.dm b/code/modules/reagents/chemistry/reagents/admin.dm
index d4902cfc147..55ffac4ce9b 100644
--- a/code/modules/reagents/chemistry/reagents/admin.dm
+++ b/code/modules/reagents/chemistry/reagents/admin.dm
@@ -18,9 +18,9 @@
M.setBrainLoss(0)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- for(var/name in H.internal_organs)
- var/obj/item/organ/internal/I = H.get_int_organ(name)
- I.damage = max(0, I.damage-5)
+ for(var/thing in H.internal_organs)
+ var/obj/item/organ/internal/I = thing
+ I.take_damage(-5)
for(var/obj/item/organ/external/E in H.bodyparts)
if(E.mend_fracture())
E.perma_injury = 0
diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm
index 70dde5764a6..583834e90e5 100644
--- a/code/modules/reagents/chemistry/reagents/medicine.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine.dm
@@ -92,8 +92,7 @@
//Mitocholide is hard enough to get, it's probably fair to make this all internal organs
for(var/obj/item/organ/internal/I in H.internal_organs)
- if(I.damage > 0)
- I.damage = max(I.damage-0.4, 0)
+ I.take_damage(-0.4)
..()
/datum/reagent/medicine/mitocholide/reaction_obj(obj/O, volume)
@@ -512,7 +511,7 @@
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
- E.damage = max(E.damage-1, 0)
+ E.take_damage(-1)
M.AdjustEyeBlurry(-1)
M.AdjustEarDamage(-1)
if(prob(50))
diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm
index dc74871d377..3286ef684a4 100644
--- a/code/modules/surgery/organs/organ.dm
+++ b/code/modules/surgery/organs/organ.dm
@@ -115,10 +115,6 @@ var/list/organ_cache = list()
handle_antibiotics()
handle_germ_effects()
- //check if we've hit max_damage
- if(damage >= max_damage)
- necrotize()
-
/obj/item/organ/proc/is_preserved()
if(istype(loc,/obj/item/device/mmi))
germ_level = max(0, germ_level - 1) // So a brain can slowly recover from being left out of an MMI
@@ -173,9 +169,6 @@ var/list/organ_cache = list()
if(prob(3)) //about once every 30 seconds
take_damage(1,silent=prob(30))
-/obj/item/organ/proc/receive_chem(chemical as obj)
- return 0
-
/obj/item/organ/proc/rejuvenate()
damage = 0
germ_level = 0
@@ -239,6 +232,10 @@ var/list/organ_cache = list()
if(parent && !silent)
owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1)
+ //check if we've hit max_damage
+ if(damage >= max_damage)
+ necrotize()
+
/obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc
robotic = 2
status &= ~ORGAN_BROKEN
@@ -253,7 +250,7 @@ var/list/organ_cache = list()
min_bruised_damage = 15
min_broken_damage = 35
-/obj/item/organ/emp_act(severity)
+/obj/item/organ/external/emp_act(severity)
if(!(status & ORGAN_ROBOT))
return
if(tough)
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index c791dd581de..1070199d598 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -431,20 +431,17 @@
//High toxins levels are dangerous
if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("charcoal"))
//Healthy liver suffers on its own
- if(src.damage < min_broken_damage)
- src.damage += 0.2 * PROCESS_ACCURACY
+ if(damage < min_broken_damage)
+ take_damage(0.2 * PROCESS_ACCURACY)
//Damaged one shares the fun
else
var/obj/item/organ/internal/O = pick(owner.internal_organs)
if(O)
- O.damage += 0.2 * PROCESS_ACCURACY
+ O.take_damage(0.2 * PROCESS_ACCURACY)
//Detox can heal small amounts of damage
- if(src.damage && src.damage < src.min_bruised_damage && owner.reagents.has_reagent("charcoal"))
- src.damage -= 0.2 * PROCESS_ACCURACY
-
- if(src.damage < 0)
- src.damage = 0
+ if(damage && damage < min_bruised_damage && owner.reagents.has_reagent("charcoal"))
+ take_damage(-0.2 * PROCESS_ACCURACY)
// Get the effectiveness of the liver.
var/filter_effect = 3
@@ -454,7 +451,7 @@
filter_effect -= 2
// Damaged liver means some chemicals are very dangerous
- if(src.damage >= src.min_bruised_damage)
+ if(damage >= min_bruised_damage)
for(var/datum/reagent/R in owner.reagents.reagent_list)
// Ethanol and all drinks are bad
if(istype(R, /datum/reagent/consumable/ethanol))
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index a88ebfa6cc2..8bc0e799e11 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -200,7 +200,7 @@
return
for(var/obj/item/organ/internal/I in affected.internal_organs)
- if(I && I.damage > 0)
+ if(I && I.damage)
if(I.robotic < 2 && !istype (tool, /obj/item/stack/nanopaste))
if(!(I.sterile))
spread_germs_to_organ(I, user, tool)
@@ -238,7 +238,7 @@
for(var/obj/item/organ/internal/I in affected.internal_organs)
if(I)
I.surgeryize()
- if(I && I.damage > 0)
+ if(I && I.damage)
if(I.robotic < 2 && !istype (tool, /obj/item/stack/nanopaste))
user.visible_message(" [user] treats damage to [target]'s [I.name] with [tool_name].", \
" You treat damage to [target]'s [I.name] with [tool_name]." )
@@ -353,7 +353,7 @@
affected.take_damage(5)
for(var/obj/item/organ/internal/I in affected.internal_organs)
- if(I && I.damage > 0 && !(I.tough))
+ if(I && I.damage && !(I.tough))
I.take_damage(dam_amt,0)
return 0
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index fba57f4c997..27f722318d7 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -398,7 +398,7 @@
var/found_damaged_organ = FALSE
for(var/obj/item/organ/internal/I in affected.internal_organs)
- if(I && I.damage > 0 && I.robotic >= 2)
+ if(I && I.damage && I.robotic >= 2)
user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \
"You start mending the damage to [target]'s [I.name]'s mechanisms.")
found_damaged_organ = TRUE
@@ -423,7 +423,7 @@
if(!hasorgans(target))
return
for(var/obj/item/organ/internal/I in affected.internal_organs)
- if(I && I.damage > 0)
+ if(I && I.damage)
if(I.robotic >= 2)
user.visible_message(" [user] repairs [target]'s [I.name] with [tool].", \
" You repair [target]'s [I.name] with [tool]." )