[MIRROR] Replaced body zone magic strings with defines (#6004)
* Replaced body zone magic strings with defines * merge conflicts
This commit is contained in:
committed by
Poojawa
parent
9338d18a28
commit
3d26cd4a6f
@@ -1,7 +1,7 @@
|
||||
/datum/surgery/organ_extraction
|
||||
name = "experimental dissection"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/extract_organ, /datum/surgery_step/gland_insert)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
ignore_clothes = 1
|
||||
|
||||
/datum/surgery/organ_extraction/can_start(mob/user, mob/living/carbon/target)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
if(alert("Are we sure we wish to kill ourself and create a headslug?",,"Yes", "No") == "No")
|
||||
return
|
||||
var/datum/mind/M = user.mind
|
||||
var/list/organs = user.getorganszone("head", 1)
|
||||
var/list/organs = user.getorganszone(BODY_ZONE_HEAD, 1)
|
||||
|
||||
for(var/obj/item/organ/I in organs)
|
||||
I.Remove(user, 1)
|
||||
|
||||
@@ -43,9 +43,9 @@
|
||||
return
|
||||
var/limb_regen = 0
|
||||
if(user.active_hand_index % 2 == 0) //we regen the arm before changing it into the weapon
|
||||
limb_regen = user.regenerate_limb("r_arm", 1)
|
||||
limb_regen = user.regenerate_limb(BODY_ZONE_R_ARM, 1)
|
||||
else
|
||||
limb_regen = user.regenerate_limb("l_arm", 1)
|
||||
limb_regen = user.regenerate_limb(BODY_ZONE_L_ARM, 1)
|
||||
if(limb_regen)
|
||||
user.visible_message("<span class='warning'>[user]'s missing arm reforms, making a loud, grotesque sound!</span>", "<span class='userdanger'>Your arm regrows, making a loud, crunchy sound and giving you great pain!</span>", "<span class='italics'>You hear organic matter ripping and tearing!</span>")
|
||||
user.emote("scream")
|
||||
@@ -307,7 +307,7 @@
|
||||
for(var/obj/item/I in H.held_items)
|
||||
if(I.is_sharp())
|
||||
C.visible_message("<span class='danger'>[H] impales [C] with [H.p_their()] [I.name]!</span>", "<span class='userdanger'>[H] impales you with [H.p_their()] [I.name]!</span>")
|
||||
C.apply_damage(I.force, BRUTE, "chest")
|
||||
C.apply_damage(I.force, BRUTE, BODY_ZONE_CHEST)
|
||||
H.do_item_attack_animation(C, used_item = I)
|
||||
H.add_mob_blood(C)
|
||||
playsound(get_turf(H),I.hitsound,75,1)
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
/obj/effect/proc_holder/changeling/revive
|
||||
name = "Revive"
|
||||
desc = "We regenerate, healing all damage from our form."
|
||||
helptext = "Does not regrow lost organs or a missing head."
|
||||
req_stat = DEAD
|
||||
always_keep = TRUE
|
||||
ignores_fakedeath = TRUE
|
||||
|
||||
//Revive from revival stasis
|
||||
/obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user)
|
||||
user.cure_fakedeath("changeling")
|
||||
user.revive(full_heal = 1)
|
||||
var/list/missing = user.get_missing_limbs()
|
||||
missing -= "head" // headless changelings are funny
|
||||
if(missing.len)
|
||||
playsound(user, 'sound/magic/demon_consume.ogg', 50, 1)
|
||||
user.visible_message("<span class='warning'>[user]'s missing limbs \
|
||||
reform, making a loud, grotesque sound!</span>",
|
||||
"<span class='userdanger'>Your limbs regrow, making a \
|
||||
loud, crunchy sound and giving you great pain!</span>",
|
||||
"<span class='italics'>You hear organic matter ripping \
|
||||
and tearing!</span>")
|
||||
user.emote("scream")
|
||||
user.regenerate_limbs(0, list("head"))
|
||||
user.regenerate_organs()
|
||||
to_chat(user, "<span class='notice'>We have revived ourselves.</span>")
|
||||
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
changeling.purchasedpowers -= src
|
||||
return TRUE
|
||||
|
||||
/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user)
|
||||
if((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH)))
|
||||
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
changeling.purchasedpowers -= src
|
||||
return 0
|
||||
/obj/effect/proc_holder/changeling/revive
|
||||
name = "Revive"
|
||||
desc = "We regenerate, healing all damage from our form."
|
||||
helptext = "Does not regrow lost organs or a missing head."
|
||||
req_stat = DEAD
|
||||
always_keep = TRUE
|
||||
ignores_fakedeath = TRUE
|
||||
|
||||
//Revive from revival stasis
|
||||
/obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user)
|
||||
user.cure_fakedeath("changeling")
|
||||
user.revive(full_heal = 1)
|
||||
var/list/missing = user.get_missing_limbs()
|
||||
missing -= BODY_ZONE_HEAD // headless changelings are funny
|
||||
if(missing.len)
|
||||
playsound(user, 'sound/magic/demon_consume.ogg', 50, 1)
|
||||
user.visible_message("<span class='warning'>[user]'s missing limbs \
|
||||
reform, making a loud, grotesque sound!</span>",
|
||||
"<span class='userdanger'>Your limbs regrow, making a \
|
||||
loud, crunchy sound and giving you great pain!</span>",
|
||||
"<span class='italics'>You hear organic matter ripping \
|
||||
and tearing!</span>")
|
||||
user.emote("scream")
|
||||
user.regenerate_limbs(0, list(BODY_ZONE_HEAD))
|
||||
user.regenerate_organs()
|
||||
to_chat(user, "<span class='notice'>We have revived ourselves.</span>")
|
||||
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
changeling.purchasedpowers -= src
|
||||
return TRUE
|
||||
|
||||
/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user)
|
||||
if((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH)))
|
||||
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
changeling.purchasedpowers -= src
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
to_chat(user, "<span class='heavy_brass'>\"Do you have a hole in your head? You're about to.\"</span>")
|
||||
to_chat(user, "<span class='userdanger'>The helmet tries to drive a spike through your head as you scramble to remove it!</span>")
|
||||
user.emote("scream")
|
||||
user.apply_damage(30, BRUTE, "head")
|
||||
user.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
|
||||
user.adjustBrainLoss(30)
|
||||
addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
to_chat(user, "<span class='heavy_brass'>\"I think this armor is too hot for you to handle.\"</span>")
|
||||
to_chat(user, "<span class='userdanger'>The curiass emits a burst of flame as you scramble to get it off!</span>")
|
||||
user.emote("scream")
|
||||
user.apply_damage(15, BURN, "chest")
|
||||
user.apply_damage(15, BURN, BODY_ZONE_CHEST)
|
||||
user.adjust_fire_stacks(2)
|
||||
user.IgniteMob()
|
||||
addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
|
||||
@@ -175,8 +175,8 @@
|
||||
to_chat(user, "<span class='heavy_brass'>\"Did you like having arms?\"</span>")
|
||||
to_chat(user, "<span class='userdanger'>The gauntlets suddenly squeeze tight, crushing your arms before you manage to get them off!</span>")
|
||||
user.emote("scream")
|
||||
user.apply_damage(7, BRUTE, "l_arm")
|
||||
user.apply_damage(7, BRUTE, "r_arm")
|
||||
user.apply_damage(7, BRUTE, BODY_ZONE_L_ARM)
|
||||
user.apply_damage(7, BRUTE, BODY_ZONE_R_ARM)
|
||||
addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
|
||||
|
||||
/obj/item/clothing/shoes/clockwork
|
||||
@@ -225,6 +225,6 @@
|
||||
to_chat(user, "<span class='heavy_brass'>\"Let's see if you can dance with these.\"</span>")
|
||||
to_chat(user, "<span class='userdanger'>The treads turn searing hot as you scramble to get them off!</span>")
|
||||
user.emote("scream")
|
||||
user.apply_damage(7, BURN, "l_leg")
|
||||
user.apply_damage(7, BURN, "r_leg")
|
||||
user.apply_damage(7, BURN, BODY_ZONE_L_LEG)
|
||||
user.apply_damage(7, BURN, BODY_ZONE_R_LEG)
|
||||
addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
|
||||
|
||||
@@ -143,8 +143,8 @@
|
||||
playsound(get_turf(user), 'sound/weapons/sear.ogg', 50, 1)
|
||||
user.dropItemToGround(src)
|
||||
user.emote("scream")
|
||||
user.apply_damage(5, BURN, "l_arm")
|
||||
user.apply_damage(5, BURN, "r_arm")
|
||||
user.apply_damage(5, BURN, BODY_ZONE_L_ARM)
|
||||
user.apply_damage(5, BURN, BODY_ZONE_R_ARM)
|
||||
return 0
|
||||
if(!is_servant_of_ratvar(user))
|
||||
to_chat(user, "<span class='warning'>The information on [src]'s display shifts rapidly. After a moment, your head begins to pound, and you tear your eyes away.</span>")
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
if(I.flags_inv & HIDEHAIR) //they're wearing a mask that covers their skull
|
||||
to_chat(user, "<span class='warning'>[H]'s head is covered, remove [H.wear_mask] first!</span>")
|
||||
return
|
||||
var/obj/item/bodypart/head/HE = H.get_bodypart("head")
|
||||
var/obj/item/bodypart/head/HE = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(!HE) //literally headless
|
||||
to_chat(user, "<span class='warning'>[H] has no head, and thus no mind to claim!</span>")
|
||||
return
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
squirrel.emote("scream")
|
||||
playsound(squirrel, 'sound/effects/splat.ogg', 50, TRUE)
|
||||
playsound(squirrel, 'sound/misc/desceration-03.ogg', 50, TRUE)
|
||||
squirrel.apply_damage(20, BRUTE, "chest")
|
||||
squirrel.apply_damage(20, BRUTE, BODY_ZONE_CHEST)
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE //So players can interact with the tile it's on to pull them off
|
||||
buckle_mob(squirrel, TRUE)
|
||||
else
|
||||
@@ -96,7 +96,7 @@
|
||||
if(!do_after(user, 300, target = user))
|
||||
user.visible_message("<span class='warning'>[user] slides back down [src]!</span>")
|
||||
user.emote("scream")
|
||||
user.apply_damage(10, BRUTE, "chest")
|
||||
user.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
|
||||
playsound(user, 'sound/misc/desceration-03.ogg', 50, TRUE)
|
||||
wiggle_wiggle = FALSE
|
||||
return
|
||||
|
||||
@@ -385,9 +385,9 @@
|
||||
user.whisper(invocation, language = /datum/language/common)
|
||||
if(health_cost)
|
||||
if(user.active_hand_index == 1)
|
||||
user.apply_damage(health_cost, BRUTE, "l_arm")
|
||||
user.apply_damage(health_cost, BRUTE, BODY_ZONE_L_ARM)
|
||||
else
|
||||
user.apply_damage(health_cost, BRUTE, "r_arm")
|
||||
user.apply_damage(health_cost, BRUTE, BODY_ZONE_R_ARM)
|
||||
if(uses <= 0)
|
||||
qdel(src)
|
||||
else if(source)
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
"<span class='cultlarge'>\"You shouldn't play with sharp things. You'll poke someone's eye out.\"</span>")
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.apply_damage(rand(force/2, force), BRUTE, pick("l_arm", "r_arm"))
|
||||
H.apply_damage(rand(force/2, force), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
else
|
||||
user.adjustBruteLoss(rand(force/2,force))
|
||||
return
|
||||
@@ -79,7 +79,7 @@
|
||||
to_chat(user, "<span class='cultlarge'>\"One of Ratvar's toys is trying to play with things [user.p_they()] shouldn't. Cute.\"</span>")
|
||||
to_chat(user, "<span class='userdanger'>A horrible force yanks at your arm!</span>")
|
||||
user.emote("scream")
|
||||
user.apply_damage(30, BRUTE, pick("l_arm", "r_arm"))
|
||||
user.apply_damage(30, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
user.dropItemToGround(src)
|
||||
|
||||
/obj/item/twohanded/required/cult_bastard
|
||||
@@ -147,7 +147,7 @@
|
||||
to_chat(user, "<span class='cultlarge'>\"One of Ratvar's toys is trying to play with things [user.p_they()] shouldn't. Cute.\"</span>")
|
||||
to_chat(user, "<span class='userdanger'>A horrible force yanks at your arm!</span>")
|
||||
user.emote("scream")
|
||||
user.apply_damage(30, BRUTE, pick("l_arm", "r_arm"))
|
||||
user.apply_damage(30, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
user.dropItemToGround(src, TRUE)
|
||||
user.Knockdown(50)
|
||||
return
|
||||
|
||||
@@ -114,7 +114,7 @@ This file contains the cult dagger and rune list code
|
||||
user.visible_message("<span class='warning'>[user] [user.blood_volume ? "cuts open their arm and begins writing in their own blood":"begins sketching out a strange design"]!</span>", \
|
||||
"<span class='cult'>You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.</span>")
|
||||
if(user.blood_volume)
|
||||
user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick("l_arm", "r_arm"))
|
||||
user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
var/scribe_mod = initial(rune_to_scribe.scribe_delay)
|
||||
if(istype(get_turf(user), /turf/open/floor/engine/cult))
|
||||
scribe_mod *= 0.5
|
||||
|
||||
@@ -637,7 +637,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
"<span class='cult italic'>You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.</span>")
|
||||
if(carbon_user)
|
||||
var/mob/living/carbon/C = user
|
||||
C.apply_damage(2, BRUTE, pick("l_arm", "r_arm"))
|
||||
C.apply_damage(2, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
|
||||
/obj/effect/rune/wall/proc/spread_density()
|
||||
for(var/R in GLOB.wall_runes)
|
||||
|
||||
@@ -263,7 +263,7 @@
|
||||
target = input(user, "Select your victim!", "Voodoo") as null|anything in possible
|
||||
return
|
||||
|
||||
if(user.zone_selected == "chest")
|
||||
if(user.zone_selected == BODY_ZONE_CHEST)
|
||||
if(voodoo_link)
|
||||
target = null
|
||||
voodoo_link.forceMove(drop_location())
|
||||
@@ -274,24 +274,24 @@
|
||||
|
||||
if(target && cooldown < world.time)
|
||||
switch(user.zone_selected)
|
||||
if("mouth")
|
||||
if(BODY_ZONE_PRECISE_MOUTH)
|
||||
var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text)
|
||||
target.say(wgw)
|
||||
log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.")
|
||||
if("eyes")
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
user.set_machine(src)
|
||||
user.reset_perspective(target)
|
||||
spawn(100)
|
||||
user.reset_perspective(null)
|
||||
user.unset_machine()
|
||||
if("r_leg","l_leg")
|
||||
if(BODY_ZONE_R_LEG,BODY_ZONE_L_LEG)
|
||||
to_chat(user, "<span class='notice'>You move the doll's legs around.</span>")
|
||||
var/turf/T = get_step(target,pick(GLOB.cardinals))
|
||||
target.Move(T)
|
||||
if("r_arm","l_arm")
|
||||
if(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM)
|
||||
target.click_random_mob()
|
||||
GiveHint(target)
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
to_chat(user, "<span class='notice'>You smack the doll's head with your hand.</span>")
|
||||
target.Dizzy(10)
|
||||
to_chat(target, "<span class='warning'>You suddenly feel as if your head was hit with a hammer!</span>")
|
||||
|
||||
+141
-141
@@ -1,142 +1,142 @@
|
||||
/obj/item/device/assembly/mousetrap
|
||||
name = "mousetrap"
|
||||
desc = "A handy little spring-loaded trap for catching pesty rodents."
|
||||
icon_state = "mousetrap"
|
||||
materials = list(MAT_METAL=100)
|
||||
attachable = 1
|
||||
var/armed = 0
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/examine(mob/user)
|
||||
..()
|
||||
if(armed)
|
||||
to_chat(user, "The mousetrap is armed!")
|
||||
else
|
||||
to_chat(user, "The mousetrap is not armed.")
|
||||
|
||||
/obj/item/device/assembly/mousetrap/activate()
|
||||
if(..())
|
||||
armed = !armed
|
||||
if(!armed)
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50))
|
||||
to_chat(user, "<span class='warning'>Your hand slips, setting off the trigger!</span>")
|
||||
pulse(0)
|
||||
update_icon()
|
||||
if(usr)
|
||||
playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
|
||||
|
||||
/obj/item/device/assembly/mousetrap/describe()
|
||||
return "The pressure switch is [armed?"primed":"safe"]."
|
||||
|
||||
/obj/item/device/assembly/mousetrap/update_icon()
|
||||
if(armed)
|
||||
icon_state = "mousetraparmed"
|
||||
else
|
||||
icon_state = "mousetrap"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
|
||||
/obj/item/device/assembly/mousetrap/proc/triggered(mob/target, type = "feet")
|
||||
if(!armed)
|
||||
return
|
||||
var/obj/item/bodypart/affecting = null
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.has_trait(TRAIT_PIERCEIMMUNE))
|
||||
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
armed = 0
|
||||
update_icon()
|
||||
pulse(0)
|
||||
return 0
|
||||
switch(type)
|
||||
if("feet")
|
||||
if(!H.shoes)
|
||||
affecting = H.get_bodypart(pick("l_leg", "r_leg"))
|
||||
H.Knockdown(60)
|
||||
if("l_hand", "r_hand")
|
||||
if(!H.gloves)
|
||||
affecting = H.get_bodypart(type)
|
||||
H.Stun(60)
|
||||
if(affecting)
|
||||
if(affecting.receive_damage(1, 0))
|
||||
H.update_damage_overlays()
|
||||
else if(ismouse(target))
|
||||
var/mob/living/simple_animal/mouse/M = target
|
||||
visible_message("<span class='boldannounce'>SPLAT!</span>")
|
||||
M.splat()
|
||||
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
armed = 0
|
||||
update_icon()
|
||||
pulse(0)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/attack_self(mob/living/carbon/human/user)
|
||||
if(!armed)
|
||||
to_chat(user, "<span class='notice'>You arm [src].</span>")
|
||||
else
|
||||
if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!(user.active_hand_index % 2))
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You disarm [src].</span>")
|
||||
armed = !armed
|
||||
update_icon()
|
||||
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user)
|
||||
if(armed)
|
||||
if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!(user.active_hand_index % 2))
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj)
|
||||
if(armed)
|
||||
if(ismob(AM))
|
||||
var/mob/MM = AM
|
||||
if(!(MM.movement_type & FLYING))
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == MOVE_INTENT_RUN)
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
else if(ismouse(MM))
|
||||
triggered(MM)
|
||||
else if(AM.density) // For mousetrap grenades, set off by anything heavy
|
||||
triggered(AM)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/on_found(mob/finder)
|
||||
if(armed)
|
||||
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
triggered(finder, (finder.active_hand_index % 2 == 0) ? "r_hand" : "l_hand")
|
||||
return 1 //end the search!
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/hitby(A as mob|obj)
|
||||
if(!armed)
|
||||
return ..()
|
||||
visible_message("<span class='warning'>[src] is triggered by [A].</span>")
|
||||
triggered(null)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/armed
|
||||
icon_state = "mousetraparmed"
|
||||
/obj/item/device/assembly/mousetrap
|
||||
name = "mousetrap"
|
||||
desc = "A handy little spring-loaded trap for catching pesty rodents."
|
||||
icon_state = "mousetrap"
|
||||
materials = list(MAT_METAL=100)
|
||||
attachable = 1
|
||||
var/armed = 0
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/examine(mob/user)
|
||||
..()
|
||||
if(armed)
|
||||
to_chat(user, "The mousetrap is armed!")
|
||||
else
|
||||
to_chat(user, "The mousetrap is not armed.")
|
||||
|
||||
/obj/item/device/assembly/mousetrap/activate()
|
||||
if(..())
|
||||
armed = !armed
|
||||
if(!armed)
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50))
|
||||
to_chat(user, "<span class='warning'>Your hand slips, setting off the trigger!</span>")
|
||||
pulse(0)
|
||||
update_icon()
|
||||
if(usr)
|
||||
playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
|
||||
|
||||
/obj/item/device/assembly/mousetrap/describe()
|
||||
return "The pressure switch is [armed?"primed":"safe"]."
|
||||
|
||||
/obj/item/device/assembly/mousetrap/update_icon()
|
||||
if(armed)
|
||||
icon_state = "mousetraparmed"
|
||||
else
|
||||
icon_state = "mousetrap"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
|
||||
/obj/item/device/assembly/mousetrap/proc/triggered(mob/target, type = "feet")
|
||||
if(!armed)
|
||||
return
|
||||
var/obj/item/bodypart/affecting = null
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.has_trait(TRAIT_PIERCEIMMUNE))
|
||||
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
armed = 0
|
||||
update_icon()
|
||||
pulse(0)
|
||||
return 0
|
||||
switch(type)
|
||||
if("feet")
|
||||
if(!H.shoes)
|
||||
affecting = H.get_bodypart(pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
||||
H.Knockdown(60)
|
||||
if(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND)
|
||||
if(!H.gloves)
|
||||
affecting = H.get_bodypart(type)
|
||||
H.Stun(60)
|
||||
if(affecting)
|
||||
if(affecting.receive_damage(1, 0))
|
||||
H.update_damage_overlays()
|
||||
else if(ismouse(target))
|
||||
var/mob/living/simple_animal/mouse/M = target
|
||||
visible_message("<span class='boldannounce'>SPLAT!</span>")
|
||||
M.splat()
|
||||
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
armed = 0
|
||||
update_icon()
|
||||
pulse(0)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/attack_self(mob/living/carbon/human/user)
|
||||
if(!armed)
|
||||
to_chat(user, "<span class='notice'>You arm [src].</span>")
|
||||
else
|
||||
if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50))
|
||||
var/which_hand = BODY_ZONE_PRECISE_L_HAND
|
||||
if(!(user.active_hand_index % 2))
|
||||
which_hand = BODY_ZONE_PRECISE_R_HAND
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You disarm [src].</span>")
|
||||
armed = !armed
|
||||
update_icon()
|
||||
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user)
|
||||
if(armed)
|
||||
if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50))
|
||||
var/which_hand = BODY_ZONE_PRECISE_L_HAND
|
||||
if(!(user.active_hand_index % 2))
|
||||
which_hand = BODY_ZONE_PRECISE_R_HAND
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj)
|
||||
if(armed)
|
||||
if(ismob(AM))
|
||||
var/mob/MM = AM
|
||||
if(!(MM.movement_type & FLYING))
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == MOVE_INTENT_RUN)
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
else if(ismouse(MM))
|
||||
triggered(MM)
|
||||
else if(AM.density) // For mousetrap grenades, set off by anything heavy
|
||||
triggered(AM)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/on_found(mob/finder)
|
||||
if(armed)
|
||||
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
triggered(finder, (finder.active_hand_index % 2 == 0) ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND)
|
||||
return 1 //end the search!
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/hitby(A as mob|obj)
|
||||
if(!armed)
|
||||
return ..()
|
||||
visible_message("<span class='warning'>[src] is triggered by [A].</span>")
|
||||
triggered(null)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/armed
|
||||
icon_state = "mousetraparmed"
|
||||
armed = 1
|
||||
|
||||
@@ -87,4 +87,4 @@
|
||||
if(pipe_air.temperature > heat_limit + 1)
|
||||
for(var/m in buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
buckled_mob.apply_damage(4 * log(pipe_air.temperature - heat_limit), BURN, "chest")
|
||||
buckled_mob.apply_damage(4 * log(pipe_air.temperature - heat_limit), BURN, BODY_ZONE_CHEST)
|
||||
|
||||
@@ -1069,7 +1069,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
undershirt = random_undershirt(gender)
|
||||
if("socks")
|
||||
socks = random_socks()
|
||||
if("eyes")
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
eye_color = random_eye_color()
|
||||
if("s_tone")
|
||||
skin_tone = random_skin_tone()
|
||||
@@ -1211,7 +1211,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(new_socks)
|
||||
socks = new_socks
|
||||
|
||||
if("eyes")
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference","#"+eye_color) as color|null
|
||||
if(new_eyes)
|
||||
eye_color = sanitize_hexcolor(new_eyes)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/clothing/head
|
||||
name = "head"
|
||||
name = BODY_ZONE_HEAD
|
||||
icon = 'icons/obj/clothing/hats.dmi'
|
||||
icon_state = "top_hat"
|
||||
item_state = "that"
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
if(M.stat == DEAD && heart && world.time - M.timeofdeath < DEFIB_TIME_LIMIT * 10)
|
||||
heart_strength = "<span class='boldannounce'>a faint, fluttery</span>"
|
||||
|
||||
var/diagnosis = (body_part == "chest" ? "You hear [heart_strength] pulse and [lung_strength] respiration." : "You faintly hear [heart_strength] pulse.")
|
||||
var/diagnosis = (body_part == BODY_ZONE_CHEST ? "You hear [heart_strength] pulse and [lung_strength] respiration." : "You faintly hear [heart_strength] pulse.")
|
||||
user.visible_message("[user] places [src] against [M]'s [body_part] and listens attentively.", "<span class='notice'>You place [src] against [M]'s [body_part]. [diagnosis]</span>")
|
||||
return
|
||||
return ..(M,user)
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
/obj/item/clothing/shoes/suicide_act(mob/living/carbon/user)
|
||||
if(rand(2)>1)
|
||||
user.visible_message("<span class='suicide'>[user] begins tying \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
var/obj/item/bodypart/l_leg = user.get_bodypart("l_leg")
|
||||
var/obj/item/bodypart/r_leg = user.get_bodypart("r_leg")
|
||||
var/obj/item/bodypart/l_leg = user.get_bodypart(BODY_ZONE_L_LEG)
|
||||
var/obj/item/bodypart/r_leg = user.get_bodypart(BODY_ZONE_R_LEG)
|
||||
if(l_leg)
|
||||
l_leg.dismember()
|
||||
playsound(user,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
var/hit_reflect_chance = 40
|
||||
|
||||
/obj/item/clothing/suit/armor/laserproof/IsReflect(def_zone)
|
||||
if(!(def_zone in list("chest", "groin"))) //If not shot where ablative is covering you, you don't get the reflection bonus!
|
||||
if(!(def_zone in list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN))) //If not shot where ablative is covering you, you don't get the reflection bonus!
|
||||
return 0
|
||||
if (prob(hit_reflect_chance))
|
||||
return 1
|
||||
|
||||
@@ -393,7 +393,7 @@
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/attack(mob/M, mob/user)
|
||||
if(M == user && !src.reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_selected == "head")
|
||||
if(M == user && !src.reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_selected == BODY_ZONE_HEAD)
|
||||
user.visible_message("<span class='warning'>[user] crushes the can of [src] on [user.p_their()] forehead!</span>", "<span class='notice'>You crush the can of [src] on your forehead.</span>")
|
||||
playsound(user.loc,'sound/weapons/pierce.ogg', rand(10,50), 1)
|
||||
var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(user.loc)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
armor_block = H.run_armor_check(affecting, "melee","","",armour_penetration) // For normal attack damage
|
||||
|
||||
//If they have a hat/helmet and the user is targeting their head.
|
||||
if(istype(H.head, /obj/item/clothing/head) && affecting == "head")
|
||||
if(istype(H.head, /obj/item/clothing/head) && affecting == BODY_ZONE_HEAD)
|
||||
headarmor = H.head.armor.melee
|
||||
else
|
||||
headarmor = 0
|
||||
@@ -78,7 +78,7 @@
|
||||
else
|
||||
//Only humans can have armor, right?
|
||||
armor_block = target.run_armor_check(affecting, "melee")
|
||||
if(affecting == "head")
|
||||
if(affecting == BODY_ZONE_HEAD)
|
||||
armor_duration = duration + force
|
||||
|
||||
//Apply the damage!
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
// You are going to knock someone out for longer if they are not wearing a helmet.
|
||||
var/head_attack_message = ""
|
||||
if(affecting == "head" && istype(target, /mob/living/carbon/))
|
||||
if(affecting == BODY_ZONE_HEAD && istype(target, /mob/living/carbon/))
|
||||
head_attack_message = " on the head"
|
||||
//Knockdown the target for the duration that we calculated and divide it by 5.
|
||||
if(armor_duration)
|
||||
|
||||
@@ -142,7 +142,7 @@ God bless America.
|
||||
var/mob/living/carbon/C = user.pulling
|
||||
user.visible_message("<span class = 'danger'>[user] dunks [C]'s face in [src]!</span>")
|
||||
reagents.reaction(C, TOUCH)
|
||||
C.apply_damage(min(30, reagents.total_volume), BURN, "head")
|
||||
C.apply_damage(min(30, reagents.total_volume), BURN, BODY_ZONE_HEAD)
|
||||
reagents.remove_any((reagents.total_volume/2))
|
||||
C.Knockdown(60)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
user.visible_message("<span class='suicide'>[user] is beheading [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
var/obj/item/bodypart/BP = C.get_bodypart("head")
|
||||
var/obj/item/bodypart/BP = C.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(BP)
|
||||
BP.drop_limb()
|
||||
playsound(src,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
layer = ABOVE_MOB_LAYER
|
||||
zone = "head"
|
||||
zone = BODY_ZONE_HEAD
|
||||
slot = ORGAN_SLOT_BRAIN
|
||||
vital = TRUE
|
||||
attack_verb = list("attacked", "slapped", "whacked")
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
if(user.zone_selected != "head")
|
||||
if(user.zone_selected != BODY_ZONE_HEAD)
|
||||
return ..()
|
||||
|
||||
if((C.head && (C.head.flags_cover & HEADCOVERSEYES)) || (C.wear_mask && (C.wear_mask.flags_cover & MASKCOVERSEYES)) || (C.glasses && (C.glasses.flags_1 & GLASSESCOVERSEYES)))
|
||||
@@ -122,7 +122,7 @@
|
||||
//since these people will be dead M != usr
|
||||
|
||||
if(!C.getorgan(/obj/item/organ/brain))
|
||||
if(!C.get_bodypart("head") || !user.temporarilyRemoveItemFromInventory(src))
|
||||
if(!C.get_bodypart(BODY_ZONE_HEAD) || !user.temporarilyRemoveItemFromInventory(src))
|
||||
return
|
||||
var/msg = "[C] has [src] inserted into [C.p_their()] head by [user]."
|
||||
if(C == user)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
name = "plasma vessel"
|
||||
icon_state = "plasma"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
zone = "chest"
|
||||
zone = BODY_ZONE_CHEST
|
||||
slot = "plasmavessel"
|
||||
alien_powers = list(/obj/effect/proc_holder/alien/plant, /obj/effect/proc_holder/alien/transfer)
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
/obj/item/organ/alien/hivenode
|
||||
name = "hive node"
|
||||
icon_state = "hivenode"
|
||||
zone = "head"
|
||||
zone = BODY_ZONE_HEAD
|
||||
slot = "hivenode"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/recent_queen_death = 0 //Indicates if the queen died recently, aliens are heavily weakened while this is active.
|
||||
@@ -156,7 +156,7 @@
|
||||
/obj/item/organ/alien/resinspinner
|
||||
name = "resin spinner"
|
||||
icon_state = "stomach-x"
|
||||
zone = "mouth"
|
||||
zone = BODY_ZONE_PRECISE_MOUTH
|
||||
slot = "resinspinner"
|
||||
alien_powers = list(/obj/effect/proc_holder/alien/resin)
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
/obj/item/organ/alien/acid
|
||||
name = "acid gland"
|
||||
icon_state = "acid"
|
||||
zone = "mouth"
|
||||
zone = BODY_ZONE_PRECISE_MOUTH
|
||||
slot = "acidgland"
|
||||
alien_powers = list(/obj/effect/proc_holder/alien/acid)
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
/obj/item/organ/alien/neurotoxin
|
||||
name = "neurotoxin gland"
|
||||
icon_state = "neurotox"
|
||||
zone = "mouth"
|
||||
zone = BODY_ZONE_PRECISE_MOUTH
|
||||
slot = "neurotoxingland"
|
||||
alien_powers = list(/obj/effect/proc_holder/alien/neurotoxin)
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
/obj/item/organ/alien/eggsac
|
||||
name = "egg sac"
|
||||
icon_state = "eggsac"
|
||||
zone = "groin"
|
||||
zone = BODY_ZONE_PRECISE_GROIN
|
||||
slot = "eggsac"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
alien_powers = list(/obj/effect/proc_holder/alien/lay_egg)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
if(stage == 5 && prob(50))
|
||||
for(var/datum/surgery/S in owner.surgeries)
|
||||
if(S.location == "chest" && istype(S.get_surgery_step(), /datum/surgery_step/manipulate_organs))
|
||||
if(S.location == BODY_ZONE_CHEST && istype(S.get_surgery_step(), /datum/surgery_step/manipulate_organs))
|
||||
AttemptGrow(0)
|
||||
return
|
||||
AttemptGrow()
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
return FALSE
|
||||
var/mob/living/carbon/target = M
|
||||
// gotta have a head to be implanted (no changelings or sentient plants)
|
||||
if(!target.get_bodypart("head"))
|
||||
if(!target.get_bodypart(BODY_ZONE_HEAD))
|
||||
return FALSE
|
||||
|
||||
if(target.getorgan(/obj/item/organ/alien/hivenode) || target.getorgan(/obj/item/organ/body_egg/alien_embryo))
|
||||
@@ -208,7 +208,7 @@
|
||||
Die()
|
||||
icon_state = "[initial(icon_state)]_impregnated"
|
||||
|
||||
var/obj/item/bodypart/chest/LC = target.get_bodypart("chest")
|
||||
var/obj/item/bodypart/chest/LC = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
if((!LC || LC.status != BODYPART_ROBOTIC) && !target.getorgan(/obj/item/organ/body_egg/alien_embryo))
|
||||
new /obj/item/organ/body_egg/alien_embryo(target)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
var/obj/item/I = user.get_active_held_item()
|
||||
if(I && I.force)
|
||||
var/d = rand(round(I.force / 4), I.force)
|
||||
var/obj/item/bodypart/BP = get_bodypart("chest")
|
||||
var/obj/item/bodypart/BP = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(BP.receive_damage(d, 0))
|
||||
update_damage_overlays()
|
||||
visible_message("<span class='danger'>[user] attacks [src]'s stomach wall with the [I.name]!</span>", \
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood
|
||||
user.add_mob_blood(src)
|
||||
|
||||
if(affecting.body_zone == "head")
|
||||
if(affecting.body_zone == BODY_ZONE_HEAD)
|
||||
if(wear_mask)
|
||||
wear_mask.add_mob_blood(src)
|
||||
update_inv_wear_mask()
|
||||
@@ -195,7 +195,7 @@
|
||||
var/list/things_to_ruin = shuffle(bodyparts.Copy())
|
||||
for(var/B in things_to_ruin)
|
||||
var/obj/item/bodypart/bodypart = B
|
||||
if(bodypart.body_zone == "head" || bodypart.body_zone == "chest")
|
||||
if(bodypart.body_zone == BODY_ZONE_HEAD || bodypart.body_zone == BODY_ZONE_CHEST)
|
||||
continue
|
||||
if(!affecting || ((affecting.get_damage() / affecting.max_damage) < (bodypart.get_damage() / bodypart.max_damage)))
|
||||
affecting = bodypart
|
||||
@@ -371,7 +371,7 @@
|
||||
if(damage_type != BRUTE && damage_type != BURN)
|
||||
return
|
||||
damage_amount *= 0.5 //0.5 multiplier for balance reason, we don't want clothes to be too easily destroyed
|
||||
if(!def_zone || def_zone == "head")
|
||||
if(!def_zone || def_zone == BODY_ZONE_HEAD)
|
||||
var/obj/item/clothing/hit_clothes
|
||||
if(wear_mask)
|
||||
hit_clothes = wear_mask
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
qdel(O) //so the brain isn't transfered to the head when the head drops.
|
||||
continue
|
||||
var/org_zone = check_zone(O.zone) //both groin and chest organs.
|
||||
if(org_zone == "chest")
|
||||
if(org_zone == BODY_ZONE_CHEST)
|
||||
O.Remove(src)
|
||||
O.forceMove(Tsec)
|
||||
O.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
appears_dead = 1
|
||||
if(getorgan(/obj/item/organ/brain))
|
||||
msg += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive, with no signs of life.</span>\n"
|
||||
else if(get_bodypart("head"))
|
||||
else if(get_bodypart(BODY_ZONE_HEAD))
|
||||
msg += "<span class='deadsay'>It appears that [t_his] brain is missing...</span>\n"
|
||||
|
||||
var/list/missing = get_missing_limbs()
|
||||
for(var/t in missing)
|
||||
if(t=="head")
|
||||
if(t==BODY_ZONE_HEAD)
|
||||
msg += "<span class='deadsay'><B>[t_His] [parse_zone(t)] is missing!</B></span>\n"
|
||||
continue
|
||||
msg += "<span class='warning'><B>[t_His] [parse_zone(t)] is missing!</B></span>\n"
|
||||
|
||||
@@ -131,14 +131,14 @@
|
||||
msg += " and [t_his] soul has departed"
|
||||
msg += "...</span>\n"
|
||||
|
||||
if(get_bodypart("head") && !getorgan(/obj/item/organ/brain))
|
||||
if(get_bodypart(BODY_ZONE_HEAD) && !getorgan(/obj/item/organ/brain))
|
||||
msg += "<span class='deadsay'>It appears that [t_his] brain is missing...</span>\n"
|
||||
|
||||
var/temp = getBruteLoss() //no need to calculate each of these twice
|
||||
|
||||
msg += "<span class='warning'>"
|
||||
|
||||
var/list/missing = list("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg")
|
||||
var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/BP = X
|
||||
missing -= BP.body_zone
|
||||
@@ -149,12 +149,12 @@
|
||||
var/l_limbs_missing = 0
|
||||
var/r_limbs_missing = 0
|
||||
for(var/t in missing)
|
||||
if(t=="head")
|
||||
if(t==BODY_ZONE_HEAD)
|
||||
msg += "<span class='deadsay'><B>[t_His] [parse_zone(t)] is missing!</B><span class='warning'>\n"
|
||||
continue
|
||||
if(t == "l_arm" || t == "l_leg")
|
||||
if(t == BODY_ZONE_L_ARM || t == BODY_ZONE_L_LEG)
|
||||
l_limbs_missing++
|
||||
else if(t == "r_arm" || t == "r_leg")
|
||||
else if(t == BODY_ZONE_R_ARM || t == BODY_ZONE_R_LEG)
|
||||
r_limbs_missing++
|
||||
|
||||
msg += "<B>[capitalize(t_his)] [parse_zone(t)] is missing!</B>\n"
|
||||
|
||||
@@ -203,10 +203,10 @@
|
||||
dna.species.spec_attack_hand(H, src)
|
||||
|
||||
/mob/living/carbon/human/attack_paw(mob/living/carbon/monkey/M)
|
||||
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
|
||||
var/dam_zone = pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(M.a_intent == INTENT_HELP)
|
||||
..() //shaking
|
||||
return 0
|
||||
@@ -253,7 +253,7 @@
|
||||
return 0
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
var/armor_block = run_armor_check(affecting, "melee","","",10)
|
||||
|
||||
playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
|
||||
@@ -288,7 +288,7 @@
|
||||
L.amount_grown = min(L.amount_grown + damage, L.max_grown)
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
var/armor_block = run_armor_check(affecting, "melee")
|
||||
apply_damage(damage, BRUTE, affecting, armor_block)
|
||||
|
||||
@@ -299,12 +299,12 @@
|
||||
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||
if(check_shields(M, damage, "the [M.name]", MELEE_ATTACK, M.armour_penetration))
|
||||
return FALSE
|
||||
var/dam_zone = dismembering_strike(M, pick("chest", "l_hand", "r_hand", "l_leg", "r_leg"))
|
||||
var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
||||
if(!dam_zone) //Dismemberment successful
|
||||
return TRUE
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
var/armor = run_armor_check(affecting, "melee", armour_penetration = M.armour_penetration)
|
||||
apply_damage(damage, M.melee_damage_type, affecting, armor)
|
||||
|
||||
@@ -318,13 +318,13 @@
|
||||
if(check_shields(M, damage, "the [M.name]"))
|
||||
return 0
|
||||
|
||||
var/dam_zone = dismembering_strike(M, pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg"))
|
||||
var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
||||
if(!dam_zone) //Dismemberment successful
|
||||
return 1
|
||||
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
var/armor_block = run_armor_check(affecting, "melee")
|
||||
apply_damage(damage, BRUTE, affecting, armor_block)
|
||||
|
||||
@@ -334,7 +334,7 @@
|
||||
M.do_attack_animation(src)
|
||||
if(M.damtype == "brute")
|
||||
step_away(src,M,15)
|
||||
var/obj/item/bodypart/temp = get_bodypart(pick("chest", "chest", "chest", "head"))
|
||||
var/obj/item/bodypart/temp = get_bodypart(pick(BODY_ZONE_CHEST, BODY_ZONE_CHEST, BODY_ZONE_CHEST, BODY_ZONE_HEAD))
|
||||
if(temp)
|
||||
var/update = 0
|
||||
var/dmg = rand(M.force/2, M.force)
|
||||
@@ -416,7 +416,7 @@
|
||||
var/max_limb_loss = round(4/severity) //so you don't lose four limbs at severity 3.
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/BP = X
|
||||
if(prob(50/severity) && !prob(getarmor(BP, "bomb")) && BP.body_zone != "head" && BP.body_zone != "chest")
|
||||
if(prob(50/severity) && !prob(getarmor(BP, "bomb")) && BP.body_zone != BODY_ZONE_HEAD && BP.body_zone != BODY_ZONE_CHEST)
|
||||
BP.brute_dam = BP.max_damage
|
||||
BP.dismember()
|
||||
max_limb_loss--
|
||||
@@ -428,7 +428,7 @@
|
||||
if(stat == DEAD)
|
||||
return
|
||||
show_message("<span class='userdanger'>The blob attacks you!</span>")
|
||||
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
|
||||
var/dam_zone = pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
|
||||
apply_damage(5, BRUTE, affecting, run_armor_check(affecting, "melee"))
|
||||
|
||||
@@ -489,7 +489,7 @@
|
||||
var/list/inventory_items_to_kill = list()
|
||||
var/acidity = acidpwr * min(acid_volume*0.005, 0.1)
|
||||
//HEAD//
|
||||
if(!bodyzone_hit || bodyzone_hit == "head") //only if we didn't specify a zone or if that zone is the head.
|
||||
if(!bodyzone_hit || bodyzone_hit == BODY_ZONE_HEAD) //only if we didn't specify a zone or if that zone is the head.
|
||||
var/obj/item/clothing/head_clothes = null
|
||||
if(glasses)
|
||||
head_clothes = glasses
|
||||
@@ -509,14 +509,14 @@
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Your [head_clothes.name] protects your head and face from the acid!</span>")
|
||||
else
|
||||
. = get_bodypart("head")
|
||||
. = get_bodypart(BODY_ZONE_HEAD)
|
||||
if(.)
|
||||
damaged += .
|
||||
if(ears)
|
||||
inventory_items_to_kill += ears
|
||||
|
||||
//CHEST//
|
||||
if(!bodyzone_hit || bodyzone_hit == "chest")
|
||||
if(!bodyzone_hit || bodyzone_hit == BODY_ZONE_CHEST)
|
||||
var/obj/item/clothing/chest_clothes = null
|
||||
if(w_uniform)
|
||||
chest_clothes = w_uniform
|
||||
@@ -530,7 +530,7 @@
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Your [chest_clothes.name] protects your body from the acid!</span>")
|
||||
else
|
||||
. = get_bodypart("chest")
|
||||
. = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(.)
|
||||
damaged += .
|
||||
if(wear_id)
|
||||
@@ -544,7 +544,7 @@
|
||||
|
||||
|
||||
//ARMS & HANDS//
|
||||
if(!bodyzone_hit || bodyzone_hit == "l_arm" || bodyzone_hit == "r_arm")
|
||||
if(!bodyzone_hit || bodyzone_hit == BODY_ZONE_L_ARM || bodyzone_hit == BODY_ZONE_R_ARM)
|
||||
var/obj/item/clothing/arm_clothes = null
|
||||
if(gloves)
|
||||
arm_clothes = gloves
|
||||
@@ -562,16 +562,16 @@
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Your [arm_clothes.name] protects your arms and hands from the acid!</span>")
|
||||
else
|
||||
. = get_bodypart("r_arm")
|
||||
. = get_bodypart(BODY_ZONE_R_ARM)
|
||||
if(.)
|
||||
damaged += .
|
||||
. = get_bodypart("l_arm")
|
||||
. = get_bodypart(BODY_ZONE_L_ARM)
|
||||
if(.)
|
||||
damaged += .
|
||||
|
||||
|
||||
//LEGS & FEET//
|
||||
if(!bodyzone_hit || bodyzone_hit == "l_leg" || bodyzone_hit == "r_leg" || bodyzone_hit == "feet")
|
||||
if(!bodyzone_hit || bodyzone_hit == BODY_ZONE_L_LEG || bodyzone_hit == BODY_ZONE_R_LEG || bodyzone_hit == "feet")
|
||||
var/obj/item/clothing/leg_clothes = null
|
||||
if(shoes)
|
||||
leg_clothes = shoes
|
||||
@@ -588,10 +588,10 @@
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Your [leg_clothes.name] protects your legs and feet from the acid!</span>")
|
||||
else
|
||||
. = get_bodypart("r_leg")
|
||||
. = get_bodypart(BODY_ZONE_R_LEG)
|
||||
if(.)
|
||||
damaged += .
|
||||
. = get_bodypart("l_leg")
|
||||
. = get_bodypart(BODY_ZONE_L_LEG)
|
||||
if(.)
|
||||
damaged += .
|
||||
|
||||
@@ -600,7 +600,7 @@
|
||||
for(var/obj/item/bodypart/affecting in damaged)
|
||||
affecting.receive_damage(acidity, 2*acidity)
|
||||
|
||||
if(affecting.name == "head")
|
||||
if(affecting.name == BODY_ZONE_HEAD)
|
||||
if(prob(min(acidpwr*acid_volume/10, 90))) //Applies disfigurement
|
||||
affecting.receive_damage(acidity, 2*acidity)
|
||||
emote("scream")
|
||||
@@ -645,7 +645,7 @@
|
||||
visible_message("[src] examines [p_them()]self.", \
|
||||
"<span class='notice'>You check yourself for injuries.</span>")
|
||||
|
||||
var/list/missing = list("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg")
|
||||
var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/LB = X
|
||||
missing -= LB.body_zone
|
||||
@@ -732,7 +732,7 @@
|
||||
var/list/torn_items = list()
|
||||
|
||||
//HEAD//
|
||||
if(!def_zone || def_zone == "head")
|
||||
if(!def_zone || def_zone == BODY_ZONE_HEAD)
|
||||
var/obj/item/clothing/head_clothes = null
|
||||
if(glasses)
|
||||
head_clothes = glasses
|
||||
@@ -748,7 +748,7 @@
|
||||
torn_items += ears
|
||||
|
||||
//CHEST//
|
||||
if(!def_zone || def_zone == "chest")
|
||||
if(!def_zone || def_zone == BODY_ZONE_CHEST)
|
||||
var/obj/item/clothing/chest_clothes = null
|
||||
if(w_uniform)
|
||||
chest_clothes = w_uniform
|
||||
@@ -758,7 +758,7 @@
|
||||
torn_items += chest_clothes
|
||||
|
||||
//ARMS & HANDS//
|
||||
if(!def_zone || def_zone == "l_arm" || def_zone == "r_arm")
|
||||
if(!def_zone || def_zone == BODY_ZONE_L_ARM || def_zone == BODY_ZONE_R_ARM)
|
||||
var/obj/item/clothing/arm_clothes = null
|
||||
if(gloves)
|
||||
arm_clothes = gloves
|
||||
@@ -770,7 +770,7 @@
|
||||
torn_items += arm_clothes
|
||||
|
||||
//LEGS & FEET//
|
||||
if(!def_zone || def_zone == "l_leg" || def_zone == "r_leg")
|
||||
if(!def_zone || def_zone == BODY_ZONE_L_LEG || def_zone == BODY_ZONE_R_LEG)
|
||||
var/obj/item/clothing/leg_clothes = null
|
||||
if(shoes)
|
||||
leg_clothes = shoes
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
return if_no_face
|
||||
if( head && (head.flags_inv&HIDEFACE) )
|
||||
return if_no_face //Likewise for hats
|
||||
var/obj/item/bodypart/O = get_bodypart("head")
|
||||
var/obj/item/bodypart/O = get_bodypart(BODY_ZONE_HEAD)
|
||||
if( !O || (has_trait(TRAIT_DISFIGURED)) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible
|
||||
return if_no_face
|
||||
return real_name
|
||||
|
||||
@@ -221,7 +221,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
tail = new mutanttail()
|
||||
tail.Insert(C)
|
||||
|
||||
if(C.get_bodypart("head"))
|
||||
if(C.get_bodypart(BODY_ZONE_HEAD))
|
||||
if(eyes && (replace_current || !should_have_eyes))
|
||||
eyes.Remove(C,1)
|
||||
QDEL_NULL(eyes)
|
||||
@@ -315,7 +315,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
/datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour)
|
||||
H.remove_overlay(HAIR_LAYER)
|
||||
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart("head")
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(!HD) //Decapitated
|
||||
return
|
||||
|
||||
@@ -458,7 +458,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
|
||||
var/list/standing = list()
|
||||
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart("head")
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
|
||||
if(HD && !(H.has_trait(TRAIT_HUSK)))
|
||||
// lipstick
|
||||
@@ -526,7 +526,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(!mutant_bodyparts)
|
||||
return
|
||||
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart("head")
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
|
||||
if("tail_lizard" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || (!H.dna.features["taur"] == "None"))
|
||||
@@ -897,7 +897,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
return 0
|
||||
if( !(I.slot_flags & SLOT_MASK) )
|
||||
return 0
|
||||
if(!H.get_bodypart("head"))
|
||||
if(!H.get_bodypart(BODY_ZONE_HEAD))
|
||||
return 0
|
||||
return equip_delay_self_check(I, H, bypass_equip_delay_self)
|
||||
if(slot_neck)
|
||||
@@ -942,7 +942,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(H.belt)
|
||||
return 0
|
||||
|
||||
var/obj/item/bodypart/O = H.get_bodypart("chest")
|
||||
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST)
|
||||
|
||||
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
|
||||
if(!disable_warning)
|
||||
@@ -956,7 +956,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
return 0
|
||||
if( !(I.slot_flags & SLOT_EYES) )
|
||||
return 0
|
||||
if(!H.get_bodypart("head"))
|
||||
if(!H.get_bodypart(BODY_ZONE_HEAD))
|
||||
return 0
|
||||
return equip_delay_self_check(I, H, bypass_equip_delay_self)
|
||||
if(slot_head)
|
||||
@@ -964,7 +964,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
return 0
|
||||
if( !(I.slot_flags & SLOT_HEAD) )
|
||||
return 0
|
||||
if(!H.get_bodypart("head"))
|
||||
if(!H.get_bodypart(BODY_ZONE_HEAD))
|
||||
return 0
|
||||
return equip_delay_self_check(I, H, bypass_equip_delay_self)
|
||||
if(slot_ears)
|
||||
@@ -972,7 +972,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
return 0
|
||||
if( !(I.slot_flags & SLOT_EARS) )
|
||||
return 0
|
||||
if(!H.get_bodypart("head"))
|
||||
if(!H.get_bodypart(BODY_ZONE_HEAD))
|
||||
return 0
|
||||
return equip_delay_self_check(I, H, bypass_equip_delay_self)
|
||||
if(slot_w_uniform)
|
||||
@@ -985,7 +985,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(H.wear_id)
|
||||
return 0
|
||||
|
||||
var/obj/item/bodypart/O = H.get_bodypart("chest")
|
||||
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
|
||||
if(!disable_warning)
|
||||
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [I.name]!</span>")
|
||||
@@ -999,7 +999,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(H.l_store)
|
||||
return 0
|
||||
|
||||
var/obj/item/bodypart/O = H.get_bodypart("l_leg")
|
||||
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_L_LEG)
|
||||
|
||||
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
|
||||
if(!disable_warning)
|
||||
@@ -1015,7 +1015,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(H.r_store)
|
||||
return 0
|
||||
|
||||
var/obj/item/bodypart/O = H.get_bodypart("r_leg")
|
||||
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_R_LEG)
|
||||
|
||||
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
|
||||
if(!disable_warning)
|
||||
@@ -1584,7 +1584,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
user.add_mob_blood(H)
|
||||
|
||||
switch(hit_area)
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
if(H.stat == CONSCIOUS && armor_block < 50)
|
||||
if(prob(I.force))
|
||||
H.visible_message("<span class='danger'>[H] has been knocked senseless!</span>", \
|
||||
@@ -1614,7 +1614,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
H.glasses.add_mob_blood(H)
|
||||
H.update_inv_glasses()
|
||||
|
||||
if("chest")
|
||||
if(BODY_ZONE_CHEST)
|
||||
if(H.stat == CONSCIOUS && armor_block < 50)
|
||||
if(prob(I.force))
|
||||
H.visible_message("<span class='danger'>[H] has been knocked down!</span>", \
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/datum/species/dullahan/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
|
||||
. = ..()
|
||||
H.flags_1 &= ~HEAR_1
|
||||
var/obj/item/bodypart/head/head = H.get_bodypart("head")
|
||||
var/obj/item/bodypart/head/head = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(head)
|
||||
head.drop_limb()
|
||||
head.flags_1 = HEAR_1
|
||||
@@ -42,14 +42,14 @@
|
||||
myhead = null
|
||||
DR.owner = null
|
||||
qdel(DR)
|
||||
H.regenerate_limb("head",FALSE)
|
||||
H.regenerate_limb(BODY_ZONE_HEAD,FALSE)
|
||||
..()
|
||||
|
||||
/datum/species/dullahan/spec_life(mob/living/carbon/human/H)
|
||||
if(QDELETED(myhead))
|
||||
myhead = null
|
||||
H.gib()
|
||||
var/obj/item/bodypart/head/head2 = H.get_bodypart("head")
|
||||
var/obj/item/bodypart/head/head2 = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(head2)
|
||||
myhead = null
|
||||
H.gib()
|
||||
|
||||
@@ -59,13 +59,13 @@
|
||||
regenerate_limbs.UpdateButtonIcon()
|
||||
|
||||
/datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H)
|
||||
var/list/limbs_to_consume = list("r_arm", "l_arm", "r_leg", "l_leg") - H.get_missing_limbs()
|
||||
var/list/limbs_to_consume = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - H.get_missing_limbs()
|
||||
var/obj/item/bodypart/consumed_limb
|
||||
if(!limbs_to_consume.len)
|
||||
H.losebreath++
|
||||
return
|
||||
if(H.get_num_legs()) //Legs go before arms
|
||||
limbs_to_consume -= list("r_arm", "l_arm")
|
||||
limbs_to_consume -= list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)
|
||||
consumed_limb = H.get_bodypart(pick(limbs_to_consume))
|
||||
consumed_limb.drop_limb()
|
||||
to_chat(H, "<span class='userdanger'>Your [consumed_limb] is drawn back into your body, unable to maintain its shape!</span>")
|
||||
|
||||
@@ -208,7 +208,7 @@ There are several things that need to be remembered:
|
||||
/mob/living/carbon/human/update_inv_glasses()
|
||||
remove_overlay(GLASSES_LAYER)
|
||||
|
||||
if(!get_bodypart("head")) //decapitated
|
||||
if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
@@ -235,7 +235,7 @@ There are several things that need to be remembered:
|
||||
/mob/living/carbon/human/update_inv_ears()
|
||||
remove_overlay(EARS_LAYER)
|
||||
|
||||
if(!get_bodypart("head")) //decapitated
|
||||
if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
|
||||
/mob/living/carbon/monkey/attack_paw(mob/living/M)
|
||||
if(..()) //successful monkey bite.
|
||||
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
|
||||
var/dam_zone = pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(M.limb_destroyer)
|
||||
dismembering_strike(M, affecting.body_zone)
|
||||
if(stat != DEAD)
|
||||
@@ -24,7 +24,7 @@
|
||||
L.amount_grown = min(L.amount_grown + damage, L.max_grown)
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
apply_damage(damage, BRUTE, affecting)
|
||||
|
||||
/mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M)
|
||||
@@ -52,7 +52,7 @@
|
||||
"<span class='userdanger'>[M] has knocked out [name]!</span>", null, 5)
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
apply_damage(damage, BRUTE, affecting)
|
||||
add_logs(M, src, "attacked")
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected))
|
||||
add_logs(M, src, "attacked")
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(!dismembering_strike(M, affecting.body_zone)) //Dismemberment successful
|
||||
return 1
|
||||
apply_damage(damage, BRUTE, affecting)
|
||||
@@ -123,12 +123,12 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||
var/dam_zone = dismembering_strike(M, pick("chest", "l_hand", "r_hand", "l_leg", "r_leg"))
|
||||
var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
||||
if(!dam_zone) //Dismemberment successful
|
||||
return TRUE
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
apply_damage(damage, M.melee_damage_type, affecting)
|
||||
|
||||
/mob/living/carbon/monkey/attack_slime(mob/living/simple_animal/slime/M)
|
||||
@@ -136,17 +136,17 @@
|
||||
var/damage = rand(5, 35)
|
||||
if(M.is_adult)
|
||||
damage = rand(20, 40)
|
||||
var/dam_zone = dismembering_strike(M, pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg"))
|
||||
var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
||||
if(!dam_zone) //Dismemberment successful
|
||||
return 1
|
||||
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
|
||||
if(!affecting)
|
||||
affecting = get_bodypart("chest")
|
||||
affecting = get_bodypart(BODY_ZONE_CHEST)
|
||||
apply_damage(damage, BRUTE, affecting)
|
||||
|
||||
/mob/living/carbon/monkey/acid_act(acidpwr, acid_volume, bodyzone_hit)
|
||||
. = 1
|
||||
if(!bodyzone_hit || bodyzone_hit == "head")
|
||||
if(!bodyzone_hit || bodyzone_hit == BODY_ZONE_HEAD)
|
||||
if(wear_mask)
|
||||
if(!(wear_mask.resistance_flags & UNACIDABLE))
|
||||
wear_mask.acid_act(acidpwr, acid_volume)
|
||||
@@ -192,7 +192,7 @@
|
||||
var/max_limb_loss = round(4/severity) //so you don't lose four limbs at severity 3.
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/BP = X
|
||||
if(prob(50/severity) && BP.body_zone != "chest")
|
||||
if(prob(50/severity) && BP.body_zone != BODY_ZONE_CHEST)
|
||||
BP.brute_dam = BP.max_damage
|
||||
BP.dismember()
|
||||
max_limb_loss--
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/mob/living/carbon/monkey/update_hair()
|
||||
remove_overlay(HAIR_LAYER)
|
||||
|
||||
var/obj/item/bodypart/head/HD = get_bodypart("head")
|
||||
var/obj/item/bodypart/head/HD = get_bodypart(BODY_ZONE_HEAD)
|
||||
if(!HD) //Decapitated
|
||||
return
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
/mob/living/carbon/update_inv_wear_mask()
|
||||
remove_overlay(FACEMASK_LAYER)
|
||||
|
||||
if(!get_bodypart("head")) //Decapitated
|
||||
if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
|
||||
return
|
||||
|
||||
if(client && hud_used && hud_used.inv_slots[slot_wear_mask])
|
||||
@@ -159,7 +159,7 @@
|
||||
/mob/living/carbon/update_inv_head()
|
||||
remove_overlay(HEAD_LAYER)
|
||||
|
||||
if(!get_bodypart("head")) //Decapitated
|
||||
if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
|
||||
return
|
||||
|
||||
if(client && hud_used && hud_used.inv_slots[slot_back])
|
||||
|
||||
@@ -446,8 +446,8 @@
|
||||
/mob/living/proc/get_organ_target()
|
||||
var/mob/shooter = src
|
||||
var/t = shooter.zone_selected
|
||||
if ((t in list( "eyes", "mouth" )))
|
||||
t = "head"
|
||||
if ((t in list( BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH )))
|
||||
t = BODY_ZONE_HEAD
|
||||
var/def_zone = ran_zone(t)
|
||||
return def_zone
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE)
|
||||
if(istype(AM, /obj/item))
|
||||
var/obj/item/I = AM
|
||||
var/zone = ran_zone("chest", 65)//Hits a random part of the body, geared towards the chest
|
||||
var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest
|
||||
var/dtype = BRUTE
|
||||
var/volume = I.get_volume_by_throwforce_and_or_w_class()
|
||||
dtype = I.damtype
|
||||
|
||||
@@ -641,12 +641,12 @@
|
||||
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
var/damage = rand(5,15)
|
||||
H.apply_damage(2*damage, BRUTE, "head", run_armor_check("head", "melee"))
|
||||
H.apply_damage(2*damage, BRUTE, "chest", run_armor_check("chest", "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, "l_leg", run_armor_check("l_leg", "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, "r_leg", run_armor_check("r_leg", "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, "l_arm", run_armor_check("l_arm", "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, "r_arm", run_armor_check("r_arm", "melee"))
|
||||
H.apply_damage(2*damage, BRUTE, BODY_ZONE_HEAD, run_armor_check(BODY_ZONE_HEAD, "melee"))
|
||||
H.apply_damage(2*damage, BRUTE, BODY_ZONE_CHEST, run_armor_check(BODY_ZONE_CHEST, "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, BODY_ZONE_L_LEG, run_armor_check(BODY_ZONE_L_LEG, "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, BODY_ZONE_R_LEG, run_armor_check(BODY_ZONE_R_LEG, "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, BODY_ZONE_L_ARM, run_armor_check(BODY_ZONE_L_ARM, "melee"))
|
||||
H.apply_damage(0.5*damage, BRUTE, BODY_ZONE_R_ARM, run_armor_check(BODY_ZONE_R_ARM, "melee"))
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
T.add_mob_blood(H)
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
var/armorval = 0
|
||||
|
||||
if(def_zone)
|
||||
if(def_zone == "head")
|
||||
if(def_zone == BODY_ZONE_HEAD)
|
||||
if(inventory_head)
|
||||
armorval = inventory_head.armor.getRating(type)
|
||||
else
|
||||
@@ -139,7 +139,7 @@
|
||||
return
|
||||
var/remove_from = href_list["remove_inv"]
|
||||
switch(remove_from)
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
if(inventory_head)
|
||||
inventory_head.forceMove(drop_location())
|
||||
inventory_head = null
|
||||
@@ -168,7 +168,7 @@
|
||||
var/add_to = href_list["add_inv"]
|
||||
|
||||
switch(add_to)
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
place_on_head(usr.get_active_held_item(),usr)
|
||||
|
||||
if("back")
|
||||
|
||||
@@ -252,7 +252,7 @@ Difficulty: Hard
|
||||
if(!faction_check_mob(L))
|
||||
to_chat(L, "<span class='userdanger'>[src] rends you!</span>")
|
||||
playsound(T, attack_sound, 100, 1, -1)
|
||||
var/limb_to_hit = L.get_bodypart(pick("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg"))
|
||||
var/limb_to_hit = L.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||
L.apply_damage(25, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, "melee", null, null, armour_penetration))
|
||||
sleep(3)
|
||||
|
||||
|
||||
@@ -628,7 +628,7 @@ Difficulty: Hard
|
||||
flash_color(L.client, "#660099", 1)
|
||||
playsound(L,'sound/weapons/sear.ogg', 50, 1, -4)
|
||||
to_chat(L, "<span class='userdanger'>You're struck by a [name]!</span>")
|
||||
var/limb_to_hit = L.get_bodypart(pick("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg"))
|
||||
var/limb_to_hit = L.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||
var/armor = L.run_armor_check(limb_to_hit, "melee", "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 50, "Your armor was penetrated by [src]!")
|
||||
L.apply_damage(damage, BURN, limb_to_hit, armor)
|
||||
if(ishostile(L))
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
var/parrot_state = PARROT_WANDER //Hunt for a perch when created
|
||||
var/parrot_sleep_max = 25 //The time the parrot sits while perched before looking around. Mosly a way to avoid the parrot's AI in life() being run every single tick.
|
||||
var/parrot_sleep_dur = 25 //Same as above, this is the var that physically counts down
|
||||
var/parrot_dam_zone = list("chest", "head", "l_arm", "l_leg", "r_arm", "r_leg") //For humans, select a bodypart to attack
|
||||
var/parrot_dam_zone = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_ARM, BODY_ZONE_R_LEG) //For humans, select a bodypart to attack
|
||||
|
||||
var/parrot_speed = 5 //"Delay in world ticks between movement." according to byond. Yeah, that's BS but it does directly affect movement. Higher number = slower.
|
||||
var/parrot_lastmove = null //Updates/Stores position of the parrot while it's moving
|
||||
|
||||
@@ -16,22 +16,22 @@
|
||||
|
||||
/proc/check_zone(zone)
|
||||
if(!zone)
|
||||
return "chest"
|
||||
return BODY_ZONE_CHEST
|
||||
switch(zone)
|
||||
if("eyes")
|
||||
zone = "head"
|
||||
if("mouth")
|
||||
zone = "head"
|
||||
if("l_hand")
|
||||
zone = "l_arm"
|
||||
if("r_hand")
|
||||
zone = "r_arm"
|
||||
if("l_foot")
|
||||
zone = "l_leg"
|
||||
if("r_foot")
|
||||
zone = "r_leg"
|
||||
if("groin")
|
||||
zone = "chest"
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
zone = BODY_ZONE_HEAD
|
||||
if(BODY_ZONE_PRECISE_MOUTH)
|
||||
zone = BODY_ZONE_HEAD
|
||||
if(BODY_ZONE_PRECISE_L_HAND)
|
||||
zone = BODY_ZONE_L_ARM
|
||||
if(BODY_ZONE_PRECISE_R_HAND)
|
||||
zone = BODY_ZONE_R_ARM
|
||||
if(BODY_ZONE_PRECISE_L_FOOT)
|
||||
zone = BODY_ZONE_L_LEG
|
||||
if(BODY_ZONE_PRECISE_R_FOOT)
|
||||
zone = BODY_ZONE_R_LEG
|
||||
if(BODY_ZONE_PRECISE_GROIN)
|
||||
zone = BODY_ZONE_CHEST
|
||||
return zone
|
||||
|
||||
|
||||
@@ -45,22 +45,22 @@
|
||||
var/t = rand(1, 18) // randomly pick a different zone, or maybe the same one
|
||||
switch(t)
|
||||
if(1)
|
||||
return "head"
|
||||
return BODY_ZONE_HEAD
|
||||
if(2)
|
||||
return "chest"
|
||||
return BODY_ZONE_CHEST
|
||||
if(3 to 6)
|
||||
return "l_arm"
|
||||
return BODY_ZONE_L_ARM
|
||||
if(7 to 10)
|
||||
return "r_arm"
|
||||
return BODY_ZONE_R_ARM
|
||||
if(11 to 14)
|
||||
return "l_leg"
|
||||
return BODY_ZONE_L_LEG
|
||||
if(15 to 18)
|
||||
return "r_leg"
|
||||
return BODY_ZONE_R_LEG
|
||||
|
||||
return zone
|
||||
|
||||
/proc/above_neck(zone)
|
||||
var/list/zones = list("head", "mouth", "eyes")
|
||||
var/list/zones = list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)
|
||||
if(zones.Find(zone))
|
||||
return 1
|
||||
else
|
||||
|
||||
@@ -282,12 +282,12 @@
|
||||
|
||||
var/next_in_line
|
||||
switch(mob.zone_selected)
|
||||
if("head")
|
||||
next_in_line = "eyes"
|
||||
if("eyes")
|
||||
next_in_line = "mouth"
|
||||
if(BODY_ZONE_HEAD)
|
||||
next_in_line = BODY_ZONE_PRECISE_EYES
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
next_in_line = BODY_ZONE_PRECISE_MOUTH
|
||||
else
|
||||
next_in_line = "head"
|
||||
next_in_line = BODY_ZONE_HEAD
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(next_in_line, mob)
|
||||
@@ -300,7 +300,7 @@
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone("r_arm", mob)
|
||||
selector.set_selected_zone(BODY_ZONE_R_ARM, mob)
|
||||
|
||||
/client/verb/body_chest()
|
||||
set name = "body-chest"
|
||||
@@ -310,7 +310,7 @@
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone("chest", mob)
|
||||
selector.set_selected_zone(BODY_ZONE_CHEST, mob)
|
||||
|
||||
/client/verb/body_l_arm()
|
||||
set name = "body-l-arm"
|
||||
@@ -320,7 +320,7 @@
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone("l_arm", mob)
|
||||
selector.set_selected_zone(BODY_ZONE_L_ARM, mob)
|
||||
|
||||
/client/verb/body_r_leg()
|
||||
set name = "body-r-leg"
|
||||
@@ -330,7 +330,7 @@
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone("r_leg", mob)
|
||||
selector.set_selected_zone(BODY_ZONE_R_LEG, mob)
|
||||
|
||||
/client/verb/body_groin()
|
||||
set name = "body-groin"
|
||||
@@ -340,7 +340,7 @@
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone("groin", mob)
|
||||
selector.set_selected_zone(BODY_ZONE_PRECISE_GROIN, mob)
|
||||
|
||||
/client/verb/body_l_leg()
|
||||
set name = "body-l-leg"
|
||||
@@ -350,7 +350,7 @@
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone("l_leg", mob)
|
||||
selector.set_selected_zone(BODY_ZONE_L_LEG, mob)
|
||||
|
||||
/client/verb/toggle_walk_run()
|
||||
set name = "toggle-walk-run"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
var/obj/item/cavity_object
|
||||
|
||||
var/obj/item/bodypart/chest/CH = get_bodypart("chest")
|
||||
var/obj/item/bodypart/chest/CH = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(CH.cavity_item)
|
||||
cavity_object = CH.cavity_item
|
||||
CH.cavity_item = null
|
||||
@@ -107,7 +107,7 @@
|
||||
var/obj/item/organ/I = X
|
||||
I.Insert(O, 1)
|
||||
|
||||
var/obj/item/bodypart/chest/torso = O.get_bodypart("chest")
|
||||
var/obj/item/bodypart/chest/torso = O.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(cavity_object)
|
||||
torso.cavity_item = cavity_object //cavity item is given to the new chest
|
||||
cavity_object.forceMove(O)
|
||||
@@ -167,7 +167,7 @@
|
||||
|
||||
var/obj/item/cavity_object
|
||||
|
||||
var/obj/item/bodypart/chest/CH = get_bodypart("chest")
|
||||
var/obj/item/bodypart/chest/CH = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(CH.cavity_item)
|
||||
cavity_object = CH.cavity_item
|
||||
CH.cavity_item = null
|
||||
@@ -266,7 +266,7 @@
|
||||
I.Insert(O, 1)
|
||||
|
||||
|
||||
var/obj/item/bodypart/chest/torso = get_bodypart("chest")
|
||||
var/obj/item/bodypart/chest/torso = get_bodypart(BODY_ZONE_CHEST)
|
||||
if(cavity_object)
|
||||
torso.cavity_item = cavity_object //cavity item is given to the new chest
|
||||
cavity_object.forceMove(O)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
user.visible_message("<span class='suicide'>[user] is beheading [user.p_them()]self with [src.name]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
var/obj/item/bodypart/BP = C.get_bodypart("head")
|
||||
var/obj/item/bodypart/BP = C.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(BP)
|
||||
BP.drop_limb()
|
||||
playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
||||
|
||||
@@ -486,7 +486,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
to_chat(C, "<span class='userdanger'>That was a really dumb idea.</span>")
|
||||
var/obj/item/bodypart/head/rip_u = C.get_bodypart("head")
|
||||
var/obj/item/bodypart/head/rip_u = C.get_bodypart(BODY_ZONE_HEAD)
|
||||
rip_u.dismember(BURN) //nice try jedi
|
||||
|
||||
/obj/machinery/power/supermatter_shard/attack_paw(mob/user)
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
return
|
||||
if(!ismob(target) || user.a_intent == INTENT_HARM) //melee attack
|
||||
return
|
||||
if(target == user && user.zone_selected != "mouth") //so we can't shoot ourselves (unless mouth selected)
|
||||
if(target == user && user.zone_selected != BODY_ZONE_PRECISE_MOUTH) //so we can't shoot ourselves (unless mouth selected)
|
||||
return
|
||||
|
||||
if(istype(user))//Check if the user can use the gun, if the user isn't alive(turrets) assume it can.
|
||||
@@ -151,7 +151,7 @@
|
||||
return
|
||||
|
||||
if(flag)
|
||||
if(user.zone_selected == "mouth")
|
||||
if(user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
|
||||
handle_suicide(user, target, params)
|
||||
return
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
if(istype(user))
|
||||
if (user.has_trait(TRAIT_CLUMSY) && prob(40))
|
||||
to_chat(user, "<span class='userdanger'>You shoot yourself in the foot with [src]!</span>")
|
||||
var/shot_leg = pick("l_leg", "r_leg")
|
||||
var/shot_leg = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
process_fire(user, user, FALSE, params, shot_leg)
|
||||
user.dropItemToGround(src, TRUE)
|
||||
return
|
||||
@@ -429,7 +429,7 @@
|
||||
|
||||
semicd = TRUE
|
||||
|
||||
if(!do_mob(user, target, 120) || user.zone_selected != "mouth")
|
||||
if(!do_mob(user, target, 120) || user.zone_selected != BODY_ZONE_PRECISE_MOUTH)
|
||||
if(user)
|
||||
if(user == target)
|
||||
user.visible_message("<span class='notice'>[user] decided not to shoot.</span>")
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
sleep(25)
|
||||
if(user.is_holding(src))
|
||||
var/turf/T = get_turf(user)
|
||||
process_fire(user, user, FALSE, null, "head")
|
||||
process_fire(user, user, FALSE, null, BODY_ZONE_HEAD)
|
||||
user.visible_message("<span class='suicide'>[user] blows [user.p_their()] brain[user.p_s()] out with [src]!</span>")
|
||||
var/turf/target = get_ranged_target_turf(user, turn(user.dir, 180), BRAINS_BLOWN_THROW_RANGE)
|
||||
B.Remove(user)
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
playsound(user, fire_sound, 50, 1)
|
||||
var/zone = check_zone(user.zone_selected)
|
||||
var/obj/item/bodypart/affecting = H.get_bodypart(zone)
|
||||
if(zone == "head" || zone == "eyes" || zone == "mouth")
|
||||
if(zone == BODY_ZONE_HEAD || zone == BODY_ZONE_PRECISE_EYES || zone == BODY_ZONE_PRECISE_MOUTH)
|
||||
shoot_self(user, affecting)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user.name] cowardly fires [src] at [user.p_their()] [affecting.name]!</span>", "<span class='userdanger'>You cowardly fire [src] at your [affecting.name]!</span>", "<span class='italics'>You hear a gunshot!</span>")
|
||||
@@ -228,7 +228,7 @@
|
||||
user.visible_message("<span class='danger'>*click*</span>")
|
||||
playsound(src, "gun_dry_fire", 30, 1)
|
||||
|
||||
/obj/item/gun/ballistic/revolver/russian/proc/shoot_self(mob/living/carbon/human/user, affecting = "head")
|
||||
/obj/item/gun/ballistic/revolver/russian/proc/shoot_self(mob/living/carbon/human/user, affecting = BODY_ZONE_HEAD)
|
||||
user.apply_damage(300, BRUTE, affecting)
|
||||
user.visible_message("<span class='danger'>[user.name] fires [src] at [user.p_their()] head!</span>", "<span class='userdanger'>You fire [src] at your head!</span>", "<span class='italics'>You hear a gunshot!</span>")
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
/obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user)
|
||||
if((user.has_trait(TRAIT_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown"))
|
||||
return ..()
|
||||
if(process_fire(user, user, FALSE, null, "head"))
|
||||
if(process_fire(user, user, FALSE, null, BODY_ZONE_HEAD))
|
||||
user.visible_message("<span class='warning'>[user] somehow manages to shoot [user.p_them()]self in the face!</span>", "<span class='userdanger'>You somehow shoot yourself in the face! How the hell?!</span>")
|
||||
user.emote("scream")
|
||||
user.drop_all_held_items()
|
||||
|
||||
@@ -332,7 +332,7 @@
|
||||
return
|
||||
if(!ismob(target) || user.a_intent == INTENT_HARM) //melee attack
|
||||
return
|
||||
if(target == user && user.zone_selected != "mouth") //so we can't shoot ourselves (unless mouth selected)
|
||||
if(target == user && user.zone_selected != BODY_ZONE_PRECISE_MOUTH) //so we can't shoot ourselves (unless mouth selected)
|
||||
return
|
||||
if(!passthrough && (aiming_time > aiming_time_fire_threshold))
|
||||
return
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
if(get_bodypart(hit_zone))
|
||||
return hit_zone
|
||||
else //when a limb is missing the damage is actually passed to the chest
|
||||
return "chest"
|
||||
return BODY_ZONE_CHEST
|
||||
|
||||
/obj/item/projectile/proc/prehit(atom/target)
|
||||
return TRUE
|
||||
|
||||
@@ -257,7 +257,7 @@
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src] malfunctions and destroys [exp_on], lashing its arms out at nearby people!</span>")
|
||||
for(var/mob/living/m in oview(1, src))
|
||||
m.apply_damage(15, BRUTE, pick("head","chest","groin"))
|
||||
m.apply_damage(15, BRUTE, pick(BODY_ZONE_HEAD,BODY_ZONE_CHEST,BODY_ZONE_PRECISE_GROIN))
|
||||
investigate_log("Experimentor dealt minor brute to [m].", INVESTIGATE_EXPERIMENTOR)
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
|
||||
@@ -390,7 +390,7 @@
|
||||
visible_message("<span class='warning'>[src] malfunctions, activating its emergency coolant systems!</span>")
|
||||
throwSmoke(loc)
|
||||
for(var/mob/living/m in oview(1, src))
|
||||
m.apply_damage(5, BURN, pick("head","chest","groin"))
|
||||
m.apply_damage(5, BURN, pick(BODY_ZONE_HEAD,BODY_ZONE_CHEST,BODY_ZONE_PRECISE_GROIN))
|
||||
investigate_log("Experimentor has dealt minor burn damage to [m]", INVESTIGATE_EXPERIMENTOR)
|
||||
ejectItem()
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -503,7 +503,7 @@
|
||||
visible_message("<span class='warning'>Experimentor draws the life essence of those nearby!</span>")
|
||||
for(var/mob/living/m in view(4,src))
|
||||
to_chat(m, "<span class='danger'>You feel your flesh being torn from you, mists of blood drifting to [src]!</span>")
|
||||
m.apply_damage(50, BRUTE, "chest")
|
||||
m.apply_damage(50, BRUTE, BODY_ZONE_CHEST)
|
||||
investigate_log("Experimentor has taken 50 brute a blood sacrifice from [m]", INVESTIGATE_EXPERIMENTOR)
|
||||
if(globalMalf > 51 && globalMalf < 75)
|
||||
visible_message("<span class='warning'>[src] encounters a run-time error!</span>")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/ground_nerves,
|
||||
/datum/surgery_step/close)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
bioware_target = BIOWARE_NERVES
|
||||
|
||||
/datum/surgery_step/ground_nerves
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/splice_nerves,
|
||||
/datum/surgery_step/close)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
bioware_target = BIOWARE_NERVES
|
||||
|
||||
/datum/surgery_step/splice_nerves
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/thread_veins,
|
||||
/datum/surgery_step/close)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
bioware_target = BIOWARE_CIRCULATION
|
||||
|
||||
/datum/surgery_step/thread_veins
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human)
|
||||
possible_locs = list("head")
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
|
||||
/datum/surgery/advanced/brainwashing/can_start(mob/user, mob/living/carbon/target)
|
||||
if(!..())
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("head")
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
/datum/surgery/advanced/lobotomy/can_start(mob/user, mob/living/carbon/target)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/datum/surgery_step/bionecrosis,
|
||||
/datum/surgery_step/close)
|
||||
|
||||
possible_locs = list("head")
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
|
||||
/datum/surgery/advanced/necrotic_revival/can_start(mob/user, mob/living/carbon/target)
|
||||
. = ..()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("head")
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
/datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
/datum/surgery_step/reconstruct
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("head")
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
/datum/surgery/advanced/revival/can_start(mob/user, mob/living/carbon/target)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
|
||||
/datum/surgery/advanced/viral_bonding/can_start(mob/user, mob/living/carbon/target)
|
||||
if(!..())
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "amputation"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/sever_limb)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("r_arm", "l_arm", "l_leg", "r_leg", "head")
|
||||
possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/mob/living/carbon/owner = null
|
||||
var/mob/living/carbon/original_owner = null
|
||||
var/status = BODYPART_ORGANIC
|
||||
var/body_zone //"chest", "l_arm", etc , used for def_zone
|
||||
var/body_zone //BODY_ZONE_CHEST, BODY_ZONE_L_ARM, etc , used for def_zone
|
||||
var/aux_zone // used for hands
|
||||
var/aux_layer
|
||||
var/body_part = null //bitflag used to check which clothes cover this bodypart
|
||||
@@ -316,7 +316,7 @@
|
||||
|
||||
var/icon_gender = (body_gender == FEMALE) ? "f" : "m" //gender of the icon, if applicable
|
||||
|
||||
if((body_zone != "head" && body_zone != "chest"))
|
||||
if((body_zone != BODY_ZONE_HEAD && body_zone != BODY_ZONE_CHEST))
|
||||
should_draw_gender = FALSE
|
||||
|
||||
if(status == BODYPART_ORGANIC)
|
||||
@@ -359,11 +359,11 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/item/bodypart/chest
|
||||
name = "chest"
|
||||
name = BODY_ZONE_CHEST
|
||||
desc = "It's impolite to stare at a person's chest."
|
||||
icon_state = "default_human_chest"
|
||||
max_damage = 200
|
||||
body_zone = "chest"
|
||||
body_zone = BODY_ZONE_CHEST
|
||||
body_part = CHEST
|
||||
px_x = 0
|
||||
px_y = 0
|
||||
@@ -413,9 +413,9 @@
|
||||
icon_state = "default_human_l_arm"
|
||||
attack_verb = list("slapped", "punched")
|
||||
max_damage = 50
|
||||
body_zone ="l_arm"
|
||||
body_zone =BODY_ZONE_L_ARM
|
||||
body_part = ARM_LEFT
|
||||
aux_zone = "l_hand"
|
||||
aux_zone = BODY_ZONE_PRECISE_L_HAND
|
||||
aux_layer = HANDS_PART_LAYER
|
||||
held_index = 1
|
||||
px_x = -6
|
||||
@@ -449,9 +449,9 @@
|
||||
icon_state = "default_human_r_arm"
|
||||
attack_verb = list("slapped", "punched")
|
||||
max_damage = 50
|
||||
body_zone = "r_arm"
|
||||
body_zone = BODY_ZONE_R_ARM
|
||||
body_part = ARM_RIGHT
|
||||
aux_zone = "r_hand"
|
||||
aux_zone = BODY_ZONE_PRECISE_R_HAND
|
||||
aux_layer = HANDS_PART_LAYER
|
||||
held_index = 2
|
||||
px_x = 6
|
||||
@@ -485,7 +485,7 @@
|
||||
icon_state = "default_human_l_leg"
|
||||
attack_verb = list("kicked", "stomped")
|
||||
max_damage = 50
|
||||
body_zone = "l_leg"
|
||||
body_zone = BODY_ZONE_L_LEG
|
||||
body_part = LEG_LEFT
|
||||
px_x = -2
|
||||
px_y = 12
|
||||
@@ -523,7 +523,7 @@
|
||||
icon_state = "default_human_r_leg"
|
||||
attack_verb = list("kicked", "stomped")
|
||||
max_damage = 50
|
||||
body_zone = "r_leg"
|
||||
body_zone = BODY_ZONE_R_LEG
|
||||
body_part = LEG_RIGHT
|
||||
px_x = 2
|
||||
px_y = 12
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
if(C.has_trait(TRAIT_NODISMEMBER))
|
||||
return FALSE
|
||||
|
||||
var/obj/item/bodypart/affecting = C.get_bodypart("chest")
|
||||
var/obj/item/bodypart/affecting = C.get_bodypart(BODY_ZONE_CHEST)
|
||||
affecting.receive_damage(CLAMP(brute_dam/2, 15, 50), CLAMP(burn_dam/2, 0, 50)) //Damage the chest based on limb's existing damage
|
||||
C.visible_message("<span class='danger'><B>[C]'s [src.name] has been violently dismembered!</B></span>")
|
||||
C.emote("scream")
|
||||
@@ -61,7 +61,7 @@
|
||||
for(var/X in C.internal_organs)
|
||||
var/obj/item/organ/O = X
|
||||
var/org_zone = check_zone(O.zone)
|
||||
if(org_zone != "chest")
|
||||
if(org_zone != BODY_ZONE_CHEST)
|
||||
continue
|
||||
O.Remove(C)
|
||||
O.forceMove(T)
|
||||
@@ -347,7 +347,7 @@
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/regenerate_limbs(noheal, list/excluded_limbs)
|
||||
var/list/limb_list = list("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg")
|
||||
var/list/limb_list = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)
|
||||
if(excluded_limbs)
|
||||
limb_list -= excluded_limbs
|
||||
for(var/Z in limb_list)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/obj/item/bodypart/head
|
||||
name = "head"
|
||||
name = BODY_ZONE_HEAD
|
||||
desc = "Didn't make sense not to live for fun, your brain gets smart but your head gets dumb."
|
||||
icon = 'icons/mob/human_parts.dmi'
|
||||
icon_state = "default_human_head"
|
||||
max_damage = 200
|
||||
body_zone = "head"
|
||||
body_zone = BODY_ZONE_HEAD
|
||||
body_part = HEAD
|
||||
w_class = WEIGHT_CLASS_BULKY //Quite a hefty load
|
||||
slowdown = 1 //Balancing measure
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
/mob/living/carbon/get_bodypart(zone)
|
||||
if(!zone)
|
||||
zone = "chest"
|
||||
zone = BODY_ZONE_CHEST
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/L = X
|
||||
if(L.body_zone == zone)
|
||||
@@ -97,14 +97,14 @@
|
||||
return list()
|
||||
|
||||
/mob/living/carbon/get_missing_limbs()
|
||||
var/list/full = list("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg")
|
||||
var/list/full = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)
|
||||
for(var/zone in full)
|
||||
if(get_bodypart(zone))
|
||||
full -= zone
|
||||
return full
|
||||
|
||||
/mob/living/carbon/alien/larva/get_missing_limbs()
|
||||
var/list/full = list("head", "chest")
|
||||
var/list/full = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST)
|
||||
for(var/zone in full)
|
||||
if(get_bodypart(zone))
|
||||
full -= zone
|
||||
@@ -137,17 +137,17 @@
|
||||
/mob/living/carbon/proc/newBodyPart(zone, robotic, fixed_icon)
|
||||
var/obj/item/bodypart/L
|
||||
switch(zone)
|
||||
if("l_arm")
|
||||
if(BODY_ZONE_L_ARM)
|
||||
L = new /obj/item/bodypart/l_arm()
|
||||
if("r_arm")
|
||||
if(BODY_ZONE_R_ARM)
|
||||
L = new /obj/item/bodypart/r_arm()
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
L = new /obj/item/bodypart/head()
|
||||
if("l_leg")
|
||||
if(BODY_ZONE_L_LEG)
|
||||
L = new /obj/item/bodypart/l_leg()
|
||||
if("r_leg")
|
||||
if(BODY_ZONE_R_LEG)
|
||||
L = new /obj/item/bodypart/r_leg()
|
||||
if("chest")
|
||||
if(BODY_ZONE_CHEST)
|
||||
L = new /obj/item/bodypart/chest()
|
||||
if(L)
|
||||
L.update_limb(fixed_icon, src)
|
||||
@@ -158,17 +158,17 @@
|
||||
/mob/living/carbon/monkey/newBodyPart(zone, robotic, fixed_icon)
|
||||
var/obj/item/bodypart/L
|
||||
switch(zone)
|
||||
if("l_arm")
|
||||
if(BODY_ZONE_L_ARM)
|
||||
L = new /obj/item/bodypart/l_arm/monkey()
|
||||
if("r_arm")
|
||||
if(BODY_ZONE_R_ARM)
|
||||
L = new /obj/item/bodypart/r_arm/monkey()
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
L = new /obj/item/bodypart/head/monkey()
|
||||
if("l_leg")
|
||||
if(BODY_ZONE_L_LEG)
|
||||
L = new /obj/item/bodypart/l_leg/monkey()
|
||||
if("r_leg")
|
||||
if(BODY_ZONE_R_LEG)
|
||||
L = new /obj/item/bodypart/r_leg/monkey()
|
||||
if("chest")
|
||||
if(BODY_ZONE_CHEST)
|
||||
L = new /obj/item/bodypart/chest/monkey()
|
||||
if(L)
|
||||
L.update_limb(fixed_icon, src)
|
||||
@@ -179,9 +179,9 @@
|
||||
/mob/living/carbon/alien/larva/newBodyPart(zone, robotic, fixed_icon)
|
||||
var/obj/item/bodypart/L
|
||||
switch(zone)
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
L = new /obj/item/bodypart/head/larva()
|
||||
if("chest")
|
||||
if(BODY_ZONE_CHEST)
|
||||
L = new /obj/item/bodypart/chest/larva()
|
||||
if(L)
|
||||
L.update_limb(fixed_icon, src)
|
||||
@@ -192,17 +192,17 @@
|
||||
/mob/living/carbon/alien/humanoid/newBodyPart(zone, robotic, fixed_icon)
|
||||
var/obj/item/bodypart/L
|
||||
switch(zone)
|
||||
if("l_arm")
|
||||
if(BODY_ZONE_L_ARM)
|
||||
L = new /obj/item/bodypart/l_arm/alien()
|
||||
if("r_arm")
|
||||
if(BODY_ZONE_R_ARM)
|
||||
L = new /obj/item/bodypart/r_arm/alien()
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
L = new /obj/item/bodypart/head/alien()
|
||||
if("l_leg")
|
||||
if(BODY_ZONE_L_LEG)
|
||||
L = new /obj/item/bodypart/l_leg/alien()
|
||||
if("r_leg")
|
||||
if(BODY_ZONE_R_LEG)
|
||||
L = new /obj/item/bodypart/r_leg/alien()
|
||||
if("chest")
|
||||
if(BODY_ZONE_CHEST)
|
||||
L = new /obj/item/bodypart/chest/alien()
|
||||
if(L)
|
||||
L.update_limb(fixed_icon, src)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("head")
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
/datum/surgery_step/fix_brain
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "cavity implant"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/handle_cavity, /datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
|
||||
|
||||
//handle cavity
|
||||
@@ -14,7 +14,7 @@
|
||||
var/obj/item/IC = null
|
||||
|
||||
/datum/surgery_step/handle_cavity/preop(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/obj/item/bodypart/chest/CH = target.get_bodypart("chest")
|
||||
var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
IC = CH.cavity_item
|
||||
if(tool)
|
||||
if(istype(tool, /obj/item/surgical_drapes) || istype(tool, /obj/item/bedsheet))
|
||||
@@ -27,7 +27,7 @@
|
||||
user.visible_message("[user] checks for items in [target]'s [target_zone].", "<span class='notice'>You check for items in [target]'s [target_zone]...</span>")
|
||||
|
||||
/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/obj/item/bodypart/chest/CH = target.get_bodypart("chest")
|
||||
var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(tool)
|
||||
if(IC || tool.w_class > WEIGHT_CLASS_NORMAL || (tool.flags_1 & NODROP_1) || istype(tool, /obj/item/organ))
|
||||
to_chat(user, "<span class='warning'>You can't seem to fit [tool] in [target]'s [target_zone]!</span>")
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
/datum/surgery/core_removal
|
||||
name = "core removal"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/extract_core)
|
||||
species = list(/mob/living/simple_animal/slime)
|
||||
possible_locs = list("r_arm","l_arm","r_leg","l_leg","chest","head")
|
||||
|
||||
/datum/surgery/core_removal/can_start(mob/user, mob/living/target)
|
||||
if(target.stat == DEAD)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
//extract brain
|
||||
/datum/surgery_step/extract_core
|
||||
name = "extract core"
|
||||
implements = list(/obj/item/hemostat = 100, TOOL_CROWBAR = 100)
|
||||
time = 16
|
||||
|
||||
/datum/surgery_step/extract_core/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("[user] begins to extract a core from [target].", "<span class='notice'>You begin to extract a core from [target]...</span>")
|
||||
|
||||
/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/mob/living/simple_animal/slime/slime = target
|
||||
if(slime.cores > 0)
|
||||
slime.cores--
|
||||
user.visible_message("[user] successfully extracts a core from [target]!", "<span class='notice'>You successfully extract a core from [target]. [slime.cores] core\s remaining.</span>")
|
||||
|
||||
new slime.coretype(slime.loc)
|
||||
|
||||
if(slime.cores <= 0)
|
||||
slime.icon_state = "[slime.colour] baby slime dead-nocore"
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
else
|
||||
/datum/surgery/core_removal
|
||||
name = "core removal"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/extract_core)
|
||||
species = list(/mob/living/simple_animal/slime)
|
||||
possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
|
||||
|
||||
/datum/surgery/core_removal/can_start(mob/user, mob/living/target)
|
||||
if(target.stat == DEAD)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
//extract brain
|
||||
/datum/surgery_step/extract_core
|
||||
name = "extract core"
|
||||
implements = list(/obj/item/hemostat = 100, TOOL_CROWBAR = 100)
|
||||
time = 16
|
||||
|
||||
/datum/surgery_step/extract_core/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("[user] begins to extract a core from [target].", "<span class='notice'>You begin to extract a core from [target]...</span>")
|
||||
|
||||
/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/mob/living/simple_animal/slime/slime = target
|
||||
if(slime.cores > 0)
|
||||
slime.cores--
|
||||
user.visible_message("[user] successfully extracts a core from [target]!", "<span class='notice'>You successfully extract a core from [target]. [slime.cores] core\s remaining.</span>")
|
||||
|
||||
new slime.coretype(slime.loc)
|
||||
|
||||
if(slime.cores <= 0)
|
||||
slime.icon_state = "[slime.colour] baby slime dead-nocore"
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There aren't any cores left in [target]!</span>")
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/surgery/dental_implant
|
||||
name = "dental implant"
|
||||
steps = list(/datum/surgery_step/drill, /datum/surgery_step/insert_pill)
|
||||
possible_locs = list("mouth")
|
||||
possible_locs = list(BODY_ZONE_PRECISE_MOUTH)
|
||||
|
||||
/datum/surgery_step/insert_pill
|
||||
name = "insert pill"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "eye surgery"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/fix_eyes, /datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("eyes")
|
||||
possible_locs = list(BODY_ZONE_PRECISE_EYES)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
//fix eyes
|
||||
|
||||
@@ -128,43 +128,43 @@
|
||||
eyesmouth_covered |= I.flags_cover
|
||||
|
||||
switch(location)
|
||||
if("head")
|
||||
if(BODY_ZONE_HEAD)
|
||||
if(covered_locations & HEAD)
|
||||
return 0
|
||||
if("eyes")
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
if(covered_locations & HEAD || face_covered & HIDEEYES || eyesmouth_covered & GLASSESCOVERSEYES)
|
||||
return 0
|
||||
if("mouth")
|
||||
if(BODY_ZONE_PRECISE_MOUTH)
|
||||
if(covered_locations & HEAD || face_covered & HIDEFACE || eyesmouth_covered & MASKCOVERSMOUTH || eyesmouth_covered & HEADCOVERSMOUTH)
|
||||
return 0
|
||||
if("chest")
|
||||
if(BODY_ZONE_CHEST)
|
||||
if(covered_locations & CHEST)
|
||||
return 0
|
||||
if("groin")
|
||||
if(BODY_ZONE_PRECISE_GROIN)
|
||||
if(covered_locations & GROIN)
|
||||
return 0
|
||||
if("l_arm")
|
||||
if(BODY_ZONE_L_ARM)
|
||||
if(covered_locations & ARM_LEFT)
|
||||
return 0
|
||||
if("r_arm")
|
||||
if(BODY_ZONE_R_ARM)
|
||||
if(covered_locations & ARM_RIGHT)
|
||||
return 0
|
||||
if("l_leg")
|
||||
if(BODY_ZONE_L_LEG)
|
||||
if(covered_locations & LEG_LEFT)
|
||||
return 0
|
||||
if("r_leg")
|
||||
if(BODY_ZONE_R_LEG)
|
||||
if(covered_locations & LEG_RIGHT)
|
||||
return 0
|
||||
if("l_hand")
|
||||
if(BODY_ZONE_PRECISE_L_HAND)
|
||||
if(covered_locations & HAND_LEFT)
|
||||
return 0
|
||||
if("r_hand")
|
||||
if(BODY_ZONE_PRECISE_R_HAND)
|
||||
if(covered_locations & HAND_RIGHT)
|
||||
return 0
|
||||
if("l_foot")
|
||||
if(BODY_ZONE_PRECISE_L_FOOT)
|
||||
if(covered_locations & FOOT_LEFT)
|
||||
return 0
|
||||
if("r_foot")
|
||||
if(BODY_ZONE_PRECISE_R_FOOT)
|
||||
if(covered_locations & FOOT_RIGHT)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "implant removal"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
|
||||
|
||||
//extract implant
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
name = "augmentation"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/add_limb)
|
||||
species = list(/mob/living/carbon/human)
|
||||
possible_locs = list("r_arm","l_arm","r_leg","l_leg","chest","head")
|
||||
possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
|
||||
requires_real_bodypart = TRUE
|
||||
|
||||
//SURGERY STEP SUCCESSES
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/surgery/lipoplasty
|
||||
name = "lipoplasty"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/cut_fat, /datum/surgery_step/remove_fat, /datum/surgery_step/close)
|
||||
possible_locs = list("chest")
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
|
||||
/datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target)
|
||||
if(target.has_trait(TRAIT_FAT))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/surgery/organ_manipulation
|
||||
name = "organ manipulation"
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list("chest", "head")
|
||||
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD)
|
||||
requires_real_bodypart = 1
|
||||
steps = list(
|
||||
/datum/surgery_step/incise,
|
||||
@@ -15,7 +15,7 @@
|
||||
)
|
||||
|
||||
/datum/surgery/organ_manipulation/soft
|
||||
possible_locs = list("groin", "eyes", "mouth", "l_arm", "r_arm")
|
||||
possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
|
||||
steps = list(
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/datum/surgery/organ_manipulation/alien
|
||||
name = "alien organ manipulation"
|
||||
possible_locs = list("chest", "head", "groin", "eyes", "mouth", "l_arm", "r_arm")
|
||||
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
|
||||
species = list(/mob/living/carbon/alien/humanoid)
|
||||
steps = list(
|
||||
/datum/surgery_step/saw,
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
/datum/surgery/organ_manipulation/mechanic
|
||||
name = "prosthesis organ manipulation"
|
||||
possible_locs = list("chest", "head")
|
||||
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = BODYPART_ROBOTIC
|
||||
steps = list(
|
||||
/datum/surgery_step/mechanic_open,
|
||||
@@ -53,7 +53,7 @@
|
||||
)
|
||||
|
||||
/datum/surgery/organ_manipulation/mechanic/soft
|
||||
possible_locs = list("groin", "eyes", "mouth", "l_arm", "r_arm")
|
||||
possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
|
||||
steps = list(
|
||||
/datum/surgery_step/mechanic_open,
|
||||
/datum/surgery_step/open_hatch,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/organ/appendix
|
||||
name = "appendix"
|
||||
icon_state = "appendix"
|
||||
zone = "groin"
|
||||
zone = BODY_ZONE_PRECISE_GROIN
|
||||
slot = ORGAN_SLOT_APPENDIX
|
||||
var/inflamed = 0
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/organ/cyberimp/arm
|
||||
name = "arm-mounted implant"
|
||||
desc = "You shouldn't see this! Adminhelp and report this as an issue on github!"
|
||||
zone = "r_arm"
|
||||
zone = BODY_ZONE_R_ARM
|
||||
icon_state = "implant-toolkit"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
@@ -24,31 +24,31 @@
|
||||
|
||||
/obj/item/organ/cyberimp/arm/proc/SetSlotFromZone()
|
||||
switch(zone)
|
||||
if("l_arm")
|
||||
if(BODY_ZONE_L_ARM)
|
||||
slot = ORGAN_SLOT_LEFT_ARM_AUG
|
||||
if("r_arm")
|
||||
if(BODY_ZONE_R_ARM)
|
||||
slot = ORGAN_SLOT_RIGHT_ARM_AUG
|
||||
else
|
||||
CRASH("Invalid zone for [type]")
|
||||
|
||||
/obj/item/organ/cyberimp/arm/update_icon()
|
||||
if(zone == "r_arm")
|
||||
if(zone == BODY_ZONE_R_ARM)
|
||||
transform = null
|
||||
else // Mirroring the icon
|
||||
transform = matrix(-1, 0, 0, 0, 1, 0)
|
||||
|
||||
/obj/item/organ/cyberimp/arm/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='info'>[src] is assembled in the [zone == "r_arm" ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.</span>")
|
||||
to_chat(user, "<span class='info'>[src] is assembled in the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.</span>")
|
||||
|
||||
/obj/item/organ/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/I)
|
||||
I.play_tool_sound(src)
|
||||
if(zone == "r_arm")
|
||||
zone = "l_arm"
|
||||
if(zone == BODY_ZONE_R_ARM)
|
||||
zone = BODY_ZONE_L_ARM
|
||||
else
|
||||
zone = "r_arm"
|
||||
zone = BODY_ZONE_R_ARM
|
||||
SetSlotFromZone()
|
||||
to_chat(user, "<span class='notice'>You modify [src] to be installed on the [zone == "r_arm" ? "right" : "left"] arm.</span>")
|
||||
to_chat(user, "<span class='notice'>You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/item/organ/cyberimp/arm/Remove(mob/living/carbon/M, special = 0)
|
||||
@@ -66,8 +66,8 @@
|
||||
if(!holder || (holder in src))
|
||||
return
|
||||
|
||||
owner.visible_message("<span class='notice'>[owner] retracts [holder] back into [owner.p_their()] [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>[holder] snaps back into your [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
owner.visible_message("<span class='notice'>[owner] retracts [holder] back into [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>[holder] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='italics'>You hear a short mechanical noise.</span>")
|
||||
|
||||
if(istype(holder, /obj/item/device/assembly/flash/armimplant))
|
||||
@@ -102,7 +102,7 @@
|
||||
else
|
||||
to_chat(owner, "<span class='notice'>You drop [arm_item] to activate [src]!</span>")
|
||||
|
||||
var/result = (zone == "r_arm" ? owner.put_in_r_hand(holder) : owner.put_in_l_hand(holder))
|
||||
var/result = (zone == BODY_ZONE_R_ARM ? owner.put_in_r_hand(holder) : owner.put_in_l_hand(holder))
|
||||
if(!result)
|
||||
to_chat(owner, "<span class='warning'>Your [name] fails to activate!</span>")
|
||||
return
|
||||
@@ -110,8 +110,8 @@
|
||||
// Activate the hand that now holds our item.
|
||||
owner.swap_hand(result)//... or the 1st hand if the index gets lost somehow
|
||||
|
||||
owner.visible_message("<span class='notice'>[owner] extends [holder] from [owner.p_their()] [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>You extend [holder] from your [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
owner.visible_message("<span class='notice'>[owner] extends [holder] from [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>You extend [holder] from your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='italics'>You hear a short mechanical noise.</span>")
|
||||
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
|
||||
@@ -136,9 +136,9 @@
|
||||
/obj/item/organ/cyberimp/arm/gun/emp_act(severity)
|
||||
if(prob(30/severity) && owner && !crit_fail)
|
||||
Retract()
|
||||
owner.visible_message("<span class='danger'>A loud bang comes from [owner]\'s [zone == "r_arm" ? "right" : "left"] arm!</span>")
|
||||
owner.visible_message("<span class='danger'>A loud bang comes from [owner]\'s [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm!</span>")
|
||||
playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, 1)
|
||||
to_chat(owner, "<span class='userdanger'>You feel an explosion erupt inside your [zone == "r_arm" ? "right" : "left"] arm as your implant breaks!</span>")
|
||||
to_chat(owner, "<span class='userdanger'>You feel an explosion erupt inside your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm as your implant breaks!</span>")
|
||||
owner.adjust_fire_stacks(20)
|
||||
owner.IgniteMob()
|
||||
owner.adjustFireLoss(25)
|
||||
@@ -154,7 +154,7 @@
|
||||
contents = newlist(/obj/item/gun/energy/laser/mounted)
|
||||
|
||||
/obj/item/organ/cyberimp/arm/gun/laser/l
|
||||
zone = "l_arm"
|
||||
zone = BODY_ZONE_L_ARM
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/arm/gun/taser
|
||||
@@ -164,7 +164,7 @@
|
||||
contents = newlist(/obj/item/gun/energy/e_gun/advtaser/mounted)
|
||||
|
||||
/obj/item/organ/cyberimp/arm/gun/taser/l
|
||||
zone = "l_arm"
|
||||
zone = BODY_ZONE_L_ARM
|
||||
|
||||
/obj/item/organ/cyberimp/arm/toolset
|
||||
name = "integrated toolset implant"
|
||||
@@ -173,7 +173,7 @@
|
||||
/obj/item/crowbar/cyborg, /obj/item/wirecutters/cyborg, /obj/item/device/multitool/cyborg)
|
||||
|
||||
/obj/item/organ/cyberimp/arm/toolset/l
|
||||
zone = "l_arm"
|
||||
zone = BODY_ZONE_L_ARM
|
||||
|
||||
/obj/item/organ/cyberimp/arm/toolset/emag_act()
|
||||
if(!(locate(/obj/item/kitchen/knife/combat/cyborg) in items_list))
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Implants for the organs in your torso."
|
||||
icon_state = "chest_implant"
|
||||
implant_overlay = "chest_implant_overlay"
|
||||
zone = "chest"
|
||||
zone = BODY_ZONE_CHEST
|
||||
|
||||
/obj/item/organ/cyberimp/chest/nutriment
|
||||
name = "Nutriment pump implant"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "eye_implant"
|
||||
implant_overlay = "eye_implant_overlay"
|
||||
slot = ORGAN_SLOT_EYES
|
||||
zone = "eyes"
|
||||
zone = BODY_ZONE_PRECISE_EYES
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
// HUD implants
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
desc = "Injectors of extra sub-routines for the brain."
|
||||
icon_state = "brain_implant"
|
||||
implant_overlay = "brain_implant_overlay"
|
||||
zone = "head"
|
||||
zone = BODY_ZONE_HEAD
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/organ/cyberimp/brain/emp_act(severity)
|
||||
@@ -125,7 +125,7 @@
|
||||
|
||||
//[[[[MOUTH]]]]
|
||||
/obj/item/organ/cyberimp/mouth
|
||||
zone = "mouth"
|
||||
zone = BODY_ZONE_PRECISE_MOUTH
|
||||
|
||||
/obj/item/organ/cyberimp/mouth/breathing_tube
|
||||
name = "breathing tube implant"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "ears"
|
||||
icon_state = "ears"
|
||||
desc = "There are three parts to the ear. Inner, middle and outer. Only one of these parts should be normally visible."
|
||||
zone = "head"
|
||||
zone = BODY_ZONE_HEAD
|
||||
slot = ORGAN_SLOT_EARS
|
||||
gender = PLURAL
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/obj/item/organ/eyes
|
||||
name = "eyes"
|
||||
name = BODY_ZONE_PRECISE_EYES
|
||||
icon_state = "eyeballs"
|
||||
desc = "I see you!"
|
||||
zone = "eyes"
|
||||
zone = BODY_ZONE_PRECISE_EYES
|
||||
slot = ORGAN_SLOT_EYES
|
||||
gender = PLURAL
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "heart"
|
||||
desc = "I feel bad for the heartless bastard who lost this."
|
||||
icon_state = "heart-on"
|
||||
zone = "chest"
|
||||
zone = BODY_ZONE_CHEST
|
||||
slot = ORGAN_SLOT_HEART
|
||||
// Heart attack code is in code/modules/mob/living/carbon/human/life.dm
|
||||
var/beating = 1
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
/mob/proc/getorgan(typepath)
|
||||
return
|
||||
|
||||
/mob/proc/getorganszone(zone)
|
||||
return
|
||||
|
||||
/mob/proc/getorganslot(slot)
|
||||
return
|
||||
|
||||
/mob/living/carbon/getorgan(typepath)
|
||||
return (locate(typepath) in internal_organs)
|
||||
|
||||
/mob/living/carbon/getorganszone(zone, subzones = 0)
|
||||
var/list/returnorg = list()
|
||||
if(subzones)
|
||||
// Include subzones - groin for chest, eyes and mouth for head
|
||||
if(zone == "head")
|
||||
returnorg = getorganszone("eyes") + getorganszone("mouth")
|
||||
if(zone == "chest")
|
||||
returnorg = getorganszone("groin")
|
||||
|
||||
for(var/X in internal_organs)
|
||||
var/obj/item/organ/O = X
|
||||
if(zone == O.zone)
|
||||
returnorg += O
|
||||
return returnorg
|
||||
|
||||
/mob/living/carbon/getorganslot(slot)
|
||||
/mob/proc/getorgan(typepath)
|
||||
return
|
||||
|
||||
/mob/proc/getorganszone(zone)
|
||||
return
|
||||
|
||||
/mob/proc/getorganslot(slot)
|
||||
return
|
||||
|
||||
/mob/living/carbon/getorgan(typepath)
|
||||
return (locate(typepath) in internal_organs)
|
||||
|
||||
/mob/living/carbon/getorganszone(zone, subzones = 0)
|
||||
var/list/returnorg = list()
|
||||
if(subzones)
|
||||
// Include subzones - groin for chest, eyes and mouth for head
|
||||
if(zone == BODY_ZONE_HEAD)
|
||||
returnorg = getorganszone(BODY_ZONE_PRECISE_EYES) + getorganszone(BODY_ZONE_PRECISE_MOUTH)
|
||||
if(zone == BODY_ZONE_CHEST)
|
||||
returnorg = getorganszone(BODY_ZONE_PRECISE_GROIN)
|
||||
|
||||
for(var/X in internal_organs)
|
||||
var/obj/item/organ/O = X
|
||||
if(zone == O.zone)
|
||||
returnorg += O
|
||||
return returnorg
|
||||
|
||||
/mob/living/carbon/getorganslot(slot)
|
||||
return internal_organs_slot[slot]
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "liver"
|
||||
icon_state = "liver"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
zone = "chest"
|
||||
zone = BODY_ZONE_CHEST
|
||||
slot = ORGAN_SLOT_LIVER
|
||||
desc = "Pairing suggestion: chianti and fava beans."
|
||||
var/damage = 0 //liver damage, 0 is no damage, damage=maxHealth causes liver failure
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/obj/item/organ/lungs
|
||||
name = "lungs"
|
||||
icon_state = "lungs"
|
||||
zone = "chest"
|
||||
zone = BODY_ZONE_CHEST
|
||||
slot = ORGAN_SLOT_LUNGS
|
||||
gender = PLURAL
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/status = ORGAN_ORGANIC
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
throwforce = 0
|
||||
var/zone = "chest"
|
||||
var/zone = BODY_ZONE_CHEST
|
||||
var/slot
|
||||
// DO NOT add slots with matching names to different zones - it will break internal_organs_slot list!
|
||||
var/vital = 0
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "stomach"
|
||||
icon_state = "stomach"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
zone = "chest"
|
||||
zone = BODY_ZONE_CHEST
|
||||
slot = ORGAN_SLOT_STOMACH
|
||||
attack_verb = list("gored", "squished", "slapped", "digested")
|
||||
desc = "Onaka ga suite imasu."
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "tail"
|
||||
desc = "A severed tail. What did you cut this off of?"
|
||||
icon_state = "severedtail"
|
||||
zone = "groin"
|
||||
zone = BODY_ZONE_PRECISE_GROIN
|
||||
slot = ORGAN_SLOT_TAIL
|
||||
var/tail_type = "None"
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "tongue"
|
||||
desc = "A fleshy muscle mostly used for lying."
|
||||
icon_state = "tonguenormal"
|
||||
zone = "mouth"
|
||||
zone = BODY_ZONE_PRECISE_MOUTH
|
||||
slot = ORGAN_SLOT_TONGUE
|
||||
attack_verb = list("licked", "slobbered", "slapped", "frenched", "tongued")
|
||||
var/list/languages_possible
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user