From 999e96cb2f6104ed2f480bbdffa360bab33753ca Mon Sep 17 00:00:00 2001 From: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> Date: Wed, 15 Mar 2023 01:02:26 +0000 Subject: [PATCH] [MIRROR] Improved engineering tools patch 2: Bolter Wrench (#72445) (#19875) Improved engineering tools patch 2: Bolter Wrench (#72445) This adds a new wrench that can be printed after Advanced Engineering is researched or as a rare mail gift for engineers. The Bolter Wrench is medium sized (fits on toolbelts and bags but not on boxes) and can grab into the bolting system of airlocks, raising it's bolts after a 5 second `do_after`, even if the airlock has no power or the wires are cut, as long as you can access the inner wires. (Won't work if the panel is closed or has it's wires reinforced.) Codersprite blatantly inspired by Iconoclast's wrench and looks like this: ![bolting](https://user-images.githubusercontent.com/55374212/210415159-dbac7990-46bb-4d42-9061-dd0278905937.png) ![Iconoclasts](https://user-images.githubusercontent.com/55374212/210415375-80070c25-91f9-40bb-aa62-889fc8f0b206.gif) Right now, the only way to fix a powerless bolted down airlock is by fixing the power first, this becomes an issue if the APC is behind the airlock. If that is the case, the only way in is to break through walls/windows or destroy the airlock if you can, both add more things you need to repair, making reconstruction times longer and longer... Or you use an RCD to delete the airlock in 5 seconds, while faster than the above method still is another thing to the repair list... Repairing damaged and bolted down airlocks is such a hassle that doormag'd airlocks bypass the default deconstruction system and just let you deconstruct them directly without the steps of unbolting and welding, something that could be removed with this tool but I won't defend the pros and cons of it now. Reconstruction is slow and cumbersome without an RCD. (And even with one...) I've been trying to make it smoother without using RCDs or a future RAT on previous PRs and future ones to come, this tool is part of those plans. :cl: Guillaume Prata add: Bolter Wrench as a new tool, it can raise the bolts of airlocks regardless of it's power status to smoother station repairs. It can be printed and is unlocked on the same tier as RCD. It can also rarely be a mail gift for engineers. /:cl: Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com> --- code/game/machinery/doors/airlock.dm | 23 +++++++++++++++++++ code/game/objects/items/tools/wrench.dm | 7 ++++++ .../jobs/job_types/station_engineer.dm | 1 + code/modules/research/designs/tool_designs.dm | 11 +++++++++ code/modules/research/techweb/all_nodes.dm | 2 +- 5 files changed, 43 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 40879ab6150..214bf5d6716 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -627,7 +627,12 @@ context[SCREENTIP_CONTEXT_LMB] = "Repair" return CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/wrench/bolter)) + if(locked) + context[SCREENTIP_CONTEXT_LMB] = "Raise bolts" + return CONTEXTUAL_SCREENTIP_SET + return CONTEXTUAL_SCREENTIP_SET return . /obj/machinery/door/airlock/attack_ai(mob/user) @@ -828,6 +833,24 @@ update_appearance() return TOOL_ACT_TOOLTYPE_SUCCESS +/obj/machinery/door/airlock/wrench_act(mob/living/user, obj/item/tool) + if(!locked) + return + if(!panel_open) + balloon_alert(user, "panel is closed!") + return + if(security_level != AIRLOCK_SECURITY_NONE) + balloon_alert(user, "airlock is reinforced!") + return + + if(istype(tool, /obj/item/wrench/bolter)) + balloon_alert(user, "raising bolts...") + if(!do_after(user, 5 SECONDS, src)) + return + unbolt() + + return TOOL_ACT_TOOLTYPE_SUCCESS + /obj/machinery/door/airlock/welder_act(mob/living/user, obj/item/tool) if(!panel_open || security_level == AIRLOCK_SECURITY_NONE) diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index e5c609bad62..1a5ff25d227 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -129,3 +129,10 @@ balloon_alert(user, "[name] [active ? "active, woe!":"restrained"]") playsound(user ? user : src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 5, TRUE) return COMPONENT_NO_DEFAULT_MESSAGE + +/obj/item/wrench/bolter + name = "bolter wrench" + desc = "A wrench designed to grab into airlock's bolting system and raise it regardless of the airlock's power status." + icon_state = "bolter_wrench" + inhand_icon_state = "bolter_wrench" + w_class = WEIGHT_CLASS_NORMAL diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 5c1420c6787..b98685902bd 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -32,6 +32,7 @@ /obj/item/storage/box/lights/mixed = 20, /obj/item/lightreplacer = 10, /obj/item/holosign_creator/engineering = 8, + /obj/item/wrench/bolter = 8, /obj/item/clothing/head/utility/hardhat/red/upgraded = 1 ) rpg_title = "Crystallomancer" diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index be5d903f82b..f4ad5e8914a 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -393,3 +393,14 @@ category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL ) +/datum/design/bolter_wrench + name = "Bolter Wrench" + desc = "A wrench that can unbolt airlocks regardless of power status." + id = "bolter_wrench" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = 2000) + build_path = /obj/item/wrench/bolter + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 9475d8917b5..b52d02efab3 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -652,7 +652,7 @@ "rtd_loaded", "sheetifier", "weldingmask", - + "bolter_wrench", //SKYRAT EDIT START - RESEARCH DESIGNS "engine_goggles_prescription", "mesons_prescription",