From 4bfe9a71b62aa7525983de528e2bdd08c50735fe Mon Sep 17 00:00:00 2001 From: fleur Date: Mon, 4 Nov 2024 06:47:37 +0100 Subject: [PATCH] Adds flatboxes, boxes that fit beneath tiles (#87229) ## About The Pull Request This box type has a maximum of 3 slots, and can be hidden beneath floortiles. It can be crafted by *jump emoting ontop of a regular, empty box. https://github.com/user-attachments/assets/d7ab52ec-2b47-4ab4-b2af-05ce00b0ae4b https://github.com/user-attachments/assets/30dd5de3-1f4d-4cb4-8d9c-8625379e76bf ## Why It's Good For The Game Hiding beneath tiles is a fun, yet not broken method of stowing contraband. The toiletbasin or moisturizer trap remains a better option, so I want to open up the space between the floorboards as quick alternative for stowing or making cache drop-offs. Smuggle satchels have a lot more going for them than their ability to be hidden beneath tiles, so I don't feel like this is intruding on their turf. --- code/datums/elements/undertile.dm | 15 +++++++++++- .../objects/items/storage/boxes/flat_boxes.dm | 22 ++++++++++++++++++ code/modules/mob/emote.dm | 8 +++++++ icons/obj/storage/box.dmi | Bin 12799 -> 13482 bytes tgstation.dme | 1 + 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 code/game/objects/items/storage/boxes/flat_boxes.dm diff --git a/code/datums/elements/undertile.dm b/code/datums/elements/undertile.dm index 229b292b31a..54c4ebab6cd 100644 --- a/code/datums/elements/undertile.dm +++ b/code/datums/elements/undertile.dm @@ -16,8 +16,10 @@ var/use_alpha ///We will switch between anchored and unanchored. for stuff like satchels that shouldn't be pullable under tiles but are otherwise unanchored var/use_anchor + ///Will hiding the object tilt the tile it is beneath? + var/tilt_tile -/datum/element/undertile/Attach(datum/target, invisibility_trait, invisibility_level = INVISIBILITY_MAXIMUM, tile_overlay, use_alpha = TRUE, use_anchor = FALSE) +/datum/element/undertile/Attach(datum/target, invisibility_trait, invisibility_level = INVISIBILITY_MAXIMUM, tile_overlay, use_alpha = TRUE, use_anchor = FALSE, tilt_tile = FALSE) . = ..() if(!ismovable(target)) @@ -30,6 +32,7 @@ src.tile_overlay = tile_overlay src.use_alpha = use_alpha src.use_anchor = use_anchor + src.tilt_tile = tilt_tile ///called when a tile has been covered or uncovered /datum/element/undertile/proc/hide(atom/movable/source, underfloor_accessibility) @@ -55,6 +58,11 @@ if(tile_overlay) T.add_overlay(tile_overlay) + if(tilt_tile) + T.transform = T.transform.Turn(2) + T.layer = (T.layer + 0.1) // prettier + T.appearance_flags |= PIXEL_SCALE + if(use_anchor) source.set_anchored(TRUE) @@ -76,6 +84,11 @@ if(tile_overlay) T.overlays -= tile_overlay + if(tilt_tile) + T.transform = matrix() + T.layer = initial(T.layer) + T.appearance_flags &= PIXEL_SCALE + if(use_alpha) source.alpha = initial(source.alpha) diff --git a/code/game/objects/items/storage/boxes/flat_boxes.dm b/code/game/objects/items/storage/boxes/flat_boxes.dm new file mode 100644 index 00000000000..b9544c0e548 --- /dev/null +++ b/code/game/objects/items/storage/boxes/flat_boxes.dm @@ -0,0 +1,22 @@ +/obj/item/storage/box/flat + name = "flat box" + desc = "A cardboard box folded in a manner that is optimal for concealment, rather than for stowing your belongings." + icon_state = "flat" + illustration = null + +/obj/item/storage/box/flat/Initialize(mapload) + . = ..() + AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_OBSERVER, use_anchor = TRUE, tilt_tile = TRUE) + atom_storage.max_slots = 3 + +/obj/item/storage/box/proc/flatten_box() + if(istype(loc, /obj/item/storage) || type != /obj/item/storage/box || contents.len) + return + + var/obj/flat_box = new /obj/item/storage/box/flat(drop_location()) + playsound(src, 'sound/items/handling/materials/cardboard_drop.ogg', 50, TRUE) + + flat_box.pixel_x = pixel_x + flat_box.pixel_y = pixel_y + + qdel(src) diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 4f3687d1c9a..28b5575108d 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -155,6 +155,14 @@ /datum/emote/jump/run_emote(mob/user, params, type_override, intentional) . = ..() + jump_animation(user) + + if(!isliving(user)) + return + for(var/obj/item/storage/box/squeeze_box in get_turf(user)) + squeeze_box.flatten_box() + +/datum/emote/jump/proc/jump_animation(mob/user) var/original_transform = user.transform animate(user, transform = user.transform.Translate(0, 4), time = 0.1 SECONDS, flags = ANIMATION_PARALLEL) animate(transform = original_transform, time = 0.1 SECONDS) diff --git a/icons/obj/storage/box.dmi b/icons/obj/storage/box.dmi index 79f7eff2a678d8933a6e2da4077b5b420ffd6952..aeb337b5981aafe694dfb5197b213f7053a7fca7 100644 GIT binary patch literal 13482 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