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",