Files
Aurora.3/code/game/objects/items/weapons/storage/boxes.dm
T
nautandGitHub af6f645b8f Box bugfixes (#21457)
- bugfix: "Fixed some small graphical bugs relating to boxes."
- imageadd: "Colorized some boxes to take advantage of the box
colorization update."

Graphical fixes relating to some boxes, especially the handcuff and
emergency boxes.
2025-10-30 16:58:03 +00:00

1777 lines
63 KiB
Plaintext

/*
* Everything derived from the common cardboard box.
* Basically everything except the original is a kit (starts full).
*
* Contains:
* * Empty box, starter boxes (survival/engineer)
* * Latex glove and sterile mask boxes
* * Syringe, beaker, dna injector boxes
* * Blanks, flashbangs, and EMP grenade boxes
* * Tracking and chemical implant boxes
* * Prescription glasses and drinking glass boxes
* * Condiment bottle and silly cup boxes
* * Donkpocket and monkeycube boxes
* * ID boxes
* * Handcuff, mousetrap, and pillbottle boxes
* * Snap-pops
* * Replacement light boxes.
* * Kitchen utensil box
* * Random preserved snack box
* * For syndicate call-ins see uplink_kits.dm
* * Firing pin boxes - Testing and Normal. one for sec, one for science.
* * Flag boxes (various national/corporate flag collections)
*/
/obj/item/storage/box
name = "box"
desc = "It's just an ordinary box."
icon = 'icons/obj/storage/boxes.dmi'
icon_state = "box"
item_state = "box"
contained_sprite = TRUE
color = COLOR_CARDBOARD
var/label = "label"
var/illustration = "writing"
// BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
var/foldable = /obj/item/stack/material/cardboard
///Boolean, if set, can be crushed into a trash item when empty
var/trash = null
var/maxHealth = 20 //health is already defined
use_sound = 'sound/items/storage/box.ogg'
drop_sound = 'sound/items/drop/cardboardbox.ogg'
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
var/chewable = TRUE
/obj/item/storage/box/condition_hints(mob/user, distance, is_adjacent)
. += ..()
if (health < maxHealth)
if (health >= (maxHealth * 0.5))
. += SPAN_WARNING("It is slightly torn.")
else
. += SPAN_DANGER("It is full of tears and holes.")
/obj/item/storage/box/mechanics_hints(mob/user, distance, is_adjacent)
. += ..()
if(foldable)
. += "Left-click on this when empty to fold it into a sheet."
if(ispath(src.trash))
. += "This can be crumpled up into a trash item when empty, or forcibly crumpled on harm intent. "
/obj/item/storage/box/update_icon()
. = ..()
if(label)
var/image/label_img = image(icon, label)
label_img.appearance_flags |= RESET_COLOR
AddOverlays(label_img)
if(illustration)
var/image/illustration_img = image(icon, illustration)
illustration_img.appearance_flags |= RESET_COLOR
AddOverlays(illustration_img)
/obj/item/storage/box/Initialize()
. = ..()
health = maxHealth
update_icon()
/obj/item/storage/box/proc/damage(var/severity)
health -= severity
check_health()
/obj/item/storage/box/proc/check_health()
if (health <= 0)
qdel(src)
/obj/item/storage/box/attack_generic(mob/user, damage, attack_message, environment_smash, armor_penetration, attack_flags, damage_type)
if(!chewable)
return
if(istype(user, /mob/living))
var/mob/living/L = user
if (istype(L, /mob/living/carbon/alien/diona) || istype(L, /mob/living/simple_animal) || istype(L, /mob/living/carbon/human))//Monkey-like things do attack_generic, not crew
if(contents.len && !locate(/obj/item/reagent_containers/food) in src) // you can tear open empty boxes for nesting material, or for food
to_chat(user, SPAN_WARNING("There's no food in that box!"))
return
if (!damage || damage <= 0)
return
user.do_attack_animation(src)
if ((health-damage) <= 0)
L.visible_message(SPAN_DANGER("[L] tears open the [src], spilling its contents everywhere!"),
SPAN_DANGER("You tear open the [src], spilling its contents everywhere!"))
spill()
else
shake_animation()
var/toplay = pick(list('sound/effects/creatures/nibble1.ogg','sound/effects/creatures/nibble2.ogg'))
playsound(loc, toplay, 30, 1)
damage(damage)
..()
// BubbleWrap - A box can be folded up to make card
/obj/item/storage/box/attack_self(mob/user as mob)
if(..())
return
if(ispath(src.foldable) || ispath(src.trash))
var/found = 0
for(var/mob/M in range(1))
if(M.s_active == src)
src.close(M) // Close any open UI windows first
if(M == user)
found = 1
if(!found) // User is too far away
return
if(ispath(src.foldable))
if(contents.len)
return
to_chat(user, SPAN_NOTICE("You fold \the [src] flat.")) //make cardboard
playsound(src.loc, 'sound/items/storage/boxfold.ogg', 30, 1)
var/obj/item/foldable = new src.foldable()
qdel(src)
user.put_in_hands(foldable) //try to put it inhands if possible
if(ispath(src.trash) && user.a_intent == I_HURT)
if(!contents.len)
to_chat(user, SPAN_NOTICE("You crumple up \the [src]."))
else
user.visible_message(SPAN_DANGER("You crush \the [src], spilling its contents everywhere!"), SPAN_DANGER("[user] crushes \the [src], spilling its contents everywhere!"))
spill()
playsound(src.loc, 'sound/items/pickup/wrapper.ogg', 30, 1)
var/obj/item/trash = new src.trash()
qdel(src)
user.put_in_hands(trash)
/obj/item/storage/box/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/stack/packageWrap))
var/total_storage_space = attacking_item.get_storage_cost()
for(var/obj/item/I in contents)
total_storage_space += I.get_storage_cost()
if(total_storage_space <= max_storage_space)
var/question = tgui_input_list(user, "Will you want to wrap \the [src] or store the item inside?", "Wrap or Store", list("Wrap", "Store"))
if(question == "Wrap")
return
else if(question == "Store")
return ..()
else
..()
/obj/item/storage/box/large
name = "large box"
icon_state = "largebox"
label = "label_large"
illustration = "writing_large"
max_storage_space = DEFAULT_LARGEBOX_STORAGE
/obj/item/storage/box/blank
label = null
illustration = null
/obj/item/storage/box/survival
name = "emergency survival box"
desc = "A faithful box that will remain with you, no matter where you go, and probably save you."
color = COLOR_REDBOX
label = null
illustration = "survival"
max_storage_space = DEFAULT_BOX_STORAGE
can_hold = list(
/obj/item/clothing/mask,
/obj/item/tank/emergency_oxygen,
/obj/item/device/flashlight/flare,
/obj/item/stack/medical,
/obj/item/reagent_containers/hypospray/autoinjector,
/obj/item/reagent_containers/inhaler,
/obj/item/device/oxycandle,
/obj/item/extinguisher/mini,
/obj/item/device/radio,
/obj/item/device/flashlight,
/obj/item/reagent_containers/food/drinks/flask,
/obj/item/storage/box/fancy/cigarettes,
/obj/item/flame/lighter,
/obj/item/disk/nuclear,
/obj/item/crowbar,
/obj/item/airbubble
)
starts_with = list(
/obj/item/clothing/mask/breath = 1,
/obj/item/tank/emergency_oxygen = 1,
/obj/item/device/oxycandle = 1,
/obj/item/device/flashlight/flare/glowstick/red = 1,
/obj/item/stack/medical/bruise_pack = 1,
/obj/item/reagent_containers/hypospray/autoinjector/inaprovaline = 1
)
/obj/item/storage/box/survival/engineer
illustration = "survivaleng"
starts_with = list(
/obj/item/clothing/mask/breath = 1,
/obj/item/tank/emergency_oxygen/engi = 1,
/obj/item/device/oxycandle = 1,
/obj/item/device/flashlight/flare = 1,
/obj/item/stack/medical/bruise_pack = 1,
/obj/item/reagent_containers/hypospray/autoinjector/inaprovaline = 1
)
/obj/item/storage/box/survival/vaurca
icon_state = "redbox"
illustration = "survivalvox"
starts_with = list(/obj/item/clothing/mask/breath = 1, /obj/item/reagent_containers/inhaler/phoron_special = 1)
/obj/item/storage/box/gloves
name = "box of sterile gloves"
desc = "Contains sterile gloves."
color = COLOR_IAC
illustration = "latex"
max_storage_space = DEFAULT_BOX_STORAGE
starts_with = list(/obj/item/clothing/gloves/latex = 2,
/obj/item/clothing/gloves/latex/nitrile = 2,
/obj/item/clothing/gloves/latex/nitrile/unathi = 1,
/obj/item/clothing/gloves/latex/nitrile/tajara = 1,
/obj/item/clothing/gloves/latex/nitrile/vaurca = 1)
/obj/item/storage/box/masks
name = "box of surgical masks"
desc = "This box contains masks of surgicality."
color = COLOR_IAC
illustration = "sterile"
starts_with = list(/obj/item/clothing/mask/surgical = 4, /obj/item/clothing/mask/surgical/w = 3)
/obj/item/storage/box/syringes
name = "box of syringes"
desc = "A box full of syringes."
color = COLOR_IAC
illustration = "syringe"
starts_with = list(/obj/item/reagent_containers/syringe = 20)
/obj/item/storage/box/syringegun
name = "box of syringe gun cartridges"
desc = "A box full of compressed gas cartridges."
illustration = "syringe"
starts_with = list(/obj/item/syringe_cartridge = 7)
/obj/item/storage/box/beakers
name = "box of beakers"
color = COLOR_IAC
illustration = "beaker"
starts_with = list(/obj/item/reagent_containers/glass/beaker = 7)
/obj/item/storage/box/injectors
name = "box of DNA injectors"
desc = "This box contains injectors it seems."
illustration = "dna"
starts_with = list(/obj/item/dnainjector/h2m = 3, /obj/item/dnainjector/m2h = 3)
// Ammunition
/obj/item/storage/box/ammo
name = "ammo box"
desc = "A box with several compact tungsten slugs, aimed for use in gauss carbines."
icon_state = "ammobox"
item_state = "ammobox"
illustration = null
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
foldable = null
chewable = FALSE
/obj/item/storage/box/ammo/tungstenslugs
name = "box of compact tungsten slugs"
desc = "A box with several compact tungsten slugs, aimed for use in gauss carbines."
starts_with = list(/obj/item/ammo_casing/gauss/carbine = 4)
/obj/item/storage/box/ammo/sniperammo
name = "box of 14.5mm shells"
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
starts_with = list(/obj/item/ammo_casing/a145 = 7)
/obj/item/storage/box/ammo/ammo10mm
name = "box of 10mm shells"
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
starts_with = list(/obj/item/ammo_casing/c10mm = 10)
/obj/item/storage/box/ammo/governmentammo
name = "box of .45-70 Govt. rounds"
desc = "It has a picture of a rifle shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
starts_with = list(/obj/item/ammo_casing/govt = 8)
// Shells
/obj/item/storage/box/shells
name = "empty shotgun shell box"
desc = "It has a picture of a shotgun shell and several warning symbols on the front."
color = COLOR_DARK_GUNMETAL
icon_state = "shellbox"
label = "label_shell"
illustration = "blankshot"
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
/obj/item/storage/box/shells/tranquilizer
name = "box of tranquilizer darts"
desc = "It has a picture of a tranquilizer dart and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "incendiaryshot"
starts_with = list(/obj/item/ammo_casing/tranq = 8)
/obj/item/storage/box/shells/blanks
name = "box of blank shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front."
illustration = "blankshot"
starts_with = list(/obj/item/ammo_casing/shotgun/blank = 8)
/obj/item/storage/box/shells/beanbags
name = "box of beanbag shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "beanshot"
starts_with = list(/obj/item/ammo_casing/shotgun/beanbag = 8)
/obj/item/storage/box/shells/slugs
name = "box of shotgun slugs"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "lethalslug"
starts_with = list(/obj/item/ammo_casing/shotgun = 8)
/obj/item/storage/box/shells/buckshot
name = "box of shotgun shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "lethalshell"
starts_with = list(/obj/item/ammo_casing/shotgun/pellet = 8)
/obj/item/storage/box/shells/flashshells
name = "box of illumination shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "illumshot"
starts_with = list(/obj/item/ammo_casing/shotgun/flash = 8)
/obj/item/storage/box/shells/stunshells
name = "box of stun shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "stunshot"
starts_with = list(/obj/item/ammo_casing/shotgun/stunshell = 8)
/obj/item/storage/box/shells/practiceshells
name = "box of practice shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "blankshot"
starts_with = list(/obj/item/ammo_casing/shotgun/practice = 8)
/obj/item/storage/box/shells/haywireshells
name = "box of haywire shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "empshot"
starts_with = list(/obj/item/ammo_casing/shotgun/emp = 8)
/obj/item/storage/box/shells/incendiaryshells
name = "box of incendiary shells"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "incendiaryshot"
starts_with = list(/obj/item/ammo_casing/shotgun/incendiary = 8)
/obj/item/storage/box/shells/trackingslugs
name = "box of tracking slugs"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "trackingshot"
starts_with = list(/obj/item/ammo_casing/shotgun/tracking = 4)
/obj/item/storage/box/shells/wallgunammo
name = "box of wall gun slugs"
desc = "It has a picture of a shotgun shell and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
illustration = "lethalslug"
starts_with = list(/obj/item/ammo_casing/shotgun/moghes = 8)
// Tactical boxes
/obj/item/storage/box/tactical
name = "tactical equipment box"
color = COLOR_GUNMETAL
label = "label_sec"
/obj/item/storage/box/tactical/flashbangs
name = "box of flashbangs"
desc = "A box containing 7 antipersonnel flashbang grenades.<br> WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use."
illustration = "flashbang"
starts_with = list(/obj/item/grenade/flashbang = 7)
/obj/item/storage/box/tactical/stingers
name = "box of stinger grenades"
desc = "A box containing 7 antipersonnel stinger grenades. <br> WARNING: These devices are extremely dangerous and can cause injury."
illustration = "stinger"
starts_with = list(/obj/item/grenade/stinger = 7)
/obj/item/storage/box/tactical/teargas
name = "box of pepperspray grenades"
desc = "A box containing 7 tear gas grenades. A gas mask is printed on the label.<br> WARNING: Exposure carries risk of serious injury or death. Keep away from persons with lung conditions."
illustration = "grenade"
starts_with = list(/obj/item/grenade/chem_grenade/teargas = 6)
/obj/item/storage/box/tactical/smokebombs
name = "box of smoke grenades"
desc = "A box full of smoke grenades, used by special law enforcement teams and military organisations. Provides cover, confusion, and distraction."
illustration = "grenade"
starts_with = list(/obj/item/grenade/smokebomb = 7)
/obj/item/storage/box/tactical/emps
name = "box of emp grenades"
desc = "A box containing 5 military grade EMP grenades.<br> WARNING: Do not use near unshielded electronics or biomechanical augmentations, death or permanent paralysis may occur."
illustration = "emp"
starts_with = list(/obj/item/grenade/empgrenade = 5)
/obj/item/storage/box/tactical/smokes
name = "box of smoke bombs"
desc = "A box containing 5 smoke bombs."
illustration = "grenade"
starts_with = list(/obj/item/grenade/smokebomb = 5)
/obj/item/storage/box/tactical/anti_photons
name = "box of anti-photon grenades"
desc = "A box containing 5 experimental photon disruption grenades."
illustration = "grenade"
starts_with = list(/obj/item/grenade/anti_photon = 5)
/obj/item/storage/box/tactical/frags
name = "box of frag grenades"
desc = "A box containing 5 military grade fragmentation grenades.<br> WARNING: Live explosives. Misuse may result in serious injury or death."
illustration = "grenade"
starts_with = list(/obj/item/grenade/frag = 5)
/obj/item/storage/box/tactical/napalm
name = "box of napalm grenades"
desc = "A box containing 3 napalm grenades."
illustration = "grenade"
starts_with = list(/obj/item/grenade/napalm = 3)
/obj/item/storage/box/tactical/cardox
name = "box of cardox grenades"
desc = "A box containing 5 experimental cardox grenades."
illustration = "grenade"
starts_with = list(/obj/item/grenade/chem_grenade/large/phoroncleaner = 5)
/obj/item/storage/box/tactical/trackimp
name = "boxed tracking implant kit"
desc = "Box full of scum-bag tracking utensils."
illustration = "implant"
starts_with = list(/obj/item/implantcase/tracking = 4, /obj/item/implanter = 1, /obj/item/implantpad = 1, /obj/item/locator = 1)
/obj/item/storage/box/handcuffs
name = "box of spare handcuffs"
desc = "A box full of handcuffs."
illustration = "handcuff"
starts_with = list(/obj/item/handcuffs = 7)
// Firing pins
/obj/item/storage/box/firingpins
name = "box of firing pins"
desc = "A box of NT brand Firearm authentication pins; Needed to operate most weapons."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin = 7)
/obj/item/storage/box/securitypins
name = "box of wireless-control firing pins"
desc = "A box of NT brand Firearm authentication pins; Needed to operate most weapons. These firing pins are wireless-control enabled."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin/wireless = 7)
/obj/item/storage/box/testpins
name = "box of firing pins"
desc = "A box of NT brand Testing Authentication pins; allows guns to fire in designated firing ranges."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin/test_range = 7)
/obj/item/storage/box/loyaltypins
name = "box of firing pins"
desc = "A box of specialised \"loyalty\" authentication pins produced by NanoTrasen; these check to see if the user of the gun it's installed in has been implanted with a mind shield implant. Often used in ERTs."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin/implant/loyalty = 7)
/obj/item/storage/box/loyaltypins/fill()
..()
new /obj/item/device/firing_pin/implant/loyalty(src)
new /obj/item/device/firing_pin/implant/loyalty(src)
new /obj/item/device/firing_pin/implant/loyalty(src)
new /obj/item/device/firing_pin/implant/loyalty(src)
/obj/item/storage/box/firingpinsRD
name = "box of assorted firing pins"
desc = "A box of varied assortment of firing pins. Appears to have R&D stickers on all sides of the box. Also seems to have a smiley face sticker on the top of it."
illustration = "firingpin"
starts_with = list(/obj/item/device/firing_pin = 2, /obj/item/device/firing_pin/access = 2, /obj/item/device/firing_pin/implant/loyalty = 2, /obj/item/device/firing_pin/psionic = 1, /obj/item/device/firing_pin/dna = 1)
/obj/item/storage/box/psireceiver
name = "box of psionic receivers"
desc = "A box of psionic receivers, which can be surgically implanted to act as a replacement for an underdeveloped or non-existent zona bovinae. This one has a large sticker on the side reading FOR RESEARCH USE ONLY."
color = COLOR_PURPLE_GRAY
illustration = "implant"
starts_with = list(/obj/item/organ/internal/augment/psi = 4)
/obj/item/storage/box/tethers
name = "box of tethering devices"
desc = "A box containing eight electro-tethers, used primarily to keep track of partners during expeditions."
color = COLOR_PURPLE_GRAY
starts_with = list(/obj/item/tethering_device = 8)
make_exact_fit = TRUE
/obj/item/storage/box/chemimp
name = "boxed chemical implant kit"
desc = "Box of stuff used to implant chemicals."
color = COLOR_PURPLE_GRAY
illustration = "implant"
starts_with = list(/obj/item/implantcase/chem = 4, /obj/item/implanter = 1, /obj/item/implantpad = 1)
/obj/item/storage/box/chemimp/fill()
..()
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implantcase/chem(src)
new /obj/item/implanter(src)
new /obj/item/implantpad(src)
/obj/item/storage/box/rxglasses
name = "box of prescription glasses"
desc = "This box contains nerd glasses."
illustration = "glasses"
starts_with = list(/obj/item/clothing/glasses/regular = 7)
/obj/item/storage/box/drinkingglasses
name = "box of drinking glasses"
desc = "It has a picture of drinking glasses on it."
color = COLOR_BLUE_GRAY
illustration = "drinkglass"
starts_with = list(/obj/item/reagent_containers/food/drinks/drinkingglass = 6)
/obj/item/storage/box/cdeathalarm_kit
name = "death alarm kit"
desc = "Box of stuff used to implant death alarms."
color = COLOR_GUNMETAL
illustration = "implant"
starts_with = list(/obj/item/implanter = 1, /obj/item/implantcase/death_alarm = 6, /obj/item/implantpad = 1)
/obj/item/storage/box/large/condimentbottles
name = "box of condiment bottles"
desc = "It has a large ketchup smear on it."
color = COLOR_YELLOW_GRAY
illustration = "condiment"
starts_with = list(/obj/item/reagent_containers/food/condiment = 6)
/obj/item/storage/box/cups
name = "box of paper cups"
illustration = "cup"
desc = "It has pictures of paper cups on the front."
starts_with = list(/obj/item/reagent_containers/food/drinks/sillycup = 7)
/obj/item/storage/box/janitorgloves
name = "janitorial gloves box"
desc = "A box full of janitorial gloves of all shapes and sizes."
color = COLOR_PURPLE_GRAY
make_exact_fit = TRUE
can_hold = list(
/obj/item/clothing/gloves/janitor
)
starts_with = list(
/obj/item/clothing/gloves/janitor = 1,
/obj/item/clothing/gloves/janitor/tajara = 1,
/obj/item/clothing/gloves/janitor/unathi = 1,
/obj/item/clothing/gloves/janitor/vaurca = 1
)
/obj/item/storage/box/unique //unique sprite/properties
name = "unique box"
desc = "A unique box. How is it unique? You have no idea."
color = COLOR_WHITE
illustration = null
chewable = FALSE
/obj/item/storage/box/unique/monkeycubes
name = "monkey cube box"
desc = "Drymate brand monkey cubes. Just add water!"
desc_extended = "The manufacture of a cubed animal produces subjects that are similar but have marked differences compared to their ordinary cousins. Higher brain functions are all but destroyed \
and the life expectancy of the cubed animal is greatly reduced, with most expiring only a few days after introduction with water."
icon_state = "monkeycubebox"
can_hold = list(/obj/item/reagent_containers/food/snacks/monkeycube)
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped = 5)
/obj/item/storage/box/unique/monkeycubes/farwacubes
name = "farwa cube box"
desc = "Drymate brand farwa cubes, shipped from Adhomai. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/farwacube = 5)
/obj/item/storage/box/unique/monkeycubes/stokcubes
name = "stok cube box"
desc = "Drymate brand stok cubes, shipped from Moghes. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/stokcube = 5)
/obj/item/storage/box/unique/monkeycubes/neaeracubes
name = "neaera cube box"
desc = "Drymate brand neaera cubes, shipped from Nralakk IV. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube = 5)
/obj/item/storage/box/unique/monkeycubes/vkrexicubes
name = "vkrexi cube box"
desc = "Drymate brand vkrexi cubes. Just add water!"
starts_with = list(/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/vkrexicube = 5)
/obj/item/storage/box/unique/sharps
name = "sharps disposal box"
desc = "A plastic box for disposal of used needles and other sharp, potentially-contaminated tools. There is a large biohazard sign on the front."
illustration = null
icon_state = "sharpsbox"
use_sound = 'sound/items/storage/briefcase.ogg'
max_storage_space = DEFAULT_BOX_STORAGE
foldable = null
/obj/item/storage/box/unique/freezer
name = "portable freezer"
desc = "This nifty shock-resistant device will keep your 'groceries' nice and non-spoiled."
icon_state = "portafreezer"
item_state = "medicalpack"
max_w_class = WEIGHT_CLASS_NORMAL
max_storage_space = DEFAULT_LARGEBOX_STORAGE
use_to_pickup = FALSE // for picking up broken bulbs, not that most people will try
chewable = FALSE
/obj/item/storage/box/unique/freezer/organcooler
name = "organ cooler"
desc = "A sealed, cooled container to keep organs from decaying."
icon_state = "organcooler"
item_state = "redbox"
max_w_class = WEIGHT_CLASS_NORMAL
foldable = FALSE
w_class = WEIGHT_CLASS_BULKY
can_hold = list(
/obj/item/organ,
/obj/item/reagent_containers/food,
/obj/item/reagent_containers/glass,
/obj/item/gun
)
storage_slots = 2
/obj/item/storage/box/unique/donkpockets
name = "box of donk-pockets"
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
icon_state = "donkpocketbox"
item_state = "redbox"
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket = 6)
/obj/item/storage/box/unique/donkpockets/sinpockets
name = "box of donk-pockets"
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
illustration = null
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/sinpocket = 6)
/obj/item/storage/box/unique/donkpockets/sinpockets/antagonist_hints(mob/user, distance, is_adjacent)
. += ..()
. += "Crush bottom of each package to initiate chemical heating. Wait for 20 seconds before consumption."
. += "Product will cool if not eaten within seven minutes."
/obj/item/storage/box/unique/donkpockets/gwok
name = "box of teriyaki Gwok-pockets"
icon_state = "donkpocketboxteriyaki"
item_state = "redbox"
illustration = null
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/teriyaki = 6)
/obj/item/storage/box/unique/donkpockets/gwok/takoyaki
name = "box of takoyaki Gwok-pockets"
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/takoyaki = 6)
/obj/item/storage/box/ids
name = "box of spare IDs"
desc = "Has so many empty IDs."
color = COLOR_PALE_BLUE_GRAY
illustration = "id"
starts_with = list(/obj/item/card/id = 7)
/obj/item/storage/box/zipties
name = "box of zipties"
desc = "A box full of zipties."
color = COLOR_GUNMETAL
illustration = "handcuff"
starts_with = list(/obj/item/handcuffs/ziptie = 7)
/obj/item/storage/box/mousetraps
name = "box of Pest-B-Gon mousetraps"
desc = "<B><span class='warning'>WARNING:</span></B> <I>Keep out of reach of children</I>."
illustration = "mousetraps"
starts_with = list(/obj/item/device/assembly/mousetrap = 6)
/obj/item/storage/box/pillbottles
name = "box of pill bottles"
desc = "It has pictures of pill bottles on its front."
color = COLOR_IAC
illustration = "pillbox"
starts_with = list(/obj/item/storage/pill_bottle = 7)
/obj/item/storage/box/spraybottles
name = "box of spray bottles"
desc = "It has pictures of spray bottles on its front."
illustration = "spray"
starts_with = list(/obj/item/reagent_containers/spray = 7)
/obj/item/storage/box/unique/snappops
name = "snap pop box"
desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children."
icon = 'icons/obj/toy.dmi'
icon_state = "spbox"
can_hold = list(/obj/item/toy/snappop)
starts_with = list(/obj/item/toy/snappop = 8)
/obj/item/storage/box/unique/snappops/syndi
starts_with = list(/obj/item/toy/snappop/syndi = 8)
/obj/item/storage/box/unique/snappops/syndi/antagonist_hints(mob/user, distance, is_adjacent)
. += ..()
. += "These snap pops have an extra compound added that will deploy a tiny smokescreen when snapped."
/obj/item/storage/box/partypopper
name = "party popper box"
desc = "Six cones of confetti conflagarating fun!"
color = COLOR_PALE_PINK
illustration = "partypopper"
starts_with = list(/obj/item/toy/partypopper = 6)
/obj/item/storage/box/autoinjectors
name = "box of empty injectors"
desc = "Contains empty autoinjectors."
color = COLOR_IAC
illustration = "epipen"
starts_with = list(/obj/item/reagent_containers/hypospray/autoinjector = 7)
/obj/item/storage/box/lights
name = "box of replacement bulbs"
illustration = "light"
desc = "This box is shaped on the inside so that only light tubes and bulbs fit."
color = COLOR_DARK_BLUE_GRAY
use_to_pickup = TRUE // for picking up broken bulbs, not that most people will try
make_exact_fit = TRUE
/obj/item/storage/box/lights/bulbs
starts_with = list(/obj/item/light/bulb = 21)
/obj/item/storage/box/lights/tubes
name = "box of replacement tubes"
illustration = "lighttube"
starts_with = list(/obj/item/light/tube = 21)
/obj/item/storage/box/lights/mixed
name = "box of replacement lights"
illustration = "lightmixed"
starts_with = list(/obj/item/light/tube = 14, /obj/item/light/bulb = 7)
/obj/item/storage/box/lights/coloredmixed
name = "box of colored lights"
illustration = "lightmixed"
/obj/item/storage/box/lights/coloredmixed/fill() // too lazy for this one
..()
var/static/list/tube_colors = list(
/obj/item/light/tube/colored/red,
/obj/item/light/tube/colored/green,
/obj/item/light/tube/colored/blue,
/obj/item/light/tube/colored/magenta,
/obj/item/light/tube/colored/yellow,
/obj/item/light/tube/colored/cyan
)
var/static/list/bulbs_colors = list(
/obj/item/light/bulb/colored/red,
/obj/item/light/bulb/colored/green,
/obj/item/light/bulb/colored/blue,
/obj/item/light/bulb/colored/magenta,
/obj/item/light/bulb/colored/yellow,
/obj/item/light/bulb/colored/cyan
)
for(var/i = 0, i < 14, i++)
var/type = pick(tube_colors)
new type(src)
for(var/i = 0, i < 7, i++)
var/type = pick(bulbs_colors)
new type(src)
/obj/item/storage/box/lights/colored/red
name = "box of red lights"
illustration = "lightmixed"
color = COLOR_RED_GRAY
starts_with = list(/obj/item/light/tube/colored/red = 14, /obj/item/light/bulb/colored/red = 7)
/obj/item/storage/box/lights/colored/green
name = "box of green lights"
illustration = "lightmixed"
color = COLOR_GREEN_GRAY
starts_with = list(/obj/item/light/tube/colored/green = 14, /obj/item/light/bulb/colored/green = 7)
/obj/item/storage/box/lights/colored/blue
name = "box of blue lights"
illustration = "lightmixed"
color = COLOR_BLUE_GRAY
starts_with = list(/obj/item/light/tube/colored/blue = 14, /obj/item/light/bulb/colored/blue = 7)
/obj/item/storage/box/lights/colored/cyan
name = "box of cyan lights"
illustration = "lightmixed"
color = COLOR_LIGHT_CYAN
starts_with = list(/obj/item/light/tube/colored/cyan = 14, /obj/item/light/bulb/colored/cyan = 7)
/obj/item/storage/box/lights/colored/yellow
name = "box of yellow lights"
illustration = "lightmixed"
color = COLOR_YELLOW_GRAY
starts_with = list(/obj/item/light/tube/colored/yellow = 14, /obj/item/light/bulb/colored/yellow = 7)
/obj/item/storage/box/lights/colored/magenta
name = "box of magenta lights"
illustration = "lightmixed"
color = COLOR_PALE_PINK
starts_with = list(/obj/item/light/tube/colored/magenta = 14, /obj/item/light/bulb/colored/magenta = 7)
/obj/item/storage/box/kitchen
name = "kitchen supplies"
illustration = "knife"
color = COLOR_GRAY80
desc = "Contains an assortment of utensils and containers useful in the preparation of food and drinks."
/obj/item/storage/box/kitchen/fill()
new /obj/item/material/knife(src)//Should always have a knife
var/list/utensils = list(
/obj/item/material/kitchen/rollingpin,
/obj/item/reagent_containers/glass/beaker,
/obj/item/material/kitchen/utensil/fork,
/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/material/kitchen/utensil/spoon,
/obj/item/material/kitchen/utensil/knife,
/obj/item/reagent_containers/food/drinks/shaker
)
for (var/i = 0,i<6,i++)
var/type = pick(utensils)
new type(src)
/obj/item/storage/box/snack
name = "rations box"
illustration = "snack"
desc = "Contains a random assortment of preserved foods. Guaranteed to remain edible* in room-temperature longterm storage for centuries!"
/obj/item/storage/box/snack/fill()
var/list/snacks = list(
/obj/item/reagent_containers/food/snacks/koisbar_clean,
/obj/item/reagent_containers/food/snacks/candy,
/obj/item/reagent_containers/food/snacks/candy/koko,
/obj/item/reagent_containers/food/snacks/candy_corn,
/obj/item/reagent_containers/food/snacks/chips,
/obj/item/reagent_containers/food/snacks/chocolatebar,
/obj/item/reagent_containers/food/snacks/chocolateegg,
/obj/item/reagent_containers/food/snacks/popcorn,
/obj/item/reagent_containers/food/snacks/sosjerky,
/obj/item/reagent_containers/food/snacks/no_raisin,
/obj/item/reagent_containers/food/snacks/spacetwinkie,
/obj/item/reagent_containers/food/snacks/cheesiehonkers,
/obj/item/reagent_containers/food/snacks/syndicake,
/obj/item/reagent_containers/food/snacks/fortunecookie,
/obj/item/reagent_containers/food/snacks/poppypretzel,
/obj/item/reagent_containers/food/snacks/cracker,
/obj/item/reagent_containers/food/snacks/liquidfood,
/obj/item/reagent_containers/food/snacks/skrellsnacks,
/obj/item/reagent_containers/food/snacks/tastybread,
/obj/item/reagent_containers/food/snacks/meatsnack,
/obj/item/reagent_containers/food/snacks/maps,
/obj/item/reagent_containers/food/snacks/nathisnack,
/obj/item/reagent_containers/food/snacks/adhomian_can,
/obj/item/reagent_containers/food/snacks/tuna,
/obj/item/storage/box/fancy/gum,
/obj/item/storage/box/fancy/cookiesnack,
/obj/item/storage/box/fancy/admints,
/obj/item/storage/box/fancy/vkrexitaffy
)
for (var/i = 0,i<7,i++)
var/type = pick(snacks)
new type(src)
/obj/item/storage/box/stims
name = "stimpack value kit"
desc = "A box with several stimpack medipens for the economical miner."
illustration = "syringe"
starts_with = list(/obj/item/reagent_containers/hypospray/autoinjector/stimpack = 4)
/obj/item/storage/box/inhalers
name = "inhaler kit"
desc = "A box filled with several inhalers and empty inhaler cartridges."
illustration = "inhalers"
starts_with = list(/obj/item/personal_inhaler = 2, /obj/item/reagent_containers/personal_inhaler_cartridge = 6)
/obj/item/storage/box/inhalers_large
name = "combat inhaler kit"
desc = "A box filled with a combat inhaler and several large empty inhaler cartridges."
illustration = "inhalers"
starts_with = list(/obj/item/personal_inhaler/combat = 1, /obj/item/reagent_containers/personal_inhaler_cartridge/large = 6)
/obj/item/storage/box/inhalers_auto
name = "autoinhaler kit"
desc = "A box filled with a combat inhaler and several large empty inhaler cartridges."
illustration = "inhalers"
starts_with = list(/obj/item/reagent_containers/inhaler = 8)
/obj/item/storage/box/clams
name = "box of Ras'val clam"
desc = "A box filled with clams from the Ras'val sea, imported by Njadra'Akhar Enterprises."
starts_with = list(/obj/item/reagent_containers/food/snacks/clam = 5)
/obj/item/storage/box/large/produce
name = "produce box"
desc = "A large box of random, leftover produce."
color = COLOR_GREEN_GRAY
icon_state = "largebox"
illustration = "fruit"
starts_with = list(/obj/random_produce/box = 15)
make_exact_fit = TRUE
/obj/item/storage/box/large/produce/adhomai
name = "adhomian produce box"
desc = "A large box of produce originating from the frigid world of Adhomai."
starts_with = list(/obj/random_produce/box/adhomai = 15)
/obj/item/storage/box/large/produce/nralakk
name = "nralakk produce box"
desc = "A large box of produce originating from the Nralakk Federation."
starts_with = list(/obj/random_produce/box/nralakk = 15)
/obj/item/storage/box/large/produce/moghes
name = "moghresian produce box"
desc = "A large box of produce originating from Moghes, home of the Izweski Hegemony."
starts_with = list(/obj/random_produce/box/moghes = 15)
/obj/item/storage/box/large/candy
name = "candy box"
desc = "A large box of assorted small candy."
icon_state = "largebox"
illustration = "writing_large"
make_exact_fit = TRUE
/obj/item/storage/box/large/candy/fill()
var/list/assorted_list = list(
/obj/item/reagent_containers/food/snacks/cb01 = 1,
/obj/item/reagent_containers/food/snacks/cb02 = 1,
/obj/item/reagent_containers/food/snacks/cb03 = 1,
/obj/item/reagent_containers/food/snacks/cb04 = 1,
/obj/item/reagent_containers/food/snacks/cb05 = 1,
/obj/item/reagent_containers/food/snacks/cb06 = 1,
/obj/item/reagent_containers/food/snacks/cb07 = 1,
/obj/item/reagent_containers/food/snacks/cb08 = 1,
/obj/item/reagent_containers/food/snacks/cb09 = 1,
/obj/item/reagent_containers/food/snacks/cb10 = 1
)
for(var/i in 1 to 24)
var/chosen_candy = pickweight(assorted_list)
new chosen_candy(src)
/obj/item/storage/box/crabmeat
name = "box of crab legs"
desc = "A box filled with high-quality crab legs. Shipped on-board by popular demand!"
starts_with = list(/obj/item/reagent_containers/food/snacks/crabmeat = 5)
/obj/item/storage/box/toothpaste
name = "dental hygiene box"
desc = "A box filled with dental hygiene products for taking care of those pearly whites."
color = COLOR_BLUE_GRAY
starts_with = list(/obj/item/reagent_containers/food/snacks/crabmeat = 5)
can_hold = list(/obj/item/reagent_containers/toothpaste,
/obj/item/reagent_containers/toothbrush,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash,
)
starts_with = list(/obj/item/reagent_containers/toothpaste = 1,
/obj/item/reagent_containers/toothbrush = 1,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash = 1,
)
/obj/item/storage/box/toothpaste/green
starts_with = list(/obj/item/reagent_containers/toothpaste = 1,
/obj/item/reagent_containers/toothbrush/green = 1,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash = 1,
)
/obj/item/storage/box/toothpaste/red
starts_with = list(/obj/item/reagent_containers/toothpaste = 1,
/obj/item/reagent_containers/toothbrush/red = 1,
/obj/item/reagent_containers/food/drinks/flask/vacuumflask/mouthwash = 1,
)
/obj/item/storage/box/holobadge
name = "holobadge box"
desc = "A box claiming to contain holobadges."
starts_with = list(/obj/item/clothing/accessory/badge/holo = 4,
/obj/item/clothing/accessory/badge/holo/cord = 2)
/obj/item/storage/box/sol_visa
name = "Sol Alliance visa recommendations box"
desc = "A box full of Sol Aliance visa recommendation slips."
illustration = "paper"
starts_with = list(/obj/item/clothing/accessory/badge/sol_visa = 6)
/obj/item/storage/box/ceti_visa
name = "TCAF recruitment papers box"
desc = "A box full of papers that signify one as a recruit of the Tau Ceti Armed Forces."
illustration = "paper"
starts_with = list(/obj/item/clothing/accessory/badge/tcaf_papers = 6)
/obj/item/storage/box/hadii_card
name = "honorary party member card box"
desc = "A box full of Hadiist party member cards."
illustration = "paper"
starts_with = list(/obj/item/clothing/accessory/badge/hadii_card = 6)
/obj/item/storage/box/hadii_manifesto
name = "hadiist manifesto box"
desc = "A box filled with copies of the Hadiist Manifesto"
illustration = "paper"
starts_with = list(/obj/item/device/versebook/pra = 6)
/obj/item/storage/box/dpra_manifesto
name = "al'mariist manifesto box"
desc = "A box filled with copies of 'In Defense of Al'mari's Legacy'."
illustration = "paper"
starts_with = list(/obj/item/device/versebook/dpra = 6)
/obj/item/storage/box/nka_manifesto
name = "royalist manifesto card box"
desc = "A box filled with copies of 'The New Kingdom'."
illustration = "paper"
starts_with = list(/obj/item/device/versebook/nka = 6)
/obj/item/storage/box/suns_flags
name = "s'rand'marr Worship flag box"
desc = "A box filled with flags of the S'rend'marr faith."
illustration = "flags"
starts_with = list(
/obj/item/flag/srendarr = 1,
/obj/item/flag/messa = 1
)
/obj/item/storage/box/matake_flags
name = "ma'ta'ke pantheon flag box"
desc = "A box filled to the brim with the various flags of the Ma'ta'ke Pantheon."
illustration = "flags"
starts_with = list(
/obj/item/flag/matake = 1,
/obj/item/flag/marryam = 1,
/obj/item/flag/rredouane = 1,
/obj/item/flag/shumaila = 1,
/obj/item/flag/kraszar = 1,
/obj/item/flag/dhrarmela = 1,
/obj/item/flag/azubarre = 1
)
/// Parent object of various national flag boxes. Original intention for random cargo spawn.
/obj/item/storage/box/large/flags
name = "national flag box - PARENT ITEM DO NOT USE"
desc = "A box filled to the brim with various flags."
illustration = "flagslg"
make_exact_fit = TRUE
can_hold = list(
/obj/item/flag
)
/obj/item/storage/box/large/flags/sol
name = "Solarian Alliance flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/sol = 6,
/obj/item/flag/sol/l = 4,
/obj/item/flag/venus = 2,
/obj/item/flag/venus/l = 1,
/obj/item/flag/luna = 2,
/obj/item/flag/luna/l = 1,
/obj/item/flag/callisto = 2,
/obj/item/flag/callisto/l = 1,
/obj/item/flag/mars = 2,
/obj/item/flag/mars/l = 1,
/obj/item/flag/pluto = 2,
/obj/item/flag/pluto/l = 1,
/obj/item/flag/visegrad = 2,
/obj/item/flag/visegrad/l = 1,
/obj/item/flag/nhp = 2,
/obj/item/flag/nhp/l = 1,
/obj/item/flag/silversun = 2,
/obj/item/flag/silversun/l = 1,
/obj/item/flag/sancolette = 2,
/obj/item/flag/sancolette/l = 1,
/obj/item/flag/nsrm = 2,
/obj/item/flag/nsrm/l = 1,
/obj/item/flag/ssrm = 2,
/obj/item/flag/ssrm/l = 1
)
/obj/item/storage/box/large/flags/biesel
name = "Republic of Biesel flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/biesel = 6,
/obj/item/flag/biesel/l = 4,
/obj/item/flag/valkyrie = 2,
/obj/item/flag/valkyrie/l = 1,
/obj/item/flag/portantillia = 2,
/obj/item/flag/portantillia/l = 1,
/obj/item/flag/mictlan = 2,
/obj/item/flag/mictlan/l = 1,
/obj/item/flag/newgibson = 2,
/obj/item/flag/newgibson/l = 1
)
/obj/item/storage/box/large/flags/coc
name = "Coalition of Colonies flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/coalition = 6,
/obj/item/flag/coalition/l = 4,
/obj/item/flag/xanu = 2,
/obj/item/flag/xanu/l = 1,
/obj/item/flag/gadpathur = 2,
/obj/item/flag/gadpathur/l = 1,
/obj/item/flag/vysoka = 2,
/obj/item/flag/vysoka/l = 1,
/obj/item/flag/himeo = 2,
/obj/item/flag/himeo/l = 1,
/obj/item/flag/konyang = 2,
/obj/item/flag/konyang/l = 1,
/obj/item/flag/assunzione = 2,
/obj/item/flag/assunzione/l = 1,
/obj/item/flag/burzsia = 2,
/obj/item/flag/burzsia/l = 1,
/obj/item/flag/scarab = 3,
/obj/item/flag/scarab/l = 2
)
/obj/item/storage/box/large/flags/galataea
name = "Technocracy of Galatea flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/galatea_government = 4,
/obj/item/flag/galatea_government/l = 3,
/obj/item/flag/galatea = 2,
/obj/item/flag/galatea/l = 1,
/obj/item/flag/tsukuyomi = 2,
/obj/item/flag/tsukuyomi/l = 1,
/obj/item/flag/svarog = 2,
/obj/item/flag/svarog/l = 1,
/obj/item/flag/empyrean = 2,
/obj/item/flag/empyrean/l = 1
)
/obj/item/storage/box/large/flags/dominia
name = "Empire of Dominia flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/dominia = 8,
/obj/item/flag/dominia/l = 6,
/obj/item/flag/strelitz = 4,
/obj/item/flag/volvalaad = 4,
/obj/item/flag/caladius = 2,
/obj/item/flag/zhao = 4,
/obj/item/flag/zhurong = 3,
/obj/item/flag/zhurong/l = 2,
/obj/item/flag/imperial_frontier = 3,
/obj/item/flag/imperial_frontier/l = 2
)
/obj/item/storage/box/large/flags/elyra
name = "Serene Republic of Elyra flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/elyra = 6,
/obj/item/flag/elyra/l = 4,
/obj/item/flag/persepolis = 2,
/obj/item/flag/persepolis/l = 1,
/obj/item/flag/damascus = 2,
/obj/item/flag/damascus/l = 1,
/obj/item/flag/medina = 2,
/obj/item/flag/medina/l = 1,
/obj/item/flag/newsuez = 2,
/obj/item/flag/newsuez/l = 1,
/obj/item/flag/aemaq = 2,
/obj/item/flag/aemaq/l = 1
)
/obj/item/storage/box/large/flags/diona
name = "Diona flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/consortium = 6,
/obj/item/flag/consortium/l = 4,
/obj/item/flag/ekane = 2,
/obj/item/flag/ekane/l = 1,
/obj/item/flag/narrows = 2,
/obj/item/flag/narrows/l = 1
)
/obj/item/storage/box/large/flags/unathi
name = "Unathi flag box"
desc = "A box filled to the brim with various national flags."
starts_with = list(
/obj/item/flag/hegemony = 6,
/obj/item/flag/hegemony/l = 4,
/obj/item/flag/ouerea/old = 4,
/obj/item/flag/ouerea/old/l = 3,
/obj/item/flag/fishingleague = 2
)
/obj/item/storage/box/large/flags/skrell
name = "Skrell flag box"
desc = "A box filled to the brim with various waterproof national flags."
starts_with = list(
/obj/item/flag/nralakk = 8,
/obj/item/flag/nralakk/l = 6,
/obj/item/flag/traverse = 2,
/obj/item/flag/traverse/l = 1
)
/obj/item/storage/box/large/flags/tajara
name = "Tajaran collected flag box"
desc = "A box filled to the brim with various national flags. Whoever chose the selection for this one was either brave or stupid or both."
starts_with = list(
/obj/item/flag/dpra = 4,
/obj/item/flag/dpra/l = 3,
/obj/item/flag/pra = 4,
/obj/item/flag/pra/l = 3,
/obj/item/flag/nka = 4,
/obj/item/flag/nka/l = 3,
/obj/item/flag/ftc = 4,
/obj/item/flag/ftc/l = 3
)
/obj/item/storage/box/large/flags/vaurca
name = "Vaurca flag box"
desc = "A box filled to the brim with various hive flags."
starts_with = list(
/obj/item/flag/sedantis = 4,
/obj/item/flag/sedantis/l = 3,
/obj/item/flag/zora = 4,
/obj/item/flag/zora/l = 3,
/obj/item/flag/klax = 4,
/obj/item/flag/klax/l = 3,
/obj/item/flag/cthur = 4,
/obj/item/flag/cthur/l = 3
)
/obj/item/storage/box/large/flags/goldendeep
name = "Golden Deep flag box"
desc = "A box filled to the brim with various national flags. It's made from a bit sturdier board than most boxes."
starts_with = list(
/obj/item/flag/goldendeep = 8,
/obj/item/flag/goldendeep/l = 6,
// GD might not have a lot of flags but a single gold ingot included to broadcast their flagrant absurd wealth is kind of funny.
/obj/item/stack/material/gold
)
/obj/item/storage/box/large/flags/corporate
name = "Corporate flag box"
desc = "A box filled to the brim with various corporate flags, flying in service to the almighty credit."
starts_with = list(
/obj/item/flag/scc = 4,
/obj/item/flag/scc/l = 3,
/obj/item/flag/heph = 4,
/obj/item/flag/heph/l = 3,
/obj/item/flag/idris = 4,
/obj/item/flag/idris/l = 3,
/obj/item/flag/heph = 4,
/obj/item/flag/heph/l = 3,
/obj/item/flag/nanotrasen = 4,
/obj/item/flag/nanotrasen/l = 3,
/obj/item/flag/orion_express = 4,
/obj/item/flag/orion_express/l = 3,
/obj/item/flag/pmcg = 4,
/obj/item/flag/pmcg/l = 3,
/obj/item/flag/zavodskoi = 4,
/obj/item/flag/zavodskoi/l = 3,
/obj/item/flag/zenghu = 4,
/obj/item/flag/zenghu/l = 3,
/obj/item/flag/eridani = 4,
/obj/item/flag/eridani/l = 3
)
/// Random misc flags- either non-national or no longer in use or controversial or straight-up contraband. Randomized contents from Initialize().
/obj/item/storage/box/large/flags/misc
name = "miscellaneous flag box"
desc = "A box filled to the brim with various disorganized flags that might provoke a variety of reactions."
/**
* We don't want this box to always have every possible misc flag every time it spawns. Mix it up each time.
*/
/obj/item/storage/box/large/flags/misc/fill()
..()
var/list/flag_options = list(
/obj/item/flag/red_coalition = 1,
/obj/item/flag/trinaryperfection = 2,
/obj/item/flag/trinaryperfection/l = 1,
/obj/item/flag/traditionalist = rand(1,2),
/obj/item/flag/traditionalist/l = 1,
/obj/item/flag/exclusionist = 1,
/obj/item/flag/glaorr = 1,
/obj/item/flag/glaorr/l = 1,
/obj/item/flag/ouerea = rand(1,2),
/obj/item/flag/ouerea/l = 1,
/obj/item/flag/sol/old = rand(1,2),
/obj/item/flag/sol/old/l = 1,
/obj/item/flag/old_visegrad = rand(1,2),
/obj/item/flag/old_visegrad/l = 1,
/obj/item/flag/fisanduh = rand(1,2),
/obj/item/flag/fisanduh/l = 1,
/obj/item/flag/hiskyn = rand(1,2),
/obj/item/flag/tarwa = rand(1,2),
/obj/item/flag/izharshan = rand(1,2)
)
for(var/i in 1 to rand(5,8))
var/flag = pickweight(flag_options)
new flag(src)
/obj/item/storage/box/dominia_honor
name = "dominian honor codex box"
desc = "A box full of dominian honor codices."
illustration = "paper"
starts_with = list(/obj/item/book/manual/dominia_honor = 6)
/obj/item/storage/box/tcaf_pamphlet
name = "tau ceti armed forces pamphlets box"
desc = "A box full of tau ceti armed forces pamphlets."
illustration = "paper"
starts_with = list(/obj/item/book/manual/tcaf_pamphlet = 6)
/obj/item/storage/box/fountainpens
name = "box of fountain pens"
illustration = "fpen"
starts_with = list(/obj/item/pen/fountain = 7)
/obj/item/storage/box/aggression
illustration = "implant"
max_storage_space = DEFAULT_BOX_STORAGE
starts_with = list(/obj/item/implantcase/aggression = 6, /obj/item/implanter = 1, /obj/item/implantpad = 1)
/obj/item/storage/box/aggression/antagonist_hints(mob/user, distance, is_adjacent)
. += ..()
. += "This box contains various implants that will make their owners increasingly aggressive."
/obj/item/storage/box/encryption_key
name = "box"
illustration = "circuit"
starts_with = list(/obj/item/device/encryptionkey/rev = 8)
/obj/item/storage/box/encryption_key/antagonist_hints(mob/user, distance, is_adjacent)
. += ..()
. += "This box contains encryption keys that gives the user a safe channel to chatter in. Access the safe comms with :x."
/obj/item/storage/box/unique/dynamite
name = "wooden crate"
desc = "An ordinary wooden crate."
icon_state = "dynamite"
foldable = null
use_sound = 'sound/effects/doorcreaky.ogg'
drop_sound = 'sound/items/drop/wooden.ogg'
pickup_sound = 'sound/items/pickup/wooden.ogg'
w_class = WEIGHT_CLASS_BULKY
starts_with = list(/obj/item/grenade/dynamite = 6)
/obj/item/storage/box/unique/dynamite/throw_impact(atom/hit_atom)
..()
spill()
/obj/item/storage/box/closet_teleporter
illustration = "scicircuit"
starts_with = list(/obj/item/closet_teleporter = 2)
/obj/item/storage/box/closet_teleporter/fill()
var/obj/item/closet_teleporter/CT_1 = new /obj/item/closet_teleporter(src)
var/obj/item/closet_teleporter/CT_2 = new /obj/item/closet_teleporter(src)
CT_1.linked_teleporter = CT_2
CT_2.linked_teleporter = CT_1
/obj/item/storage/box/folders
name = "box of folders"
desc = "A box full of folders."
illustration = "paper"
starts_with = list(/obj/item/folder = 5)
/obj/item/storage/box/folders/blue
starts_with = list(/obj/item/folder/sec = 5)
/obj/item/storage/box/unique/papersack
name = "paper sack"
desc = "A sack neatly crafted out of paper."
icon = 'icons/obj/storage/paperbag.dmi'
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand.dmi',
slot_r_hand_str = 'icons/mob/items/righthand.dmi',
)
item_state = "papersack"
icon_state = "paperbag_None"
use_sound = 'sound/bureaucracy/papercrumple.ogg'
drop_sound = 'sound/items/drop/paper.ogg'
pickup_sound = 'sound/items/storage/wrapper.ogg'
foldable = null
max_w_class = WEIGHT_CLASS_NORMAL
max_storage_space = 8
use_to_pickup = TRUE
chewable = TRUE
var/opened = TRUE
var/static/list/papersack_designs
var/choice = "None"
/obj/item/storage/box/unique/papersack/update_icon()
. = ..()
if(length(contents) == 0)
icon_state = "paperbag_[choice]"
else if(length(contents) < 8)
icon_state = "paperbag_[choice]-food"
/obj/item/storage/box/unique/papersack/attackby(obj/item/attacking_item, mob/user)
if(attacking_item.ispen())
if(!papersack_designs)
papersack_designs = sortList(list(
"None" = image(icon = src.icon, icon_state = "paperbag_None"),
"NanoTrasenStandard" = image(icon = src.icon, icon_state = "paperbag_NanoTrasenStandard"),
"Idris" = image(icon = src.icon, icon_state = "paperbag_Idris"),
"Heart" = image(icon = src.icon, icon_state = "paperbag_Heart"),
"SmileyFace" = image(icon = src.icon, icon_state = "paperbag_SmileyFace")
))
var/selected = show_radial_menu(user, src, papersack_designs, radius = 42, tooltips = TRUE)
if(!selected)
return
choice = selected
switch(choice)
if("None")
desc = "A sack neatly crafted out of paper."
if("NanoTrasenStandard")
desc = "A standard NanoTrasen paper lunch sack for loyal employees on the go."
if("Idris")
desc = "A premium paper bag produced by Idris Incorporated."
if("Heart")
desc = "A paper sack with a heart etched onto the side."
if("SmileyFace")
desc = "A paper sack with a crude smile etched onto the side."
else
return
to_chat(user, SPAN_NOTICE("You make some modifications to [src] using your pen."))
update_icon()
return
else if(attacking_item.isscrewdriver())
if(length(contents) == 0)
to_chat(user, SPAN_NOTICE("You begin poking holes in \the [src]."))
if(attacking_item.use_tool(src, user, 30))
if(choice == "SmileyFace")
var/obj/item/clothing/head/papersack/smiley/S = new()
user.put_in_hands(S)
else
var/obj/item/clothing/head/papersack/PS = new()
user.put_in_hands(PS)
qdel(src)
else
to_chat(user, SPAN_WARNING("\The [src] needs to be empty before you can do that!"))
else
..()
// Flares
/obj/item/storage/box/large/flares
name = "flares box"
desc = "A box full of flares."
illustration = "flare"
foldable = FALSE
max_storage_space = DEFAULT_BOX_STORAGE
can_hold = list(
/obj/item/device/flashlight/flare
)
starts_with = list(
/obj/item/device/flashlight/flare = 12
)
// Magnetic Locks
/obj/item/storage/box/magnetic_locks
name = "magnetic lock box"
desc = "A box full of magnetic locks."
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
foldable = FALSE
max_storage_space = DEFAULT_BOX_STORAGE
can_hold = list(
/obj/item/device/magnetic_lock
)
starts_with = list(
/obj/item/device/magnetic_lock = 4
)
// Power Cells
/obj/item/storage/box/cell
name = "power cell box"
desc = "A box full of power cells."
color = COLOR_TOOLS
foldable = FALSE
make_exact_fit = TRUE
can_hold = list(
/obj/item/cell
)
starts_with = list(
/obj/item/cell = 3
)
// High-capacity Power Cells
/obj/item/storage/box/cell/high
name = "high-capacity power cell box"
desc = "A box full of high-capacity power cells."
color = COLOR_TOOLS
starts_with = list(
/obj/item/cell/high = 3
)
/obj/item/storage/box/large/condiment
name = "condiment box"
desc = "A large box of condiments, syrups, flavorings."
color = COLOR_REDBOX
illustration = "condimentlg"
starts_with = list(
/obj/item/reagent_containers/food/condiment/enzyme = 1,
/obj/item/reagent_containers/food/condiment/shaker/peppermill = 2,
/obj/item/reagent_containers/food/condiment/shaker/salt = 2,
/obj/item/reagent_containers/food/condiment/shaker/spacespice = 2,
/obj/item/reagent_containers/food/condiment/shaker/sprinkles = 1,
/obj/item/reagent_containers/food/condiment/sugar = 1,
/obj/item/reagent_containers/food/condiment/shaker/pumpkinspice = 1,
/obj/item/reagent_containers/glass/bottle/syrup/chocolate = 1,
/obj/item/reagent_containers/glass/bottle/syrup/pumpkin = 1,
/obj/item/reagent_containers/glass/bottle/syrup/vanilla = 1,
/obj/item/reagent_containers/glass/bottle/syrup/caramel = 1,
)
/obj/item/storage/box/cleaner_tablets
name = "\improper Idris cleaner tablets box"
desc = "A box of advanced formula chemical tablets designed by Idris Incorporated."
color = COLOR_GREEN_GRAY
desc_extended = "A new generation of cleaning chemicals, according to Idris at least. The instructions on the box reads: \"Dissolve tablet fully in container of water\". A warning label mentions that you should not consume the tablets nor drink the mixture after dissolving them."
illustration = "soapbucket"
starts_with = list(
/obj/item/reagent_containers/pill/cleaner_tablet = 16
)
make_exact_fit = TRUE
/obj/item/storage/box/led_collars
name = "box of LED collars"
desc = "A box containing eight LED collars, usually worn around the neck of the voidsuit."
starts_with = list(/obj/item/clothing/accessory/led_collar = 8)
make_exact_fit = TRUE
/obj/item/storage/box/traps/punji
name = "box of punji traps"
desc = "A box containing 5 punji traps."
starts_with = list(/obj/item/trap/punji = 5)
/obj/item/storage/box/landmines/standstill
name = "box of standstill landmines"
desc = "A box containing 5 standstill landmines."
starts_with = list(/obj/item/landmine/standstill = 5)
/obj/item/storage/box/landmines/door_rigging
name = "box of door rigging landmines"
desc = "A box containing 5 door rigging landmines."
starts_with = list(/obj/item/landmine/frag/door_rigging = 5)
/obj/item/storage/box/landmines/claymore
name = "box of claymore landmines"
desc = "A box containing 5 claymore landmines, relative detonators, and a spare one to trigger them all."
starts_with = list(
/obj/item/landmine/claymore = 5,
/obj/item/device/assembly/signaler = 6
)
/obj/item/storage/box/unique/tea
name = "sencha cha-tin"
desc = "A tin bearing the logo of the Konyang-cha tea company. This one contains a bag of sencha, a type of green tea."
desc_extended = "A subsidiary of Gwok Group, the Konyang-cha tea company is the spur's foremost vendor of artisanal loose leaf tea, \
selling blends sourced from independent Konyanger farmers. Popular both on Konyang and off-world, it is considered a symbol of Konyang's culture."
icon = 'icons/obj/item/reagent_containers/teaware.dmi'
icon_state = "can"
item_state = "can"
drop_sound = 'sound/items/drop/metal_pot.ogg'
pickup_sound = 'sound/items/drop/metal_pot.ogg'
contained_sprite = TRUE
make_exact_fit = TRUE
can_hold = list(
/obj/item/reagent_containers/food/snacks/grown/konyang_tea
)
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/konyang_tea = 7
)
foldable = null
/obj/item/storage/box/unique/tea/tieguanyin
name = "tieguanyin cha-tin"
desc = "A tin bearing the logo of the Konyang-cha tea company. This one contains a bag of tieguanyin, a type of oolong tea."
icon_state = "can_tie"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/konyang_tea/tieguanyin = 7
)
/obj/item/storage/box/unique/tea/jaekseol
name = "jaekseol cha-tin"
desc = "A tin bearing the logo of the Konyang-cha tea company. This one contains a bag of jaekseol, a type of black tea."
icon_state = "can_jaek"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/konyang_tea/jaekseol = 7
)
/obj/item/storage/box/telefreedom_kit
name = "telefreedom kit"
desc = "A box containing a telefreedom full kit."
starts_with = list(/obj/item/implant/telefreedom = 4,
/obj/item/implanter = 1,
//Telepad construction items
/obj/item/circuitboard/telesci_pad = 1,
/obj/item/bluespace_crystal/artificial = 2,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/console_screen = 1,
)
/obj/item/storage/box/telefreedom_kit/fill()
. = ..()
new /obj/item/stack/cable_coil(src, 6)
new /obj/item/stack/material/steel(src, 2)
/obj/item/storage/box/sawn_doublebarrel_shotgun
name = "sawn-off Double-barrel shotgun kit"
desc = "A box containing a sawn-off double-barrel shotgun, an holster and some ammo."
starts_with = list(/obj/item/gun/projectile/shotgun/doublebarrel/sawn = 1,
/obj/item/ammo_casing/shotgun/pellet = 6,
/obj/item/clothing/accessory/holster/thigh = 1)
/obj/item/storage/box/stressball
name = "box of stress balls"
desc = "A box containing a number of randomly-coloured stress balls."
starts_with = list(
/obj/item/toy/stressball = 6
)
/obj/item/storage/box/mms_inhaler
name = "mms inhaler kit"
desc = "A box filled with an inhaler and cartridges containing Mercury Monolithium Sucrose."
illustration = "inhalers"
starts_with = list(
/obj/item/personal_inhaler = 1, /obj/item/reagent_containers/personal_inhaler_cartridge/mms = 3
)
/obj/item/storage/box/ambrosia
name = "ambrosia box"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/ambrosiavulgaris/dried = 4
)
/obj/item/storage/box/reishi
name = "reishi box"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/mushroom/reishi/dried = 4
)
/obj/item/storage/box/wulumunusha
name = "wulumunusha box"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/wulumunusha/dried = 4
)
/obj/item/storage/box/ale
name = "pack of ale"
desc = "A box containing a six pack of ale."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/small/ale = 6
)
/obj/item/storage/box/beer
name = "pack of beer"
desc = "A box containing a six pack of beer."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/small/beer = 6
)
/obj/item/storage/box/skrellbeerdyn
name = "pack of dyn beer"
desc = "A box containing a six pack of dyn beer."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/small/skrellbeerdyn = 6
)
/obj/item/storage/box/xuizijuice
name = "pack of xuizi juice"
desc = "A box containing a six pack of xuizi juice."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/small/xuizijuice = 6
)
/obj/item/storage/box/khlibnyz
name = "pack of khlibnyz"
desc = "A box containing a six pack of khlibnyz."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/small/khlibnyz = 6
)
/obj/item/storage/box/cola
name = "pack of cola"
desc = "A box containing a six pack of cola."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/cola = 6
)
/obj/item/storage/box/space_mountain_wind
name = "pack of space mountain wind"
desc = "A box containing a six pack of space mountain wind."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/space_mountain_wind = 6
)
/obj/item/storage/box/space_up
name = "pack of space-up"
desc = "A box containing a six pack of space-up."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/space_up = 6
)
/obj/item/storage/box/hrozamal_soda
name = "pack of hrozamal soda"
desc = "A box containing a six pack of hrozamal soda."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/hrozamal_soda = 6
)
/obj/item/storage/box/midynhr_water
name = "pack of midynhr water"
desc = "A box containing a six pack of midynhr water."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/small/midynhr_water = 6
)
/obj/item/storage/box/burukutu
name = "pack of burukutu"
desc = "A box containing a six pack of burukutu."
illustration = "soda"
starts_with = list(
/obj/item/reagent_containers/food/drinks/bottle/small/burukutu = 6
)
/obj/item/storage/box/crutch_pair
starts_with = list(
/obj/item/cane/crutch = 2
)
/obj/item/storage/box/forearm_crutch_pair
starts_with = list(
/obj/item/cane/crutch/forearm = 2
)