Files
Bubberstation/code/game/objects/items/storage/boxes/_boxes.dm
SkyratBot a8758f9ab0 [MIRROR] Fix fancy boxes to fold like regular boxes [MDB IGNORE] (#19420)
* Fix fancy boxes to fold like regular boxes (#73406)

🆑 coiax
fix: Folding a "fancy box" like donut or candles will now put cardboard
in your hand, rather than on the floor.
fix: You can always see how many pickles are in a jar of pickles, or
rolling papers there are in a pack of rolling papers, since it's not
possible to close them.
/🆑

Currently, folding a "fancy box", one where the contents are visible in
the icon, like a donut or candle box, the cardboard will drop on the
floor.

The `attack_self()` proc between the two types of boxes have been
unified.

In addition, the `is_open` for fancy boxes has been expanded to include
the "always open" option, where the contents of the box are always
countable on examine, and the box does not have a closed appearance.
Candle boxes previously special cased the `attack_self()` proc, and with
this addition, no longer need to.

## Why It's Good For The Game

Consistency in box interaction. Cardboard in hand. Always can count
pickles.

* Fix fancy boxes to fold like regular boxes

* Update gunsets.dm

---------

Co-authored-by: Jack Edge <yellowbounder@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-10 02:44:27 +00:00

59 lines
2.0 KiB
Plaintext

/// The common cardboard box.
/obj/item/storage/box
name = "box"
desc = "It's just an ordinary box."
icon = 'icons/obj/storage/box.dmi'
icon_state = "box"
inhand_icon_state = "syringe_kit"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
resistance_flags = FLAMMABLE
drop_sound = 'sound/items/handling/cardboardbox_drop.ogg'
pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg'
/// What material do we get when we fold this box?
var/foldable_result = /obj/item/stack/sheet/cardboard
/// What drawing will we get on the face of the box?
var/illustration = "writing"
/obj/item/storage/box/Initialize(mapload)
. = ..()
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
update_appearance()
/obj/item/storage/box/suicide_act(mob/living/carbon/user)
var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
if(myhead)
user.visible_message(span_suicide("[user] puts [user.p_their()] head into \the [src] and begins closing it! It looks like [user.p_theyre()] trying to commit suicide!"))
myhead.dismember()
myhead.forceMove(src) //force your enemies to kill themselves with your head collection box!
playsound(user, "desecration-01.ogg", 50, TRUE, -1)
return BRUTELOSS
user.visible_message(span_suicide("[user] is beating [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
return BRUTELOSS
/obj/item/storage/box/update_overlays()
. = ..()
if(illustration)
. += illustration
/obj/item/storage/box/attack_self(mob/user)
..()
if(!foldable_result || (flags_1 & HOLOGRAM_1))
return
if(contents.len)
balloon_alert(user, "items inside!")
return
if(!ispath(foldable_result))
return
var/obj/item/result = new foldable_result(user.drop_location())
balloon_alert(user, "folded")
qdel(src)
user.put_in_hands(result)
/obj/item/storage/box/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/stack/package_wrap))
return FALSE
return ..()