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"