From 012a00aafbd18e931d64bf22a4bbe04dffa7ea21 Mon Sep 17 00:00:00 2001
From: Contrabang <91113370+Contrabang@users.noreply.github.com>
Date: Tue, 19 Aug 2025 06:23:16 -0700
Subject: [PATCH] Refactors large crates. Adds sound and makes them
not-instant. (#30068)
* bonk
* refactors large crates
---
.../structures/crates_lockers/largecrate.dm | 42 +++++++------------
1 file changed, 15 insertions(+), 27 deletions(-)
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index 254c7d12bd4..4195f5f0031 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -37,6 +37,12 @@
/obj/structure/largecrate/crowbar_act(mob/living/user, obj/item/I)
. = TRUE
+ if(!I.use_tool(src, user, 20, volume = I.tool_volume))
+ return TRUE
+ break_open()
+ user.visible_message("[user] pries [src] open.", \
+ "You pry open [src].", \
+ "You hear splitting wood.")
if(manifest)
manifest.forceMove(loc)
manifest = null
@@ -46,11 +52,11 @@
for(var/O in contents)
var/atom/movable/A = O
A.forceMove(T)
- user.visible_message("[user] pries [src] open.", \
- "You pry open [src].", \
- "You hear splitting wood.")
qdel(src)
+/obj/structure/largecrate/proc/break_open()
+ return
+
/obj/structure/largecrate/Destroy()
var/turf/src_turf = get_turf(src)
for(var/obj/O in contents)
@@ -62,60 +68,42 @@
/obj/structure/largecrate/lisa
icon_state = "lisacrate"
-/obj/structure/largecrate/lisa/crowbar_act(mob/living/user, obj/item/I)
- if(!I.use_tool(src, user, I.tool_volume))
- return
+/obj/structure/largecrate/lisa/break_open()
new /mob/living/simple_animal/pet/dog/corgi/lisa(loc)
- return ..()
/obj/structure/largecrate/cow
name = "cow crate"
icon_state = "lisacrate"
-/obj/structure/largecrate/cow/crowbar_act(mob/living/user, obj/item/I)
- if(!I.use_tool(src, user, I.tool_volume))
- return
+/obj/structure/largecrate/cow/break_open()
new /mob/living/basic/cow(loc)
- return ..()
/obj/structure/largecrate/goat
name = "goat crate"
icon_state = "lisacrate"
-/obj/structure/largecrate/goat/crowbar_act(mob/living/user, obj/item/I)
- if(!I.use_tool(src, user, I.tool_volume))
- return
+/obj/structure/largecrate/goat/break_open()
new /mob/living/simple_animal/hostile/retaliate/goat(loc)
- return ..()
/obj/structure/largecrate/chick
name = "chicken crate"
icon_state = "lisacrate"
-/obj/structure/largecrate/chick/crowbar_act(mob/living/user, obj/item/I)
- if(!I.use_tool(src, user, I.tool_volume))
- return
+/obj/structure/largecrate/chick/break_open()
var/num = rand(4, 6)
for(var/i in 1 to num)
new /mob/living/simple_animal/chick(loc)
- return ..()
/obj/structure/largecrate/cat
name = "cat crate"
icon_state = "lisacrate"
-/obj/structure/largecrate/cat/crowbar_act(mob/living/user, obj/item/I)
- if(!I.use_tool(src, user, I.tool_volume))
- return
+/obj/structure/largecrate/cat/break_open()
new /mob/living/simple_animal/pet/cat(loc)
- return ..()
/obj/structure/largecrate/secway
name = "secway crate"
-/obj/structure/largecrate/secway/crowbar_act(mob/living/user, obj/item/I)
- if(!I.use_tool(src, user, I.tool_volume))
- return
+/obj/structure/largecrate/secway/break_open()
new /obj/vehicle/secway(loc)
new /obj/item/key/security(loc)
- return ..()