The big tooltype_act de-cargo-cult-ing (#95408)

## About The Pull Request

Removes a lot of cargo cult copypasta with
`default_deconstruction_screwdriver`, `default_deconstruction_crowbar`,
and to a lesser extent `default_pry_open` and
`default_change_direction_wrench`

ALL you gotta do now if you want your machine to have an openable panel
or be deconstructible with a crowbar is this
```dm
/obj/machinery/dish_drive/screwdriver_act(mob/living/user, obj/item/tool)
	return default_deconstruction_screwdriver(user, tool)

/obj/machinery/dish_drive/crowbar_act(mob/living/user, obj/item/tool)
	return default_deconstruction_crowbar(user, tool)
```

`default_deconstruction_screwdriver` no longer directly sets
`icon_state`, requiring the user pass in the open and closed icon
states. Now, it just calls `update_appearance`, and everything that once
passed the icon state now uses `base_icon_state` and
`update_icon_state`.

## Why It's Good For The Game

Many of these procs were terribly overcomplicated and difficult to work
with for what should be a relatively simple action

Streamlining it makes it easier for coders to understand and work with

## Changelog

🆑 Melbert
refactor: A majority of machines had their screwdriver/crowbar/wrench
interactions rewritten, report any oddities like being unable to open a
machine's panel or deconstruct a machine
/🆑
This commit is contained in:
MrMelbert
2026-04-14 19:46:24 -04:00
committed by GitHub
parent 2f5f386231
commit 4eadf5caf7
121 changed files with 1141 additions and 1291 deletions
+6 -7
View File
@@ -47,14 +47,14 @@
setup_particles()
/obj/machinery/byteforge/screwdriver_act(mob/living/user, obj/item/screwdriver)
. = ITEM_INTERACT_FAILURE
if(default_deconstruction_screwdriver(user, "[base_icon_state]_panel", base_icon_state, screwdriver))
return ITEM_INTERACT_SUCCESS
return default_deconstruction_screwdriver(user, screwdriver)
/obj/machinery/byteforge/crowbar_act(mob/living/user, obj/item/crowbar)
. = ITEM_INTERACT_FAILURE
if(default_deconstruction_crowbar(crowbar))
return ITEM_INTERACT_SUCCESS
return default_deconstruction_crowbar(user, crowbar)
/obj/machinery/byteforge/update_icon_state()
. = ..()
icon_state = panel_open ? "[base_icon_state]_panel" : base_icon_state
/// Does some sparks after it's done
/obj/machinery/byteforge/proc/flash(atom/movable/thing)
@@ -93,4 +93,3 @@
flicker()
addtimer(CALLBACK(src, PROC_REF(spawn_cache), cache), 1 SECONDS)