diff --git a/code/WorkInProgress/virus2/base.dm b/code/WorkInProgress/virus2/base.dm
index 0b77bc4a662..bebc719b88f 100644
--- a/code/WorkInProgress/virus2/base.dm
+++ b/code/WorkInProgress/virus2/base.dm
@@ -487,7 +487,7 @@
name = "Disarming Syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
- var/datum/limb/org = mob.organs["r_arm"]
+ var/obj/item/organ/limb/org = mob.organs["r_arm"]
org.take_damage(3,0,0,0)
mob << "\red You feel a sting in your right arm."*/
diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 69c4f3e0ce3..1d79994ef81 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -72,7 +72,7 @@
return
var/mob/living/carbon/ML = A
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/limb/affecting = null
+ var/obj/item/organ/limb/affecting = null
if(ishuman(ML)) // why the hell is this not more general
affecting = ML:get_organ(ran_zone(dam_zone))
var/armor = ML.run_armor_check(affecting, "melee")
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 1d3ebb0c812..606d63aa994 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -18,7 +18,7 @@
user.Paralyse(5)
user << "\red An unexplicable force powerfully repels the sword from [target]!"
var/organ = ((user.hand ? "l_":"r_") + "arm")
- var/datum/limb/affecting = user.get_organ(organ)
+ var/obj/item/organ/limb/affecting = user.get_organ(organ)
if(affecting.take_damage(rand(force/2, force))) //random amount of damage between half of the blade's force and the full force of the blade.
user.update_damage_overlays(0)
return
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 925300219ee..3a75944e52f 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -267,7 +267,7 @@ var/list/sacrificed = list()
usr << "\red You require a restless spirit which clings to this world. Beckon their prescence with the sacred chants of Nar-Sie."
return fizzle()
- for(var/datum/limb/affecting in corpse_to_raise.organs)
+ for(var/obj/item/organ/limb/affecting in corpse_to_raise.organs)
affecting.heal_damage(1000, 1000)
corpse_to_raise.setToxLoss(0)
corpse_to_raise.setOxyLoss(0)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 6dba221e53b..90d0c522be9 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -610,7 +610,7 @@ About the new airlock wires panel:
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
if(!istype(H.head, /obj/item/clothing/head/helmet))
visible_message("\red [user] headbutts the airlock.")
- var/datum/limb/affecting = H.get_organ("head")
+ var/obj/item/organ/limb/affecting = H.get_organ("head")
H.Stun(8)
H.Weaken(5)
if(affecting.take_damage(10, 0))
diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm
index 34ca60dcdec..47a9dceb58f 100644
--- a/code/game/mecha/combat/combat.dm
+++ b/code/game/mecha/combat/combat.dm
@@ -41,7 +41,7 @@
var/mob/living/carbon/human/H = target
// if (M.health <= 0) return
- var/datum/limb/temp = H.get_organ(pick("chest", "chest", "chest", "head"))
+ var/obj/item/organ/limb/temp = H.get_organ(pick("chest", "chest", "chest", "head"))
if(temp)
var/update = 0
switch(damtype)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index eecbc64e0cc..40f9e3b0ded 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -501,9 +501,11 @@
"\red You stab yourself in the eyes with [src]!" \
)
if(istype(M, /mob/living/carbon/human))
- var/datum/limb/affecting = M:get_organ("head")
+ var/mob/living/carbon/human/U = M
+ var/obj/item/organ/limb/affecting = U.get_organ("head")
if(affecting.take_damage(7))
- M:update_damage_overlays(0)
+ U.update_damage_overlays(0)
+
else
M.take_organ_damage(7)
M.eye_blurry += rand(3,4)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index b88cf112237..1c08b4ca68b 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -125,7 +125,7 @@ MASS SPECTROMETER
var/list/damaged = H.get_damaged_organs(1,1)
user.show_message("Localized Damage, Burn/Brute:",1)
if(length(damaged)>0)
- for(var/datum/limb/org in damaged)
+ for(var/obj/item/organ/limb/org in damaged)
user.show_message(text("\t []: []-[]", capitalize(org.getDisplayName()), (org.burn_dam > 0) ? "[org.burn_dam]" : 0, (org.brute_dam > 0) ? "[org.brute_dam]" : 0), 1)
else
user.show_message("\t Limbs are OK.",1)
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 2b5fd33050e..9358adfc4a1 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -50,13 +50,13 @@
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
- var/datum/limb/affecting = H.get_organ("chest")
+ var/obj/item/organ/limb/affecting = H.get_organ("chest")
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/user2 = user
affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
else
- if(!istype(affecting, /datum/limb) || affecting:burn_dam <= 0)
+ if(!istype(affecting, /obj/item/organ/limb) || affecting:burn_dam <= 0)
affecting = H.get_organ("head")
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 5130265ab81..ef821073ee0 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -280,7 +280,7 @@
if(!H.gloves)
H << "[src] cuts into your hand!"
var/organ = (H.hand ? "l_" : "r_") + "arm"
- var/datum/limb/affecting = H.get_organ(organ)
+ var/obj/item/organ/limb/affecting = H.get_organ(organ)
if(affecting.take_damage(force / 2))
H.update_damage_overlays(0)
else if(isliving(user))
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index 28f007f30db..7c1c11c1899 100644
--- a/code/game/objects/items/weapons/storage/bible.dm
+++ b/code/game/objects/items/weapons/storage/bible.dm
@@ -26,7 +26,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/heal_amt = 10
- for(var/datum/limb/affecting in H.organs)
+ for(var/obj/item/organ/limb/affecting in H.organs)
if(affecting.heal_damage(heal_amt, heal_amt))
H.update_damage_overlays(0)
return
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index e6a435a20e8..702b33e00d5 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -39,7 +39,7 @@
proc/triggered(mob/target as mob, var/type = "feet")
if(!armed)
return
- var/datum/limb/affecting = null
+ var/obj/item/organ/limb/affecting = null
if(ishuman(target))
var/mob/living/carbon/human/H = target
switch(type)
diff --git a/code/modules/hydroponics/hydroitemcode.dm b/code/modules/hydroponics/hydroitemcode.dm
index eaec018f589..5923ee8af38 100644
--- a/code/modules/hydroponics/hydroitemcode.dm
+++ b/code/modules/hydroponics/hydroitemcode.dm
@@ -33,7 +33,7 @@
user << "\red The nettle burns your bare hand!"
if(istype(user, /mob/living/carbon/human))
var/organ = ((user.hand ? "l_":"r_") + "arm")
- var/datum/limb/affecting = user.get_organ(organ)
+ var/obj/item/organ/limb/affecting = user.get_organ(organ)
if(affecting.take_damage(0,force))
user.update_damage_overlays(0)
else
@@ -57,7 +57,7 @@
if(!user.gloves)
if(istype(user, /mob/living/carbon/human))
var/organ = ((user.hand ? "l_":"r_") + "arm")
- var/datum/limb/affecting = user.get_organ(organ)
+ var/obj/item/organ/limb/affecting = user.get_organ(organ)
if(affecting.take_damage(0,force))
user.update_damage_overlays(0)
else
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 75fb2d0b87f..73a037fd4a6 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -20,8 +20,8 @@
if(istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
var/organ = H.get_organ("chest")
- if (istype(organ, /datum/limb))
- var/datum/limb/temp = organ
+ if (istype(organ, /obj/item/organ/limb))
+ var/obj/item/organ/limb/temp = organ
if(temp.take_damage(d, 0))
H.update_damage_overlays(0)
H.updatehealth()
@@ -146,7 +146,7 @@
"[src] examines \himself.", \
"You check yourself for injuries.")
- for(var/datum/limb/org in H.organs)
+ for(var/obj/item/organ/limb/org in H.organs)
var/status = ""
var/brutedamage = org.brute_dam
var/burndamage = org.burn_dam
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 5adb01ed182..372e6893efc 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -18,9 +18,9 @@
verbs += /mob/living/proc/mob_sleep
verbs += /mob/living/proc/lay_down
//initialise organs
- organs = newlist(/datum/limb/chest, /datum/limb/head, /datum/limb/l_arm,
- /datum/limb/r_arm, /datum/limb/r_leg, /datum/limb/l_leg)
- for(var/datum/limb/O in organs)
+ organs = newlist(/obj/item/organ/limb/chest, /obj/item/organ/limb/head, /obj/item/organ/limb/l_arm,
+ /obj/item/organ/limb/r_arm, /obj/item/organ/limb/r_leg, /obj/item/organ/limb/l_leg)
+ for(var/obj/item/organ/limb/O in organs)
O.owner = src
internal_organs += new /obj/item/organ/appendix
internal_organs += new /obj/item/organ/heart
@@ -186,7 +186,7 @@
Paralyse(10)
var/update = 0
- for(var/datum/limb/temp in organs)
+ for(var/obj/item/organ/limb/temp in organs)
switch(temp.name)
if("head")
update |= temp.take_damage(b_loss * 0.2, f_loss * 0.2)
@@ -207,7 +207,7 @@
if(stat == 2) return
show_message("\red The blob attacks you!")
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone))
apply_damage(rand(20,30), BRUTE, affecting, run_armor_check(affecting, "melee"))
return
@@ -216,7 +216,7 @@
if ((M.client && !( M.blinded )))
M.show_message("\red [src] has been hit by [O]", 1)
if (health > 0)
- var/datum/limb/affecting = get_organ(pick("chest", "chest", "chest", "head"))
+ var/obj/item/organ/limb/affecting = get_organ(pick("chest", "chest", "chest", "head"))
if(!affecting) return
if (istype(O, /obj/effect/immovablerod))
if(affecting.take_damage(101, 0))
@@ -240,7 +240,7 @@
src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])")
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone))
var/armor = run_armor_check(affecting, "melee")
apply_damage(damage, BRUTE, affecting, armor)
if(armor >= 2) return
@@ -265,7 +265,7 @@
var/dam_zone = pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg", "groin")
- var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone))
var/armor_block = run_armor_check(affecting, "melee")
apply_damage(damage, BRUTE, affecting, armor_block)
diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm
index d8440350bc6..8bd5f4783c2 100644
--- a/code/modules/mob/living/carbon/human/human_attackalien.dm
+++ b/code/modules/mob/living/carbon/human/human_attackalien.dm
@@ -30,7 +30,7 @@
playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1)
visible_message("\red [M] has lunged at [src]!")
return 0
- var/datum/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/armor_block = run_armor_check(affecting, "melee")
playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 028df8c757d..4125971cf02 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -80,7 +80,7 @@
return 0
- var/datum/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/armor_block = run_armor_check(affecting, "melee")
if(HULK in M.mutations)
@@ -111,7 +111,7 @@
if(w_uniform)
w_uniform.add_fingerprint(M)
- var/datum/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/randn = rand(1, 100)
if(randn <= 25)
apply_effect(2, WEAKEN, run_armor_check(affecting, "melee"))
diff --git a/code/modules/mob/living/carbon/human/human_attackpaw.dm b/code/modules/mob/living/carbon/human/human_attackpaw.dm
index 28695c54844..0f810bd0917 100644
--- a/code/modules/mob/living/carbon/human/human_attackpaw.dm
+++ b/code/modules/mob/living/carbon/human/human_attackpaw.dm
@@ -11,7 +11,7 @@
var/damage = rand(1, 3)
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone))
apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee"))
for(var/datum/disease/D in M.viruses)
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index 1ad89612dd2..eaae2e942b0 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -6,7 +6,7 @@
return
var/total_burn = 0
var/total_brute = 0
- for(var/datum/limb/O in organs) //hardcoded to streamline things a bit
+ for(var/obj/item/organ/limb/O in organs) //hardcoded to streamline things a bit
total_brute += O.brute_dam
total_burn += O.burn_dam
health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute
@@ -19,13 +19,13 @@
//These procs fetch a cumulative total damage from all organs
/mob/living/carbon/human/getBruteLoss()
var/amount = 0
- for(var/datum/limb/O in organs)
+ for(var/obj/item/organ/limb/O in organs)
amount += O.brute_dam
return amount
/mob/living/carbon/human/getFireLoss()
var/amount = 0
- for(var/datum/limb/O in organs)
+ for(var/obj/item/organ/limb/O in organs)
amount += O.burn_dam
return amount
@@ -58,16 +58,16 @@
//Returns a list of damaged organs
/mob/living/carbon/human/proc/get_damaged_organs(var/brute, var/burn)
- var/list/datum/limb/parts = list()
- for(var/datum/limb/O in organs)
+ var/list/obj/item/organ/limb/parts = list()
+ for(var/obj/item/organ/limb/O in organs)
if((brute && O.brute_dam) || (burn && O.burn_dam))
parts += O
return parts
//Returns a list of damageable organs
/mob/living/carbon/human/proc/get_damageable_organs()
- var/list/datum/limb/parts = list()
- for(var/datum/limb/O in organs)
+ var/list/obj/item/organ/limb/parts = list()
+ for(var/obj/item/organ/limb/O in organs)
if(O.brute_dam + O.burn_dam < O.max_damage)
parts += O
return parts
@@ -76,9 +76,9 @@
//It automatically updates damage overlays if necesary
//It automatically updates health status
/mob/living/carbon/human/heal_organ_damage(var/brute, var/burn)
- var/list/datum/limb/parts = get_damaged_organs(brute,burn)
+ var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn)
if(!parts.len) return
- var/datum/limb/picked = pick(parts)
+ var/obj/item/organ/limb/picked = pick(parts)
if(picked.heal_damage(brute,burn))
update_damage_overlays(0)
updatehealth()
@@ -87,9 +87,9 @@
//It automatically updates damage overlays if necesary
//It automatically updates health status
/mob/living/carbon/human/take_organ_damage(var/brute, var/burn)
- var/list/datum/limb/parts = get_damageable_organs()
+ var/list/obj/item/organ/limb/parts = get_damageable_organs()
if(!parts.len) return
- var/datum/limb/picked = pick(parts)
+ var/obj/item/organ/limb/picked = pick(parts)
if(picked.take_damage(brute,burn))
update_damage_overlays(0)
updatehealth()
@@ -97,11 +97,11 @@
//Heal MANY external organs, in random order
/mob/living/carbon/human/heal_overall_damage(var/brute, var/burn)
- var/list/datum/limb/parts = get_damaged_organs(brute,burn)
+ var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn)
var/update = 0
while(parts.len && (brute>0 || burn>0) )
- var/datum/limb/picked = pick(parts)
+ var/obj/item/organ/limb/picked = pick(parts)
var/brute_was = picked.brute_dam
var/burn_was = picked.burn_dam
@@ -118,10 +118,10 @@
// damage MANY external organs, in random order
/mob/living/carbon/human/take_overall_damage(var/brute, var/burn)
if(status_flags & GODMODE) return //godmode
- var/list/datum/limb/parts = get_damageable_organs()
+ var/list/obj/item/organ/limb/parts = get_damageable_organs()
var/update = 0
while(parts.len && (brute>0 || burn>0) )
- var/datum/limb/picked = pick(parts)
+ var/obj/item/organ/limb/picked = pick(parts)
var/brute_was = picked.brute_dam
var/burn_was = picked.burn_dam
@@ -140,8 +140,8 @@
////////////////////////////////////////////
/mob/living/carbon/human/proc/HealDamage(zone, brute, burn)
- var/datum/limb/E = get_organ(zone)
- if(istype(E, /datum/limb))
+ var/obj/item/organ/limb/E = get_organ(zone)
+ if(istype(E, /obj/item/organ/limb))
if (E.heal_damage(brute, burn))
update_damage_overlays(0)
else
@@ -151,7 +151,7 @@
/mob/living/carbon/human/proc/get_organ(var/zone)
if(!zone) zone = "chest"
- for(var/datum/limb/O in organs)
+ for(var/obj/item/organ/limb/O in organs)
if(O.name == zone)
return O
return null
@@ -164,7 +164,7 @@
if(blocked >= 2) return 0
- var/datum/limb/organ = null
+ var/obj/item/organ/limb/organ = null
if(isorgan(def_zone))
organ = def_zone
else
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 1c2ed337040..3615496212e 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -15,18 +15,18 @@ emp_act
if(def_zone)
if(isorgan(def_zone))
return checkarmor(def_zone, type)
- var/datum/limb/affecting = get_organ(ran_zone(def_zone))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(def_zone))
return checkarmor(affecting, type)
//If a specific bodypart is targetted, check how that bodypart is protected and return the value.
//If you don't specify a bodypart, it checks ALL your bodyparts for protection, and averages out the values
- for(var/datum/limb/organ in organs)
+ for(var/obj/item/organ/limb/organ in organs)
armorval += checkarmor(organ, type)
organnum++
return (armorval/max(organnum, 1))
-/mob/living/carbon/human/proc/checkarmor(var/datum/limb/def_zone, var/type)
+/mob/living/carbon/human/proc/checkarmor(var/obj/item/organ/limb/def_zone, var/type)
if(!type) return 0
var/protection = 0
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform)
@@ -120,7 +120,7 @@ emp_act
/mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
if(!I || !user) return 0
- var/datum/limb/affecting = get_organ(ran_zone(user.zone_sel.selecting))
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(user.zone_sel.selecting))
var/hit_area = parse_zone(affecting.name)
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index ac4ea3dc30d..725053058ea 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -50,7 +50,7 @@
return if_no_face
if( head && (head.flags_inv&HIDEFACE) )
return if_no_face //Likewise for hats
- var/datum/limb/O = get_organ("head")
+ var/obj/item/organ/limb/O = get_organ("head")
if( (status_flags&DISFIGURED) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible
return if_no_face
return real_name
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index ad010da7866..e2e7a04547c 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -161,13 +161,13 @@ Please contact me on #coderbus IRC. ~Carnie x
overlays_standing[DAMAGE_LAYER] = standing
overlays_lying[DAMAGE_LAYER] = lying
- for(var/datum/limb/O in organs)
+ for(var/obj/item/organ/limb/O in organs)
if(O.brutestate)
- standing.overlays += "[O.icon_name]_[O.brutestate]0" //we're adding icon_states of the base image as overlays
- lying.overlays += "[O.icon_name]2_[O.brutestate]0"
+ standing.overlays += "[O.icon_state]_[O.brutestate]0" //we're adding icon_states of the base image as overlays //made icon_name redundant - RR
+ lying.overlays += "[O.icon_state]2_[O.brutestate]0"
if(O.burnstate)
- standing.overlays += "[O.icon_name]_0[O.burnstate]"
- lying.overlays += "[O.icon_name]2_0[O.burnstate]"
+ standing.overlays += "[O.icon_state]_0[O.burnstate]"
+ lying.overlays += "[O.icon_state]2_0[O.burnstate]"
apply_overlay(DAMAGE_LAYER)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 287c7a87700..5d3990f69f8 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -38,7 +38,7 @@
var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part
var/divided_damage = (burn_amount)/(H.organs.len)
var/extradam = 0 //added to when organ is at max dam
- for(var/datum/limb/affecting in H.organs)
+ for(var/obj/item/organ/limb/affecting in H.organs)
if(!affecting) continue
if(affecting.take_damage(0, divided_damage+extradam)) //TODO: fix the extradam stuff. Or, ebtter yet...rewrite this entire proc ~Carn
H.update_damage_overlays(0)
@@ -216,7 +216,7 @@
var/t = shooter:zone_sel.selecting
if ((t in list( "eyes", "mouth" )))
t = "head"
- var/datum/limb/def_zone = ran_zone(t)
+ var/obj/item/organ/limb/def_zone = ran_zone(t)
return def_zone
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index 0a83d7aa5d1..3f1fdd5ccfb 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -135,7 +135,7 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/limb/affecting = H.get_organ(ran_zone(dam_zone))
+ var/obj/item/organ/limb/affecting = H.get_organ(ran_zone(dam_zone))
H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"))
return H
else if(isliving(target))
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 19d492c55aa..d978bbfed94 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -121,7 +121,7 @@ proc/isovermind(A)
return 0
proc/isorgan(A)
- if(istype(A, /datum/limb))
+ if(istype(A, /obj/item/organ/limb))
return 1
return 0
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 1ad24c77dc5..100bb072268 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -496,7 +496,7 @@
else
user << "You try to remove the light [fitting], but you burn your hand on it!"
- var/datum/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
+ var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
if(affecting.take_damage( 0, 5 )) // 5 burn damage
H.update_damage_overlays(0)
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 14095030c6a..66cf1927142 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -161,7 +161,7 @@
if(isliving(target) && isliving(user))
if(target == user)
- var/datum/limb/affecting = user.zone_sel.selecting
+ var/obj/item/organ/limb/affecting = user.zone_sel.selecting
if(affecting == "head")
var/obj/item/ammo_casing/AC = loaded[1]
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 6dff771e6ad..9dd630c9766 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -1628,7 +1628,7 @@ datum
if(!M.unacidable)
if(istype(M, /mob/living/carbon/human) && volume >= 3)
var/mob/living/carbon/human/H = M
- var/datum/limb/affecting = H.get_organ("head")
+ var/obj/item/organ/limb/affecting = H.get_organ("head")
if(affecting)
if(affecting.take_damage(4*toxpwr, 2*toxpwr))
H.update_damage_overlays(0)
diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
index bc123b35196..3216877d305 100644
--- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
@@ -43,7 +43,7 @@
force = 15 //Smashing bottles over someoen's head hurts.
- var/datum/limb/affecting = user.zone_sel.selecting //Find what the player is aiming at
+ var/obj/item/organ/limb/affecting = user.zone_sel.selecting //Find what the player is aiming at
var/armor_block = 0 //Get the target's armour values for normal attack damage.
var/armor_duration = 0 //The more force the bottle has, the longer the duration.
diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm
index a63655b5537..d3ce4ca8f8f 100644
--- a/code/modules/surgery/organs/organ.dm
+++ b/code/modules/surgery/organs/organ.dm
@@ -28,4 +28,120 @@
//Looking for brains?
-//Try code/modules/mob/living/carbon/brain/brain_item.dm
\ No newline at end of file
+//Try code/modules/mob/living/carbon/brain/brain_item.dm
+
+/obj/item/organ/limb
+ name = "limb"
+ var/mob/owner = null
+ var/body_part = null
+ var/brutestate = 0
+ var/burnstate = 0
+ var/brute_dam = 0
+ var/burn_dam = 0
+ var/max_damage = 0
+
+/obj/item/organ/limb/chest
+ name = "chest"
+ icon_state = "chest"
+ max_damage = 200
+ body_part = CHEST
+
+/obj/item/organ/limb/head
+ name = "head"
+ icon_state = "head"
+ max_damage = 200
+ body_part = HEAD
+
+/obj/item/organ/limb/l_arm
+ name = "l_arm"
+ icon_state = "l_arm"
+ max_damage = 75
+ body_part = ARM_LEFT
+
+/obj/item/organ/limb/l_leg
+ name = "l_leg"
+ icon_state = "l_leg"
+ max_damage = 75
+ body_part = LEG_LEFT
+
+/obj/item/organ/limb/r_arm
+ name = "r_arm"
+ icon_state = "r_arm"
+ max_damage = 75
+ body_part = ARM_RIGHT
+
+/obj/item/organ/limb/r_leg
+ name = "r_leg"
+ icon_state = "r_leg"
+ max_damage = 75
+ body_part = LEG_RIGHT
+
+
+//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all.
+//Damage will not exceed max_damage using this proc
+//Cannot apply negative damage
+/obj/item/organ/limb/proc/take_damage(brute, burn)
+ if(owner && (owner.status_flags & GODMODE)) return 0 //godmode
+ brute = max(brute,0)
+ burn = max(burn,0)
+
+ var/can_inflict = max_damage - (brute_dam + burn_dam)
+ if(!can_inflict) return 0
+
+ if((brute + burn) < can_inflict)
+ brute_dam += brute
+ burn_dam += burn
+ else
+ if(brute > 0)
+ if(burn > 0)
+ brute = round( (brute/(brute+burn)) * can_inflict, 1 )
+ burn = can_inflict - brute //gets whatever damage is left over
+ brute_dam += brute
+ burn_dam += burn
+ else
+ brute_dam += can_inflict
+ else
+ if(burn > 0)
+ burn_dam += can_inflict
+ else
+ return 0
+ return update_organ_icon()
+
+
+//Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all.
+//Damage cannot go below zero.
+//Cannot remove negative damage (i.e. apply damage)
+/obj/item/organ/limb/proc/heal_damage(brute, burn)
+ brute = max(brute, 0)
+ burn = max(burn, 0)
+ brute_dam = max(brute_dam - brute, 0)
+ burn_dam = max(burn_dam - burn, 0)
+ return update_organ_icon()
+
+
+//Returns total damage...kinda pointless really
+/obj/item/organ/limb/proc/get_damage()
+ return brute_dam + burn_dam
+
+
+//Updates an organ's brute/burn states for use by update_damage_overlays()
+//Returns 1 if we need to update overlays. 0 otherwise.
+/obj/item/organ/limb/proc/update_organ_icon()
+ var/tbrute = round( (brute_dam/max_damage)*3, 1 )
+ var/tburn = round( (burn_dam/max_damage)*3, 1 )
+ if((tbrute != brutestate) || (tburn != burnstate))
+ brutestate = tbrute
+ burnstate = tburn
+ return 1
+ return 0
+
+//Returns a display name for the organ
+/obj/item/organ/limb/proc/getDisplayName()
+ switch(name)
+ if("l_leg") return "left leg"
+ if("r_leg") return "right leg"
+ if("l_arm") return "left arm"
+ if("r_arm") return "right arm"
+ else return name
+
+
diff --git a/code/unused/_debug.dm b/code/unused/_debug.dm
index 7def5f45c90..dc02d5c4755 100644
--- a/code/unused/_debug.dm
+++ b/code/unused/_debug.dm
@@ -480,7 +480,7 @@ Doing this because FindTurfs() isn't even used
if(stat > 1) stat=0
disabilities = initial(disabilities)
sdisabilities = initial(sdisabilities)
- for(var/datum/limb/e in src)
+ for(var/obj/item/organ/limb/e in src)
e.brute_dam = 0.0
e.burn_dam = 0.0
e.bandaged = 0.0
diff --git a/code/datums/limbs.dm b/code/unused/limbs.dm
similarity index 95%
rename from code/datums/limbs.dm
rename to code/unused/limbs.dm
index ef73eec5ece..b9a95ba889e 100644
--- a/code/datums/limbs.dm
+++ b/code/unused/limbs.dm
@@ -1,140 +1,140 @@
-/datum/limb
- var/name = "limb"
- var/mob/owner = null
- var/icon_name = null
- var/body_part = null
- var/brutestate = 0
- var/burnstate = 0
- var/brute_dam = 0
- var/burn_dam = 0
- var/max_damage = 0
-
-/datum/limb/chest
- name = "chest"
- icon_name = "chest"
- max_damage = 200
- body_part = CHEST
-
-/datum/limb/head
- name = "head"
- icon_name = "head"
- max_damage = 200
- body_part = HEAD
-
-/datum/limb/l_arm
- name = "l_arm"
- icon_name = "l_arm"
- max_damage = 75
- body_part = ARM_LEFT
-
-/datum/limb/l_leg
- name = "l_leg"
- icon_name = "l_leg"
- max_damage = 75
- body_part = LEG_LEFT
-
-/datum/limb/r_arm
- name = "r_arm"
- icon_name = "r_arm"
- max_damage = 75
- body_part = ARM_RIGHT
-
-/datum/limb/r_leg
- name = "r_leg"
- icon_name = "r_leg"
- max_damage = 75
- body_part = LEG_RIGHT
-
-/*Leaving these here in case we want to use them later
-/datum/limb/l_foot
- name = "l foot"
- icon_name = "l_foot"
- body_part = FOOT_LEFT
-
-/datum/limb/r_foot
- name = "r foot"
- icon_name = "r_foot"
- body_part = FOOT_RIGHT
-
-/datum/limb/r_hand
- name = "r hand"
- icon_name = "r_hand"
- body_part = HAND_RIGHT
-
-/datum/limb/l_hand
- name = "l hand"
- icon_name = "l_hand"
- body_part = HAND_LEFT
-
-/datum/limb/groin
- name = "groin"
- icon_name = "groin"
- body_part = GROIN
-*/
-
-//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all.
-//Damage will not exceed max_damage using this proc
-//Cannot apply negative damage
-/datum/limb/proc/take_damage(brute, burn)
- if(owner && (owner.status_flags & GODMODE)) return 0 //godmode
- brute = max(brute,0)
- burn = max(burn,0)
-
- var/can_inflict = max_damage - (brute_dam + burn_dam)
- if(!can_inflict) return 0
-
- if((brute + burn) < can_inflict)
- brute_dam += brute
- burn_dam += burn
- else
- if(brute > 0)
- if(burn > 0)
- brute = round( (brute/(brute+burn)) * can_inflict, 1 )
- burn = can_inflict - brute //gets whatever damage is left over
- brute_dam += brute
- burn_dam += burn
- else
- brute_dam += can_inflict
- else
- if(burn > 0)
- burn_dam += can_inflict
- else
- return 0
- return update_icon()
-
-
-//Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all.
-//Damage cannot go below zero.
-//Cannot remove negative damage (i.e. apply damage)
-/datum/limb/proc/heal_damage(brute, burn)
- brute = max(brute, 0)
- burn = max(burn, 0)
- brute_dam = max(brute_dam - brute, 0)
- burn_dam = max(burn_dam - burn, 0)
- return update_icon()
-
-
-//Returns total damage...kinda pointless really
-/datum/limb/proc/get_damage()
- return brute_dam + burn_dam
-
-
-//Updates an organ's brute/burn states for use by update_damage_overlays()
-//Returns 1 if we need to update overlays. 0 otherwise.
-/datum/limb/proc/update_icon()
- var/tbrute = round( (brute_dam/max_damage)*3, 1 )
- var/tburn = round( (burn_dam/max_damage)*3, 1 )
- if((tbrute != brutestate) || (tburn != burnstate))
- brutestate = tbrute
- burnstate = tburn
- return 1
- return 0
-
-//Returns a display name for the organ
-/datum/limb/proc/getDisplayName()
- switch(name)
- if("l_leg") return "left leg"
- if("r_leg") return "right leg"
- if("l_arm") return "left arm"
- if("r_arm") return "right arm"
- else return name
+/datum/limb
+ var/name = "limb"
+ var/mob/owner = null
+ var/icon_name = null
+ var/body_part = null
+ var/brutestate = 0
+ var/burnstate = 0
+ var/brute_dam = 0
+ var/burn_dam = 0
+ var/max_damage = 0
+
+/datum/limb/chest
+ name = "chest"
+ icon_name = "chest"
+ max_damage = 200
+ body_part = CHEST
+
+/datum/limb/head
+ name = "head"
+ icon_name = "head"
+ max_damage = 200
+ body_part = HEAD
+
+/datum/limb/l_arm
+ name = "l_arm"
+ icon_name = "l_arm"
+ max_damage = 75
+ body_part = ARM_LEFT
+
+/datum/limb/l_leg
+ name = "l_leg"
+ icon_name = "l_leg"
+ max_damage = 75
+ body_part = LEG_LEFT
+
+/datum/limb/r_arm
+ name = "r_arm"
+ icon_name = "r_arm"
+ max_damage = 75
+ body_part = ARM_RIGHT
+
+/datum/limb/r_leg
+ name = "r_leg"
+ icon_name = "r_leg"
+ max_damage = 75
+ body_part = LEG_RIGHT
+
+/*Leaving these here in case we want to use them later
+/datum/limb/l_foot
+ name = "l foot"
+ icon_name = "l_foot"
+ body_part = FOOT_LEFT
+
+/datum/limb/r_foot
+ name = "r foot"
+ icon_name = "r_foot"
+ body_part = FOOT_RIGHT
+
+/datum/limb/r_hand
+ name = "r hand"
+ icon_name = "r_hand"
+ body_part = HAND_RIGHT
+
+/datum/limb/l_hand
+ name = "l hand"
+ icon_name = "l_hand"
+ body_part = HAND_LEFT
+
+/datum/limb/groin
+ name = "groin"
+ icon_name = "groin"
+ body_part = GROIN
+*/
+
+//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all.
+//Damage will not exceed max_damage using this proc
+//Cannot apply negative damage
+/datum/limb/proc/take_damage(brute, burn)
+ if(owner && (owner.status_flags & GODMODE)) return 0 //godmode
+ brute = max(brute,0)
+ burn = max(burn,0)
+
+ var/can_inflict = max_damage - (brute_dam + burn_dam)
+ if(!can_inflict) return 0
+
+ if((brute + burn) < can_inflict)
+ brute_dam += brute
+ burn_dam += burn
+ else
+ if(brute > 0)
+ if(burn > 0)
+ brute = round( (brute/(brute+burn)) * can_inflict, 1 )
+ burn = can_inflict - brute //gets whatever damage is left over
+ brute_dam += brute
+ burn_dam += burn
+ else
+ brute_dam += can_inflict
+ else
+ if(burn > 0)
+ burn_dam += can_inflict
+ else
+ return 0
+ return update_icon()
+
+
+//Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all.
+//Damage cannot go below zero.
+//Cannot remove negative damage (i.e. apply damage)
+/datum/limb/proc/heal_damage(brute, burn)
+ brute = max(brute, 0)
+ burn = max(burn, 0)
+ brute_dam = max(brute_dam - brute, 0)
+ burn_dam = max(burn_dam - burn, 0)
+ return update_icon()
+
+
+//Returns total damage...kinda pointless really
+/datum/limb/proc/get_damage()
+ return brute_dam + burn_dam
+
+
+//Updates an organ's brute/burn states for use by update_damage_overlays()
+//Returns 1 if we need to update overlays. 0 otherwise.
+/datum/limb/proc/update_icon()
+ var/tbrute = round( (brute_dam/max_damage)*3, 1 )
+ var/tburn = round( (burn_dam/max_damage)*3, 1 )
+ if((tbrute != brutestate) || (tburn != burnstate))
+ brutestate = tbrute
+ burnstate = tburn
+ return 1
+ return 0
+
+//Returns a display name for the organ
+/datum/limb/proc/getDisplayName()
+ switch(name)
+ if("l_leg") return "left leg"
+ if("r_leg") return "right leg"
+ if("l_arm") return "left arm"
+ if("r_arm") return "right arm"
+ else return name
diff --git a/code/unused/pain.dm b/code/unused/pain.dm
index 3505103fc5f..09ac590ee1f 100644
--- a/code/unused/pain.dm
+++ b/code/unused/pain.dm
@@ -43,9 +43,9 @@ mob/living/carbon/human/proc/handle_pain()
if(reagents.has_reagent("oxycodone"))
return
var/maxdam = 0
- var/datum/limb/damaged_organ = null
+ var/obj/item/organ/limb/damaged_organ = null
for(var/name in organs)
- var/datum/limb/E = organs[name]
+ var/obj/item/organ/limb/E = organs[name]
var/dam = E.get_damage()
// make the choice of the organ depend on damage,
// but also sometimes use one of the less damaged ones
diff --git a/code/unused/traps.dm b/code/unused/traps.dm
index da08b42372e..b96f8b770b2 100644
--- a/code/unused/traps.dm
+++ b/code/unused/traps.dm
@@ -193,7 +193,7 @@
var/dmg = rand(rock_min_dmg,rock_max_dmg)
if(istype(victim, /mob/living/carbon/human))
var/mob/living/carbon/human/H = victim
- var/datum/limb/affecting = H.organs["head"]
+ var/obj/item/organ/limb/affecting = H.organs["head"]
affecting.take_damage(dmg)
H.updatehealth()
else
diff --git a/tgstation.dme b/tgstation.dme
index 0392e2bc119..1a55752700f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -93,7 +93,6 @@
#include "code\datums\datacore.dm"
#include "code\datums\datumvars.dm"
#include "code\datums\disease.dm"
-#include "code\datums\limbs.dm"
#include "code\datums\mind.dm"
#include "code\datums\mixed.dm"
#include "code\datums\modules.dm"