diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 3a3c2292807..04f398c519a 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -82,7 +82,7 @@
SPAN_DANGER("You chew on your [O.name]!")
)
admin_attacker_log(src, "chewed on their [O.name]!")
- O.take_external_damage(3,0, DAM_SHARP|DAM_EDGE ,"teeth marks")
+ O.take_damage(3, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = "teeth marks")
next_restraint_chew = world.time + (2.5 SECONDS)
return TRUE
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index a9fc6994d81..bac188e9ee3 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -790,7 +790,7 @@
M.take_damage(damage)
else
to_chat(M, SPAN_DANGER("You land heavily on your [affecting.name]!"))
- affecting.take_external_damage(damage, 0)
+ affecting.take_damage(damage)
if(affecting.parent)
affecting.parent.add_autopsy_data("Misadventure", damage)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 918c145cce6..73011d93026 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -543,7 +543,7 @@
var/burn_damage = rand(my_size, round(my_size * 1.5))
var/obj/item/organ/external/organ = check_organ && holder.get_organ(check_organ)
if(istype(organ))
- organ.take_external_damage(0, burn_damage)
+ organ.take_damage(burn_damage, BURN)
else
holder.take_damage(burn_damage, BURN)
if(held_slot in holder.get_held_item_slots())
diff --git a/code/game/objects/items/_item_damage.dm b/code/game/objects/items/_item_damage.dm
index c9103026205..fcec66d0742 100644
--- a/code/game/objects/items/_item_damage.dm
+++ b/code/game/objects/items/_item_damage.dm
@@ -133,7 +133,7 @@
to_chat(M, SPAN_WARNING("You go blind!"))
var/obj/item/organ/external/affecting = GET_EXTERNAL_ORGAN(H, eyes.parent_organ)
- affecting.take_external_damage(7)
+ affecting.take_damage(7)
else
M.take_organ_damage(7)
SET_STATUS_MAX(M, STAT_BLURRY, rand(3,4))
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index 4150bd92532..52eb1d47f88 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -28,7 +28,7 @@
var/obj/item/organ/external/hand = GET_EXTERNAL_ORGAN(H, H.get_active_held_item_slot())
if(istype(hand) && !BP_IS_PROSTHETIC(hand))
to_chat(H, SPAN_DANGER("You slice your hand on \the [src]!"))
- hand.take_external_damage(rand(5,10), used_weapon = src)
+ hand.take_damage(rand(5,10), inflicter = src)
/obj/item/shard/set_material(var/new_material)
..(new_material)
@@ -111,7 +111,7 @@
if(!affecting || BP_IS_PROSTHETIC(affecting))
continue
to_chat(victim, SPAN_DANGER("You step on \the [src]!"))
- affecting.take_external_damage(5, 0)
+ affecting.take_damage(5)
if(affecting.can_feel_pain())
SET_STATUS_MAX(victim, STAT_WEAK, 3)
return
diff --git a/code/game/objects/structures/ironing_board.dm b/code/game/objects/structures/ironing_board.dm
index 77bcb0ec064..dbbc798426a 100644
--- a/code/game/objects/structures/ironing_board.dm
+++ b/code/game/objects/structures/ironing_board.dm
@@ -94,7 +94,7 @@
visible_message("[user] irons [src.buckled_mob]'s [parsed]!", "You iron [buckled_mob]'s [parsed]!")
var/obj/item/organ/external/affecting = GET_EXTERNAL_ORGAN(H, zone)
- affecting.take_external_damage(0, 15, used_weapon = "Hot metal")
+ affecting.take_damage(15, BURN, inflicter = "Hot metal")
return TRUE
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index f759887ff62..f062f3b01c2 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -41,7 +41,7 @@
affecting = GET_EXTERNAL_ORGAN(H, type)
SET_STATUS_MAX(H, STAT_STUN, 3)
if(affecting)
- affecting.take_external_damage(1, 0)
+ affecting.take_damage(1)
else if(ismouse(target))
var/mob/living/simple_animal/passive/mouse/M = target
diff --git a/code/modules/implants/implant.dm b/code/modules/implants/implant.dm
index 1654b567aa2..2572ce81055 100644
--- a/code/modules/implants/implant.dm
+++ b/code/modules/implants/implant.dm
@@ -100,7 +100,7 @@
if(malfunction == MALFUNCTION_PERMANENT) return
to_chat(imp_in, SPAN_DANGER("You feel something melting inside [part ? "your [part.name]" : "you"]!"))
if (part)
- part.take_external_damage(burn = 15, used_weapon = "Electronics meltdown")
+ part.take_damage(15, BURN, inflicter = "Electronics meltdown")
else
var/mob/living/M = imp_in
M.apply_damage(15,BURN)
diff --git a/code/modules/implants/implant_types/explosive.dm b/code/modules/implants/implant_types/explosive.dm
index 44bd35c5236..e588e56009a 100644
--- a/code/modules/implants/implant_types/explosive.dm
+++ b/code/modules/implants/implant_types/explosive.dm
@@ -132,7 +132,7 @@
if (part)
if (istype(part,/obj/item/organ/external/chest) || \
istype(part,/obj/item/organ/external/groin))
- part.take_external_damage(60, used_weapon = "Explosion")
+ part.take_damage(60, inflicter = "Explosion")
else
part.dismember(0,DISMEMBER_METHOD_BLUNT)
explosion(T, -1, -1, 2, 3)
diff --git a/code/modules/materials/_materials.dm b/code/modules/materials/_materials.dm
index d5965e1caa1..49d2673f2e3 100644
--- a/code/modules/materials/_materials.dm
+++ b/code/modules/materials/_materials.dm
@@ -877,10 +877,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/gas_overlay)
var/can_damage = I.max_damage - I.damage
if(can_damage > 0)
if(organ_damage > can_damage)
- I.take_internal_damage(can_damage, silent=TRUE)
+ I.take_damage(can_damage, silent=TRUE)
dam -= can_damage
else
- I.take_internal_damage(organ_damage, silent=TRUE)
+ I.take_damage(organ_damage, silent=TRUE)
dam = 0
if(dam > 0)
M.take_damage(toxicity_targets_organ ? (dam * 0.75) : dam, TOX)
diff --git a/code/modules/mob/living/human/human.dm b/code/modules/mob/living/human/human.dm
index 0ce40030e6c..34c51ac26b8 100644
--- a/code/modules/mob/living/human/human.dm
+++ b/code/modules/mob/living/human/human.dm
@@ -453,7 +453,7 @@
SPAN_DANGER("Your movement jostles [O] in your [organ.name] painfully."), \
SPAN_DANGER("Your movement jostles [O] in your [organ.name] painfully."))
custom_pain(msg,40,affecting = organ)
- organ.take_external_damage(rand(1,3) + O.w_class, DAM_EDGE, 0)
+ organ.take_damage(rand(1,3) + O.w_class, damage_flags = DAM_EDGE)
/mob/proc/set_bodytype(var/decl/bodytype/new_bodytype)
return
diff --git a/code/modules/mob/living/human/human_damage.dm b/code/modules/mob/living/human/human_damage.dm
index 4bdd283926e..8ea8d6738e6 100644
--- a/code/modules/mob/living/human/human_damage.dm
+++ b/code/modules/mob/living/human/human_damage.dm
@@ -15,7 +15,7 @@
if(!(status_flags & GODMODE) && should_have_organ(BP_BRAIN))
var/obj/item/organ/internal/sponge = GET_INTERNAL_ORGAN(src, BP_BRAIN)
if(sponge)
- sponge.take_internal_damage(amount)
+ sponge.take_damage(amount)
..()
/mob/living/human/setBrainLoss(var/amount)
@@ -213,10 +213,10 @@
else
var/cap_dam = I.max_damage - I.damage
if(amount >= cap_dam)
- I.take_internal_damage(cap_dam, silent=TRUE)
+ I.take_damage(cap_dam, silent=TRUE)
amount -= cap_dam
else
- I.take_internal_damage(amount, silent=TRUE)
+ I.take_damage(amount, silent=TRUE)
amount = 0
if(do_update_health)
@@ -272,9 +272,14 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t
if(!length(parts))
return
var/obj/item/organ/external/picked = pick(parts)
- if(picked.take_external_damage(brute, burn, override_droplimb = override_droplimb))
+ . = FALSE
+ if(brute && picked.take_damage(brute, override_droplimb = override_droplimb, do_update_health = FALSE))
+ . = TRUE
+ if(burn && picked.take_damage(burn, BURN, override_droplimb = override_droplimb, do_update_health = FALSE))
+ . = TRUE
+ if(.)
+ update_health()
BITSET(hud_updateflag, HEALTH_HUD)
- update_health()
//Heal MANY external organs, in random order
/mob/living/human/heal_overall_damage(var/brute, var/burn)
@@ -381,15 +386,12 @@ This function restores all organs.
var/datum/wound/created_wound
damageoverlaytemp = 20
switch(damagetype)
- if(BRUTE)
- created_wound = organ.take_external_damage(damage, 0, damage_flags, used_weapon)
- if(BURN)
- created_wound = organ.take_external_damage(0, damage, damage_flags, used_weapon)
+ if(BRUTE, BURN)
+ created_wound = organ.take_damage(damage, damagetype, damage_flags = damage_flags, inflicter = used_weapon, do_update_health = FALSE)
if(PAIN)
organ.add_pain(damage)
if(CLONE)
organ.add_genetic_damage(damage)
-
// Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life().
update_health()
BITSET(hud_updateflag, HEALTH_HUD)
diff --git a/code/modules/mob/living/human/human_verbs.dm b/code/modules/mob/living/human/human_verbs.dm
index 6eb93377612..28664c4d232 100644
--- a/code/modules/mob/living/human/human_verbs.dm
+++ b/code/modules/mob/living/human/human_verbs.dm
@@ -311,7 +311,7 @@
"[self ? "You pop" : "[U] pops"] your [current_limb.joint] in the WRONG place!" \
)
current_limb.add_pain(30)
- current_limb.take_external_damage(5)
+ current_limb.take_damage(5)
shock_stage += 20
else
visible_message( \
diff --git a/code/modules/mob/living/human/life.dm b/code/modules/mob/living/human/life.dm
index b8de66f6575..769bc01d786 100644
--- a/code/modules/mob/living/human/life.dm
+++ b/code/modules/mob/living/human/life.dm
@@ -250,7 +250,7 @@
if(QDELETED(O) || !(O.owner == src))
continue
if(O.damage + (LOW_PRESSURE_DAMAGE) < O.min_broken_damage) //vacuum does not break bones
- O.take_external_damage(brute = LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure")
+ O.take_damage(LOW_PRESSURE_DAMAGE, inflicter = "Low Pressure")
if(getOxyLossPercent() < 55) // 11 OxyLoss per 4 ticks when wearing internals; unconsciousness in 16 ticks, roughly half a minute
take_damage(4) // 16 OxyLoss per 4 ticks when no internals present; unconsciousness in 13 ticks, OXY, roughly twenty seconds
SET_HUD_ALERT(src, HUD_PRESSURE, -2)
diff --git a/code/modules/mob/living/human/unarmed_attack.dm b/code/modules/mob/living/human/unarmed_attack.dm
index 3ae4dece2a1..41a7fc31155 100644
--- a/code/modules/mob/living/human/unarmed_attack.dm
+++ b/code/modules/mob/living/human/unarmed_attack.dm
@@ -148,7 +148,7 @@
var/obj/item/organ/internal/eyes = GET_INTERNAL_ORGAN(target, BP_EYES)
var/decl/pronouns/pronouns = user.get_pronouns()
if(eyes)
- eyes.take_internal_damage(rand(3,4), 1)
+ eyes.take_damage(rand(3,4), 1)
user.visible_message(SPAN_DANGER("\The [user] jams [pronouns.his] [eye_attack_text] into \the [target]'s [eyes.name]!"))
if(eyes.can_feel_pain())
to_chat(target, SPAN_DANGER("You experience immense pain as [eye_attack_text_victim] are jammed into your [eyes.name]!"))
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 44e8324fcc0..b8a045e4275 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1665,7 +1665,7 @@ default behaviour is:
for(var/datum/wound/wound in affected.wounds)
LAZYREMOVE(wound.embedded_objects, implant)
if(!surgical_removal)
- affected.take_external_damage((implant.w_class * 3), 0, DAM_EDGE, "Embedded object extraction")
+ affected.take_damage((implant.w_class * 3), damage_flags = DAM_EDGE, inflicter = "Embedded object extraction")
if(!BP_IS_PROSTHETIC(affected) && prob(implant.w_class * 5) && affected.sever_artery()) //I'M SO ANEMIC I COULD JUST -DIE-.
custom_pain("Something tears wetly in your [affected.name] as [implant] is pulled free!", 50, affecting = affected)
@@ -1762,7 +1762,7 @@ default behaviour is:
playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
var/obj/item/organ/external/organ = GET_EXTERNAL_ORGAN(src, BP_CHEST)
if(istype(organ))
- organ.take_external_damage(d, 0)
+ organ.take_damage(d)
else
take_organ_damage(d)
if(prob(get_damage(BRUTE) - 50))
diff --git a/code/modules/mob/living/living_fires.dm b/code/modules/mob/living/living_fires.dm
index 5711910fe86..c66beaedc8a 100644
--- a/code/modules/mob/living/living_fires.dm
+++ b/code/modules/mob/living/living_fires.dm
@@ -80,7 +80,7 @@
if(has_external_organs())
for(var/obj/item/organ/external/E in get_external_organs())
if(!(E.body_part & protected_limbs) && prob(20))
- E.take_external_damage(burn = round(species_heat_mod * log(10, (burn_temperature + 10)), 0.1), used_weapon = "fire")
+ E.take_damage(round(species_heat_mod * log(10, (burn_temperature + 10)), 0.1), BURN, inflicter = "fire")
else // fallback for simplemobs
take_damage(round(species_heat_mod * log(10, (burn_temperature + 10))), 0.1, BURN, DAM_DISPERSED)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index b7e695a72cb..49224c032f5 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -190,7 +190,7 @@ var/global/list/possible_say_verbs = list(
var/mob/living/human/H = holder
for(var/obj/item/organ/external/affecting in H.get_external_organs())
if(card in affecting.implants)
- affecting.take_external_damage(rand(30,50))
+ affecting.take_damage(rand(30,50))
LAZYREMOVE(affecting.implants, card)
H.visible_message("\The [src] explodes out of \the [H]'s [affecting.name] in a shower of gore!")
break
diff --git a/code/modules/organs/external/_external.dm b/code/modules/organs/external/_external.dm
index 150216e903a..bdc699433ef 100644
--- a/code/modules/organs/external/_external.dm
+++ b/code/modules/organs/external/_external.dm
@@ -202,7 +202,7 @@
if(owner && burn_damage)
owner.custom_pain("Something inside your [src] burns a [severity < 2 ? "bit" : "lot"]!", power * 15) //robotic organs won't feel it anyway
- take_external_damage(0, burn_damage, 0, used_weapon = "Hot metal")
+ take_damage(burn_damage, BURN, inflicter = "Hot metal")
check_pain_disarm()
if(owner && (limb_flags & ORGAN_FLAG_CAN_STAND))
@@ -1506,7 +1506,7 @@ Note that amputating the affected organ does in fact remove the infection from t
if(LAZYLEN(internal_organs) && prob(brute_dam + force))
owner.custom_pain("A piece of bone in your [encased ? encased : name] moves painfully!", 50, affecting = src)
var/obj/item/organ/internal/internal_organ = pick(internal_organs)
- internal_organ.take_internal_damage(rand(3,5))
+ internal_organ.take_damage(rand(3,5))
/obj/item/organ/external/proc/jointlock(mob/attacker)
if(!can_feel_pain())
diff --git a/code/modules/organs/external/_external_damage.dm b/code/modules/organs/external/_external_damage.dm
index 0d185bbe9ae..3f58b3ba0b4 100644
--- a/code/modules/organs/external/_external_damage.dm
+++ b/code/modules/organs/external/_external_damage.dm
@@ -6,16 +6,13 @@
//Continued damage to vital organs can kill you, and robot organs don't count towards total damage so no need to cap them.
return (BP_IS_PROSTHETIC(src) || brute_dam + burn_dam + additional_damage < max_damage * 4)
-/obj/item/organ/external/take_general_damage(var/amount, var/silent = FALSE)
- take_external_damage(amount)
-
-/obj/item/organ/external/proc/take_external_damage(brute, burn, damage_flags, used_weapon, override_droplimb)
+/obj/item/organ/external/take_damage(damage, damage_type = BRUTE, damage_flags, inflicter, armor_pen = 0, silent, do_update_health, override_droplimb)
if(!owner)
return
- brute = round(brute * get_brute_mod(damage_flags), 0.1)
- burn = round(burn * get_burn_mod(damage_flags), 0.1)
+ var/brute = damage_type == BRUTE ? round(damage * get_brute_mod(damage_flags), 0.1) : 0
+ var/burn = damage_type == BURN ? round(damage * get_burn_mod(damage_flags), 0.1) : 0
if((brute <= 0) && (burn <= 0))
return 0
@@ -33,8 +30,8 @@
if(prob(25))
owner.visible_message(SPAN_WARNING("\The [owner]'s crystalline [name] shines with absorbed energy!"))
- if(used_weapon)
- add_autopsy_data(used_weapon, brute + burn)
+ if(inflicter)
+ add_autopsy_data(inflicter, brute + burn)
var/spillover = 0
var/pure_brute = brute
@@ -54,7 +51,7 @@
var/total_damage = brute_dam + burn_dam + brute + burn + spillover
var/threshold = max_damage * get_config_value(/decl/config/num/health_organ_health_multiplier)
if(total_damage > threshold)
- if(attempt_dismemberment(pure_brute, burn, sharp, edge, used_weapon, spillover, total_damage > threshold*6, override_droplimb = override_droplimb))
+ if(attempt_dismemberment(pure_brute, burn, sharp, edge, inflicter, spillover, total_damage > threshold*6, override_droplimb = override_droplimb))
return
//blunt damage is gud at fracturing
@@ -114,15 +111,16 @@
// sync the organ's damage with its wounds
update_damages()
- owner.update_health()
+ if(do_update_health)
+ owner.update_health()
if(status & ORGAN_BLEEDING)
owner.update_bandages()
if(owner && update_damstate())
owner.update_damage_overlays()
- if(created_wound && isobj(used_weapon))
- var/obj/O = used_weapon
+ if(created_wound && isobj(inflicter))
+ var/obj/O = inflicter
O.after_wounding(src, created_wound)
return created_wound
@@ -171,7 +169,7 @@
if(prob(organ_hit_chance))
var/obj/item/organ/internal/victim = pickweight(victims)
damage_amt -= max(damage_amt*victim.damage_reduction, 0)
- victim.take_internal_damage(damage_amt)
+ victim.take_damage(damage_amt)
return TRUE
/obj/item/organ/external/heal_damage(brute, burn, internal = 0, robo_repair = 0)
diff --git a/code/modules/organs/external/head.dm b/code/modules/organs/external/head.dm
index b16d8919e29..3fdae586b02 100644
--- a/code/modules/organs/external/head.dm
+++ b/code/modules/organs/external/head.dm
@@ -99,7 +99,7 @@
. = ..()
can_intake_reagents = !(bodytype.body_flags & BODY_FLAG_NO_EAT)
-/obj/item/organ/external/head/take_external_damage(brute, burn, damage_flags, used_weapon, override_droplimb)
+/obj/item/organ/external/head/take_damage(damage, damage_type, damage_flags, inflicter, armor_pen, silent, do_update_health, override_droplimb)
. = ..()
if (!(status & ORGAN_DISFIGURED))
if (brute_dam > 40)
diff --git a/code/modules/organs/internal/_internal.dm b/code/modules/organs/internal/_internal.dm
index a3ac98d48e2..c3a30ab965c 100644
--- a/code/modules/organs/internal/_internal.dm
+++ b/code/modules/organs/internal/_internal.dm
@@ -117,17 +117,14 @@
if(damage_threshold_count > 0)
damage_threshold_value = round(max_damage / damage_threshold_count)
-/obj/item/organ/internal/take_general_damage(var/amount, var/silent = FALSE)
- take_internal_damage(amount, silent)
-
-/obj/item/organ/internal/proc/take_internal_damage(amount, var/silent=0)
+/obj/item/organ/internal/take_damage(damage, damage_type = BRUTE, damage_flags, inflicter, armor_pen = 0, silent, do_update_health)
if(BP_IS_PROSTHETIC(src))
- damage = clamp(src.damage + (amount * 0.8), 0, max_damage)
+ damage = clamp(src.damage + (damage * 0.8), 0, max_damage)
else
- damage = clamp(src.damage + amount, 0, max_damage)
+ damage = clamp(src.damage + damage, 0, max_damage)
//only show this if the organ is not robotic
- if(owner && can_feel_pain() && parent_organ && (amount > 5 || prob(10)))
+ if(owner && can_feel_pain() && parent_organ && (damage > 5 || prob(10)))
var/obj/item/organ/external/parent = GET_EXTERNAL_ORGAN(owner, parent_organ)
if(parent && !silent)
var/degree = ""
@@ -135,7 +132,7 @@
degree = " a lot"
if(damage < 5)
degree = " a bit"
- owner.custom_pain("Something inside your [parent.name] hurts[degree].", amount, affecting = parent)
+ owner.custom_pain("Something inside your [parent.name] hurts[degree].", damage, affecting = parent)
/obj/item/organ/internal/proc/get_visible_state()
if(damage > max_damage)
@@ -234,11 +231,11 @@
return
switch (severity)
if (1)
- take_internal_damage(16)
+ take_damage(16)
if (2)
- take_internal_damage(9)
+ take_damage(9)
if (3)
- take_internal_damage(6.5)
+ take_damage(6.5)
/obj/item/organ/internal/on_update_icon()
. = ..()
diff --git a/code/modules/organs/internal/appendix.dm b/code/modules/organs/internal/appendix.dm
index f0d1c8f6af6..8f4c372ea7c 100644
--- a/code/modules/organs/internal/appendix.dm
+++ b/code/modules/organs/internal/appendix.dm
@@ -22,7 +22,7 @@
owner.visible_message("\The [owner] winces slightly.")
if(inflamed > 200)
if(prob(3))
- take_internal_damage(0.1)
+ take_damage(0.1)
if(owner.can_feel_pain())
owner.visible_message("\The [owner] winces painfully.")
owner.take_damage(1, TOX)
diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm
index c4980c3a303..39e3d07a259 100644
--- a/code/modules/organs/internal/brain.dm
+++ b/code/modules/organs/internal/brain.dm
@@ -140,12 +140,12 @@
to_chat(owner, "You feel [pick("dizzy","woozy","faint")]...")
damprob = stability_effect ? 30 : 60
if(!past_damage_threshold(2) && prob(damprob))
- take_internal_damage(1)
+ take_damage(1)
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
SET_STATUS_MAX(owner, STAT_BLURRY, 6)
damprob = stability_effect ? 40 : 80
if(!past_damage_threshold(4) && prob(damprob))
- take_internal_damage(1)
+ take_damage(1)
if(!HAS_STATUS(owner, STAT_PARA) && prob(10))
SET_STATUS_MAX(owner, STAT_PARA, rand(1,3))
to_chat(owner, "You feel extremely [pick("dizzy","woozy","faint")]...")
@@ -153,7 +153,7 @@
SET_STATUS_MAX(owner, STAT_BLURRY, 6)
damprob = stability_effect ? 60 : 100
if(!past_damage_threshold(6) && prob(damprob))
- take_internal_damage(1)
+ take_damage(1)
if(!HAS_STATUS(owner, STAT_PARA) && prob(15))
SET_STATUS_MAX(owner, STAT_PARA, rand(3,5))
to_chat(owner, "You feel extremely [pick("dizzy","woozy","faint")]...")
@@ -161,12 +161,12 @@
SET_STATUS_MAX(owner, STAT_BLURRY, 6)
damprob = stability_effect ? 80 : 100
if(prob(damprob))
- take_internal_damage(1)
+ take_damage(1)
if(prob(damprob))
- take_internal_damage(1)
+ take_damage(1)
..()
-/obj/item/organ/internal/brain/take_internal_damage(var/damage, var/silent)
+/obj/item/organ/internal/brain/take_damage(damage, damage_type = BRUTE, damage_flags, inflicter, armor_pen = 0, silent, do_update_health)
..()
if(damage >= 10) //This probably won't be triggered by oxyloss or mercury. Probably.
var/damage_secondary = damage * 0.20
diff --git a/code/modules/organs/internal/eyes.dm b/code/modules/organs/internal/eyes.dm
index 7dbc75053e6..94e7e27418e 100644
--- a/code/modules/organs/internal/eyes.dm
+++ b/code/modules/organs/internal/eyes.dm
@@ -75,7 +75,7 @@
if(istype(head))
head._icon_cache_key = null
-/obj/item/organ/internal/eyes/take_internal_damage(amount, var/silent=0)
+/obj/item/organ/internal/eyes/take_damage(damage, damage_type = BRUTE, damage_flags, inflicter, armor_pen = 0, silent, do_update_health)
var/oldbroken = is_broken()
. = ..()
if(is_broken() && !oldbroken && owner && !owner.stat)
diff --git a/code/modules/organs/internal/heart.dm b/code/modules/organs/internal/heart.dm
index 2cc637a076c..8930a70e6b9 100644
--- a/code/modules/organs/internal/heart.dm
+++ b/code/modules/organs/internal/heart.dm
@@ -28,9 +28,9 @@
if(pulse)
handle_heartbeat()
if(pulse == PULSE_2FAST && prob(1))
- take_internal_damage(0.5)
+ take_damage(0.5)
if(pulse == PULSE_THREADY && prob(5))
- take_internal_damage(0.5)
+ take_damage(0.5)
handle_blood()
..()
@@ -47,7 +47,7 @@
if(pulse_mod > 2 && !is_stable)
var/damage_chance = (pulse_mod - 2) ** 2
if(prob(damage_chance))
- take_internal_damage(0.5)
+ take_damage(0.5)
// Now pulse mod is impacted by shock stage and other things too
if(owner.shock_stage > 30)
diff --git a/code/modules/organs/internal/liver.dm b/code/modules/organs/internal/liver.dm
index bc782095676..64d68166d69 100644
--- a/code/modules/organs/internal/liver.dm
+++ b/code/modules/organs/internal/liver.dm
@@ -51,7 +51,7 @@
owner.take_damage(0.5 * max(2 - filter_effect, TOX, 0) * (alcotox + 0.5 * alco))
if(alcotox)
- take_internal_damage(alcotox, prob(90)) // Chance to warn them
+ take_damage(alcotox, prob(90)) // Chance to warn them
//Blood regeneration if there is some space
owner.regenerate_blood(0.1 + GET_CHEMICAL_EFFECT(owner, CE_BLOODRESTORE))
diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm
index 15cdb2e31b9..9ff4068188a 100644
--- a/code/modules/organs/organ.dm
+++ b/code/modules/organs/organ.dm
@@ -227,7 +227,7 @@
blood_splatter(get_turf(src), src, 1)
remove_any_reagents(0.1)
if(get_config_value(/decl/config/toggle/health_organs_decay))
- take_general_damage(rand(1,3))
+ take_damage(rand(1,3))
germ_level += rand(2,6)
if(germ_level >= INFECTION_LEVEL_TWO)
germ_level += rand(2,6)
@@ -309,7 +309,7 @@
parent.germ_level++
if (prob(3)) //about once every 30 seconds
- take_general_damage(1,silent=prob(30))
+ take_damage(1, silent =prob(30))
/obj/item/organ/proc/handle_rejection()
// Process unsuitable transplants. TODO: consider some kind of
@@ -381,8 +381,9 @@
germ_level -= round(2 * antibiotics)
germ_level = max(0, germ_level)
-/obj/item/organ/proc/take_general_damage(var/amount, var/silent = FALSE)
- CRASH("Not Implemented")
+// Bypass the atom damage system as organs implement their own health handling etc.
+/obj/item/organ/take_damage(damage, damage_type = BRUTE, damage_flags, inflicter, armor_pen = 0, silent, do_update_health)
+ return
/obj/item/organ/proc/heal_damage(amount)
if(can_recover())
diff --git a/code/modules/reagents/chems/chems_alcohol.dm b/code/modules/reagents/chems/chems_alcohol.dm
index 505354b4d30..b218183a818 100644
--- a/code/modules/reagents/chems/chems_alcohol.dm
+++ b/code/modules/reagents/chems/chems_alcohol.dm
@@ -479,9 +479,9 @@
var/obj/item/organ/internal/heart = GET_INTERNAL_ORGAN(H, BP_HEART)
if(heart)
if(dose < 120)
- heart.take_internal_damage(10 * removed, 0)
+ heart.take_damage(10 * removed, 0)
else
- heart.take_internal_damage(100, 0)
+ heart.take_damage(100, 0)
/decl/material/liquid/alcohol/aged_whiskey // I have no idea what this is and where it comes from. //It comes from Dinnlan now
name = "aged whiskey"
diff --git a/code/modules/reagents/chems/chems_compounds.dm b/code/modules/reagents/chems/chems_compounds.dm
index 45a828e3a60..c4a17bceb13 100644
--- a/code/modules/reagents/chems/chems_compounds.dm
+++ b/code/modules/reagents/chems/chems_compounds.dm
@@ -455,7 +455,7 @@
new /obj/item/shard(get_turf(E), result_mat)
E.dismember(0, DISMEMBER_METHOD_BLUNT)
else
- E.take_external_damage(rand(20,30), 0)
+ E.take_damage(rand(20,30))
BP_SET_CRYSTAL(E)
E.status |= ORGAN_BRITTLE
break
diff --git a/code/modules/reagents/chems/chems_medicines.dm b/code/modules/reagents/chems/chems_medicines.dm
index 7b8357a1767..12436c5896f 100644
--- a/code/modules/reagents/chems/chems_medicines.dm
+++ b/code/modules/reagents/chems/chems_medicines.dm
@@ -298,7 +298,7 @@
var/mob/living/human/H = M
if(H.resuscitate())
var/obj/item/organ/internal/heart = GET_INTERNAL_ORGAN(H, BP_HEART)
- heart.take_internal_damage(heart.max_damage * 0.15)
+ heart.take_damage(heart.max_damage * 0.15)
/decl/material/liquid/stabilizer
name = "stabilizer"
@@ -401,7 +401,7 @@
/decl/material/liquid/clotting_agent/affect_overdose(mob/living/victim, total_dose)
var/obj/item/organ/internal/heart = GET_INTERNAL_ORGAN(victim, BP_HEART)
if(heart && prob(25))
- heart.take_general_damage(rand(1,3))
+ heart.take_damage(rand(1,3))
return ..()
#define DETOXIFIER_EFFECTIVENESS 6 // 6u of opiates removed per 1u of detoxifier; 5u is enough to remove 30u, i.e. an overdose
diff --git a/code/modules/reagents/reagent_containers/food/meat/cubes.dm b/code/modules/reagents/reagent_containers/food/meat/cubes.dm
index ccad0f20322..13f68070877 100644
--- a/code/modules/reagents/reagent_containers/food/meat/cubes.dm
+++ b/code/modules/reagents/reagent_containers/food/meat/cubes.dm
@@ -75,7 +75,7 @@
target.visible_message(SPAN_DANGER("A screeching creature bursts out of \the [target]!"))
var/obj/item/organ/external/organ = GET_EXTERNAL_ORGAN(target, BP_CHEST)
if(organ)
- organ.take_external_damage(50, 0, 0, "Animal escaping the ribcage")
+ organ.take_damage(50, inflicter = "Animal escaping the ribcage")
spawn_creature(get_turf(target))
/obj/item/food/animal_cube/on_reagent_change()
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 274c5aec259..afae8f24b69 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -65,7 +65,7 @@
var/obj/item/organ/external/E = pick(crush)
- E.take_external_damage(45, used_weapon = "Blunt Trauma")
+ E.take_damage(45, inflicter = "Blunt Trauma")
to_chat(L, "\The [src]'s mechanisms crush your [E.name]!")
H.init(src) // copy the contents of disposer to holder
diff --git a/code/modules/status_conditions/status_jittery.dm b/code/modules/status_conditions/status_jittery.dm
index f196c38b430..04d8bb8946e 100644
--- a/code/modules/status_conditions/status_jittery.dm
+++ b/code/modules/status_conditions/status_jittery.dm
@@ -29,10 +29,10 @@
return
if(prob(5))
if(prob(1))
- heart.take_internal_damage(heart.max_damage / 2, 0)
+ heart.take_damage(heart.max_damage / 2, 0)
to_chat(victim, SPAN_DANGER("Something bursts in your heart."))
admin_victim_log(victim, "has taken lethal heart damage at jitteriness level [jitteriness].")
else
- heart.take_internal_damage(heart, 0)
+ heart.take_damage(heart, 0)
to_chat(victim, SPAN_DANGER("The jitters are killing you! You feel your heart beating out of your chest."))
admin_victim_log(victim, "has taken minor heart damage at jitteriness level [jitteriness].")
diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm
index 82f52e1d33d..cc0a53a8147 100644
--- a/code/modules/surgery/bones.dm
+++ b/code/modules/surgery/bones.dm
@@ -107,7 +107,7 @@
user.visible_message("\The [user]'s hand slips, damaging the [affected.encased ? affected.encased : "bones"] in \the [target]'s [affected.name] with \the [tool]!" , \
"Your hand slips, damaging the [affected.encased ? affected.encased : "bones"] in \the [target]'s [affected.name] with \the [tool]!")
affected.fracture()
- affected.take_external_damage(5, used_weapon = tool)
+ affected.take_damage(5, inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm
index 36a969d13fd..57a17c7d785 100644
--- a/code/modules/surgery/encased.dm
+++ b/code/modules/surgery/encased.dm
@@ -45,6 +45,6 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, cracking [target]'s [affected.encased] with \the [tool]!" , \
"Your hand slips, cracking [target]'s [affected.encased] with \the [tool]!" )
- affected.take_external_damage(15, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(15, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
affected.fracture()
..()
diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm
index a2baf2e1200..7b8ca9c6687 100644
--- a/code/modules/surgery/face.dm
+++ b/code/modules/surgery/face.dm
@@ -36,5 +36,5 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, tearing skin on [target]'s face with \the [tool]!", \
"Your hand slips, tearing skin on [target]'s face with \the [tool]!")
- affected.take_external_damage(10, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(10, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
..()
diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm
index f9d54f3b125..5b5843eb77a 100644
--- a/code/modules/surgery/generic.dm
+++ b/code/modules/surgery/generic.dm
@@ -61,7 +61,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, [fail_string] \the [target]'s [affected.name] in the wrong place with \the [tool]!", \
"Your hand slips, [fail_string] \the [target]'s [affected.name] in the wrong place with \the [tool]!")
- affected.take_external_damage(10, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(10, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
..()
/decl/surgery_step/generic/cut_open/success_chance(mob/living/user, mob/living/target, obj/item/tool)
@@ -111,7 +111,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.name] with \the [tool]!", \
"Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!",)
- affected.take_external_damage(10, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(10, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
@@ -157,7 +157,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!", \
"Your hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!")
- affected.take_external_damage(12, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(12, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
@@ -213,7 +213,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, damaging [target]'s [affected.name] with \the [tool]!", \
"Your hand slips, damaging [target]'s [affected.name] with \the [tool]!")
- affected.take_external_damage(0, 3, used_weapon = tool)
+ affected.take_damage(3, BURN, inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
@@ -285,11 +285,11 @@
user.visible_message(
SPAN_DANGER("\The [user] manages to get \the [tool] stuck in \the [target]'s [affected.name]!"), \
SPAN_DANGER("You manage to get \the [tool] stuck in \the [target]'s [affected.name]!"))
- affected.embed_in_organ(tool, affected.take_external_damage(30, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool))
+ affected.embed_in_organ(tool, affected.take_damage(30, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool))
else
user.visible_message(
SPAN_WARNING("\The [user] slips, mangling \the [target]'s [affected.name] with \the [tool]."), \
SPAN_WARNING("You slip, mangling \the [target]'s [affected.name] with \the [tool]."))
- affected.take_external_damage(30, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(30, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
affected.fracture()
..()
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index be2f0f6b69d..a453faec003 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -18,7 +18,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!", \
"Your hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!")
- affected.take_external_damage(20, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(20, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
..()
/decl/surgery_step/cavity/get_skill_reqs(mob/living/user, mob/living/target, obj/item/tool, target_zone)
diff --git a/code/modules/surgery/necrotic.dm b/code/modules/surgery/necrotic.dm
index 6f41080ae0d..32b74e3f508 100644
--- a/code/modules/surgery/necrotic.dm
+++ b/code/modules/surgery/necrotic.dm
@@ -86,7 +86,7 @@
user.visible_message(
SPAN_DANGER("\The [user]'s hand slips, slicing into a healthy portion of \the [target]'s [affected.name] with \the [tool]!"),
SPAN_DANGER("Your hand slips, slicing into a healthy portion of [target]'s [affected.name] with \the [tool]!"))
- affected.take_external_damage(10, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(10, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index 76b37e9eb8d..7f6e5083459 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -82,10 +82,10 @@
else
dam_amt = 5
target.take_damage(10, TOX)
- affected.take_external_damage(dam_amt, 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(dam_amt, damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
for(var/obj/item/organ/internal/I in affected.internal_organs)
if(I && I.damage > 0 && !BP_IS_PROSTHETIC(I) && (I.surface_accessible || affected.how_open() >= (affected.encased ? SURGERY_ENCASED : SURGERY_RETRACTED)))
- I.take_internal_damage(dam_amt)
+ I.take_damage(dam_amt)
..()
//////////////////////////////////////////////////////////////////
@@ -135,7 +135,7 @@
if(affected)
user.visible_message("[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!", \
"Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!")
- affected.take_external_damage(rand(30,50), 0, (DAM_SHARP|DAM_EDGE), used_weapon = tool)
+ affected.take_damage(rand(30,50), damage_flags = (DAM_SHARP|DAM_EDGE), inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
@@ -202,7 +202,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, damaging [target]'s [affected.name] with \the [tool]!", \
"Your hand slips, damaging [target]'s [affected.name] with \the [tool]!")
- affected.take_external_damage(20, used_weapon = tool)
+ affected.take_damage(20, inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
@@ -299,7 +299,7 @@
"Your hand slips, damaging \the [tool]!")
var/obj/item/organ/internal/I = tool
if(istype(I))
- I.take_internal_damage(rand(3,5))
+ I.take_damage(rand(3,5))
..()
//////////////////////////////////////////////////////////////////
@@ -391,5 +391,5 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!", \
"Your hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!")
- affected.take_external_damage(20, used_weapon = tool)
+ affected.take_damage(20, inflicter = tool)
..()
diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm
index ca8806692a1..5b9c16d99cf 100644
--- a/code/modules/surgery/other.dm
+++ b/code/modules/surgery/other.dm
@@ -45,7 +45,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!" , \
"Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!")
- affected.take_external_damage(5, used_weapon = tool)
+ affected.take_damage(5, inflicter = tool)
..()
//////////////////////////////////////////////////////////////////
@@ -91,7 +91,7 @@
var/obj/item/organ/external/affected = GET_EXTERNAL_ORGAN(target, target_zone)
user.visible_message("[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!" , \
"Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!")
- affected.take_external_damage(5, used_weapon = tool)
+ affected.take_damage(5, inflicter = tool)
..()
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index 8695ab98499..6e64ffcb1f9 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -395,7 +395,7 @@
for(var/internal in affected.internal_organs)
var/obj/item/organ/internal/I = internal
if(I)
- I.take_internal_damage(rand(3,5))
+ I.take_damage(rand(3,5))
..()
//////////////////////////////////////////////////////////////////
diff --git a/mods/species/serpentid/mobs/bodyparts_serpentid.dm b/mods/species/serpentid/mobs/bodyparts_serpentid.dm
index 55aa7fd4eff..1eff7af0581 100644
--- a/mods/species/serpentid/mobs/bodyparts_serpentid.dm
+++ b/mods/species/serpentid/mobs/bodyparts_serpentid.dm
@@ -13,7 +13,7 @@
/obj/item/organ/internal/eyes/insectoid/serpentid/additional_flash_effects(var/intensity)
if(!eyes_shielded)
- take_internal_damage(max(0, 4 * (intensity)))
+ take_damage(max(0, 4 * (intensity)))
return 1
else
return -1
@@ -118,7 +118,7 @@
to_chat(owner, "Your body is barely functioning and is starting to shut down.")
SET_STATUS_MAX(owner, STAT_PARA, 2)
var/obj/item/organ/internal/I = pick(owner.internal_organs)
- I.take_internal_damage(5)
+ I.take_damage(5)
..()
/obj/item/organ/external/chest/insectoid/serpentid
diff --git a/mods/species/vox/organs_vox.dm b/mods/species/vox/organs_vox.dm
index 7933c8f41a4..202e2b3931d 100644
--- a/mods/species/vox/organs_vox.dm
+++ b/mods/species/vox/organs_vox.dm
@@ -236,9 +236,9 @@
/obj/item/organ/internal/voxstack/on_remove_effects(mob/living/last_owner)
var/obj/item/organ/external/head = GET_EXTERNAL_ORGAN(last_owner, parent_organ)
last_owner.visible_message(SPAN_DANGER("\The [src] rips gaping holes in \the [last_owner]'s [head.name] as it is torn loose!"))
- head.take_external_damage(rand(15,20))
+ head.take_damage(rand(15,20))
for(var/obj/item/organ/internal/O in head.contents)
- O.take_internal_damage(rand(30,70))
+ O.take_damage(rand(30,70))
do_backup()
..()