From 9ceb9a5ba447cc03eea4f0eeebaf2ec279ecd244 Mon Sep 17 00:00:00 2001 From: Hopek Date: Wed, 5 Aug 2020 23:23:58 -0500 Subject: [PATCH 1/7] New Preternis surgeries allow to detach and attach their robotic limbs --- code/modules/surgery/amputation.dm | 40 +++++++++++++++++++ .../modules/surgery/prosthetic_replacement.dm | 18 +++++++++ 2 files changed, 58 insertions(+) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 766107a0a994..8e1e6742b081 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -6,6 +6,26 @@ 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 +/datum/surgery/amputation/mechanic + name = "Detach mechanical limb" + self_operable = TRUE + requires_bodypart_type = BODYPART_ROBOTIC + possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + target_mobtypes = list(/mob/living/carbon/human) + lying_required = FALSE + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/mechanic_unwrench, + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/sever_limb/mechanic + ) + +/datum/surgery/amputation/mechanic/can_start(mob/user, mob/living/carbon/target) + if(!iscarbon(target) || !ispreternis(target)) // This surgery won't work unless you are working on a preterni + return 0 + return 1 + /datum/surgery_step/sever_limb name = "sever limb" @@ -27,3 +47,23 @@ target_limb.drop_limb() return 1 + +/datum/surgery_step/sever_limb/mechanic + name = "uninstall limb" + accept_hand = 1 + +/datum/surgery_step/sever_limb/mechanic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results(user, target, "You begin to detach [target]'s [parse_zone(target_zone)]...", + "[user] begins to detach [target]'s [parse_zone(target_zone)]!", + "[user] begins to detach [target]'s [parse_zone(target_zone)]!") + +/datum/surgery_step/sever_limb/mechanic/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/mob/living/carbon/human/L = target + display_results(user, target, "You detached [L]'s [parse_zone(target_zone)].", + "[user] detached [L]'s [parse_zone(target_zone)]!", + "[user] detached [L]'s [parse_zone(target_zone)]!") + if(surgery.operated_bodypart) + var/obj/item/bodypart/target_limb = surgery.operated_bodypart + target_limb.drop_limb() + + return 1 diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index 8bb4528c165c..c7b4f4017c72 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -13,7 +13,25 @@ if(!C.get_bodypart(user.zone_selected)) //can only start if limb is missing return 1 +/datum/surgery/prosthetic_replacement/mechanic_limb + name = "Attach mechanical limb" + self_operable = TRUE + possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + target_mobtypes = list(/mob/living/carbon/human) + lying_required = FALSE + steps = list( + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/add_prosthetic + ) +/datum/surgery/prosthetic_replacement/mechanic_limb/can_start(mob/user, mob/living/carbon/target) + if(!iscarbon(target) || !ispreternis(target)) // This surgery won't work unless you are working on a preterni + return 0 + + var/mob/living/carbon/C = target + if(!C.get_bodypart(user.zone_selected)) //can only start if limb is missing + return 1 + /datum/surgery_step/add_prosthetic name = "add prosthetic" From 16b1e685daeb3969aafe749c772e91d0d518b651 Mon Sep 17 00:00:00 2001 From: Hopek Date: Wed, 5 Aug 2020 23:31:51 -0500 Subject: [PATCH 2/7] spaces be gone --- code/modules/surgery/amputation.dm | 1 - code/modules/surgery/prosthetic_replacement.dm | 1 - 2 files changed, 2 deletions(-) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 8e1e6742b081..b1f8b95678e9 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -26,7 +26,6 @@ return 0 return 1 - /datum/surgery_step/sever_limb name = "sever limb" implements = list(/obj/item/scalpel = 100, /obj/item/circular_saw = 100, /obj/item/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/melee/arm_blade = 80, /obj/item/twohanded/required/chainsaw = 80, /obj/item/mounted_chainsaw = 80, /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25) diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index c7b4f4017c72..a293b6d5f57f 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -31,7 +31,6 @@ var/mob/living/carbon/C = target if(!C.get_bodypart(user.zone_selected)) //can only start if limb is missing return 1 - /datum/surgery_step/add_prosthetic name = "add prosthetic" From 9d8c53b3bdd7e718a07e5005338947c29b2febc9 Mon Sep 17 00:00:00 2001 From: Hopekz Date: Thu, 6 Aug 2020 19:13:30 -0500 Subject: [PATCH 3/7] Update code/modules/surgery/amputation.dm Co-authored-by: alexkar598 <25136265+alexkar598@users.noreply.github.com> --- code/modules/surgery/amputation.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index b1f8b95678e9..b97afa79df02 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -22,9 +22,7 @@ ) /datum/surgery/amputation/mechanic/can_start(mob/user, mob/living/carbon/target) - if(!iscarbon(target) || !ispreternis(target)) // This surgery won't work unless you are working on a preterni - return 0 - return 1 + return ispreternis(target)) /datum/surgery_step/sever_limb name = "sever limb" From 76c63631f3fd667c2457cbda5a33d541caa6f2d7 Mon Sep 17 00:00:00 2001 From: Hopekz Date: Thu, 6 Aug 2020 19:14:19 -0500 Subject: [PATCH 4/7] Update code/modules/surgery/amputation.dm Co-authored-by: alexkar598 <25136265+alexkar598@users.noreply.github.com> --- code/modules/surgery/amputation.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index b97afa79df02..4371d0e063e5 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -47,7 +47,7 @@ /datum/surgery_step/sever_limb/mechanic name = "uninstall limb" - accept_hand = 1 + accept_hand = TRUE /datum/surgery_step/sever_limb/mechanic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to detach [target]'s [parse_zone(target_zone)]...", From dc05227f9896d3a48bc27a2109d384312d9c7d1b Mon Sep 17 00:00:00 2001 From: Hopekz Date: Thu, 6 Aug 2020 19:14:26 -0500 Subject: [PATCH 5/7] Update code/modules/surgery/prosthetic_replacement.dm Co-authored-by: alexkar598 <25136265+alexkar598@users.noreply.github.com> --- code/modules/surgery/prosthetic_replacement.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index a293b6d5f57f..6fbaa7824954 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -25,8 +25,8 @@ ) /datum/surgery/prosthetic_replacement/mechanic_limb/can_start(mob/user, mob/living/carbon/target) - if(!iscarbon(target) || !ispreternis(target)) // This surgery won't work unless you are working on a preterni - return 0 + if(!ispreternis(target)) + return FALSE var/mob/living/carbon/C = target if(!C.get_bodypart(user.zone_selected)) //can only start if limb is missing @@ -111,4 +111,3 @@ var/obj/item/melee/arm_blade/new_arm = new(target,TRUE,TRUE) target_zone == BODY_ZONE_R_ARM ? target.put_in_r_hand(new_arm) : target.put_in_l_hand(new_arm) return 1 - From ee8314f194c668fcf128f6f786f1a889fc941bc1 Mon Sep 17 00:00:00 2001 From: Hopekz Date: Thu, 6 Aug 2020 19:14:37 -0500 Subject: [PATCH 6/7] Update code/modules/surgery/prosthetic_replacement.dm Co-authored-by: alexkar598 <25136265+alexkar598@users.noreply.github.com> --- code/modules/surgery/prosthetic_replacement.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index 6fbaa7824954..1fdc2226675a 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -29,8 +29,7 @@ return FALSE var/mob/living/carbon/C = target - if(!C.get_bodypart(user.zone_selected)) //can only start if limb is missing - return 1 + return !C.get_bodypart(user.zone_selected) //can only start if limb is missing /datum/surgery_step/add_prosthetic name = "add prosthetic" From 71e04dd7de0e826431b31b86d24a06fa47a9d162 Mon Sep 17 00:00:00 2001 From: Hopek Date: Thu, 6 Aug 2020 19:17:40 -0500 Subject: [PATCH 7/7] thingy be fixed --- code/modules/surgery/amputation.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 4371d0e063e5..fa820d1c242d 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -22,7 +22,7 @@ ) /datum/surgery/amputation/mechanic/can_start(mob/user, mob/living/carbon/target) - return ispreternis(target)) + return ispreternis(target) /datum/surgery_step/sever_limb name = "sever limb"