diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 5771b89fc70..7e664fea52d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -611,7 +611,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) @@ -811,6 +816,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 a619719f587..2f8f3c126e0 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -126,3 +126,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 467e548fe7b..3d9193d12c3 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -380,3 +380,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 ddd05e4897f..be7d9d33943 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -613,6 +613,7 @@ "rtd_loaded", "sheetifier", "weldingmask", + "bolter_wrench", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 15000) discount_experiments = list( diff --git a/icons/mob/inhands/equipment/tools_lefthand.dmi b/icons/mob/inhands/equipment/tools_lefthand.dmi index ec4f7a8a181..e06bcaf3e55 100644 Binary files a/icons/mob/inhands/equipment/tools_lefthand.dmi and b/icons/mob/inhands/equipment/tools_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/tools_righthand.dmi b/icons/mob/inhands/equipment/tools_righthand.dmi index 11b9e5bd37f..8825c0cb780 100644 Binary files a/icons/mob/inhands/equipment/tools_righthand.dmi and b/icons/mob/inhands/equipment/tools_righthand.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 22612fde322..8bcffd71848 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ