Disassemble finished and unfinished Golem shells with a crowbar (Not Golem species) (#95167)

## About The Pull Request

Lets players disassemble unfinished Golem shells in `lavaland_ruin_code`
and finished Golem shells in `golem_roles` by using a crowbar on them.
Both dropping a single adamantine on successful deconstruction, with the
finished shell dropping half of whatever was originally used to create
it.

## Why It's Good For The Game

If a Xenobiologist is able to set up a golem factory. (Chemistry IV drip
into industrial adamantine + 1u plasma dropper on metal extract) players
have no way to counter this as non living Golems are immune to damage.
This gives players counterplay, letting them disassemble Golem shells if
they can reach the factory, and scare off the creator.

## Changelog

🆑 DaddyChristmas
balance: Golem shells can now be deconstructed with a crowbar (Not Golem
the species!)
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
This commit is contained in:
Someguyoftheweb
2026-02-25 01:46:07 +00:00
committed by GitHub
parent 06c26acb3c
commit a098cb4234
2 changed files with 45 additions and 0 deletions
@@ -18,6 +18,12 @@
/// Typepath to a material to feed to the golem as soon as it is built
var/initial_type
//Deconstruction var's
var/list/obj/item/stack/drop_on_deconstruct
//Time it takes to deconstruct a completed shell. Note : You can dissssemble multiple at once
var/deconstruct_time = 4 SECONDS
/obj/effect/mob_spawn/ghost_role/human/golem/Initialize(mapload, mob/living/creator, made_of)
initial_type = made_of
. = ..()
@@ -106,3 +112,27 @@
if(owner_ref?.resolve())
forced_name = "Golem ([rand(1,999)])"
return ..()
/obj/effect/mob_spawn/ghost_role/human/golem/crowbar_act(mob/living/user, obj/item/tool)
if(DOING_INTERACTION_WITH_TARGET(user, src))
return ITEM_INTERACT_SUCCESS
if(user.combat_mode)
return
to_chat(user, span_notice("You begin prying load-bearing chunks from the completed shell."))
playsound(user, 'sound/items/tools/crowbar.ogg', 70)
if(do_after(user, delay = deconstruct_time, target = src))
new /obj/item/stack/sheet/mineral/adamantine(get_turf(src))
if(initial_type)
new initial_type(get_turf(src), 5)
else
new /obj/item/stack/sheet/iron/five(get_turf(src))
to_chat(user, span_notice("The Golem crumbles in on itself!"))
playsound(src, 'sound/effects/rock/rock_break.ogg', 60)
qdel(src)
return ITEM_INTERACT_SUCCESS