diff --git a/code/WorkInProgress/surgery/appendectomy.dm b/code/WorkInProgress/surgery/appendectomy.dm
index 8987b09b215..906936184e3 100644
--- a/code/WorkInProgress/surgery/appendectomy.dm
+++ b/code/WorkInProgress/surgery/appendectomy.dm
@@ -1,20 +1,26 @@
/datum/surgery/appendectomy
name = "appendectomy"
- steps = list(/datum/surgery_step/open, /datum/surgery_step/close)
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/extract_appendix, /datum/surgery_step/close)
location = "groin"
-/datum/surgery_step/open
- implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/kitchenknife = 65, /obj/item/weapon/shard = 45)
- time = 12
+//extract appendix
+/datum/surgery_step/extract_appendix
+ implements = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/crowbar = 55)
+ time = 64
+ var/obj/item/organ/appendix/A = null
-/datum/surgery_step/open/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to cut open [target].")
+/datum/surgery_step/extract_appendix/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ A = locate(/obj/item/organ/appendix) in target.internal_organs
+ if(A)
+ user.visible_message("[user] begins to extract [target]'s appendix.")
+ else
+ user.visible_message("[user] looks for an appendix in [target].")
-
-/datum/surgery_step/close
- implements = list(/obj/item/weapon/cautery = 100, /obj/item/weapon/weldingtool = 70, /obj/item/weapon/lighter = 45, /obj/item/weapon/match = 20)
- time = 8
-
-/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to mend [target].")
\ No newline at end of file
+/datum/surgery_step/extract_appendix/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ if(A)
+ user.visible_message("[user] successfully removes [target]'s appendix!")
+ A.loc = get_turf(target)
+ target.internal_organs -= A
+ else
+ user.visible_message("[user] can't find an appendix in [target]!")
\ No newline at end of file
diff --git a/code/WorkInProgress/surgery/generic_steps.dm b/code/WorkInProgress/surgery/generic_steps.dm
new file mode 100644
index 00000000000..0be543975a1
--- /dev/null
+++ b/code/WorkInProgress/surgery/generic_steps.dm
@@ -0,0 +1,34 @@
+//make incision
+/datum/surgery_step/incise
+ implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/kitchenknife = 65, /obj/item/weapon/shard = 45)
+ time = 24
+
+/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] begins to make an incision in [target]'s [target_zone].")
+
+
+//clamp bleeders
+/datum/surgery_step/clamp_bleeders
+ implements = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/wirecutters = 60, /obj/item/weapon/cable_coil = 15)
+ time = 48
+
+/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] begins to clamp bleeders in [target]'s [target_zone].")
+
+
+//retract skin
+/datum/surgery_step/retract_skin
+ implements = list(/obj/item/weapon/retractor = 100, /obj/item/weapon/screwdriver = 45, /obj/item/weapon/wirecutters = 35)
+ time = 32
+
+/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] begins to retract the skin in [target]'s [target_zone].")
+
+
+//close incision
+/datum/surgery_step/close
+ implements = list(/obj/item/weapon/cautery = 100, /obj/item/weapon/weldingtool = 70, /obj/item/weapon/lighter = 45, /obj/item/weapon/match = 20)
+ time = 32
+
+/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] begins to mend the incision in [target]'s [target_zone].")
\ No newline at end of file
diff --git a/code/WorkInProgress/surgery/human.dm b/code/WorkInProgress/surgery/human.dm
index d781b064c5e..8ea01991b86 100644
--- a/code/WorkInProgress/surgery/human.dm
+++ b/code/WorkInProgress/surgery/human.dm
@@ -1,8 +1,13 @@
//WORK IN PROGRESS
-/mob/living/carbon/human
+/mob/living/carbon
var/list/surgeries = list()
-// var/list/organs = list()
+ var/list/internal_organs = list()
+
+/mob/living/carbon/New()
+ ..()
+ internal_organs += new /obj/item/organ/appendix
+ internal_organs += new /obj/item/organ/heart
/mob/living/carbon/human/attackby(obj/item/I, mob/user)
if(lying) //if they're prone
diff --git a/code/WorkInProgress/surgery/organs/organ.dm b/code/WorkInProgress/surgery/organs/organ.dm
new file mode 100644
index 00000000000..965ae0e46d3
--- /dev/null
+++ b/code/WorkInProgress/surgery/organs/organ.dm
@@ -0,0 +1,27 @@
+/obj/item/organ
+ name = "organ"
+ icon = 'icons/obj/surgery.dmi'
+
+
+/obj/item/organ/appendix
+ name = "appendix"
+ icon_state = "appendix"
+ var/inflamed = 0
+
+/obj/item/organ/appendix/update_icon()
+ if(inflamed)
+ icon_state = "appendixinflamed"
+ else
+ icon_state = "appendix"
+
+
+/obj/item/organ/heart
+ name = "heart"
+ icon_state = "heart-on"
+ var/beating = 1
+
+/obj/item/organ/heart/update_icon()
+ if(beating)
+ icon_state = "heart-on"
+ else
+ icon_state = "heart-off"
\ No newline at end of file
diff --git a/code/WorkInProgress/surgery/surgery.dm b/code/WorkInProgress/surgery/surgery.dm
index 0998386f5ca..2f2710d9576 100644
--- a/code/WorkInProgress/surgery/surgery.dm
+++ b/code/WorkInProgress/surgery/surgery.dm
@@ -3,9 +3,12 @@
var/status = 1
var/list/steps = list()
var/location = "chest"
+ var/step_in_progress = 0
/datum/surgery/proc/next_step(mob/user, mob/living/carbon/target)
+ if(step_in_progress) return
+
var/procedure = steps[status]
var/datum/surgery_step/S = new procedure
if(S)
@@ -15,5 +18,5 @@
/datum/surgery/proc/complete(mob/living/carbon/human/target)
- target.surgeries.Cut(src)
+ target.surgeries -= src
src = null
\ No newline at end of file
diff --git a/code/WorkInProgress/surgery/surgery_step.dm b/code/WorkInProgress/surgery/surgery_step.dm
index 321b017b8df..50be1ce9b08 100644
--- a/code/WorkInProgress/surgery/surgery_step.dm
+++ b/code/WorkInProgress/surgery/surgery_step.dm
@@ -12,6 +12,8 @@
/datum/surgery_step/proc/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ surgery.step_in_progress = 1
+
preop(user, target, target_zone, tool)
if(do_after(user, time))
var/prob_chance = implements[tool.type]
@@ -23,6 +25,8 @@
else
failure(user, target, target_zone, tool, surgery)
+ surgery.step_in_progress = 0
+
/datum/surgery_step/proc/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] begins to perform surgery on [target].")
diff --git a/code/WorkInProgress/virus2/base.dm b/code/WorkInProgress/virus2/base.dm
index 0f622bfaaa7..0b77bc4a662 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/organ/external/org = mob.organs["r_arm"]
+ var/datum/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/datums/organs.dm b/code/datums/organs.dm
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/code/datums/organs/organ.dm b/code/datums/organs/organ.dm
deleted file mode 100644
index 81b45f51287..00000000000
--- a/code/datums/organs/organ.dm
+++ /dev/null
@@ -1,14 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
-
-/datum/organ
- var/name = "organ"
- var/mob/owner = null
-
-///datum/organ/proc/process()
-// return 0
-
-///datum/organ/proc/receive_chem(chemical as obj)
-// return 0
-
-
-
diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm
deleted file mode 100644
index e44b872cee0..00000000000
--- a/code/datums/organs/organ_external.dm
+++ /dev/null
@@ -1,142 +0,0 @@
-/datum/organ/external
- name = "external"
- 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
-// var/bandaged = 0
-// var/wound_size = 0
-// var/max_size = 0
-
-/datum/organ/external/chest
- name = "chest"
- icon_name = "chest"
- max_damage = 150
- body_part = UPPER_TORSO
-
-/datum/organ/external/head
- name = "head"
- icon_name = "head"
- max_damage = 125
- body_part = HEAD
-
-/datum/organ/external/l_arm
- name = "l_arm"
- icon_name = "l_arm"
- max_damage = 75
- body_part = ARM_LEFT
-
-/datum/organ/external/l_leg
- name = "l_leg"
- icon_name = "l_leg"
- max_damage = 75
- body_part = LEG_LEFT
-
-/datum/organ/external/r_arm
- name = "r_arm"
- icon_name = "r_arm"
- max_damage = 75
- body_part = ARM_RIGHT
-
-/datum/organ/external/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/organ/external/l_foot
- name = "l foot"
- icon_name = "l_foot"
- body_part = FOOT_LEFT
-
-/datum/organ/external/r_foot
- name = "r foot"
- icon_name = "r_foot"
- body_part = FOOT_RIGHT
-
-/datum/organ/external/r_hand
- name = "r hand"
- icon_name = "r_hand"
- body_part = HAND_RIGHT
-
-/datum/organ/external/l_hand
- name = "l hand"
- icon_name = "l_hand"
- body_part = HAND_LEFT
-
-/datum/organ/external/groin
- name = "groin"
- icon_name = "groin"
- body_part = LOWER_TORSO
-*/
-
-//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/organ/external/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/organ/external/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/organ/external/proc/get_damage()
- return brute_dam + burn_dam
-
-
-//Updates an organ's brute/burn states for use by updateDamageIcon()
-//Returns 1 if we need to update overlays. 0 otherwise.
-/datum/organ/external/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/organ/external/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/datums/organs/organ_internal.dm b/code/datums/organs/organ_internal.dm
deleted file mode 100644
index 5d7fd2547bd..00000000000
--- a/code/datums/organs/organ_internal.dm
+++ /dev/null
@@ -1,61 +0,0 @@
-/datum/organ/internal
- name = "internal"
- var/damage = 0
- var/max_damage = 100
-
-/datum/organ/internal/skeleton
- name = "spooky scary skeleton"
- max_damage = 200
-
-/datum/organ/internal/skin
- name = "skin"
- max_damage = 100
-
-/datum/organ/internal/blood_vessels
- name = "blood vessels"
- var/heart = null
- var/lungs = null
- var/kidneys = null
-
-/datum/organ/internal/brain
- name = "brain"
- var/head = null
-
-/datum/organ/internal/excretory
- name = "excretory"
- var/excretory = 7.0
- var/blood_vessels = null
-
-/datum/organ/internal/heart
- name = "heart"
-
-/datum/organ/internal/immune_system
- name = "immune system"
- var/blood_vessels = null
- var/isys = null
-
-/datum/organ/internal/intestines
- name = "intestines"
- var/intestines = 3.0
- var/blood_vessels = null
-
-/datum/organ/internal/liver
- name = "liver"
- var/intestines = null
- var/blood_vessels = null
-
-/datum/organ/internal/lungs
- name = "lungs"
- var/lungs = 3.0
- var/throat = null
- var/blood_vessels = null
-
-/datum/organ/internal/stomach
- name = "stomach"
- var/intestines = null
-
-/datum/organ/internal/throat
- name = "throat"
- var/lungs = null
- var/stomach = null
-
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 6e0492df825..07305f260c8 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/organ/external/affecting = user.get_organ(organ)
+ var/datum/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.UpdateDamageIcon()
return
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 33950434e76..0a1a3377dbd 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -264,7 +264,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/organ/external/affecting in corpse_to_raise.organs)
+ for(var/datum/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 c18a751b161..da40b83308f 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -643,7 +643,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/organ/external/affecting = H.get_organ("head")
+ var/datum/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 f75bd01ac49..d57a0ef87eb 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/organ/external/temp = H.get_organ(pick("chest", "chest", "chest", "head"))
+ var/datum/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 21ede772127..2cb335f4379 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -647,7 +647,7 @@
"\red You stab yourself in the eyes with [src]!" \
)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(7))
M:UpdateDamageIcon()
else
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index e31e610281a..5c31faa0841 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -917,7 +917,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/list/damaged = H.get_damaged_organs(1,1)
user.show_message("\blue Localized Damage, Brute/Burn:",1)
if(length(damaged)>0)
- for(var/datum/organ/external/org in damaged)
+ for(var/datum/limb/org in damaged)
user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.getDisplayName()),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
else
user.show_message("\blue \t Limbs are OK.",1)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 9b89066b5c9..2c20189494d 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -108,7 +108,7 @@ MASS SPECTROMETER
var/list/damaged = H.get_damaged_organs(1,1)
user.show_message("\blue Localized Damage, Brute/Burn:",1)
if(length(damaged)>0)
- for(var/datum/organ/external/org in damaged)
+ for(var/datum/limb/org in damaged)
user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.getDisplayName()),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
else
user.show_message("\blue \t Limbs are OK.",1)
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index c1bfa7db94f..72eb3317396 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/organ/external/affecting = H.get_organ("chest")
+ var/datum/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/organ/external) || affecting:burn_dam <= 0)
+ if(!istype(affecting, /datum/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 ca36dbdcde3..9082c570120 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -284,7 +284,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.shoes)
- var/datum/organ/external/affecting = H.get_organ(pick("l_leg", "r_leg"))
+ var/datum/limb/affecting = H.get_organ(pick("l_leg", "r_leg"))
H.Weaken(3)
if(affecting.take_damage(5, 0))
H.UpdateDamageIcon()
diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm
index 522dc1d6d4c..8789a369c5a 100644
--- a/code/game/objects/items/weapons/hydroponics.dm
+++ b/code/game/objects/items/weapons/hydroponics.dm
@@ -36,7 +36,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/organ/external/affecting = user.get_organ(organ)
+ var/datum/limb/affecting = user.get_organ(organ)
if(affecting.take_damage(0,force))
user.UpdateDamageIcon()
else
@@ -62,7 +62,7 @@
if(!user.gloves)
if(istype(user, /mob/living/carbon/human))
var/organ = ((user.hand ? "l_":"r_") + "arm")
- var/datum/organ/external/affecting = user.get_organ(organ)
+ var/datum/limb/affecting = user.get_organ(organ)
if(affecting.take_damage(0,force))
user.UpdateDamageIcon()
else
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index 342fa2fd355..9b254b40477 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/organ/external/affecting in H.organs)
+ for(var/datum/limb/affecting in H.organs)
if(affecting.heal_damage(heal_amt, heal_amt))
H.UpdateDamageIcon()
return
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 50a68dc9fd7..ab13713ce88 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -78,7 +78,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
M.updatehealth()
@@ -110,7 +110,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("chest")
+ var/datum/limb/affecting = M:get_organ("chest")
if(affecting.take_damage(30))
M:UpdateDamageIcon()
else
@@ -215,7 +215,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
M.updatehealth()
@@ -241,7 +241,7 @@
if(M == user && prob(25))
user << "\red You nick an artery!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(75))
M:UpdateDamageIcon()
else
@@ -271,7 +271,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("chest")
+ var/datum/limb/affecting = M:get_organ("chest")
if(affecting.take_damage(30))
M:UpdateDamageIcon()
else
@@ -369,7 +369,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
M.updatehealth()
@@ -508,14 +508,14 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
else
M.take_organ_damage(15)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
affecting.take_damage(7)
else
M.take_organ_damage(7)
@@ -554,14 +554,14 @@
if(M == user && prob(25))
user << "\red You nick an artery!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(75))
M:UpdateDamageIcon()
else
M.take_organ_damage(75)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
affecting.take_damage(7)
else
M.take_organ_damage(7)
@@ -610,7 +610,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
else
@@ -638,7 +638,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("chest")
+ var/datum/limb/affecting = M:get_organ("chest")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
else
@@ -724,7 +724,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
if(affecting.take_damage(40))
M:UpdateDamageIcon()
M.updatehealth()
@@ -732,7 +732,7 @@
M.take_organ_damage(40)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("head")
+ var/datum/limb/affecting = M:get_organ("head")
affecting.take_damage(7)
else
M.take_organ_damage(7)
@@ -808,7 +808,7 @@
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:get_organ("chest")
+ var/datum/limb/affecting = M:get_organ("chest")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
else
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 0b2f9cbe4df..dad8c98f9c7 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1755,7 +1755,7 @@
if(!security)
//strip their stuff before they teleport into a cell :downs:
for(var/obj/item/weapon/W in H)
- if(istype(W, /datum/organ/external))
+ if(istype(W, /datum/limb))
continue
//don't strip organs
H.u_equip(W)
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 9a0f52dfd5a..644cf9de0b2 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -40,7 +40,7 @@
proc/triggered(mob/target as mob, var/type = "feet")
if(!armed)
return
- var/datum/organ/external/affecting = null
+ var/datum/limb/affecting = null
if(ishuman(target))
var/mob/living/carbon/human/H = target
switch(type)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index f494013764e..fc719ab75c3 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/organ/external))
- var/datum/organ/external/temp = organ
+ if (istype(organ, /datum/limb))
+ var/datum/limb/temp = organ
if(temp.take_damage(d, 0))
H.UpdateDamageIcon()
H.updatehealth()
@@ -144,7 +144,7 @@
"[src] examines \himself.", \
"You check yourself for injuries.")
- for(var/datum/organ/external/org in H.organs)
+ for(var/datum/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 c3e0c4c3571..d4ac08b1432 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -21,10 +21,9 @@
dna = new /datum/dna(null)
//initialise organs
- organs = newlist(/datum/organ/external/chest, /datum/organ/external/head, /datum/organ/external/l_arm,
- /datum/organ/external/r_arm, /datum/organ/external/r_leg, /datum/organ/external/l_leg,
- /datum/organ/internal/skeleton, /datum/organ/internal/skin)
- for(var/datum/organ/external/O in 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)
O.owner = src
..()
@@ -198,7 +197,7 @@
Paralyse(10)
var/update = 0
- for(var/datum/organ/external/temp in organs)
+ for(var/datum/limb/temp in organs)
switch(temp.name)
if("head")
update |= temp.take_damage(b_loss * 0.2, f_loss * 0.2)
@@ -219,7 +218,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/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
apply_damage(rand(30,40), BRUTE, affecting, run_armor_check(affecting, "melee"))
return
@@ -228,7 +227,7 @@
if ((M.client && !( M.blinded )))
M.show_message("\red [src] has been hit by [O]", 1)
if (health > 0)
- var/datum/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head"))
+ var/datum/limb/affecting = get_organ(pick("chest", "chest", "chest", "head"))
if(!affecting) return
if (istype(O, /obj/effect/immovablerod))
if(affecting.take_damage(101, 0))
@@ -242,7 +241,7 @@
/mob/living/carbon/human/hand_p(mob/M as mob)
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
var/armor = run_armor_check(affecting, "melee")
apply_damage(rand(1,2), BRUTE, affecting, armor)
if(armor >= 2) return
@@ -269,7 +268,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/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ var/datum/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
@@ -294,7 +293,7 @@
var/dam_zone = pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg", "groin")
- var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
var/armor_block = run_armor_check(affecting, "melee")
apply_damage(damage, BRUTE, affecting, armor_block)
@@ -437,7 +436,7 @@
//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable
/mob/living/carbon/human/proc/get_face_name()
- var/datum/organ/external/O = get_organ("head")
+ var/datum/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 "Unknown"
return real_name
diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm
index e42961d0f93..ac9be4fc29b 100644
--- a/code/modules/mob/living/carbon/human/human_attackalien.dm
+++ b/code/modules/mob/living/carbon/human/human_attackalien.dm
@@ -29,7 +29,7 @@
playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1)
visible_message("\red [M] has lunged at [src]!")
return 0
- var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
+ var/datum/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 8b41ed3864a..942086d24a3 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -35,7 +35,7 @@
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
visible_message("[M] has attempted to punch [src]!")
return 0
- var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
+ var/datum/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/armor_block = run_armor_check(affecting, "melee")
if(HULK in M.mutations) damage += 5
@@ -123,7 +123,7 @@
return 0
- var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
+ var/datum/limb/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/armor_block = run_armor_check(affecting, "melee")
if(HULK in M.mutations) damage += 5
@@ -151,7 +151,7 @@
if(w_uniform)
w_uniform.add_fingerprint(M)
- var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
+ var/datum/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 8d01ca3e8f2..28695c54844 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/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ var/datum/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 8d8630c142e..32b6131f6b1 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/organ/external/O in organs) //hardcoded to streamline things a bit
+ for(var/datum/limb/O in organs) //hardcoded to streamline things a bit
total_brute += O.brute_dam
total_burn += O.burn_dam
health = 100 - 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/organ/external/O in organs)
+ for(var/datum/limb/O in organs)
amount += O.brute_dam
return amount
/mob/living/carbon/human/getFireLoss()
var/amount = 0
- for(var/datum/organ/external/O in organs)
+ for(var/datum/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/organ/external/parts = list()
- for(var/datum/organ/external/O in organs)
+ var/list/datum/limb/parts = list()
+ for(var/datum/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/organ/external/parts = list()
- for(var/datum/organ/external/O in organs)
+ var/list/datum/limb/parts = list()
+ for(var/datum/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/organ/external/parts = get_damaged_organs(brute,burn)
+ var/list/datum/limb/parts = get_damaged_organs(brute,burn)
if(!parts.len) return
- var/datum/organ/external/picked = pick(parts)
+ var/datum/limb/picked = pick(parts)
if(picked.heal_damage(brute,burn))
UpdateDamageIcon()
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/organ/external/parts = get_damageable_organs()
+ var/list/datum/limb/parts = get_damageable_organs()
if(!parts.len) return
- var/datum/organ/external/picked = pick(parts)
+ var/datum/limb/picked = pick(parts)
if(picked.take_damage(brute,burn))
UpdateDamageIcon()
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/organ/external/parts = get_damaged_organs(brute,burn)
+ var/list/datum/limb/parts = get_damaged_organs(brute,burn)
var/update = 0
while(parts.len && (brute>0 || burn>0) )
- var/datum/organ/external/picked = pick(parts)
+ var/datum/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/organ/external/parts = get_damageable_organs()
+ var/list/datum/limb/parts = get_damageable_organs()
var/update = 0
while(parts.len && (brute>0 || burn>0) )
- var/datum/organ/external/picked = pick(parts)
+ var/datum/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/organ/external/E = get_organ(zone)
- if(istype(E, /datum/organ/external))
+ var/datum/limb/E = get_organ(zone)
+ if(istype(E, /datum/limb))
if (E.heal_damage(brute, burn))
UpdateDamageIcon()
else
@@ -151,7 +151,7 @@
/mob/living/carbon/human/proc/get_organ(var/zone)
if(!zone) zone = "chest"
- for(var/datum/organ/external/O in organs)
+ for(var/datum/limb/O in organs)
if(O.name == zone)
return O
return null
@@ -164,7 +164,7 @@
if(blocked >= 2) return 0
- var/datum/organ/external/organ = null
+ var/datum/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 f33eabe1fe5..879bf5e2682 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -47,18 +47,18 @@ emp_act
if(def_zone)
if(isorgan(def_zone))
return checkarmor(def_zone, type)
- var/datum/organ/external/affecting = get_organ(ran_zone(def_zone))
+ var/datum/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/organ/external/organ in organs)
+ for(var/datum/limb/organ in organs)
armorval += checkarmor(organ, type)
organnum++
return (armorval/max(organnum, 1))
-/mob/living/carbon/human/proc/checkarmor(var/datum/organ/external/def_zone, var/type)
+/mob/living/carbon/human/proc/checkarmor(var/datum/limb/def_zone, var/type)
if(!type) return 0
var/protection = 0
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform)
@@ -110,7 +110,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/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting))
+ var/datum/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/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 01d3a36418e..32f30539d87 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -166,7 +166,7 @@ Please contact me on #coderbus IRC. ~Carn x
/mob/living/carbon/human/UpdateDamageIcon(var/update_icons=1)
var/image/standing = image("icon" = 'icons/mob/dam_human.dmi', "icon_state" = "blank")
var/image/lying = image("icon" = 'icons/mob/dam_human.dmi', "icon_state" = "blank2")
- for(var/datum/organ/external/O in organs)
+ for(var/datum/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"
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 9035b1a5fc0..63d4478a050 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -30,7 +30,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/organ/external/affecting in H.organs)
+ for(var/datum/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.UpdateDamageIcon()
@@ -214,7 +214,7 @@
var/t = shooter:zone_sel.selecting
if ((t in list( "eyes", "mouth" )))
t = "head"
- var/datum/organ/external/def_zone = ran_zone(t)
+ var/datum/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 c9f52de2be2..32e8b9cb04b 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -132,7 +132,7 @@
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/organ/external/affecting = H.get_organ(ran_zone(dam_zone))
+ var/datum/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_mob))
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 931c88587fd..0a3c38bf5a9 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -492,7 +492,7 @@
if(ishuman(parrot_interest))
var/mob/living/carbon/human/H = parrot_interest
- var/datum/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone)))
+ var/datum/limb/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone)))
H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"))
emote(pick("pecks [H]'s [affecting]", "cuts [H]'s [affecting] with its talons"))
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index cd2163355ee..77e1ac0442c 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -116,7 +116,7 @@ proc/isobserver(A)
return 0
proc/isorgan(A)
- if(istype(A, /datum/organ/external))
+ if(istype(A, /datum/limb))
return 1
return 0
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 8d351e2326e..7ec18b2795b 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -494,7 +494,7 @@
else
user << "You try to remove the light [fitting], but you burn your hand on it!"
- var/datum/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
+ var/datum/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
if(affecting.take_damage( 0, 5 )) // 5 burn damage
H.UpdateDamageIcon()
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 9b9ea0f9b61..b60d9e692a9 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -147,7 +147,7 @@
if(isliving(target) && isliving(user))
if(target == user)
- var/datum/organ/external/affecting = user.zone_sel.selecting
+ var/datum/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 771f8e6d66d..ae1eb426638 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -712,7 +712,7 @@ datum
if(!M.unacidable)
if(prob(15) && istype(M, /mob/living/carbon/human) && volume >= 30)
var/mob/living/carbon/human/H = M
- var/datum/organ/external/affecting = H.get_organ("head")
+ var/datum/limb/affecting = H.get_organ("head")
if(affecting)
if(affecting.take_damage(10, 5))
H.UpdateDamageIcon()
@@ -776,7 +776,7 @@ datum
return
if(!H.unacidable)
- var/datum/organ/external/affecting = H.get_organ("head")
+ var/datum/limb/affecting = H.get_organ("head")
if(affecting.take_damage(rand(10,20), rand(0,10)))
H.UpdateDamageIcon()
if(prob(25))
@@ -804,7 +804,7 @@ datum
if(!M.unacidable)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- var/datum/organ/external/affecting = H.get_organ("head")
+ var/datum/limb/affecting = H.get_organ("head")
if(affecting.take_damage(rand(10,20), rand(0,10)))
H.UpdateDamageIcon()
if(prob(25))
diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
index f44fb2090ea..1d8644b3282 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/organ/external/affecting = user.zone_sel.selecting //Find what the player is aiming at
+ var/datum/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/unused/_debug.dm b/code/unused/_debug.dm
index f3d691ba80d..9183a1f9737 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/organ/external/e in src)
+ for(var/datum/limb/e in src)
e.brute_dam = 0.0
e.burn_dam = 0.0
e.bandaged = 0.0
diff --git a/code/unused/pain.dm b/code/unused/pain.dm
index eedf05aa60a..3505103fc5f 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/organ/external/damaged_organ = null
+ var/datum/limb/damaged_organ = null
for(var/name in organs)
- var/datum/organ/external/E = organs[name]
+ var/datum/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 94681d1929d..da08b42372e 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/organ/external/affecting = H.organs["head"]
+ var/datum/limb/affecting = H.organs["head"]
affecting.take_damage(dmg)
H.updatehealth()
else
diff --git a/tgstation.dme b/tgstation.dme
index 1f2e8338a36..f339f8602ef 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -104,10 +104,10 @@
#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"
-#include "code\datums\organs.dm"
#include "code\datums\recipe.dm"
#include "code\datums\spell.dm"
#include "code\datums\sun.dm"
@@ -154,9 +154,6 @@
#include "code\datums\helper_datums\global_iterator.dm"
#include "code\datums\helper_datums\teleport.dm"
#include "code\datums\helper_datums\topic_input.dm"
-#include "code\datums\organs\organ.dm"
-#include "code\datums\organs\organ_external.dm"
-#include "code\datums\organs\organ_internal.dm"
#include "code\datums\spells\area_teleport.dm"
#include "code\datums\spells\conjure.dm"
#include "code\datums\spells\construct_spells.dm"