/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/skull)//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" /* SKYRAT EDIT: Moved to Bloat.dm name = "Armor 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" /* - SKYRAT EDIT REMOVAL - SEC_HUAL /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/beret/sec/navywarden, /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/riotshotguns //SKYRAT EDIT ADDITION /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/mafia //SKYRAT EDIT ADDITION /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= "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 = "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/machine/bsa/powercore, //SKYRAT EDIT ADDITION /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_SEC_DOORS 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/firstaid/regular, /obj/item/storage/firstaid/o2, /obj/item/storage/firstaid/toxin, /obj/item/storage/firstaid/brute, /obj/item/storage/firstaid/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_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/firstaid, /obj/item/storage/firstaid, /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/techshellpack //SKYRAT EDIT ADDITION /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 = "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 \[DATA EXPUNGED\] and is to be \ considered \[REDACTED\] 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 all three colors!" 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/white, /obj/item/clothing/under/costume/mech_suit/blue) 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)) // SKYRAT EDIT -- Original the_toy = pick(subtypesof(/obj/item/toy/plush) - typesof(/obj/item/toy/plush/donator)) // SKYRAT EDIT -- No more donator plushies in toy crates 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 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) crate_name = "aquarium fish crate" /* - SKYRAT EDIT: rest tight bikey /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/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) 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 = "ptech supply crate" /* - SKYRAT EDIT REMOVAL - SEC_HAUL - MOVED TO PACKS.DM /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 = "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 = "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 = "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" /* - SKYRAT EDIT REMOVAL - SEC_HAUL - MOVED TO PACKS.DM /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)