Files
fulpstation/code/modules/cargo/packs.dm
JohnFulpWillard 5b0f78aa70 test
2022-05-04 18:46:58 -04:00

3012 lines
127 KiB
Plaintext

/datum/supply_pack
var/name = "Crate"
var/group = ""
var/hidden = FALSE
var/contraband = FALSE
/// Cost of the crate. DO NOT GO ANY LOWER THAN X1.4 the "CARGO_CRATE_VALUE" value if using regular crates, or infinite profit will be possible!
var/cost = CARGO_CRATE_VALUE * 1.4
var/access = FALSE
var/access_view = FALSE
var/access_any = FALSE
var/list/contains = null
var/crate_name = "crate"
var/id
var/desc = ""//no desc by default
var/crate_type = /obj/structure/closet/crate
var/dangerous = FALSE // Should we message admins?
var/special = FALSE //Event/Station Goals/Admin enabled packs
var/special_enabled = FALSE
var/DropPodOnly = FALSE //only usable by the Bluespace Drop Pod via the express cargo console
var/special_pod //If this pack comes shipped in a specific pod when launched from the express console
var/admin_spawned = FALSE
var/goody = FALSE //Goodies can only be purchased by private accounts and can have coupons apply to them. They also come in a lockbox instead of a full crate, so the 700 min doesn't apply
/datum/supply_pack/New()
id = type
/datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account)
var/obj/structure/closet/crate/C
if(paying_account)
C = new /obj/structure/closet/crate/secure/owned(A, paying_account)
C.name = "[crate_name] - Purchased by [paying_account.account_holder]"
else
C = new crate_type(A)
C.name = crate_name
if(access)
C.req_access = list(access)
if(access_any)
C.req_one_access = access_any
fill(C)
return C
/datum/supply_pack/proc/get_cost()
. = cost
. *= SSeconomy.pack_price_modifier
/datum/supply_pack/proc/fill(obj/structure/closet/crate/C)
if (admin_spawned)
for(var/item in contains)
var/atom/A = new item(C)
A.flags_1 |= ADMIN_SPAWNED_1
else
for(var/item in contains)
new item(C)
/// For generating supply packs at runtime. Returns a list of supply packs to use instead of this one.
/datum/supply_pack/proc/generate_supply_packs()
return
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Emergency ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/emergency
group = "Emergency"
/datum/supply_pack/emergency/vehicle
name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN
desc = "TUNNEL SNAKES OWN THIS TOWN. Contains an unbranded All Terrain Vehicle, and a complete gang outfit -- consists of black gloves, a menacing skull bandanna, and a SWEET leather overcoat!"
cost = CARGO_CRATE_VALUE * 4
contraband = TRUE
contains = list(/obj/vehicle/ridden/atv,
/obj/item/key/atv,
/obj/item/clothing/suit/jacket/leather/overcoat,
/obj/item/clothing/gloves/color/black,
/obj/item/clothing/head/soft,
/obj/item/clothing/mask/bandana/color/skull/black)//so you can properly #cargoniabikergang
crate_name = "biker kit"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/emergency/bio
name = "Biological Emergency Crate"
desc = "This crate holds 2 full bio suits which will protect you from viruses."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/head/bio_hood,
/obj/item/clothing/head/bio_hood,
/obj/item/clothing/suit/bio_suit,
/obj/item/clothing/suit/bio_suit,
/obj/item/storage/bag/bio,
/obj/item/reagent_containers/syringe/antiviral,
/obj/item/reagent_containers/syringe/antiviral,
/obj/item/clothing/gloves/color/latex/nitrile,
/obj/item/clothing/gloves/color/latex/nitrile)
crate_name = "bio suit crate"
/datum/supply_pack/emergency/equipment
name = "Emergency Bot/Internals Crate"
desc = "Explosions got you down? These supplies are guaranteed to patch up holes, in stations and people alike! Comes with two floorbots, two medbots, five oxygen masks and five small oxygen tanks."
cost = CARGO_CRATE_VALUE * 4
contains = list(/mob/living/simple_animal/bot/floorbot,
/mob/living/simple_animal/bot/floorbot,
/mob/living/simple_animal/bot/medbot,
/mob/living/simple_animal/bot/medbot,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath)
crate_name = "emergency crate"
crate_type = /obj/structure/closet/crate/internals
/datum/supply_pack/emergency/bomb
name = "Explosive Emergency Crate"
desc = "Science gone bonkers? Beeping behind the airlock? Buy now and be the hero the station des... I mean needs! (time not included)"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/head/bomb_hood,
/obj/item/clothing/suit/bomb_suit,
/obj/item/clothing/mask/gas,
/obj/item/screwdriver,
/obj/item/wirecutters,
/obj/item/multitool)
crate_name = "bomb suit crate"
/datum/supply_pack/emergency/firefighting
name = "Firefighting Crate"
desc = "Only you can prevent station fires. Partner up with two firefighter suits, gas masks, flashlights, large oxygen tanks, extinguishers, and hardhats!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/suit/fire/firefighter,
/obj/item/clothing/suit/fire/firefighter,
/obj/item/clothing/mask/gas,
/obj/item/clothing/mask/gas,
/obj/item/flashlight,
/obj/item/flashlight,
/obj/item/tank/internals/oxygen/red,
/obj/item/tank/internals/oxygen/red,
/obj/item/extinguisher/advanced,
/obj/item/extinguisher/advanced,
/obj/item/clothing/head/hardhat/red,
/obj/item/clothing/head/hardhat/red)
crate_name = "firefighting crate"
/datum/supply_pack/emergency/atmostank
name = "Firefighting Tank Backpack"
desc = "Mow down fires with this high-capacity fire fighting tank backpack. Requires Atmospherics access to open."
cost = CARGO_CRATE_VALUE * 1.8
access = ACCESS_ATMOSPHERICS
contains = list(/obj/item/watertank/atmos)
crate_name = "firefighting backpack crate"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/emergency/internals
name = "Internals Crate"
desc = "Master your life energy and control your breathing with three breath masks, three emergency oxygen tanks and three large air tanks."//IS THAT A
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/mask/gas,
/obj/item/clothing/mask/gas,
/obj/item/clothing/mask/gas,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/oxygen,
/obj/item/tank/internals/oxygen,
/obj/item/tank/internals/oxygen)
crate_name = "internals crate"
crate_type = /obj/structure/closet/crate/internals
/datum/supply_pack/emergency/metalfoam
name = "Metal Foam Grenade Crate"
desc = "Seal up those pesky hull breaches with 7 Metal Foam Grenades."
cost = CARGO_CRATE_VALUE * 2.4
contains = list(/obj/item/storage/box/metalfoam)
crate_name = "metal foam grenade crate"
/datum/supply_pack/emergency/plasma_spacesuit
name = "Plasmaman Space Envirosuits"
desc = "Contains two space-worthy envirosuits for Plasmamen. Order now and we'll throw in two free helmets! Requires EVA access to open."
cost = CARGO_CRATE_VALUE * 3.5
access = ACCESS_EVA
contains = list(/obj/item/clothing/suit/space/eva/plasmaman,
/obj/item/clothing/suit/space/eva/plasmaman,
/obj/item/clothing/head/helmet/space/plasmaman,
/obj/item/clothing/head/helmet/space/plasmaman)
crate_name = "plasmaman EVA crate"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/emergency/plasmaman
name = "Plasmaman Supply Kit"
desc = "Keep those Plasmamen alive with two sets of Plasmaman outfits. Each set contains a plasmaman jumpsuit, gloves, internals tank, and helmet."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/clothing/under/plasmaman,
/obj/item/clothing/under/plasmaman,
/obj/item/tank/internals/plasmaman/belt/full,
/obj/item/tank/internals/plasmaman/belt/full,
/obj/item/clothing/head/helmet/space/plasmaman,
/obj/item/clothing/head/helmet/space/plasmaman,
/obj/item/clothing/gloves/color/plasmaman,
/obj/item/clothing/gloves/color/plasmaman)
crate_name = "plasmaman supply kit"
/datum/supply_pack/emergency/radiation
name = "Radiation Protection Crate"
desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and Geiger counter. We'll even throw in a bottle of vodka and some glasses too, considering the life-expectancy of people who order this."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/head/radiation,
/obj/item/clothing/head/radiation,
/obj/item/clothing/suit/radiation,
/obj/item/clothing/suit/radiation,
/obj/item/geiger_counter,
/obj/item/geiger_counter,
/obj/item/reagent_containers/food/drinks/bottle/vodka,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass)
crate_name = "radiation protection crate"
crate_type = /obj/structure/closet/crate/radiation
/datum/supply_pack/emergency/spacesuit
name = "Space Suit Crate"
desc = "Contains one aging suit from Space-Goodwill and a jetpack. Requires EVA access to open."
cost = CARGO_CRATE_VALUE * 3
access = ACCESS_EVA
contains = list(/obj/item/clothing/suit/space,
/obj/item/clothing/head/helmet/space,
/obj/item/clothing/mask/breath,
/obj/item/tank/jetpack/carbondioxide)
crate_name = "space suit crate"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/emergency/specialops
name = "Special Ops Supplies"
desc = "(*!&@#SAD ABOUT THAT NULL_ENTRY, HUH OPERATIVE? WELL, THIS LITTLE ORDER CAN STILL HELP YOU OUT IN A PINCH. CONTAINS A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, AN INCENDIARY GRENADE, AND A \"SLEEPY PEN\" FULL OF NICE TOXINS!#@*$"
hidden = TRUE
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/storage/box/emps,
/obj/item/grenade/smokebomb,
/obj/item/grenade/smokebomb,
/obj/item/grenade/smokebomb,
/obj/item/pen/sleepy,
/obj/item/grenade/chem_grenade/incendiary)
crate_name = "emergency crate"
crate_type = /obj/structure/closet/crate/internals
/datum/supply_pack/emergency/weedcontrol
name = "Weed Control Crate"
desc = "Keep those invasive species OUT. Contains a scythe, gasmask, and two anti-weed chemical grenades. Warranty void if used on ambrosia. Requires Hydroponics access to open."
cost = CARGO_CRATE_VALUE * 2.5
access = ACCESS_HYDROPONICS
contains = list(/obj/item/scythe,
/obj/item/clothing/mask/gas,
/obj/item/grenade/chem_grenade/antiweed,
/obj/item/grenade/chem_grenade/antiweed)
crate_name = "weed control crate"
crate_type = /obj/structure/closet/crate/secure/hydroponics
/datum/supply_pack/emergency/mothic_rations
name = "Surplus Mothic Rations Triple-Pak"
desc = "Crew starving? Chef slacking off? Keep everyone fed on the barest minimum of what can be considered food with surplus ration packs, directly from the Mothic Fleet! Pack includes 3 packs of 3 bars each."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/storage/box/mothic_rations,
/obj/item/storage/box/mothic_rations,
/obj/item/storage/box/mothic_rations,)
crate_name = "surplus rations box"
crate_type = /obj/structure/closet/crate/cardboard/mothic
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Security ////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/security
group = "Security"
access = ACCESS_SECURITY
crate_type = /obj/structure/closet/crate/secure/gear
/datum/supply_pack/security/ammo
name = "Ammo Crate"
desc = "Contains three boxes of beanbag shotgun shells, three boxes of rubbershot shotgun shells and one of each special .38 speedloarders. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 8
access_view = ACCESS_ARMORY
contains = list(/obj/item/storage/box/beanbag,
/obj/item/storage/box/beanbag,
/obj/item/storage/box/beanbag,
/obj/item/storage/box/rubbershot,
/obj/item/storage/box/rubbershot,
/obj/item/storage/box/rubbershot,
/obj/item/ammo_box/c38/trac,
/obj/item/ammo_box/c38/hotshot,
/obj/item/ammo_box/c38/iceblox)
crate_name = "ammo crate"
/datum/supply_pack/security/armor
name = "Armor Crate"
desc = "Three vests of well-rounded, decently-protective armor. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_SECURITY
contains = list(/obj/item/clothing/suit/armor/vest,
/obj/item/clothing/suit/armor/vest,
/obj/item/clothing/suit/armor/vest)
crate_name = "armor crate"
/datum/supply_pack/security/disabler
name = "Disabler Crate"
desc = "Three stamina-draining disabler weapons. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 3
access_view = ACCESS_SECURITY
contains = list(/obj/item/gun/energy/disabler,
/obj/item/gun/energy/disabler,
/obj/item/gun/energy/disabler)
crate_name = "disabler crate"
/datum/supply_pack/security/forensics
name = "Forensics Crate"
desc = "Stay hot on the criminal's heels with Nanotrasen's Detective Essentials(tm). Contains a forensics scanner, six evidence bags, camera, tape recorder, white crayon, and of course, a fedora. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 2.5
access_view = ACCESS_MORGUE
contains = list(/obj/item/detective_scanner,
/obj/item/storage/box/evidence,
/obj/item/camera,
/obj/item/taperecorder,
/obj/item/toy/crayon/white,
/obj/item/clothing/head/fedora/det_hat)
crate_name = "forensics crate"
/datum/supply_pack/security/helmets
name = "Helmets Crate"
desc = "Contains three standard-issue brain buckets. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/head/helmet/sec,
/obj/item/clothing/head/helmet/sec,
/obj/item/clothing/head/helmet/sec)
crate_name = "helmet crate"
/datum/supply_pack/security/laser
name = "Lasers Crate"
desc = "Contains three lethal, high-energy laser guns. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 4
access_view = ACCESS_ARMORY
contains = list(/obj/item/gun/energy/laser,
/obj/item/gun/energy/laser,
/obj/item/gun/energy/laser)
crate_name = "laser crate"
/datum/supply_pack/security/securitybarriers
name = "Security Barrier Grenades"
desc = "Stem the tide with four Security Barrier grenades. Requires Security access to open."
access_view = ACCESS_BRIG
contains = list(/obj/item/grenade/barrier,
/obj/item/grenade/barrier,
/obj/item/grenade/barrier,
/obj/item/grenade/barrier)
cost = CARGO_CRATE_VALUE * 2
crate_name = "security barriers crate"
/datum/supply_pack/security/securityclothes
name = "Security Clothing Crate"
desc = "Contains appropriate outfits for the station's private security force. Contains outfits for the Warden, Head of Security, and two Security Officers. Each outfit comes with a rank-appropriate jumpsuit, suit, and beret. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 3
access_view = ACCESS_SECURITY
contains = list(/obj/item/clothing/under/rank/security/officer/formal,
/obj/item/clothing/under/rank/security/officer/formal,
/obj/item/clothing/suit/security/officer,
/obj/item/clothing/suit/security/officer,
/obj/item/clothing/head/beret/sec/navyofficer,
/obj/item/clothing/head/beret/sec/navyofficer,
/obj/item/clothing/under/rank/security/warden/formal,
/obj/item/clothing/suit/security/warden,
/obj/item/clothing/head/hos/beret/navyhos,
/obj/item/clothing/under/rank/security/head_of_security/formal,
/obj/item/clothing/suit/security/hos,
/obj/item/clothing/head/hos/beret/navyhos)
crate_name = "security clothing crate"
/datum/supply_pack/security/stingpack
name = "Stingbang Grenade Pack"
desc = "Contains five \"stingbang\" grenades, perfect for stopping riots and playing morally unthinkable pranks. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 5
access_view = ACCESS_ARMORY
contains = list(/obj/item/storage/box/stingbangs)
crate_name = "stingbang grenade pack crate"
/datum/supply_pack/security/supplies
name = "Security Supplies Crate"
desc = "Contains seven flashbangs, seven teargas grenades, six flashes, and seven handcuffs. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 3.5
access_view = ACCESS_ARMORY
contains = list(/obj/item/storage/box/flashbangs,
/obj/item/storage/box/teargas,
/obj/item/storage/box/flashes,
/obj/item/storage/box/handcuffs)
crate_name = "security supply crate"
/datum/supply_pack/security/firingpins
name = "Standard Firing Pins Crate"
desc = "Upgrade your arsenal with 10 standard firing pins. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 4
access_view = ACCESS_ARMORY
contains = list(/obj/item/storage/box/firingpins,
/obj/item/storage/box/firingpins)
crate_name = "firing pins crate"
/datum/supply_pack/security/firingpins/paywall
name = "Paywall Firing Pins Crate"
desc = "Specialized firing pins with a built-in configurable paywall. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_ARMORY
contains = list(/obj/item/storage/box/firingpins/paywall,
/obj/item/storage/box/firingpins/paywall)
crate_name = "paywall firing pins crate"
/datum/supply_pack/security/justiceinbound
name = "Standard Justice Enforcer Crate"
desc = "This is it. The Bee's Knees. The Creme of the Crop. The Pick of the Litter. The best of the best of the best. The Crown Jewel of Nanotrasen. The Alpha and the Omega of security headwear. Guaranteed to strike fear into the hearts of each and every criminal aboard the station. Also comes with a security gasmask. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 6 //justice comes at a price. An expensive, noisy price.
contraband = TRUE
contains = list(/obj/item/clothing/head/helmet/justice,
/obj/item/clothing/mask/gas/sechailer)
crate_name = "security clothing crate"
/datum/supply_pack/security/baton
name = "Stun Batons Crate"
desc = "Arm the Civil Protection Forces with three stun batons. Batteries included. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_SECURITY
contains = list(/obj/item/melee/baton/security/loaded,
/obj/item/melee/baton/security/loaded,
/obj/item/melee/baton/security/loaded)
crate_name = "stun baton crate"
/datum/supply_pack/security/wall_flash
name = "Wall-Mounted Flash Crate"
desc = "Contains four wall-mounted flashes. Requires Security access to open."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/storage/box/wall_flash,
/obj/item/storage/box/wall_flash,
/obj/item/storage/box/wall_flash,
/obj/item/storage/box/wall_flash)
crate_name = "wall-mounted flash crate"
/datum/supply_pack/security/constable
name = "Traditional Equipment Crate"
desc = "Spare equipment found in a warehouse."
cost = CARGO_CRATE_VALUE * 2.2
contraband = TRUE
contains = list(/obj/item/clothing/under/rank/security/constable,
/obj/item/clothing/head/helmet/constable,
/obj/item/clothing/gloves/color/white,
/obj/item/clothing/mask/whistle,
/obj/item/conversion_kit)
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Armory //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/security/armory
group = "Armory"
access = ACCESS_ARMORY
access_view = ACCESS_ARMORY
crate_type = /obj/structure/closet/crate/secure/weapon
/datum/supply_pack/security/armory/bulletarmor
name = "Bulletproof Armor Crate"
desc = "Contains three sets of bulletproof armor. Guaranteed to reduce a bullet's stopping power by over half. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/suit/armor/bulletproof)
crate_name = "bulletproof armor crate"
/datum/supply_pack/security/armory/bullethelmets
name = "Bulletproof Helmets Crate"
desc = "Contains three bulletproof helmets. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/clothing/head/helmet/alt,
/obj/item/clothing/head/helmet/alt,
/obj/item/clothing/head/helmet/alt)
crate_name = "bulletproof helmets crate"
/datum/supply_pack/security/armory/chemimp
name = "Chemical Implants Crate"
desc = "Contains five Remote Chemical implants. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 3.5
contains = list(/obj/item/storage/box/chemimp)
crate_name = "chemical implant crate"
/datum/supply_pack/security/armory/ballistic
name = "Combat Shotguns Crate"
desc = "For when the enemy absolutely needs to be replaced with lead. Contains three Aussec-designed Combat Shotguns, and three Shotgun Bandoliers. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 17.5
contains = list(/obj/item/gun/ballistic/shotgun/automatic/combat,
/obj/item/gun/ballistic/shotgun/automatic/combat,
/obj/item/gun/ballistic/shotgun/automatic/combat,
/obj/item/storage/belt/bandolier,
/obj/item/storage/belt/bandolier,
/obj/item/storage/belt/bandolier)
crate_name = "combat shotguns crate"
/datum/supply_pack/security/armory/dragnet
name = "DRAGnet Crate"
desc = "Contains three \"Dynamic Rapid-Apprehension of the Guilty\" netting devices, a recent breakthrough in law enforcement prisoner management technology. Requires armory access to open."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/gun/energy/e_gun/dragnet,
/obj/item/gun/energy/e_gun/dragnet,
/obj/item/gun/energy/e_gun/dragnet)
crate_name = "\improper DRAGnet crate"
/datum/supply_pack/security/armory/energy
name = "Energy Guns Crate"
desc = "Contains two Energy Guns, capable of firing both nonlethal and lethal blasts of light. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 18
contains = list(/obj/item/gun/energy/e_gun,
/obj/item/gun/energy/e_gun)
crate_name = "energy gun crate"
crate_type = /obj/structure/closet/crate/secure/plasma
/datum/supply_pack/security/armory/exileimp
name = "Exile Implants Crate"
desc = "Contains five Exile implants. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 3.5
contains = list(/obj/item/storage/box/exileimp)
crate_name = "exile implant crate"
/datum/supply_pack/security/armory/fire
name = "Incendiary Weapons Crate"
desc = "Burn, baby burn. Contains three incendiary grenades, three plasma canisters, and a flamethrower. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 7
access = ACCESS_HEADS
contains = list(/obj/item/flamethrower/full,
/obj/item/tank/internals/plasma,
/obj/item/tank/internals/plasma,
/obj/item/tank/internals/plasma,
/obj/item/grenade/chem_grenade/incendiary,
/obj/item/grenade/chem_grenade/incendiary,
/obj/item/grenade/chem_grenade/incendiary)
crate_name = "incendiary weapons crate"
crate_type = /obj/structure/closet/crate/secure/plasma
dangerous = TRUE
/datum/supply_pack/security/armory/mindshield
name = "Mindshield Implants Crate"
desc = "Prevent against radical thoughts with three Mindshield implants. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/storage/lockbox/loyalty)
crate_name = "mindshield implant crate"
/datum/supply_pack/security/armory/trackingimp
name = "Tracking Implants Crate"
desc = "Contains four tracking implants and three tracking speedloaders of tracing .38 ammo. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 4.5
contains = list(/obj/item/storage/box/trackimp,
/obj/item/ammo_box/c38/trac,
/obj/item/ammo_box/c38/trac,
/obj/item/ammo_box/c38/trac)
crate_name = "tracking implant crate"
/datum/supply_pack/security/armory/laserarmor
name = "Reflector Vest Crate"
desc = "Contains two vests of highly reflective material. Each armor piece diffuses a laser's energy by over half, as well as offering a good chance to reflect the laser entirely. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/clothing/suit/armor/laserproof,
/obj/item/clothing/suit/armor/laserproof)
crate_name = "reflector vest crate"
crate_type = /obj/structure/closet/crate/secure/plasma
/datum/supply_pack/security/armory/riotarmor
name = "Riot Armor Crate"
desc = "Contains three sets of heavy body armor. Advanced padding protects against close-ranged weaponry, making melee attacks feel only half as potent to the user. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/clothing/suit/armor/riot,
/obj/item/clothing/suit/armor/riot,
/obj/item/clothing/suit/armor/riot)
crate_name = "riot armor crate"
/datum/supply_pack/security/armory/riothelmets
name = "Riot Helmets Crate"
desc = "Contains three riot helmets. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/head/helmet/riot)
crate_name = "riot helmets crate"
/datum/supply_pack/security/armory/riotshields
name = "Riot Shields Crate"
desc = "For when the greytide gets really uppity. Contains three riot shields. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/shield/riot,
/obj/item/shield/riot,
/obj/item/shield/riot)
crate_name = "riot shields crate"
/datum/supply_pack/security/armory/russian
name = "Russian Surplus Crate"
desc = "Hello Comrade, we have the most modern russian military equipment the black market can offer, for the right price of course. Sadly we couldnt remove the lock so it requires Armory access to open."
cost = CARGO_CRATE_VALUE * 12
contraband = TRUE
contains = list(/obj/item/food/rationpack,
/obj/item/ammo_box/a762,
/obj/item/storage/toolbox/ammo,
/obj/item/storage/toolbox/maint_kit,
/obj/item/clothing/suit/armor/vest/russian,
/obj/item/clothing/head/helmet/rus_helmet,
/obj/item/clothing/shoes/russian,
/obj/item/clothing/gloves/tackler/combat,
/obj/item/clothing/under/syndicate/rus_army,
/obj/item/clothing/under/costume/soviet,
/obj/item/clothing/mask/russian_balaclava,
/obj/item/clothing/head/helmet/rus_ushanka,
/obj/item/clothing/suit/armor/vest/russian_coat,
/obj/item/gun/ballistic/rifle/boltaction,
/obj/item/gun/ballistic/rifle/boltaction)
crate_name = "surplus military crate"
/datum/supply_pack/security/armory/russian/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 10)
var/item = pick(contains)
new item(C)
/datum/supply_pack/security/armory/swat
name = "SWAT Crate"
desc = "Contains two fullbody sets of tough, fireproof suits designed in a joint effort by IS-ERI and Nanotrasen. Each set contains a suit, helmet, mask, combat belt, and combat gloves. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 7
contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen,
/obj/item/clothing/head/helmet/swat/nanotrasen,
/obj/item/clothing/suit/armor/swat,
/obj/item/clothing/suit/armor/swat,
/obj/item/clothing/mask/gas/sechailer/swat,
/obj/item/clothing/mask/gas/sechailer/swat,
/obj/item/storage/belt/military/assault,
/obj/item/storage/belt/military/assault,
/obj/item/clothing/gloves/tackler/combat,
/obj/item/clothing/gloves/tackler/combat)
crate_name = "swat crate"
/datum/supply_pack/security/armory/thermal
name = "Thermal Pistol Crate"
desc = "Contains a pair of holsters each with two experimental thermal pistols, using nanites as the basis for their ammo. Requires Armory access to open."
cost = CARGO_CRATE_VALUE * 7
contains = list(/obj/item/storage/belt/holster/thermal,
/obj/item/storage/belt/holster/thermal)
crate_name = "thermal pistol crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Engineering /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/engineering
group = "Engineering"
crate_type = /obj/structure/closet/crate/engineering
/datum/supply_pack/engineering/shieldgen
name = "Anti-breach Shield Projector Crate"
desc = "Hull breaches again? Say no more with the Nanotrasen Anti-Breach Shield Projector! Uses forcefield technology to keep the air in, and the space out. Contains two shield projectors."
cost = CARGO_CRATE_VALUE * 3
access_view = ACCESS_ENGINE_EQUIP
contains = list(/obj/machinery/shieldgen,
/obj/machinery/shieldgen)
crate_name = "anti-breach shield projector crate"
/datum/supply_pack/engineering/ripley
name = "APLU MK-I Crate"
desc = "A do-it-yourself kit for building an ALPU MK-I \"Ripley\", designed for lifting and carrying heavy equipment, and other station tasks. Batteries not included."
cost = CARGO_CRATE_VALUE * 10
access_view = ACCESS_ROBOTICS
contains = list(/obj/item/mecha_parts/chassis/ripley,
/obj/item/mecha_parts/part/ripley_torso,
/obj/item/mecha_parts/part/ripley_right_arm,
/obj/item/mecha_parts/part/ripley_left_arm,
/obj/item/mecha_parts/part/ripley_right_leg,
/obj/item/mecha_parts/part/ripley_left_leg,
/obj/item/stock_parts/capacitor,
/obj/item/stock_parts/scanning_module,
/obj/item/circuitboard/mecha/ripley/main,
/obj/item/circuitboard/mecha/ripley/peripherals,
/obj/item/mecha_parts/mecha_equipment/drill,
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp)
crate_name= "\improper APLU MK-I kit"
/datum/supply_pack/engineering/conveyor
name = "Conveyor Assembly Crate"
desc = "Keep production moving along with thirty conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book."
cost = CARGO_CRATE_VALUE * 3.5
contains = list(/obj/item/stack/conveyor/thirty,
/obj/item/conveyor_switch_construct,
/obj/item/paper/guides/conveyor)
crate_name = "conveyor assembly crate"
/datum/supply_pack/engineering/engiequipment
name = "Engineering Gear Crate"
desc = "Gear up with three toolbelts, high-visibility vests, welding helmets, hardhats, and two pairs of meson goggles!"
cost = CARGO_CRATE_VALUE * 4
access_view = ACCESS_ENGINE
contains = list(/obj/item/storage/belt/utility,
/obj/item/storage/belt/utility,
/obj/item/storage/belt/utility,
/obj/item/clothing/suit/hazardvest,
/obj/item/clothing/suit/hazardvest,
/obj/item/clothing/suit/hazardvest,
/obj/item/clothing/head/welding,
/obj/item/clothing/head/welding,
/obj/item/clothing/head/welding,
/obj/item/clothing/head/hardhat,
/obj/item/clothing/head/hardhat,
/obj/item/clothing/head/hardhat,
/obj/item/clothing/glasses/meson/engine,
/obj/item/clothing/glasses/meson/engine)
crate_name = "engineering gear crate"
/datum/supply_pack/engineering/powergamermitts
name = "Insulated Gloves Crate"
desc = "The backbone of modern society. Barely ever ordered for actual engineering. Contains three insulated gloves."
cost = CARGO_CRATE_VALUE * 8 //Made of pure-grade bullshittinium
access_view = ACCESS_ENGINE_EQUIP
contains = list(/obj/item/clothing/gloves/color/yellow,
/obj/item/clothing/gloves/color/yellow,
/obj/item/clothing/gloves/color/yellow)
crate_name = "insulated gloves crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
/datum/supply_pack/engineering/inducers
name = "NT-75 Electromagnetic Power Inducers Crate"
desc = "No rechargers? No problem, with the NT-75 EPI, you can recharge any standard cell-based equipment anytime, anywhere. Contains two Inducers."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}, /obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}) //FALSE doesn't work in modified type paths apparently.
crate_name = "inducer crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
/datum/supply_pack/engineering/pacman
name = "P.A.C.M.A.N Generator Crate"
desc = "Engineers can't set up the engine? Not an issue for you, once you get your hands on this P.A.C.M.A.N. Generator! Takes in plasma and spits out sweet sweet energy."
cost = CARGO_CRATE_VALUE * 5
access_view = ACCESS_ENGINE
contains = list(/obj/machinery/power/port_gen/pacman)
crate_name = "\improper PACMAN generator crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
/datum/supply_pack/engineering/power
name = "Power Cell Crate"
desc = "Looking for power overwhelming? Look no further. Contains three high-voltage power cells."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/stock_parts/cell/high,
/obj/item/stock_parts/cell/high,
/obj/item/stock_parts/cell/high)
crate_name = "power cell crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
/datum/supply_pack/engineering/shuttle_engine
name = "Shuttle Engine Crate"
desc = "Through advanced bluespace-shenanigans, our engineers have managed to fit an entire shuttle engine into one tiny little crate. Requires CE access to open."
cost = CARGO_CRATE_VALUE * 6
access = ACCESS_CE
access_view = ACCESS_CE
contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo)
crate_name = "shuttle engine crate"
crate_type = /obj/structure/closet/crate/secure/engineering
special = TRUE
/datum/supply_pack/engineering/tools
name = "Toolbox Crate"
desc = "Any robust spaceman is never far from their trusty toolbox. Contains three electrical toolboxes and three mechanical toolboxes."
access_view = ACCESS_ENGINE_EQUIP
contains = list(/obj/item/storage/toolbox/electrical,
/obj/item/storage/toolbox/electrical,
/obj/item/storage/toolbox/electrical,
/obj/item/storage/toolbox/mechanical,
/obj/item/storage/toolbox/mechanical,
/obj/item/storage/toolbox/mechanical)
cost = CARGO_CRATE_VALUE * 5
crate_name = "toolbox crate"
/datum/supply_pack/engineering/portapump
name = "Portable Air Pump Crate"
desc = "Did someone let the air out of the shuttle again? We've got you covered. Contains two portable air pumps."
cost = CARGO_CRATE_VALUE * 4.5
access_view = ACCESS_ATMOSPHERICS
contains = list(/obj/machinery/portable_atmospherics/pump,
/obj/machinery/portable_atmospherics/pump)
crate_name = "portable air pump crate"
/datum/supply_pack/engineering/portascrubber
name = "Portable Scrubber Crate"
desc = "Clean up that pesky plasma leak with your very own set of two portable scrubbers."
cost = CARGO_CRATE_VALUE * 4.5
access_view = ACCESS_ATMOSPHERICS
contains = list(/obj/machinery/portable_atmospherics/scrubber,
/obj/machinery/portable_atmospherics/scrubber)
crate_name = "portable scrubber crate"
/datum/supply_pack/engineering/hugescrubber
name = "Huge Portable Scrubber Crate"
desc = "A huge portable scrubber for huge atmospherics mistakes."
cost = CARGO_CRATE_VALUE * 7.5
access_view = ACCESS_ATMOSPHERICS
contains = list(/obj/machinery/portable_atmospherics/scrubber/huge/movable/cargo)
crate_name = "huge portable scrubber crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/engineering/space_heater
name = "Space Heater Crate"
desc = "A dual purpose heater/cooler for when things are too chilly/toasty."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/machinery/space_heater)
crate_name = "space heater crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/engineering/bsa
name = "Bluespace Artillery Parts"
desc = "The pride of Nanotrasen Naval Command. The legendary Bluespace Artillery Cannon is a devastating feat of human engineering and testament to wartime determination. Highly advanced research is required for proper construction. "
cost = CARGO_CRATE_VALUE * 30
special = TRUE
access_view = ACCESS_HEADS
contains = list(/obj/item/circuitboard/machine/bsa/front,
/obj/item/circuitboard/machine/bsa/middle,
/obj/item/circuitboard/machine/bsa/back,
/obj/item/circuitboard/computer/bsa_control
)
crate_name= "bluespace artillery parts crate"
/datum/supply_pack/engineering/dna_vault
name = "DNA Vault Parts"
desc = "Secure the longevity of the current state of humanity within this massive library of scientific knowledge, capable of granting superhuman powers and abilities. Highly advanced research is required for proper construction. Also contains five DNA probes."
cost = CARGO_CRATE_VALUE * 24
special = TRUE
access_view = ACCESS_HEADS
contains = list(
/obj/item/circuitboard/machine/dna_vault,
/obj/item/dna_probe,
/obj/item/dna_probe,
/obj/item/dna_probe,
/obj/item/dna_probe,
/obj/item/dna_probe
)
crate_name= "dna vault parts crate"
/datum/supply_pack/engineering/dna_probes
name = "DNA Vault Samplers"
desc = "Contains five DNA probes for use in the DNA vault."
cost = CARGO_CRATE_VALUE * 6
special = TRUE
access_view = ACCESS_HEADS
contains = list(/obj/item/dna_probe,
/obj/item/dna_probe,
/obj/item/dna_probe,
/obj/item/dna_probe,
/obj/item/dna_probe
)
crate_name= "dna samplers crate"
/datum/supply_pack/engineering/shield_sat
name = "Shield Generator Satellite"
desc = "Protect the very existence of this station with these Anti-Meteor defenses. Contains three Shield Generator Satellites."
cost = CARGO_CRATE_VALUE * 6
special = TRUE
access_view = ACCESS_HEADS
contains = list(
/obj/machinery/satellite/meteor_shield,
/obj/machinery/satellite/meteor_shield,
/obj/machinery/satellite/meteor_shield
)
crate_name= "shield sat crate"
/datum/supply_pack/engineering/shield_sat_control
name = "Shield System Control Board"
desc = "A control system for the Shield Generator Satellite system."
cost = CARGO_CRATE_VALUE * 10
special = TRUE
access_view = ACCESS_HEADS
contains = list(/obj/item/circuitboard/computer/sat_control)
crate_name= "shield control board crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////// Engine Construction /////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/engine
group = "Engine Construction"
access_view = ACCESS_ENGINE
crate_type = /obj/structure/closet/crate/engineering
/datum/supply_pack/engine/emitter
name = "Emitter Crate"
desc = "Useful for powering forcefield generators while destroying locked crates and intruders alike. Contains two high-powered energy emitters. Requires CE access to open."
cost = CARGO_CRATE_VALUE * 7
access = ACCESS_CE
contains = list(/obj/machinery/power/emitter,
/obj/machinery/power/emitter)
crate_name = "emitter crate"
crate_type = /obj/structure/closet/crate/secure/engineering
dangerous = TRUE
/datum/supply_pack/engine/field_gen
name = "Field Generator Crate"
desc = "Typically the only thing standing between the station and a messy death. Powered by emitters. Contains two field generators."
cost = CARGO_CRATE_VALUE * 7
contains = list(/obj/machinery/field/generator,
/obj/machinery/field/generator)
crate_name = "field generator crate"
/datum/supply_pack/engine/grounding_rods
name = "Grounding Rod Crate"
desc = "Four grounding rods guaranteed to keep any uppity tesla coil's lightning under control."
cost = CARGO_CRATE_VALUE * 8
contains = list(/obj/machinery/power/energy_accumulator/grounding_rod,
/obj/machinery/power/energy_accumulator/grounding_rod,
/obj/machinery/power/energy_accumulator/grounding_rod,
/obj/machinery/power/energy_accumulator/grounding_rod)
crate_name = "grounding rod crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
/datum/supply_pack/engine/solar
name = "Solar Panel Crate"
desc = "Go green with this DIY advanced solar array. Contains twenty one solar assemblies, a solar-control circuit board, and tracker. If you have any questions, please check out the enclosed instruction book."
cost = CARGO_CRATE_VALUE * 8
contains = list(/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/circuitboard/computer/solar_control,
/obj/item/electronics/tracker,
/obj/item/paper/guides/jobs/engi/solars)
crate_name = "solar panel crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
/datum/supply_pack/engine/supermatter_shard
name = "Supermatter Shard Crate"
desc = "The power of the heavens condensed into a single crystal. Requires CE access to open."
cost = CARGO_CRATE_VALUE * 20
access = ACCESS_CE
contains = list(/obj/machinery/power/supermatter_crystal/shard)
crate_name = "supermatter shard crate"
crate_type = /obj/structure/closet/crate/secure/engineering
dangerous = TRUE
/datum/supply_pack/engine/tesla_coils
name = "Tesla Coil Crate"
desc = "Whether it's high-voltage executions, creating research points, or just plain old assistant electrofrying: This pack of four Tesla coils can do it all!"
cost = CARGO_CRATE_VALUE * 10
contains = list(/obj/machinery/power/energy_accumulator/tesla_coil,
/obj/machinery/power/energy_accumulator/tesla_coil,
/obj/machinery/power/energy_accumulator/tesla_coil,
/obj/machinery/power/energy_accumulator/tesla_coil)
crate_name = "tesla coil crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
/datum/supply_pack/engine/hypertorus_fusion_reactor
name = "HFR Crate"
desc = "The new and improved fusion reactor. Requires CE access to open."
cost = CARGO_CRATE_VALUE * 23
access = ACCESS_CE
contains = list(/obj/item/hfr_box/corner,
/obj/item/hfr_box/corner,
/obj/item/hfr_box/corner,
/obj/item/hfr_box/corner,
/obj/item/hfr_box/body/fuel_input,
/obj/item/hfr_box/body/moderator_input,
/obj/item/hfr_box/body/waste_output,
/obj/item/hfr_box/body/interface,
/obj/item/hfr_box/core)
crate_name = "HFR crate"
crate_type = /obj/structure/closet/crate/secure/engineering
dangerous = TRUE
//////////////////////////////////////////////////////////////////////////////
/////////////////////// Canisters & Materials ////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/materials
group = "Canisters & Materials"
/datum/supply_pack/materials/cardboard50
name = "50 Cardboard Sheets"
desc = "Create a bunch of boxes."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/stack/sheet/cardboard/fifty)
crate_name = "cardboard sheets crate"
/datum/supply_pack/materials/license50
name = "50 Empty License Plates"
desc = "Create a bunch of boxes."
cost = CARGO_CRATE_VALUE * 2 // 50 * 25 + 700 - 1000 = 950 credits profit
access_view = ACCESS_BRIG_ENTRANCE
contains = list(/obj/item/stack/license_plates/empty/fifty)
crate_name = "empty license plate crate"
/datum/supply_pack/materials/glass50
name = "50 Glass Sheets"
desc = "Let some nice light in with fifty glass sheets!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/stack/sheet/glass/fifty)
crate_name = "glass sheets crate"
/datum/supply_pack/materials/iron50
name = "50 Iron Sheets"
desc = "Any construction project begins with a good stack of fifty iron sheets!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/stack/sheet/iron/fifty)
crate_name = "iron sheets crate"
/datum/supply_pack/materials/plasteel20
name = "20 Plasteel Sheets"
desc = "Reinforce the station's integrity with twenty plasteel sheets!"
cost = CARGO_CRATE_VALUE * 15
contains = list(/obj/item/stack/sheet/plasteel/twenty)
crate_name = "plasteel sheets crate"
/datum/supply_pack/materials/plasteel50
name = "50 Plasteel Sheets"
desc = "For when you REALLY have to reinforce something."
cost = CARGO_CRATE_VALUE * 33
contains = list(/obj/item/stack/sheet/plasteel/fifty)
crate_name = "plasteel sheets crate"
/datum/supply_pack/materials/plastic50
name = "50 Plastic Sheets"
desc = "Build a limitless amount of toys with fifty plastic sheets!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/stack/sheet/plastic/fifty)
crate_name = "plastic sheets crate"
/datum/supply_pack/materials/sandstone30
name = "30 Sandstone Blocks"
desc = "Neither sandy nor stoney, these thirty blocks will still get the job done."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty)
crate_name = "sandstone blocks crate"
/datum/supply_pack/materials/wood50
name = "50 Wood Planks"
desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with fifty wooden planks!"
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/stack/sheet/mineral/wood/fifty)
crate_name = "wood planks crate"
/datum/supply_pack/materials/foamtank
name = "Firefighting Foam Tank Crate"
desc = "Contains a tank of firefighting foam. Also known as \"plasmaman's bane\"."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/structure/reagent_dispensers/foamtank)
crate_name = "foam tank crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/materials/fueltank
name = "Fuel Tank Crate"
desc = "Contains a welding fuel tank. Caution, highly flammable."
cost = CARGO_CRATE_VALUE * 1.6
contains = list(/obj/structure/reagent_dispensers/fueltank)
crate_name = "fuel tank crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/materials/hightank
name = "Large Water Tank Crate"
desc = "Contains a high-capacity water tank. Useful for botany or other service jobs."
cost = CARGO_CRATE_VALUE * 2.4
contains = list(/obj/structure/reagent_dispensers/watertank/high)
crate_name = "high-capacity water tank crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/materials/hightankfuel
name = "Large Fuel Tank Crate"
desc = "Contains a high-capacity fuel tank. Keep contents away from open flame."
cost = CARGO_CRATE_VALUE * 4
access_view = ACCESS_ENGINE
contains = list(/obj/structure/reagent_dispensers/fueltank/large)
crate_name = "high-capacity fuel tank crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/materials/watertank
name = "Water Tank Crate"
desc = "Contains a tank of dihydrogen monoxide... sounds dangerous."
cost = CARGO_CRATE_VALUE * 1.2
contains = list(/obj/structure/reagent_dispensers/watertank)
crate_name = "water tank crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/materials/gas_canisters
cost = CARGO_CRATE_VALUE * 0.05
contains = list(/obj/machinery/portable_atmospherics/canister)
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/materials/gas_canisters/generate_supply_packs()
var/list/canister_packs = list()
var/obj/machinery/portable_atmospherics/canister/fakeCanister = /obj/machinery/portable_atmospherics/canister
// This is the amount of moles in a default canister
var/moleCount = (initial(fakeCanister.maximum_pressure) * initial(fakeCanister.filled)) * initial(fakeCanister.volume) / (R_IDEAL_GAS_EQUATION * T20C)
for(var/gasType in GLOB.meta_gas_info)
var/datum/gas/gas = gasType
var/name = initial(gas.name)
if(!initial(gas.purchaseable))
continue
var/datum/supply_pack/materials/pack = new
pack.name = "[name] Canister"
pack.desc = "Contains a canister of [name]."
if(initial(gas.dangerous))
pack.desc = "[pack.desc] Requires Atmospherics access to open."
pack.access = ACCESS_ATMOSPHERICS
pack.access_view = ACCESS_ATMOSPHERICS
pack.crate_name = "[name] canister crate"
pack.id = "[type]([name])"
pack.cost = cost + moleCount * initial(gas.base_value) * 1.6
pack.cost = CEILING(pack.cost, 10)
pack.contains = list(GLOB.gas_id_to_canister[initial(gas.id)])
pack.crate_type = crate_type
canister_packs += pack
return canister_packs
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Medical /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/medical
group = "Medical"
access_view = ACCESS_MEDICAL
crate_type = /obj/structure/closet/crate/medical
/datum/supply_pack/medical/bloodpacks
name = "Blood Pack Variety Crate"
desc = "Contains ten different blood packs for reintroducing blood to patients."
cost = CARGO_CRATE_VALUE * 7
contains = list(/obj/item/reagent_containers/blood,
/obj/item/reagent_containers/blood,
/obj/item/reagent_containers/blood/a_plus,
/obj/item/reagent_containers/blood/a_minus,
/obj/item/reagent_containers/blood/b_plus,
/obj/item/reagent_containers/blood/b_minus,
/obj/item/reagent_containers/blood/o_plus,
/obj/item/reagent_containers/blood/o_minus,
/obj/item/reagent_containers/blood/lizard,
/obj/item/reagent_containers/blood/ethereal)
crate_name = "blood freezer"
crate_type = /obj/structure/closet/crate/freezer
/datum/supply_pack/medical/medipen_variety
name = "Medipen Variety-Pak"
desc = "Contains eight different medipens in three different varieties, to assist in quickly treating seriously injured patients."
cost = CARGO_CRATE_VALUE * 3.5
contains = list(/obj/item/reagent_containers/hypospray/medipen/,
/obj/item/reagent_containers/hypospray/medipen/,
/obj/item/reagent_containers/hypospray/medipen/ekit,
/obj/item/reagent_containers/hypospray/medipen/ekit,
/obj/item/reagent_containers/hypospray/medipen/ekit,
/obj/item/reagent_containers/hypospray/medipen/blood_loss,
/obj/item/reagent_containers/hypospray/medipen/blood_loss,
/obj/item/reagent_containers/hypospray/medipen/blood_loss
)
crate_name = "medipen crate"
/datum/supply_pack/medical/chemical
name = "Chemical Starter Kit Crate"
desc = "Contains thirteen different chemicals, for all the fun experiments you can make."
cost = CARGO_CRATE_VALUE * 2.6
contains = list(/obj/item/reagent_containers/glass/bottle/hydrogen,
/obj/item/reagent_containers/glass/bottle/carbon,
/obj/item/reagent_containers/glass/bottle/nitrogen,
/obj/item/reagent_containers/glass/bottle/oxygen,
/obj/item/reagent_containers/glass/bottle/fluorine,
/obj/item/reagent_containers/glass/bottle/phosphorus,
/obj/item/reagent_containers/glass/bottle/silicon,
/obj/item/reagent_containers/glass/bottle/chlorine,
/obj/item/reagent_containers/glass/bottle/radium,
/obj/item/reagent_containers/glass/bottle/sacid,
/obj/item/reagent_containers/glass/bottle/ethanol,
/obj/item/reagent_containers/glass/bottle/potassium,
/obj/item/reagent_containers/glass/bottle/sugar,
/obj/item/clothing/glasses/science,
/obj/item/reagent_containers/dropper,
/obj/item/storage/box/beakers)
crate_name = "chemical crate"
/datum/supply_pack/medical/defibs
name = "Defibrillator Crate"
desc = "Contains two defibrillators for bringing the recently deceased back to life."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/defibrillator/loaded,
/obj/item/defibrillator/loaded)
crate_name = "defibrillator crate"
/datum/supply_pack/medical/iv_drip
name = "IV Drip Crate"
desc = "Contains a single IV drip for administering blood to patients."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/machinery/iv_drip)
crate_name = "iv drip crate"
/datum/supply_pack/medical/supplies
name = "Medical Supplies Crate"
desc = "Contains several medical supplies. German doctor not included."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/reagent_containers/glass/bottle/multiver,
/obj/item/reagent_containers/glass/bottle/epinephrine,
/obj/item/reagent_containers/glass/bottle/morphine,
/obj/item/reagent_containers/glass/bottle/toxin,
/obj/item/reagent_containers/glass/beaker/large,
/obj/item/reagent_containers/pill/insulin,
/obj/item/stack/medical/gauze,
/obj/item/storage/box/beakers,
/obj/item/storage/box/medigels,
/obj/item/storage/box/syringes,
/obj/item/storage/box/bodybags,
/obj/item/storage/medkit/regular,
/obj/item/storage/medkit/o2,
/obj/item/storage/medkit/toxin,
/obj/item/storage/medkit/brute,
/obj/item/storage/medkit/fire,
/obj/item/defibrillator/loaded,
/obj/item/reagent_containers/blood/o_minus,
/obj/item/storage/pill_bottle/mining,
/obj/item/reagent_containers/pill/neurine,
/obj/item/stack/medical/bone_gel/four,
/obj/item/stack/medical/bone_gel/four,
/obj/item/vending_refill/medical,
/obj/item/vending_refill/drugs)
crate_name = "medical supplies crate"
/datum/supply_pack/medical/supplies/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 10)
var/item = pick(contains)
new item(C)
/datum/supply_pack/medical/surgery
name = "Surgical Supplies Crate"
desc = "Do you want to perform surgery, but don't have one of those fancy shmancy degrees? Just get started with this crate containing a medical duffelbag, Sterilizine spray and collapsible roller bed."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/item/reagent_containers/medigel/sterilizine,
/obj/item/roller)
crate_name = "surgical supplies crate"
/datum/supply_pack/medical/salglucanister
name = "Heavy-Duty Saline Canister"
desc = "Contains a bulk supply of saline-glucose condensed into a single canister that should last several days, with a large pump to fill containers with. Direct injection of saline should be left to medical professionals as the pump is capable of overdosing patients. Requires medbay access to open."
cost = CARGO_CRATE_VALUE * 6
access = ACCESS_MEDICAL
contains = list(/obj/machinery/iv_drip/saline)
/datum/supply_pack/medical/virus
name = "Virus Crate"
desc = "Contains twelve different bottles, containing several viral samples for virology research. Also includes seven beakers and syringes. Balled-up jeans not included. Requires CMO access to open."
cost = CARGO_CRATE_VALUE * 5
access = ACCESS_CMO
access_view = ACCESS_VIROLOGY
contains = list(/obj/item/reagent_containers/glass/bottle/flu_virion,
/obj/item/reagent_containers/glass/bottle/cold,
/obj/item/reagent_containers/glass/bottle/random_virus,
/obj/item/reagent_containers/glass/bottle/random_virus,
/obj/item/reagent_containers/glass/bottle/random_virus,
/obj/item/reagent_containers/glass/bottle/random_virus,
/obj/item/reagent_containers/glass/bottle/fake_gbs,
/obj/item/reagent_containers/glass/bottle/magnitis,
/obj/item/reagent_containers/glass/bottle/pierrot_throat,
/obj/item/reagent_containers/glass/bottle/brainrot,
/obj/item/reagent_containers/glass/bottle/anxiety,
/obj/item/reagent_containers/glass/bottle/beesease,
/obj/item/storage/box/syringes,
/obj/item/storage/box/beakers,
/obj/item/reagent_containers/glass/bottle/mutagen)
crate_name = "virus crate"
crate_type = /obj/structure/closet/crate/secure/plasma
dangerous = TRUE
/datum/supply_pack/medical/cmoturtlenecks
name = "Chief Medical Officer Turtlenecks"
desc = "Contains the CMO's turtleneck and turtleneck skirt. Requires CMO access to open."
cost = CARGO_CRATE_VALUE * 2
access = ACCESS_CMO
contains = list(/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck,
/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck/skirt)
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Science /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/science
group = "Science"
access_view = ACCESS_RESEARCH
crate_type = /obj/structure/closet/crate/science
/datum/supply_pack/science/plasma
name = "Plasma Assembly Crate"
desc = "Everything you need to burn something to the ground, this contains three plasma assembly sets. Each set contains a plasma tank, igniter, proximity sensor, and timer! Warranty void if exposed to high temperatures. Requires Ordnance access to open."
cost = CARGO_CRATE_VALUE * 2
access = ACCESS_ORDNANCE
access_view = ACCESS_ORDNANCE
contains = list(/obj/item/tank/internals/plasma,
/obj/item/tank/internals/plasma,
/obj/item/tank/internals/plasma,
/obj/item/assembly/igniter,
/obj/item/assembly/igniter,
/obj/item/assembly/igniter,
/obj/item/assembly/prox_sensor,
/obj/item/assembly/prox_sensor,
/obj/item/assembly/prox_sensor,
/obj/item/assembly/timer,
/obj/item/assembly/timer,
/obj/item/assembly/timer)
crate_name = "plasma assembly crate"
crate_type = /obj/structure/closet/crate/secure/plasma
/datum/supply_pack/science/raw_flux_anomaly
name = "Raw Flux Anomaly"
desc = "The raw core of a flux anomaly, ready to be implosion-compressed into a powerful artifact."
cost = CARGO_CRATE_VALUE * 10
access = ACCESS_ORDNANCE
access_view = ACCESS_ORDNANCE
contains = list(/obj/item/raw_anomaly_core/flux)
crate_name = "raw flux anomaly"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/raw_hallucination_anomaly
name = "Raw Hallucination Anomaly"
desc = "The raw core of a hallucination anomaly, ready to be implosion-compressed into a powerful artifact."
cost = CARGO_CRATE_VALUE * 10
access = ACCESS_ORDNANCE
access_view = ACCESS_ORDNANCE
contains = list(/obj/item/raw_anomaly_core/hallucination)
crate_name = "raw hallucination anomaly"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/raw_grav_anomaly
name = "Raw Gravitational Anomaly"
desc = "The raw core of a gravitational anomaly, ready to be implosion-compressed into a powerful artifact."
cost = CARGO_CRATE_VALUE * 10
access = ACCESS_ORDNANCE
access_view = ACCESS_ORDNANCE
contains = list(/obj/item/raw_anomaly_core/grav)
crate_name = "raw gravitational anomaly"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/raw_vortex_anomaly
name = "Raw Vortex Anomaly"
desc = "The raw core of a vortex anomaly, ready to be implosion-compressed into a powerful artifact."
cost = CARGO_CRATE_VALUE * 10
access = ACCESS_ORDNANCE
access_view = ACCESS_ORDNANCE
contains = list(/obj/item/raw_anomaly_core/vortex)
crate_name = "raw vortex anomaly"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/raw_bluespace_anomaly
name = "Raw Bluespace Anomaly"
desc = "The raw core of a bluespace anomaly, ready to be implosion-compressed into a powerful artifact."
cost = CARGO_CRATE_VALUE * 10
access = ACCESS_ORDNANCE
access_view = ACCESS_ORDNANCE
contains = list(/obj/item/raw_anomaly_core/bluespace)
crate_name = "raw bluespace anomaly"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/raw_pyro_anomaly
name = "Raw Pyro Anomaly"
desc = "The raw core of a pyro anomaly, ready to be implosion-compressed into a powerful artifact."
cost = CARGO_CRATE_VALUE * 10
access = ACCESS_ORDNANCE
access_view = ACCESS_ORDNANCE
contains = list(/obj/item/raw_anomaly_core/pyro)
crate_name = "raw pyro anomaly"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/robotics
name = "Robotics Assembly Crate"
desc = "The tools you need to replace those finicky humans with a loyal robot army! Contains four proximity sensors, two empty first aid kits, two health analyzers, two red hardhats, two mechanical toolboxes, and two cleanbot assemblies! Requires Robotics access to open."
cost = CARGO_CRATE_VALUE * 3
access = ACCESS_ROBOTICS
access_view = ACCESS_ROBOTICS
contains = list(/obj/item/assembly/prox_sensor,
/obj/item/assembly/prox_sensor,
/obj/item/assembly/prox_sensor,
/obj/item/assembly/prox_sensor,
/obj/item/storage/medkit,
/obj/item/storage/medkit,
/obj/item/healthanalyzer,
/obj/item/healthanalyzer,
/obj/item/clothing/head/hardhat/red,
/obj/item/clothing/head/hardhat/red,
/obj/item/storage/toolbox/mechanical,
/obj/item/storage/toolbox/mechanical,
/obj/item/bot_assembly/cleanbot,
/obj/item/bot_assembly/cleanbot)
crate_name = "robotics assembly crate"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/rped
name = "RPED crate"
desc = "Need to rebuild the ORM but science got annihialted after a bomb test? Buy this for the most advanced parts NT can give you."
cost = CARGO_CRATE_VALUE * 3
access_view = FALSE
contains = list(/obj/item/storage/part_replacer/cargo)
crate_name = "\improper RPED crate"
/datum/supply_pack/science/shieldwalls
name = "Shield Generator Crate"
desc = "These high powered Shield Wall Generators are guaranteed to keep any unwanted lifeforms on the outside, where they belong! Contains four shield wall generators. Requires Teleporter access to open."
cost = CARGO_CRATE_VALUE * 4
access = ACCESS_TELEPORTER
access_view = ACCESS_TELEPORTER
contains = list(/obj/machinery/power/shieldwallgen,
/obj/machinery/power/shieldwallgen,
/obj/machinery/power/shieldwallgen,
/obj/machinery/power/shieldwallgen)
crate_name = "shield generators crate"
crate_type = /obj/structure/closet/crate/secure/science
/datum/supply_pack/science/transfer_valves
name = "Tank Transfer Valves Crate"
desc = "The key ingredient for making a lot of people very angry very fast. Contains two tank transfer valves. Requires RD access to open."
cost = CARGO_CRATE_VALUE * 12
access = ACCESS_RD
contains = list(/obj/item/transfer_valve,
/obj/item/transfer_valve)
crate_name = "tank transfer valves crate"
crate_type = /obj/structure/closet/crate/secure/science
dangerous = TRUE
/datum/supply_pack/science/monkey_helmets
name = "Monkey Mind Magnification Helmet crate"
desc = "Some research is best done with monkeys, yet sometimes they're just too dumb to complete more complicated tasks. These helmets should help."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/clothing/head/helmet/monkey_sentience,
/obj/item/clothing/head/helmet/monkey_sentience)
crate_name = "monkey mind magnification crate"
/datum/supply_pack/science/cytology
name = "Cytology supplies crate"
desc = "Did out of control specimens pulverize xenobiology? Here is some more supplies for further testing."
cost = CARGO_CRATE_VALUE * 3
access_view = ACCESS_XENOBIOLOGY
contains = list(/obj/structure/microscope,
/obj/item/biopsy_tool,
/obj/item/storage/box/petridish,
/obj/item/storage/box/petridish,
/obj/item/storage/box/swab,
/obj/item/construction/plumbing/research)
crate_name = "cytology supplies crate"
/datum/supply_pack/science/mod_core
name = "MOD core Crate"
desc = "Three cores, perfect for any MODsuit construction! Naturally harvested™, of course."
cost = CARGO_CRATE_VALUE * 3
access = ACCESS_ROBOTICS
access_view = ACCESS_ROBOTICS
contains = list(/obj/item/mod/core/standard,
/obj/item/mod/core/standard,
/obj/item/mod/core/standard)
crate_name = "\improper MOD core crate"
crate_type = /obj/structure/closet/crate/secure/science
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////// Service //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/service
group = "Service"
/datum/supply_pack/service/cargo_supples
name = "Cargo Supplies Crate"
desc = "Sold everything that wasn't bolted down? You can get right back to work with this crate containing stamps, an export scanner, destination tagger, hand labeler and some package wrapping."
cost = CARGO_CRATE_VALUE * 1.75
contains = list(/obj/item/stamp,
/obj/item/stamp/denied,
/obj/item/export_scanner,
/obj/item/dest_tagger,
/obj/item/hand_labeler,
/obj/item/stack/package_wrap)
crate_name = "cargo supplies crate"
/datum/supply_pack/service/noslipfloor
name = "High-traction Floor Tiles"
desc = "Make slipping a thing of the past with thirty industrial-grade anti-slip floor tiles!"
cost = CARGO_CRATE_VALUE * 4
access_view = ACCESS_JANITOR
contains = list(/obj/item/stack/tile/noslip/thirty)
crate_name = "high-traction floor tiles crate"
/datum/supply_pack/service/janitor
name = "Janitorial Supplies Crate"
desc = "Fight back against dirt and grime with Nanotrasen's Janitorial Essentials(tm)! Contains three buckets, caution signs, and cleaner grenades. Also has a single mop, broom, spray cleaner, rag, and trash bag."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_JANITOR
contains = list(/obj/item/reagent_containers/glass/bucket,
/obj/item/reagent_containers/glass/bucket,
/obj/item/reagent_containers/glass/bucket,
/obj/item/mop,
/obj/item/pushbroom,
/obj/item/clothing/suit/caution,
/obj/item/clothing/suit/caution,
/obj/item/clothing/suit/caution,
/obj/item/storage/bag/trash,
/obj/item/reagent_containers/spray/cleaner,
/obj/item/reagent_containers/glass/rag,
/obj/item/grenade/chem_grenade/cleaner,
/obj/item/grenade/chem_grenade/cleaner,
/obj/item/grenade/chem_grenade/cleaner)
crate_name = "janitorial supplies crate"
/datum/supply_pack/service/janitor/janicart
name = "Janitorial Cart and Galoshes Crate"
desc = "The keystone to any successful janitor. As long as you have feet, this pair of galoshes will keep them firmly planted on the ground. Also contains a janitorial cart."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/structure/janitorialcart,
/obj/item/clothing/shoes/galoshes)
crate_name = "janitorial cart crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/service/janitor/janitank
name = "Janitor Backpack Crate"
desc = "Call forth divine judgement upon dirt and grime with this high capacity janitor backpack. Contains 500 units of station-cleansing cleaner. Requires janitor access to open."
cost = CARGO_CRATE_VALUE * 2
access = ACCESS_JANITOR
contains = list(/obj/item/watertank/janitor)
crate_name = "janitor backpack crate"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/service/mule
name = "MULEbot Crate"
desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!"
cost = CARGO_CRATE_VALUE * 4
contains = list(/mob/living/simple_animal/bot/mulebot)
crate_name = "\improper MULEbot Crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/service/party
name = "Party Equipment"
desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, six beers, six sodas, two ales, and a bottle of patron, goldschlager, and shaker!"
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/storage/box/drinkingglasses,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/food/drinks/bottle/patron,
/obj/item/reagent_containers/food/drinks/bottle/goldschlager,
/obj/item/reagent_containers/food/drinks/bottle/ale,
/obj/item/reagent_containers/food/drinks/bottle/ale,
/obj/item/storage/cans/sixbeer,
/obj/item/storage/cans/sixsoda,
/obj/item/flashlight/glowstick,
/obj/item/flashlight/glowstick/red,
/obj/item/flashlight/glowstick/blue,
/obj/item/flashlight/glowstick/cyan,
/obj/item/flashlight/glowstick/orange,
/obj/item/flashlight/glowstick/yellow,
/obj/item/flashlight/glowstick/pink)
crate_name = "party equipment crate"
/datum/supply_pack/service/carpet
name = "Premium Carpet Crate"
desc = "Iron floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/stack/tile/carpet/fifty,
/obj/item/stack/tile/carpet/fifty,
/obj/item/stack/tile/carpet/black/fifty,
/obj/item/stack/tile/carpet/black/fifty)
crate_name = "premium carpet crate"
/datum/supply_pack/service/carpet_exotic
name = "Exotic Carpet Crate"
desc = "Exotic carpets straight from Space Russia, for all your decorating needs. Contains 100 tiles each of 8 different flooring patterns."
cost = CARGO_CRATE_VALUE * 8
contains = list(/obj/item/stack/tile/carpet/blue/fifty,
/obj/item/stack/tile/carpet/blue/fifty,
/obj/item/stack/tile/carpet/cyan/fifty,
/obj/item/stack/tile/carpet/cyan/fifty,
/obj/item/stack/tile/carpet/green/fifty,
/obj/item/stack/tile/carpet/green/fifty,
/obj/item/stack/tile/carpet/orange/fifty,
/obj/item/stack/tile/carpet/orange/fifty,
/obj/item/stack/tile/carpet/purple/fifty,
/obj/item/stack/tile/carpet/purple/fifty,
/obj/item/stack/tile/carpet/red/fifty,
/obj/item/stack/tile/carpet/red/fifty,
/obj/item/stack/tile/carpet/royalblue/fifty,
/obj/item/stack/tile/carpet/royalblue/fifty,
/obj/item/stack/tile/carpet/royalblack/fifty,
/obj/item/stack/tile/carpet/royalblack/fifty)
crate_name = "exotic carpet crate"
/datum/supply_pack/service/carpet_neon
name = "Simple Neon Carpet Crate"
desc = "Simple rubbery mats with phosphorescent lining. Contains 120 tiles each of 13 color variants. Limited edition release."
cost = CARGO_CRATE_VALUE * 15
contains = list(
/obj/item/stack/tile/carpet/neon/simple/white/sixty,
/obj/item/stack/tile/carpet/neon/simple/white/sixty,
/obj/item/stack/tile/carpet/neon/simple/black/sixty,
/obj/item/stack/tile/carpet/neon/simple/black/sixty,
/obj/item/stack/tile/carpet/neon/simple/red/sixty,
/obj/item/stack/tile/carpet/neon/simple/red/sixty,
/obj/item/stack/tile/carpet/neon/simple/orange/sixty,
/obj/item/stack/tile/carpet/neon/simple/orange/sixty,
/obj/item/stack/tile/carpet/neon/simple/yellow/sixty,
/obj/item/stack/tile/carpet/neon/simple/yellow/sixty,
/obj/item/stack/tile/carpet/neon/simple/lime/sixty,
/obj/item/stack/tile/carpet/neon/simple/lime/sixty,
/obj/item/stack/tile/carpet/neon/simple/green/sixty,
/obj/item/stack/tile/carpet/neon/simple/green/sixty,
/obj/item/stack/tile/carpet/neon/simple/teal/sixty,
/obj/item/stack/tile/carpet/neon/simple/teal/sixty,
/obj/item/stack/tile/carpet/neon/simple/cyan/sixty,
/obj/item/stack/tile/carpet/neon/simple/cyan/sixty,
/obj/item/stack/tile/carpet/neon/simple/blue/sixty,
/obj/item/stack/tile/carpet/neon/simple/blue/sixty,
/obj/item/stack/tile/carpet/neon/simple/purple/sixty,
/obj/item/stack/tile/carpet/neon/simple/purple/sixty,
/obj/item/stack/tile/carpet/neon/simple/violet/sixty,
/obj/item/stack/tile/carpet/neon/simple/violet/sixty,
/obj/item/stack/tile/carpet/neon/simple/pink/sixty,
/obj/item/stack/tile/carpet/neon/simple/pink/sixty,
)
crate_name = "neon carpet crate"
/datum/supply_pack/service/lightbulbs
name = "Replacement Lights"
desc = "May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/storage/box/lights/mixed,
/obj/item/storage/box/lights/mixed,
/obj/item/storage/box/lights/mixed)
crate_name = "replacement lights"
/datum/supply_pack/service/minerkit
name = "Shaft Miner Starter Kit"
desc = "All the miners died too fast? Assistant wants to get a taste of life off-station? Either way, this kit is the best way to turn a regular crewman into an ore-producing, monster-slaying machine. Contains meson goggles, a pickaxe, advanced mining scanner, cargo headset, ore bag, gasmask, an explorer suit and a miner ID upgrade. Requires QM access to open."
cost = CARGO_CRATE_VALUE * 4
access = ACCESS_QM
access_view = ACCESS_MINING_STATION
contains = list(/obj/item/storage/backpack/duffelbag/mining_conscript)
crate_name = "shaft miner starter kit"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/service/survivalknives
name = "Survival Knives Crate"
desc = "Contains three sharpened survival knives. Each knife guaranteed to fit snugly inside any Nanotrasen-standard boot."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/knife/combat/survival,
/obj/item/knife/combat/survival,
/obj/item/knife/combat/survival)
crate_name = "survival knife crate"
/datum/supply_pack/service/wedding
name = "Wedding Crate"
desc = "Everything you need to host a wedding! Now you just need an officiant."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/clothing/under/dress/wedding_dress,
/obj/item/clothing/under/suit/tuxedo,
/obj/item/storage/belt/cummerbund,
/obj/item/clothing/head/weddingveil,
/obj/item/bouquet,
/obj/item/bouquet/sunflower,
/obj/item/bouquet/poppy,
/obj/item/reagent_containers/food/drinks/bottle/champagne)
crate_name = "wedding crate"
/// Box of 7 grey IDs.
/datum/supply_pack/service/greyidbox
name = "Grey ID Card Multipack Cate"
desc = "A convenient crate containing a box of cheap ID cards in a handy wallet-sized form factor. Cards come in every colour you can imagne, as long as it's grey."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/storage/box/ids)
crate_name = "basic id card crate"
/// Single silver ID.
/datum/supply_pack/service/silverid
name = "Silver ID Card Crate"
desc = "Did we forget to hire any Heads of Staff? Recruit your own with this high value ID card capable of holding advanced levels of access in a handy wallet-sized form factor"
cost = CARGO_CRATE_VALUE * 7
contains = list(/obj/item/card/id/advanced/silver)
crate_name = "silver id card crate"
/datum/supply_pack/service/emptycrate
name = "Empty Crate"
desc = "It's an empty crate, for all your storage needs."
cost = CARGO_CRATE_VALUE * 1.4 //Net Zero Profit.
contains = list()
crate_name = "crate"
/datum/supply_pack/service/randomized/donkpockets
name = "Donk Pocket Variety Crate"
desc = "Featuring a line up of Donk Co.'s most popular pastry!"
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/storage/box/donkpockets/donkpocketspicy,
/obj/item/storage/box/donkpockets/donkpocketteriyaki,
/obj/item/storage/box/donkpockets/donkpocketpizza,
/obj/item/storage/box/donkpockets/donkpocketberry,
/obj/item/storage/box/donkpockets/donkpockethonk)
crate_name = "donk pocket crate"
/datum/supply_pack/service/randomized/donkpockets/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 3)
var/item = pick(contains)
new item(C)
/datum/supply_pack/service/randomized/ready_donk
name = "Ready-Donk Variety Crate"
desc = "Featuring a line up of Donk Co.'s most popular pastry!"
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/food/ready_donk,
/obj/item/food/ready_donk/mac_n_cheese,
/obj/item/food/ready_donk/donkhiladas)
crate_name = "\improper Ready-Donk crate"
/datum/supply_pack/service/randomized/ready_donk/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 3)
var/item = pick(contains)
new item(C)
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Organic /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/organic
group = "Food & Hydroponics"
crate_type = /obj/structure/closet/crate/freezer
/datum/supply_pack/organic/hydroponics
access_view = ACCESS_HYDROPONICS
/datum/supply_pack/organic/hydroponics/beekeeping_suits
name = "Beekeeper Suit Crate"
desc = "Bee business booming? Better be benevolent and boost botany by bestowing bi-Beekeeper-suits! Contains two beekeeper suits and matching headwear."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/head/beekeeper_head,
/obj/item/clothing/suit/beekeeper_suit,
/obj/item/clothing/head/beekeeper_head,
/obj/item/clothing/suit/beekeeper_suit)
crate_name = "beekeeper suits"
crate_type = /obj/structure/closet/crate/hydroponics
/datum/supply_pack/organic/hydroponics/beekeeping_fullkit
name = "Beekeeping Starter Crate"
desc = "BEES BEES BEES. Contains three honey frames, a beekeeper suit and helmet, flyswatter, bee house, and, of course, a pure-bred Nanotrasen-Standardized Queen Bee!"
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/structure/beebox/unwrenched,
/obj/item/honey_frame,
/obj/item/honey_frame,
/obj/item/honey_frame,
/obj/item/queen_bee/bought,
/obj/item/clothing/head/beekeeper_head,
/obj/item/clothing/suit/beekeeper_suit,
/obj/item/melee/flyswatter)
crate_name = "beekeeping starter crate"
crate_type = /obj/structure/closet/crate/hydroponics
/datum/supply_pack/organic/randomized/chef
name = "Excellent Meat Crate"
desc = "The best cuts in the whole galaxy."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/food/meat/slab/human/mutant/slime,
/obj/item/food/meat/slab/killertomato,
/obj/item/food/meat/slab/bear,
/obj/item/food/meat/slab/xeno,
/obj/item/food/meat/slab/spider,
/obj/item/food/meat/rawbacon,
/obj/item/food/meat/slab/penguin,
/obj/item/food/spiderleg,
/obj/item/food/fishmeat/carp,
/obj/item/food/meat/slab/human)
crate_name = "food crate"
/datum/supply_pack/organic/randomized/chef/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 15)
var/item = pick(contains)
new item(C)
/datum/supply_pack/organic/exoticseeds
name = "Exotic Seeds Crate"
desc = "Any entrepreneuring botanist's dream. Contains fourteen different seeds, including one replica-pod seed and two mystery seeds!"
cost = CARGO_CRATE_VALUE * 3
access_view = ACCESS_HYDROPONICS
contains = list(/obj/item/seeds/nettle,
/obj/item/seeds/replicapod,
/obj/item/seeds/plump,
/obj/item/seeds/liberty,
/obj/item/seeds/amanita,
/obj/item/seeds/reishi,
/obj/item/seeds/bamboo,
/obj/item/seeds/eggplant/eggy,
/obj/item/seeds/rainbow_bunch,
/obj/item/seeds/shrub,
/obj/item/seeds/random,
/obj/item/seeds/random)
crate_name = "exotic seeds crate"
crate_type = /obj/structure/closet/crate/hydroponics
/datum/supply_pack/organic/food
name = "Food Crate"
desc = "Get things cooking with this crate full of useful ingredients! Contains a dozen eggs, three bananas, and some flour, rice, milk, soymilk, salt, pepper, enzyme, sugar, and monkeymeat."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/reagent_containers/food/condiment/flour,
/obj/item/reagent_containers/food/condiment/rice,
/obj/item/reagent_containers/food/condiment/milk,
/obj/item/reagent_containers/food/condiment/soymilk,
/obj/item/reagent_containers/food/condiment/saltshaker,
/obj/item/reagent_containers/food/condiment/peppermill,
/obj/item/storage/fancy/egg_box,
/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/reagent_containers/food/condiment/sugar,
/obj/item/food/meat/slab/monkey,
/obj/item/food/grown/banana,
/obj/item/food/grown/banana,
/obj/item/food/grown/banana)
crate_name = "food crate"
/datum/supply_pack/organic/randomized/chef/fruits
name = "Fruit Crate"
desc = "Rich of vitamins, may contain oranges."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/food/grown/citrus/lime,
/obj/item/food/grown/citrus/orange,
/obj/item/food/grown/watermelon,
/obj/item/food/grown/apple,
/obj/item/food/grown/berries,
/obj/item/food/grown/citrus/lemon)
crate_name = "food crate"
/datum/supply_pack/organic/cream_piee
name = "High-yield Clown-grade Cream Pie Crate"
desc = "Designed by Aussec's Advanced Warfare Research Division, these high-yield, Clown-grade cream pies are powered by a synergy of performance and efficiency. Guaranteed to provide maximum results."
cost = CARGO_CRATE_VALUE * 12
contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie)
crate_name = "party equipment crate"
contraband = TRUE
access = ACCESS_THEATRE
access_view = ACCESS_THEATRE
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/organic/hydroponics
name = "Hydroponics Crate"
desc = "Supplies for growing a great garden! Contains two bottles of ammonia, two Plant-B-Gone spray bottles, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/reagent_containers/spray/plantbgone,
/obj/item/reagent_containers/spray/plantbgone,
/obj/item/reagent_containers/glass/bottle/ammonia,
/obj/item/reagent_containers/glass/bottle/ammonia,
/obj/item/hatchet,
/obj/item/cultivator,
/obj/item/plant_analyzer,
/obj/item/clothing/gloves/botanic_leather,
/obj/item/clothing/suit/apron)
crate_name = "hydroponics crate"
crate_type = /obj/structure/closet/crate/hydroponics
/datum/supply_pack/organic/hydroponics/hydrotank
name = "Hydroponics Backpack Crate"
desc = "Bring on the flood with this high-capacity backpack crate. Contains 500 units of life-giving H2O. Requires hydroponics access to open."
cost = CARGO_CRATE_VALUE * 2
access = ACCESS_HYDROPONICS
contains = list(/obj/item/watertank)
crate_name = "hydroponics backpack crate"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/organic/pizza
name = "Pizza Crate"
desc = "Why visit the kitchen when you can have five random pizzas in a fraction of the time? \
Best prices this side of the galaxy! All deliveries are guaranteed to be 99% anomaly-free."
cost = CARGO_CRATE_VALUE * 10 // Best prices this side of the galaxy.
contains = list(/obj/item/pizzabox/margherita,
/obj/item/pizzabox/mushroom,
/obj/item/pizzabox/meat,
/obj/item/pizzabox/vegetable,
/obj/item/pizzabox/pineapple)
crate_name = "pizza crate"
///Whether we've provided an infinite pizza box already this shift or not.
var/static/anomalous_box_provided = FALSE
///The percentage chance (per pizza) of this supply pack to spawn an anomalous pizza box.
var/anna_molly_box_chance = 1
///Total tickets in our figurative lottery (per pizza) to decide if we create a bomb box, and if so what type. 1 to 3 create a bomb. The rest do nothing.
var/boombox_tickets = 100
///Whether we've provided a bomb pizza box already this shift or not.
var/boombox_provided = FALSE
/datum/supply_pack/organic/pizza/fill(obj/structure/closet/crate/C)
. = ..()
var/list/pizza_types = list(
/obj/item/food/pizza/margherita = 10,
/obj/item/food/pizza/meat = 10,
/obj/item/food/pizza/mushroom = 10,
/obj/item/food/pizza/vegetable = 10,
/obj/item/food/pizza/donkpocket = 10,
/obj/item/food/pizza/dank = 7,
/obj/item/food/pizza/sassysage = 10,
/obj/item/food/pizza/pineapple = 10,
/obj/item/food/pizza/arnold = 3
) //weighted by chance to disrupt eaters' rounds
for(var/obj/item/pizzabox/P in C)
if(!anomalous_box_provided)
if(prob(anna_molly_box_chance)) //1% chance for each box, so 4% total chance per order
var/obj/item/pizzabox/infinite/fourfiveeight = new(C)
fourfiveeight.boxtag = P.boxtag
fourfiveeight.boxtag_set = TRUE
fourfiveeight.update_appearance()
qdel(P)
anomalous_box_provided = TRUE
log_game("An anomalous pizza box was provided in a pizza crate at during cargo delivery")
if(prob(50))
addtimer(CALLBACK(src, .proc/anomalous_pizza_report), rand(300, 1800))
else
message_admins("An anomalous pizza box was silently created with no command report in a pizza crate delivery.")
continue
if(!boombox_provided)
var/boombox_lottery = rand(1,boombox_tickets)
var/boombox_type
switch(boombox_lottery)
if(1 to 2)
boombox_type = /obj/item/pizzabox/bomb/armed //explodes after opening
if(3)
boombox_type = /obj/item/pizzabox/bomb //free bomb
if(boombox_type)
new boombox_type(C)
qdel(P)
boombox_provided = TRUE
log_game("A bomb pizza box was created by a pizza crate delivery.")
message_admins("A bomb pizza box has arrived in a pizza crate delivery.")
continue
//here we randomly replace our pizzas for a chance at the full range
var/obj/item/food/pizza/replacement_type = pick_weight(pizza_types)
pizza_types -= replacement_type
if(replacement_type && !istype(P.pizza, replacement_type))
QDEL_NULL(P.pizza)
P.pizza = new replacement_type
P.boxtag = P.pizza.boxtag
P.boxtag_set = TRUE
P.update_appearance()
/datum/supply_pack/organic/pizza/proc/anomalous_pizza_report()
print_command_report("[station_name()], our anomalous materials divison has reported a missing object that is highly likely to have been sent to your station during a routine cargo \
delivery. Please search all crates and manifests provided with the delivery and return the object if is located. The object resembles a standard <b>\[DATA EXPUNGED\]</b> and is to be \
considered <b>\[REDACTED\]</b> and returned at your leisure. Note that objects the anomaly produces are specifically attuned exactly to the individual opening the anomaly; regardless \
of species, the individual will find the object edible and it will taste great according to their personal definitions, which vary significantly based on person and species.")
/datum/supply_pack/organic/potted_plants
name = "Potted Plants Crate"
desc = "Spruce up the station with these lovely plants! Contains a random assortment of five potted plants from Nanotrasen's potted plant research division. Warranty void if thrown."
cost = CARGO_CRATE_VALUE * 1.5
contains = list(/obj/item/kirbyplants/random,
/obj/item/kirbyplants/random,
/obj/item/kirbyplants/random,
/obj/item/kirbyplants/random,
/obj/item/kirbyplants/random)
crate_name = "potted plants crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/organic/seeds
name = "Seeds Crate"
desc = "Big things have small beginnings. Contains fifteen different seeds."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/seeds/chili,
/obj/item/seeds/cotton,
/obj/item/seeds/berry,
/obj/item/seeds/corn,
/obj/item/seeds/eggplant,
/obj/item/seeds/tomato,
/obj/item/seeds/soya,
/obj/item/seeds/wheat,
/obj/item/seeds/wheat/rice,
/obj/item/seeds/carrot,
/obj/item/seeds/sunflower,
/obj/item/seeds/rose,
/obj/item/seeds/chanter,
/obj/item/seeds/potato,
/obj/item/seeds/sugarcane)
crate_name = "seeds crate"
crate_type = /obj/structure/closet/crate/hydroponics
/datum/supply_pack/organic/randomized/chef/vegetables
name = "Vegetables Crate"
desc = "Grown in vats."
cost = CARGO_CRATE_VALUE * 1.8
contains = list(/obj/item/food/grown/chili,
/obj/item/food/grown/corn,
/obj/item/food/grown/tomato,
/obj/item/food/grown/potato,
/obj/item/food/grown/carrot,
/obj/item/food/grown/mushroom/chanterelle,
/obj/item/food/grown/onion,
/obj/item/food/grown/pumpkin)
crate_name = "food crate"
/datum/supply_pack/organic/grill
name = "Grilling Starter Kit"
desc = "Hey dad I'm Hungry. Hi Hungry I'm THE NEW GRILLING STARTER KIT ONLY 5000 BUX GET NOW! Contains a grill and fuel."
cost = CARGO_CRATE_VALUE * 8
crate_type = /obj/structure/closet/crate
contains = list(/obj/item/stack/sheet/mineral/coal/five,
/obj/machinery/grill/unwrenched,
/obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy
)
crate_name = "grilling starter kit crate"
/datum/supply_pack/organic/grillfuel
name = "Grilling Fuel Kit"
desc = "Contains propane and propane accessories. (Note: doesn't contain any actual propane.)"
cost = CARGO_CRATE_VALUE * 4
crate_type = /obj/structure/closet/crate
contains = list(/obj/item/stack/sheet/mineral/coal/ten,
/obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy
)
crate_name = "grilling fuel kit crate"
//////////////////////////////////////////////////////////////////////////////
////////////////////////////// Livestock /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/critter
group = "Livestock"
crate_type = /obj/structure/closet/crate/critter
/datum/supply_pack/critter/parrot
name = "Bird Crate"
desc = "Contains five expert telecommunication birds."
cost = CARGO_CRATE_VALUE * 8
access_view = ACCESS_CE
contains = list(/mob/living/simple_animal/parrot)
crate_name = "parrot crate"
/datum/supply_pack/critter/parrot/generate()
. = ..()
for(var/i in 1 to 4)
new /mob/living/simple_animal/parrot(.)
/datum/supply_pack/critter/butterfly
name = "Butterflies Crate"
desc = "Not a very dangerous insect, but they do give off a better image than, say, flies or cockroaches."//is that a motherfucking worm reference
contraband = TRUE
cost = CARGO_CRATE_VALUE * 5
access_view = ACCESS_THEATRE
contains = list(/mob/living/simple_animal/butterfly)
crate_name = "entomology samples crate"
/datum/supply_pack/critter/butterfly/generate()
. = ..()
for(var/i in 1 to 49)
new /mob/living/simple_animal/butterfly(.)
/datum/supply_pack/critter/cat
name = "Cat Crate"
desc = "The cat goes meow! Comes with a collar and a nice cat toy! Cheeseburger not included."//i can't believe im making this reference
cost = CARGO_CRATE_VALUE * 10 //Cats are worth as much as corgis.
access_view = ACCESS_MEDICAL
contains = list(/mob/living/simple_animal/pet/cat,
/obj/item/clothing/neck/petcollar,
/obj/item/toy/cattoy)
crate_name = "cat crate"
/datum/supply_pack/critter/cat/generate()
. = ..()
if(prob(50))
var/mob/living/simple_animal/pet/cat/C = locate() in .
qdel(C)
new /mob/living/simple_animal/pet/cat/_proc(.)
/datum/supply_pack/critter/chick
name = "Chicken Crate"
desc = "The chicken goes bwaak!"
cost = CARGO_CRATE_VALUE * 4
access_view = ACCESS_KITCHEN
contains = list( /mob/living/simple_animal/chick)
crate_name = "chicken crate"
/datum/supply_pack/critter/corgi
name = "Corgi Crate"
desc = "Considered the optimal dog breed by thousands of research scientists, this Corgi is but one dog from the millions of Ian's noble bloodline. Comes with a cute collar!"
cost = CARGO_CRATE_VALUE * 10
access_view = ACCESS_HOP
contains = list(/mob/living/simple_animal/pet/dog/corgi,
/obj/item/clothing/neck/petcollar)
crate_name = "corgi crate"
/datum/supply_pack/critter/corgi/generate()
. = ..()
if(prob(50))
var/mob/living/simple_animal/pet/dog/corgi/D = locate() in .
if(D.gender == FEMALE)
qdel(D)
new /mob/living/simple_animal/pet/dog/corgi/lisa(.)
/datum/supply_pack/critter/cow
name = "Cow Crate"
desc = "The cow goes moo!"
cost = CARGO_CRATE_VALUE * 6
access_view = ACCESS_HYDROPONICS
contains = list(/mob/living/basic/cow)
crate_name = "cow crate"
/datum/supply_pack/critter/crab
name = "Crab Rocket"
desc = "CRAAAAAAB ROCKET. CRAB ROCKET. CRAB ROCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROCKET. CRAFT. ROCKET. BUY. CRAFT ROCKET. CRAB ROOOCKET. CRAB ROOOOCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROOOOOOOOOOOOOOOOOOOOOOCK EEEEEEEEEEEEEEEEEEEEEEEEE EEEETTTTTTTTTTTTAAAAAAAAA AAAHHHHHHHHHHHHH. CRAB ROCKET. CRAAAB ROCKEEEEEEEEEGGGGHHHHTT CRAB CRAB CRAABROCKET CRAB ROCKEEEET."//fun fact: i actually spent like 10 minutes and transcribed the entire video.
cost = CARGO_CRATE_VALUE * 8
access_view = ACCESS_HOS
contains = list(/mob/living/simple_animal/crab)
crate_name = "look sir free crabs"
DropPodOnly = TRUE
/datum/supply_pack/critter/crab/generate()
. = ..()
for(var/i in 1 to 49)
new /mob/living/simple_animal/crab(.)
/datum/supply_pack/critter/corgis/exotic
name = "Exotic Corgi Crate"
desc = "Corgis fit for a king, these corgis come in a unique color to signify their superiority. Comes with a cute collar!"
cost = CARGO_CRATE_VALUE * 11
contains = list(/mob/living/simple_animal/pet/dog/corgi/exoticcorgi,
/obj/item/clothing/neck/petcollar)
crate_name = "exotic corgi crate"
/datum/supply_pack/critter/fox
name = "Fox Crate"
desc = "The fox goes...? Comes with a collar!"//what does the fox say
cost = CARGO_CRATE_VALUE * 10
access_view = ACCESS_CAPTAIN
contains = list(/mob/living/simple_animal/pet/fox,
/obj/item/clothing/neck/petcollar)
crate_name = "fox crate"
/datum/supply_pack/critter/goat
name = "Goat Crate"
desc = "The goat goes baa! Warranty void if used as a replacement for Pete."
cost = CARGO_CRATE_VALUE * 5
access_view = ACCESS_KITCHEN
contains = list(/mob/living/simple_animal/hostile/retaliate/goat)
crate_name = "goat crate"
/datum/supply_pack/critter/monkey
name = "Monkey Cube Crate"
desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!"
cost = CARGO_CRATE_VALUE * 4
contains = list (/obj/item/storage/box/monkeycubes)
crate_type = /obj/structure/closet/crate
crate_name = "monkey cube crate"
/datum/supply_pack/critter/pug
name = "Pug Crate"
desc = "Like a normal dog, but... squished. Comes with a nice collar!"
cost = CARGO_CRATE_VALUE * 10
contains = list(/mob/living/simple_animal/pet/dog/pug,
/obj/item/clothing/neck/petcollar)
crate_name = "pug crate"
/datum/supply_pack/critter/bullterrier
name = "Bull Terrier Crate"
desc = "Like a normal dog, but with a head the shape of an egg. Comes with a nice collar!"
cost = CARGO_CRATE_VALUE * 10
contains = list(/mob/living/simple_animal/pet/dog/bullterrier,
/obj/item/clothing/neck/petcollar)
crate_name = "bull terrier crate"
/datum/supply_pack/critter/snake
name = "Snake Crate"
desc = "Tired of these MOTHER FUCKING snakes on this MOTHER FUCKING space station? Then this isn't the crate for you. Contains three poisonous snakes."
cost = CARGO_CRATE_VALUE * 6
access_view = ACCESS_SECURITY
contains = list(/mob/living/simple_animal/hostile/retaliate/snake,
/mob/living/simple_animal/hostile/retaliate/snake,
/mob/living/simple_animal/hostile/retaliate/snake)
crate_name = "snake crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Costumes & Toys /////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/costumes_toys
group = "Costumes & Toys"
/datum/supply_pack/costumes_toys/randomised
name = "Collectable Hats Crate"
desc = "Flaunt your status with three unique, highly-collectable hats!"
cost = CARGO_CRATE_VALUE * 40
var/num_contained = 3 //number of items picked to be contained in a randomised crate
contains = list(/obj/item/clothing/head/collectable/chef,
/obj/item/clothing/head/collectable/paper,
/obj/item/clothing/head/collectable/tophat,
/obj/item/clothing/head/collectable/captain,
/obj/item/clothing/head/collectable/beret,
/obj/item/clothing/head/collectable/welding,
/obj/item/clothing/head/collectable/flatcap,
/obj/item/clothing/head/collectable/pirate,
/obj/item/clothing/head/collectable/kitty,
/obj/item/clothing/head/collectable/rabbitears,
/obj/item/clothing/head/collectable/wizard,
/obj/item/clothing/head/collectable/hardhat,
/obj/item/clothing/head/collectable/hos,
/obj/item/clothing/head/collectable/hop,
/obj/item/clothing/head/collectable/thunderdome,
/obj/item/clothing/head/collectable/swat,
/obj/item/clothing/head/collectable/slime,
/obj/item/clothing/head/collectable/police,
/obj/item/clothing/head/collectable/slime,
/obj/item/clothing/head/collectable/xenom,
/obj/item/clothing/head/collectable/petehat)
crate_name = "collectable hats crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/randomised/contraband
name = "Contraband Crate"
desc = "Psst.. bud... want some contraband? I can get you a poster, some nice cigs, dank, even some sponsored items...you know, the good stuff. Just keep it away from the cops, kay?"
contraband = TRUE
cost = CARGO_CRATE_VALUE * 6
num_contained = 7
contains = list(/obj/item/poster/random_contraband,
/obj/item/poster/random_contraband,
/obj/item/food/grown/cannabis,
/obj/item/food/grown/cannabis/rainbow,
/obj/item/food/grown/cannabis/white,
/obj/item/storage/box/fireworks/dangerous,
/obj/item/storage/pill_bottle/zoom,
/obj/item/storage/pill_bottle/happy,
/obj/item/storage/pill_bottle/lsd,
/obj/item/storage/pill_bottle/aranesp,
/obj/item/storage/pill_bottle/stimulant,
/obj/item/toy/cards/deck/syndicate,
/obj/item/reagent_containers/food/drinks/bottle/absinthe,
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/storage/fancy/cigarettes/cigpack_syndicate,
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims,
/obj/item/clothing/mask/gas/syndicate,
/obj/item/clothing/neck/necklace/dope,
/obj/item/vending_refill/donksoft)
crate_name = "crate"
/datum/supply_pack/costumes_toys/foamforce
name = "Foam Force Crate"
desc = "Break out the big guns with eight Foam Force shotguns!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/gun/ballistic/shotgun/toy,
/obj/item/gun/ballistic/shotgun/toy,
/obj/item/gun/ballistic/shotgun/toy,
/obj/item/gun/ballistic/shotgun/toy,
/obj/item/gun/ballistic/shotgun/toy,
/obj/item/gun/ballistic/shotgun/toy,
/obj/item/gun/ballistic/shotgun/toy,
/obj/item/gun/ballistic/shotgun/toy)
crate_name = "foam force crate"
/datum/supply_pack/costumes_toys/foamforce/bonus
name = "Foam Force Pistols Crate"
desc = "Psst.. hey bud... remember those old foam force pistols that got discontinued for being too cool? Well I got two of those right here with your name on em. I'll even throw in a spare mag for each, waddya say?"
contraband = TRUE
cost = CARGO_CRATE_VALUE * 8
contains = list(/obj/item/gun/ballistic/automatic/pistol/toy,
/obj/item/gun/ballistic/automatic/pistol/toy,
/obj/item/ammo_box/magazine/toy/pistol,
/obj/item/ammo_box/magazine/toy/pistol)
crate_name = "foam force crate"
/datum/supply_pack/costumes_toys/formalwear
name = "Formalwear Crate"
desc = "You're gonna like the way you look, I guaranteed it. Contains an asston of fancy clothing."
cost = CARGO_CRATE_VALUE * 4 //Lots of very expensive items. You gotta pay up to look good!
contains = list(/obj/item/clothing/under/dress/blacktango,
/obj/item/clothing/under/misc/assistantformal,
/obj/item/clothing/under/misc/assistantformal,
/obj/item/clothing/under/rank/civilian/lawyer/bluesuit,
/obj/item/clothing/suit/toggle/lawyer,
/obj/item/clothing/under/rank/civilian/lawyer/purpsuit,
/obj/item/clothing/suit/toggle/lawyer/purple,
/obj/item/clothing/suit/toggle/lawyer/black,
/obj/item/clothing/accessory/waistcoat,
/obj/item/clothing/neck/tie/blue,
/obj/item/clothing/neck/tie/red,
/obj/item/clothing/neck/tie/black,
/obj/item/clothing/head/bowler,
/obj/item/clothing/head/fedora,
/obj/item/clothing/head/flatcap,
/obj/item/clothing/head/beret,
/obj/item/clothing/head/that,
/obj/item/clothing/shoes/laceup,
/obj/item/clothing/shoes/laceup,
/obj/item/clothing/shoes/laceup,
/obj/item/clothing/under/suit/charcoal,
/obj/item/clothing/under/suit/navy,
/obj/item/clothing/under/suit/burgundy,
/obj/item/clothing/under/suit/checkered,
/obj/item/clothing/under/suit/tan,
/obj/item/lipstick/random)
crate_name = "formalwear crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/clownpin
name = "Hilarious Firing Pin Crate"
desc = "I uh... I'm not really sure what this does. Wanna buy it?"
cost = CARGO_CRATE_VALUE * 10
contraband = TRUE
contains = list(/obj/item/firing_pin/clown)
crate_name = "toy crate" // It's /technically/ a toy. For the clown, at least.
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/lasertag
name = "Laser Tag Crate"
desc = "Foam Force is for boys. Laser Tag is for men. Contains three sets of red suits, blue suits, matching helmets, and matching laser tag guns."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/gun/energy/laser/redtag,
/obj/item/gun/energy/laser/redtag,
/obj/item/gun/energy/laser/redtag,
/obj/item/gun/energy/laser/bluetag,
/obj/item/gun/energy/laser/bluetag,
/obj/item/gun/energy/laser/bluetag,
/obj/item/clothing/suit/redtag,
/obj/item/clothing/suit/redtag,
/obj/item/clothing/suit/redtag,
/obj/item/clothing/suit/bluetag,
/obj/item/clothing/suit/bluetag,
/obj/item/clothing/suit/bluetag,
/obj/item/clothing/head/helmet/redtaghelm,
/obj/item/clothing/head/helmet/redtaghelm,
/obj/item/clothing/head/helmet/redtaghelm,
/obj/item/clothing/head/helmet/bluetaghelm,
/obj/item/clothing/head/helmet/bluetaghelm,
/obj/item/clothing/head/helmet/bluetaghelm)
crate_name = "laser tag crate"
/datum/supply_pack/costumes_toys/lasertag/pins
name = "Laser Tag Firing Pins Crate"
desc = "Three laser tag firing pins used in laser-tag units to ensure users are wearing their vests."
cost = CARGO_CRATE_VALUE * 3.5
contraband = TRUE
contains = list(/obj/item/storage/box/lasertagpins)
crate_name = "laser tag crate"
/datum/supply_pack/costumes_toys/mech_suits
name = "Mech Pilot's Suit Crate"
desc = "Suits for piloting big robots. Contains four of those!"
cost = CARGO_CRATE_VALUE * 3 //state-of-the-art technology doesn't come cheap
contains = list(/obj/item/clothing/under/costume/mech_suit,
/obj/item/clothing/under/costume/mech_suit,
/obj/item/clothing/under/costume/mech_suit,
/obj/item/clothing/under/costume/mech_suit)
crate_name = "mech pilot's suit crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/costume_original
name = "Original Costume Crate"
desc = "Reenact Shakespearean plays with this assortment of outfits. Contains eight different costumes!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/clothing/head/snowman,
/obj/item/clothing/suit/snowman,
/obj/item/clothing/head/chicken,
/obj/item/clothing/suit/chickensuit,
/obj/item/clothing/mask/gas/monkeymask,
/obj/item/clothing/suit/monkeysuit,
/obj/item/clothing/head/cardborg,
/obj/item/clothing/suit/cardborg,
/obj/item/clothing/head/xenos,
/obj/item/clothing/suit/xenos,
/obj/item/clothing/suit/hooded/ian_costume,
/obj/item/clothing/suit/hooded/carp_costume,
/obj/item/clothing/suit/hooded/bee_costume)
crate_name = "original costume crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/costume
name = "Standard Costume Crate"
desc = "Supply the station's entertainers with the equipment of their trade with these Nanotrasen-approved costumes! Contains a full clown and mime outfit, along with a bike horn and a bottle of nothing."
cost = CARGO_CRATE_VALUE * 2
access = ACCESS_THEATRE
contains = list(/obj/item/storage/backpack/clown,
/obj/item/clothing/shoes/clown_shoes,
/obj/item/clothing/mask/gas/clown_hat,
/obj/item/clothing/under/rank/civilian/clown,
/obj/item/bikehorn,
/obj/item/clothing/under/rank/civilian/mime,
/obj/item/clothing/shoes/sneakers/black,
/obj/item/clothing/gloves/color/white,
/obj/item/clothing/mask/gas/mime,
/obj/item/clothing/head/frenchberet,
/obj/item/clothing/suit/toggle/suspenders,
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing,
/obj/item/storage/backpack/mime)
crate_name = "standard costume crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/randomised/toys
name = "Toy Crate"
desc = "Who cares about pride and accomplishment? Skip the gaming and get straight to the sweet rewards with this product! Contains five random toys. Warranty void if used to prank research directors."
cost = CARGO_CRATE_VALUE * 8 // or play the arcade machines ya lazy bum
num_contained = 5
contains = list()
crate_name = "toy crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/randomised/toys/fill(obj/structure/closet/crate/C)
var/the_toy
for(var/i in 1 to num_contained)
if(prob(50))
the_toy = pick_weight(GLOB.arcade_prize_pool)
else
the_toy = pick(subtypesof(/obj/item/toy/plush))
new the_toy(C)
/datum/supply_pack/costumes_toys/wizard
name = "Wizard Costume Crate"
desc = "Pretend to join the Wizard Federation with this full wizard outfit! Nanotrasen would like to remind its employees that actually joining the Wizard Federation is subject to termination of job and life."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/staff,
/obj/item/clothing/suit/wizrobe/fake,
/obj/item/clothing/shoes/sandal,
/obj/item/clothing/head/wizard/fake)
crate_name = "wizard costume crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
var/list/L = contains.Copy()
for(var/i in 1 to num_contained)
var/item = pick_n_take(L)
new item(C)
/datum/supply_pack/costumes_toys/mafia
name = "Cosa Nostra Starter Pack"
desc = "This crate contains everything you need to set up your own ethnicity-based racketeering operation."
cost = CARGO_CRATE_VALUE * 4
contains = list()
contraband = TRUE
/datum/supply_pack/costumes_toys/mafia/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 4)
new /obj/effect/spawner/random/clothing/mafia_outfit(C)
new /obj/item/virgin_mary(C)
if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying.
new /obj/item/clothing/mask/fakemoustache/italian(C)
if(prob(10)) //A little extra sugar every now and then to shake things up.
new /obj/item/switchblade(C)
/datum/supply_pack/costumes_toys/randomised/tcg
name = "Big-Ass Booster Pack Pack"
desc = "A bumper load of NT TCG Booster Packs of varying series. Collect them all!"
cost = 1000
contains = list()
crate_name = "booster pack pack"
/datum/supply_pack/costumes_toys/randomised/tcg/fill(obj/structure/closet/crate/C)
var/cardpacktype
for(var/i in 1 to 10)
cardpacktype = pick(subtypesof(/obj/item/cardpack))
new cardpacktype(C)
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Miscellaneous ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/misc
group = "Miscellaneous Supplies"
/datum/supply_pack/misc/artsupply
name = "Art Supplies"
desc = "Make some happy little accidents with a rapid pipe cleaner layer, three spraycans, and lots of crayons!"
cost = CARGO_CRATE_VALUE * 1.8
contains = list(/obj/item/rcl,
/obj/item/storage/toolbox/artistic,
/obj/item/toy/crayon/spraycan,
/obj/item/toy/crayon/spraycan,
/obj/item/toy/crayon/spraycan,
/obj/item/storage/crayons,
/obj/item/toy/crayon/white,
/obj/item/toy/crayon/rainbow)
crate_name = "art supply crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/misc
group = "Miscellaneous Supplies"
/datum/supply_pack/misc/tattoo_kit
name = "Tattoo Kit"
desc = "A tattoo kit with some extra starting ink."
cost = CARGO_CRATE_VALUE * 1.8
contains = list(
/obj/item/tattoo_kit,
/obj/item/toner,
/obj/item/toner,
)
crate_name = "tattoo crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/misc/aquarium_kit
name = "Aquarium Kit"
desc = "Everything you need to start your own aquarium. Contains aquarium construction kit, fish catalog, feed can and three freshwater fish from our collection."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/book/fish_catalog,
/obj/item/storage/fish_case/random/freshwater,
/obj/item/storage/fish_case/random/freshwater,
/obj/item/storage/fish_case/random/freshwater,
/obj/item/fish_feed,
/obj/item/storage/box/aquarium_props,
/obj/item/aquarium_kit)
crate_name = "aquarium kit crate"
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/misc/aquarium_fish
name = "Aquarium Fish Case"
desc = "An aquarium fish bundle handpicked by monkeys from our collection."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/storage/fish_case/random,
/obj/item/storage/fish_case/random,
/obj/item/storage/fish_case/random)
crate_name = "aquarium fish crate"
/datum/supply_pack/misc/freshwater_fish
name = "Freshwater Fish Case"
desc = "Aquarium fish that have had most of their mud cleaned off."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/storage/fish_case/random/freshwater,
/obj/item/storage/fish_case/random/freshwater)
crate_name = "freshwater fish crate"
/datum/supply_pack/misc/saltwater_fish
name = "Saltwater Fish Case"
desc = "Aquarium fish that fill the room with the smell of salt."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/storage/fish_case/random/saltwater,
/obj/item/storage/fish_case/random/saltwater)
crate_name = "saltwater fish crate"
/datum/supply_pack/misc/tiziran_fish
name = "Tirizan Fish Case"
desc = "Tiziran saltwater fish imported from the Zagos Sea."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/storage/fish_case/tiziran,
/obj/item/storage/fish_case/tiziran)
crate_name = "tiziran fish crate"
/datum/supply_pack/misc/bicycle
name = "Bicycle"
desc = "Nanotrasen reminds all employees to never toy with powers outside their control."
cost = 1000000 //Special case, we don't want to make this in terms of crates because having bikes be a million credits is the whole meme.
contains = list(/obj/vehicle/ridden/bicycle)
crate_name = "bicycle crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/misc/bigband
name = "Big Band Instrument Collection"
desc = "Get your sad station movin' and groovin' with this fine collection! Contains nine different instruments!"
cost = CARGO_CRATE_VALUE * 10
crate_name = "Big band musical instruments collection"
contains = list(/obj/item/instrument/violin,
/obj/item/instrument/guitar,
/obj/item/instrument/glockenspiel,
/obj/item/instrument/accordion,
/obj/item/instrument/saxophone,
/obj/item/instrument/trombone,
/obj/item/instrument/recorder,
/obj/item/instrument/harmonica,
/obj/structure/musician/piano/unanchored)
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/misc/book_crate
name = "Book Crate"
desc = "Surplus from the Nanotrasen Archives, these seven books are sure to be good reads."
cost = CARGO_CRATE_VALUE * 3
access_view = ACCESS_LIBRARY
contains = list(/obj/item/book/codex_gigas,
/obj/item/book/manual/random/,
/obj/item/book/manual/random/,
/obj/item/book/manual/random/,
/obj/item/book/random,
/obj/item/book/random,
/obj/item/book/random)
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/misc/commandkeys
name = "Command Encryption Key Crate"
desc = "A pack of encryption keys that give access to the command radio network. Nanotrasen reminds unauthorized employees not to eavesdrop in on secure communications channels, or at least to keep heckling of the command staff to a minimum."
access_view = ACCESS_HEADS
access = ACCESS_HEADS
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/encryptionkey/headset_com,
/obj/item/encryptionkey/headset_com,
/obj/item/encryptionkey/headset_com)
crate_type = /obj/structure/closet/crate/secure
crate_name = "command encryption key crate"
/datum/supply_pack/misc/exploration_drone
name = "Exploration Drone"
desc = "A replacement long-range exploration drone."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/exodrone)
crate_name = "exodrone crate"
/datum/supply_pack/misc/exploration_fuel
name = "Drone Fuel Pellet"
desc = "A fresh tank of exploration drone fuel."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/fuel_pellet)
crate_name = "exodrone fuel crate"
/datum/supply_pack/misc/paper
name = "Bureaucracy Crate"
desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureaucratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, a carbon paper bin, three folders, a laser pointer, two clipboards and two stamps."//that was too forced
cost = CARGO_CRATE_VALUE * 3.2
contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled,
/obj/item/camera_film,
/obj/item/hand_labeler,
/obj/item/hand_labeler_refill,
/obj/item/hand_labeler_refill,
/obj/item/paper_bin,
/obj/item/paper_bin/carbon,
/obj/item/pen/fourcolor,
/obj/item/pen/fourcolor,
/obj/item/pen,
/obj/item/pen/fountain,
/obj/item/pen/blue,
/obj/item/pen/red,
/obj/item/folder/blue,
/obj/item/folder/red,
/obj/item/folder/yellow,
/obj/item/clipboard,
/obj/item/clipboard,
/obj/item/stamp,
/obj/item/stamp/denied,
/obj/item/laser_pointer/purple)
crate_name = "bureaucracy crate"
/datum/supply_pack/misc/fountainpens
name = "Calligraphy Crate"
desc = "Sign death warrants in style with these seven executive fountain pens."
cost = CARGO_CRATE_VALUE * 1.45
contains = list(/obj/item/storage/box/fountainpens)
crate_type = /obj/structure/closet/crate/wooden
crate_name = "calligraphy crate"
/datum/supply_pack/misc/wrapping_paper
name = "Festive Wrapping Paper Crate"
desc = "Want to mail your loved ones gift-wrapped chocolates, stuffed animals, the Clown's severed head? You can do all that, with this crate full of wrapping paper."
cost = CARGO_CRATE_VALUE * 1.8
contains = list(/obj/item/stack/wrapping_paper)
crate_type = /obj/structure/closet/crate/wooden
crate_name = "festive wrapping paper crate"
/datum/supply_pack/misc/funeral
name = "Funeral Supply crate"
desc = "At the end of the day, someone's gonna want someone dead. Give them a proper send-off with these funeral supplies! Contains a coffin with burial garmets and flowers."
cost = CARGO_CRATE_VALUE * 1.6
access_view = ACCESS_CHAPEL_OFFICE
contains = list(/obj/item/clothing/under/misc/burial,
/obj/item/food/grown/harebell,
/obj/item/food/grown/poppy/geranium)
crate_name = "coffin"
crate_type = /obj/structure/closet/crate/coffin
/datum/supply_pack/misc/empty
name = "Empty Supplypod"
desc = "Presenting the New Nanotrasen-Brand Bluespace Supplypod! Transport cargo with grace and ease! Call today and we'll shoot over a demo unit for just 300 credits!"
cost = CARGO_CRATE_VALUE * 0.6 //Empty pod, so no crate refund
contains = list()
DropPodOnly = TRUE
crate_type = null
special_pod = /obj/structure/closet/supplypod/bluespacepod
/datum/supply_pack/misc/religious_supplies
name = "Religious Supplies Crate"
desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets."
cost = CARGO_CRATE_VALUE * 6 // it costs so much because the Space Church needs funding to build a cathedral
access_view = ACCESS_CHAPEL_OFFICE
contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater,
/obj/item/reagent_containers/food/drinks/bottle/holywater,
/obj/item/storage/book/bible/booze,
/obj/item/storage/book/bible/booze,
/obj/item/clothing/suit/hooded/chaplain_hoodie,
/obj/item/clothing/suit/hooded/chaplain_hoodie,
/obj/item/clothing/under/misc/burial,
/obj/item/clothing/under/misc/burial,
)
crate_name = "religious supplies crate"
/datum/supply_pack/misc/toner
name = "Toner Crate"
desc = "Spent too much ink printing butt pictures? Fret not, with these six toner refills, you'll be printing butts 'till the cows come home!'"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/toner,
/obj/item/toner,
/obj/item/toner,
/obj/item/toner,
/obj/item/toner,
/obj/item/toner)
crate_name = "toner crate"
/datum/supply_pack/misc/toner_large
name = "Toner Crate (Large)"
desc = "Tired of changing toner cartridges? These six extra heavy duty refills contain roughly five times as much toner as the base model!"
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/toner/large,
/obj/item/toner/large,
/obj/item/toner/large,
/obj/item/toner/large,
/obj/item/toner/large,
/obj/item/toner/large)
crate_name = "large toner crate"
/datum/supply_pack/misc/training_toolbox
name = "Training Toolbox Crate"
desc = "Hone your combat abiltities with two AURUMILL-Brand Training Toolboxes! Guarenteed to count hits made against living beings!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/training_toolbox,
/obj/item/training_toolbox
)
crate_name = "training toolbox crate"
/datum/supply_pack/misc/blackmarket_telepad
name = "Black Market LTSRBT"
desc = "Need a faster and better way of transporting your illegal goods from and to the station? Fear not, the Long-To-Short-Range-Bluespace-Transceiver (LTSRBT for short) is here to help. Contains a LTSRBT circuit, two bluespace crystals, and one ansible."
cost = CARGO_CRATE_VALUE * 20
contraband = TRUE
contains = list(
/obj/item/circuitboard/machine/ltsrbt,
/obj/item/stack/ore/bluespace_crystal/artificial,
/obj/item/stack/ore/bluespace_crystal/artificial,
/obj/item/stock_parts/subspace/ansible
)
crate_name = "crate"
///Special supply crate that generates random syndicate gear up to a determined TC value
/datum/supply_pack/misc/syndicate
name = "Assorted Syndicate Gear"
desc = "Contains a random assortment of syndicate gear."
special = TRUE ///Cannot be ordered via cargo
contains = list()
crate_name = "syndicate gear crate"
crate_type = /obj/structure/closet/crate
var/crate_value = 30 ///Total TC worth of contained uplink items
var/uplink_flag = UPLINK_TRAITORS
///Generate assorted uplink items, taking into account the same surplus modifiers used for surplus crates
/datum/supply_pack/misc/syndicate/fill(obj/structure/closet/crate/C)
var/list/uplink_items = list()
for(var/datum/uplink_item/item_path as anything in SStraitor.uplink_items_by_type)
var/datum/uplink_item/item = SStraitor.uplink_items_by_type[item_path]
if(item.purchasable_from & UPLINK_TRAITORS && item.item)
uplink_items += item
while(crate_value)
var/datum/uplink_item/uplink_item = pick(uplink_items)
if(!uplink_item.surplus || prob(100 - uplink_item.surplus))
continue
if(crate_value < uplink_item.cost)
continue
crate_value -= uplink_item.cost
new uplink_item.item(C)
//////////////////////////////////////////////////////////////////////////////
/////////////////////// General Vending Restocks /////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/vending
group = "Vending Restocks"
/datum/supply_pack/vending/bartending
name = "Booze-o-mat and Coffee Supply Crate"
desc = "Bring on the booze and coffee vending machine refills."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/vending_refill/boozeomat,
/obj/item/vending_refill/coffee)
crate_name = "bartending supply crate"
/datum/supply_pack/vending/cigarette
name = "Cigarette Supply Crate"
desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/cigarette)
crate_name = "cigarette supply crate"
crate_type = /obj/structure/closet/crate
/datum/supply_pack/vending/dinnerware
name = "Dinnerware Supply Crate"
desc = "More knives for the chef."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/vending_refill/dinnerware)
crate_name = "dinnerware supply crate"
/datum/supply_pack/vending/science/modularpc
name = "Deluxe Silicate Selections Restock"
desc = "What's a computer? Contains a Deluxe Silicate Selections restocking unit."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/modularpc)
crate_name = "computer supply crate"
/datum/supply_pack/vending/engivend
name = "EngiVend Supply Crate"
desc = "The engineers are out of metal foam grenades? This should help."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/engivend)
crate_name = "engineering supply crate"
/datum/supply_pack/vending/games
name = "Games Supply Crate"
desc = "Get your game on with this game vending machine refill."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/vending_refill/games)
crate_name = "games supply crate"
crate_type = /obj/structure/closet/crate
/datum/supply_pack/vending/hydro_refills
name = "Hydroponics Vending Machines Refills"
desc = "When the clown takes all the banana seeds. Contains a NutriMax refill and a MegaSeed Servitor refill."
cost = CARGO_CRATE_VALUE * 4
crate_type = /obj/structure/closet/crate
contains = list(/obj/item/vending_refill/hydroseeds,
/obj/item/vending_refill/hydronutrients)
crate_name = "hydroponics supply crate"
/datum/supply_pack/vending/imported
name = "Imported Vending Machines"
desc = "Vending machines famous in other parts of the galaxy."
cost = CARGO_CRATE_VALUE * 8
contains = list(/obj/item/vending_refill/sustenance,
/obj/item/vending_refill/robotics,
/obj/item/vending_refill/sovietsoda,
/obj/item/vending_refill/engineering)
crate_name = "unlabeled supply crate"
/datum/supply_pack/vending/medical
name = "Medical Vending Crate"
desc = "Contains one NanoMed Plus refill, one NanoDrug Plus refill, and one wall-mounted NanoMed refill."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/vending_refill/medical,
/obj/item/vending_refill/drugs,
/obj/item/vending_refill/wallmed)
crate_name = "medical vending crate"
/datum/supply_pack/vending/ptech
name = "PTech Supply Crate"
desc = "Not enough cartridges after half the crew lost their PDA to explosions? This may fix it."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/cart)
crate_name = "\improper PTech supply crate"
/datum/supply_pack/vending/sectech
name = "SecTech Supply Crate"
desc = "Officer Paul bought all the donuts? Then refill the security vendor with ths crate."
cost = CARGO_CRATE_VALUE * 3
access = ACCESS_SECURITY
contains = list(/obj/item/vending_refill/security)
crate_name = "\improper SecTech supply crate"
crate_type = /obj/structure/closet/crate/secure/gear
/datum/supply_pack/vending/snack
name = "Snack Supply Crate"
desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!"
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/snack)
crate_name = "snacks supply crate"
/datum/supply_pack/vending/cola
name = "Softdrinks Supply Crate"
desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with this soda machine refill, today!"
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/cola)
crate_name = "soft drinks supply crate"
/datum/supply_pack/vending/vendomat
name = "Part-Mart & YouTool Supply Crate"
desc = "More tools for your IED testing facility."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/vending_refill/assist,
/obj/item/vending_refill/youtool)
crate_name = "\improper Part-Mart & YouTool supply crate"
/datum/supply_pack/vending/clothesmate
name = "ClothesMate Supply Crate"
desc = "Out of cowboy boots? Buy this crate."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/item/vending_refill/clothing)
crate_name = "\improper ClothesMate supply crate"
//////////////////////////////////////////////////////////////////////////////
/////////////////////// Clothing Vending Restocks ////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/vending/wardrobes/autodrobe
name = "Autodrobe Supply Crate"
desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/autodrobe)
crate_name = "autodrobe supply crate"
/datum/supply_pack/vending/wardrobes/cargo
name = "Cargo Wardrobe Supply Crate"
desc = "This crate contains a refill for the CargoDrobe."
cost = CARGO_CRATE_VALUE * 1.5
contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe)
crate_name = "cargo department supply crate"
/datum/supply_pack/vending/wardrobes/engineering
name = "Engineering Wardrobe Supply Crate"
desc = "This crate contains refills for the EngiDrobe and AtmosDrobe."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/wardrobe/engi_wardrobe,
/obj/item/vending_refill/wardrobe/atmos_wardrobe)
crate_name = "engineering department wardrobe supply crate"
/datum/supply_pack/vending/wardrobes/general
name = "General Wardrobes Supply Crate"
desc = "This crate contains refills for the CuraDrobe, BarDrobe, ChefDrobe, JaniDrobe, ChapDrobe."
cost = CARGO_CRATE_VALUE * 7.5
contains = list(/obj/item/vending_refill/wardrobe/curator_wardrobe,
/obj/item/vending_refill/wardrobe/bar_wardrobe,
/obj/item/vending_refill/wardrobe/chef_wardrobe,
/obj/item/vending_refill/wardrobe/jani_wardrobe,
/obj/item/vending_refill/wardrobe/chap_wardrobe)
crate_name = "general wardrobes vendor refills"
/datum/supply_pack/vending/wardrobes/hydroponics
name = "Hydrobe Supply Crate"
desc = "This crate contains a refill for the Hydrobe."
cost = CARGO_CRATE_VALUE * 1.5
contains = list(/obj/item/vending_refill/wardrobe/hydro_wardrobe)
crate_name = "hydrobe supply crate"
/datum/supply_pack/vending/wardrobes/medical
name = "Medical Wardrobe Supply Crate"
desc = "This crate contains refills for the MediDrobe, ChemDrobe, and ViroDrobe."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe,
/obj/item/vending_refill/wardrobe/chem_wardrobe,
/obj/item/vending_refill/wardrobe/viro_wardrobe)
crate_name = "medical department wardrobe supply crate"
/datum/supply_pack/vending/wardrobes/science
name = "Science Wardrobe Supply Crate"
desc = "This crate contains refills for the SciDrobe, GeneDrobe, and RoboDrobe."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe,
/obj/item/vending_refill/wardrobe/gene_wardrobe,
/obj/item/vending_refill/wardrobe/science_wardrobe)
crate_name = "science department wardrobe supply crate"
/datum/supply_pack/vending/wardrobes/security
name = "Security Wardrobe Supply Crate"
desc = "This crate contains refills for the SecDrobe, DetDrobe and LawDrobe."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe,
/obj/item/vending_refill/wardrobe/det_wardrobe,
/obj/item/vending_refill/wardrobe/law_wardrobe)
crate_name = "security department supply crate"
/// Exploration drone unlockables ///
/datum/supply_pack/exploration
special = TRUE
group = "Outsourced"
/datum/supply_pack/exploration/scrapyard
name = "Scrapyard Crate"
desc = "Outsourced crate containing various junk."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/relic,
/obj/item/broken_bottle,
/obj/item/pickaxe/rusted)
crate_name = "scrapyard crate"
/datum/supply_pack/exploration/catering
name = "Catering Crate"
desc = "No cook? No problem! Food quality may vary depending on provider."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/food/sandwich,
/obj/item/food/sandwich,
/obj/item/food/sandwich,
/obj/item/food/sandwich,
/obj/item/food/sandwich)
crate_name = "outsourced food crate"
/datum/supply_pack/exploration/catering/fill(obj/structure/closet/crate/C)
. = ..()
if(prob(30))
for(var/obj/item/food/F in C)
F.name = "spoiled [F.name]"
F.foodtypes |= GROSS
F.MakeEdible()
/datum/supply_pack/exploration/shrubbery
name = "Shrubbery Crate"
desc = "Crate full of hedge shrubs."
cost = CARGO_CRATE_VALUE * 5
crate_name = "shrubbery crate"
var/shrub_amount = 8
/datum/supply_pack/exploration/shrubbery/fill(obj/structure/closet/crate/C)
for(var/i in 1 to shrub_amount)
new /obj/item/grown/shrub(C)