Files
Bubberstation/code/game/objects/items/storage/boxes/engineering_boxes.dm
VexingRaven 55a5a05d7b Fix the materials box dropping its contents on creation (#82892)
## About The Pull Request
This fixes the materials box (part of the debug box/admin outfit)
dropping its contents everywhere. The issue is that these stacks will
merge during `PopulateContents` as part of the parent call to
`/obj/item/storage/Initialize` before
`/obj/item/storage/box/material/Initialize` has a chance to change the
size of the box.
## Why It's Good For The Game
Fixes #82705
## Changelog
🆑 VexingRaven
fix: The debug box no longer spills its contents everywhere
/🆑
2024-04-28 22:13:42 +02:00

115 lines
4.3 KiB
Plaintext

// This file contains all boxes used by the Engineering department and its purpose on the station. Also contains stuff we use when we wanna fix up stuff as well or helping us live when shit goes southwardly.
/obj/item/storage/box/metalfoam
name = "box of metal foam grenades"
desc = "To be used to rapidly seal hull breaches."
illustration = "grenade"
/obj/item/storage/box/metalfoam/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/grenade/chem_grenade/metalfoam(src)
/obj/item/storage/box/smart_metal_foam
name = "box of smart metal foam grenades"
desc = "Used to rapidly seal hull breaches. This variety conforms to the walls of its area."
illustration = "grenade"
/obj/item/storage/box/smart_metal_foam/PopulateContents()
for(var/i in 1 to 7)
new/obj/item/grenade/chem_grenade/smart_metal_foam(src)
/obj/item/storage/box/material
name = "box of materials"
illustration = "implant"
/obj/item/storage/box/material/Initialize(mapload)
. = ..()
atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC //This needs to be set here too because the parent type overrides it again
/obj/item/storage/box/material/PopulateContents() //less uranium because radioactive
var/static/items_inside = list(
/obj/item/stack/sheet/iron/fifty=1,
/obj/item/stack/sheet/glass/fifty=1,
/obj/item/stack/sheet/rglass=50,
/obj/item/stack/sheet/plasmaglass=50,
/obj/item/stack/sheet/titaniumglass=50,
/obj/item/stack/sheet/plastitaniumglass=50,
/obj/item/stack/sheet/plasteel=50,
/obj/item/stack/sheet/mineral/plastitanium=50,
/obj/item/stack/sheet/mineral/titanium=50,
/obj/item/stack/sheet/mineral/gold=50,
/obj/item/stack/sheet/mineral/silver=50,
/obj/item/stack/sheet/mineral/plasma=50,
/obj/item/stack/sheet/mineral/uranium=20,
/obj/item/stack/sheet/mineral/diamond=50,
/obj/item/stack/sheet/bluespace_crystal=50,
/obj/item/stack/sheet/mineral/bananium=50,
/obj/item/stack/sheet/mineral/wood=50,
/obj/item/stack/sheet/plastic/fifty=1,
/obj/item/stack/sheet/runed_metal/fifty=1,
)
//This needs to be done here and not in Initialize() because the stacks get merged and fall out when their weight updates if this is set after PopulateContents()
atom_storage.allow_big_nesting = TRUE
atom_storage.max_slots = 99
atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC
atom_storage.max_total_storage = 99
generate_items_inside(items_inside,src)
/obj/item/storage/box/debugtools
name = "box of debug tools"
icon_state = "syndiebox"
/obj/item/storage/box/debugtools/Initialize(mapload)
. = ..()
atom_storage.allow_big_nesting = TRUE
atom_storage.max_slots = 99
atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC
atom_storage.max_total_storage = 99
/obj/item/storage/box/debugtools/PopulateContents()
var/static/items_inside = list(
/obj/item/card/emag=1,
/obj/item/construction/rcd/combat/admin=1,
/obj/item/disk/tech_disk/debug=1,
/obj/item/flashlight/emp/debug=1,
/obj/item/geiger_counter=1,
/obj/item/healthanalyzer/advanced=1,
/obj/item/modular_computer/pda/heads/captain=1,
/obj/item/pipe_dispenser=1,
/obj/item/stack/spacecash/c1000=50,
/obj/item/storage/box/beakers/bluespace=1,
/obj/item/storage/box/beakers/variety=1,
/obj/item/storage/box/material=1,
/obj/item/uplink/debug=1,
/obj/item/uplink/nuclear/debug=1,
)
generate_items_inside(items_inside,src)
/obj/item/storage/box/plastic
name = "plastic box"
desc = "It's a solid, plastic shell box."
icon_state = "plasticbox"
foldable_result = null
illustration = "writing"
custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) //You lose most if recycled.
/obj/item/storage/box/emergencytank
name = "emergency oxygen tank box"
desc = "A box of emergency oxygen tanks."
illustration = "emergencytank"
/obj/item/storage/box/emergencytank/PopulateContents()
..()
for(var/i in 1 to 7)
new /obj/item/tank/internals/emergency_oxygen(src) //in case anyone ever wants to do anything with spawning them, apart from crafting the box
/obj/item/storage/box/engitank
name = "extended-capacity emergency oxygen tank box"
desc = "A box of extended-capacity emergency oxygen tanks."
illustration = "extendedtank"
/obj/item/storage/box/engitank/PopulateContents()
..()
for(var/i in 1 to 7)
new /obj/item/tank/internals/emergency_oxygen/engi(src) //in case anyone ever wants to do anything with spawning them, apart from crafting the box