From 0744712aebf4db7f49fd9b6e76a7161b52675eb4 Mon Sep 17 00:00:00 2001 From: Batrachophreno Date: Tue, 13 May 2025 18:17:36 -0400 Subject: [PATCH] Maintenance Panels openable with regular wrench (#20752) To allow the fluff maintenance panels to be opened even with low-tech standard wrenches. Not only does it make sense, but also lets them still be opened and worked with even if Engineering were to lose its default impact wrenches. To facilitate the mundane wrench being used for atmos panels as a 'fix RP' action, opening and closing maintenance panels now must be done with the Disarm intent (with description updated to communicate the fact). --------- Signed-off-by: Batrachophreno Co-authored-by: hazelrat <83198434+hazelrat@users.noreply.github.com> --- .../fluff/engineering/maintenance.dm | 18 ++++-- html/changelogs/Batrachophreno-20752.yml | 59 +++++++++++++++++++ 2 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 html/changelogs/Batrachophreno-20752.yml diff --git a/code/game/objects/structures/fluff/engineering/maintenance.dm b/code/game/objects/structures/fluff/engineering/maintenance.dm index 2331e37a223..fa30a184b81 100644 --- a/code/game/objects/structures/fluff/engineering/maintenance.dm +++ b/code/game/objects/structures/fluff/engineering/maintenance.dm @@ -56,7 +56,7 @@ ABSTRACT_TYPE(/obj/structure/engineer_maintenance) . += SPAN_NOTICE("---") . += SPAN_NOTICE(detailed_desc) . += SPAN_NOTICE("---") - . += SPAN_NOTICE("An impact wrench with the wrenchbit selected can be used to open/close the panel.") + . += SPAN_NOTICE("Any wrench, or an impact drill with the wrenchbit selected, can be used to open/close the panel.") if(panel_open) . += SPAN_NOTICE("---") . += SPAN_NOTICE("The following tools can be used to interact with the panel:") @@ -72,15 +72,22 @@ ABSTRACT_TYPE(/obj/structure/engineer_maintenance) icon_state = "[panel_location]_[panel_type]_[icon_number]" /obj/structure/engineer_maintenance/attackby(obj/item/attacking_item, mob/user, params) - if(istype(attacking_item, /obj/item/powerdrill)) // these will always open the panel + if(attacking_item.iswrench()) // Any wrench is good, but we explicltly include the impact drill to send a helpful msg if they just have the screwdriver bit attached. if(!attacking_item.iswrench()) to_chat(user, SPAN_WARNING("\The [attacking_item] must have its wrenchbit inserted to remove \the [src]'s bolts!")) return - user.visible_message("[SPAN_BOLD("[user]")] starts [panel_open ? "closing" : "opening"] \the [src]...", SPAN_NOTICE("You start [panel_open ? "closing" : "opening"] \the [src]..."), SPAN_NOTICE("You hear the whirr of an impact wrench...")) + if (istype(attacking_item, /obj/item/powerdrill)) + user.visible_message("[SPAN_BOLD("[user]")] starts [panel_open ? "closing" : "opening"] \the [src]...", SPAN_NOTICE("You start [panel_open ? "closing" : "opening"] \the [src]..."), SPAN_NOTICE("You hear the whirr of an impact drill...")) + else + user.visible_message("[SPAN_BOLD("[user]")] starts manually [panel_open ? "closing" : "opening"] \the [src]...", SPAN_NOTICE("You start manually [panel_open ? "closing" : "opening"] \the [src]...")) if(attacking_item.usesound) playsound(get_turf(src), attacking_item.usesound, 30, TRUE) - if(!do_after(user, rand(2, 3) SECONDS, src)) - return + if (istype(attacking_item, /obj/item/powerdrill)) + if(!do_after(user, rand(2, 3) SECONDS, src)) + return + else + if(!do_after(user, rand(5, 7) SECONDS, src)) + return user.visible_message("[SPAN_BOLD("[user]")] [panel_open ? "closes" : "opens"] \the [src]!", SPAN_NOTICE("You [panel_open ? "close" : "open"] \the [src]!")) panel_open = !panel_open update_icon() @@ -106,7 +113,6 @@ ABSTRACT_TYPE(/obj/structure/engineer_maintenance) "4" = "A high-pressure pipe, together with an electrical flow meter and a keypad can be seen in this hatch. High pressure pipes like these usually carry gases around the place. Probably in higher quantities than usual. The interface allows the user to adjust the flow rate or to close the pipe completely." ) panel_tools = list( - /obj/item/wrench = /singleton/engineer_maintenance_tool/steam_pipe, /obj/item/pipewrench = /singleton/engineer_maintenance_tool/steam_pipe, /obj/item/hammer = /singleton/engineer_maintenance_tool/steam_pipe, /obj/item/device/multitool = /singleton/engineer_maintenance_tool/steam_pipe diff --git a/html/changelogs/Batrachophreno-20752.yml b/html/changelogs/Batrachophreno-20752.yml new file mode 100644 index 00000000000..3fc37c41b59 --- /dev/null +++ b/html/changelogs/Batrachophreno-20752.yml @@ -0,0 +1,59 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: Batrachophreno + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Maintenance Panels can be opened and closed with standard wrenches, not just impact drill with wrenchbit." + - rscdel: "Opened atmos Maintenance Panels can no longer be tinkered with using the standard wrench, though pipe wrenches remain usable."