//open shell /datum/surgery_step/mechanic_open name = "unscrew shell" implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPEL = 75, // med borgs could try to unskrew shell with scalpel /obj/item/kitchen/knife = 50, /obj/item = 10) // 10% success with any sharp item. time = 24 /datum/surgery_step/mechanic_open/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to unscrew the shell of [target]'s [parse_zone(target_zone)]...", "[user] begins to unscrew the shell of [target]'s [parse_zone(target_zone)].", "[user] begins to unscrew the shell of [target]'s [parse_zone(target_zone)].") /datum/surgery_step/mechanic_open/tool_check(mob/user, obj/item/tool) if(implement_type == /obj/item && !tool.get_sharpness()) return FALSE return TRUE //close shell /datum/surgery_step/mechanic_close name = "screw shell" implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPELl = 75, /obj/item/kitchen/knife = 50, /obj/item = 10) // 10% success with any sharp item. time = 24 /datum/surgery_step/mechanic_close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to screw the shell of [target]'s [parse_zone(target_zone)]...", "[user] begins to screw the shell of [target]'s [parse_zone(target_zone)].", "[user] begins to screw the shell of [target]'s [parse_zone(target_zone)].") /datum/surgery_step/mechanic_close/tool_check(mob/user, obj/item/tool) if(implement_type == /obj/item && !tool.get_sharpness()) return FALSE return TRUE //prepare electronics /datum/surgery_step/prepare_electronics name = "prepare electronics (multitool)" implements = list( TOOL_MULTITOOL = 100, TOOL_HEMOSTAT = 10) // try to reboot internal controllers via short circuit with some conductor time = 24 /datum/surgery_step/prepare_electronics/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to prepare electronics in [target]'s [parse_zone(target_zone)]...", "[user] begins to prepare electronics in [target]'s [parse_zone(target_zone)].", "[user] begins to prepare electronics in [target]'s [parse_zone(target_zone)].") //unwrench /datum/surgery_step/mechanic_unwrench name = "unwrench bolts" implements = list( TOOL_WRENCH = 100, TOOL_RETRACTOR = 10) time = 24 /datum/surgery_step/mechanic_unwrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to unwrench some bolts in [target]'s [parse_zone(target_zone)]...", "[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].", "[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].") //wrench /datum/surgery_step/mechanic_wrench name = "wrench bolts" implements = list( TOOL_WRENCH = 100, TOOL_RETRACTOR = 10) time = 24 /datum/surgery_step/mechanic_wrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to wrench some bolts in [target]'s [parse_zone(target_zone)]...", "[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].", "[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].") //open hatch /datum/surgery_step/open_hatch name = "open the hatch (empty hand)" accept_hand = 1 time = 10 /datum/surgery_step/open_hatch/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to open the hatch holders in [target]'s [parse_zone(target_zone)]...", "[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].", "[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].") //cut wires /datum/surgery_step/cut_wires name = "cut wires" implements = list( TOOL_WIRECUTTER = 100, TOOL_SCALPEL = 75, /obj/item/kitchen/knife = 50, /obj/item = 10) // 10% success with any sharp item. time = 24 /datum/surgery_step/cut_wires/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to cut loose wires in [target]'s [parse_zone(target_zone)]...", "[user] begins to cut loose wires in [target]'s [parse_zone(target_zone)].", "[user] begins to cut loose wires in [target]'s [parse_zone(target_zone)].") /datum/surgery_step/cut_wires/tool_check(mob/user, obj/item/tool) if(implement_type == /obj/item && !tool.get_sharpness()) return FALSE return TRUE //pry off plating /datum/surgery_step/pry_off_plating name = "pry off plating" implements = list( TOOL_CROWBAR = 100, TOOL_HEMOSTAT = 10) time = 24 /datum/surgery_step/pry_off_plating/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) do_sparks(rand(5, 9), FALSE, target.loc) return TRUE /datum/surgery_step/pry_off_plating/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to pry off [target]'s [parse_zone(target_zone)] plating...", "[user] begins to pry off [target]'s [parse_zone(target_zone)] plating.", "[user] begins to pry off [target]'s [parse_zone(target_zone)] plating.") //weld plating /datum/surgery_step/weld_plating name = "weld plating" implements = list( TOOL_WELDER = 100) time = 24 /datum/surgery_step/weld_plating/tool_check(mob/user, obj/item/tool) if(implement_type == TOOL_WELDER && !tool.use_tool(user, user, 0, volume=50, amount=1)) return FALSE return TRUE /datum/surgery_step/weld_plating/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You begin to weld [target]'s [parse_zone(target_zone)] plating...", "[user] begins to weld [target]'s [parse_zone(target_zone)] plating.", "[user] begins to weld [target]'s [parse_zone(target_zone)] plating.") //replace wires /datum/surgery_step/replace_wires name = "replace wires" implements = list(/obj/item/stack/cable_coil = 100) time = 24 var/cableamount = 5 /datum/surgery_step/replace_wires/tool_check(mob/user, obj/item/tool) var/obj/item/stack/cable_coil/coil = tool if(coil.get_amount() < cableamount) to_chat(user, "Not enough cable!") return FALSE return TRUE /datum/surgery_step/replace_wires/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/stack/cable_coil/coil = tool if(coil && !(coil.get_amount()You begin to replace [target]'s [parse_zone(target_zone)] wiring...", "[user] begins to replace [target]'s [parse_zone(target_zone)] wiring.", "[user] begins to replace [target]'s [parse_zone(target_zone)] wiring.") //add plating /datum/surgery_step/add_plating name = "add plating" implements = list(/obj/item/stack/sheet/metal = 100) time = 24 var/metalamount = 5 /datum/surgery_step/add_plating/tool_check(mob/user, obj/item/tool) var/obj/item/stack/sheet/metal/plat = tool if(plat.get_amount() < metalamount) to_chat(user, "Not enough metal!") return FALSE return TRUE /datum/surgery_step/add_plating/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/stack/sheet/metal/plat = tool if(plat && !(plat.get_amount()You begin to add plating to [target]'s [parse_zone(target_zone)]...", "[user] begins to add plating to [target]'s [parse_zone(target_zone)].", "[user] begins to add plating to [target]'s [parse_zone(target_zone)].")