LIMBSTUMPS

This commit is contained in:
Aurorablade
2016-02-09 18:32:40 -05:00
parent 3b90cb703a
commit eca3edfec3
7 changed files with 78 additions and 22 deletions
@@ -59,14 +59,19 @@
switch(M.a_intent)
if(I_HELP)
if(can_operate(M))
if(health >= config.health_threshold_crit)
for(var/datum/surgery/S in M.surgeries)
if(istype(S.get_surgery_step(), /datum/surgery_step/cavity/place_item))
return 1
else
help_shake_act(M)
add_logs(src, M, "shaked")
return 1
if(health >= config.health_threshold_crit)
for(var/datum/surgery/S in M.surgeries)
if(istype(S.get_surgery_step(), /datum/surgery_step/cavity/place_item))
return 1
else
help_shake_act(M)
add_logs(src, M, "shaked")
return 1
help_shake_act(M)
add_logs(src, M, "shaked")
return 1
if(!H.check_has_mouth())
H << "<span class='danger'>You don't have a mouth, you cannot perform CPR!</span>"
return
+17 -1
View File
@@ -18,6 +18,14 @@
possible_locs = list("groin")
/datum/surgery/cavity_implant/synth
name = "cavity implant"
steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/cavity/place_item,/datum/surgery_step/robotics/external/close_hatch)
possible_locs = list("chest","head","groin")
/datum/surgery/cavity_implant/synth/can_start(mob/user, mob/living/carbon/target)
return target.get_species() == "Machine"
/datum/surgery_step/cavity
priority = 1
@@ -145,7 +153,7 @@
"You start putting \the [tool] inside [target]'s [get_cavity(affected)] cavity." )
else if(IC)
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>")
target.custom_pain("The pain in your chest is living hell!",1)
target.custom_pain("The pain in your [target_zone] is living hell!",1)
..()
/datum/surgery_step/cavity/place_item/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
@@ -193,6 +201,14 @@
steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/generic/cut_open,/datum/surgery_step/cavity/implant_removal,/datum/surgery_step/cavity/close_space,/datum/surgery_step/generic/cauterize/)
possible_locs = list("chest","head")//head is for borers..i can put it elsewhere
/datum/surgery/cavity_implant_rem/synth
name = "implant removal"
steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/cavity/implant_removal,/datum/surgery_step/robotics/external/close_hatch)
possible_locs = list("chest","head")//head is for borers..i can put it elsewhere
/datum/surgery/cavity_implant_rem/synth/can_start(mob/user, mob/living/carbon/target)
return target.get_species() == "Machine"
/datum/surgery_step/cavity/implant_removal
name = "extract implant"
allowed_tools = list(
+26
View File
@@ -34,6 +34,21 @@
return 0
/datum/surgery/reattach/synth
name = "limb attachment"
steps = list(/datum/surgery_step/limb/attach)
possible_locs = list("head","l_arm", "l_hand","r_arm","r_hand","r_leg","r_foot","l_leg","l_foot","groin")
/datum/surgery/reattach/synth/can_start(mob/user, mob/living/carbon/target)
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected && (target.get_species() == "Machine"))
return 1
return 0
/datum/surgery/robo_attach
name = "robotic limb attachment"
steps = list(/datum/surgery_step/limb/mechanize)
@@ -77,6 +92,11 @@
user.unEquip(E)
E.replaced(target)
E.forceMove(target)
if(target.get_species() == "Machine")//as this is the only step needed for ipc put togethers
E.status &= ~ORGAN_DESTROYED
if(E.children)
for(var/obj/item/organ/external/C in E.children)
C.status &= ~ORGAN_DESTROYED
target.update_body()
target.updatehealth()
target.UpdateDamageIcon()
@@ -114,6 +134,9 @@
user.visible_message("<span class='notice'>[user] has connected tendons and muscles in [target]'s [E.amputation_point] with [tool].</span>", \
"<span class='notice'>You have connected tendons and muscles in [target]'s [E.amputation_point] with [tool].</span>")
E.status &= ~ORGAN_DESTROYED
var/obj/item/organ/external/stump = target.get_organ(target_zone)
if(stump.is_stump())
stump.removed(target)
if(E.children)
for(var/obj/item/organ/external/C in E.children)
C.status &= ~ORGAN_DESTROYED
@@ -159,6 +182,9 @@
var/list/organ_data = target.species.has_limbs["[part_name]"]
if(!organ_data)
continue
var/obj/item/organ/external/stump = target.get_organ(target_zone)
if(stump.is_stump())
stump.removed(target)
var/new_limb_type = organ_data["path"]
var/obj/item/organ/external/new_limb = new new_limb_type(target)
new_limb.robotize(L.model_info)
@@ -266,23 +266,23 @@ datumvars//note i am putting External in robolimbs.
/obj/item/organ/internal/cyberimp/chest/arm_mod/ui_action_click()
if(overloaded)//ensure the implant isn't broken
owner.visible_message("<span class='warning'>The implant doesn't respond. It seems to be broken...</span>")
owner << "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>"
return
if(out)//check if the owner has the item out already
owner.unEquip(holder, 1)//if he does, take it away. then,
holder.loc = null//stash it in nullspace
out = 0//and set this to clarify the item isn't out.
owner.visible_message("<span class='notice'>You retract [holder].</span>")
owner.visible_message("<span class='notice'>[owner] retracts [holder].</span>","<span class='notice'>You retract [holder].</span>")
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
else//if he doesn't have the item out
if(owner.put_in_hands(holder))//put it in his hands.
lasthand = owner.get_active_hand()
out = 1
owner.visible_message("<span class='notice'>You extend [holder]!</span>")
owner.visible_message("<span class='notice'>[owner] extends [holder]!</span>","<span class='notice'>You extend [holder]!</span>")
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
else//if this fails to put the item in his hands,
holder.loc = null//keep it in nullspace
owner.visible_message("<span class='warning'>You can't extend [holder] if you can't use your hands!</span>")
owner << "<span class='warning'>You can't extend [holder] if you can't use your hands!</span>"
/obj/item/organ/internal/cyberimp/chest/arm_mod/emp_act(severity)//if the implant gets EMPed...
if(!owner || overloaded)//ensure that it's in an owner and that it's not already EMPed, then...
@@ -291,7 +291,7 @@ datumvars//note i am putting External in robolimbs.
owner.unEquip(holder, 1)//if he does, take it away.
holder.loc = null
out = 0
owner.visible_message("<span class='notice'>[holder] forcibly retracts into your arm.</span>")
owner.visible_message("<span class='notice'>[holder] forcibly retracts into [owner]'s arm.</span>")
owner.visible_message("<span class='danger'>A loud bang comes from [owner]...</span>")
playsound(get_turf(owner), 'sound/effects/bang.ogg', 100, 1)
owner << "<span class='warning'>You feel an explosion erupt inside you as your chest implant breaks. Is it hot in here?</span>"
@@ -76,7 +76,7 @@
//qdel(O)
return ..()
/*
/obj/item/organ/external/attackby(obj/item/weapon/W as obj, mob/user as mob)
switch(stage)
if(0)
@@ -110,7 +110,7 @@
user.visible_message("<span class='danger'><b>[user]</b> fishes around fruitlessly in [src] with [W].")
return
..()
*/
/obj/item/organ/external/update_health()
damage = min(max_damage, (brute_dam + burn_dam))
+2 -3
View File
@@ -3,7 +3,7 @@
steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,
/datum/surgery_step/open_encased/retract, /datum/surgery_step/internal/manipulate_organs, /datum/surgery_step/glue_bone, /datum/surgery_step/set_bone,/datum/surgery_step/finish_bone,/datum/surgery_step/generic/cauterize)
possible_locs = list("chest","head")
requires_organic_bodypart = 0
requires_organic_bodypart = 1
/datum/surgery/organ_manipulation/soft
possible_locs = list("groin", "eyes", "mouth")
@@ -26,7 +26,7 @@
if(istype(target,/mob/living/carbon/human))
var/mob/living/carbon/human/H = target
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(affected.status & ORGAN_ROBOT)
if(affected && (affected.status & ORGAN_ROBOT))
return 0
return 1
@@ -226,7 +226,6 @@
"You start treating damage to [target]'s [I.name] with [tool_name]." )
user << "No organs appear to be damaged."
return -1
H.custom_pain("The pain in your [affected.name] is living hell!",1)
else if(istype(tool, /obj/item/weapon/reagent_containers/food/snacks/organ))
+14 -4
View File
@@ -4,12 +4,11 @@
//////////////////////////////////////////////////////////////////
/datum/surgery/bleeding
name = "internal bleeding"
steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders,/datum/surgery_step/generic/retract_skin,/datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,
/datum/surgery_step/open_encased/retract,/datum/surgery_step/fix_vein,/datum/surgery_step/open_encased/close, /datum/surgery_step/glue_bone, /datum/surgery_step/set_bone,/datum/surgery_step/finish_bone,/datum/surgery_step/generic/cauterize)
steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders,/datum/surgery_step/generic/retract_skin,/datum/surgery_step/fix_vein,/datum/surgery_step/generic/cauterize)
possible_locs = list("chest","head","groin")
/datum/surgery/bleeding/can_start(mob/user, mob/living/carbon/target)
if(ishuman(target)
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected) return 0
@@ -201,12 +200,23 @@
//////////////////////////////////////////////////////////////////
/datum/surgery/remove_thrall
name = "clense contaminations"//RENAME MEH
steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,/datum/surgery_step/open_encased/retract, /datum/surgery_step/internal/dethrall)
steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,/datum/surgery_step/open_encased/retract, /datum/surgery_step/internal/dethrall,/datum/surgery_step/glue_bone, /datum/surgery_step/set_bone,/datum/surgery_step/finish_bone,/datum/surgery_step/generic/cauterize)
possible_locs = list("head")
/datum/surgery/remove_thrall/synth
name = "clense contaminations"//RENAME MEH
steps = list(/datum/surgery_step/robotics/external/unscrew_hatch,/datum/surgery_step/robotics/external/open_hatch,/datum/surgery_step/internal/dethrall,/datum/surgery_step/robotics/external/close_hatch)
possible_locs = list("chest")
/datum/surgery/remove_thrall/can_start(mob/user, mob/living/carbon/target)
return is_thrall(target)//would this be too meta?
/datum/surgery/remove_thrall/synth/can_start(mob/user, mob/living/carbon/target)
return is_thrall(target) && target.get_species() == "Machine"
/datum/surgery_step/dethrall
name = "cleanse contamination"
allowed_tools = list(/obj/item/device/flash = 100, /obj/item/device/flashlight/pen = 80, /obj/item/device/flashlight = 40)