Files
Casper3667 c4c589fc05 Fixes some psi receiver bugs (#21810)
fixes https://github.com/Aurorastation/Aurora.3/issues/21799

I was also informed the icon was wrong, so that is fixed too.
2026-02-06 20:26:33 +00:00

1812 lines
65 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/flashlight/flare,
/obj/item/stack/medical,
/obj/item/reagent_containers/hypospray/autoinjector,
/obj/item/reagent_containers/inhaler,
/obj/item/oxycandle,
/obj/item/extinguisher/mini,
/obj/item/radio,
/obj/item/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/oxycandle = 1,
/obj/item/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/oxycandle = 1,
/obj/item/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"
label = null
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/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/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/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/firing_pin/implant/loyalty = 7)
/obj/item/storage/box/loyaltypins/fill()
..()
new /obj/item/firing_pin/implant/loyalty(src)
new /obj/item/firing_pin/implant/loyalty(src)
new /obj/item/firing_pin/implant/loyalty(src)
new /obj/item/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/firing_pin = 2, /obj/item/firing_pin/access = 2, /obj/item/firing_pin/implant/loyalty = 2, /obj/item/firing_pin/psionic = 1, /obj/item/firing_pin/dna = 1)
/obj/item/storage/box/unique/freezer/organcooler/psireceiver
name = "psionic receivers cooler"
desc = "A cooling box for 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/bioaug/psi = 4)
can_hold = list(
/obj/item/organ/internal/augment/bioaug/psi
)
storage_slots = 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
label = null
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/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 = "galley 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/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/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/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/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/items/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.tool_behaviour == TOOL_PEN)
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.tool_behaviour == TOOL_SCREWDRIVER)
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/flashlight/flare
)
starts_with = list(
/obj/item/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/magnetic_lock
)
starts_with = list(
/obj/item/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/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. Instructions are printed on the back: Steep one leaf with 25 units of hot water per cup in a teapot."
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 = 12
)
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. Instructions are printed on the back: Steep one leaf with 25 units of hot water per cup in a teapot."
icon_state = "can_tie"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/konyang_tea/tieguanyin = 12
)
/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. Instructions are printed on the back: Steep one leaf with 25 units of hot water per cup in a teapot."
icon_state = "can_jaek"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/konyang_tea/jaekseol = 12
)
/obj/item/storage/box/unique/tea/messa
name = "adhomian tin"
desc = "A tin labeled in Siik'maas. It is adorned by a blue sun, the symbol of the goddess Messa."
icon_state = "can_messa"
starts_with = list(
/obj/item/reagent_containers/food/snacks/grown/messas_tear_tea = 12
)
desc_extended = "Messa's tears are a medicinal herb found across Adhomai and its many Twin Suns churches. \
Its leaves, while traditionally used for treating burns, are a common choice for making traditional teas."
/obj/item/storage/box/unique/tea/messa/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(GLOB.all_languages[LANGUAGE_SIIK_MAAS] in user.languages)
. += SPAN_NOTICE("The label says: \"Dried Messa's Tear leaves\" and then provides instructions: Steep one leaf with 25 units of hot water per cup in a teapot.")
/obj/item/storage/box/unique/tea/rasnif
name = "ras'nif tea tin"
desc = "A tin with the flag of the People's Republic of Adhomai printed on it, labeled in both Siik'maas and Ceti Basic. It instructs the user to mix one packet with 25 units of hot water."
icon_state = "can_pra"
can_hold = list(
/obj/item/reagent_containers/food/condiment/small/packet
)
starts_with = list(
/obj/item/reagent_containers/food/condiment/small/packet/tea/rasnif = 12
)
desc_extended = "A herbal tea made with Hro'zamal Ras'nifs powder. \
Despite the popularity of its carbonated counterpart, Ras'nif tea remains a popular drink among Hro'zamal settlers."
/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
)