mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-09 14:15:22 +01:00
LIMBSTUMPS
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user