diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm index d333e8ee5a1..ee1293db5c5 100644 --- a/code/modules/surgery/limb augmentation.dm +++ b/code/modules/surgery/limb augmentation.dm @@ -77,31 +77,62 @@ /datum/surgery/chainsaw - name = "chainsaw augmentation" - steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, - /datum/surgery_step/incise, /datum/surgery_step/chainsaw) - species = list(/mob/living/carbon/human) - possible_locs = list("r_arm", "l_arm") - requires_organic_bodypart = 0 + name = "chainsaw augmentation" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, + /datum/surgery_step/incise, /datum/surgery_step/chainsaw) + species = list(/mob/living/carbon/human) + possible_locs = list("r_arm", "l_arm") + requires_organic_bodypart = 0 /datum/surgery_step/chainsaw - time = 64 - name = "insert chainsaw" - implements = list(/obj/item/weapon/twohanded/required/chainsaw = 100) + time = 64 + name = "insert chainsaw" + implements = list(/obj/item/weapon/twohanded/required/chainsaw = 100) /datum/surgery_step/chainsaw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to install the chainsaw onto [target].", "You begin to install the chainsaw onto [target]...") + user.visible_message("[user] begins to install the chainsaw onto [target].", "You begin to install the chainsaw onto [target]...") /datum/surgery_step/chainsaw/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(target.l_hand && target.r_hand) - user << "You can't fit the chainsaw in while [target]'s hands are full!" - return 0 - else - user.visible_message("[user] finshes installing the chainsaw!", "You install the chainsaw.") - user.unEquip(tool) - qdel(tool) - var/obj/item/weapon/mounted_chainsaw/sawarms = new(target) - target.put_in_hands(sawarms) + if(target.l_hand && target.r_hand) + user << "You can't fit the chainsaw in while [target]'s hands are full!" + return 0 + else + user.visible_message("[user] finishes installing the chainsaw!", "You install the chainsaw.") + user.unEquip(tool) + qdel(tool) + var/obj/item/weapon/mounted_chainsaw/sawarms = new(target) + target.put_in_hands(sawarms) - return 1 + return 1 + +/datum/surgery/chainsaw_removal + name = "chainsaw removal" + steps = list(/datum/surgery_step/chainsaw_removal) + species = list(/mob/living/carbon/human) + possible_locs = list("r_arm", "l_arm") + requires_organic_bodypart = 0 + +/datum/surgery/chainsaw_removal/can_start(mob/user, mob/living/carbon/target) + var/list/hands = get_both_hands(target) + var/M = locate(/obj/item/weapon/mounted_chainsaw) in hands + if(M) + return 1//can continue surgery + else + return 0//surgery will never be available + +/datum/surgery_step/chainsaw_removal + time = 128 + name = "saw off chainsaw" + implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/mounted_chainsaw = 65, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/twohanded/required/chainsaw = 50, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25) + +/datum/surgery_step/chainsaw_removal/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins sawing the chainsaw off of [target]'s arms.", "You begin removing [target]'s chainsaw...") + +/datum/surgery_step/chainsaw_removal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/list/hands = get_both_hands(target) + for(var/obj/item/weapon/mounted_chainsaw/V in hands) + qdel(V) + new /obj/item/weapon/twohanded/required/chainsaw(get_turf(target)) + user.visible_message("[user] carefully saws [target]'s arm free of the chainsaw.", "You remove the chainsaw.") + return 1