From 2983dfa44596cfa1dbabb1813482a5ae5fea66f8 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 17 Oct 2019 13:09:55 -0700 Subject: [PATCH 1/8] Merge pull request #9211 from Trilbyspaceclone/Cargo_rebalance [Atomic] Cargo rework - Mat selling nerf, addtion of grater gear to sell MK I --- code/modules/cargo/bounties/assistant.dm | 40 +- code/modules/cargo/bounties/botany.dm | 4 +- code/modules/cargo/bounties/chef.dm | 32 +- code/modules/cargo/bounties/engineering.dm | 18 +- code/modules/cargo/bounties/medical.dm | 22 +- code/modules/cargo/bounties/mining.dm | 18 +- code/modules/cargo/bounties/reagent.dm | 4 +- code/modules/cargo/bounties/science.dm | 36 +- code/modules/cargo/bounties/security.dm | 18 +- code/modules/cargo/bounties/slime.dm | 4 +- code/modules/cargo/bounties/special.dm | 10 +- code/modules/cargo/bounties/virus.dm | 4 +- code/modules/cargo/exports.dm | 12 +- code/modules/cargo/exports/gear.dm | 785 +++- code/modules/cargo/exports/large_objects.dm | 180 +- code/modules/cargo/exports/materials.dm | 28 +- code/modules/cargo/exports/organs_robotics.dm | 141 + code/modules/cargo/exports/parts.dm | 86 +- code/modules/cargo/exports/sheets.dm | 68 +- code/modules/cargo/exports/tools.dm | 102 +- code/modules/cargo/exports/weapons.dm | 299 +- code/modules/cargo/packs.dm | 3293 ----------------- code/modules/cargo/packs/armory.dm | 244 ++ code/modules/cargo/packs/costumes_toys.dm | 371 ++ code/modules/cargo/packs/emergency.dm | 324 ++ code/modules/cargo/packs/engine.dm | 185 + code/modules/cargo/packs/engineering.dm | 215 ++ code/modules/cargo/packs/livestock.dm | 166 + code/modules/cargo/packs/materials.dm | 170 + code/modules/cargo/packs/medical.dm | 238 ++ code/modules/cargo/packs/misc.dm | 374 ++ code/modules/cargo/packs/organic.dm | 360 ++ code/modules/cargo/packs/science.dm | 168 + code/modules/cargo/packs/security.dm | 192 + code/modules/cargo/packs/service.dm | 339 ++ tgstation.dme | 14 + 36 files changed, 5050 insertions(+), 3514 deletions(-) create mode 100644 code/modules/cargo/exports/organs_robotics.dm create mode 100644 code/modules/cargo/packs/armory.dm create mode 100644 code/modules/cargo/packs/costumes_toys.dm create mode 100644 code/modules/cargo/packs/emergency.dm create mode 100644 code/modules/cargo/packs/engine.dm create mode 100644 code/modules/cargo/packs/engineering.dm create mode 100644 code/modules/cargo/packs/livestock.dm create mode 100644 code/modules/cargo/packs/materials.dm create mode 100644 code/modules/cargo/packs/medical.dm create mode 100644 code/modules/cargo/packs/misc.dm create mode 100644 code/modules/cargo/packs/organic.dm create mode 100644 code/modules/cargo/packs/science.dm create mode 100644 code/modules/cargo/packs/security.dm create mode 100644 code/modules/cargo/packs/service.dm diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 6d85973f..493ac4ac 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -1,46 +1,46 @@ /datum/bounty/item/assistant/strange_object name = "Strange Object" description = "Kinaris has taken an interest in strange objects. Find one in maint, and ship it off to CentCom right away." - reward = 1200 + reward = 600 wanted_types = list(/obj/item/relic) /datum/bounty/item/assistant/scooter name = "Scooter" description = "Kinaris has determined walking to be wasteful. Ship a scooter to CentCom to speed operations up." - reward = 1080 // the mat hoffman + reward = 850 // the mat hoffman wanted_types = list(/obj/vehicle/ridden/scooter) include_subtypes = FALSE /datum/bounty/item/assistant/skateboard name = "Skateboard" description = "Kinaris has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up." - reward = 900 // the tony hawk + reward = 700 // the tony hawk wanted_types = list(/obj/vehicle/ridden/scooter/skateboard) /datum/bounty/item/assistant/stunprod name = "Stunprod" description = "CentCom demands a stunprod to use against dissidents. Craft one, then ship it." - reward = 1300 + reward = 800 wanted_types = list(/obj/item/melee/baton/cattleprod) /datum/bounty/item/assistant/soap name = "Soap" description = "Soap has gone missing from CentCom's bathrooms and nobody knows who took it. Replace it and be the hero CentCom needs." - reward = 2000 + reward = 1000 required_count = 3 wanted_types = list(/obj/item/soap) /datum/bounty/item/assistant/spear name = "Spears" description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears." - reward = 2000 + reward = 1000 required_count = 5 wanted_types = list(/obj/item/twohanded/spear) /datum/bounty/item/assistant/toolbox name = "Toolboxes" description = "There's an absence of robustness at Central Command. Hurry up and ship some toolboxes as a solution." - reward = 2000 + reward = 1000 required_count = 6 wanted_types = list(/obj/item/storage/toolbox) @@ -53,81 +53,81 @@ /datum/bounty/item/assistant/clown_box name = "Clown Box" description = "The universe needs laughter. Stamp cardboard with a clown stamp and ship it out." - reward = 1500 + reward = 750 wanted_types = list(/obj/item/storage/box/clown) /datum/bounty/item/assistant/cheesiehonkers name = "Cheesie Honkers" description = "Apparently the company that makes Cheesie Honkers is going out of business soon. CentCom wants to stock up before it happens!" - reward = 1200 + reward = 1000 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/cheesiehonkers) /datum/bounty/item/assistant/baseball_bat name = "Baseball Bat" description = "Baseball fever is going on at CentCom! Be a dear and ship them some baseball bats, so that management can live out their childhood dream." - reward = 2000 + reward = 1000 required_count = 5 wanted_types = list(/obj/item/melee/baseball_bat) /datum/bounty/item/assistant/extendohand name = "Extendo-Hand" description = "Commander Betsy is getting old, and can't bend over to get the telescreen remote anymore. Management has requested an extendo-hand to help her out." - reward = 2500 + reward = 1250 wanted_types = list(/obj/item/extendohand) /datum/bounty/item/assistant/donut name = "Donuts" description = "CentCom's security forces are facing heavy losses against the Syndicate. Ship donuts to raise morale." - reward = 3000 + reward = 2000 required_count = 10 wanted_types = list(/obj/item/reagent_containers/food/snacks/donut) /datum/bounty/item/assistant/donkpocket name = "Donk-Pockets" description = "Consumer safety recall: Warning. Donk-Pockets manufactured in the past year contain hazardous lizard biomatter. Return units to CentCom immediately." - reward = 3000 + reward = 1000 required_count = 10 wanted_types = list(/obj/item/reagent_containers/food/snacks/donkpocket) /datum/bounty/item/assistant/briefcase name = "Briefcase" description = "Central Command will be holding a business convention this year. Ship a few briefcases in support." - reward = 2500 + reward = 1500 required_count = 5 wanted_types = list(/obj/item/storage/briefcase, /obj/item/storage/secure/briefcase) /datum/bounty/item/assistant/sunglasses name = "Sunglasses" description = "A famous blues duo is passing through the sector, but they've lost their shades and they can't perform. Ship new sunglasses to CentCom to rectify this." - reward = 3000 + reward = 1000 required_count = 2 wanted_types = list(/obj/item/clothing/glasses/sunglasses) /datum/bounty/item/assistant/monkey_hide name = "Monkey Hide" description = "One of the scientists at CentCom is interested in testing products on monkey skin. Your mission is to acquire monkey's hide and ship it." - reward = 1500 + reward = 500 wanted_types = list(/obj/item/stack/sheet/animalhide/monkey) /datum/bounty/item/assistant/shard name = "Shards" description = "A killer clown has been stalking CentCom, and staff have been unable to catch her because she's not wearing shoes. Please ship some shards so that a booby trap can be constructed." - reward = 1500 + reward = 500 required_count = 15 wanted_types = list(/obj/item/shard) /datum/bounty/item/assistant/comfy_chair name = "Comfy Chairs" description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him." - reward = 1500 + reward = 900 required_count = 5 wanted_types = list(/obj/structure/chair/comfy) /datum/bounty/item/assistant/geranium name = "Geraniums" description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you." - reward = 4000 + reward = 1000 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium) @@ -142,7 +142,7 @@ /datum/bounty/item/assistant/shadyjims name = "Shady Jim's" description = "There's an irate officer at CentCom demanding that he receive a box of Shady Jim's cigarettes. Please ship one. He's starting to make threats." - reward = 500 + reward = 750 wanted_types = list(/obj/item/storage/fancy/cigarettes/cigpack_shadyjims) /datum/bounty/item/assistant/potted_plants diff --git a/code/modules/cargo/bounties/botany.dm b/code/modules/cargo/bounties/botany.dm index 34906b32..754de480 100644 --- a/code/modules/cargo/bounties/botany.dm +++ b/code/modules/cargo/bounties/botany.dm @@ -1,5 +1,5 @@ /datum/bounty/item/botany - reward = 5000 + reward = 1200 var/datum/bounty/item/botany/multiplier = 0 //adds bonus reward money; increased for higher tier or rare mutations var/datum/bounty/item/botany/bonus_desc //for adding extra flavor text to bounty descriptions var/datum/bounty/item/botany/foodtype = "meal" //same here @@ -64,7 +64,7 @@ multiplier = 4 //hush money bonus_desc = "Do not mention this shipment to security." foodtype = "\"meal\"" - + /datum/bounty/item/botany/cannabis_white name = "Lifeweed Leaves" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white) diff --git a/code/modules/cargo/bounties/chef.dm b/code/modules/cargo/bounties/chef.dm index 50da3c67..bd5e3371 100644 --- a/code/modules/cargo/bounties/chef.dm +++ b/code/modules/cargo/bounties/chef.dm @@ -1,34 +1,34 @@ /datum/bounty/item/chef/birthday_cake name = "Birthday Cake" description = "Winfre's birthday is coming up! Ship them a birthday cake to celebrate!" - reward = 4000 + reward = 1000 wanted_types = list(/obj/item/reagent_containers/food/snacks/store/cake/birthday, /obj/item/reagent_containers/food/snacks/cakeslice/birthday) /datum/bounty/item/chef/soup name = "Soup" description = "To quell the homeless uprising, Kinaris will be serving soup to all underpaid workers. Ship any type of soup." - reward = 3000 + reward = 700 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/soup) /datum/bounty/item/chef/popcorn name = "Popcorn Bags" description = "Upper management wants to host a movie night. Ship bags of popcorn for the occasion." - reward = 3000 + reward = 800 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/popcorn) /datum/bounty/item/chef/onionrings name = "Onion Rings" description = "Kinaris.co is remembering Saturn day. Ship onion rings to show the station's support." - reward = 3000 + reward = 800 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/onionrings) /datum/bounty/item/chef/icecreamsandwich name = "Ice Cream Sandwiches" description = "Upper management has been screaming non-stop for ice cream. Please send some." - reward = 4000 + reward = 800 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/icecreamsandwich) @@ -47,21 +47,21 @@ /datum/bounty/item/chef/salad name = "Salad or Rice Bowls" description = "CentCom management is going on a health binge. Your order is to ship salad or rice bowls." - reward = 3000 + reward = 1200 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/salad) /datum/bounty/item/chef/carrotfries name = "Carrot Fries" description = "Night sight can mean life or death! A shipment of carrot fries is the order." - reward = 3500 + reward = 1300 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/carrotfries) /datum/bounty/item/chef/superbite name = "Super Bite Burger" description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him." - reward = 12000 + reward = 1800 wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite) /datum/bounty/item/chef/poppypretzel @@ -73,19 +73,19 @@ /datum/bounty/item/chef/cubancarp name = "Cuban Carp" description = "To celebrate the birth of Castro XXVII, ship one cuban carp to CentCom." - reward = 8000 + reward = 3000 wanted_types = list(/obj/item/reagent_containers/food/snacks/cubancarp) /datum/bounty/item/chef/hotdog name = "Hot Dog" description = "Kinaris.co is conducting taste tests to determine the best hot dog recipe. Ship your station's version to participate." - reward = 8000 + reward = 4000 wanted_types = list(/obj/item/reagent_containers/food/snacks/hotdog) /datum/bounty/item/chef/eggplantparm name = "Eggplant Parmigianas" description = "A famous singer will be arriving at CentCom, and their contract demands that they only be served Eggplant Parmigiana. Ship some, please!" - reward = 3500 + reward = 2500 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/eggplantparm) @@ -99,33 +99,33 @@ /datum/bounty/item/chef/chawanmushi name = "Chawanmushi" description = "Kinaris.Co wants to improve relations with its sister company, Donk.Co. Ship Chawanmushi immediately." - reward = 8000 + reward = 5000 wanted_types = list(/obj/item/reagent_containers/food/snacks/chawanmushi) /datum/bounty/item/chef/kebab name = "Kebabs" description = "Remove all kebab from station you are best food. Ship to CentCom to remove from the premises." - reward = 3500 + reward = 1500 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/kebab) /datum/bounty/item/chef/soylentgreen name = "Soylent Green" description = "CentCom has heard wonderful things about the product 'Soylent Green', and would love to try some. If you endulge them, expect a pleasant bonus." - reward = 5000 + reward = 4000 wanted_types = list(/obj/item/reagent_containers/food/snacks/soylentgreen) /datum/bounty/item/chef/pancakes name = "Pancakes" description = "Here at Kinaris.Co we consider employees to be family. And you know what families love? Pancakes. Ship a baker's dozen." - reward = 5000 + reward = 4000 required_count = 13 wanted_types = list(/datum/crafting_recipe/food/pancakes) /datum/bounty/item/chef/nuggies name = "Chicken Nuggets" description = "The vice president's son won't shut up about chicken nuggies. Would you mind shipping some?" - reward = 4000 + reward = 2500 required_count = 6 wanted_types = list(/obj/item/reagent_containers/food/snacks/nugget) diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index a0c3c577..27ac4887 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -27,41 +27,41 @@ /datum/bounty/item/engineering/pacman name = "P.A.C.M.A.N.-type portable generator" description = "A neighboring station had a problem with their SMES, and now need something to power their communications console. Can you send them a P.AC.M.A.N.?" - reward = 3500 //2500 for the cargo one + reward = 1500 //2500 for the cargo one wanted_types = list(/obj/machinery/power/port_gen/pacman) /datum/bounty/item/engineering/canisters name = "Gas Canisters" description = "After a recent debacle in a nearby sector, 10 gas canisters are needed for containing an experimental aerosol before it kills all the local fauna." - reward = 5000 + reward = 3000 required_count = 10 //easy to make wanted_types = list(/obj/machinery/portable_atmospherics/canister) /datum/bounty/item/engineering/microwave name = "Microwaves" description = "Due to a shortage of microwaves, our chefs are incapable of keeping up with our sheer volume of orders. We need at least three microwaves to keep up with our crew's dietary habits." - reward = 2000 + reward = 1000 required_count = 3 wanted_types = list(/obj/machinery/microwave) /datum/bounty/item/engineering/hydroponicstrays name = "Hydroponics Tray" description = "The garden has become a hot spot of late, they need a few more hydroponics tray to grow more flowers." - reward = 2500 + reward = 1500 required_count = 5 wanted_types = list(/obj/machinery/hydroponics) /datum/bounty/item/engineering/rcd name = "Spare RCD" description = "Construction and repairs to are shuttles are going slowly. As it turns out, we're a little short on RCDs, can you send us a few?" - reward = 2500 + reward = 1500 required_count = 3 wanted_types = list(/obj/item/construction/rcd) /datum/bounty/item/engineering/rpd name = "Spare RPD" description = "Our Atmospheric Technicians are still living in the past, relying on stationary pipe dispensers to produce the pipes necessary to accomplish their strenuous tasks. They could use an upgrade. Could you send us some Rapid Pipe Dispensers?" - reward = 3000 + reward = 2500 required_count = 3 wanted_types = list(/obj/item/pipe_dispenser) @@ -75,19 +75,19 @@ /datum/bounty/item/engineering/arcadetrail name = "Orion Trail Arcade Games" description = "The staff have nothing to do when off-work. Can you send us some Orion Trail games to play?" - reward = 3000 + reward = 1500 required_count = 5 wanted_types = list(/obj/machinery/computer/arcade/orion_trail) /datum/bounty/item/engineering/arcadebattle name = "Battle Arcade Games" description = "The staff have nothing to do when off-work. Can you send us some Battle Arcade games to play?" - reward = 3000 + reward = 1500 required_count = 5 wanted_types = list(/obj/machinery/computer/arcade/battle) /datum/bounty/item/engineering/energy_ball name = "Contained Tesla Ball" description = "Station 24 is being overrun by hordes of angry Mothpeople. They are requesting the ultimate bug zapper." - reward = 75000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle + reward = 50000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle wanted_types = list(/obj/singularity/energy_ball) diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm index 9b3e4845..48d736c8 100644 --- a/code/modules/cargo/bounties/medical.dm +++ b/code/modules/cargo/bounties/medical.dm @@ -7,34 +7,34 @@ /datum/bounty/item/medical/lung name = "Lungs" description = "A recent explosion at Central Command has left multiple staff with punctured lungs. Ship spare lungs to be rewarded." - reward = 10000 + reward = 3000 required_count = 3 wanted_types = list(/obj/item/organ/lungs) /datum/bounty/item/medical/appendix name = "Appendix" description = "Chef Gibb of Central Command wants to prepare a meal using a very special delicacy: an appendix. If you ship one, he'll pay." - reward = 5000 //there are no synthetic appendixes + reward = 3500 //there are no synthetic appendixes wanted_types = list(/obj/item/organ/appendix) /datum/bounty/item/medical/ears name = "Ears" description = "Multiple staff at Station 12 have been left deaf due to unauthorized clowning. Ship them new ears." - reward = 10000 + reward = 5000 required_count = 3 wanted_types = list(/obj/item/organ/ears) /datum/bounty/item/medical/liver name = "Livers" description = "Multiple high-ranking CentCom diplomats have been hospitalized with liver failure after a recent meeting with Third Soviet Union ambassadors. Help us out, will you?" - reward = 10000 + reward = 5500 required_count = 3 wanted_types = list(/obj/item/organ/liver) /datum/bounty/item/medical/eye name = "Organic Eyes" description = "Station 5's Research Director Willem is requesting a few pairs of non-robotic eyes. Don't ask questions, just ship them." - reward = 10000 + reward = 3000 required_count = 3 wanted_types = list(/obj/item/organ/eyes) exclude_types = list(/obj/item/organ/eyes/robotic) @@ -42,7 +42,7 @@ /datum/bounty/item/medical/tongue name = "Tongues" description = "A recent attack by Mime extremists has left staff at Station 23 speechless. Ship some spare tongues." - reward = 10000 + reward = 4500 required_count = 3 wanted_types = list(/obj/item/organ/tongue) @@ -95,33 +95,33 @@ /datum/bounty/item/medical/surgery name = "Surgery tool implants" description = "Our medical interns keep dropping their Shambler's Juice while they're performing open heart surgery. One of them even had the audacity to say he only had two hands!" - reward = 10000 + reward = 7000 required_count = 3 wanted_types = list(/obj/item/organ/cyberimp/arm/surgery) /datum/bounty/item/medical/chemmaker name = "Portable Chem Dispenser" description = "After a new chemist mixed up some water and a banana, we lost our only chem dispenser. Please send us a replacement and you will be compensated." - reward = 7000 + reward = 5000 wanted_types = list(/obj/machinery/chem_dispenser) /datum/bounty/item/medical/advhealthscaner name = "Advanced Health Analyzer" description = "A ERT Medical unit needs the new 'advanced health analyzer', for a mission at a Station 4. Can you send some?." - reward = 4000 + reward = 3000 required_count = 5 wanted_types = list(/obj/item/healthanalyzer/advanced) /datum/bounty/item/medical/wallmounts name = "Defibrillator wall mounts" description = "New Space OSHA regulation state that are new cloning medical wing needs a few 'Easy to access defibrillartors'. Can you send a few before we get a lawsuit?" - reward = 5000 + reward = 2000 required_count = 3 wanted_types = list(/obj/machinery/defibrillator_mount) /datum/bounty/item/medical/defibrillator name = "New defibillators" description = "After years of storage are defibrillator units have become more liabilities then we want. Please send us some new ones to replace these old ones." - reward = 5000 + reward = 2250 required_count = 5 wanted_types = list(/obj/item/defibrillator) diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm index 51d93f83..1f3266af 100644 --- a/code/modules/cargo/bounties/mining.dm +++ b/code/modules/cargo/bounties/mining.dm @@ -8,58 +8,58 @@ /datum/bounty/item/mining/goliath_boat name = "Goliath Hide Boat" description = "Commander Menkov wants to participate in the annual Lavaland Regatta. He is asking your shipwrights to build the swiftest boat known to man." - reward = 10000 + reward = 5500 wanted_types = list(/obj/vehicle/ridden/lavaboat) /datum/bounty/item/mining/bone_oar name = "Bone Oars" description = "Commander Menkov requires oars to participate in the annual Lavaland Regatta. Ship a pair over." - reward = 4000 + reward = 2000 required_count = 2 wanted_types = list(/obj/item/oar) /datum/bounty/item/mining/bone_axe name = "Bone Axe" description = "Station 12 has had their fire axes stolen by marauding clowns. Ship them a bone axe as a replacement." - reward = 7500 + reward = 3500 wanted_types = list(/obj/item/twohanded/fireaxe/boneaxe) /datum/bounty/item/mining/bone_armor name = "Bone Armor" description = "Station 14 has volunteered their lizard crew for ballistic armor testing. Ship over some bone armor." - reward = 5000 + reward = 2000 wanted_types = list(/obj/item/clothing/suit/armor/bone) /datum/bounty/item/mining/skull_helmet name = "Skull Helmet" description = "Station 42's Head of Security has her birthday tomorrow! We want to suprise her with a fashionable skull helmet." - reward = 4000 + reward = 2000 wanted_types = list(/obj/item/clothing/head/helmet/skull) /datum/bounty/item/mining/bone_talisman name = "Bone Talismans" description = "Station 14's Research Director claims that pagan bone talismans protect their wearer. Ship them a few so they can start testing." - reward = 7500 + reward = 3500 required_count = 3 wanted_types = list(/obj/item/clothing/accessory/talisman) /datum/bounty/item/mining/bone_dagger name = "Bone Daggers" description = "Central Command's canteen is undergoing budget cuts. Ship over some bone daggers so our Chef can keep working." - reward = 5000 + reward = 1000 required_count = 3 wanted_types = list(/obj/item/kitchen/knife/combat/bone) /datum/bounty/item/mining/basalt name = "Artificial Basalt Tiles" description = "Central Command's Ash Walker exhibit needs to be expanded again, we just need some more basalt flooring." - reward = 5000 + reward = 2200 required_count = 60 wanted_types = list(/obj/item/stack/tile/basalt) /datum/bounty/item/mining/fruit name = "Cactus Fruit" description = "Central Command's Ash Walker habitat needs more fauna, send us some local fruit seeds!" - reward = 2000 + reward = 1000 required_count = 1 wanted_types = list(/obj/item/seeds/lavaland/cactus) diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index e6d2e91a..ee122a11 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -117,11 +117,11 @@ datum/bounty/reagent/complex_drink/New() wanted_reagent = new reagent_type name = wanted_reagent.name description = "CentCom is offering a reward for talented mixologists. Ship a container of [name] to claim the prize." - reward += rand(0, 4) * 500 + reward += rand(0, 4) * 300 /datum/bounty/reagent/chemical name = "Chemical" - reward = 4000 + reward = 2750 required_volume = 30 datum/bounty/reagent/chemical/New() diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm index 1bf3fda8..b8a01f56 100644 --- a/code/modules/cargo/bounties/science.dm +++ b/code/modules/cargo/bounties/science.dm @@ -1,116 +1,116 @@ /datum/bounty/item/science/boh name = "Bag of Holding" description = "Centcom would make good use of high-capacity backpacks. If you have any, please ship them." - reward = 10000 + reward = 5000 wanted_types = list(/obj/item/storage/backpack/holding) /datum/bounty/item/science/tboh name = "Trash Bag of Holding" description = "Centcom would make good use of high-capacity trash bags. If you have any, please ship them." - reward = 10000 + reward = 3000 wanted_types = list(/obj/item/storage/backpack/holding) /datum/bounty/item/science/bluespace_syringe name = "Bluespace Syringe" description = "Centcom would make good use of high-capacity syringes. If you have any, please ship them." - reward = 10000 + reward = 1500 wanted_types = list(/obj/item/reagent_containers/syringe/bluespace) /datum/bounty/item/science/bluespace_body_bag name = "Bluespace Body Bag" description = "Centcom would make good use of high-capacity body bags. If you have any, please ship them." - reward = 10000 + reward = 5000 wanted_types = list(/obj/item/bodybag/bluespace) /datum/bounty/item/science/nightvision_goggles name = "Night Vision Goggles" description = "An electrical storm has busted all the lights at CentCom. While management is waiting for replacements, perhaps some night vision goggles can be shipped?" - reward = 10000 + reward = 1000 wanted_types = list(/obj/item/clothing/glasses/night, /obj/item/clothing/glasses/meson/night, /obj/item/clothing/glasses/hud/health/night, /obj/item/clothing/glasses/hud/security/night, /obj/item/clothing/glasses/hud/diagnostic/night) /datum/bounty/item/science/experimental_welding_tool name = "Experimental Welding Tool" description = "A recent accident has left most of CentCom's welding tools exploded. Ship replacements to be rewarded." - reward = 10000 + reward = 5000 required_count = 3 wanted_types = list(/obj/item/weldingtool/experimental) /datum/bounty/item/science/cryostasis_beaker name = "Cryostasis Beaker" description = "Chemists at Central Command have discovered a new chemical that can only be held in cryostasis beakers. The only problem is they don't have any! Rectify this to receive payment." - reward = 10000 + reward = 2000 wanted_types = list(/obj/item/reagent_containers/glass/beaker/noreact) /datum/bounty/item/science/diamond_drill name = "Diamond Mining Drill" description = "Central Command is willing to pay three months salary in exchange for one diamond mining drill." - reward = 15000 + reward = 5500 wanted_types = list(/obj/item/pickaxe/drill/diamonddrill, /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill) /datum/bounty/item/science/floor_buffer name = "Floor Buffer Upgrade" description = "One of CentCom's janitors made a small fortune betting on carp races. Now they'd like to commission an upgrade to their floor buffer." - reward = 10000 + reward = 3000 wanted_types = list(/obj/item/janiupgrade) /datum/bounty/item/science/advanced_mop name = "Advanced Mop" description = "Excuse me. I'd like to request $17 for a push broom rebristling. Either that, or an advanced mop." - reward = 10000 + reward = 3000 wanted_types = list(/obj/item/mop/advanced) /datum/bounty/item/science/advanced_egun name = "Advanced Energy Gun" description = "With the price of rechargers on the rise, upper management is interested in purchasing guns that are self-powered. If you ship one, they'll pay." - reward = 10000 + reward = 1800 wanted_types = list(/obj/item/gun/energy/e_gun/nuclear) /datum/bounty/item/science/bscells name = "Bluespace Power Cells" description = "Someone in upper management keeps using the excuse that his tablet battery dies when he's in the middle of work. This will be the last time he doesn't have his presentation, I swear to -" - reward = 7000 + reward = 3000 required_count = 10 //Easy to make wanted_types = list(/obj/item/stock_parts/cell/bluespace) /datum/bounty/item/science/t4manip name = "Femto-Manipulators" description = "One of our Chief Engineers has OCD. Can you send us some femto-manipulators so he stops complaining that his ID doesn't fit perfectly in the PDA slot?" - reward = 7000 + reward = 2000 required_count = 20 //Easy to make wanted_types = list(/obj/item/stock_parts/manipulator/femto) /datum/bounty/item/science/t4bins name = "Bluespace Matter Bins" description = "The local Janitorial union has gone on strike. Can you send us some bluespace bins so we don't have to take out our own trash?" - reward = 7000 + reward = 2000 required_count = 20 //Easy to make wanted_types = list(/obj/item/stock_parts/matter_bin/bluespace) /datum/bounty/item/science/t4capacitor name = "Quadratic Capacitor" description = "One of our linguists doesn't understand why they're called Quadratic capacitors. Can you give him a few so he leaves us alone about it?" - reward = 7000 + reward = 2000 required_count = 20 //Easy to make wanted_types = list(/obj/item/stock_parts/capacitor/quadratic) /datum/bounty/item/science/t4triphasic name = "Triphasic Scanning Module" description = "One of our scientists got into the liberty caps and is demanding new scanning modules so he can talk to ghosts. At this point we just want him out of our office." - reward = 7000 + reward = 2000 required_count = 20 //Easy to make wanted_types = list(/obj/item/stock_parts/scanning_module/triphasic) /datum/bounty/item/science/t4microlaser name = "Quad-Ultra Micro-Laser" description = "The cats on Vega 9 are breeding out of control. We need something to corral them into one area so we can saturation bomb it." - reward = 7000 + reward = 2000 required_count = 20 //Easy to make wanted_types = list(/obj/item/stock_parts/micro_laser/quadultra) /datum/bounty/item/science/fakecrystals name = "synthetic bluespace crystals" description = "Don't, uh, tell anyone, but one of our BSA arrays might have had a little... accident. Send us some bluespace crystals so we can recalibrate it before anyone realizes. The whole set uses artificial bluespace crystals, so we need and not any other type of bluespace crystals..." - reward = 10000 + reward = 8000 required_count = 5 wanted_types = list(/obj/item/stack/ore/bluespace_crystal/artificial) exclude_types = list(/obj/item/stack/ore/bluespace_crystal, diff --git a/code/modules/cargo/bounties/security.dm b/code/modules/cargo/bounties/security.dm index 34c9856b..3f598eba 100644 --- a/code/modules/cargo/bounties/security.dm +++ b/code/modules/cargo/bounties/security.dm @@ -1,54 +1,54 @@ /datum/bounty/item/security/riotshotgun name = "Riot Shotguns" description = "Hooligans have boarded CentCom! Ship riot shotguns quick, or things are going to get dirty." - reward = 5000 + reward = 2500 required_count = 2 wanted_types = list(/obj/item/gun/ballistic/shotgun/riot) /datum/bounty/item/security/recharger name = "Rechargers" description = "Kinaris PMC is conducting marksmanship exercises. They request that rechargers be shipped." - reward = 2000 + reward = 1700 required_count = 3 wanted_types = list(/obj/machinery/recharger) /datum/bounty/item/security/practice name = "Practice Laser Gun" description = "Kinaris PMC is conducting routine marksmanship exercises. The clown hid all the practice lasers, and we're not using live weapons after last time." - reward = 3000 + reward = 1500 required_count = 3 wanted_types = list(/obj/item/gun/energy/laser/practice) /datum/bounty/item/security/flashshield name = "Strobe Shield" description = "One of our Emergency Response Agents thinks there's vampires in a local station. Send him something to help with his fear of the dark and protect him, too." - reward = 5000 + reward = 3000 wanted_types = list(/obj/item/assembly/flash/shield) /datum/bounty/item/security/sechuds name = "Sec HUDs" description = "Nanotrasen PMC has started to train officers how to use Sec HUDs to the fullest affect. Please send spare Sec HUDs so we can teach the men." - reward = 3000 + reward = 1250 required_count = 5 wanted_types = list(/obj/item/clothing/glasses/hud/security) /datum/bounty/item/security/techslugs name = "Tech Slugs" description = "Kinaris PMC is conducting an ammo loading and use lessons, on the new 'Tech Slugs'. Problem is we don't have any, please fix this..." - reward = 7500 + reward = 3500 required_count = 15 wanted_types = list(/obj/item/ammo_casing/shotgun/techshell) -/datum/bounty/item/security/WT550 +/datum/bounty/item/security/wt550 name = "Spare WT-550 clips" description = "Kinaris Military Academy's ammunition is running low, please send in spare ammo for practice." - reward = 7500 + reward = 1500 required_count = 5 wanted_types = list(/obj/item/ammo_box/magazine/wt550m9) /datum/bounty/item/security/pins name = "Test range firing pins" description = "Kinaris PMC just got a new set of guns, sadly they didn't come with any pins. Can you send us some Test range locked firing pins?" - reward = 5000 + reward = 2750 required_count = 3 wanted_types = list(/obj/item/firing_pin/test_range) diff --git a/code/modules/cargo/bounties/slime.dm b/code/modules/cargo/bounties/slime.dm index 80b2dc4d..a6d5a114 100644 --- a/code/modules/cargo/bounties/slime.dm +++ b/code/modules/cargo/bounties/slime.dm @@ -1,10 +1,10 @@ /datum/bounty/item/slime - reward = 3000 + reward = 1950 /datum/bounty/item/slime/New() ..() description = "Kinaris's head xenobiologist team is hunting for the rare and exotic [name]. A bounty has been offered for finding it." - reward += rand(0, 4) * 500 + reward += rand(0, 4) * 250 /datum/bounty/item/slime/green name = "Green Slime Extract" diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm index d1b99cae..e020bb48 100644 --- a/code/modules/cargo/bounties/special.dm +++ b/code/modules/cargo/bounties/special.dm @@ -1,14 +1,14 @@ /datum/bounty/item/alien_organs name = "Alien Organs" description = "Various research divisions are interested in studying Xenomorph biology. Ship a set of organs to be thoroughly compensated." - reward = 25000 + reward = 13500 required_count = 3 wanted_types = list(/obj/item/organ/brain/alien, /obj/item/organ/alien, /obj/item/organ/body_egg/alien_embryo) /datum/bounty/item/syndicate_documents name = "Syndicate Documents" description = "Intel regarding the syndicate is highly prized at CentCom. If you find syndicate documents, ship them. You could save lives." - reward = 15000 + reward = 10000 wanted_types = list(/obj/item/documents/syndicate, /obj/item/documents/photocopy) /datum/bounty/item/syndicate_documents/applies_to(obj/O) @@ -22,15 +22,15 @@ /datum/bounty/item/adamantine name = "Adamantine" description = "Centcom's anomalous materials division is in desparate need for Adamantine. Send them a large shipment and we'll make it worth your while." - reward = 35000 + reward = 15000 required_count = 10 wanted_types = list(/obj/item/stack/sheet/mineral/adamantine) /datum/bounty/more_bounties name = "More Bounties" description = "Complete enough bounties and CentCom will issue new ones!" - reward = 3 // number of bounties - var/required_bounties = 5 + reward = 8 // number of bounties + var/required_bounties = 3 /datum/bounty/more_bounties/can_claim() return ..() && completed_bounty_count() >= required_bounties diff --git a/code/modules/cargo/bounties/virus.dm b/code/modules/cargo/bounties/virus.dm index d514c3e3..13ac2c8a 100644 --- a/code/modules/cargo/bounties/virus.dm +++ b/code/modules/cargo/bounties/virus.dm @@ -1,5 +1,5 @@ /datum/bounty/virus - reward = 5000 + reward = 3000 var/shipped = FALSE var/stat_value = 0 var/stat_name = "" @@ -11,7 +11,7 @@ stat_value *= -1 name = "Virus ([stat_name] of [stat_value])" description = "Kinaris.Co is interested in a virus with a [stat_name] stat of exactly [stat_value]. Central Command will pay handsomely for such a virus." - reward += rand(0, 4) * 500 + reward += rand(0, 4) * 400 /datum/bounty/virus/completion_string() return shipped ? "Shipped" : "Not Shipped" diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index b7550465..9a99f201 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -1,6 +1,6 @@ /* How it works: The shuttle arrives at CentCom dock and calls sell(), which recursively loops through all the shuttle contents that are unanchored. - + Each object in the loop is checked for applies_to() of various export datums, except the invalid ones. */ @@ -31,7 +31,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they setupExports() var/list/contents = AM.GetAllContents() - + var/datum/export_report/report = external_report if(!report) //If we don't have any longer transaction going on report = new @@ -58,7 +58,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they var/unit_name = "" // Unit name. Only used in "Received [total_amount] [name]s [message]." message var/message = "" var/cost = 100 // Cost of item, in cargo credits. Must not alow for infinite price dupes, see above. - var/k_elasticity = 1/30 //coefficient used in marginal price calculation that roughly corresponds to the inverse of price elasticity, or "quantity elasticity" + var/k_elasticity = 1/20 //coefficient used in marginal price calculation that roughly corresponds to the inverse of price elasticity, or "quantity elasticity" - CIT EDIT 30 - > 20 var/list/export_types = list() // Type of the exported object. If none, the export datum is considered base type. var/include_subtypes = TRUE // Set to FALSE to make the datum apply only to a strict type. var/list/exclude_types = list() // Types excluded from export @@ -125,9 +125,9 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they if(amount <=0 || the_cost <=0) return FALSE - + report.total_value[src] += the_cost - + if(istype(O, /datum/export/material)) report.total_amount[src] += amount*MINERAL_MATERIAL_AMOUNT else @@ -148,7 +148,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they var/total_value = ex.total_value[src] var/total_amount = ex.total_amount[src] - + var/msg = "[total_value] credits: Received [total_amount] " if(total_value > 0) msg = "+" + msg diff --git a/code/modules/cargo/exports/gear.dm b/code/modules/cargo/exports/gear.dm index 125e0f70..ee273935 100644 --- a/code/modules/cargo/exports/gear.dm +++ b/code/modules/cargo/exports/gear.dm @@ -1,83 +1,800 @@ /datum/export/gear + include_subtypes = FALSE + +//blanket +/datum/export/gear/hat + cost = 3 + unit_name = "clothing" + export_types = list(/obj/item/clothing) + include_subtypes = TRUE + +//Hats + +//Blanket +/datum/export/gear/hat + cost = 5 + unit_name = "hat" + export_types = list(/obj/item/clothing/head) + include_subtypes = TRUE /datum/export/gear/sec_helmet - cost = 100 + cost = 70 unit_name = "helmet" export_types = list(/obj/item/clothing/head/helmet/sec) -/datum/export/gear/sec_armor - cost = 100 - unit_name = "armor vest" - export_types = list(/obj/item/clothing/suit/armor/vest) +/datum/export/gear/sec_soft + cost = 50 + unit_name = "soft sec cap" + export_types = list(/obj/item/clothing/head/soft/sec) -/datum/export/gear/riot_shield - cost = 100 - unit_name = "riot shield" - export_types = list(/obj/item/shield/riot) +/datum/export/gear/sec_helmetalt + cost = 50 + unit_name = "bullet proof helmet" + export_types = list(/obj/item/clothing/head/helmet/alt) +/datum/export/gear/sec_helmetold + cost = 10 + unit_name = "old helmet" + export_types = list(/obj/item/clothing/head/helmet/old) + +/datum/export/gear/sec_helmetblue + cost = 75 + unit_name = "blue helmet" + export_types = list(/obj/item/clothing/head/helmet/blueshirt) + +/datum/export/gear/sec_helmetriot + cost = 100 + unit_name = "riot helmet" + export_types = list(/obj/item/clothing/head/helmet/riot) + +/datum/export/gear/sec_helmet_light + cost = 20 + unit_name = "justice helmet" + export_types = list(/obj/item/clothing/head/helmet/justice/escape) + include_subtypes = TRUE + +/datum/export/gear/syndicate_helmetswat + cost = 250 + unit_name = "syndicate helmet" + export_types = list(/obj/item/clothing/head/helmet/swat) + +/datum/export/gear/sec_helmetswat + cost = 150 + unit_name = "swat helmet" + export_types = list(/obj/item/clothing/head/helmet/swat/nanotrasen) + +/datum/export/gear/thunder_helmet + cost = 120 + unit_name = "thunder dome helmet" + export_types = list(/obj/item/clothing/head/helmet/thunderdome) + +/datum/export/gear/roman_real + cost = 30 + unit_name = "roman helmet" + export_types = list(/obj/item/clothing/head/helmet/roman) + +/datum/export/gear/roman_realalt + cost = 60 + unit_name = "legionnaire helmet" + export_types = list(/obj/item/clothing/head/helmet/roman/legionnaire) + +/datum/export/gear/roman_fake + cost = 10 + unit_name = "toy roman helmet" + export_types = list(/obj/item/clothing/head/helmet/roman/fake) + +/datum/export/gear/roman_fakealt + cost = 20 + unit_name = "toy legionnaire helmet" + export_types = list(/obj/item/clothing/head/helmet/roman/legionnaire/fake) + +/datum/export/gear/ash_walker_helm + cost = 70 + unit_name = "gladiator helmet" + export_types = list(/obj/item/clothing/head/helmet/gladiator) + +/datum/export/gear/lasertag + cost = 30 //Has armor + unit_name = "lasertag helmet" + export_types = list(/obj/item/clothing/head/helmet/redtaghelm) + +/datum/export/gear/lasertag/blue + export_types = list(/obj/item/clothing/head/helmet/bluetaghelm) + +/datum/export/gear/knight_helmet + cost = 200 + k_elasticity = 1/5 //Rare, dont flood it + unit_name = "knight helmet" + export_types = list(/obj/item/clothing/head/helmet/knight, /obj/item/clothing/head/helmet/knight/blue, /obj/item/clothing/head/helmet/knight/yellow, /obj/item/clothing/head/helmet/knight/red) + +/datum/export/gear/skull_hat + cost = 70 + k_elasticity = 1/15 //Its just a skull + unit_name = "skull" + export_types = list(/obj/item/clothing/head/helmet/skull) + +/datum/export/gear/durathread_helm + cost = 100 + k_elasticity = 1/15 + unit_name = "durathread hat" + export_types = list(/obj/item/clothing/head/helmet/durathread, /obj/item/clothing/head/beret/durathread, /obj/item/clothing/head/beanie/durathread) + +/datum/export/gear/hard_hats + cost = 50 + unit_name = "hard hat" + export_types = list(/obj/item/clothing/head/hardhat, /obj/item/clothing/head/hardhat/orange, /obj/item/clothing/head/hardhat/white, /obj/item/clothing/head/hardhat/dblue) + +/datum/export/gear/atmos_helm + cost = 200 //Armored, fire proof, light, and presser proof + unit_name = "atmos hard hat" + export_types = list(/obj/item/clothing/head/hardhat/atmos) + +/datum/export/gear/crowns + cost = 350 //Armored, gold 300cr of gold to make so give them 50 more for working + k_elasticity = 1/5 //Anti-floods + unit_name = "crown" + export_types = list(/obj/item/clothing/head/crown, /obj/item/clothing/head/crown/fancy) + +/datum/export/gear/cchat + cost = 40 + unit_name = "centcom hat" + export_types = list(/obj/item/clothing/head/centhat) + +/datum/export/gear/caphat + cost = 150 + unit_name = "command hat" + export_types = list(/obj/item/clothing/head/caphat, /obj/item/clothing/head/caphat/parade, /obj/item/clothing/head/caphat/beret) + +/datum/export/gear/hophat + cost = 130 + unit_name = "hop hat" + export_types = list(/obj/item/clothing/head/hopcap, /obj/item/clothing/head/hopcap/beret) + +/datum/export/gear/dechat + cost = 75 + k_elasticity = 1/8 //Anti-floods + unit_name = "fedora" + export_types = list(/obj/item/clothing/head/fedora/det_hat, /obj/item/clothing/head/fedora/curator, /obj/item/clothing/head/fedora) + +/datum/export/gear/hoshat + cost = 140 + unit_name = "hos hat" + export_types = list(/obj/item/clothing/head/HoS, /obj/item/clothing/head/HoS/beret, /obj/item/clothing/head/beret/sec/navyhos) + +/datum/export/gear/syndahoshat + cost = 300 + unit_name = "syndicate command hat" + export_types = list(/obj/item/clothing/head/HoS/syndicate, /obj/item/clothing/head/HoS/beret/syndicate) + +/datum/export/gear/wardenhat + cost = 90 + unit_name = "warden hat" + export_types = list(/obj/item/clothing/head/warden, /obj/item/clothing/head/warden/drill, /obj/item/clothing/head/beret/sec/navywarden) + +/datum/export/gear/sechats + cost = 60 + unit_name = "sec beret" + export_types = list(/obj/item/clothing/head/beret/sec, /obj/item/clothing/head/beret/sec/navyofficer) + +/datum/export/gear/berets + cost = 30 + unit_name = "beret" + export_types = list(/obj/item/clothing/head/beret/qm, /obj/item/clothing/head/beret/rd, /obj/item/clothing/head/beret/cmo, /obj/item/clothing/head/beret) + +/datum/export/gear/berets + cost = 30 + unit_name = "beret" + export_types = list(/obj/item/clothing/head/beret/qm, /obj/item/clothing/head/beret/rd, /obj/item/clothing/head/beret/cmo, /obj/item/clothing/head/beret) + +/datum/export/gear/collectable + cost = 500 + unit_name = "collectable hat" + k_elasticity = 1/10 //dont flood these + export_types = list(/obj/item/clothing/head/collectable) + include_subtypes = TRUE + +/datum/export/gear/fancyhats + cost = 75 + unit_name = "fancy hat" + k_elasticity = 1/10 //dont flood these + export_types = list(/obj/item/clothing/head/that, /obj/item/clothing/head/bowler, /obj/item/clothing/head/lizard, /obj/item/clothing/head/canada) + +/datum/export/gear/welders + cost = 30 + unit_name = "welder helm" + k_elasticity = 1/20 //dont flood these + export_types = list(/obj/item/clothing/head/welding) + +/datum/export/gear/magichat //Magic as is Antags-Wiz/Cults + cost = 450 + unit_name = "magic hat" + export_types = list(/obj/item/clothing/head/wizard, /obj/item/clothing/head/culthood, /obj/item/clothing/head/magus, /obj/item/clothing/head/helmet/clockwork) + exclude_types = list(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard/marisa/fake) + include_subtypes = TRUE + +//Shoes + +//Blanket +/datum/export/gear/shoes + cost = 1 //Really dont want to sell EVERY SHOE EVER - yet* + unit_name = "shoes" + export_types = list(/obj/item/clothing/shoes) + include_subtypes = TRUE + +/datum/export/gear/clown_shoesmk + cost = 600 + unit_name = "mk-honk prototype shoes" + export_types = list(/obj/item/clothing/shoes/clown_shoes/banana_shoes) + +/datum/export/gear/magboots + cost = 50 + unit_name = "magboots" + export_types = list(/obj/item/clothing/shoes/magboots, /obj/item/clothing/shoes/magboots/atmos) + +/datum/export/gear/nosellboots + cost = -5000 //We DONT want scew antags + unit_name = "error shipment stolen" + export_types = list(/obj/item/clothing/shoes/magboots/advance, /obj/item/clothing/shoes/magboots/deathsquad) + +/datum/export/gear/syndamagboots + cost = 250 + unit_name = "blood-red magboots" + export_types = list(/obj/item/clothing/shoes/magboots/syndie) + +/datum/export/gear/combatboots + cost = 30 + unit_name = "combat boots" + export_types = list(/obj/item/clothing/shoes/combat) + +/datum/export/gear/swatboots + cost = 45 + unit_name = "swat boots" + export_types = list(/obj/item/clothing/shoes/combat/swat) + +/datum/export/gear/galoshes + cost = 50 + unit_name = "galoshes" + export_types = list(/obj/item/clothing/shoes/galoshes, /obj/item/clothing/shoes/galoshes/dry) + +/datum/export/gear/clown + cost = 10 + unit_name = "clown shoes" + export_types = list(/obj/item/clothing/shoes/clown_shoes, /obj/item/clothing/shoes/clown_shoes/jester) + +/datum/export/gear/dressshoes + cost = 10 + unit_name = "dress shoes" + export_types = list(/obj/item/clothing/shoes/laceup, /obj/item/clothing/shoes/singerb, /obj/item/clothing/shoes/singery) + +/datum/export/gear/working + cost = 15 + unit_name = "boots" + export_types = list(/obj/item/clothing/shoes/jackboots/fast, /obj/item/clothing/shoes/winterboots, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/workboots, /obj/item/clothing/shoes/workboots/mining) + +/datum/export/gear/hopboots + cost = 350 //costs 1000 credits for miners to get + unit_name = "jump boots" + export_types = list(/obj/item/clothing/shoes/bhop) + +/datum/export/gear/magicboots //Magic as in Antag - Wiz/Cults + cost = 450 + unit_name = "magic shoes" + export_types = list(/obj/item/clothing/shoes/sandal/marisa, /obj/item/clothing/shoes/sandal/magic, /obj/item/clothing/shoes/cult, /obj/item/clothing/shoes/clockwork, /obj/item/clothing/shoes/clown_shoes/taeclowndo, /obj/item/clothing/shoes/sandal/slippers) + include_subtypes = TRUE + +//Headsets/Ears + +//Blanket +/datum/export/gear/ears + cost = 2 //We dont want to sell every headset ever + unit_name = "ear gear" + export_types = list(/obj/item/clothing/ears, /obj/item/radio/headset) + include_subtypes = TRUE + +//Gloves + +//Blanket +/datum/export/gear/gloves + cost = 4 //Glove crafting can be done + unit_name = "gloves" + export_types = list(/obj/item/clothing/gloves) + include_subtypes = TRUE + +/datum/export/gear/boxing + cost = 10 //Padding as well as a weapon + unit_name = "boxing gloves" + export_types = list(/obj/item/clothing/gloves/boxing) + include_subtypes = TRUE + +/datum/export/gear/combatgloves + cost = 80 + unit_name = "combat gloves" + export_types = list(/obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/rapid, /obj/item/clothing/gloves/krav_maga) + include_subtypes = TRUE + +/datum/export/gear/bonegloves + cost = 30 + unit_name = "bone bracers" + export_types = list(/obj/item/clothing/gloves/bracer) + +/datum/export/gear/yellowgloves + cost = 50 + unit_name = "insulated gloves" + export_types = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/red/insulated) + +/datum/export/gear/leathergloves + cost = 20 + unit_name = "leather gloves" + export_types = list(/obj/item/clothing/gloves/botanic_leather) + +/datum/export/gear/fancy + cost = 25 + unit_name = "fancy gloves" + export_types = list(/obj/item/clothing/gloves/color/black, /obj/item/clothing/gloves/color/captain, /obj/item/clothing/gloves/color/white) + +/datum/export/gear/magicgloves//Magic as in Antag - Wiz/Cults + cost = 400 + unit_name = "magic gloves" + export_types = list(/obj/item/clothing/gloves/clockwork) + include_subtypes = TRUE + +//Ties/neck + +//Blanket +/datum/export/gear/neck + cost = 5 //Fancy! + unit_name = "neck based gear" + export_types = list(/obj/item/clothing/neck) + include_subtypes = TRUE + +/datum/export/gear/collar + cost = 7 + unit_name = "collar" + export_types = list(/obj/item/clothing/neck/petcollar) + include_subtypes = TRUE + +/datum/export/gear/bling + cost = 15 //Needs a coin + unit_name = "gold plated necklace" + export_types = list(/obj/item/clothing/neck/necklace/dope) + +//masks + +//Blanket +/datum/export/gear/masks + cost = 3 //Mostly just fake stuff and clowngear + unit_name = "face gear" + export_types = list(/obj/item/clothing/mask) + include_subtypes = TRUE + +/datum/export/gear/gasmask + cost = 4 + unit_name = "gas mask" + export_types = list(/obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas/glass) + +/datum/export/gear/minermask + cost = 10 + unit_name = "armored mask" + export_types = list(/obj/item/clothing/mask/gas/welding, /obj/item/clothing/mask/gas/explorer, /obj/item/clothing/mask/gas/syndicate) + +/datum/export/gear/sechailer + cost = 6 + unit_name = "sec hailer" + export_types = list(/obj/item/clothing/mask/gas/sechailer) + include_subtypes = TRUE /datum/export/gear/mask/breath cost = 2 unit_name = "breath mask" export_types = list(/obj/item/clothing/mask/breath) -/datum/export/gear/mask/gas - cost = 10 - unit_name = "gas mask" - export_types = list(/obj/item/clothing/mask/gas) - include_subtypes = FALSE +//Hardsuits //If you steal/fine more they are worth selling +//Blanket +/datum/export/gear/hardsuit + cost = 250 //Its just metal/plastic after all + unit_name = "unknown hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit) + include_subtypes = TRUE -/datum/export/gear/space/helmet - cost = 75 +/datum/export/gear/engi_hardsuit + cost = 500 + unit_name = "engine hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/engine) + +/datum/export/gear/atmos_hardsuit + cost = 600 + unit_name = "atmos hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/engine/atmos) + +/datum/export/gear/engi_hardsuit + cost = 1000 + unit_name = "elite engine hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/engine/elite) + +/datum/export/gear/mining_hardsuit + cost = 350 //common + unit_name = "mining hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/mining) + +/datum/export/gear/sec_hardsuit + cost = 750 + unit_name = "sec hardsuit" + export_types = list(/obj/item/clothing/head/helmet/space/hardsuit/mining, /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl) + +/datum/export/gear/syndi_hardsuit + cost = 1250 + unit_name = "syndi hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/syndi) + +/datum/export/gear/syndi_hardsuit + cost = 2750 + unit_name = "elite syndi hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/syndi/elite) + +/datum/export/gear/medical_hardsuit + cost = 350 //Not all that good + unit_name = "meidcal hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/medical) + +/datum/export/gear/rd_hardsuit + cost = 850 //rare + unit_name = "prototype hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/rd) + +/datum/export/gear/sec_hardsuit + cost = 750 + unit_name = "sec hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/security) + +/datum/export/gear/command_hardsuit + cost = 1300 + unit_name = "command hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/security/hos, /obj/item/clothing/suit/space/hardsuit/captain) + +/datum/export/gear/magic_hardsuit + cost = 3000 + unit_name = "magic hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/cult) + include_subtypes = TRUE + +/datum/export/gear/shield_hardsuit + cost = 2000 + unit_name = "shielded hardsuit" + export_types = list(/obj/item/clothing/suit/space/hardsuit/shielded) + include_subtypes = TRUE + +/datum/export/gear/rigs + cost = 2750 + unit_name = "RIG" + export_types = list(/obj/item/clothing/suit/space/hardsuit/ancient, /obj/item/clothing/suit/space/hardsuit/ancient/mason) + +//Soft Suits + +//Blanket +datum/export/gear/space/helmet + cost = 55 unit_name = "space helmet" - export_types = list(/obj/item/clothing/head/helmet/space, /obj/item/clothing/head/helmet/space/eva, /obj/item/clothing/head/helmet/space/nasavoid) - include_subtypes = FALSE + export_types = list(/obj/item/clothing/head/helmet/space) + include_subtypes = TRUE /datum/export/gear/space/suit - cost = 150 + cost = 60 unit_name = "space suit" - export_types = list(/obj/item/clothing/suit/space, /obj/item/clothing/suit/space/eva, /obj/item/clothing/suit/space/nasavoid) - include_subtypes = FALSE + export_types = list(/obj/item/clothing/suit/space) + include_subtypes = TRUE +datum/export/gear/space/helmet/plasma + cost = 100 + unit_name = "plasmaman space helmet" + export_types = list(/obj/item/clothing/suit/space/eva/plasmaman) -/datum/export/gear/space/syndiehelmet - cost = 150 - unit_name = "Syndicate space helmet" +/datum/export/gear/space/suit/plasma + cost = 100 + unit_name = "plasmaman space suit" + export_types = list(/obj/item/clothing/suit/space/eva/plasmaman) + +datum/export/gear/space/helmet/synda + cost = 150 //Flash proof + unit_name = "syndicate space helmet" export_types = list(/obj/item/clothing/head/helmet/space/syndicate) + include_subtypes = TRUE -/datum/export/gear/space/syndiesuit - cost = 300 - unit_name = "Syndicate space suit" - export_types = list(/obj/item/clothing/suit/space/syndicate) +/datum/export/gear/space/suit/synda + cost = 150 + unit_name = "syndicate space suit" + export_types = list(/obj/item/clothing/head/helmet/space/syndicate) + include_subtypes = TRUE +//Glasses + +//Blanket +datum/export/gear/glasses //glasses are not worth selling + cost = 3 + unit_name = "glasses" + export_types = list(/obj/item/clothing/glasses) + include_subtypes = TRUE + +/datum/export/gear/mesons + cost = 6 + unit_name = "mesons" + export_types = list(/obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/material/mining) + include_subtypes = TRUE + +/datum/export/gear/scigoggles + cost = 8 + unit_name = "chem goggles" + export_types = list(/obj/item/clothing/glasses/science) + include_subtypes = TRUE + +/datum/export/gear/nvgoggles + cost = 20 + unit_name = "night vison goggles" + export_types = list(/obj/item/clothing/glasses/night) + include_subtypes = TRUE + +/datum/export/gear/sunglasses + cost = 12 + unit_name = "sunglasses" + export_types = list(/obj/item/clothing/glasses/sunglasses) + include_subtypes = TRUE + +/datum/export/gear/huds + cost = 10 + unit_name = "huds" + export_types = list(/obj/item/clothing/glasses/hud) + include_subtypes = TRUE + +/datum/export/gear/huds/glasses + cost = 22 + export_types = list(/obj/item/clothing/glasses/hud/health/sunglasses, /obj/item/clothing/glasses/hud/security/sunglasses) + +/datum/export/gear/weldinggoggles + cost = 20 + unit_name = "welding goggles" + export_types = list(/obj/item/clothing/glasses/welding) + include_subtypes = TRUE + +/datum/export/gear/thermals + cost = 30 + unit_name = "thermal goggles" + export_types = list(/obj/item/clothing/glasses/thermal, /obj/item/clothing/glasses/hud/toggle/thermal) + include_subtypes = TRUE + +/datum/export/gear/magic_glasses + cost = 140 + unit_name = "magic goggles" + export_types = list(/obj/item/clothing/glasses/godeye, /obj/item/clothing/glasses/hud/health/night/cultblind, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor) + include_subtypes = TRUE + +////////// +//UNDER/// +////////// + +/datum/export/gear/jumpsuit + cost = 3 + unit_name = "jumpsuit" + k_elasticity = 1/100 //you can craft white jumpsuits, if someone does that 300 times, they deserve the 800 credits + export_types = list(/obj/item/clothing/under) + include_subtypes = TRUE + +/datum/export/gear/fancy_jumpsuit + cost = 10 + unit_name = "fancy clothing" + k_elasticity = 1/90 //These will be what sells + export_types = list(/obj/item/clothing/under/scratch, /obj/item/clothing/under/sl_suit, /obj/item/clothing/under/rank/vice, /obj/item/clothing/under/suit_jacket, \ + /obj/item/clothing/under/burial, /obj/item/clothing/under/skirt/black, /obj/item/clothing/under/captainparade, /obj/item/clothing/under/hosparademale, \ + /obj/item/clothing/under/hosparadefem, /obj/item/clothing/under/assistantformal, /obj/item/clothing/under/stripeddress, /obj/item/clothing/under/redeveninggown, \ + /obj/item/clothing/under/plaid_skirt, /obj/item/clothing/under/geisha, /obj/item/clothing/under/trek, /obj/item/clothing/under/wedding, /obj/item/clothing/under/aviatoruniform,\ + /obj/item/clothing/under/mega, /obj/item/clothing/under/cia, /obj/item/clothing/under/casualwear, /obj/item/clothing/under/rank) + include_subtypes = TRUE + +/datum/export/gear/armored_jumpsuit + cost = 15 + unit_name = "armored_jumpsuit" + k_elasticity = 1/90 //These will be what sells + export_types = list(/obj/item/clothing/under/durathread, /obj/item/clothing/under/rank/security, /obj/item/clothing/under/plasmaman, /obj/item/clothing/under/syndicate, \ + /obj/item/clothing/under/rank/det, /obj/item/clothing/under/rank/head_of_security, /obj/item/clothing/under/rank/security/spacepol) + exclude_types = list(/obj/item/clothing/under/syndicate/tacticool, /obj/item/clothing/under/syndicate/tacticool/skirt) + include_subtypes = TRUE + +/datum/export/gear/jumpsuit_addon + cost = 12 //Few and rare as well as quick drop off of vaule + unit_name = "jumpsuit addon" + k_elasticity = 1/10 + export_types = list(/obj/item/clothing/accessory) + include_subtypes = TRUE + +/datum/export/gear/robes_magic + cost = 120 + unit_name = "magic robes" + export_types = list(/obj/item/clothing/suit/wizrobe, /obj/item/clothing/suit/cultrobes, /obj/item/clothing/suit/magusred, /obj/item/clothing/suit/hooded/cultrobes) + exclude_types = list(/obj/item/clothing/suit/wizrobe/fake) + include_subtypes = TRUE + +//Amror +/datum/export/gear/armor + cost = 80 + unit_name = "misc armor" + export_types = list(/obj/item/clothing/suit/armor) + include_subtypes = TRUE + +/datum/export/gear/sec_armor + cost = 180 + unit_name = "sec armor" + export_types = list(/obj/item/clothing/suit/armor/vest/leather, /obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/vest/det_suit) + include_subtypes = TRUE + +/datum/export/gear/hosarmor + cost = 380 + unit_name = "hos armor" + export_types = list(/obj/item/clothing/suit/armor/hos) + include_subtypes = TRUE + +/datum/export/gear/wardenarmor + cost = 280 + unit_name = "warden armor" + export_types = list(/obj/item/clothing/suit/armor/vest/warden) + include_subtypes = TRUE + +/datum/export/gear/reflector + cost = 500 + unit_name = "reflector armor" + export_types = list(/obj/item/clothing/suit/armor/laserproof) + include_subtypes = TRUE + +/datum/export/gear/heavy_armor + cost = 600 //REALY hard to fine/make takes lots of slimes + unit_name = "heavy armor" + export_types = list(/obj/item/clothing/suit/armor/heavy) + include_subtypes = TRUE + +/datum/export/gear/plate_armor + cost = 200 + unit_name = "plate armor" + export_types = list(/obj/item/clothing/suit/armor/riot/knight) + include_subtypes = TRUE + +/datum/export/gear/riot_armor + cost = 250 + unit_name = "riot armor" + export_types = list(/obj/item/clothing/suit/armor/riot) + include_subtypes = TRUE + +/datum/export/gear/bone_armor + cost = 50 + unit_name = "bone armor" + export_types = list(/obj/item/clothing/suit/armor/bone) + include_subtypes = TRUE + +/datum/export/gear/swat_armor + cost = 350 + unit_name = "swat mki armor" + export_types = list(/obj/item/clothing/suit/space/swat) + include_subtypes = TRUE + +/datum/export/gear/dragon_armor + cost = 750 + unit_name = "drake bone armor" + export_types = list(/obj/item/clothing/suit/hooded/cloak/drake) + include_subtypes = TRUE + +/datum/export/gear/commandamor + cost = 480 + unit_name = "command armor" + export_types = list(/obj/item/clothing/suit/armor/vest/capcarapace, /obj/item/clothing/suit/armor/centcom) + include_subtypes = TRUE + +/datum/export/gear/reactive_base + cost = 600 + k_elasticity = 1/2 //Lets not go over board + unit_name = "hollow reactive armor" + export_types = list(/obj/item/reactive_armour_shell, /obj/item/clothing/suit/armor/reactive) + +/datum/export/gear/reactive_active + cost = 1200 + k_elasticity = 1/3 //Lets not go over board + unit_name = "working reactive armor" + export_types = list(/obj/item/clothing/suit/armor/reactive/repulse, /obj/item/clothing/suit/armor/reactive/tesla, /obj/item/clothing/suit/armor/reactive/teleport) + +/////////////////////////// +//Bomb/Rad/Bio Suits/Fire// +/////////////////////////// /datum/export/gear/radhelmet - cost = 50 + cost = 20 unit_name = "radsuit hood" export_types = list(/obj/item/clothing/head/radiation) /datum/export/gear/radsuit - cost = 100 + cost = 40 unit_name = "radsuit" export_types = list(/obj/item/clothing/suit/radiation) +/datum/export/gear/firehelmet + cost = 10 + unit_name = "firesuit helmet" + export_types = list(/obj/item/clothing/head/hardhat/red) + +/datum/export/gear/fireatmos + cost = 120 + unit_name = "atmos firesuit" + export_types = list(/obj/item/clothing/suit/fire/atmos) + +/datum/export/gear/firesuit + cost = 20 + unit_name = "firesuit" + export_types = list(/obj/item/clothing/suit/fire, /obj/item/clothing/suit/fire/firefighter, /obj/item/clothing/suit/fire/heavy) + /datum/export/gear/biohood - cost = 50 + cost = 40 unit_name = "biosuit hood" export_types = list(/obj/item/clothing/head/bio_hood) + include_subtypes = TRUE /datum/export/gear/biosuit - cost = 100 + cost = 60 unit_name = "biosuit" export_types = list(/obj/item/clothing/suit/bio_suit) + include_subtypes = TRUE /datum/export/gear/bombhelmet - cost = 50 + cost = 40 unit_name = "bomb suit hood" export_types = list(/obj/item/clothing/head/bomb_hood) + include_subtypes = TRUE /datum/export/gear/bombsuit - cost = 100 + cost = 60 unit_name = "bomb suit" export_types = list(/obj/item/clothing/suit/bomb_suit) + include_subtypes = TRUE + +//////////////////// +//Cloaks and Coats// +//////////////////// + +/datum/export/gear/cloaks + cost = 30 + unit_name = "cloak" + export_types = list(/obj/item/clothing/neck/cloak) + include_subtypes = TRUE + +/datum/export/gear/cloaksmining + cost = 90 + unit_name = "lavaland cloak" + export_types = list(/obj/item/clothing/suit/hooded/cloak/goliath) + include_subtypes = TRUE + +/datum/export/gear/labcoats + cost = 15 + unit_name = "labcoats" + export_types = list(/obj/item/clothing/suit/toggle/labcoat) + include_subtypes = TRUE + +/datum/export/gear/wintercoats + cost = 25 + unit_name = "winter coats" + export_types = list(/obj/item/clothing/suit/hooded/wintercoat) + include_subtypes = TRUE + +////////// +//SUITS/// +////////// + +/datum/export/gear/suits + cost = 40 + unit_name = "suit" + export_types = list(/obj/item/clothing/suit) + include_subtypes = TRUE + +////////////////////// +//Chameleon Gear////// +////////////////////// +/datum/export/gear/chameleon //Selling a full kit is easy money for 2 tc + cost = 280 + unit_name = "chameleon item" + export_types = list(/obj/item/clothing/head/chameleon, /obj/item/clothing/mask/chameleon, /obj/item/clothing/under/chameleon, /obj/item/clothing/suit/chameleon, /obj/item/clothing/glasses/chameleon,\ + /obj/item/clothing/gloves/chameleon, /obj/item/clothing/head/chameleon, /obj/item/clothing/shoes/chameleon, /obj/item/storage/backpack/chameleon, \ + /obj/item/storage/belt/chameleon, /obj/item/radio/headset/chameleon, /obj/item/pda/chameleon, /obj/item/stamp/chameleon, /obj/item/clothing/neck/cloak/chameleon) + include_subtypes = TRUE diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index bf77d836..88ff5f47 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -1,3 +1,6 @@ +/datum/export/large + k_elasticity = 0 + /datum/export/large/crate cost = 500 k_elasticity = 0 @@ -21,13 +24,13 @@ export_types = list(/obj/structure/ore_box) /datum/export/large/crate/wood - cost = 240 + cost = 140 unit_name = "wooden crate" export_types = list(/obj/structure/closet/crate/wooden) exclude_types = list() /datum/export/large/crate/coffin - cost = 250//50 wooden crates cost 2000 points, and you can make 10 coffins in seconds with those planks. Each coffin selling for 250 means you can make a net gain of 500 points for wasting your time making coffins. + cost = 150 unit_name = "coffin" export_types = list(/obj/structure/closet/crate/coffin) @@ -131,16 +134,48 @@ unit_name = "security barrier" export_types = list(/obj/item/grenade/barrier, /obj/structure/barricade/security) +/datum/export/large/frame + cost = 20 + unit_name = "structure frame" + export_types = list(/obj/structure/frame, /obj/structure/table_frame) + include_subtypes = TRUE + +/datum/export/large/pacman + cost = 125 + unit_name = "pacman" + export_types = list(/obj/machinery/power/port_gen/pacman) + +/datum/export/large/pacman + cost = 150 + unit_name = "super pacman" + export_types = list(/obj/machinery/power/port_gen/pacman/super) + +/datum/export/large/pacman + cost = 175 + unit_name = "mrs super pacman" + export_types = list(/obj/machinery/power/port_gen/pacman/mrs) + +/datum/export/large/hydroponics + cost = 120 + unit_name = "hydroponics tray" + export_types = list(/obj/machinery/hydroponics) + +/datum/export/large/nice_chair + cost = 12 + unit_name = "Padded Chair" + export_types = list(/obj/structure/chair/comfy) + /datum/export/large/gas_canister cost = 10 //Base cost of canister. You get more for nice gases inside. unit_name = "Gas Canister" export_types = list(/obj/machinery/portable_atmospherics/canister) + /datum/export/large/gas_canister/get_cost(obj/O) var/obj/machinery/portable_atmospherics/canister/C = O var/worth = 10 var/gases = C.air_contents.gases - worth += gases[/datum/gas/bz]*4 + worth += gases[/datum/gas/bz]*4 worth += gases[/datum/gas/stimulum]*25 worth += gases[/datum/gas/hypernoblium]*1000 worth += gases[/datum/gas/miasma]*15 @@ -149,86 +184,169 @@ worth += gases[/datum/gas/nitryl]*30 return worth -/datum/export/large/odysseus + +////////////// +//Matstatues// +////////////// + +/datum/export/large/nukestatue + cost = 175 + unit_name = "Nuke statue" + export_types = list(/obj/structure/statue/uranium/nuke) + +/datum/export/large/engstatue + cost = 175 + unit_name = "Engine statue" + export_types = list(/obj/structure/statue/uranium/eng) + +/datum/export/large/plasmastatue + cost = 720 + unit_name = "Scientist statue" + export_types = list(/obj/structure/statue/plasma/scientist) + +/datum/export/large/hosstatue + cost = 225 + unit_name = "HoS statue" + export_types = list(/obj/structure/statue/gold/hos) + +/datum/export/large/rdstatue + cost = 225 + unit_name = "RD statue" + export_types = list(/obj/structure/statue/gold/rd) + +/datum/export/large/hopstatue + cost = 225 + unit_name = "HoP statue" + export_types = list(/obj/structure/statue/gold/hop) + +/datum/export/large/cmostatue + cost = 225 + unit_name = "CMO statue" + export_types = list(/obj/structure/statue/gold/cmo) + +/datum/export/large/cestatue + cost = 225 + unit_name = "CE statue" + export_types = list(/obj/structure/statue/gold/ce) + +/datum/export/large/mdstatue + cost = 200 + unit_name = "MD statue" + export_types = list(/obj/structure/statue/silver/md) + +/datum/export/large/janitorstatue + cost = 200 + unit_name = "Janitor statue" + export_types = list(/obj/structure/statue/silver/janitor) + +/datum/export/large/secstatue + cost = 200 + unit_name = "Sec statue" + export_types = list(/obj/structure/statue/silver/sec) + +/datum/export/large/medborgstatue + cost = 200 + unit_name = "Medborg statue" + export_types = list(/obj/structure/statue/silver/medborg) + +/datum/export/large/secborgstatue + cost = 200 + unit_name = "Secborg statue" + export_types = list(/obj/structure/statue/silver/secborg) + +/datum/export/large/capstatue + cost = 1200 + unit_name = "Captain statue" + export_types = list(/obj/structure/statue/diamond/captain) + +/datum/export/large/aistatue + cost = 1200 + unit_name = "AI statue" + export_types = list(/obj/structure/statue/diamond/ai1, /obj/structure/statue/diamond/ai2) + +/datum/export/large/clownstatue + cost = 2750 + unit_name = "Clown statue" + export_types = list(/obj/structure/statue/bananium/clown) + +/datum/export/large/sandstatue + cost = 90 //Big cash + unit_name = "sandstone statue" + export_types = list(/obj/structure/statue/sandstone/assistant) + +//////////// +//MECHS///// +//////////// + +/datum/export/large/mech + include_subtypes = FALSE + +/datum/export/large/mech/odysseus cost = 5500 unit_name = "working odysseus" export_types = list(/obj/mecha/medical/odysseus) - include_subtypes = FALSE -/datum/export/large/ripley +/datum/export/large/mech/ripley cost = 6500 unit_name = "working ripley" export_types = list(/obj/mecha/working/ripley) - include_subtypes = FALSE -/datum/export/large/firefighter +/datum/export/large/mech/firefighter cost = 9000 unit_name = "working firefighter" export_types = list(/obj/mecha/working/ripley/firefighter) - include_subtypes = FALSE -/datum/export/large/gygax +/datum/export/large/mech/gygax cost = 19000 unit_name = "working gygax" export_types = list(/obj/mecha/combat/gygax) - include_subtypes = FALSE -/datum/export/large/durand +/datum/export/large/mech/durand cost = 10000 unit_name = "working durand" export_types = list(/obj/mecha/combat/durand) - include_subtypes = FALSE -/datum/export/large/phazon +/datum/export/large/mech/phazon cost = 25000 //Little over half do to needing a core unit_name = "working phazon" export_types = list(/obj/mecha/combat/phazon) - include_subtypes = FALSE -/datum/export/large/marauder +/datum/export/large/mech/marauder cost = 15000 //Still a Combat class mech - CC tech as well! 150% "normal" boundy price. unit_name = "working marauder" export_types = list(/obj/mecha/combat/marauder) - include_subtypes = FALSE -/datum/export/large/deathripley +/datum/export/large/mech/deathripley cost = 8500 //Still a "Combat class" mech - Illegal tech as well! 165% "normal" boundy price. unit_name = "working illegally modified" export_types = list(/obj/mecha/working/ripley/deathripley) - include_subtypes = FALSE -/datum/export/large/gygaxdark +/datum/export/large/mech/gygaxdark cost = 28500 //Still a Combat class mech - Illegal tech as well! 150% "normal" boundy price. unit_name = "working illegally modified gygax" export_types = list(/obj/mecha/combat/gygax/dark) - include_subtypes = FALSE -/datum/export/large/oldripley +/datum/export/large/mech/oldripley cost = 6250 //old mech - Scrap metal ! 50% "normal" boundy price. unit_name = "working miner ripley" export_types = list(/obj/mecha/working/ripley/mining) - include_subtypes = FALSE -/datum/export/large/honk +/datum/export/large/mech/honk cost = 12000 //Still a "Combat class" mech - Comats bordem honk! unit_name = "working honker" export_types = list(/obj/mecha/combat/honker) - include_subtypes = FALSE -/datum/export/large/reticence +/datum/export/large/mech/reticence cost = 12000 //Still a "Combat class" mech - Has cloking and lethal weaponds. unit_name = "working reticence" export_types = list(/obj/mecha/combat/reticence) - include_subtypes = FALSE -/datum/export/large/seraph +/datum/export/large/mech/seraph cost = 25500 //Still a Combat class mech - CC tech as well! 150% "normal" boundy price. unit_name = "working seraph" export_types = list(/obj/mecha/combat/marauder/seraph) - include_subtypes = FALSE -/datum/export/large/mauler +/datum/export/large/mech/mauler cost = 12000 //Still a Combat class mech - CC lethal weaponds. unit_name = "working legally modified marauder" export_types = list(/obj/mecha/combat/marauder/mauler) - include_subtypes = FALSE diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 04dc76fd..cd11660e 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -1,4 +1,5 @@ /datum/export/material + k_elasticity = 0 cost = 5 // Cost per MINERAL_MATERIAL_AMOUNT, which is 2000cm3 as of April 2016. message = "cm3 of developer's tears. Please, report this on github" var/material_id = null @@ -27,51 +28,56 @@ return round(amount/MINERAL_MATERIAL_AMOUNT) -// Materials. Nothing but plasma is really worth selling. Better leave it all to RnD and sell some plasma instead. +// Materials. Selling raw can lead to a big payout but takes a lot of work for miners to get a lot. Best to craft art/rnd gear /datum/export/material/bananium - cost = 1000 + cost = 500 material_id = MAT_BANANIUM message = "cm3 of bananium" /datum/export/material/diamond - cost = 500 + cost = 250 material_id = MAT_DIAMOND message = "cm3 of diamonds" /datum/export/material/plasma - cost = 200 + cost = 100 k_elasticity = 0 material_id = MAT_PLASMA message = "cm3 of plasma" /datum/export/material/uranium - cost = 100 + cost = 50 material_id = MAT_URANIUM message = "cm3 of uranium" /datum/export/material/gold - cost = 125 + cost = 60 material_id = MAT_GOLD message = "cm3 of gold" /datum/export/material/silver - cost = 50 + cost = 25 material_id = MAT_SILVER message = "cm3 of silver" /datum/export/material/titanium - cost = 125 + cost = 60 material_id = MAT_TITANIUM message = "cm3 of titanium" /datum/export/material/plastitanium - cost = 325 // plasma + titanium costs + cost = 165 // plasma + titanium costs material_id = MAT_TITANIUM // code can only check for one material_id; plastitanium is half plasma, half titanium message = "cm3 of plastitanium" -/datum/export/material/metal +/datum/export/material/plastic cost = 5 + material_id = MAT_PLASTIC + message = "cm3 of plastic" + +/datum/export/material/metal + cost = 3 message = "cm3 of metal" material_id = MAT_METAL export_types = list( @@ -79,7 +85,7 @@ /obj/item/stack/rods, /obj/item/stack/ore, /obj/item/coin) /datum/export/material/glass - cost = 5 + cost = 3 message = "cm3 of glass" material_id = MAT_GLASS export_types = list(/obj/item/stack/sheet/glass, /obj/item/stack/ore, diff --git a/code/modules/cargo/exports/organs_robotics.dm b/code/modules/cargo/exports/organs_robotics.dm new file mode 100644 index 00000000..924d27c1 --- /dev/null +++ b/code/modules/cargo/exports/organs_robotics.dm @@ -0,0 +1,141 @@ +// Orgains and Robotics exports. Hearts, new lims, implants, etc. + +/datum/export/robotics + include_subtypes = FALSE + k_elasticity = 0 //ALWAYS worth selling upgrades + +/datum/export/implant + include_subtypes = FALSE + k_elasticity = 0 //ALWAYS worth selling upgrades + +/datum/export/orgains + include_subtypes = TRUE + k_elasticity = 0 //ALWAYS worth selling orgains + +/datum/export/implant/autodoc + cost = 150 + unit_name = "autsurgeon" + export_types = list(/obj/item/autosurgeon) + include_subtypes = TRUE + +/datum/export/implant/implant + cost = 50 + unit_name = "implant" + export_types = list(/obj/item/implant) + include_subtypes = TRUE + +/datum/export/implant/cnsreboot + cost = 350 + unit_name = "anti drop implant" + export_types = list(/obj/item/organ/cyberimp/brain/anti_drop) + +/datum/export/implant/antistun + cost = 450 + unit_name = "rebooter implant" + export_types = list(/obj/item/organ/cyberimp/brain/anti_stun) + +/datum/export/implant/breathtube + cost = 150 + unit_name = "breath implant" + export_types = list(/obj/item/organ/cyberimp/mouth/breathing_tube) + +/datum/export/implant/hungerbgone + cost = 200 + unit_name = "nutriment implant" + export_types = list(/obj/item/organ/cyberimp/chest/nutriment) + +/datum/export/implant/hungerbgoneplus + cost = 300 + unit_name = "upgraded nutriment implant" + export_types = list(/obj/item/organ/cyberimp/chest/nutriment/plus) + +/datum/export/implant/reviver + cost = 350 + unit_name = "reviver implant" + export_types = list(/obj/item/organ/cyberimp/chest/reviver) + +/datum/export/implant/thrusters + cost = 150 + unit_name = "thrusters set implant" + export_types = list(/obj/item/organ/cyberimp/chest/thrusters) + +/datum/export/implant/thrusters + cost = 150 + unit_name = "thrusters set implant" + export_types = list(/obj/item/organ/cyberimp/chest/thrusters) + +/datum/export/implant/arm + cost = 200 + unit_name = "arm set implant" + export_types = list(/obj/item/organ/cyberimp/arm/toolset, /obj/item/organ/cyberimp/arm/surgery) + include_subtypes = TRUE + +/datum/export/implant/combatarm + cost = 800 + unit_name = "combat arm set implant" + export_types = list(/obj/item/organ/cyberimp/arm/gun/laser, /obj/item/organ/cyberimp/arm/gun/taser, /obj/item/organ/cyberimp/arm/esword, /obj/item/organ/cyberimp/arm/medibeam, /obj/item/organ/cyberimp/arm/combat, /obj/item/organ/cyberimp/arm/flash, /obj/item/organ/cyberimp/arm/baton) + include_subtypes = TRUE + +/datum/export/orgains/heart + cost = 250 + unit_name = "heart" + export_types = list(/obj/item/organ/heart) + exclude_types = list(/obj/item/organ/heart/cursed, /obj/item/organ/heart/cybernetic) + +/datum/export/orgains/tongue + cost = 75 + unit_name = "tongue" + export_types = list(/obj/item/organ/tongue) + +/datum/export/orgains/eyes + cost = 50 //So many things take your eyes out anyways + unit_name = "eyes" + export_types = list(/obj/item/organ/eyes) + exclude_types = list(/obj/item/organ/eyes/robotic) + +/datum/export/orgains/stomach + cost = 50 //can be replaced + unit_name = "stomach" + export_types = list(/obj/item/organ/stomach) + +/datum/export/orgains/lungs + cost = 150 + unit_name = "lungs" + export_types = list(/obj/item/organ/lungs) + exclude_types = list(/obj/item/organ/lungs/cybernetic, /obj/item/organ/lungs/cybernetic/upgraded) + +/datum/export/orgains/liver + cost = 175 + unit_name = "liver" + export_types = list(/obj/item/organ/liver) + exclude_types = list(/obj/item/organ/liver/cybernetic, /obj/item/organ/liver/cybernetic/upgraded) + +/datum/export/orgains/tail //Shhh + cost = 500 + unit_name = "error shipment failer" + export_types = list(/obj/item/organ/tail) + +/datum/export/orgains/vocal_cords + cost = 500 + unit_name = "vocal cords" + export_types = list(/obj/item/organ/vocal_cords) //These are gotten via different races + +/datum/export/robotics/lims + cost = 30 + unit_name = "robotic lim replacement" + export_types = list(/obj/item/bodypart/l_arm/robot, /obj/item/bodypart/r_arm/robot, /obj/item/bodypart/l_leg/robot, /obj/item/bodypart/r_leg/robot, /obj/item/bodypart/chest/robot, /obj/item/bodypart/head/robot) + +/datum/export/robotics/surpluse + cost = 40 + unit_name = "robotic lim replacement" + export_types = list(/obj/item/bodypart/l_arm/robot/surplus, /obj/item/bodypart/r_arm/robot/surplus, /obj/item/bodypart/l_leg/robot/surplus, /obj/item/bodypart/r_leg/robot/surplus) + +/datum/export/robotics/surplus_upgraded + cost = 50 + unit_name = "upgraded robotic lim replacement" + export_types = list(/obj/item/bodypart/l_arm/robot/surplus_upgraded, /obj/item/bodypart/r_arm/robot/surplus_upgraded, /obj/item/bodypart/l_leg/robot/surplus_upgraded, /obj/item/bodypart/r_leg/robot/surplus_upgraded) + +/datum/export/robotics/surgery_gear_basic + cost = 5 + unit_name = "surgery tool" + export_types = list(/obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw, /obj/item/surgical_drapes) diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm index e6fda5f6..335dbadf 100644 --- a/code/modules/cargo/exports/parts.dm +++ b/code/modules/cargo/exports/parts.dm @@ -6,16 +6,96 @@ export_types = list(/obj/item/solar_assembly) /datum/export/solar/tracker_board - cost = 100 + cost = 30 unit_name = "solar tracker board" export_types = list(/obj/item/electronics/tracker) /datum/export/solar/control_board - cost = 150 + cost = 75 unit_name = "solar panel control board" export_types = list(/obj/item/circuitboard/computer/solar_control) /datum/export/swarmer - cost = 2000 + cost = 500 unit_name = "deactivated alien deconstruction drone" export_types = list(/obj/item/deactivated_swarmer) + +//Board + +/datum/export/board + cost = 5 + unit_name = "circuit board" + export_types = list(/obj/item/circuitboard) + include_subtypes = TRUE + +/datum/export/board/SMES + cost = 20 + k_elasticity = 1/2 //Only a few + unit_name = "smes board" + export_types = list(/obj/item/circuitboard/machine/smes) + +//Stock Parts + +/datum/export/subspace + cost = 3 + unit_name = "subspace part" + export_types = list(/obj/item/stock_parts/subspace) + include_subtypes = TRUE + +/datum/export/t1 + cost = 1 + unit_name = "basic stock part" + export_types = list(/obj/item/stock_parts/capacitor, /obj/item/stock_parts/scanning_module, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/micro_laser, /obj/item/stock_parts/matter_bin) + +/datum/export/t2 + cost = 2 + unit_name = "advanced stock part" + export_types = list(/obj/item/stock_parts/capacitor/adv, /obj/item/stock_parts/scanning_module/adv, /obj/item/stock_parts/manipulator/nano, /obj/item/stock_parts/micro_laser/high, /obj/item/stock_parts/matter_bin/adv) + +/datum/export/t3 + cost = 3 + unit_name = "super stock part" + export_types = list(/obj/item/stock_parts/capacitor/super, /obj/item/stock_parts/scanning_module/phasic, /obj/item/stock_parts/manipulator/pico, /obj/item/stock_parts/micro_laser/ultra, /obj/item/stock_parts/matter_bin/super) + +/datum/export/t4 + cost = 4 + unit_name = "bluespace stock part" + export_types = list(/obj/item/stock_parts/capacitor/quadratic, /obj/item/stock_parts/scanning_module/triphasic, /obj/item/stock_parts/manipulator/femto, /obj/item/stock_parts/micro_laser/quadultra, /obj/item/stock_parts/matter_bin/bluespace) + +//Cells + +/datum/export/cell + cost = 5 + unit_name = "power cell" + export_types = list(/obj/item/stock_parts/cell) + include_subtypes = TRUE + +/datum/export/cell + cost = 10 + unit_name = "upgraded power cell" + export_types = list(/obj/item/stock_parts/cell/upgraded, /obj/item/stock_parts/cell/upgraded/plus) + +/datum/export/cellhigh + cost = 15 + unit_name = "high power cell" + export_types = list(/obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high/plus) + +/datum/export/cellhyper + cost = 20 + unit_name = "super-capacity power cell" + export_types = list(/obj/item/stock_parts/cell/super, /obj/item/stock_parts/cell/hyper) + +/datum/export/cellbs + cost = 25 + unit_name = "bluespace power cell" + export_types = list(/obj/item/stock_parts/cell/bluespace) + +/datum/export/cellyellow + cost = 40 + unit_name = "slime power cell" + export_types = list(/obj/item/stock_parts/cell/high/slime) + +/datum/export/cellyellowhyper + cost = 120 //Takes a lot to make and is really good + unit_name = "hyper slime power cell" + export_types = list(/obj/item/stock_parts/cell/high/slime/hypercharged) diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index 708eb341..1072a38f 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -1,5 +1,6 @@ /datum/export/stack unit_name = "sheet" + k_elasticity = 0 /datum/export/stack/get_amount(obj/O) var/obj/item/stack/S = O @@ -9,47 +10,52 @@ // Hides +/datum/export/stack/leather + cost = 30 + unit_name = "leather" + export_types = list(/obj/item/stack/sheet/leather) + /datum/export/stack/skin/monkey - cost = 50 + cost = 30 unit_name = "monkey hide" export_types = list(/obj/item/stack/sheet/animalhide/monkey) /datum/export/stack/skin/human - cost = 100 + cost = 70 export_category = EXPORT_CONTRABAND unit_name = "piece" message = "of human skin" export_types = list(/obj/item/stack/sheet/animalhide/human) /datum/export/stack/skin/goliath_hide - cost = 200 + cost = 160 unit_name = "goliath hide" export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) /datum/export/stack/skin/cat - cost = 150 + cost = 120 export_category = EXPORT_CONTRABAND unit_name = "cat hide" export_types = list(/obj/item/stack/sheet/animalhide/cat) /datum/export/stack/skin/corgi - cost = 200 + cost = 140 export_category = EXPORT_CONTRABAND unit_name = "corgi hide" export_types = list(/obj/item/stack/sheet/animalhide/corgi) /datum/export/stack/skin/lizard - cost = 150 + cost = 50 unit_name = "lizard hide" export_types = list(/obj/item/stack/sheet/animalhide/lizard) /datum/export/stack/skin/gondola - cost = 5000 + cost = 1000 unit_name = "gondola hide" export_types = list(/obj/item/stack/sheet/animalhide/gondola) /datum/export/stack/skin/xeno - cost = 500 + cost = 300 unit_name = "alien hide" export_types = list(/obj/item/stack/sheet/animalhide/xeno) @@ -57,23 +63,23 @@ // For base materials, see materials.dm /datum/export/stack/plasteel - cost = 155 // 2000u of plasma + 2000u of metal. + cost = 105 // 2000u of plasma + 2000u of metal. message = "of plasteel" export_types = list(/obj/item/stack/sheet/plasteel) // 1 glass + 0.5 metal, cost is rounded up. /datum/export/stack/rglass - cost = 8 + cost = 6 message = "of reinforced glass" export_types = list(/obj/item/stack/sheet/rglass) /datum/export/stack/bscrystal - cost = 300 + cost = 150 message = "of bluespace crystals" export_types = list(/obj/item/stack/sheet/bluespace_crystal) /datum/export/stack/wood - cost = 30 + cost = 15 unit_name = "wood plank" export_types = list(/obj/item/stack/sheet/mineral/wood) @@ -93,16 +99,50 @@ unit_name = "cable piece" export_types = list(/obj/item/stack/cable_coil) +/datum/export/stack/cloth + cost = 10 + unit_name = "sheets" + message = "of cloth" + export_types = list(/obj/item/stack/sheet/cloth) + +/datum/export/stack/duracloth + cost = 40 + unit_name = "sheets" + message = "of duracloth" + export_types = list(/obj/item/stack/sheet/durathread) + // Weird Stuff /datum/export/stack/abductor - cost = 1000 + cost = 400 message = "of alien alloy" export_types = list(/obj/item/stack/sheet/mineral/abductor) /datum/export/stack/adamantine unit_name = "bar" - cost = 500 + cost = 250 message = "of adamantine" export_types = list(/obj/item/stack/sheet/mineral/adamantine) +/datum/export/stack/bone + cost = 20 + message = "of bones" + export_types = list(/obj/item/stack/sheet/bone) + +/datum/export/stack/bronze + unit_name = "tiles" + cost = 5 + message = "of bronze" + export_types = list(/obj/item/stack/tile/bronze) + +/datum/export/stack/brass + unit_name = "tiles" + cost = 50 + message = "of brass" + export_types = list(/obj/item/stack/tile/brass) + +/datum/export/stack/paper + unit_name = "sheets" + cost = 30 + message = "of paperframes" + export_types = list(/obj/item/stack/sheet/paperframes) diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index 9e58e4ba..9e920006 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -1,5 +1,5 @@ /datum/export/toolbox - cost = 4 + cost = 6 unit_name = "toolbox" export_types = list(/obj/item/storage/toolbox) @@ -8,7 +8,80 @@ // electrical toolbox: 36cr // robust: priceless +// Adv tools + +/datum/export/gear/powerdrill + cost = 25 + k_elasticity = 1/40 //Market can only take so much + unit_name = "power tool" + export_types = list(/obj/item/crowbar/power, /obj/item/screwdriver/power, \ + /obj/item/weldingtool/experimental, /obj/item/wirecutters/power, /obj/item/wrench/power) + include_subtypes = TRUE + +/datum/export/gear/advtool + cost = 175 + k_elasticity = 0 //Only known to be made by 2 station, market is hungery for it + unit_name = "adv tool" + export_types = list(/obj/item/crowbar/advanced, /obj/item/crowbar/abductor, /obj/item/screwdriver/abductor, /obj/item/screwdriver/advanced, \ + /obj/item/weldingtool/abductor, /obj/item/weldingtool/advanced, /obj/item/wirecutters/abductor, /obj/item/wirecutters/advanced, \ + /obj/item/wrench/abductor, /obj/item/wrench/advanced) + include_subtypes = TRUE + +// Lights/Eletronic + +/datum/export/lights + cost = 10 + unit_name = "light fixer" + export_types = list(/obj/item/wallframe/light_fixture) + include_subtypes = TRUE + +/datum/export/apc_board + cost = 5 + unit_name = "apc electronics" + export_types = list(/obj/item/electronics/apc) + include_subtypes = TRUE + +/datum/export/apc_frame + cost = 3 + unit_name = "apc frame" + export_types = list(/obj/item/wallframe/apc) + include_subtypes = TRUE + +/datum/export/floodlights + cost = 15 + unit_name = "floodlight fixer" + export_types = list(/obj/structure/floodlight_frame) + include_subtypes = TRUE + +/datum/export/bolbstubes + cost = 1 //Time + unit_name = "light replacement" + export_types = list(/obj/item/light/tube, /obj/item/light/bulb) + +/datum/export/lightreplacer + cost = 20 + unit_name = "light replacer" + export_types = list(/obj/item/lightreplacer) + // Basic tools +/datum/export/basicmining + cost = 20 + unit_name = "basic mining tool" + export_types = list(/obj/item/pickaxe, /obj/item/pickaxe/mini, /obj/item/shovel, /obj/item/resonator) + include_subtypes = FALSE + +/datum/export/upgradedmining + cost = 50 + unit_name = "mining tool" + export_types = list(/obj/item/pickaxe/silver, /obj/item/pickaxe/drill, /obj/item/gun/energy/plasmacutter, /obj/item/resonator/upgraded) + include_subtypes = FALSE + +/datum/export/advdmining + cost = 150 + unit_name = "advanced mining tool" + export_types = list(/obj/item/pickaxe/diamond, /obj/item/pickaxe/drill/diamonddrill, /obj/item/pickaxe/drill/jackhammer, /obj/item/gun/energy/plasmacutter/adv) + include_subtypes = FALSE + /datum/export/screwdriver cost = 2 unit_name = "screwdriver" @@ -31,7 +104,6 @@ message = "of wirecutters" export_types = list(/obj/item/wirecutters) - /datum/export/weldingtool cost = 5 unit_name = "welding tool" @@ -48,9 +120,8 @@ unit_name = "industrial welding tool" export_types = list(/obj/item/weldingtool/largetank, /obj/item/weldingtool/hugetank) - /datum/export/extinguisher - cost = 15 + cost = 10 unit_name = "fire extinguisher" export_types = list(/obj/item/extinguisher) include_subtypes = FALSE @@ -60,9 +131,8 @@ unit_name = "pocket fire extinguisher" export_types = list(/obj/item/extinguisher/mini) - /datum/export/flashlight - cost = 5 + cost = 3 unit_name = "flashlight" export_types = list(/obj/item/flashlight) include_subtypes = FALSE @@ -73,11 +143,10 @@ export_types = list(/obj/item/flashlight/flare) /datum/export/flashlight/seclite - cost = 10 + cost = 5 unit_name = "seclite" export_types = list(/obj/item/flashlight/seclite) - /datum/export/analyzer cost = 5 unit_name = "analyzer" @@ -88,14 +157,12 @@ unit_name = "t-ray scanner" export_types = list(/obj/item/t_scanner) - /datum/export/radio cost = 5 unit_name = "radio" export_types = list(/obj/item/radio) exclude_types = list(/obj/item/radio/mech) - /datum/export/rcd cost = 100 unit_name = "rapid construction device" @@ -111,6 +178,21 @@ unit_name = "rapid piping device" export_types = list(/obj/item/pipe_dispenser) +/datum/export/rld + cost = 150 + unit_name = "rapid light device" + export_types = list(/obj/item/construction/rld) + +/datum/export/rped + cost = 100 + unit_name = "rapid part exchange device" + export_types = list(/obj/item/storage/part_replacer) + +/datum/export/bsrped + cost = 200 + unit_name = "bluespace rapid part exchange device" + export_types = list(/obj/item/storage/part_replacer/bluespace) + /datum/export/singulo //failsafe in case someone decides to ship a live singularity to CentCom without the corresponding bounty cost = 1 unit_name = "singularity" diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index bad221c3..34c7ff36 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -3,6 +3,26 @@ /datum/export/weapon include_subtypes = FALSE +/datum/export/weapon/makeshift_shield + cost = 30 + unit_name = "unknown shield" + export_types = list(/obj/item/shield/riot, /obj/item/shield/riot/roman, /obj/item/shield/riot/buckler, /obj/item/shield/makeshift) + +/datum/export/weapon/riot_shield + cost = 50 + unit_name = "riot shield" + export_types = list(/obj/item/shield/riot, /obj/item/shield/riot/tower) + +/datum/export/weapon/riot_shield + cost = 70 + unit_name = "flash shield" + export_types = list(/obj/item/assembly/flash/shield) + +/datum/export/weapon/tele_shield + cost = 100 + unit_name = "tele shield" + export_types = list(/obj/item/shield/riot/tele, /obj/item/shield/energy) + /datum/export/weapon/baton cost = 100 unit_name = "stun baton" @@ -15,7 +35,6 @@ unit_name = "combat knife" export_types = list(/obj/item/kitchen/knife/combat) - /datum/export/weapon/taser cost = 200 unit_name = "advanced taser" @@ -27,26 +46,25 @@ export_types = list(/obj/item/gun/energy/laser) /datum/export/weapon/disabler - cost = 100 + cost = 50 unit_name = "disabler" export_types = list(/obj/item/gun/energy/disabler) /datum/export/weapon/energy_gun - cost = 300 + cost = 200 unit_name = "energy gun" export_types = list(/obj/item/gun/energy/e_gun) /datum/export/weapon/wt550 - cost = 300 + cost = 130 unit_name = "WT-550 automatic rifle" export_types = list(/obj/item/gun/ballistic/automatic/wt550) /datum/export/weapon/shotgun - cost = 300 + cost = 200 unit_name = "combat shotgun" export_types = list(/obj/item/gun/ballistic/shotgun/automatic/combat) - /datum/export/weapon/flashbang cost = 5 unit_name = "flashbang grenade" @@ -57,7 +75,6 @@ unit_name = "tear gas grenade" export_types = list(/obj/item/grenade/chem_grenade/teargas) - /datum/export/weapon/flash cost = 5 unit_name = "handheld flash" @@ -69,3 +86,271 @@ unit_name = "pair" message = "of handcuffs" export_types = list(/obj/item/restraints/handcuffs) + +////////////// +//RND Guns//// +////////////// + +/datum/export/weapon/lasercarbine + cost = 120 + unit_name = "laser carbine" + export_types = list(/obj/item/gun/energy/laser/carbine) + include_subtypes = TRUE + +/datum/export/weapon/teslagun + cost = 130 + unit_name = "tesla revolver" + export_types = list(/obj/item/gun/energy/tesla_revolver) + +/datum/export/weapon/aeg + cost = 200 //Endless power + unit_name = "advance engery gun" + export_types = list(/obj/item/gun/energy/e_gun/nuclear) + +/datum/export/weapon/deconer + cost = 600 + unit_name = "deconer" + export_types = list(/obj/item/gun/energy/decloner) + +/datum/export/weapon/ntsniper + cost = 500 + unit_name = "beam rifle" + export_types = list(/obj/item/gun/energy/beam_rifle) + +/datum/export/weapon/needle_gun + cost = 50 + unit_name = "syringe revolver" + export_types = list(/obj/item/gun/syringe/rapidsyringe) + +/datum/export/weapon/temp_gun + cost = 175 //Its just smaller + unit_name = "small temperature gun" + k_elasticity = 1/5 //Its just a smaller temperature gun, easy to mass make + export_types = list(/obj/item/gun/energy/temperature) + +/datum/export/weapon/flowergun + cost = 100 + unit_name = "floral somatoray" + export_types = list(/obj/item/gun/energy/floragun) + +/datum/export/weapon/xraygun + cost = 300 //Wall hacks + unit_name = "xray gun" + export_types = list(/obj/item/gun/energy/xray) + +/datum/export/weapon/ioncarbine + cost = 200 + k_elasticity = 1/5 //Its just a smaller temperature gun, easy to mass make + unit_name = "ion carbine" + export_types = list(/obj/item/gun/energy/ionrifle/carbine) + +/datum/export/weapon/largeebow + cost = 500 + unit_name = "crossbow" + export_types = list(/obj/item/gun/energy/kinetic_accelerator/crossbow/large) + +/datum/export/weapon/largebomb + cost = 20 + unit_name = "large grenade" + export_types = list(/obj/item/grenade/chem_grenade/large) + +/datum/export/weapon/gravworm + cost = 150 + unit_name = "bluespace weapon" + export_types = list(/obj/item/gun/energy/wormhole_projector, /obj/item/gun/energy/gravity_gun) + +/datum/export/weapon/cryopryo + cost = 70 + unit_name = "heat based grenade" + export_types = list(/obj/item/grenade/chem_grenade/pyro, /obj/item/grenade/chem_grenade/cryo) + +/datum/export/weapon/advgrenade + cost = 80 + unit_name = "advanced grenade" + export_types = list(/obj/item/grenade/chem_grenade/adv_release) + +///////////////// +//Ammo and Pins// +///////////////// + +/datum/export/weapon/wtammo + cost = 10 + unit_name = "WT-550 automatic rifle ammo" + export_types = list(/obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9/wtrubber) + +/datum/export/weapon/wtammo/advanced + cost = 30 + unit_name = "advanced WT-550 automatic rifle ammo" + export_types = list( /obj/item/ammo_box/magazine/wt550m9/wtap, /obj/item/ammo_box/magazine/wt550m9/wttx, /obj/item/ammo_box/magazine/wt550m9/wtic) + +/datum/export/weapon/mindshield + cost = 80 + unit_name = "mindshield locked pin" + export_types = list(/obj/item/firing_pin/implant/mindshield) + +/datum/export/weapon/testrange + cost = 20 + unit_name = "test range pin" + export_types = list(/obj/item/firing_pin/test_range) + +/datum/export/weapon/techslug + cost = 15 + k_elasticity = 0 + unit_name = "advanced shotgun shell" + export_types = list(/obj/item/ammo_casing/shotgun/dragonsbreath, /obj/item/ammo_casing/shotgun/meteorslug, /obj/item/ammo_casing/shotgun/pulseslug, /obj/item/ammo_casing/shotgun/frag12, /obj/item/ammo_casing/shotgun/ion, /obj/item/ammo_casing/shotgun/laserslug) + +///////////////////////// +//The Traitor Sell Outs// +///////////////////////// + +/datum/export/weapon/pistol + cost = 120 + unit_name = "illegal firearm" + export_types = list(/obj/item/gun/ballistic/automatic/pistol) + +/datum/export/weapon/revolver + cost = 200 + unit_name = "large handgun" + export_types = list(/obj/item/gun/ballistic/revolver/syndie) + +/datum/export/weapon/rocketlauncher + cost = 1000 + unit_name = "rocket launcher" + export_types = list(/obj/item/gun/ballistic/rocketlauncher) + +/datum/export/weapon/antitank + cost = 300 + unit_name = "hand cannon" + export_types = list(/obj/item/gun/ballistic/automatic/pistol/antitank/syndicate) + +/datum/export/weapon/clownstuff + cost = 500 + unit_name = "clown war tech" + export_types = list(/obj/item/pneumatic_cannon/pie/selfcharge, /obj/item/shield/energy/bananium, /obj/item/melee/transforming/energy/sword/bananium, ) + +/datum/export/weapon/bulldog + cost = 400 + unit_name = "drum loaded shotgun" + export_types = list(/obj/item/gun/ballistic/automatic/shotgun/bulldog) + +/datum/export/weapon/smg + cost = 350 + unit_name = "automatic c-20r" + export_types = list(/obj/item/gun/ballistic/automatic/c20r) + +/datum/export/weapon/duelsaber + cost = 360 //Get it? + unit_name = "energy saber" + export_types = list(/obj/item/twohanded/dualsaber) + +/datum/export/weapon/esword + cost = 130 + unit_name = "energy sword" + export_types = list(/obj/item/melee/transforming/energy/sword/cx/traitor, /obj/item/melee/transforming/energy/sword/saber) + +/datum/export/weapon/rapier + cost = 150 + unit_name = "rapier" + export_types = list(/obj/item/storage/belt/sabre/rapier) + +/datum/export/weapon/flamer + cost = 20 //welder + some rods cheap + unit_name = "flamethrower" + export_types = list(/obj/item/flamethrower) + +/datum/export/weapon/gloves + cost = 90 + unit_name = "starstruck gloves" + export_types = list(/obj/item/clothing/gloves/rapid) + +/datum/export/weapon/l6 + cost = 500 + unit_name = "l6 saw" + export_types = list(/obj/item/gun/ballistic/automatic/l6_saw) + +/datum/export/weapon/m90 + cost = 400 + unit_name = "assault class weapon" + export_types = list(/obj/item/gun/ballistic/automatic/m90) + +/datum/export/weapon/powerglove + cost = 100 + unit_name = "hydraulic glove" + export_types = list(/obj/item/melee/powerfist) + +/datum/export/weapon/sniper + cost = 750 + unit_name = ".50 sniper" + export_types = list(/obj/item/gun/ballistic/automatic/sniper_rifle/syndicate) + +/datum/export/weapon/ebow + cost = 600 + unit_name = "mini crossbow" + export_types = list(/obj/item/gun/energy/kinetic_accelerator/crossbow) + +/datum/export/weapon/m10mm + cost = 10 + unit_name = "10mm magazine" + export_types = list(/obj/item/ammo_box/magazine/m10mm) + include_subtypes = TRUE + +/datum/export/weapon/dj_a_bomb + cost = 100 + unit_name = "40mm shell" + export_types = list(/obj/item/ammo_casing/a40mm) + +/datum/export/weapon/point50mags + cost = 50 + unit_name = ".50 magazine" + export_types = list(/obj/item/ammo_box/magazine/sniper_rounds) + include_subtypes = TRUE + +/datum/export/weapon/smg_mag + cost = 45 + unit_name = "smg magazine" + export_types = list(/obj/item/ammo_box/magazine/smgm45, /obj/item/ammo_box/magazine/m556) + +/datum/export/weapon/l6sawammo + cost = 60 + unit_name = "l6 saw ammo box" + export_types = list(/obj/item/ammo_box/magazine/mm195x129) + include_subtypes = TRUE + +/datum/export/weapon/rocket + cost = 120 + unit_name = "rocket" + export_types = list(/obj/item/ammo_casing/caseless/rocket) + include_subtypes = TRUE + +/datum/export/weapon/ninemmammo + cost = 20 + unit_name = "9mm ammo magazine" + export_types = list(/obj/item/ammo_box/magazine/pistolm9mm) + +/datum/export/weapon/fletcher_ammo + cost = 60 + unit_name = "illegal ammo magazines" + export_types = list(/obj/item/ammo_box/magazine/flechette) + include_subtypes = TRUE + +/datum/export/weapon/dj_a_pizzabomb + cost = -6000 + unit_name = "Repair Costs" + export_types = list(/obj/item/pizzabox/bomb, /obj/item/sbeacondrop/bomb) + +/datum/export/weapon/real_toolbox + cost = 600 + unit_name = "golden toolbox" + export_types = list(/obj/item/storage/toolbox/gold_real) + +/datum/export/weapon/melee + cost = 30 + unit_name = "unlisted weapon" + export_types = list(/obj/item/melee) + include_subtypes = TRUE + +/datum/export/weapon/gun + cost = 30 + unit_name = "unlisted weapon" + export_types = list(/obj/item/gun) + include_subtypes = TRUE diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 69e4e65f..89c463f3 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -36,3296 +36,3 @@ else for(var/item in contains) new item(C) - -// 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 = 2000 - contraband = TRUE - contains = list(/obj/vehicle/ridden/atv, - /obj/item/key, - /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/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 = 3500 - 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/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas) - crate_name = "emergency crate" - crate_type = /obj/structure/closet/crate/internals - -/datum/supply_pack/emergency/radiatione_emergency - name = "Emergency 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 few pill bottles that are able to handles radiation and the affects of the poisoning." - cost = 2500 - 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/storage/pill_bottle/mutarad, - /obj/item/storage/firstaid/radbgone) - crate_name = "radiation protection crate" - crate_type = /obj/structure/closet/crate/radiation - -/datum/supply_pack/emergency/rcds - name = "Emergency RCDs" - desc = "Bombs going off on station? SME blown and now you need to fix the hole it left behind? Well this crate has a pare of Rcds to be able to easily fix up any problem you may have!" - cost = 1500 - contains = list(/obj/item/construction/rcd, - /obj/item/construction/rcd) - crate_name = "emergency rcds" - crate_type = /obj/structure/closet/crate/internals - -/datum/supply_pack/emergency/soft_suit - name = "Emergency Space Suit " - desc = "Is there bombs going off left and right? Is there meteors shooting around the station? Well we have two fragile space suit for emergencys as well as air and masks." - cost = 1000 - contains = list(/obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/suit/space/fragile, - /obj/item/clothing/suit/space/fragile, - /obj/item/clothing/head/helmet/space/fragile, - /obj/item/clothing/head/helmet/space/fragile) - crate_name = "emergency crate" - crate_type = /obj/structure/closet/crate/internals - -/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 = 1000 - 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 = 1000 - 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 = 1000 - 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/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air) - 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 14 Metal Foam Grenades." - cost = 2000 - contains = list(/obj/item/storage/box/metalfoam, - /obj/item/storage/box/metalfoam) - crate_name = "metal foam grenade crate" - -/datum/supply_pack/emergency/syndicate - name = "NULL_ENTRY" - desc = "(#@&^$THIS PACKAGE CONTAINS 30TC WORTH OF SOME RANDOM SYNDICATE GEAR WE HAD LYING AROUND THE WAREHOUSE. GIVE EM HELL, OPERATIVE@&!*() " - hidden = TRUE - cost = 20000 - contains = list() - crate_name = "emergency crate" - crate_type = /obj/structure/closet/crate/internals - dangerous = TRUE - -/datum/supply_pack/emergency/syndicate/fill(obj/structure/closet/crate/C) - var/crate_value = 30 - var/list/uplink_items = get_uplink_items(SSticker.mode) - while(crate_value) - var/category = pick(uplink_items) - var/item = pick(uplink_items[category]) - var/datum/uplink_item/I = uplink_items[category][item] - if(!I.surplus_nullcrates || prob(100 - I.surplus_nullcrates)) - continue - if(crate_value < I.cost) - continue - crate_value -= I.cost - new I.item(C) - -/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 = 4000 - 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, internals tank, and helmet." - cost = 2000 - 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) - 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 = 1000 - 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 two aging suits from Space-Goodwill. Requires EVA access to open." - cost = 3000 - access = ACCESS_EVA - contains = list(/obj/item/clothing/suit/space, - /obj/item/clothing/suit/space, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/breath) - crate_name = "space suit crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/emergency/spacejets - name = "Spare EVA Jetpacks" - desc = "Contains three EVA grade jectpaks. Requires EVA access to open." - cost = 2000 - access = ACCESS_EVA - contains = list(/obj/item/tank/jetpack/carbondioxide/eva, - /obj/item/tank/jetpack/carbondioxide/eva, - /obj/item/tank/jetpack/carbondioxide/eva) - crate_name = "eva jetpacks crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/emergency/specialops - name = "Special Ops Supplies" - desc = "(*!&@#TOO CHEAP FOR 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 = 2000 - 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, two sprays of Plant-B-Gone, and two anti-weed chemical grenades. Warranty void if used on ambrosia. Requires Hydroponics access to open." - cost = 1500 - 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, - /obj/item/reagent_containers/spray/plantbgone, - /obj/item/reagent_containers/spray/plantbgone) - crate_name = "weed control crate" - crate_type = /obj/structure/closet/crate/secure/hydroponics - -/datum/supply_pack/medical/anitvirus - name = "Virus Containment Crate" - desc = "Viro let out a death plague Mk II again? Someone didnt wash their hands? Old plagues born anew? Well this crate is for you! Hope you cure it before it breaks out of the station... This crate needs medical access to open and has two bio suits, a box of needles and beakers, five spaceacillin needles, and a medibot." - cost = 3000 - access = ACCESS_MEDICAL - contains = list(/mob/living/simple_animal/bot/medbot, - /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/reagent_containers/syringe/antiviral, - /obj/item/reagent_containers/syringe/antiviral, - /obj/item/reagent_containers/syringe/antiviral, - /obj/item/reagent_containers/syringe/antiviral, - /obj/item/reagent_containers/syringe/antiviral, - /obj/item/storage/box/syringes, - /obj/item/storage/box/beakers) - crate_name = "virus containment unit crate" - crate_type = /obj/structure/closet/crate/secure/plasma - - -/datum/supply_pack/emergency/medicalemergency - name = "Emergency Medical Supplies" - desc = "Emergency supplies for a front-line medic. Contains two boxes of body bags, a medical HUD, a defib unit, medical belt, toxin bottles, epipens, and several types of medical kits." - cost = 6600 - contains = list(/obj/item/storage/box/bodybags, - /obj/item/storage/box/bodybags, - /obj/item/clothing/glasses/hud/health, - /obj/item/defibrillator/loaded, - /obj/item/storage/belt/medical, - /obj/item/storage/firstaid/toxin, - /obj/item/storage/firstaid/o2, - /obj/item/storage/firstaid/brute, - /obj/item/storage/firstaid/fire, - /obj/item/reagent_containers/glass/bottle/toxin, - /obj/item/reagent_containers/glass/bottle/toxin, - /obj/item/storage/box/medipens) - crate_name = "medical emergency crate" - crate_type = /obj/structure/closet/crate/medical - -/datum/supply_pack/emergency/medemergencylite - name = "Emergency Medical Supplies (Lite)" - desc = "A less than optimal, but still effective, set of tools for emergency care. Contains a box of bodybags, a medical HUD, healing sprays, charcoal, some gauze, and some spare medipens." - cost = 2800 - contains = list(/obj/item/storage/box/bodybags, - /obj/item/stack/medical/gauze, - /obj/item/clothing/glasses/hud/health, - /obj/item/reagent_containers/medspray/styptic, - /obj/item/reagent_containers/medspray/silver_sulf, - /obj/item/reagent_containers/medspray/synthflesh, - /obj/item/reagent_containers/glass/bottle/charcoal, - /obj/item/reagent_containers/glass/bottle/charcoal, - /obj/item/reagent_containers/hypospray/medipen, - /obj/item/reagent_containers/hypospray/medipen, - /obj/item/reagent_containers/hypospray/medipen) - crate_name = "medical emergency crate (lite)" - crate_type = /obj/structure/closet/crate/medical - -/datum/supply_pack/emergency/mre - name = "MRE supply kit (emergency rations)" - desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank." - cost = 2000 - contains = list(/obj/item/storage/box/mre/menu1/safe, - /obj/item/storage/box/mre/menu1/safe, - /obj/item/storage/box/mre/menu2/safe, - /obj/item/storage/box/mre/menu2/safe, - /obj/item/storage/box/mre/menu3, - /obj/item/storage/box/mre/menu4/safe) - crate_name = "MRE crate (emergency rations)" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Security //////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/security - group = "Security" - access = ACCESS_SECURITY - crate_type = /obj/structure/closet/crate/secure/gear - -/datum/supply_pack/security/armor - name = "Armor Crate" - desc = "Three vests of well-rounded, decently-protective armor. Requires Security access to open." - cost = 1000 - 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 = 1500 - 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 = 2000 - 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 = 1000 - 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 = 2000 - 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/russianclothing - name = "Russian Surplus Clothing" - desc = "An old russian crate full of surplus armor that they used to use! Has two sets of bulletproff armor, a few union suits and some warm hats!" - contraband = TRUE - cost = 5000 // Its basicly sec suits, good boots/gloves - contains = list(/obj/item/clothing/suit/security/officer/russian, - /obj/item/clothing/suit/security/officer/russian, - /obj/item/clothing/shoes/combat, - /obj/item/clothing/shoes/combat, - /obj/item/clothing/head/ushanka, - /obj/item/clothing/head/ushanka, - /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas) - crate_name = "surplus russian clothing" - crate_type = /obj/structure/closet/crate/internals - -/datum/supply_pack/security/russianmosin - name = "Russian Minutemen Gear" - desc = "An old russian Minutemen crate, comes with a full russian outfit, a mosin and a stripper clip." - contraband = TRUE - access = FALSE - cost = 5000 // - contains = list(/obj/item/clothing/suit/security/officer/russian, - /obj/item/clothing/shoes/combat, - /obj/item/clothing/head/ushanka, - /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/mask/gas, - /obj/item/gun/ballistic/shotgun/boltaction, - /obj/item/ammo_box/a762) - crate_name = "surplus russian gear" - crate_type = /obj/structure/closet/crate/internals - -/datum/supply_pack/security/sechardsuit - name = "Sec Hardsuit" - desc = "One Sec Hardsuit with a small air tank and mask." - cost = 3000 // half of SWAT gear for have the armor and half the gear - contains = list(/obj/item/clothing/suit/space/hardsuit/security, - /obj/item/tank/internals/air, - /obj/item/clothing/mask/gas) - crate_name = "sec hardsuit crate" - -/datum/supply_pack/security/securitybarriers - name = "Security Barrier Grenades" - desc = "Stem the tide with four Security Barrier grenades. Requires Security access to open." - contains = list(/obj/item/grenade/barrier, - /obj/item/grenade/barrier, - /obj/item/grenade/barrier, - /obj/item/grenade/barrier) - cost = 2000 - crate_name = "security barriers crate" - -/datum/supply_pack/security/securityclothes - name = "Security Clothing Crate" - desc = "Contains appropriate outfits for the station's private security force. Contains outfits for the Warden, Head of Security, and two Security Officers. Each outfit comes with a rank-appropriate jumpsuit, suit, and beret. Requires Security access to open." - cost = 3000 - contains = list(/obj/item/clothing/under/rank/security/navyblue, - /obj/item/clothing/under/rank/security/navyblue, - /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/warden/navyblue, - /obj/item/clothing/suit/security/warden, - /obj/item/clothing/head/beret/sec/navywarden, - /obj/item/clothing/under/rank/head_of_security/navyblue, - /obj/item/clothing/suit/security/hos, - /obj/item/clothing/head/beret/sec/navyhos) - crate_name = "security clothing 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 = 1000 - 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 = 2000 - contains = list(/obj/item/storage/box/firingpins, - /obj/item/storage/box/firingpins) - crate_name = "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 = 6000 //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 = 1000 - contains = list(/obj/item/melee/baton/loaded, - /obj/item/melee/baton/loaded, - /obj/item/melee/baton/loaded) - crate_name = "stun baton crate" - -/datum/supply_pack/security/taser - name = "Taser Crate" - desc = "From the depths of stunbased combat, this order rises above, supreme. Contains three hybrid tasers, capable of firing both electrodes and disabling shots. Requires Security access to open." - cost = 3000 - contains = list(/obj/item/gun/energy/e_gun/advtaser, - /obj/item/gun/energy/e_gun/advtaser, - /obj/item/gun/energy/e_gun/advtaser) - crate_name = "taser crate" - -/datum/supply_pack/security/wall_flash - name = "Wall-Mounted Flash Crate" - desc = "Contains four wall-mounted flashes. Requires Security access to open." - cost = 1000 - 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" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Armory ////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/security/armory - group = "Armory" - access = 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 = 1500 - 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 Helmet Crate" - desc = "Contains three sets of bulletproof helmets. Guaranteed to reduce a bullet's stopping power by over half. Requires Armory access to open." - cost = 1500 - contains = list(/obj/item/clothing/head/helmet/alt, - /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/head/helmet/alt) - crate_name = "bulletproof helmet crate" - -/datum/supply_pack/security/armory/chemimp - name = "Chemical Implants Crate" - desc = "Contains five Remote Chemical implants. Requires Armory access to open." - cost = 2000 - contains = list(/obj/item/storage/box/chemimp) - crate_name = "chemical implant crate" - -/datum/supply_pack/security/armory/combatknives - name = "Combat Knives Crate" - desc = "Contains three sharpened combat knives. Each knife guaranteed to fit snugly inside any Nanotrasen-standard boot. Requires Armory access to open." - cost = 3000 - contains = list(/obj/item/kitchen/knife/combat, - /obj/item/kitchen/knife/combat, - /obj/item/kitchen/knife/combat) - crate_name = "combat knife 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, with three Shotgun Bandoliers, as well as seven buchshot and 12g shotgun slugs. Requires Armory access to open." - cost = 8000 - 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, - /obj/item/storage/box/lethalshot, - /obj/item/storage/box/lethalslugs) - crate_name = "combat shotguns crate" - -/datum/supply_pack/security/armory/dragnetgun - name = "DRAGnet gun Crate" - desc = "Contains two DRAGnet gun. A Dynamic Rapid-Apprehension of the Guilty net the revolution in law enforcement technology that YOU Want! Requires Armory access to open." - cost = 3500 - contains = list(/obj/item/gun/energy/e_gun/dragnet, - /obj/item/gun/energy/e_gun/dragnet) - crate_name = "anti riot net guns crate" - -/datum/supply_pack/security/armory/energy - name = "Energy Guns Crate" - desc = "Contains three Energy Guns, capable of firing both nonlethal and lethal blasts of light. Requires Armory access to open." - cost = 3500 - contains = list(/obj/item/gun/energy/e_gun, - /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 // Theres boxes in 2 lockers as well as gateway never realy being used sad - name = "Exile Implants Crate" - desc = "Contains five Exile implants. Requires Armory access to open." - cost = 1000 - contains = list(/obj/item/storage/box/exileimp) - crate_name = "exile implant crate" - -/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 = 4000 - 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. Requires Armory access to open." - cost = 1000 - contains = list(/obj/item/storage/box/trackimp) - crate_name = "tracking implant crate" - -/datum/supply_pack/security/armory/fire - name = "Incendiary Weapons Crate" - desc = "Burn, baby burn. Contains three incendiary grenades, seven incendiary slugs, three plasma canisters, and a flamethrower. Requires Brige access to open." - cost = 1500 - 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, - /obj/item/storage/box/fireshot) - crate_name = "incendiary weapons crate" - crate_type = /obj/structure/closet/crate/secure/plasma - dangerous = TRUE - -/datum/supply_pack/security/armory/miniguns - name = "Personal Miniature Energy Guns" - desc = "Contains three miniature energy guns. Each gun has a disabler and a lethal option. Requires Armory access to open." - cost = 5000 - contains = list(/obj/item/gun/energy/e_gun/mini, - /obj/item/gun/energy/e_gun/mini, - /obj/item/gun/energy/e_gun/mini) - crate_name = "personal energy guns crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/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 = 2000 - 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 = 1500 - 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 = 1500 - 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 = 2000 - contains = list(/obj/item/shield/riot, - /obj/item/shield/riot, - /obj/item/shield/riot) - crate_name = "riot shields crate" - -/datum/supply_pack/security/armory/riotshotguns - name = "Riot Shotgun Crate" - desc = "For when the greytide gets really uppity. Contains three riot shotguns, seven rubber shot and beanbag shells. Requires Armory access to open." - cost = 6000 - contains = list(/obj/item/gun/ballistic/shotgun/riot, - /obj/item/gun/ballistic/shotgun/riot, - /obj/item/gun/ballistic/shotgun/riot, - /obj/item/storage/box/rubbershot, - /obj/item/storage/box/beanbag) - crate_name = "riot shotgun crate" - -/datum/supply_pack/security/armory/swat - name = "SWAT Crate" - desc = "Contains two fullbody sets of tough, fireproof, pressurized 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 = 6000 - contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, - /obj/item/clothing/head/helmet/swat/nanotrasen, - /obj/item/clothing/suit/space/swat, - /obj/item/clothing/suit/space/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/combat, - /obj/item/clothing/gloves/combat) - crate_name = "swat crate" - -/datum/supply_pack/security/armory/swattasers //Lesser AEG tbh - name = "SWAT tatical tasers Crate" - desc = "Contains two tactical energy gun, these guns are able to tase, disable and lethal as well as hold a seclight. Requires Armory access to open." - cost = 8000 - contains = list(/obj/item/gun/energy/e_gun/stun, - /obj/item/gun/energy/e_gun/stun) - crate_name = "swat taser crate" - -/datum/supply_pack/security/armory/woodstock - name = "Classic WoodStock Shotguns Crate" - desc = "Contains three rustic, pumpaction shotguns. Requires Armory access to open." - cost = 3500 - contains = list(/obj/item/gun/ballistic/shotgun, - /obj/item/gun/ballistic/shotgun, - /obj/item/gun/ballistic/shotgun) - crate_name = "woodstock shotguns crate" - -/datum/supply_pack/security/armory/wt550 - name = "WT-550 Semi-Auto Rifle Crate" - desc = "Contains two high-powered, semiautomatic rifles chambered in 4.6x30mm. Requires Armory access to open." - cost = 3500 - contains = list(/obj/item/gun/ballistic/automatic/wt550, - /obj/item/gun/ballistic/automatic/wt550) - crate_name = "auto rifle crate" - -/datum/supply_pack/security/armory/wt550ammo - name = "WT-550 Semi-Auto SMG Ammo Crate" - desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 2500 - contains = list(/obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9) - crate_name = "auto rifle ammo crate" - -/datum/supply_pack/security/armory/wt550ammo_nonlethal // Takes around 12 shots to stun crit someone - name = "WT-550 Semi-Auto SMG Non-Lethal Ammo Crate" - desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 1500 - contains = list(/obj/item/ammo_box/magazine/wt550m9/wtrubber, - /obj/item/ammo_box/magazine/wt550m9/wtrubber, - /obj/item/ammo_box/magazine/wt550m9/wtrubber, - /obj/item/ammo_box/magazine/wt550m9/wtrubber) - crate_name = "auto rifle ammo crate" - -/datum/supply_pack/security/armory/wt550ammo_special - name = "WT-550 Semi-Auto SMG Special Ammo Crate" - desc = "Contains 2 20-round Armour Piercing and Incendiary magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 4500 - contains = list(/obj/item/ammo_box/magazine/wt550m9/wtap, - /obj/item/ammo_box/magazine/wt550m9/wtap, - /obj/item/ammo_box/magazine/wt550m9/wtic, - /obj/item/ammo_box/magazine/wt550m9/wtic) - crate_name = "auto rifle ammo 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 = 2500 - contains = list(/obj/machinery/shieldgen, - /obj/machinery/shieldgen) - crate_name = "anti-breach shield projector crate" - -/datum/supply_pack/engineering/conveyor - name = "Conveyor Assembly Crate" - desc = "Keep production moving along with six conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book." - cost = 750 - contains = list(/obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /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 = 1300 - 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/engihardsuit - name = "Engineering Hardsuit" - desc = "Poly 'Who stole all the hardsuits!' Well now you can get more hardsuits if needed! NOTE ONE HARDSUIT IS IN THIS CRATE, as well as one air tank and mask!" - cost = 2500 - contains = list(/obj/item/tank/internals/air, - /obj/item/clothing/mask/gas, - /obj/item/clothing/suit/space/hardsuit/engine) - crate_name = "engineering hardsuit" - -/datum/supply_pack/engineering/atmoshardsuit - name = "Atmospherics Hardsuit" - desc = "Too many techs and not enough hardsuits? Time to buy some more! Comes with gas mask and air tank. Ask the CE to open." - cost = 5000 - access = ACCESS_CE - contains = list(/obj/item/tank/internals/air, - /obj/item/clothing/mask/gas, - /obj/item/clothing/suit/space/hardsuit/engine/atmos) - crate_name = "atmospherics hardsuit" - crate_type = /obj/structure/closet/crate/secure/engineering - -/datum/supply_pack/engineering/industrialrcd - name = "Industrial RCD" - desc = "A industrial RCD in case the station has gone through more then one meteor storm and the CE needs to bring out the somthing a bit more reliable. Does not contain spare ammo for the industrial RCD or any other RCD modles." - cost = 4500 - access = ACCESS_CE - contains = list(/obj/item/construction/rcd/industrial) - crate_name = "industrial rcd" - crate_type = /obj/structure/closet/crate/secure/engineering - -/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 = 2000 //Made of pure-grade bullshittinium - 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 - -/obj/item/stock_parts/cell/inducer_supply - maxcharge = 5000 - charge = 5000 - -/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 = 2000 - 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 = 2500 - 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 = 1000 - 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/powertools - name = "Power Tools Crate" - desc = "Setting up the aux base? Working out in space? Maybe you just hate doing things by hand. Grab some power tools and slash your workload in half! Contains a hardhat, hazard vest, Hand Drill, and Jaws of Life" - cost = 6500 - access = ACCESS_ENGINE - contains = list(/obj/item/clothing/head/hardhat, - /obj/item/clothing/suit/hazardvest, - /obj/item/screwdriver/power, - /obj/item/crowbar/power) - crate_name = "power tools crate" - crate_type = /obj/structure/closet/crate/secure/engineering - -/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 = 5000 - access = 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." - 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 = 1000 - crate_name = "toolbox crate" - -/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 = 15000 - special = TRUE - contains = list(/obj/item/circuitboard/machine/bsa/front, - /obj/item/circuitboard/machine/bsa/middle, - /obj/item/circuitboard/machine/bsa/back, - /obj/item/circuitboard/computer/bsa_control - ) - crate_name= "bluespace artillery parts crate" - -/datum/supply_pack/engineering/dna_vault - name = "DNA Vault Parts" - desc = "Secure the longevity of the current state of humanity within this massive library of scientific knowledge, capable of granting superhuman powers and abilities. Highly advanced research is required for proper construction. Also contains five DNA probes." - cost = 12000 - special = TRUE - 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 = 3000 - special = TRUE - 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 = 4000 - 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 = 4000 - contains = list(/obj/item/circuitboard/computer/sat_control) - crate_name= "shield control board crate" - -/datum/supply_pack/engine/energy_harvester - name = "Energy Harvesting Module" - desc = "A Device which upon connection to a node, will harvest the energy and send it to engineerless stations in return for credits, derived from a syndicate powersink model." - cost = 7500 - access = ACCESS_CE - contains = list(/obj/item/energy_harvester) - crate_name = "energy harvesting module crate" - crate_type = /obj/structure/closet/crate/secure/engineering - -////////////////////////////////////////////////////////////////////////////// -//////////////////////// Engine Construction ///////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/engine - group = "Engine Construction" - crate_type = /obj/structure/closet/crate/engineering - -/datum/supply_pack/engine/am_jar - name = "Antimatter Containment Jar Crate" - desc = "Two Antimatter containment jars stuffed into a single crate." - cost = 2000 - contains = list(/obj/item/am_containment, - /obj/item/am_containment) - crate_name = "antimatter jar crate" - -/datum/supply_pack/engine/am_core - name = "Antimatter Control Crate" - desc = "The brains of the Antimatter engine, this device is sure to teach the station's powergrid the true meaning of real power." - cost = 5000 - contains = list(/obj/machinery/power/am_control_unit) - crate_name = "antimatter control crate" - -/datum/supply_pack/engine/am_shielding - name = "Antimatter Shielding Crate" - desc = "Contains ten Antimatter shields, somehow crammed into a crate." - cost = 2000 - contains = list(/obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container, - /obj/item/am_shielding_container) //10 shields: 3x3 containment and a core - crate_name = "antimatter shielding crate" - -/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 = 1500 - 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 = 1500 - 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's lightning under control." - cost = 1700 - contains = list(/obj/machinery/power/grounding_rod, - /obj/machinery/power/grounding_rod, - /obj/machinery/power/grounding_rod, - /obj/machinery/power/grounding_rod) - crate_name = "grounding rod crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - -/datum/supply_pack/engine/mason - name = "M.A.S.O.N RIG Crate" - desc = "The rare M.A.S.O.N RIG. Requires CE access to open." - cost = 15000 - access = ACCESS_CE - contains = list(/obj/item/clothing/suit/space/hardsuit/ancient/mason) - crate_name = "M.A.S.O.N Rig" - crate_type = /obj/structure/closet/crate/secure/engineering - -/datum/supply_pack/engine/PA - name = "Particle Accelerator Crate" - desc = "A supermassive black hole or hyper-powered teslaball are the perfect way to spice up any party! This \"My First Apocalypse\" kit contains everything you need to build your own Particle Accelerator! Ages 10 and up." - cost = 3000 - contains = list(/obj/structure/particle_accelerator/fuel_chamber, - /obj/machinery/particle_accelerator/control_box, - /obj/structure/particle_accelerator/particle_emitter/center, - /obj/structure/particle_accelerator/particle_emitter/left, - /obj/structure/particle_accelerator/particle_emitter/right, - /obj/structure/particle_accelerator/power_box, - /obj/structure/particle_accelerator/end_cap) - crate_name = "particle accelerator crate" - -/datum/supply_pack/engine/collector - name = "Radiation Collector Crate" - desc = "Contains three radiation collectors. Useful for collecting energy off nearby Supermatter Crystals, Singularities or Teslas!" - cost = 2500 - contains = list(/obj/machinery/power/rad_collector, - /obj/machinery/power/rad_collector, - /obj/machinery/power/rad_collector) - crate_name = "collector crate" - -/datum/supply_pack/engine/sing_gen - name = "Singularity Generator Crate" - desc = "The key to unlocking the power of Lord Singuloth. Particle Accelerator not included." - cost = 5000 - contains = list(/obj/machinery/the_singularitygen) - crate_name = "singularity generator crate" - -/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 = 2000 - 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 = 10000 - 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 power generation: This pack of four Tesla coils can do it all!" - cost = 2500 - contains = list(/obj/machinery/power/tesla_coil, - /obj/machinery/power/tesla_coil, - /obj/machinery/power/tesla_coil, - /obj/machinery/power/tesla_coil) - crate_name = "tesla coil crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - -/datum/supply_pack/engine/tesla_gen - name = "Tesla Generator Crate" - desc = "The key to unlocking the power of the Tesla energy ball. Particle Accelerator not included." - cost = 5000 - contains = list(/obj/machinery/the_singularitygen/tesla) - crate_name = "tesla generator crate" - -/datum/supply_pack/engine/teg - name = "Thermoelectric Generator" - desc = "Contains your very own Thermoelectric Generator. Time to turn cargo into a blazing hellfire, perhaps?" - cost = 4000 - contains = list(/obj/machinery/power/generator) - crate_name = "thermoelectric generator crate" - -////////////////////////////////////////////////////////////////////////////// -/////////////////////// 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 = 1000 - contains = list(/obj/item/stack/sheet/cardboard/fifty) - crate_name = "cardboard sheets crate" - -/datum/supply_pack/materials/glass50 - name = "50 Glass Sheets" - desc = "Let some nice light in with fifty glass sheets!" - cost = 1000 - contains = list(/obj/item/stack/sheet/glass/fifty) - crate_name = "glass sheets crate" - -/datum/supply_pack/materials/metal50 - name = "50 Metal Sheets" - desc = "Any construction project begins with a good stack of fifty metal sheets!" - cost = 1000 - contains = list(/obj/item/stack/sheet/metal/fifty) - crate_name = "metal sheets crate" - -/datum/supply_pack/materials/plasteel20 - name = "20 Plasteel Sheets" - desc = "Reinforce the station's integrity with twenty plasteel sheets!" - cost = 7500 - 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 = 16500 - 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 = 1000 - 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 = 1000 - 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 = 2000 - contains = list(/obj/item/stack/sheet/mineral/wood/fifty) - crate_name = "wood planks crate" - -/datum/supply_pack/materials/rcdammo - name = "Spare RDC ammo" - desc = "This crate contains sixteen RCD ammo packs, to help with any holes or projects people mite be working on." - cost = 3750 - contains = list(/obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo, - /obj/item/rcd_ammo) - crate_name = "rcd ammo" - -/datum/supply_pack/materials/bz - name = "BZ Canister Crate" - desc = "Contains a canister of BZ. Requires Toxins access to open." - cost = 7500 // Costs 3 credits more than what you can get for selling it. - access = ACCESS_TOX_STORAGE - contains = list(/obj/machinery/portable_atmospherics/canister/bz) - crate_name = "BZ canister crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/materials/carbon_dio - name = "Carbon Dioxide Canister" - desc = "Contains a canister of Carbon Dioxide." - cost = 3000 - contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) - crate_name = "carbon dioxide canister crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/materials/nitrogen - name = "Nitrogen Canister" - desc = "Contains a canister of Nitrogen." - cost = 2000 - contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) - crate_name = "nitrogen canister crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/materials/nitrous_oxide_canister - name = "Nitrous Oxide Canister" - desc = "Contains a canister of Nitrous Oxide. Requires Atmospherics access to open." - cost = 3000 - access = ACCESS_ATMOSPHERICS - contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide) - crate_name = "nitrous oxide canister crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/materials/oxygen - name = "Oxygen Canister" - desc = "Contains a canister of Oxygen. Canned in Druidia." - cost = 1500 - contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) - crate_name = "oxygen canister crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/materials/water_vapor - name = "Water Vapor Canister" - desc = "Contains a canister of Water Vapor. I swear to god if you open this in the halls..." - cost = 2500 - contains = list(/obj/machinery/portable_atmospherics/canister/water_vapor) - crate_name = "water vapor canister 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 = 800 - contains = list(/obj/structure/reagent_dispensers/fueltank) - crate_name = "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 = 600 - contains = list(/obj/structure/reagent_dispensers/watertank) - crate_name = "water tank crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/materials/foamtank - name = "Firefighting Foam Tank Crate" - desc = "Contains a tank of firefighting foam. Also known as \"plasmaman's bane\"." - cost = 1500 - contains = list(/obj/structure/reagent_dispensers/foamtank) - crate_name = "foam 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 = 1200 - contains = list(/obj/structure/reagent_dispensers/watertank/high) - crate_name = "high-capacity water tank crate" - crate_type = /obj/structure/closet/crate/large - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Medical ///////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/medical - group = "Medical" - crate_type = /obj/structure/closet/crate/medical - -/datum/supply_pack/medical/bodybags - name = "Bodybags" - desc = "For when the bodies hit the floor. Contains 4 boxes of bodybags." - cost = 1200 - contains = list(/obj/item/storage/box/bodybags, - /obj/item/storage/box/bodybags, - /obj/item/storage/box/bodybags, - /obj/item/storage/box/bodybags,) - crate_name = "bodybag crate" - -/datum/supply_pack/medical/firstaidbruises - name = "Bruise Treatment Kit Crate" - desc = "Contains three first aid kits focused on healing bruises and broken bones." - cost = 1000 - contains = list(/obj/item/storage/firstaid/brute, - /obj/item/storage/firstaid/brute, - /obj/item/storage/firstaid/brute) - crate_name = "brute treatment kit crate" - -/datum/supply_pack/medical/firstaidburns - name = "Burn Treatment Kit Crate" - desc = "Contains three first aid kits focused on healing severe burns." - cost = 1000 - contains = list(/obj/item/storage/firstaid/fire, - /obj/item/storage/firstaid/fire, - /obj/item/storage/firstaid/fire) - crate_name = "burn treatment kit crate" - -/datum/supply_pack/medical/bloodpacks - name = "Blood Pack Variety Crate" - desc = "Contains ten different blood packs for reintroducing blood to patients." - cost = 3000 - contains = list(/obj/item/reagent_containers/blood/random, - /obj/item/reagent_containers/blood/random, - /obj/item/reagent_containers/blood/APlus, - /obj/item/reagent_containers/blood/AMinus, - /obj/item/reagent_containers/blood/BPlus, - /obj/item/reagent_containers/blood/BMinus, - /obj/item/reagent_containers/blood/OPlus, - /obj/item/reagent_containers/blood/OMinus, - /obj/item/reagent_containers/blood/lizard, - /obj/item/reagent_containers/blood/jellyblood, - /obj/item/reagent_containers/blood/insect) - crate_name = "blood freezer" - crate_type = /obj/structure/closet/crate/freezer - -/datum/supply_pack/medical/bloodpackssynth - name = "Synthetics Blood Pack Crate" - desc = "Contains five synthetics blood packs for reintroducing blood to patients." - cost = 3000 - contains = list(/obj/item/reagent_containers/blood/synthetics, - /obj/item/reagent_containers/blood/synthetics, - /obj/item/reagent_containers/blood/synthetics, - /obj/item/reagent_containers/blood/synthetics, - /obj/item/reagent_containers/blood/synthetics) - crate_name = "blood freezer" - crate_type = /obj/structure/closet/crate/freezer - -/datum/supply_pack/medical/defibs - name = "Defibrillator Crate" - desc = "Contains two defibrillators for bringing the recently deceased back to life." - cost = 2500 - contains = list(/obj/item/defibrillator/loaded, - /obj/item/defibrillator/loaded) - crate_name = "defibrillator crate" - -/datum/supply_pack/medical/firstaid - name = "First Aid Kit Crate" - desc = "Contains four first aid kits for healing most types of wounds." - cost = 1000 - contains = list(/obj/item/storage/firstaid/regular, - /obj/item/storage/firstaid/regular, - /obj/item/storage/firstaid/regular, - /obj/item/storage/firstaid/regular) - crate_name = "first aid kit crate" - -/datum/supply_pack/medical/iv_drip - name = "IV Drip Crate" - desc = "Contains a single IV drip stand for intravenous delivery." - cost = 700 - contains = list(/obj/machinery/iv_drip) - crate_name = "iv drip crate" - -/datum/supply_pack/science/adv_surgery_tools - name = "Med-Co Advanced surgery tools" - desc = "A full set of Med-Co advanced surgery tools, this crate both a can of synthflesh and a can of sterilizine. Requires Surgery access to open." - cost = 5000 - access = ACCESS_SURGERY - contains = list(/obj/item/storage/belt/medical/surgery_belt_adv, - /obj/item/reagent_containers/medspray/synthflesh, - /obj/item/reagent_containers/medspray/sterilizine) - crate_name = "medco newest surgery tools" - crate_type = /obj/structure/closet/crate/medical - -/datum/supply_pack/medical/medicalhardsuit - name = "Medical Hardsuit" - desc = "Got people being spaced left and right? Hole in the same room as the dead body of Hos or cap? Fear not, now you can buy one medical hardsuit with a mask and air tank to save your fellow crewmembers." - cost = 2500 - contains = list(/obj/item/tank/internals/air, - /obj/item/clothing/mask/gas, - /obj/item/clothing/suit/space/hardsuit/medical) - crate_name = "medical hardsuit" - -/datum/supply_pack/medical/supplies - name = "Medical Supplies Crate" - desc = "Contains seven beakers, syringes, and bodybags. Three morphine bottles, four insulin pills. Two charcoal bottles, epinephrine bottles, antitoxin bottles, and large beakers. Finally, a single roll of medical gauze, as well as a bottle of stimulant pills for long, hard work days. German doctor not included." - cost = 2500 - contains = list(/obj/item/reagent_containers/glass/bottle/charcoal, - /obj/item/reagent_containers/glass/bottle/charcoal, - /obj/item/reagent_containers/glass/bottle/epinephrine, - /obj/item/reagent_containers/glass/bottle/epinephrine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/toxin, - /obj/item/reagent_containers/glass/bottle/toxin, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/reagent_containers/pill/insulin, - /obj/item/reagent_containers/pill/insulin, - /obj/item/reagent_containers/pill/insulin, - /obj/item/reagent_containers/pill/insulin, - /obj/item/stack/medical/gauze, - /obj/item/storage/box/beakers, - /obj/item/storage/box/medsprays, - /obj/item/storage/box/syringes, - /obj/item/storage/box/bodybags, - /obj/item/storage/pill_bottle/stimulant) - crate_name = "medical supplies crate" - -/datum/supply_pack/medical/vending - name = "Medical Vending Crate" - desc = "Contains refills for medical vending machines." - cost = 2000 - contains = list(/obj/item/vending_refill/medical, - /obj/item/vending_refill/wallmed) - crate_name = "medical vending crate" - -/datum/supply_pack/medical/sprays - name = "Medical Sprays" - desc = "Contains two cans of Styptic Spray, Silver Sulfadiazine Spray, Synthflesh Spray and Sterilizer Compound Spray." - cost = 2500 - contains = list(/obj/item/reagent_containers/medspray/styptic, - /obj/item/reagent_containers/medspray/styptic, - /obj/item/reagent_containers/medspray/silver_sulf, - /obj/item/reagent_containers/medspray/silver_sulf, - /obj/item/reagent_containers/medspray/synthflesh, - /obj/item/reagent_containers/medspray/synthflesh, - /obj/item/reagent_containers/medspray/sterilizine, - /obj/item/reagent_containers/medspray/sterilizine) - crate_name = "medical supplies crate" - -/datum/supply_pack/medical/firstaidmixed - name = "Mixed Medical Kits" - desc = "Contains one of each medical kits for dealing with a variety of injured crewmembers." - cost = 1500 - contains = list(/obj/item/storage/firstaid/toxin, - /obj/item/storage/firstaid/o2, - /obj/item/storage/firstaid/brute, - /obj/item/storage/firstaid/fire, - /obj/item/storage/firstaid/regular) - crate_name = "medical supplies crate" - -/datum/supply_pack/medical/firstaidoxygen - name = "Oxygen Deprivation Kit Crate" - desc = "Contains three first aid kits focused on helping oxygen deprivation victims." - cost = 1000 - contains = list(/obj/item/storage/firstaid/o2, - /obj/item/storage/firstaid/o2, - /obj/item/storage/firstaid/o2) - crate_name = "oxygen deprivation kit crate" - -/datum/supply_pack/medical/advrad - name = "Radiation Treatment Crate Deluxe" - desc = "A crate for when radiation is out of hand... Contains two rad-b-gone kits, one bottle of anti radiation deluxe pill bottle, as well as a radiation treatment deluxe pill bottle!" - cost = 3500 - contains = list(/obj/item/storage/pill_bottle/antirad_plus, - /obj/item/storage/pill_bottle/mutarad, - /obj/item/storage/firstaid/radbgone, - /obj/item/storage/firstaid/radbgone, - /obj/item/geiger_counter, - /obj/item/geiger_counter) - crate_name = "radiation protection crate" - crate_type = /obj/structure/closet/crate/radiation - -/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 = 1000 - contains = list(/obj/item/storage/backpack/duffelbag/med/surgery, - /obj/item/reagent_containers/medspray/sterilizine, - /obj/item/roller) - crate_name = "surgical supplies crate" - -/datum/supply_pack/medical/firstaidtoxins - name = "Toxin Treatment Kit Crate" - desc = "Contains three first aid kits focused on healing damage dealt by heavy toxins." - cost = 1000 - contains = list(/obj/item/storage/firstaid/toxin, - /obj/item/storage/firstaid/toxin, - /obj/item/storage/firstaid/toxin) - crate_name = "toxin treatment kit crate" - -/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 = 2500 - access = ACCESS_CMO - 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 - - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Science ///////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/science - group = "Science" - crate_type = /obj/structure/closet/crate/science - -/datum/supply_pack/science/aliens - name = "Advanced Alien Alloy Crate Crate" - desc = "Hello brothers from the stars!!! Our fellow brethren have made contact at long last and gave us gifts man! They really did build the prymi- Connection Error- Bro we’ll send you a sheet of advanced alien alloy." - cost = 15000 - contraband = TRUE - DropPodOnly = TRUE - contains = list(/obj/item/stack/sheet/mineral/abductor) - crate_name = "alien bro alloy crate" - -/datum/supply_pack/science/beakers - name = "Chemistry Beakers Crate" - desc = "Glassware for any chemistry lab! Contains four small beakers, three large, two plastic, and one metamaterial. As well as three droppers and two pairs of latex gloves." - cost = 2000 - contains = list(/obj/item/reagent_containers/glass/beaker, - /obj/item/reagent_containers/glass/beaker, - /obj/item/reagent_containers/glass/beaker, - /obj/item/reagent_containers/glass/beaker, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/reagent_containers/glass/beaker/plastic, - /obj/item/reagent_containers/glass/beaker/plastic, - /obj/item/reagent_containers/glass/beaker/meta, - /obj/item/reagent_containers/glass/beaker/noreact, - /obj/item/reagent_containers/dropper, - /obj/item/reagent_containers/dropper, - /obj/item/reagent_containers/dropper, - /obj/item/clothing/gloves/color/latex, - /obj/item/clothing/gloves/color/latex) - crate_name = "chemistry beaker crate" - -/datum/supply_pack/science/robotics/mecha_odysseus - name = "Circuit Crate (Odysseus)" - desc = "Ever wanted to build your own giant medical robot? Well, now you can! Contains the Odysseus main control board and Odysseus peripherals board. Requires Robotics access to open." - cost = 2500 - access = ACCESS_ROBOTICS - contains = list(/obj/item/circuitboard/mecha/odysseus/peripherals, - /obj/item/circuitboard/mecha/odysseus/main) - crate_name = "\improper Odysseus circuit crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/robotics/mecha_ripley - name = "Circuit Crate (Ripley APLU)" - desc = "Rip apart rocks and xenomorphs alike with the Ripley APLU. Contains the Main Ripley control board, as well as the Ripley Peripherals board. Requires Robotics access to open." - cost = 3000 - access = ACCESS_ROBOTICS - contains = list(/obj/item/book/manual/ripley_build_and_repair, - /obj/item/circuitboard/mecha/ripley/main, - /obj/item/circuitboard/mecha/ripley/peripherals) - crate_name = "\improper APLU Ripley circuit crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/circuitry - name = "Circuitry Starter Pack Crate" - desc = "Journey into the mysterious world of Circuitry with this starter pack. Contains a circuit printer, analyzer, debugger and wirer. Power cells not included." - cost = 1000 - contains = list(/obj/item/integrated_electronics/analyzer, - /obj/item/integrated_circuit_printer, - /obj/item/integrated_electronics/debugger, - /obj/item/integrated_electronics/wirer) - crate_name = "circuitry starter pack crate" - -/datum/supply_pack/science/nitrilegloves - name = "Nitrile Gloves Crate" - desc = "Handling toxic chemicals? Well worry not, keep your flesh intact with some nitrile made gloves! Contains three pairs of nitrile gloves." - cost = 1500 - contains = list(/obj/item/clothing/gloves/color/latex/nitrile, - /obj/item/clothing/gloves/color/latex/nitrile, - /obj/item/clothing/gloves/color/latex/nitrile) - crate_name = "nitrile gloves crate" - -/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 Toxins access to open." - cost = 1000 - access = ACCESS_TOX_STORAGE - 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/robotics - name = "Robotics Assembly Crate" - desc = "The tools you need to replace those finicky humans with a loyal robot army! Contains three proximity sensors, two high-powered cells, six flashes, and an electrical toolbox. Requires Robotics access to open." - cost = 1000 - access = ACCESS_ROBOTICS - contains = list(/obj/item/assembly/prox_sensor, - /obj/item/assembly/prox_sensor, - /obj/item/assembly/prox_sensor, - /obj/item/storage/toolbox/electrical, - /obj/item/storage/box/flashes, - /obj/item/stock_parts/cell/high, - /obj/item/stock_parts/cell/high) - crate_name = "robotics assembly crate" - crate_type = /obj/structure/closet/crate/secure/science - -/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 = 2000 - access = ACCESS_TELEPORTER - contains = list(/obj/machinery/shieldwallgen, - /obj/machinery/shieldwallgen, - /obj/machinery/shieldwallgen, - /obj/machinery/shieldwallgen) - crate_name = "shield generators crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/slime - name = "Slime Core Crate" - desc = "Ran out of slimes? No problem, contains one gray slime core. Requires Xenobio access to open." - cost = 1000 - access = ACCESS_XENOBIOLOGY - contains = list(/obj/item/slime_extract/grey) - crate_name = "slime core crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/tablets - name = "Tablet Crate" - desc = "What's a computer? Contains five cargo tablets." - cost = 3000 - contains = list(/obj/item/modular_computer/tablet/preset/cargo, - /obj/item/modular_computer/tablet/preset/cargo, - /obj/item/modular_computer/tablet/preset/cargo, - /obj/item/modular_computer/tablet/preset/cargo, - /obj/item/modular_computer/tablet/preset/cargo) - crate_name = "tablet crate" - -/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 = 6000 - 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/tech_slugs - name = "Tech Slug Ammo Shells" - desc = "A new type of shell that is able to be made into a few different dangerous types. Contains two boxes of tech slugs, 14 shells in all." - cost = 1000 - contains = list(/obj/item/storage/box/techsslug, - /obj/item/storage/box/techsslug) - crate_name = "tech slug crate" - - -////////////////////////////////////////////////////////////////////////////// -/////////////////////////////// Service ////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/service - group = "Service" - -/datum/supply_pack/service/advlighting - name = "Advanced Lighting crate" - desc = "Thanks to advanced lighting tech we here at the Lamp Factory have be able to produce more lamps and lamp items! This crate has three lamps, a box of lights and a state of the art rapid-light-device!" - cost = 2500 //Fair - contains = list(/obj/item/construction/rld, - /obj/item/flashlight/lamp, - /obj/item/flashlight/lamp, - /obj/item/flashlight/lamp/green, - /obj/item/storage/box/lights/mixed) - crate_name = "advanced lighting crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/service/janitor/advanced - name = "Advanced Sanitation Crate" - desc = "Contains all the essentials for an advanced spacefaring cleanup crew. This kit includes a trashbag of holding, an advanced mop, a bottle of space cleaner, a floor buffer, and a holosign projector." - cost = 5000 - access = ACCESS_JANITOR - contains = list(/obj/item/storage/bag/trash/bluespace, - /obj/item/reagent_containers/spray/cleaner, - /obj/item/mop/advanced, - /obj/item/lightreplacer, - /obj/item/janiupgrade, - /obj/item/holosign_creator) - crate_name = "advanced santation crate" - crate_type = /obj/structure/closet/crate/secure - -/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 = 1000 - contains = list(/obj/item/stamp, - /obj/item/stamp/denied, - /obj/item/export_scanner, - /obj/item/destTagger, - /obj/item/hand_labeler, - /obj/item/stack/packageWrap) - crate_name = "cargo supplies crate" - -/datum/supply_pack/service/food_cart - name = "Food Cart Crate" - desc = "Want to sell food on the go? Cook lost their cart? Well we just so happen to have a few carts to spare!" - cost = 1000 - contains = list(/obj/machinery/food_cart) - crate_name = "food cart crate" - crate_type = /obj/structure/closet/crate - -/datum/supply_pack/service/noslipfloor - name = "High-traction Floor Tiles" - desc = "Make slipping a thing of the past with sixty industrial-grade anti-slip floortiles!" - cost = 2000 - contains = list(/obj/item/stack/tile/noslip/thirty, - /obj/item/stack/tile/noslip/thirty) - crate_name = "high-traction floor tiles crate" - -/datum/supply_pack/service/icecream_cart - name = "Ice Cream Cart Crate" - desc = "Plasma fire a to hot for you, want a nice treat after a hard days work? Well now we have the cart for you! This Ice Cream Vat has everthing you need to make you and your friends so ice cream treats! This cart comes stocked with some ingredients for each type of scoopable icecream." - cost = 2750 //Comes prestocked with basic ingredients - contains = list(/obj/machinery/icecream_vat) - crate_name = "ice cream vat crate" - crate_type = /obj/structure/closet/crate - -/datum/supply_pack/service/buildabar - name = "Build a Bar Crate" - desc = "Looking to set up your own little safe haven? Maintenance bar too much of a bummer to work on? Maybe you just want to set up shop right in front of the bartender. Whatever your reasons, get a jump-start on this with this handy kit. Contains circuitboards for bar equipment, some parts, and some basic bartending supplies. (Batteries not Included)" - cost = 3750 - contains = list(/obj/item/storage/box/drinkingglasses, - /obj/item/storage/box/drinkingglasses, - /obj/item/stock_parts/matter_bin, - /obj/item/stock_parts/matter_bin, - /obj/item/stock_parts/matter_bin, - /obj/item/stock_parts/matter_bin, - /obj/item/stock_parts/matter_bin, - /obj/item/stock_parts/matter_bin, - /obj/item/stock_parts/manipulator, - /obj/item/stock_parts/manipulator, - /obj/item/stock_parts/manipulator, - /obj/item/stock_parts/capacitor, - /obj/item/stock_parts/capacitor, - /obj/item/stack/sheet/metal/ten, - /obj/item/stack/sheet/metal/five, - /obj/item/stack/sheet/glass/five, - /obj/item/stack/cable_coil/random, - /obj/item/reagent_containers/rag, - /obj/item/book/manual/wiki/barman_recipes, - /obj/item/book/granter/action/drink_fling, - /obj/item/reagent_containers/food/drinks/shaker, - /obj/item/clothing/under/waiter, - /obj/item/clothing/under/rank/bartender, - /obj/item/clothing/under/rank/bartender/skirt, - /obj/item/clothing/accessory/waistcoat, - /obj/item/circuitboard/machine/chem_dispenser/drinks/beer, - /obj/item/circuitboard/machine/chem_dispenser/drinks, - /obj/item/circuitboard/machine/dish_drive) - crate_name = "build a bar crate" - -/datum/supply_pack/service/maintgarden - name = "Maintenance Garden Crate" - desc = "Set up your own tiny paradise with do-it-yourself botany kit. Contains sandstone for dirt plots, pest spray, ammonia, a portable seed generator, basic botanical tools, and some seeds to start off with." - cost = 2350 - contains = list(/obj/item/storage/bag/plants/portaseeder, - /obj/item/reagent_containers/spray/pestspray, - /obj/item/stack/sheet/mineral/sandstone/twelve, - /obj/item/reagent_containers/glass/bucket, - /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/flashlight, - /obj/item/seeds/carrot, - /obj/item/seeds/carrot, - /obj/item/seeds/tower, - /obj/item/seeds/tower, - /obj/item/seeds/watermelon, - /obj/item/seeds/watermelon, - /obj/item/seeds/grass, - /obj/item/seeds/grass) - crate_name = "maint garden crate" - crate_type = /obj/structure/closet/crate/hydroponics - -/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, spray cleaner, rag, NT soap and a trash bag." - cost = 1000 - 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/caution, - /obj/item/caution, - /obj/item/caution, - /obj/item/storage/bag/trash, - /obj/item/reagent_containers/spray/cleaner, - /obj/item/reagent_containers/rag, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/soap/nanotrasen) - 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 = 2000 - 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 = 1000 - 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/janitor/janpremium - name = "Janitor Premium Supplies" - desc = "Do to the union for better supplies, we have desided to make a deal for you, In this crate you can get a brand new chem, Drying Angent this stuff is the work of slimes or magic! This crate also contains a rag to test out the Drying Angent magic, three wet floor signs, and some spare bottles of ammonia." - cost = 1750 - access = ACCESS_JANITOR - contains = list(/obj/item/caution, - /obj/item/caution, - /obj/item/caution, - /obj/item/reagent_containers/rag, - /obj/item/reagent_containers/glass/bottle/ammonia, - /obj/item/reagent_containers/glass/bottle/ammonia, - /obj/item/reagent_containers/glass/bottle/ammonia, - /obj/item/reagent_containers/spray/drying_agent) - crate_name = "janitor backpack crate" - -/datum/supply_pack/service/janitor/janpimp - name = "Custodial Cruiser" - desc = "Clown steal your ride? Assistant lock it in the dorms? Order a new one and get back to cleaning in style!" - cost = 3000 - access = ACCESS_JANITOR - contains = list(/obj/vehicle/ridden/janicart, - /obj/item/key/janitor) - crate_name = "janitor ride crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/service/mule - name = "MULEbot Crate" - desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!" - cost = 2000 - 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, four beers, two ales, and a bottle of patron, goldschlager, and shaker!" - cost = 2000 - 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/ale, - /obj/item/reagent_containers/food/drinks/ale, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /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 = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains the classics." - cost = 1000 - 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 10 different flooring patterns." - cost = 4000 - 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, - /obj/item/stack/tile/carpet/blackred/fifty, - /obj/item/stack/tile/carpet/blackred/fifty, - /obj/item/stack/tile/carpet/monochrome/fifty, - /obj/item/stack/tile/carpet/monochrome/fifty) - crate_name = "exotic 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 as well as a light replacer." - cost = 1200 - contains = list(/obj/item/storage/box/lights/mixed, - /obj/item/storage/box/lights/mixed, - /obj/item/storage/box/lights/mixed, - /obj/item/lightreplacer) - 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, and explorer suit. Requires QM access to open." - cost = 2500 - access = ACCESS_QM - contains = list(/obj/item/pickaxe/mini, - /obj/item/clothing/glasses/meson, - /obj/item/t_scanner/adv_mining_scanner/lesser, - /obj/item/radio/headset/headset_cargo/mining, - /obj/item/storage/bag/ore, - /obj/item/clothing/suit/hooded/explorer/standard, - /obj/item/clothing/mask/gas/explorer) - crate_name = "shaft miner starter kit" - crate_type = /obj/structure/closet/crate/secure - -////////////////////////////////////////////////////////////////////////////// -/////////////////////////// Vending Restocks ///////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/service/vending/bartending - name = "Bartending Supply Crate" - desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!" - cost = 2000 - contains = list(/obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/coffee, - /obj/item/book/granter/action/drink_fling) - crate_name = "bartending supply crate" - -/datum/supply_pack/service/vending/cigarette - name = "Cigarette Supply Crate" - desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill." - cost = 1500 - contains = list(/obj/item/vending_refill/cigarette) - crate_name = "cigarette supply crate" - crate_type = /obj/structure/closet/crate - -/datum/supply_pack/service/vending/games - name = "Games Supply Crate" - desc = "Get your game on with this game vending machine refill." - cost = 1000 - contains = list(/obj/item/vending_refill/games) - crate_name = "games supply crate" - crate_type = /obj/structure/closet/crate - -/datum/supply_pack/service/vending/snack - name = "Snack Supply Crate" - desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!" - cost = 1500 - contains = list(/obj/item/vending_refill/snack) - crate_name = "snacks supply crate" - -/datum/supply_pack/service/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 = 1500 - contains = list(/obj/item/vending_refill/cola) - crate_name = "soft drinks supply crate" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Organic ///////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/organic - group = "Food & Hydroponics" - crate_type = /obj/structure/closet/crate/freezer - -/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 = 1000 - 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 = 1500 - 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/candy - name = "Candy Crate" - desc = "For people that have a insatiable sweet tooth! Has ten candies to be eaten up.." - cost = 2500 - var/num_contained = 10 //number of items picked to be contained in a randomised crate - contains = list(/obj/item/reagent_containers/food/snacks/candy, - /obj/item/reagent_containers/food/snacks/lollipop, - /obj/item/reagent_containers/food/snacks/gumball, - /obj/item/reagent_containers/food/snacks/chocolateegg, - /obj/item/reagent_containers/food/snacks/donut, - /obj/item/reagent_containers/food/snacks/cookie, - /obj/item/reagent_containers/food/snacks/sugarcookie, - /obj/item/reagent_containers/food/snacks/chococornet, - /obj/item/reagent_containers/food/snacks/mint, - /obj/item/reagent_containers/food/snacks/spiderlollipop, - /obj/item/reagent_containers/food/snacks/chococoin, - /obj/item/reagent_containers/food/snacks/fudgedice, - /obj/item/reagent_containers/food/snacks/chocoorange, - /obj/item/reagent_containers/food/snacks/honeybar, - /obj/item/reagent_containers/food/snacks/tinychocolate, - /obj/item/reagent_containers/food/snacks/spacetwinkie, - /obj/item/reagent_containers/food/snacks/syndicake, - /obj/item/reagent_containers/food/snacks/cheesiehonkers, - /obj/item/reagent_containers/food/snacks/sugarcookie/spookyskull, - /obj/item/reagent_containers/food/snacks/sugarcookie/spookycoffin, - /obj/item/reagent_containers/food/snacks/candy_corn, - /obj/item/reagent_containers/food/snacks/candiedapple, - /obj/item/reagent_containers/food/snacks/chocolatebar, - /obj/item/reagent_containers/food/snacks/candyheart, - /obj/item/storage/fancy/heart_box, - /obj/item/storage/fancy/donut_box) - crate_name = "candy crate" - -/datum/supply_pack/organic/cutlery - name = "Kitchen Cutlery Deluxe Set" - desc = "Need to slice and dice away those ''Tomatos'' well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal." - cost = 10000 - contraband = TRUE - contains = list(/obj/item/sharpener, - /obj/item/kitchen/fork, - /obj/item/kitchen/fork, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife/butcher, - /obj/item/kitchen/knife/butcher, - /obj/item/kitchen/rollingpin, //Deluxe for a reason - /obj/item/trash/plate, - /obj/item/trash/plate, - /obj/item/trash/plate, - /obj/item/trash/plate, - /obj/item/reagent_containers/food/drinks/drinkingglass, - /obj/item/reagent_containers/food/drinks/drinkingglass, - /obj/item/reagent_containers/food/drinks/drinkingglass, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) - crate_name = "kitchen cutlery deluxe set" - -/datum/supply_pack/organic/food - name = "Food Crate" - desc = "Get things cooking with this crate full of useful ingredients! Contains a two dozen eggs, three bananas, and two bags of flour and rice, two cartons of milk, soymilk, as well as salt and pepper shakers, a enzyme and sugar bottle, and three slabs of monkeymeat." - cost = 1000 - contains = list(/obj/item/reagent_containers/food/condiment/flour, - /obj/item/reagent_containers/food/condiment/flour, - /obj/item/reagent_containers/food/condiment/rice, - /obj/item/reagent_containers/food/condiment/rice, - /obj/item/reagent_containers/food/condiment/milk, - /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/storage/fancy/egg_box, - /obj/item/reagent_containers/food/condiment/enzyme, - /obj/item/reagent_containers/food/condiment/sugar, - /obj/item/reagent_containers/food/snacks/meat/slab/monkey, - /obj/item/reagent_containers/food/snacks/meat/slab/monkey, - /obj/item/reagent_containers/food/snacks/meat/slab/monkey, - /obj/item/reagent_containers/food/snacks/grown/banana, - /obj/item/reagent_containers/food/snacks/grown/banana, - /obj/item/reagent_containers/food/snacks/grown/banana) - crate_name = "food crate" - -/datum/supply_pack/organic/fiestatortilla - name = "Fiesta Crate" - desc = "Spice up the kitchen with this fiesta themed food order! Contains 8 tortilla based food items, as well as a sombrero, moustache, and cloak!" - cost = 2750 - contains = list(/obj/item/clothing/head/sombrero, - /obj/item/clothing/suit/hooded/cloak/david, - /obj/item/clothing/mask/fakemoustache, - /obj/item/reagent_containers/food/snacks/taco, - /obj/item/reagent_containers/food/snacks/taco, - /obj/item/reagent_containers/food/snacks/taco/plain, - /obj/item/reagent_containers/food/snacks/taco/plain, - /obj/item/reagent_containers/food/snacks/enchiladas, - /obj/item/reagent_containers/food/snacks/enchiladas, - /obj/item/reagent_containers/food/snacks/carneburrito, - /obj/item/reagent_containers/food/snacks/cheesyburrito, - /obj/item/reagent_containers/glass/bottle/capsaicin, - /obj/item/reagent_containers/glass/bottle/capsaicin) - crate_name = "fiesta 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 = 6000 - contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie) - crate_name = "party equipment crate" - contraband = TRUE - access = ACCESS_THEATRE - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/organic/hunting - name = "Hunting gear" - desc = "Even in space, we can find prey to hunt, this crate contains everthing a fine hunter needs to have a sporting time. This crate needs armory access to open. A true huntter only needs a fine bottle of cognac, a nice coat, some good o' cigars, and of cource a hunting shotgun. " - cost = 3500 - contraband = TRUE - contains = list(/obj/item/clothing/head/flatcap, - /obj/item/clothing/suit/hooded/wintercoat/captain, - /obj/item/reagent_containers/food/drinks/bottle/cognac, - /obj/item/storage/fancy/cigarettes/cigars/havana, - /obj/item/clothing/gloves/color/white, - /obj/item/clothing/under/rank/curator, - /obj/item/gun/ballistic/shotgun/lethal) - access = ACCESS_ARMORY - crate_name = "sporting crate" - crate_type = /obj/structure/closet/crate/secure // Would have liked a wooden crate but access >:( - -/datum/supply_pack/organic/fakemeat - name = "Meat Crate" - desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 4 slabs of meat product, and two slabs of *carp*." - cost = 1700 - contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/carpmeat/imitation, - /obj/item/reagent_containers/food/snacks/carpmeat/imitation) - crate_name = "meaty crate" - crate_type = /obj/structure/closet/crate/freezer - -/datum/supply_pack/organic/monkeydripmeat - name = "*Meat* Crate" - desc = "Need some meat? With this do-it-yourself kit you'll be swimming in it! Contains a monkey cube, an IV drip, and some cryoxadone!" - cost = 2150 - contraband = TRUE - contains = list(/obj/item/reagent_containers/food/snacks/monkeycube, - /obj/item/restraints/handcuffs/cable, - /obj/machinery/iv_drip, - /obj/item/reagent_containers/glass/beaker/cryoxadone, - /obj/item/reagent_containers/glass/beaker/cryoxadone) - crate_name = "monkey meat crate" - -/datum/supply_pack/organic/mixedboxes - name = "Mixed Ingredient Boxes" - desc = "Get overwhelmed with inspiration by ordering these boxes of surprise ingredients! Get four boxes filled with an assortment of products!" - cost = 2300 - contains = list(/obj/item/storage/box/ingredients/wildcard, - /obj/item/storage/box/ingredients/wildcard, - /obj/item/storage/box/ingredients/wildcard, - /obj/item/storage/box/ingredients/wildcard) - crate_name = "wildcard food crate" - crate_type = /obj/structure/closet/crate/freezer - -/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 = 1500 - 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 = 1000 - access = ACCESS_HYDROPONICS - contains = list(/obj/item/watertank) - crate_name = "hydroponics backpack crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/organic/mre - name = "MRE supply kit (emergency rations)" - desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank." - cost = 2000 - contains = list(/obj/item/storage/box/mre/menu1/safe, - /obj/item/storage/box/mre/menu1/safe, - /obj/item/storage/box/mre/menu2/safe, - /obj/item/storage/box/mre/menu2/safe, - /obj/item/storage/box/mre/menu3, - /obj/item/storage/box/mre/menu4/safe) - crate_name = "MRE crate (emergency rations)" - -/datum/supply_pack/organic/pizza - name = "Pizza Crate" - desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99% anomaly-free!" - cost = 6000 // 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" - var/static/anomalous_box_provided = FALSE - -/datum/supply_pack/organic/pizza/fill(obj/structure/closet/crate/C) - . = ..() - if(!anomalous_box_provided) - for(var/obj/item/pizzabox/P in C) - if(prob(1)) //1% chance for each box, so 4% total chance per order - var/obj/item/pizzabox/infinite/fourfiveeight = new(C) - fourfiveeight.boxtag = P.boxtag - 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.") - break - -/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 = 700 - contains = list(/obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random) - crate_name = "potted plants crate" - crate_type = /obj/structure/closet/crate/hydroponics - -/datum/supply_pack/organic/seeds - name = "Seeds Crate" - desc = "Big things have small beginnings. Contains thirteen different seeds." - cost = 1000 - contains = list(/obj/item/seeds/chili, - /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/chanter, - /obj/item/seeds/potato, - /obj/item/seeds/sugarcane) - crate_name = "seeds crate" - crate_type = /obj/structure/closet/crate/hydroponics - -/datum/supply_pack/organic/vday - name = "Surplus Valentine Crate" - desc = "Turns out we got warehouses of this love-y dove-y crap. Were sending out small barged buddle of Valentine gear. This crate has two boxes of chocolate, three poppy flowers, five candy hearts, and three cards." - cost = 3000 - contraband = TRUE - contains = list(/obj/item/storage/fancy/heart_box, - /obj/item/storage/fancy/heart_box, - /obj/item/reagent_containers/food/snacks/grown/poppy, - /obj/item/reagent_containers/food/snacks/grown/poppy, - /obj/item/reagent_containers/food/snacks/grown/poppy, - /obj/item/reagent_containers/food/snacks/candyheart, - /obj/item/reagent_containers/food/snacks/candyheart, - /obj/item/reagent_containers/food/snacks/candyheart, - /obj/item/reagent_containers/food/snacks/candyheart, - /obj/item/reagent_containers/food/snacks/candyheart, - /obj/item/valentine, - /obj/item/valentine, - /obj/item/valentine) - crate_name = "valentine crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/organic/strangeseeds - name = "Strange Seeds Crate" - desc = "After our chemical waste mysteriously disappeared we've discovered many strange and interesting species of plants, and they're yours for the taking! Contains 8 packs of strange seeds." - cost = 4500 - contains = list(/obj/item/seeds/random, - /obj/item/seeds/random, - /obj/item/seeds/random, - /obj/item/seeds/random, - /obj/item/seeds/random, - /obj/item/seeds/random, - /obj/item/seeds/random, - /obj/item/seeds/random) - crate_name = "strange seeds crate" - crate_type = /obj/structure/closet/crate/hydroponics - -/datum/supply_pack/organic/exoticseeds - name = "Exotic Seeds Crate" - desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!" - cost = 1500 - contains = list(/obj/item/seeds/nettle, - /obj/item/seeds/replicapod, - /obj/item/seeds/replicapod, - /obj/item/seeds/replicapod, - /obj/item/seeds/plump, - /obj/item/seeds/liberty, - /obj/item/seeds/amanita, - /obj/item/seeds/reishi, - /obj/item/seeds/banana, - /obj/item/seeds/eggplant/eggy, - /obj/item/seeds/random, - /obj/item/seeds/random) - crate_name = "exotic seeds crate" - crate_type = /obj/structure/closet/crate/hydroponics - -////////////////////////////////////////////////////////////////////////////// -////////////////////////////// Livestock ///////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/critter - group = "Livestock" - crate_type = /obj/structure/closet/crate/critter - -/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 = 5000 - 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 = 5000 //Cats are worth as much as corgis. - 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 = 2000 - contains = list( /mob/living/simple_animal/chick) - crate_name = "chicken 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 = 5000 - 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/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 = 5000 - 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/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 = 5500 - contains = list(/mob/living/simple_animal/pet/dog/corgi/exoticcorgi, - /obj/item/clothing/neck/petcollar) - crate_name = "exotic corgi crate" - -/datum/supply_pack/critter/cow - name = "Cow Crate" - desc = "The cow goes moo!" - cost = 3000 - contains = list(/mob/living/simple_animal/cow) - crate_name = "cow crate" - -/datum/supply_pack/critter/fox - name = "Fox Crate" - desc = "The fox goes...? Comes with a collar!"//what does the fox say - cost = 5000 - 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 = 2500 - 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 = 2000 - contains = list (/obj/item/storage/box/monkeycubes) - 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 = 5000 - contains = list(/mob/living/simple_animal/pet/dog/pug, - /obj/item/clothing/neck/petcollar) - crate_name = "pug crate" - -/datum/supply_pack/organic/critter/kiwi - name = "Space kiwi Crate" - cost = 2000 - contains = list( /mob/living/simple_animal/kiwi) - crate_name = "space kiwi 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 = 3000 - contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake, - /mob/living/simple_animal/hostile/retaliate/poison/snake, - /mob/living/simple_animal/hostile/retaliate/poison/snake) - crate_name = "snake crate" - -/datum/supply_pack/critter/mouse - name = "Mouse Crate" - desc = "Good for snakes and lizards of all ages. Contains ~12 feeder mice." - cost = 2000 - contains = list(/mob/living/simple_animal/mouse,) - crate_name = "mouse crate" - -/datum/supply_pack/critter/mouse/generate() - . = ..() - for(var/i in 1 to 11) - new /mob/living/simple_animal/mouse(.) - -/datum/supply_pack/critter/secbat - name = "Security Bat Crate" - desc = "Contains five security bats, perfect to Bat-up any security officer." - cost = 2500 - contains = list(/mob/living/simple_animal/hostile/retaliate/bat/secbat, - /mob/living/simple_animal/hostile/retaliate/bat/secbat, - /mob/living/simple_animal/hostile/retaliate/bat/secbat, - /mob/living/simple_animal/hostile/retaliate/bat/secbat, - /mob/living/simple_animal/hostile/retaliate/bat/secbat) - crate_name = "security bat 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 = 20000 - 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 = 3000 - num_contained = 5 //SOME - contains = list(/obj/item/poster/random_contraband, - /obj/item/poster/random_contraband, - /obj/item/reagent_containers/food/snacks/grown/cannabis, - /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow, - /obj/item/reagent_containers/food/snacks/grown/cannabis/white, - /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, - /obj/item/circuitboard/computer/arcade/amputation) - 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 = 1000 - 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 = 4000 - contains = list(/obj/item/gun/ballistic/automatic/toy/pistol, - /obj/item/gun/ballistic/automatic/toy/pistol, - /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 = 3000 //Lots of very expensive items. You gotta pay up to look good! - contains = list(/obj/item/clothing/under/blacktango, - /obj/item/clothing/under/assistantformal, - /obj/item/clothing/under/assistantformal, - /obj/item/clothing/under/lawyer/bluesuit, - /obj/item/clothing/suit/toggle/lawyer, - /obj/item/clothing/under/lawyer/purpsuit, - /obj/item/clothing/suit/toggle/lawyer/purple, - /obj/item/clothing/under/lawyer/blacksuit, - /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_jacket/charcoal, - /obj/item/clothing/under/suit_jacket/navy, - /obj/item/clothing/under/suit_jacket/burgundy, - /obj/item/clothing/under/suit_jacket/checkered, - /obj/item/clothing/under/suit_jacket/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 = 5000 - 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 = 1500 - 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 = 3000 - contraband = TRUE - contains = list(/obj/item/storage/box/lasertagpins) - crate_name = "laser tag crate" - -/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 = 1000 - 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 = 1000 - 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/clown, - /obj/item/bikehorn, - /obj/item/clothing/under/rank/mime, - /obj/item/clothing/shoes/sneakers/black, - /obj/item/clothing/gloves/color/white, - /obj/item/clothing/mask/gas/mime, - /obj/item/clothing/head/beret, - /obj/item/clothing/suit/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 = 1500 // or play the arcade machines ya lazy bum - num_contained = 5 - contains = list(/obj/item/storage/box/snappops, - /obj/item/toy/talking/AI, - /obj/item/toy/talking/codex_gigas, - /obj/item/clothing/under/syndicate/tacticool, - /obj/item/toy/sword , - /obj/item/toy/gun, - /obj/item/gun/ballistic/shotgun/toy/crossbow, - /obj/item/storage/box/fakesyndiesuit, - /obj/item/storage/crayons, - /obj/item/toy/spinningtoy, - /obj/item/toy/prize/ripley, - /obj/item/toy/prize/fireripley, - /obj/item/toy/prize/deathripley, - /obj/item/toy/prize/gygax, - /obj/item/toy/prize/durand, - /obj/item/toy/prize/honk, - /obj/item/toy/prize/marauder, - /obj/item/toy/prize/seraph, - /obj/item/toy/prize/mauler, - /obj/item/toy/prize/odysseus, - /obj/item/toy/prize/phazon, - /obj/item/toy/prize/reticence, - /obj/item/toy/cards/deck, - /obj/item/toy/nuke, - /obj/item/toy/minimeteor, - /obj/item/toy/redbutton, - /obj/item/toy/talking/owl, - /obj/item/toy/talking/griffin, - /obj/item/coin/antagtoken, - /obj/item/stack/tile/fakespace/loaded, - /obj/item/stack/tile/fakepit/loaded, - /obj/item/toy/toy_xeno, - /obj/item/storage/box/actionfigure, - /obj/item/restraints/handcuffs/fake, - /obj/item/grenade/chem_grenade/glitter/pink, - /obj/item/grenade/chem_grenade/glitter/blue, - /obj/item/grenade/chem_grenade/glitter/white, - /obj/item/toy/eightball, - /obj/item/toy/windupToolbox, - /obj/item/toy/clockwork_watch, - /obj/item/toy/toy_dagger, - /obj/item/extendohand/acme, - /obj/item/hot_potato/harmless/toy, - /obj/item/card/emagfake, - /obj/item/clothing/shoes/wheelys, - /obj/item/clothing/shoes/kindleKicks, - /obj/item/storage/belt/military/snack, - /obj/item/toy/eightball, - /obj/item/vending_refill/donksoft) - crate_name = "toy crate" - crate_type = /obj/structure/closet/crate/wooden - -/datum/supply_pack/costumes_toys/randomised/plush - name = "Plush Crate" - desc = "Plush tide station wide. Contains 5 random plushies for you to love. Warranty void if your love violates the terms of use." - cost = 1500 // or play the arcade machines ya lazy bum - num_contained = 5 - contains = list(/obj/item/toy/plush/random, - /obj/item/toy/plush/random, - /obj/item/toy/plush/random, - /obj/item/toy/plush/random, - /obj/item/toy/plush/random) //I'm lazy - crate_name = "plushie crate" - crate_type = /obj/structure/closet/crate/wooden - -/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 = 2000 - 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/wardrobes/autodrobe - name = "Autodrobe Supply Crate" - desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill." - cost = 1500 - contains = list(/obj/item/vending_refill/autodrobe) - crate_name = "autodrobe supply crate" - -/datum/supply_pack/costumes_toys/wardrobes/cargo - name = "Cargo Wardrobe Supply Crate" - desc = "This crate contains a refill for the CargoDrobe." - cost = 750 - contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe) - crate_name = "cargo department supply crate" - -/datum/supply_pack/costumes_toys/wardrobes/engineering - name = "Engineering Wardrobe Supply Crate" - desc = "This crate contains refills for the EngiDrobe and AtmosDrobe." - cost = 1500 - 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/costumes_toys/wardrobes/general - name = "General Wardrobes Supply Crate" - desc = "This crate contains refills for the CuraDrobe, BarDrobe, ChefDrobe, JaniDrobe, ChapDrobe." - cost = 3750 - 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/costumes_toys/wardrobes/hydroponics - name = "Hydrobe Supply Crate" - desc = "This crate contains a refill for the Hydrobe." - cost = 750 - contains = list(/obj/item/vending_refill/wardrobe/hydro_wardrobe) - crate_name = "hydrobe supply crate" - -/datum/supply_pack/costumes_toys/wardrobes/medical - name = "Medical Wardrobe Supply Crate" - desc = "This crate contains refills for the MediDrobe, ChemDrobe, GeneDrobe, and ViroDrobe." - cost = 3000 - contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe, - /obj/item/vending_refill/wardrobe/chem_wardrobe, - /obj/item/vending_refill/wardrobe/gene_wardrobe, - /obj/item/vending_refill/wardrobe/viro_wardrobe) - crate_name = "medical department wardrobe supply crate" - -/datum/supply_pack/costumes_toys/wardrobes/science - name = "Science Wardrobe Supply Crate" - desc = "This crate contains refills for the SciDrobe and RoboDrobe." - cost = 1500 - contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe, - /obj/item/vending_refill/wardrobe/science_wardrobe) - crate_name = "science department wardrobe supply crate" - -/datum/supply_pack/costumes_toys/wardrobes/security - name = "Security Wardrobe Supply Crate" - desc = "This crate contains refills for the SecDrobe and LawDrobe." - cost = 1500 - contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe, - /obj/item/vending_refill/wardrobe/law_wardrobe) - crate_name = "security department supply crate" - -/datum/supply_pack/costumes_toys/kinkmate - name = "Kinkmate kit" - cost = 2000 - contraband = TRUE - contains = list(/obj/item/vending_refill/kink, - /obj/item/vending_refill/kink, - /obj/item/vending_refill/kink) - crate_name = "Kinkmate kit" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Miscellaneous /////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/misc - group = "Miscellaneous Supplies" - -/datum/supply_pack/misc/artsupply - name = "Art Supplies" - desc = "Make some happy little accidents with six canvasses, two easels, two boxes of crayons, and a rainbow crayon!" - cost = 800 - contains = list(/obj/structure/easel, - /obj/structure/easel, - /obj/item/canvas/nineteenXnineteen, - /obj/item/canvas/nineteenXnineteen, - /obj/item/canvas/twentythreeXnineteen, - /obj/item/canvas/twentythreeXnineteen, - /obj/item/canvas/twentythreeXtwentythree, - /obj/item/canvas/twentythreeXtwentythree, - /obj/item/storage/crayons, - /obj/item/storage/crayons, - /obj/item/toy/crayon/rainbow, - /obj/item/toy/crayon/white, - /obj/item/toy/crayon/white) - crate_name = "art supply crate" - crate_type = /obj/structure/closet/crate/wooden - -/datum/supply_pack/misc/captain_pen - name = "Captain Pen" - desc = "A spare Captain fountain pen." - access = ACCESS_CAPTAIN - cost = 10000 - contains = list(/obj/item/pen/fountain/captain) - crate_name = "captain pen" - crate_type = /obj/structure/closet/crate/secure/weapon //It is a combat pen - -/datum/supply_pack/misc/dueling_stam - name = "Dueling Pistols" - desc = "Resolve all your quarrels with some nonlethal fun." - cost = 2000 - contains = list(/obj/item/storage/lockbox/dueling/hugbox/stamina, - /obj/item/storage/lockbox/dueling/hugbox/stamina, - /obj/item/storage/lockbox/dueling/hugbox/stamina, - /obj/item/storage/lockbox/dueling/hugbox/stamina, - /obj/item/storage/lockbox/dueling/hugbox/stamina) - crate_name = "dueling pistols" - -/datum/supply_pack/misc/dueling_lethal - name = "Lethal Dueling Pistols" - desc = "Settle your differences the true spaceman way." - cost = 3000 - contraband = TRUE - contains = list(/obj/item/storage/lockbox/dueling/hugbox, - /obj/item/storage/lockbox/dueling/hugbox, - /obj/item/storage/lockbox/dueling/hugbox) - crate_name = "dueling pistols (lethal)" - -/datum/supply_pack/misc/dueling_death - name = "Elimination Dueling Pistols" - desc = "It's high noon." - cost = 5000 - hidden = TRUE - contains = list(/obj/item/storage/lockbox/dueling) - crate_name = "dueling pistols (elimination)" - - -/datum/supply_pack/misc/exoticfootwear - name = "Exotic Footwear Crate" - desc = "Popularised by lizards and exotic dancers, the footwear included in this shipment is sure to give your feet the breathing room they deserve. Sweet Kicks Inc. is not responsible for any damage, distress, or @r0u$a1 caused by this shipment." - cost = 3000 - contains = list(/obj/item/clothing/shoes/wraps, - /obj/item/clothing/shoes/wraps, - /obj/item/clothing/shoes/wraps/silver, - /obj/item/clothing/shoes/wraps/silver, - /obj/item/clothing/shoes/wraps/red, - /obj/item/clothing/shoes/wraps/red, - /obj/item/clothing/shoes/wraps/blue, - /obj/item/clothing/shoes/wraps/blue, - /obj/item/clothing/shoes/clown_shoes, - /obj/item/clothing/shoes/kindleKicks) - crate_name = "footie crate" - -/datum/supply_pack/misc/randombedsheets - name = "Bedsheet Crate (R)" - desc = "Snuggle up in some sweet sheets with this assorted bedsheet crate. Each set comes with eight random bedsheets for your slumbering pleasure!" - cost = 2000 - contains = list(/obj/item/bedsheet/random, - /obj/item/bedsheet/random, - /obj/item/bedsheet/random, - /obj/item/bedsheet/random, - /obj/item/bedsheet/random, - /obj/item/bedsheet/random, - /obj/item/bedsheet/random, - /obj/item/bedsheet/random) //I'm lazy, and I copy paste stuff. - crate_name = "random bedsheet crate" - -/datum/supply_pack/misc/coloredsheets - name = "Bedsheet Crate (C)" - desc = "Give your night life a splash of color with this crate filled with bedsheets! Contains a total of nine different-colored sheets." - cost = 1250 - contains = list(/obj/item/bedsheet/blue, - /obj/item/bedsheet/green, - /obj/item/bedsheet/orange, - /obj/item/bedsheet/purple, - /obj/item/bedsheet/red, - /obj/item/bedsheet/yellow, - /obj/item/bedsheet/brown, - /obj/item/bedsheet/black, - /obj/item/bedsheet/rainbow) - crate_name = "colored bedsheet crate" - -/datum/supply_pack/misc/bicycle - name = "Bicycle" - desc = "Nanotrasen reminds all employees to never toy with powers outside their control." - cost = 1000000 - 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 = 5000 - 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/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 five books are sure to be good reads." - cost = 1500 - 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/triple) - crate_type = /obj/structure/closet/crate/wooden - -/datum/supply_pack/misc/cbtpack - name = "CBT Equipment" - desc = "(*!&@#CBT is a special term coined by high ranking syndicate operatives for a special form of information extraction. While the training required to use this shipment is highly classified, the distribution of it's contents are not. In addition to this crates unusual contents, we have added a bar of soap.#@*$" - hidden = TRUE - cost = 2400 - contains = list(/mob/living/simple_animal/chicken, - /obj/item/toy/beach_ball/holoball, - /obj/item/melee/baton/cattleprod, - /obj/item/soap/syndie) - crate_name = "cbt crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/casinocrate - name = "Casino Crate" - desc = "Start up your own grand casino with this crate filled with slot machine and arcade boards!" - cost = 3000 - contains = list(/obj/item/circuitboard/computer/arcade/battle, - /obj/item/circuitboard/computer/arcade/battle, - /obj/item/circuitboard/computer/arcade/orion_trail, - /obj/item/circuitboard/computer/arcade/orion_trail, - /obj/item/circuitboard/computer/arcade/minesweeper, - /obj/item/circuitboard/computer/arcade/minesweeper, - /obj/item/circuitboard/computer/slot_machine, - /obj/item/circuitboard/computer/slot_machine, - /obj/item/circuitboard/computer/slot_machine, - /obj/item/circuitboard/computer/slot_machine, - /obj/item/circuitboard/computer/slot_machine, - /obj/item/circuitboard/computer/slot_machine) - crate_name = "casino 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 five pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps as well as a briefcase."//that was too forced - cost = 1500 - 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/pen/fourcolor, - /obj/item/pen/fourcolor, - /obj/item/pen, - /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/storage/briefcase) - 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 = 700 - contains = list(/obj/item/storage/box/fountainpens, - /obj/item/paper_bin) - 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 = 1000 - contains = list(/obj/item/stack/wrapping_paper) - crate_type = /obj/structure/closet/crate/wooden - crate_name = "festive wrapping paper crate" - -/datum/supply_pack/misc/paper_work - name = "Freelance Paper work" - desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up. - cost = 700 // Net of 0 credits - contains = list(/obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain) - crate_name = "Paperwork" - -/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 = 600 - contains = list(/obj/item/clothing/under/burial, - /obj/item/reagent_containers/food/snacks/grown/harebell, - /obj/item/reagent_containers/food/snacks/grown/poppy/geranium - ) - crate_name = "coffin" - crate_type = /obj/structure/closet/crate/coffin - -/datum/supply_pack/misc/jukebox - name = "Jukebox" - cost = 35000 - contains = list(/obj/machinery/jukebox) - crate_name = "Jukebox" - -/datum/supply_pack/misc/lewd - name = "Lewd Crate" // OwO - desc = "Psss want to have a good time with your sluts? Well I got what you want! Maid clothing, dildos, collars and more!" - cost = 5000 - contraband = TRUE - contains = list(/obj/item/dildo/custom, - /obj/item/dildo/custom, - /obj/item/vending_refill/kink, - /obj/item/vending_refill/kink, - /obj/item/vending_refill/kink, - /obj/item/clothing/under/maid, - /obj/item/clothing/under/maid, - /obj/item/electropack/shockcollar, - /obj/item/electropack/shockcollar, - /obj/item/restraints/handcuffs/fake/kinky, - /obj/item/restraints/handcuffs/fake/kinky, - /obj/item/clothing/head/kitty/genuine, // Why its illegal - /obj/item/clothing/head/kitty/genuine, - /obj/item/storage/pill_bottle/penis_enlargement, - /obj/item/storage/pill_bottle/breast_enlargement, - /obj/structure/reagent_dispensers/keg/aphro) - crate_name = "lewd kit" - crate_type = /obj/structure/closet/crate - -/datum/supply_pack/misc/lewdkeg - name = "Lewd Deluxe Keg" - desc = "That other stuff not getting you ready? Well I have a Chemslut making tons of the good stuff." - cost = 7000 //It can be a weapon - contraband = TRUE - contains = list(/obj/structure/reagent_dispensers/keg/aphro/strong) - crate_name = "deluxe keg" - crate_type = /obj/structure/closet/crate - -/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 = 4000 // it costs so much because the Space Church is ran by Space Jews - 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 - ) - crate_name = "religious supplies crate" - -/datum/supply_pack/misc/randomised/promiscuous - name = "Promiscuous Organs" - desc = "Do YOU want to have more genital? Well we have just the thing for you~. This crate has two autosurgeon, that will let you have a new sex, organ to impress that hot stud and or chick." - cost = 4000 //Only get 2! - contraband = TRUE - var/num_contained = 2 - contains = list(/obj/item/autosurgeon/penis, - /obj/item/autosurgeon/testicles, - /obj/item/autosurgeon/vagina, - /obj/item/autosurgeon/breasts, - /obj/item/autosurgeon/womb) - crate_name = "promiscuous organs" - -/datum/supply_pack/misc/shower - name = "Shower Supplies" - desc = "Everyone needs a bit of R&R. Make sure you get can get yours by ordering this crate filled with towels, rubber duckies, and some soap!" - cost = 1000 - contains = list(/obj/item/reagent_containers/rag/towel, - /obj/item/reagent_containers/rag/towel, - /obj/item/reagent_containers/rag/towel, - /obj/item/reagent_containers/rag/towel, - /obj/item/reagent_containers/rag/towel, - /obj/item/reagent_containers/rag/towel, - /obj/item/bikehorn/rubberducky, - /obj/item/bikehorn/rubberducky, - /obj/item/soap/nanotrasen) - crate_name = "shower crate" - -/datum/supply_pack/misc/spacehermitstarter - name = "Space Hermit Starter Pack" - desc = "So sick of the station you wish to leave and never come back? Or perhaps you need to find a place of solitutde and privacy? Jumping out of an external airlock may just be the solution for you! But not before you buy this crate - contains a mining hardsuit, a proto-kinetic accelerator, GPS, luxury bluespace shelter aswell as a deluxe bluespace shelter.(Jetpack not included)" - cost = 5000 - contraband = TRUE - contains = list(/obj/item/clothing/suit/space/hardsuit/mining, - /obj/item/gun/energy/kinetic_accelerator, - /obj/item/survivalcapsule/deluxe, - /obj/item/survivalcapsule/luxury, - /obj/item/gps) - crate_name = "space hermit 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 = 1000 - 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/diamondring - name = "Diamond Ring" - desc = "Show them your love is like a diamond: unbreakable and forever lasting. Shipped straight from child slave cartels in the space african mines." - cost = 10000 - contains = list(/obj/item/storage/fancy/ringbox/diamond) - crate_name = "diamond ring crate" - -/datum/supply_pack/misc/jewelry - name = "Jewelry Crate" - desc = "Bling out with this crate of jewelry. Includes gold necklace and a set of two rings." - cost = 5000 - contains = list(/obj/item/clothing/neck/necklace/dope, - /obj/item/storage/fancy/ringbox, - /obj/item/storage/fancy/ringbox/silver - ) - crate_name = "jewelry crate" diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm new file mode 100644 index 00000000..4713d941 --- /dev/null +++ b/code/modules/cargo/packs/armory.dm @@ -0,0 +1,244 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Armory ////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/security/armory + group = "Armory" + access = 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 = 1250 + 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 Helmet Crate" + desc = "Contains three sets of bulletproof helmets. Guaranteed to reduce a bullet's stopping power by over half. Requires Armory access to open." + cost = 1250 + contains = list(/obj/item/clothing/head/helmet/alt, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/head/helmet/alt) + crate_name = "bulletproof helmet crate" + +/datum/supply_pack/security/armory/chemimp + name = "Chemical Implants Crate" + desc = "Contains five Remote Chemical implants. Requires Armory access to open." + cost = 1700 + contains = list(/obj/item/storage/box/chemimp) + crate_name = "chemical implant crate" + +/datum/supply_pack/security/armory/combatknives + name = "Combat Knives Crate" + desc = "Contains three sharpened combat knives. Each knife guaranteed to fit snugly inside any Nanotrasen-standard boot. Requires Armory access to open." + cost = 3200 + contains = list(/obj/item/kitchen/knife/combat, + /obj/item/kitchen/knife/combat, + /obj/item/kitchen/knife/combat) + crate_name = "combat knife 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, with three Shotgun Bandoliers, as well as seven buchshot and 12g shotgun slugs. Requires Armory access to open." + cost = 8000 + 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, + /obj/item/storage/box/lethalshot, + /obj/item/storage/box/lethalslugs) + crate_name = "combat shotguns crate" + +/datum/supply_pack/security/armory/dragnetgun + name = "DRAGnet gun Crate" + desc = "Contains two DRAGnet gun. A Dynamic Rapid-Apprehension of the Guilty net the revolution in law enforcement technology that YOU Want! Requires Armory access to open." + cost = 3250 + contains = list(/obj/item/gun/energy/e_gun/dragnet, + /obj/item/gun/energy/e_gun/dragnet) + crate_name = "anti riot net guns crate" + +/datum/supply_pack/security/armory/energy + name = "Energy Guns Crate" + desc = "Contains three Energy Guns, capable of firing both nonlethal and lethal blasts of light. Requires Armory access to open." + cost = 3250 + contains = list(/obj/item/gun/energy/e_gun, + /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 // Theres boxes in 2 lockers as well as gateway never realy being used sad + name = "Exile Implants Crate" + desc = "Contains five Exile implants. Requires Armory access to open." + cost = 1050 //stops endless points + contains = list(/obj/item/storage/box/exileimp) + crate_name = "exile implant crate" + +/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 = 4000 + 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. Requires Armory access to open." + cost = 1050 + contains = list(/obj/item/storage/box/trackimp) + crate_name = "tracking implant crate" + +/datum/supply_pack/security/armory/fire + name = "Incendiary Weapons Crate" + desc = "Burn, baby burn. Contains three incendiary grenades, seven incendiary slugs, three plasma canisters, and a flamethrower. Requires Brige access to open." + cost = 1750 + 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, + /obj/item/storage/box/fireshot) + crate_name = "incendiary weapons crate" + crate_type = /obj/structure/closet/crate/secure/plasma + dangerous = TRUE + +/datum/supply_pack/security/armory/miniguns + name = "Personal Miniature Energy Guns" + desc = "Contains three miniature energy guns. Each gun has a disabler and a lethal option. Requires Armory access to open." + cost = 3000 + contains = list(/obj/item/gun/energy/e_gun/mini, + /obj/item/gun/energy/e_gun/mini, + /obj/item/gun/energy/e_gun/mini) + crate_name = "personal energy guns crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/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 = 2000 + 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 = 1750 + 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 = 1750 + 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 = 2200 + contains = list(/obj/item/shield/riot, + /obj/item/shield/riot, + /obj/item/shield/riot) + crate_name = "riot shields crate" + +/datum/supply_pack/security/armory/riotshotguns + name = "Riot Shotgun Crate" + desc = "For when the greytide gets really uppity. Contains three riot shotguns, seven rubber shot and beanbag shells. Requires Armory access to open." + cost = 6500 + contains = list(/obj/item/gun/ballistic/shotgun/riot, + /obj/item/gun/ballistic/shotgun/riot, + /obj/item/gun/ballistic/shotgun/riot, + /obj/item/storage/box/rubbershot, + /obj/item/storage/box/beanbag) + crate_name = "riot shotgun crate" + +/datum/supply_pack/security/armory/swat + name = "SWAT Crate" + desc = "Contains two fullbody sets of tough, fireproof, pressurized 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 = 6750 + contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, + /obj/item/clothing/head/helmet/swat/nanotrasen, + /obj/item/clothing/suit/space/swat, + /obj/item/clothing/suit/space/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/combat, + /obj/item/clothing/gloves/combat) + crate_name = "swat crate" + +/datum/supply_pack/security/armory/swattasers //Lesser AEG tbh + name = "SWAT tatical tasers Crate" + desc = "Contains two tactical energy gun, these guns are able to tase, disable and lethal as well as hold a seclight. Requires Armory access to open." + cost = 7000 + contains = list(/obj/item/gun/energy/e_gun/stun, + /obj/item/gun/energy/e_gun/stun) + crate_name = "swat taser crate" + +/datum/supply_pack/security/armory/woodstock + name = "Classic WoodStock Shotguns Crate" + desc = "Contains three rustic, pumpaction shotguns. Requires Armory access to open." + cost = 3500 + contains = list(/obj/item/gun/ballistic/shotgun, + /obj/item/gun/ballistic/shotgun, + /obj/item/gun/ballistic/shotgun) + crate_name = "woodstock shotguns crate" + +/datum/supply_pack/security/armory/wt550 + name = "WT-550 Semi-Auto Rifle Crate" + desc = "Contains two high-powered, semiautomatic rifles chambered in 4.6x30mm. Requires Armory access to open." + cost = 3250 + contains = list(/obj/item/gun/ballistic/automatic/wt550, + /obj/item/gun/ballistic/automatic/wt550) + crate_name = "auto rifle crate" + +/datum/supply_pack/security/armory/wt550ammo + name = "WT-550 Semi-Auto SMG Ammo Crate" + desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." + cost = 2750 + contains = list(/obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9) + crate_name = "auto rifle ammo crate" + +/datum/supply_pack/security/armory/wt550ammo_nonlethal // Takes around 12 shots to stun crit someone + name = "WT-550 Semi-Auto SMG Non-Lethal Ammo Crate" + desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." + cost = 1200 + contains = list(/obj/item/ammo_box/magazine/wt550m9/wtrubber, + /obj/item/ammo_box/magazine/wt550m9/wtrubber, + /obj/item/ammo_box/magazine/wt550m9/wtrubber, + /obj/item/ammo_box/magazine/wt550m9/wtrubber) + crate_name = "auto rifle ammo crate" + +/datum/supply_pack/security/armory/wt550ammo_special + name = "WT-550 Semi-Auto SMG Special Ammo Crate" + desc = "Contains 2 20-round Armour Piercing and Incendiary magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." + cost = 3500 + contains = list(/obj/item/ammo_box/magazine/wt550m9/wtap, + /obj/item/ammo_box/magazine/wt550m9/wtap, + /obj/item/ammo_box/magazine/wt550m9/wtic, + /obj/item/ammo_box/magazine/wt550m9/wtic) + crate_name = "auto rifle ammo crate" diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm new file mode 100644 index 00000000..f3614b00 --- /dev/null +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -0,0 +1,371 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// 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 = 20000 + 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 = 3000 + num_contained = 5 //SOME + contains = list(/obj/item/poster/random_contraband, + /obj/item/poster/random_contraband, + /obj/item/reagent_containers/food/snacks/grown/cannabis, + /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow, + /obj/item/reagent_containers/food/snacks/grown/cannabis/white, + /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/clothing/under/syndicate, + /obj/item/suppressor, + /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, + /obj/item/circuitboard/computer/arcade/amputation) + 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 = 1000 + 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 = 4000 + contains = list(/obj/item/gun/ballistic/automatic/toy/pistol, + /obj/item/gun/ballistic/automatic/toy/pistol, + /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 = 4750 //Lots of fancy clothing that can be sold back! + contains = list(/obj/item/clothing/under/blacktango, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/lawyer/bluesuit, + /obj/item/clothing/suit/toggle/lawyer, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/suit/toggle/lawyer/purple, + /obj/item/clothing/under/lawyer/blacksuit, + /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_jacket/charcoal, + /obj/item/clothing/under/suit_jacket/navy, + /obj/item/clothing/under/suit_jacket/burgundy, + /obj/item/clothing/under/suit_jacket/checkered, + /obj/item/clothing/under/suit_jacket/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 = 5000 + 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 = 3500 + 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 = 3000 + contraband = TRUE + contains = list(/obj/item/storage/box/lasertagpins) + crate_name = "laser tag crate" + +/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 = 1750 + 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 = 1300 + 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/clown, + /obj/item/bikehorn, + /obj/item/clothing/under/rank/mime, + /obj/item/clothing/shoes/sneakers/black, + /obj/item/clothing/gloves/color/white, + /obj/item/clothing/mask/gas/mime, + /obj/item/clothing/head/beret, + /obj/item/clothing/suit/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 = 1500 // or play the arcade machines ya lazy bum + num_contained = 5 + contains = list(/obj/item/storage/box/snappops, + /obj/item/toy/talking/AI, + /obj/item/toy/talking/codex_gigas, + /obj/item/clothing/under/syndicate/tacticool, + /obj/item/toy/sword , + /obj/item/toy/gun, + /obj/item/gun/ballistic/shotgun/toy/crossbow, + /obj/item/storage/box/fakesyndiesuit, + /obj/item/storage/crayons, + /obj/item/toy/spinningtoy, + /obj/item/toy/prize/ripley, + /obj/item/toy/prize/fireripley, + /obj/item/toy/prize/deathripley, + /obj/item/toy/prize/gygax, + /obj/item/toy/prize/durand, + /obj/item/toy/prize/honk, + /obj/item/toy/prize/marauder, + /obj/item/toy/prize/seraph, + /obj/item/toy/prize/mauler, + /obj/item/toy/prize/odysseus, + /obj/item/toy/prize/phazon, + /obj/item/toy/prize/reticence, + /obj/item/toy/cards/deck, + /obj/item/toy/nuke, + /obj/item/toy/minimeteor, + /obj/item/toy/redbutton, + /obj/item/toy/talking/owl, + /obj/item/toy/talking/griffin, + /obj/item/coin/antagtoken, + /obj/item/stack/tile/fakespace/loaded, + /obj/item/stack/tile/fakepit/loaded, + /obj/item/toy/toy_xeno, + /obj/item/storage/box/actionfigure, + /obj/item/restraints/handcuffs/fake, + /obj/item/grenade/chem_grenade/glitter/pink, + /obj/item/grenade/chem_grenade/glitter/blue, + /obj/item/grenade/chem_grenade/glitter/white, + /obj/item/toy/eightball, + /obj/item/toy/windupToolbox, + /obj/item/toy/clockwork_watch, + /obj/item/toy/toy_dagger, + /obj/item/extendohand/acme, + /obj/item/hot_potato/harmless/toy, + /obj/item/card/emagfake, + /obj/item/clothing/shoes/wheelys, + /obj/item/clothing/shoes/kindleKicks, + /obj/item/storage/belt/military/snack, + /obj/item/toy/eightball, + /obj/item/vending_refill/donksoft) + crate_name = "toy crate" + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/costumes_toys/randomised/plush + name = "Plush Crate" + desc = "Plush tide station wide. Contains 5 random plushies for you to love. Warranty void if your love violates the terms of use." + cost = 1500 // or play the arcade machines ya lazy bum + num_contained = 5 + contains = list(/obj/item/toy/plush/random, + /obj/item/toy/plush/random, + /obj/item/toy/plush/random, + /obj/item/toy/plush/random, + /obj/item/toy/plush/random) //I'm lazy + crate_name = "plushie crate" + crate_type = /obj/structure/closet/crate/wooden + +/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 = 2000 + 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/wardrobes/autodrobe + name = "Autodrobe Supply Crate" + desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill." + cost = 1500 + contains = list(/obj/item/vending_refill/autodrobe) + crate_name = "autodrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/cargo + name = "Cargo Wardrobe Supply Crate" + desc = "This crate contains a refill for the CargoDrobe." + cost = 750 + contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe) + crate_name = "cargo department supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/engineering + name = "Engineering Wardrobe Supply Crate" + desc = "This crate contains refills for the EngiDrobe and AtmosDrobe." + cost = 1500 + 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/costumes_toys/wardrobes/general + name = "General Wardrobes Supply Crate" + desc = "This crate contains refills for the CuraDrobe, BarDrobe, ChefDrobe, JaniDrobe, ChapDrobe." + cost = 3750 + 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/costumes_toys/wardrobes/hydroponics + name = "Hydrobe Supply Crate" + desc = "This crate contains a refill for the Hydrobe." + cost = 750 + contains = list(/obj/item/vending_refill/wardrobe/hydro_wardrobe) + crate_name = "hydrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/medical + name = "Medical Wardrobe Supply Crate" + desc = "This crate contains refills for the MediDrobe, ChemDrobe, GeneDrobe, and ViroDrobe." + cost = 3000 + contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe, + /obj/item/vending_refill/wardrobe/chem_wardrobe, + /obj/item/vending_refill/wardrobe/gene_wardrobe, + /obj/item/vending_refill/wardrobe/viro_wardrobe) + crate_name = "medical department wardrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/science + name = "Science Wardrobe Supply Crate" + desc = "This crate contains refills for the SciDrobe and RoboDrobe." + cost = 1500 + contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe, + /obj/item/vending_refill/wardrobe/science_wardrobe) + crate_name = "science department wardrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/security + name = "Security Wardrobe Supply Crate" + desc = "This crate contains refills for the SecDrobe and LawDrobe." + cost = 1500 + contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe, + /obj/item/vending_refill/wardrobe/law_wardrobe) + crate_name = "security department supply crate" + +/datum/supply_pack/costumes_toys/kinkmate + name = "Kinkmate kit" + cost = 2000 + contraband = TRUE + contains = list(/obj/item/vending_refill/kink, + /obj/item/vending_refill/kink, + /obj/item/vending_refill/kink) + crate_name = "Kinkmate kit" diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm new file mode 100644 index 00000000..9ae80dff --- /dev/null +++ b/code/modules/cargo/packs/emergency.dm @@ -0,0 +1,324 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// 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 = 2800 + contraband = TRUE + contains = list(/obj/vehicle/ridden/atv, + /obj/item/key, + /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/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 = 3750 + 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/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas) + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/emergency/radiatione_emergency + name = "Emergenc 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 few pill bottles that are able to handles radiation and the affects of the poisoning." + cost = 2500 + 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/storage/pill_bottle/mutarad, + /obj/item/storage/firstaid/radbgone) + crate_name = "radiation protection crate" + crate_type = /obj/structure/closet/crate/radiation + +/datum/supply_pack/emergency/rcds + name = "Emergency RCDs" + desc = "Bombs going off on station? SME blown and now you need to fix the hole it left behind? Well this crate has a pare of Rcds to be able to easily fix up any problem you may have!" + cost = 1500 + contains = list(/obj/item/construction/rcd, + /obj/item/construction/rcd) + crate_name = "emergency rcds" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/emergency/soft_suit + name = "Emergency Space Suit " + desc = "Is there bombs going off left and right? Is there meteors shooting around the station? Well we have two fragile space suit for emergencys as well as air and masks." + cost = 1200 + contains = list(/obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/suit/space/fragile, + /obj/item/clothing/suit/space/fragile, + /obj/item/clothing/head/helmet/space/fragile, + /obj/item/clothing/head/helmet/space/fragile) + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + +/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 = 1200 + 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 = 1000 + 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 = 1000 + 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/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air) + 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 14 Metal Foam Grenades." + cost = 2000 + contains = list(/obj/item/storage/box/metalfoam, + /obj/item/storage/box/metalfoam) + crate_name = "metal foam grenade crate" + +/datum/supply_pack/emergency/syndicate + name = "NULL_ENTRY" + desc = "(#@&^$THIS PACKAGE CONTAINS 30TC WORTH OF SOME RANDOM SYNDICATE GEAR WE HAD LYING AROUND THE WAREHOUSE. GIVE EM HELL, OPERATIVE@&!*() " + hidden = TRUE + cost = 20000 + contains = list() + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + dangerous = TRUE + +/datum/supply_pack/emergency/syndicate/fill(obj/structure/closet/crate/C) + var/crate_value = 30 + var/list/uplink_items = get_uplink_items(SSticker.mode) + while(crate_value) + var/category = pick(uplink_items) + var/item = pick(uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + if(!I.surplus_nullcrates || prob(100 - I.surplus_nullcrates)) + continue + if(crate_value < I.cost) + continue + crate_value -= I.cost + new I.item(C) + +/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 = 4000 + 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, internals tank, and helmet." + cost = 2000 + 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) + 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 = 1300 + 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 two aging suits from Space-Goodwill. Requires EVA access to open." + cost = 3000 + access = ACCESS_EVA + contains = list(/obj/item/clothing/suit/space, + /obj/item/clothing/suit/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath) + crate_name = "space suit crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/emergency/spacejets + name = "Spare EVA Jetpacks" + desc = "Contains three EVA grade jectpaks. Requires EVA access to open." + cost = 2000 + access = ACCESS_EVA + contains = list(/obj/item/tank/jetpack/carbondioxide/eva, + /obj/item/tank/jetpack/carbondioxide/eva, + /obj/item/tank/jetpack/carbondioxide/eva) + crate_name = "eva jetpacks crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/emergency/specialops + name = "Special Ops Supplies" + desc = "(*!&@#TOO CHEAP FOR 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 = 2200 + 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, two sprays of Plant-B-Gone, and two anti-weed chemical grenades. Warranty void if used on ambrosia. Requires Hydroponics access to open." + cost = 1800 + 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, + /obj/item/reagent_containers/spray/plantbgone, + /obj/item/reagent_containers/spray/plantbgone) + crate_name = "weed control crate" + crate_type = /obj/structure/closet/crate/secure/hydroponics + +/datum/supply_pack/medical/anitvirus + name = "Virus Containment Crate" + desc = "Viro let out a death plague Mk II again? Someone didnt wash there hands? Old plagues born anew? Well this crate is for you! Hope you cure it before it brakes out of the station... This crate needs medical access to open and has two bio suits, a box of needles and beakers, five spaceacillin needles, and a medibot." + cost = 3000 + access = ACCESS_MEDICAL + contains = list(/mob/living/simple_animal/bot/medbot, + /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/reagent_containers/syringe/antiviral, + /obj/item/reagent_containers/syringe/antiviral, + /obj/item/reagent_containers/syringe/antiviral, + /obj/item/reagent_containers/syringe/antiviral, + /obj/item/reagent_containers/syringe/antiviral, + /obj/item/storage/box/syringes, + /obj/item/storage/box/beakers) + crate_name = "virus containment unit crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/emergency/medicalemergency + name = "Emergency Medical Supplies" + desc = "Emergency supplies for a front-line medic. Contains two boxes of body bags, a medical HUD, a defib unit, medical belt, toxin bottles, epipens, and several types of medical kits." + cost = 6600 + contains = list(/obj/item/storage/box/bodybags, + /obj/item/storage/box/bodybags, + /obj/item/clothing/glasses/hud/health, + /obj/item/defibrillator/loaded, + /obj/item/storage/belt/medical, + /obj/item/storage/firstaid/toxin, + /obj/item/storage/firstaid/o2, + /obj/item/storage/firstaid/brute, + /obj/item/storage/firstaid/fire, + /obj/item/reagent_containers/glass/bottle/toxin, + /obj/item/reagent_containers/glass/bottle/toxin, + /obj/item/storage/box/medipens) + crate_name = "medical emergency crate" + crate_type = /obj/structure/closet/crate/medical + +/datum/supply_pack/emergency/medemergencylite + name = "Emergency Medical Supplies (Lite)" + desc = "A less than optimal, but still effective, set of tools for emergency care. Contains a box of bodybags, a medical HUD, healing sprays, charcoal, some gauze, and some spare medipens." + cost = 2800 + contains = list(/obj/item/storage/box/bodybags, + /obj/item/stack/medical/gauze, + /obj/item/clothing/glasses/hud/health, + /obj/item/reagent_containers/medspray/styptic, + /obj/item/reagent_containers/medspray/silver_sulf, + /obj/item/reagent_containers/medspray/synthflesh, + /obj/item/reagent_containers/glass/bottle/charcoal, + /obj/item/reagent_containers/glass/bottle/charcoal, + /obj/item/reagent_containers/hypospray/medipen, + /obj/item/reagent_containers/hypospray/medipen, + /obj/item/reagent_containers/hypospray/medipen) + crate_name = "medical emergency crate (lite)" + crate_type = /obj/structure/closet/crate/medical + +/datum/supply_pack/emergency/mre + name = "MRE supply kit (emergency rations)" + desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank." + cost = 2000 + contains = list(/obj/item/storage/box/mre/menu1/safe, + /obj/item/storage/box/mre/menu1/safe, + /obj/item/storage/box/mre/menu2/safe, + /obj/item/storage/box/mre/menu2/safe, + /obj/item/storage/box/mre/menu3, + /obj/item/storage/box/mre/menu4/safe) + crate_name = "MRE crate (emergency rations)" diff --git a/code/modules/cargo/packs/engine.dm b/code/modules/cargo/packs/engine.dm new file mode 100644 index 00000000..fd5c711b --- /dev/null +++ b/code/modules/cargo/packs/engine.dm @@ -0,0 +1,185 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////// Engine Construction ///////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/engine + group = "Engine Construction" + crate_type = /obj/structure/closet/crate/engineering + +/datum/supply_pack/engine/am_jar + name = "Antimatter Containment Jar Crate" + desc = "Two Antimatter containment jars stuffed into a single crate." + cost = 2300 + contains = list(/obj/item/am_containment, + /obj/item/am_containment) + crate_name = "antimatter jar crate" + +/datum/supply_pack/engine/am_core + name = "Antimatter Control Crate" + desc = "The brains of the Antimatter engine, this device is sure to teach the station's powergrid the true meaning of real power." + cost = 5200 + contains = list(/obj/machinery/power/am_control_unit) + crate_name = "antimatter control crate" + +/datum/supply_pack/engine/am_shielding + name = "Antimatter Shielding Crate" + desc = "Contains ten Antimatter shields, somehow crammed into a crate." + cost = 2500 + contains = list(/obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container) //10 shields: 3x3 containment and a core + crate_name = "antimatter shielding crate" + +/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 = 1750 + 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 = 1750 + 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's lightning under control." + cost = 2200 + contains = list(/obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod) + crate_name = "grounding rod crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engine/mason + name = "M.A.S.O.N RIG Crate" + desc = "The rare M.A.S.O.N RIG. Requires CE access to open." + cost = 15000 + access = ACCESS_CE + contains = list(/obj/item/clothing/suit/space/hardsuit/ancient/mason) + crate_name = "M.A.S.O.N Rig" + crate_type = /obj/structure/closet/crate/secure/engineering + +/datum/supply_pack/engine/PA + name = "Particle Accelerator Crate" + desc = "A supermassive black hole or hyper-powered teslaball are the perfect way to spice up any party! This \"My First Apocalypse\" kit contains everything you need to build your own Particle Accelerator! Ages 10 and up." + cost = 3750 + contains = list(/obj/structure/particle_accelerator/fuel_chamber, + /obj/machinery/particle_accelerator/control_box, + /obj/structure/particle_accelerator/particle_emitter/center, + /obj/structure/particle_accelerator/particle_emitter/left, + /obj/structure/particle_accelerator/particle_emitter/right, + /obj/structure/particle_accelerator/power_box, + /obj/structure/particle_accelerator/end_cap) + crate_name = "particle accelerator crate" + +/datum/supply_pack/engine/collector + name = "Radiation Collector Crate" + desc = "Contains three radiation collectors. Useful for collecting energy off nearby Supermatter Crystals, Singularities or Teslas!" + cost = 2750 + contains = list(/obj/machinery/power/rad_collector, + /obj/machinery/power/rad_collector, + /obj/machinery/power/rad_collector) + crate_name = "collector crate" + +/datum/supply_pack/engine/sing_gen + name = "Singularity Generator Crate" + desc = "The key to unlocking the power of Lord Singuloth. Particle Accelerator not included." + cost = 6000 + contains = list(/obj/machinery/the_singularitygen) + crate_name = "singularity generator crate" + +/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 = 2850 + 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 = 10000 + 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 power generation: This pack of four Tesla coils can do it all!" + cost = 3500 + contains = list(/obj/machinery/power/tesla_coil, + /obj/machinery/power/tesla_coil, + /obj/machinery/power/tesla_coil, + /obj/machinery/power/tesla_coil) + crate_name = "tesla coil crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engine/tesla_gen + name = "Tesla Generator Crate" + desc = "The key to unlocking the power of the Tesla energy ball. Particle Accelerator not included." + cost = 7000 + contains = list(/obj/machinery/the_singularitygen/tesla) + crate_name = "tesla generator crate" + +/datum/supply_pack/engine/teg + name = "Thermoelectric Generator" + desc = "Contains your very own Thermoelectric Generator. Time to turn cargo into a blazing hellfire, perhaps?" + cost = 4000 + contains = list(/obj/machinery/power/generator) + crate_name = "thermoelectric generator crate" + +/datum/supply_pack/engine/energy_harvester + name = "Energy Harvesting Module" + desc = "A Device which upon connection to a node, will harvest the energy and send it to engineerless stations in return for credits, derived from a syndicate powersink model." + cost = 7500 + access = ACCESS_CE + contains = list(/obj/item/energy_harvester) + crate_name = "energy harvesting module crate" + crate_type = /obj/structure/closet/crate/secure/engineering diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm new file mode 100644 index 00000000..0503b04e --- /dev/null +++ b/code/modules/cargo/packs/engineering.dm @@ -0,0 +1,215 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// 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 = 2500 + contains = list(/obj/machinery/shieldgen, + /obj/machinery/shieldgen) + crate_name = "anti-breach shield projector crate" + +/datum/supply_pack/engineering/conveyor + name = "Conveyor Assembly Crate" + desc = "Keep production moving along with six conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book." + cost = 750 + contains = list(/obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /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 = 1500 + 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/engihardsuit + name = "Engineering Hardsuit" + desc = "Poly 'Who stole all the hardsuits!' Well now you can get more hardsuits if needed! NOTE ONE HARDSUIT IS IN THIS CRATE, as well as one air tank and mask!" + cost = 2750 + contains = list(/obj/item/tank/internals/air, + /obj/item/clothing/mask/gas, + /obj/item/clothing/suit/space/hardsuit/engine) + crate_name = "engineering hardsuit" + +/datum/supply_pack/engineering/atmoshardsuit + name = "Atmospherics Hardsuit" + desc = "Too many techs and not enough hardsuits? Time to buy some more! Comes with gas mask and air tank. Ask the CE to open." + cost = 5000 + access = ACCESS_CE + contains = list(/obj/item/tank/internals/air, + /obj/item/clothing/mask/gas, + /obj/item/clothing/suit/space/hardsuit/engine/atmos) + crate_name = "atmospherics hardsuit" + crate_type = /obj/structure/closet/crate/secure/engineering + +/datum/supply_pack/engineering/industrialrcd + name = "Industrial RCD" + desc = "A industrial RCD in case the station has gone through more then one meteor storm and the CE needs to bring out the somthing a bit more reliable. Dose not contain spare ammo for the industrial RCD or any other RCD modles." + cost = 4500 + access = ACCESS_CE + contains = list(/obj/item/construction/rcd/industrial) + crate_name = "industrial rcd" + crate_type = /obj/structure/closet/crate/secure/engineering + +/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 = 2750 //Made of pure-grade bullshittinium + 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 + +/obj/item/stock_parts/cell/inducer_supply + maxcharge = 5000 + charge = 5000 + +/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 = 2300 + 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 = 2250 + 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 = 1000 + 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/powertools + name = "Power Tools Crate" + desc = "Setting up the aux base? Working out in space? Maybe you just hate doing things by hand. Grab some power tools and slash your workload in half! Contains a hardhat, hazard vest, Hand Drill, and Jaws of Life" + cost = 6500 + access = ACCESS_ENGINE + contains = list(/obj/item/clothing/head/hardhat, + /obj/item/clothing/suit/hazardvest, + /obj/item/screwdriver/power, + /obj/item/crowbar/power) + crate_name = "power tools crate" + crate_type = /obj/structure/closet/crate/secure/engineering + +/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 = 5000 + access = 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." + 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 = 1200 + crate_name = "toolbox crate" + +/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 = 15000 + special = TRUE + contains = list(/obj/item/circuitboard/machine/bsa/front, + /obj/item/circuitboard/machine/bsa/middle, + /obj/item/circuitboard/machine/bsa/back, + /obj/item/circuitboard/computer/bsa_control + ) + crate_name= "bluespace artillery parts crate" + +/datum/supply_pack/engineering/dna_vault + name = "DNA Vault Parts" + desc = "Secure the longevity of the current state of humanity within this massive library of scientific knowledge, capable of granting superhuman powers and abilities. Highly advanced research is required for proper construction. Also contains five DNA probes." + cost = 12000 + special = TRUE + 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 = 3000 + special = TRUE + 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 = 4000 + 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 = 4000 + contains = list(/obj/item/circuitboard/computer/sat_control) + crate_name= "shield control board crate" diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm new file mode 100644 index 00000000..ca0c308d --- /dev/null +++ b/code/modules/cargo/packs/livestock.dm @@ -0,0 +1,166 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +////////////////////////////// Livestock ///////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/critter + group = "Livestock" + crate_type = /obj/structure/closet/crate/critter + +/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 = 5000 + 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 = 5000 //Cats are worth as much as corgis. + 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 = 2000 + contains = list( /mob/living/simple_animal/chick) + crate_name = "chicken 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 = 5000 + 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/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 = 5000 + 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/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 = 5500 + contains = list(/mob/living/simple_animal/pet/dog/corgi/exoticcorgi, + /obj/item/clothing/neck/petcollar) + crate_name = "exotic corgi crate" + +/datum/supply_pack/critter/cow + name = "Cow Crate" + desc = "The cow goes moo!" + cost = 3000 + contains = list(/mob/living/simple_animal/cow) + crate_name = "cow crate" + +/datum/supply_pack/critter/fox + name = "Fox Crate" + desc = "The fox goes...? Comes with a collar!"//what does the fox say + cost = 5000 + 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 = 2500 + contains = list(/mob/living/simple_animal/hostile/retaliate/goat) + crate_name = "goat crate" + +/datum/supply_pack/critter/goose + name = "Goose Crate" + desc = "Angry and violent birds. Evil, evil creatures." + cost = 2500 + contains = list(/mob/living/simple_animal/hostile/retaliate/goose) + crate_name = "goose crate" + +/datum/supply_pack/critter/monkey + name = "Monkey Cube Crate" + desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" + cost = 2000 + contains = list (/obj/item/storage/box/monkeycubes) + 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 = 5000 + contains = list(/mob/living/simple_animal/pet/dog/pug, + /obj/item/clothing/neck/petcollar) + crate_name = "pug crate" + +/datum/supply_pack/organic/critter/kiwi + name = "Space kiwi Crate" + cost = 2000 + contains = list( /mob/living/simple_animal/kiwi) + crate_name = "space kiwi 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 = 3000 + contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake, + /mob/living/simple_animal/hostile/retaliate/poison/snake, + /mob/living/simple_animal/hostile/retaliate/poison/snake) + crate_name = "snake crate" + +/datum/supply_pack/critter/mouse + name = "Mouse Crate" + desc = "Good for snakes and lizards of all ages. Contains ~12 feeder mice." + cost = 2000 + contains = list(/mob/living/simple_animal/mouse,) + crate_name = "mouse crate" + +/datum/supply_pack/critter/mouse/generate() + . = ..() + for(var/i in 1 to 11) + new /mob/living/simple_animal/mouse(.) + +/datum/supply_pack/critter/secbat + name = "Security Bat Crate" + desc = "Contains five security bats, perfect to Bat-up any security officer." + cost = 2500 + contains = list(/mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat) + crate_name = "security bat crate" diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm new file mode 100644 index 00000000..0a82aa0b --- /dev/null +++ b/code/modules/cargo/packs/materials.dm @@ -0,0 +1,170 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +/////////////////////// 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 = 1000 + contains = list(/obj/item/stack/sheet/cardboard/fifty) + crate_name = "cardboard sheets crate" + +/datum/supply_pack/materials/glass50 + name = "50 Glass Sheets" + desc = "Let some nice light in with fifty glass sheets!" + cost = 850 + contains = list(/obj/item/stack/sheet/glass/fifty) + crate_name = "glass sheets crate" + +/datum/supply_pack/materials/metal50 + name = "50 Metal Sheets" + desc = "Any construction project begins with a good stack of fifty metal sheets!" + cost = 850 + contains = list(/obj/item/stack/sheet/metal/fifty) + crate_name = "metal sheets crate" + +/datum/supply_pack/materials/plasteel20 + name = "20 Plasteel Sheets" + desc = "Reinforce the station's integrity with twenty plasteel sheets!" + cost = 4700 + 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 = 9050 + 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 = 950 + 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 = 800 + 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 = 1450 + contains = list(/obj/item/stack/sheet/mineral/wood/fifty) + crate_name = "wood planks crate" + +/datum/supply_pack/materials/rcdammo + name = "Spare RCD ammo" + desc = "This crate contains sixteen RCD ammo packs, to help with any holes or projects people might be working on." + cost = 3750 + contains = list(/obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo, + /obj/item/rcd_ammo) + crate_name = "rcd ammo" + +/datum/supply_pack/materials/bz + name = "BZ Canister Crate" + desc = "Contains a canister of BZ. Requires Toxins access to open." + cost = 7500 // Costs 3 credits more than what you can get for selling it. + access = ACCESS_TOX_STORAGE + contains = list(/obj/machinery/portable_atmospherics/canister/bz) + crate_name = "BZ canister crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/materials/carbon_dio + name = "Carbon Dioxide Canister" + desc = "Contains a canister of Carbon Dioxide." + cost = 3000 + contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) + crate_name = "carbon dioxide canister crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/materials/nitrogen + name = "Nitrogen Canister" + desc = "Contains a canister of Nitrogen." + cost = 2000 + contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) + crate_name = "nitrogen canister crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/materials/nitrous_oxide_canister + name = "Nitrous Oxide Canister" + desc = "Contains a canister of Nitrous Oxide. Requires Atmospherics access to open." + cost = 3000 + access = ACCESS_ATMOSPHERICS + contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide) + crate_name = "nitrous oxide canister crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/materials/oxygen + name = "Oxygen Canister" + desc = "Contains a canister of Oxygen. Canned in Druidia." + cost = 1500 + contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) + crate_name = "oxygen canister crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/materials/water_vapor + name = "Water Vapor Canister" + desc = "Contains a canister of Water Vapor. I swear to god if you open this in the halls..." + cost = 2500 + contains = list(/obj/machinery/portable_atmospherics/canister/water_vapor) + crate_name = "water vapor canister 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 = 800 + contains = list(/obj/structure/reagent_dispensers/fueltank) + crate_name = "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 = 600 + contains = list(/obj/structure/reagent_dispensers/watertank) + crate_name = "water tank crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/materials/foamtank + name = "Firefighting Foam Tank Crate" + desc = "Contains a tank of firefighting foam. Also known as \"plasmaman's bane\"." + cost = 1500 + contains = list(/obj/structure/reagent_dispensers/foamtank) + crate_name = "foam 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 = 1200 + contains = list(/obj/structure/reagent_dispensers/watertank/high) + crate_name = "high-capacity water tank crate" + crate_type = /obj/structure/closet/crate/large diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm new file mode 100644 index 00000000..5bda9173 --- /dev/null +++ b/code/modules/cargo/packs/medical.dm @@ -0,0 +1,238 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Medical ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/medical + group = "Medical" + crate_type = /obj/structure/closet/crate/medical + +/datum/supply_pack/medical/bodybags + name = "Bodybags" + desc = "For when the bodies hit the floor. Contains 4 boxes of bodybags." + cost = 1200 + contains = list(/obj/item/storage/box/bodybags, + /obj/item/storage/box/bodybags, + /obj/item/storage/box/bodybags, + /obj/item/storage/box/bodybags,) + crate_name = "bodybag crate" + +/datum/supply_pack/medical/firstaidbruises + name = "Bruise Treatment Kit Crate" + desc = "Contains three first aid kits focused on healing bruises and broken bones." + cost = 1000 + contains = list(/obj/item/storage/firstaid/brute, + /obj/item/storage/firstaid/brute, + /obj/item/storage/firstaid/brute) + crate_name = "brute treatment kit crate" + +/datum/supply_pack/medical/firstaidburns + name = "Burn Treatment Kit Crate" + desc = "Contains three first aid kits focused on healing severe burns." + cost = 1000 + contains = list(/obj/item/storage/firstaid/fire, + /obj/item/storage/firstaid/fire, + /obj/item/storage/firstaid/fire) + crate_name = "burn treatment kit crate" + +/datum/supply_pack/medical/bloodpacks + name = "Blood Pack Variety Crate" + desc = "Contains ten different blood packs for reintroducing blood to patients." + cost = 3000 + contains = list(/obj/item/reagent_containers/blood/random, + /obj/item/reagent_containers/blood/random, + /obj/item/reagent_containers/blood/APlus, + /obj/item/reagent_containers/blood/AMinus, + /obj/item/reagent_containers/blood/BPlus, + /obj/item/reagent_containers/blood/BMinus, + /obj/item/reagent_containers/blood/OPlus, + /obj/item/reagent_containers/blood/OMinus, + /obj/item/reagent_containers/blood/lizard, + /obj/item/reagent_containers/blood/jellyblood, + /obj/item/reagent_containers/blood/insect) + crate_name = "blood freezer" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/medical/bloodpackssynth + name = "Synthetics Blood Pack Crate" + desc = "Contains five synthetics blood packs for reintroducing blood to patients." + cost = 3000 + contains = list(/obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics, + /obj/item/reagent_containers/blood/synthetics) + crate_name = "blood freezer" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/medical/defibs + name = "Defibrillator Crate" + desc = "Contains two defibrillators for bringing the recently deceased back to life." + cost = 2500 + contains = list(/obj/item/defibrillator/loaded, + /obj/item/defibrillator/loaded) + crate_name = "defibrillator crate" + +/datum/supply_pack/medical/firstaid + name = "First Aid Kit Crate" + desc = "Contains four first aid kits for healing most types of wounds." + cost = 1000 + contains = list(/obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/regular) + crate_name = "first aid kit crate" + +/datum/supply_pack/medical/iv_drip + name = "IV Drip Crate" + desc = "Contains a single IV drip stand for intravenous delivery." + cost = 800 + contains = list(/obj/machinery/iv_drip) + crate_name = "iv drip crate" + +/datum/supply_pack/science/adv_surgery_tools + name = "Med-Co Advanced surgery tools" + desc = "A full set of Med-Co advanced surgery tools, this crate both a can of synthflesh and a can of sterilizine. Requires Surgery access to open." + cost = 5500 + access = ACCESS_SURGERY + contains = list(/obj/item/storage/belt/medical/surgery_belt_adv, + /obj/item/reagent_containers/medspray/synthflesh, + /obj/item/reagent_containers/medspray/sterilizine) + crate_name = "medco newest surgery tools" + crate_type = /obj/structure/closet/crate/medical + +/datum/supply_pack/medical/medicalhardsuit + name = "Medical Hardsuit" + desc = "Got people being spaced left and right? Hole in the same room as the dead body of Hos or cap? Fear not, now you can buy one medical hardsuit with a mask and air tank to save your fellow crewmembers." + cost = 2750 + contains = list(/obj/item/tank/internals/air, + /obj/item/clothing/mask/gas, + /obj/item/clothing/suit/space/hardsuit/medical) + crate_name = "medical hardsuit" + +/datum/supply_pack/medical/supplies + name = "Medical Supplies Crate" + desc = "Contains seven beakers, syringes, and bodybags. Three morphine bottles, four insulin pills. Two charcoal bottles, epinephrine bottles, antitoxin bottles, and large beakers. Finally, a single roll of medical gauze, as well as a bottle of stimulant pills for long, hard work days. German doctor not included." + cost = 2500 + contains = list(/obj/item/reagent_containers/glass/bottle/charcoal, + /obj/item/reagent_containers/glass/bottle/charcoal, + /obj/item/reagent_containers/glass/bottle/epinephrine, + /obj/item/reagent_containers/glass/bottle/epinephrine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/toxin, + /obj/item/reagent_containers/glass/bottle/toxin, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/pill/insulin, + /obj/item/reagent_containers/pill/insulin, + /obj/item/reagent_containers/pill/insulin, + /obj/item/reagent_containers/pill/insulin, + /obj/item/stack/medical/gauze, + /obj/item/storage/box/beakers, + /obj/item/storage/box/medsprays, + /obj/item/storage/box/syringes, + /obj/item/storage/box/bodybags, + /obj/item/storage/pill_bottle/stimulant) + crate_name = "medical supplies crate" + +/datum/supply_pack/medical/vending + name = "Medical Vending Crate" + desc = "Contains refills for medical vending machines." + cost = 2000 + contains = list(/obj/item/vending_refill/medical, + /obj/item/vending_refill/wallmed) + crate_name = "medical vending crate" + +/datum/supply_pack/medical/sprays + name = "Medical Sprays" + desc = "Contains two cans of Styptic Spray, Silver Sulfadiazine Spray, Synthflesh Spray and Sterilizer Compound Spray." + cost = 2250 + contains = list(/obj/item/reagent_containers/medspray/styptic, + /obj/item/reagent_containers/medspray/styptic, + /obj/item/reagent_containers/medspray/silver_sulf, + /obj/item/reagent_containers/medspray/silver_sulf, + /obj/item/reagent_containers/medspray/synthflesh, + /obj/item/reagent_containers/medspray/synthflesh, + /obj/item/reagent_containers/medspray/sterilizine, + /obj/item/reagent_containers/medspray/sterilizine) + crate_name = "medical supplies crate" + +/datum/supply_pack/medical/firstaidmixed + name = "Mixed Medical Kits" + desc = "Contains one of each medical kits for dealing with a variety of injured crewmembers." + cost = 1250 + contains = list(/obj/item/storage/firstaid/toxin, + /obj/item/storage/firstaid/o2, + /obj/item/storage/firstaid/brute, + /obj/item/storage/firstaid/fire, + /obj/item/storage/firstaid/regular) + crate_name = "medical supplies crate" + +/datum/supply_pack/medical/firstaidoxygen + name = "Oxygen Deprivation Kit Crate" + desc = "Contains three first aid kits focused on helping oxygen deprivation victims." + cost = 1000 + contains = list(/obj/item/storage/firstaid/o2, + /obj/item/storage/firstaid/o2, + /obj/item/storage/firstaid/o2) + crate_name = "oxygen deprivation kit crate" + +/datum/supply_pack/medical/advrad + name = "Radiation Treatment Crate Deluxe" + desc = "A crate for when radiation is out of hand... Contains two rad-b-gone kits, one bottle of anti radiation deluxe pill bottle, as well as a radiation treatment deluxe pill bottle!" + cost = 3500 + contains = list(/obj/item/storage/pill_bottle/antirad_plus, + /obj/item/storage/pill_bottle/mutarad, + /obj/item/storage/firstaid/radbgone, + /obj/item/storage/firstaid/radbgone, + /obj/item/geiger_counter, + /obj/item/geiger_counter) + crate_name = "radiation protection crate" + crate_type = /obj/structure/closet/crate/radiation + +/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 = 1300 + contains = list(/obj/item/storage/backpack/duffelbag/med/surgery, + /obj/item/reagent_containers/medspray/sterilizine, + /obj/item/roller) + crate_name = "surgical supplies crate" + +/datum/supply_pack/medical/firstaidtoxins + name = "Toxin Treatment Kit Crate" + desc = "Contains three first aid kits focused on healing damage dealt by heavy toxins." + cost = 1000 + contains = list(/obj/item/storage/firstaid/toxin, + /obj/item/storage/firstaid/toxin, + /obj/item/storage/firstaid/toxin) + crate_name = "toxin treatment kit crate" + +/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 = 2500 + access = ACCESS_CMO + 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 diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm new file mode 100644 index 00000000..56b69440 --- /dev/null +++ b/code/modules/cargo/packs/misc.dm @@ -0,0 +1,374 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Miscellaneous /////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/misc + group = "Miscellaneous Supplies" + +/datum/supply_pack/misc/artsupply + name = "Art Supplies" + desc = "Make some happy little accidents with six canvasses, two easels, two boxes of crayons, and a rainbow crayon!" + cost = 800 + contains = list(/obj/structure/easel, + /obj/structure/easel, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/twentythreeXnineteen, + /obj/item/canvas/twentythreeXnineteen, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/storage/crayons, + /obj/item/storage/crayons, + /obj/item/toy/crayon/rainbow, + /obj/item/toy/crayon/white, + /obj/item/toy/crayon/white) + crate_name = "art supply crate" + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/captain_pen + name = "Captain Pen" + desc = "A spare Captain fountain pen." + access = ACCESS_CAPTAIN + cost = 10000 + contains = list(/obj/item/pen/fountain/captain) + crate_name = "captain pen" + crate_type = /obj/structure/closet/crate/secure/weapon //It is a combat pen + +/datum/supply_pack/misc/dueling_stam + name = "Dueling Pistols" + desc = "Resolve all your quarrels with some nonlethal fun." + cost = 2000 + contains = list(/obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina, + /obj/item/storage/lockbox/dueling/hugbox/stamina) + crate_name = "dueling pistols" + +/datum/supply_pack/misc/dueling_lethal + name = "Lethal Dueling Pistols" + desc = "Settle your differences the true spaceman way." + cost = 3000 + contraband = TRUE + contains = list(/obj/item/storage/lockbox/dueling/hugbox, + /obj/item/storage/lockbox/dueling/hugbox, + /obj/item/storage/lockbox/dueling/hugbox) + crate_name = "dueling pistols (lethal)" + +/datum/supply_pack/misc/dueling_death + name = "Elimination Dueling Pistols" + desc = "It's high noon." + cost = 5000 + hidden = TRUE + contains = list(/obj/item/storage/lockbox/dueling) + crate_name = "dueling pistols (elimination)" + + +/datum/supply_pack/misc/exoticfootwear + name = "Exotic Footwear Crate" + desc = "Popularised by lizards and exotic dancers, the footwear included in this shipment is sure to give your feet the breathing room they deserve. Sweet Kicks Inc. is not responsible for any damage, distress, or @r0u$a1 caused by this shipment." + cost = 3000 + contains = list(/obj/item/clothing/shoes/wraps, + /obj/item/clothing/shoes/wraps, + /obj/item/clothing/shoes/wraps/silver, + /obj/item/clothing/shoes/wraps/silver, + /obj/item/clothing/shoes/wraps/red, + /obj/item/clothing/shoes/wraps/red, + /obj/item/clothing/shoes/wraps/blue, + /obj/item/clothing/shoes/wraps/blue, + /obj/item/clothing/shoes/clown_shoes, + /obj/item/clothing/shoes/kindleKicks) + crate_name = "footie crate" + +/datum/supply_pack/misc/randombedsheets + name = "Bedsheet Crate (R)" + desc = "Snuggle up in some sweet sheets with this assorted bedsheet crate. Each set comes with eight random bedsheets for your slumbering pleasure!" + cost = 2000 + contains = list(/obj/item/bedsheet/random, + /obj/item/bedsheet/random, + /obj/item/bedsheet/random, + /obj/item/bedsheet/random, + /obj/item/bedsheet/random, + /obj/item/bedsheet/random, + /obj/item/bedsheet/random, + /obj/item/bedsheet/random) //I'm lazy, and I copy paste stuff. + crate_name = "random bedsheet crate" + +/datum/supply_pack/misc/coloredsheets + name = "Bedsheet Crate (C)" + desc = "Give your night life a splash of color with this crate filled with bedsheets! Contains a total of nine different-colored sheets." + cost = 1250 + contains = list(/obj/item/bedsheet/blue, + /obj/item/bedsheet/green, + /obj/item/bedsheet/orange, + /obj/item/bedsheet/purple, + /obj/item/bedsheet/red, + /obj/item/bedsheet/yellow, + /obj/item/bedsheet/brown, + /obj/item/bedsheet/black, + /obj/item/bedsheet/rainbow) + crate_name = "colored bedsheet crate" + +/datum/supply_pack/misc/bicycle + name = "Bicycle" + desc = "Nanotrasen reminds all employees to never toy with powers outside their control." + cost = 1000000 + 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 = 5000 + 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/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 five books are sure to be good reads." + cost = 1500 + 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/triple) + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/cbtpack + name = "CBT Equipment" + desc = "(*!&@#CBT is a special term coined by high ranking syndicate operatives for a special form of information extraction. While the training required to use this shipment is highly classified, the distribution of it's contents are not. In addition to this crates unusual contents, we have added a bar of soap.#@*$" + hidden = TRUE + cost = 2400 + contains = list(/mob/living/simple_animal/chicken, + /obj/item/toy/beach_ball/holoball, + /obj/item/melee/baton/cattleprod, + /obj/item/soap/syndie) + crate_name = "cbt crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/casinocrate + name = "Casino Crate" + desc = "Start up your own grand casino with this crate filled with slot machine and arcade boards!" + cost = 3000 + contains = list(/obj/item/circuitboard/computer/arcade/battle, + /obj/item/circuitboard/computer/arcade/battle, + /obj/item/circuitboard/computer/arcade/orion_trail, + /obj/item/circuitboard/computer/arcade/orion_trail, + /obj/item/circuitboard/computer/arcade/minesweeper, + /obj/item/circuitboard/computer/arcade/minesweeper, + /obj/item/circuitboard/computer/slot_machine, + /obj/item/circuitboard/computer/slot_machine, + /obj/item/circuitboard/computer/slot_machine, + /obj/item/circuitboard/computer/slot_machine, + /obj/item/circuitboard/computer/slot_machine, + /obj/item/circuitboard/computer/slot_machine) + crate_name = "casino 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 five pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps as well as a briefcase."//that was too forced + cost = 1500 + 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/pen/fourcolor, + /obj/item/pen/fourcolor, + /obj/item/pen, + /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/storage/briefcase) + 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 = 730 + contains = list(/obj/item/storage/box/fountainpens, + /obj/item/paper_bin) + 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 = 1000 + contains = list(/obj/item/stack/wrapping_paper) + crate_type = /obj/structure/closet/crate/wooden + crate_name = "festive wrapping paper crate" + +/datum/supply_pack/misc/paper_work + name = "Freelance Paper work" + desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up. + cost = 700 // Net of 0 credits + contains = list(/obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/pen/fountain, + /obj/item/pen/fountain, + /obj/item/pen/fountain, + /obj/item/pen/fountain, + /obj/item/pen/fountain) + crate_name = "Paperwork" + +/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 = 800 + contains = list(/obj/item/clothing/under/burial, + /obj/item/reagent_containers/food/snacks/grown/harebell, + /obj/item/reagent_containers/food/snacks/grown/poppy/geranium + ) + crate_name = "coffin" + crate_type = /obj/structure/closet/crate/coffin + +/datum/supply_pack/misc/jukebox + name = "Jukebox" + cost = 15000 + contains = list(/obj/machinery/jukebox) + crate_name = "Jukebox" + +/datum/supply_pack/misc/lewd + name = "Lewd Crate" // OwO + desc = "Psss want to have a good time with your sluts? Well I got what you want! Maid clothing, dildos, collars and more!" + cost = 5000 + contraband = TRUE + contains = list(/obj/item/dildo/custom, + /obj/item/dildo/custom, + /obj/item/vending_refill/kink, + /obj/item/vending_refill/kink, + /obj/item/vending_refill/kink, + /obj/item/clothing/under/maid, + /obj/item/clothing/under/maid, + /obj/item/electropack/shockcollar, + /obj/item/electropack/shockcollar, + /obj/item/restraints/handcuffs/fake/kinky, + /obj/item/restraints/handcuffs/fake/kinky, + /obj/item/clothing/head/kitty/genuine, // Why its illegal + /obj/item/clothing/head/kitty/genuine, + /obj/item/storage/pill_bottle/penis_enlargement, + /obj/item/storage/pill_bottle/breast_enlargement, + /obj/structure/reagent_dispensers/keg/aphro) + crate_name = "lewd kit" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/misc/lewdkeg + name = "Lewd Deluxe Keg" + desc = "That other stuff not getting you ready? Well I have a Chemslut making tons of the good stuff." + cost = 7500 //It can be a weapon + contraband = TRUE + contains = list(/obj/structure/reagent_dispensers/keg/aphro/strong) + crate_name = "deluxe keg" + crate_type = /obj/structure/closet/crate + +/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 = 4000 // it costs so much because the Space Church is ran by Space Jews + 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 + ) + crate_name = "religious supplies crate" + +/datum/supply_pack/misc/randomised/promiscuous + name = "Promiscuous Organs" + desc = "Do YOU want to have more genital? Well we have just the thing for you~. This crate has two autosurgeon, that will let you have a new sex, organ to impress that hot stud and or chick." + cost = 4000 //Only get 2! + contraband = TRUE + var/num_contained = 2 + contains = list(/obj/item/autosurgeon/penis, + /obj/item/autosurgeon/testicles, + /obj/item/autosurgeon/vagina, + /obj/item/autosurgeon/breasts, + /obj/item/autosurgeon/womb) + crate_name = "promiscuous organs" + +/datum/supply_pack/misc/shower + name = "Shower Supplies" + desc = "Everyone needs a bit of R&R. Make sure you get can get yours by ordering this crate filled with towels, rubber duckies, and some soap!" + cost = 1000 + contains = list(/obj/item/reagent_containers/rag/towel, + /obj/item/reagent_containers/rag/towel, + /obj/item/reagent_containers/rag/towel, + /obj/item/reagent_containers/rag/towel, + /obj/item/reagent_containers/rag/towel, + /obj/item/reagent_containers/rag/towel, + /obj/item/bikehorn/rubberducky, + /obj/item/bikehorn/rubberducky, + /obj/item/soap/nanotrasen) + crate_name = "shower crate" + +/datum/supply_pack/misc/spacehermitstarter + name = "Space Hermit Starter Pack" + desc = "So sick of the station you wish to leave and never come back? Or perhaps you need to find a place of solitutde and privacy? Jumping out of an external airlock may just be the solution for you! But not before you buy this crate - contains a mining hardsuit, a proto-kinetic accelerator, GPS, luxury bluespace shelter aswell as a deluxe bluespace shelter.(Jetpack not included)" + cost = 5000 + contraband = TRUE + contains = list(/obj/item/clothing/suit/space/hardsuit/mining, + /obj/item/gun/energy/kinetic_accelerator, + /obj/item/survivalcapsule/deluxe, + /obj/item/survivalcapsule/luxury, + /obj/item/gps) + crate_name = "space hermit 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 = 1000 + 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/diamondring + name = "Diamond Ring" + desc = "Show them your love is like a diamond: unbreakable and forever lasting. Shipped straight from child slave cartels in the space african mines." + cost = 10000 + contains = list(/obj/item/storage/fancy/ringbox/diamond) + crate_name = "diamond ring crate" + +/datum/supply_pack/misc/jewelry + name = "Jewelry Crate" + desc = "Bling out with this crate of jewelry. Includes gold necklace and a set of two rings." + cost = 5000 + contains = list(/obj/item/clothing/neck/necklace/dope, + /obj/item/storage/fancy/ringbox, + /obj/item/storage/fancy/ringbox/silver + ) + crate_name = "jewelry crate" diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm new file mode 100644 index 00000000..cf3bf865 --- /dev/null +++ b/code/modules/cargo/packs/organic.dm @@ -0,0 +1,360 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Organic ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/organic + group = "Food & Hydroponics" + crate_type = /obj/structure/closet/crate/freezer + +/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 = 1300 + 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 = 1800 + 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/candy/randomised + name = "Candy Crate" + desc = "For people that have a insatiable sweet tooth! Has ten candies to be eaten up.." + cost = 2500 + var/num_contained = 10 //number of items picked to be contained in a randomised crate + contains = list(/obj/item/reagent_containers/food/snacks/candy, + /obj/item/reagent_containers/food/snacks/lollipop, + /obj/item/reagent_containers/food/snacks/gumball, + /obj/item/reagent_containers/food/snacks/chocolateegg, + /obj/item/reagent_containers/food/snacks/donut, + /obj/item/reagent_containers/food/snacks/cookie, + /obj/item/reagent_containers/food/snacks/sugarcookie, + /obj/item/reagent_containers/food/snacks/chococornet, + /obj/item/reagent_containers/food/snacks/mint, + /obj/item/reagent_containers/food/snacks/spiderlollipop, + /obj/item/reagent_containers/food/snacks/chococoin, + /obj/item/reagent_containers/food/snacks/fudgedice, + /obj/item/reagent_containers/food/snacks/chocoorange, + /obj/item/reagent_containers/food/snacks/honeybar, + /obj/item/reagent_containers/food/snacks/tinychocolate, + /obj/item/reagent_containers/food/snacks/spacetwinkie, + /obj/item/reagent_containers/food/snacks/syndicake, + /obj/item/reagent_containers/food/snacks/cheesiehonkers, + /obj/item/reagent_containers/food/snacks/sugarcookie/spookyskull, + /obj/item/reagent_containers/food/snacks/sugarcookie/spookycoffin, + /obj/item/reagent_containers/food/snacks/candy_corn, + /obj/item/reagent_containers/food/snacks/candiedapple, + /obj/item/reagent_containers/food/snacks/chocolatebar, + /obj/item/reagent_containers/food/snacks/candyheart, + /obj/item/storage/fancy/heart_box, + /obj/item/storage/fancy/donut_box) + crate_name = "candy crate" + +/datum/supply_pack/organic/cutlery + name = "Kitchen Cutlery Deluxe Set" + desc = "Need to slice and dice away those ''Tomatos'' well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal." + cost = 10000 + contraband = TRUE + contains = list(/obj/item/sharpener, + /obj/item/kitchen/fork, + /obj/item/kitchen/fork, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife/butcher, + /obj/item/kitchen/knife/butcher, + /obj/item/kitchen/rollingpin, //Deluxe for a reason + /obj/item/trash/plate, + /obj/item/trash/plate, + /obj/item/trash/plate, + /obj/item/trash/plate, + /obj/item/reagent_containers/food/drinks/drinkingglass, + /obj/item/reagent_containers/food/drinks/drinkingglass, + /obj/item/reagent_containers/food/drinks/drinkingglass, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) + crate_name = "kitchen cutlery deluxe set" + +/datum/supply_pack/organic/food + name = "Food Crate" + desc = "Get things cooking with this crate full of useful ingredients! Contains a two dozen eggs, three bananas, and two bags of flour and rice, two cartons of milk, soymilk, as well as salt and pepper shakers, a enzyme and sugar bottle, and three slabs of monkeymeat." + cost = 1000 + contains = list(/obj/item/reagent_containers/food/condiment/flour, + /obj/item/reagent_containers/food/condiment/flour, + /obj/item/reagent_containers/food/condiment/rice, + /obj/item/reagent_containers/food/condiment/rice, + /obj/item/reagent_containers/food/condiment/milk, + /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/storage/fancy/egg_box, + /obj/item/reagent_containers/food/condiment/enzyme, + /obj/item/reagent_containers/food/condiment/sugar, + /obj/item/reagent_containers/food/snacks/meat/slab/monkey, + /obj/item/reagent_containers/food/snacks/meat/slab/monkey, + /obj/item/reagent_containers/food/snacks/meat/slab/monkey, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana) + crate_name = "food crate" + +/datum/supply_pack/organic/fiestatortilla + name = "Fiesta Crate" + desc = "Spice up the kitchen with this fiesta themed food order! Contains 8 tortilla based food items, as well as a sombrero, moustache, and cloak!" + cost = 2750 + contains = list(/obj/item/clothing/head/sombrero, + /obj/item/clothing/suit/hooded/cloak/david, + /obj/item/clothing/mask/fakemoustache, + /obj/item/reagent_containers/food/snacks/taco, + /obj/item/reagent_containers/food/snacks/taco, + /obj/item/reagent_containers/food/snacks/taco/plain, + /obj/item/reagent_containers/food/snacks/taco/plain, + /obj/item/reagent_containers/food/snacks/enchiladas, + /obj/item/reagent_containers/food/snacks/enchiladas, + /obj/item/reagent_containers/food/snacks/carneburrito, + /obj/item/reagent_containers/food/snacks/cheesyburrito, + /obj/item/reagent_containers/glass/bottle/capsaicin, + /obj/item/reagent_containers/glass/bottle/capsaicin) + crate_name = "fiesta 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 = 6000 + contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie) + crate_name = "party equipment crate" + contraband = TRUE + access = ACCESS_THEATRE + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/organic/hunting + name = "Hunting gear" + desc = "Even in space, we can find prey to hunt, this crate contains everthing a fine hunter needs to have a sporting time. This crate needs armory access to open. A true huntter only needs a fine bottle of cognac, a nice coat, some good o' cigars, and of cource a hunting shotgun. " + cost = 3500 + contraband = TRUE + contains = list(/obj/item/clothing/head/flatcap, + /obj/item/clothing/suit/hooded/wintercoat/captain, + /obj/item/reagent_containers/food/drinks/bottle/cognac, + /obj/item/storage/fancy/cigarettes/cigars/havana, + /obj/item/clothing/gloves/color/white, + /obj/item/clothing/under/rank/curator, + /obj/item/gun/ballistic/shotgun/lethal) + access = ACCESS_ARMORY + crate_name = "sporting crate" + crate_type = /obj/structure/closet/crate/secure // Would have liked a wooden crate but access >:( + +/datum/supply_pack/organic/fakemeat + name = "Meat Crate" + desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 4 slabs of meat product, and two slabs of *carp*." + cost = 1700 + contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, + /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, + /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, + /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, + /obj/item/reagent_containers/food/snacks/carpmeat/imitation, + /obj/item/reagent_containers/food/snacks/carpmeat/imitation) + crate_name = "meaty crate" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/organic/monkeydripmeat + name = "*Meat* Crate" + desc = "Need some meat? With this do-it-yourself kit you'll be swimming in it! Contains a monkey cube, an IV drip, and some cryoxadone!" + cost = 2150 + contraband = TRUE + contains = list(/obj/item/reagent_containers/food/snacks/monkeycube, + /obj/item/restraints/handcuffs/cable, + /obj/machinery/iv_drip, + /obj/item/reagent_containers/glass/beaker/cryoxadone, + /obj/item/reagent_containers/glass/beaker/cryoxadone) + crate_name = "monkey meat crate" + +/datum/supply_pack/organic/mixedboxes + name = "Mixed Ingredient Boxes" + desc = "Get overwhelmed with inspiration by ordering these boxes of surprise ingredients! Get four boxes filled with an assortment of products!" + cost = 2300 + contains = list(/obj/item/storage/box/ingredients/wildcard, + /obj/item/storage/box/ingredients/wildcard, + /obj/item/storage/box/ingredients/wildcard, + /obj/item/storage/box/ingredients/wildcard) + crate_name = "wildcard food crate" + crate_type = /obj/structure/closet/crate/freezer + +/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 = 1750 + 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 = 1200 + access = ACCESS_HYDROPONICS + contains = list(/obj/item/watertank) + crate_name = "hydroponics backpack crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/organic/mre + name = "MRE supply kit (emergency rations)" + desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank." + cost = 2000 + contains = list(/obj/item/storage/box/mre/menu1/safe, + /obj/item/storage/box/mre/menu1/safe, + /obj/item/storage/box/mre/menu2/safe, + /obj/item/storage/box/mre/menu2/safe, + /obj/item/storage/box/mre/menu3, + /obj/item/storage/box/mre/menu4/safe) + crate_name = "MRE crate (emergency rations)" + +/datum/supply_pack/organic/pizza + name = "Pizza Crate" + desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99% anomaly-free!" + cost = 6000 // 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" + var/static/anomalous_box_provided = FALSE + +/datum/supply_pack/organic/pizza/fill(obj/structure/closet/crate/C) + . = ..() + if(!anomalous_box_provided) + for(var/obj/item/pizzabox/P in C) + if(prob(1)) //1% chance for each box, so 4% total chance per order + var/obj/item/pizzabox/infinite/fourfiveeight = new(C) + fourfiveeight.boxtag = P.boxtag + 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.") + break + +/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 = 730 + contains = list(/obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random) + crate_name = "potted plants crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/organic/seeds + name = "Seeds Crate" + desc = "Big things have small beginnings. Contains thirteen different seeds." + cost = 1250 + contains = list(/obj/item/seeds/chili, + /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/chanter, + /obj/item/seeds/potato, + /obj/item/seeds/sugarcane) + crate_name = "seeds crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/organic/vday + name = "Surplus Valentine Crate" + desc = "Turns out we got warehouses of this love-y dove-y crap. Were sending out small barged buddle of Valentine gear. This crate has two boxes of chocolate, three poppy flowers, five candy hearts, and three cards." + cost = 3000 + contraband = TRUE + contains = list(/obj/item/storage/fancy/heart_box, + /obj/item/storage/fancy/heart_box, + /obj/item/reagent_containers/food/snacks/grown/poppy, + /obj/item/reagent_containers/food/snacks/grown/poppy, + /obj/item/reagent_containers/food/snacks/grown/poppy, + /obj/item/reagent_containers/food/snacks/candyheart, + /obj/item/reagent_containers/food/snacks/candyheart, + /obj/item/reagent_containers/food/snacks/candyheart, + /obj/item/reagent_containers/food/snacks/candyheart, + /obj/item/reagent_containers/food/snacks/candyheart, + /obj/item/valentine, + /obj/item/valentine, + /obj/item/valentine) + crate_name = "valentine crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/organic/strangeseeds + name = "Strange Seeds Crate" + desc = "After our chemical waste mysteriously disappeared we've discovered many strange and interesting species of plants, and they're yours for the taking! Contains 8 packs of strange seeds." + cost = 4500 + contains = list(/obj/item/seeds/random, + /obj/item/seeds/random, + /obj/item/seeds/random, + /obj/item/seeds/random, + /obj/item/seeds/random, + /obj/item/seeds/random, + /obj/item/seeds/random, + /obj/item/seeds/random) + crate_name = "strange seeds crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/organic/exoticseeds + name = "Exotic Seeds Crate" + desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!" + cost = 1500 + contains = list(/obj/item/seeds/nettle, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/plump, + /obj/item/seeds/liberty, + /obj/item/seeds/amanita, + /obj/item/seeds/reishi, + /obj/item/seeds/banana, + /obj/item/seeds/eggplant/eggy, + /obj/item/seeds/random, + /obj/item/seeds/random) + crate_name = "exotic seeds crate" + crate_type = /obj/structure/closet/crate/hydroponics diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm new file mode 100644 index 00000000..fa6ef393 --- /dev/null +++ b/code/modules/cargo/packs/science.dm @@ -0,0 +1,168 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Science ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/science + group = "Science" + crate_type = /obj/structure/closet/crate/science + +/datum/supply_pack/science/aliens + name = "Advanced Alien Alloy Crate Crate" + desc = "Hello brothers from the stars!!! Our fellow brethren have made contact at long last and gave us gifts man! They really did build the prymi- Connection Error- Bro we’ll send you a sheet of advanced alien alloy." + cost = 15000 + contraband = TRUE + DropPodOnly = TRUE + contains = list(/obj/item/stack/sheet/mineral/abductor) + crate_name = "alien bro alloy crate" + +/datum/supply_pack/science/beakers + name = "Chemistry Beakers Crate" + desc = "Glassware for any chemistry lab! Contains four small beakers, three large, two plastic, and one metamaterial. As well as three droppers and two pairs of latex gloves." + cost = 2000 + contains = list(/obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/plastic, + /obj/item/reagent_containers/glass/beaker/plastic, + /obj/item/reagent_containers/glass/beaker/meta, + /obj/item/reagent_containers/glass/beaker/noreact, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/dropper, + /obj/item/clothing/gloves/color/latex, + /obj/item/clothing/gloves/color/latex) + crate_name = "chemistry beaker crate" + +/datum/supply_pack/science/robotics/mecha_odysseus + name = "Circuit Crate (Odysseus)" + desc = "Ever wanted to build your own giant medical robot? Well, now you can! Contains the Odysseus main control board and Odysseus peripherals board. Requires Robotics access to open." + cost = 2500 + access = ACCESS_ROBOTICS + contains = list(/obj/item/circuitboard/mecha/odysseus/peripherals, + /obj/item/circuitboard/mecha/odysseus/main) + crate_name = "\improper Odysseus circuit crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/robotics/mecha_ripley + name = "Circuit Crate (Ripley APLU)" + desc = "Rip apart rocks and xenomorphs alike with the Ripley APLU. Contains the Main Ripley control board, as well as the Ripley Peripherals board. Requires Robotics access to open." + cost = 3000 + access = ACCESS_ROBOTICS + contains = list(/obj/item/book/manual/ripley_build_and_repair, + /obj/item/circuitboard/mecha/ripley/main, + /obj/item/circuitboard/mecha/ripley/peripherals) + crate_name = "\improper APLU Ripley circuit crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/circuitry + name = "Circuitry Starter Pack Crate" + desc = "Journey into the mysterious world of Circuitry with this starter pack. Contains a circuit printer, analyzer, debugger and wirer. Power cells not included." + cost = 1000 + contains = list(/obj/item/integrated_electronics/analyzer, + /obj/item/integrated_circuit_printer, + /obj/item/integrated_electronics/debugger, + /obj/item/integrated_electronics/wirer) + crate_name = "circuitry starter pack crate" + +/datum/supply_pack/science/nitrilegloves + name = "Nitrile Gloves Crate" + desc = "Handling toxic chemicals? Well worry not, keep your flesh intact with some nitrile made gloves! Contains three pairs of nitrile gloves." + cost = 1500 + contains = list(/obj/item/clothing/gloves/color/latex/nitrile, + /obj/item/clothing/gloves/color/latex/nitrile, + /obj/item/clothing/gloves/color/latex/nitrile) + crate_name = "nitrile gloves crate" + +/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 Toxins access to open." + cost = 1800 + access = ACCESS_TOX_STORAGE + 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/robotics + name = "Robotics Assembly Crate" + desc = "The tools you need to replace those finicky humans with a loyal robot army! Contains three proximity sensors, two high-powered cells, six flashes, and an electrical toolbox. Requires Robotics access to open." + cost = 1500 + access = ACCESS_ROBOTICS + contains = list(/obj/item/assembly/prox_sensor, + /obj/item/assembly/prox_sensor, + /obj/item/assembly/prox_sensor, + /obj/item/storage/toolbox/electrical, + /obj/item/storage/box/flashes, + /obj/item/stock_parts/cell/high, + /obj/item/stock_parts/cell/high) + crate_name = "robotics assembly crate" + crate_type = /obj/structure/closet/crate/secure/science + +/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 = 2000 + access = ACCESS_TELEPORTER + contains = list(/obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen) + crate_name = "shield generators crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/slime + name = "Slime Core Crate" + desc = "Ran out of slimes? No problem, contains one gray slime core. Requires Xenobio access to open." + cost = 1000 + access = ACCESS_XENOBIOLOGY + contains = list(/obj/item/slime_extract/grey) + crate_name = "slime core crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/tablets + name = "Tablet Crate" + desc = "What's a computer? Contains five cargo tablets." + cost = 3000 + contains = list(/obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo) + crate_name = "tablet crate" + +/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 = 6000 + 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/tech_slugs + name = "Tech Slug Ammo Shells" + desc = "A new type of shell that is able to be made into a few different dangerous types. Contains two boxes of tech slugs, 14 shells in all." + cost = 1700 + contains = list(/obj/item/storage/box/techsslug, + /obj/item/storage/box/techsslug) + crate_name = "tech slug crate" diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm new file mode 100644 index 00000000..3c68fe7f --- /dev/null +++ b/code/modules/cargo/packs/security.dm @@ -0,0 +1,192 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Security //////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/security + group = "Security" + access = ACCESS_SECURITY + crate_type = /obj/structure/closet/crate/secure/gear + +/datum/supply_pack/security/armor + name = "Armor Crate" + desc = "Three vests of well-rounded, decently-protective armor. Requires Security access to open." + cost = 1200 + 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 = 1300 + 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 = 1800 + 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 = 1200 + 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 = 1750 + 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/russianclothing + name = "Russian Surplus Clothing" + desc = "An old russian crate full of surplus armor that they used to use! Has two sets of bulletproff armor, a few union suits and some warm hats!" + contraband = TRUE + cost = 5750 // Its basicly sec suits, good boots/gloves + contains = list(/obj/item/clothing/suit/security/officer/russian, + /obj/item/clothing/suit/security/officer/russian, + /obj/item/clothing/shoes/combat, + /obj/item/clothing/shoes/combat, + /obj/item/clothing/head/ushanka, + /obj/item/clothing/head/ushanka, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/gloves/combat, + /obj/item/clothing/gloves/combat, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas) + crate_name = "surplus russian clothing" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/security/russianmosin + name = "Russian Minutemen Gear" + desc = "An old russian Minutemen crate, comes with a full russian outfit, a mosin and a stripper clip." + contraband = TRUE + access = FALSE + cost = 5500 // + contains = list(/obj/item/clothing/suit/security/officer/russian, + /obj/item/clothing/shoes/combat, + /obj/item/clothing/head/ushanka, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/gloves/combat, + /obj/item/clothing/mask/gas, + /obj/item/gun/ballistic/shotgun/boltaction, + /obj/item/ammo_box/a762) + crate_name = "surplus russian gear" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/security/sechardsuit + name = "Sec Hardsuit" + desc = "One Sec Hardsuit with a small air tank and mask." + cost = 3000 // half of SWAT gear for have the armor and half the gear + contains = list(/obj/item/clothing/suit/space/hardsuit/security, + /obj/item/tank/internals/air, + /obj/item/clothing/mask/gas) + crate_name = "sec hardsuit crate" + +/datum/supply_pack/security/securitybarriers + name = "Security Barrier Grenades" + desc = "Stem the tide with four Security Barrier grenades. Requires Security access to open." + contains = list(/obj/item/grenade/barrier, + /obj/item/grenade/barrier, + /obj/item/grenade/barrier, + /obj/item/grenade/barrier) + cost = 2000 + crate_name = "security barriers crate" + +/datum/supply_pack/security/securityclothes + name = "Security Clothing Crate" + desc = "Contains appropriate outfits for the station's private security force. Contains outfits for the Warden, Head of Security, and two Security Officers. Each outfit comes with a rank-appropriate jumpsuit, suit, and beret. Requires Security access to open." + cost = 3250 + contains = list(/obj/item/clothing/under/rank/security/navyblue, + /obj/item/clothing/under/rank/security/navyblue, + /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/warden/navyblue, + /obj/item/clothing/suit/security/warden, + /obj/item/clothing/head/beret/sec/navywarden, + /obj/item/clothing/under/rank/head_of_security/navyblue, + /obj/item/clothing/suit/security/hos, + /obj/item/clothing/head/beret/sec/navyhos) + crate_name = "security clothing 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 = 1200 + 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 = 2000 + contains = list(/obj/item/storage/box/firingpins, + /obj/item/storage/box/firingpins) + crate_name = "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 = 6000 //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 = 1200 + contains = list(/obj/item/melee/baton/loaded, + /obj/item/melee/baton/loaded, + /obj/item/melee/baton/loaded) + crate_name = "stun baton crate" + +/datum/supply_pack/security/taser + name = "Taser Crate" + desc = "From the depths of stunbased combat, this order rises above, supreme. Contains three hybrid tasers, capable of firing both electrodes and disabling shots. Requires Security access to open." + cost = 3500 + contains = list(/obj/item/gun/energy/e_gun/advtaser, + /obj/item/gun/energy/e_gun/advtaser, + /obj/item/gun/energy/e_gun/advtaser) + crate_name = "taser crate" + +/datum/supply_pack/security/wall_flash + name = "Wall-Mounted Flash Crate" + desc = "Contains four wall-mounted flashes. Requires Security access to open." + cost = 1000 + 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" diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm new file mode 100644 index 00000000..59cc97f3 --- /dev/null +++ b/code/modules/cargo/packs/service.dm @@ -0,0 +1,339 @@ + +//Reminders- +// 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 +// cost = 700- Minimum cost, or infinite points are possible. +////////////////////////////////////////////////////////////////////////////// +/////////////////////////////// Service ////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/service + group = "Service" + +/datum/supply_pack/service/advlighting + name = "Advanced Lighting crate" + desc = "Thanks to advanced lighting tech we here at the Lamp Factory have be able to produce more lamps and lamp items! This crate has three lamps, a box of lights and a state of the art rapid-light-device!" + cost = 2750 + contains = list(/obj/item/construction/rld, + /obj/item/flashlight/lamp, + /obj/item/flashlight/lamp, + /obj/item/flashlight/lamp/green, + /obj/item/storage/box/lights/mixed) + crate_name = "advanced lighting crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/service/janitor/advanced + name = "Advanced Sanitation Crate" + desc = "Contains all the essentials for an advanced spacefaring cleanup crew. This kit includes a trashbag of holding, an advanced mop, a bottle of space cleaner, a floor buffer, and a holosign projector." + cost = 5000 + access = ACCESS_JANITOR + contains = list(/obj/item/storage/bag/trash/bluespace, + /obj/item/reagent_containers/spray/cleaner, + /obj/item/mop/advanced, + /obj/item/lightreplacer, + /obj/item/janiupgrade, + /obj/item/holosign_creator) + crate_name = "advanced santation crate" + crate_type = /obj/structure/closet/crate/secure + +/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 = 1000 + contains = list(/obj/item/stamp, + /obj/item/stamp/denied, + /obj/item/export_scanner, + /obj/item/destTagger, + /obj/item/hand_labeler, + /obj/item/stack/packageWrap) + crate_name = "cargo supplies 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 10 different flooring patterns." + cost = 4000 + 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, + /obj/item/stack/tile/carpet/blackred/fifty, + /obj/item/stack/tile/carpet/blackred/fifty, + /obj/item/stack/tile/carpet/monochrome/fifty, + /obj/item/stack/tile/carpet/monochrome/fifty) + crate_name = "exotic carpet crate" + +/datum/supply_pack/service/food_cart + name = "Food Cart Crate" + desc = "Want to sell food on the go? Cook lost their cart? Well we just so happen to have a few carts to spare!" + cost = 1000 + contains = list(/obj/machinery/food_cart) + crate_name = "food cart crate" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/service/noslipfloor + name = "High-traction Floor Tiles" + desc = "Make slipping a thing of the past with sixty industrial-grade anti-slip floortiles!" + cost = 2000 + contains = list(/obj/item/stack/tile/noslip/thirty, + /obj/item/stack/tile/noslip/thirty) + crate_name = "high-traction floor tiles crate" + +/datum/supply_pack/service/icecream_cart + name = "Ice Cream Cart Crate" + desc = "Plasma fire a to hot for you, want a nice treat after a hard days work? Well now we have the cart for you! This Ice Cream Vat has everthing you need to make you and your friends so ice cream treats! This cart comes stocked with some ingredients for each type of scoopable icecream." + cost = 2750 //Comes prestocked with basic ingredients + contains = list(/obj/machinery/icecream_vat) + crate_name = "ice cream vat crate" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/service/buildabar + name = "Build a Bar Crate" + desc = "Looking to set up your own little safe haven? Maintenance bar too much of a bummer to work on? Maybe you just want to set up shop right in front of the bartender. Whatever your reasons, get a jump-start on this with this handy kit. Contains circuitboards for bar equipment, some parts, and some basic bartending supplies. (Batteries not Included)" + cost = 3750 + contains = list(/obj/item/storage/box/drinkingglasses, + /obj/item/storage/box/drinkingglasses, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/manipulator, + /obj/item/stock_parts/manipulator, + /obj/item/stock_parts/manipulator, + /obj/item/stock_parts/capacitor, + /obj/item/stock_parts/capacitor, + /obj/item/stack/sheet/metal/ten, + /obj/item/stack/sheet/metal/five, + /obj/item/stack/sheet/glass/five, + /obj/item/stack/cable_coil/random, + /obj/item/reagent_containers/rag, + /obj/item/book/manual/wiki/barman_recipes, + /obj/item/book/granter/action/drink_fling, + /obj/item/reagent_containers/food/drinks/shaker, + /obj/item/clothing/under/waiter, + /obj/item/clothing/under/rank/bartender, + /obj/item/clothing/under/rank/bartender/skirt, + /obj/item/clothing/accessory/waistcoat, + /obj/item/circuitboard/machine/chem_dispenser/drinks/beer, + /obj/item/circuitboard/machine/chem_dispenser/drinks, + /obj/item/circuitboard/machine/dish_drive) + crate_name = "build a bar crate" + +/datum/supply_pack/service/maintgarden + name = "Maintenance Garden Crate" + desc = "Set up your own tiny paradise with do-it-yourself botany kit. Contains sandstone for dirt plots, pest spray, ammonia, a portable seed generator, basic botanical tools, and some seeds to start off with." + cost = 2350 + contains = list(/obj/item/storage/bag/plants/portaseeder, + /obj/item/reagent_containers/spray/pestspray, + /obj/item/stack/sheet/mineral/sandstone/twelve, + /obj/item/reagent_containers/glass/bucket, + /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/flashlight, + /obj/item/seeds/carrot, + /obj/item/seeds/carrot, + /obj/item/seeds/tower, + /obj/item/seeds/tower, + /obj/item/seeds/watermelon, + /obj/item/seeds/watermelon, + /obj/item/seeds/grass, + /obj/item/seeds/grass) + crate_name = "maint garden crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/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, spray cleaner, rag, NT soap and a trash bag." + cost = 1300 + 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/caution, + /obj/item/caution, + /obj/item/caution, + /obj/item/storage/bag/trash, + /obj/item/reagent_containers/spray/cleaner, + /obj/item/reagent_containers/rag, + /obj/item/grenade/chem_grenade/cleaner, + /obj/item/grenade/chem_grenade/cleaner, + /obj/item/grenade/chem_grenade/cleaner, + /obj/item/soap/nanotrasen) + 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 = 2000 + 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 = 1000 + 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/janitor/janpremium + name = "Janitor Premium Supplies" + desc = "Do to the union for better supplies, we have desided to make a deal for you, In this crate you can get a brand new chem, Drying Angent this stuff is the work of slimes or magic! This crate also contains a rag to test out the Drying Angent magic, three wet floor signs, and some spare bottles of ammonia." + cost = 1750 + access = ACCESS_JANITOR + contains = list(/obj/item/caution, + /obj/item/caution, + /obj/item/caution, + /obj/item/reagent_containers/rag, + /obj/item/reagent_containers/glass/bottle/ammonia, + /obj/item/reagent_containers/glass/bottle/ammonia, + /obj/item/reagent_containers/glass/bottle/ammonia, + /obj/item/reagent_containers/spray/drying_agent) + crate_name = "janitor backpack crate" + +/datum/supply_pack/service/janitor/janpimp + name = "Custodial Cruiser" + desc = "Clown steal your ride? Assistant lock it in the dorms? Order a new one and get back to cleaning in style!" + cost = 3000 + access = ACCESS_JANITOR + contains = list(/obj/vehicle/ridden/janicart, + /obj/item/key/janitor) + crate_name = "janitor ride crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/service/mule + name = "MULEbot Crate" + desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!" + cost = 2000 + 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, four beers, two ales, and a bottle of patron, goldschlager, and shaker!" + cost = 2000 + 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/ale, + /obj/item/reagent_containers/food/drinks/ale, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /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 = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains the classics." + cost = 1000 + 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/carpet2 + name = "Premium Carpet Crate #2" + desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains red, and monochrome" + cost = 1000 + contains = list(/obj/item/stack/tile/carpet/blackred/fifty, + /obj/item/stack/tile/carpet/blackred/fifty, + /obj/item/stack/tile/carpet/monochrome/fifty, + /obj/item/stack/tile/carpet/monochrome/fifty) + crate_name = "premium carpet crate #2" + +/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 as well as a light replacer." + cost = 1200 + contains = list(/obj/item/storage/box/lights/mixed, + /obj/item/storage/box/lights/mixed, + /obj/item/storage/box/lights/mixed, + /obj/item/lightreplacer) + 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, and explorer suit. Requires QM access to open." + cost = 2500 + access = ACCESS_QM + contains = list(/obj/item/pickaxe/mini, + /obj/item/clothing/glasses/meson, + /obj/item/t_scanner/adv_mining_scanner/lesser, + /obj/item/radio/headset/headset_cargo/mining, + /obj/item/storage/bag/ore, + /obj/item/clothing/suit/hooded/explorer/standard, + /obj/item/clothing/mask/gas/explorer) + crate_name = "shaft miner starter kit" + crate_type = /obj/structure/closet/crate/secure + +////////////////////////////////////////////////////////////////////////////// +/////////////////////////// Vending Restocks ///////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/service/vending/bartending + name = "Bartending Supply Crate" + desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!" + cost = 2000 + contains = list(/obj/item/vending_refill/boozeomat, + /obj/item/vending_refill/coffee, + /obj/item/book/granter/action/drink_fling) + crate_name = "bartending supply crate" + +/datum/supply_pack/service/vending/cigarette + name = "Cigarette Supply Crate" + desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill." + cost = 1500 + contains = list(/obj/item/vending_refill/cigarette) + crate_name = "cigarette supply crate" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/service/vending/games + name = "Games Supply Crate" + desc = "Get your game on with this game vending machine refill." + cost = 1000 + contains = list(/obj/item/vending_refill/games) + crate_name = "games supply crate" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/service/vending/snack + name = "Snack Supply Crate" + desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!" + cost = 1500 + contains = list(/obj/item/vending_refill/snack) + crate_name = "snacks supply crate" + +/datum/supply_pack/service/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 = 1500 + contains = list(/obj/item/vending_refill/cola) + crate_name = "soft drinks supply crate" diff --git a/tgstation.dme b/tgstation.dme index 034eb157..2b66c708 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1506,11 +1506,25 @@ #include "code\modules\cargo\exports\large_objects.dm" #include "code\modules\cargo\exports\manifest.dm" #include "code\modules\cargo\exports\materials.dm" +#include "code\modules\cargo\exports\organs_robotics.dm" #include "code\modules\cargo\exports\parts.dm" #include "code\modules\cargo\exports\seeds.dm" #include "code\modules\cargo\exports\sheets.dm" #include "code\modules\cargo\exports\tools.dm" #include "code\modules\cargo\exports\weapons.dm" +#include "code\modules\cargo\packs\armory.dm" +#include "code\modules\cargo\packs\costumes_toys.dm" +#include "code\modules\cargo\packs\emergency.dm" +#include "code\modules\cargo\packs\engine.dm" +#include "code\modules\cargo\packs\engineering.dm" +#include "code\modules\cargo\packs\livestock.dm" +#include "code\modules\cargo\packs\materials.dm" +#include "code\modules\cargo\packs\medical.dm" +#include "code\modules\cargo\packs\misc.dm" +#include "code\modules\cargo\packs\organic.dm" +#include "code\modules\cargo\packs\science.dm" +#include "code\modules\cargo\packs\security.dm" +#include "code\modules\cargo\packs\service.dm" #include "code\modules\chatter\chatter.dm" #include "code\modules\client\asset_cache.dm" #include "code\modules\client\client_colour.dm" From 071f1cc6afd444f91d8d4b09983d2a96615a4b06 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 22 Oct 2019 23:11:56 -0700 Subject: [PATCH 2/8] Merge pull request #9198 from Trilbyspaceclone/A_Tailer's_art Code stuffs + more framework for cargo rework cuz atomic prs are good --- code/game/objects/items/granters.dm | 10 +- code/game/objects/items/religion.dm | 54 - code/modules/crafting/recipes.dm | 966 ------------------ .../crafting/recipes/recipes_clothing.dm | 187 ++++ code/modules/crafting/recipes/recipes_misc.dm | 337 ++++++ .../crafting/recipes/recipes_primal.dm | 113 ++ .../modules/crafting/recipes/recipes_robot.dm | 84 ++ .../recipes/recipes_weapon_and_ammo.dm | 347 +++++++ code/modules/vending/magivend.dm | 4 +- tgstation.dme | 5 + 10 files changed, 1084 insertions(+), 1023 deletions(-) create mode 100644 code/modules/crafting/recipes/recipes_clothing.dm create mode 100644 code/modules/crafting/recipes/recipes_misc.dm create mode 100644 code/modules/crafting/recipes/recipes_primal.dm create mode 100644 code/modules/crafting/recipes/recipes_robot.dm create mode 100644 code/modules/crafting/recipes/recipes_weapon_and_ammo.dm diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 71687f0d..c29c6b5b 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -432,6 +432,14 @@ user.mind.teach_crafting_recipe(crafting_recipe_type) to_chat(user,"You learned how to make [initial(R.name)].") +/obj/item/book/granter/crafting_recipe/threads //Durathread crafting book + name = "Credible Threads" + desc = "A simple book about sewing and usefull clothing crafting with cloth and durathreads." + crafting_recipe_types = list(/datum/crafting_recipe/durathread_duffelbag, /datum/crafting_recipe/durathread_toolbelt, /datum/crafting_recipe/durathread_helmet, /datum/crafting_recipe/durathread_vest) + icon_state = "tailers_art1" + oneuse = FALSE + remarks = list("Durathread is cloth thats also fire-resistant?", "Strong threads that can be used with leather for some light weight storage!", "The cloth can withstand a beating it said but not that much...") + /obj/item/book/granter/crafting_recipe/cooking_sweets_101 //We start at 101 for 103 and 105 name = "Cooking Desserts 101" desc = "A cook book that teaches you some more of the newest desserts. AI approved, and a best seller on Honkplanet." @@ -456,4 +464,4 @@ crafting_recipe_types = list() icon_state = "cooking_learing_ice" oneuse = FALSE - remarks = list() \ No newline at end of file + remarks = list() diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index c9dee6d6..f1f5f4d6 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -82,14 +82,6 @@ /obj/item/banner/security/mundane inspiration_available = FALSE -/datum/crafting_recipe/security_banner - name = "Securistan Banner" - result = /obj/item/banner/security/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/security = 1) - category = CAT_MISC - /obj/item/banner/medical name = "meditopia banner" desc = "The banner of Meditopia, generous benefactors that cure wounds and shelter the weak." @@ -103,14 +95,6 @@ /obj/item/banner/medical/check_inspiration(mob/living/carbon/human/H) return H.stat //Meditopia is moved to help those in need -/datum/crafting_recipe/medical_banner - name = "Meditopia Banner" - result = /obj/item/banner/medical/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/medical = 1) - category = CAT_MISC - /obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H) H.adjustToxLoss(-15) H.setOxyLoss(0) @@ -129,14 +113,6 @@ /obj/item/banner/science/check_inspiration(mob/living/carbon/human/H) return H.on_fire //Sciencia is pleased by dedication to the art of Toxins -/datum/crafting_recipe/science_banner - name = "Sciencia Banner" - result = /obj/item/banner/science/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/scientist = 1) - category = CAT_MISC - /obj/item/banner/cargo name = "cargonia banner" desc = "The banner of the eternal Cargonia, with the mystical power of conjuring any object into existence." @@ -147,14 +123,6 @@ /obj/item/banner/cargo/mundane inspiration_available = FALSE -/datum/crafting_recipe/cargo_banner - name = "Cargonia Banner" - result = /obj/item/banner/cargo/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/cargotech = 1) - category = CAT_MISC - /obj/item/banner/engineering name = "engitopia banner" desc = "The banner of Engitopia, wielders of limitless power." @@ -168,14 +136,6 @@ /obj/item/banner/engineering/special_inspiration(mob/living/carbon/human/H) H.radiation = 0 -/datum/crafting_recipe/engineering_banner - name = "Engitopia Banner" - result = /obj/item/banner/engineering/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/rank/engineer = 1) - category = CAT_MISC - /obj/item/banner/command name = "command banner" desc = "The banner of Command, a staunch and ancient line of bueraucratic kings and queens." @@ -189,14 +149,6 @@ /obj/item/banner/command/check_inspiration(mob/living/carbon/human/H) return HAS_TRAIT(H, TRAIT_MINDSHIELD) //Command is stalwart but rewards their allies. -/datum/crafting_recipe/command_banner - name = "Command Banner" - result = /obj/item/banner/command/mundane - time = 40 - reqs = list(/obj/item/stack/rods = 2, - /obj/item/clothing/under/captainparade = 1) - category = CAT_MISC - /obj/item/banner/red name = "red banner" icon_state = "banner-red" @@ -286,7 +238,6 @@ var/staffcooldown = 0 var/staffwait = 30 - /obj/item/godstaff/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() if(staffcooldown + staffwait > world.time) @@ -332,19 +283,16 @@ heat_protection = FEET max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - /obj/item/clothing/shoes/plate/red icon_state = "crusader-red" /obj/item/clothing/shoes/plate/blue icon_state = "crusader-blue" - /obj/item/storage/box/itemset/crusader name = "Crusader's Armour Set" //i can't into ck2 references desc = "This armour is said to be based on the armor of kings on another world thousands of years ago, who tended to assassinate, conspire, and plot against everyone who tried to do the same to them. Some things never change." - /obj/item/storage/box/itemset/crusader/blue/New() ..() contents = list() @@ -354,7 +302,6 @@ new /obj/item/clothing/gloves/plate/blue(src) new /obj/item/clothing/shoes/plate/blue(src) - /obj/item/storage/box/itemset/crusader/red/New() ..() contents = list() @@ -364,7 +311,6 @@ new /obj/item/clothing/gloves/plate/red(src) new /obj/item/clothing/shoes/plate/red(src) - /obj/item/claymore/weak desc = "This one is rusted." force = 30 diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 24da213e..e225cf97 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -1,4 +1,3 @@ - /datum/crafting_recipe var/name = "" //in-game display name var/reqs[] = list() //type paths of items consumed associated with how many are needed @@ -10,968 +9,3 @@ var/category = CAT_NONE //where it shows up in the crafting UI var/subcategory = CAT_NONE var/always_availible = TRUE //Set to FALSE if it needs to be learned first. - -/datum/crafting_recipe/pin_removal - name = "Pin Removal" - result = /obj/item/gun - reqs = list(/obj/item/gun = 1) - parts = list(/obj/item/gun = 1) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/IED - name = "IED" - result = /obj/item/grenade/iedcasing - reqs = list(/datum/reagent/fuel = 50, - /obj/item/stack/cable_coil = 1, - /obj/item/assembly/igniter = 1, - /obj/item/reagent_containers/food/drinks/soda_cans = 1) - parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1) - time = 15 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/lance - name = "Explosive Lance (Grenade)" - result = /obj/item/twohanded/spear - reqs = list(/obj/item/twohanded/spear = 1, - /obj/item/grenade = 1) - parts = list(/obj/item/twohanded/spear = 1, - /obj/item/grenade = 1) - time = 15 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/strobeshield - name = "Strobe Shield" - result = /obj/item/assembly/flash/shield - reqs = list(/obj/item/wallframe/flasher = 1, - /obj/item/assembly/flash/handheld = 1, - /obj/item/shield/riot = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/makeshiftshield - name = "Makeshift Metal Shield" - result = /obj/item/shield/makeshift - reqs = list(/obj/item/stack/cable_coil = 30, - /obj/item/stack/sheet/metal = 10, - /obj/item/stack/sheet/cloth = 2, - /obj/item/stack/sheet/leather = 3) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/molotov - name = "Molotov" - result = /obj/item/reagent_containers/food/drinks/bottle/molotov - reqs = list(/obj/item/reagent_containers/rag = 1, - /obj/item/reagent_containers/food/drinks/bottle = 1) - parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/stunprod - name = "Stunprod" - result = /obj/item/melee/baton/cattleprod - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/rods = 1, - /obj/item/assembly/igniter = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/teleprod - name = "Teleprod" - result = /obj/item/melee/baton/cattleprod/teleprod - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/rods = 1, - /obj/item/assembly/igniter = 1, - /obj/item/stack/ore/bluespace_crystal = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/bola - name = "Bola" - result = /obj/item/restraints/legcuffs/bola - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/stack/sheet/metal = 6) - time = 20//15 faster than crafting them by hand! - category= CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/tailclub - name = "Tail Club" - result = /obj/item/tailclub - reqs = list(/obj/item/organ/tail/lizard = 1, - /obj/item/stack/sheet/metal = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/tailwhip - name = "Liz O' Nine Tails" - result = /obj/item/melee/chainofcommand/tailwhip - reqs = list(/obj/item/organ/tail/lizard = 1, - /obj/item/stack/cable_coil = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/catwhip - name = "Cat O' Nine Tails" - result = /obj/item/melee/chainofcommand/tailwhip/kitty - reqs = list(/obj/item/organ/tail/cat = 1, - /obj/item/stack/cable_coil = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/ed209 - name = "ED209" - result = /mob/living/simple_animal/bot/ed209 - reqs = list(/obj/item/robot_suit = 1, - /obj/item/clothing/head/helmet = 1, - /obj/item/clothing/suit/armor/vest = 1, - /obj/item/bodypart/l_leg/robot = 1, - /obj/item/bodypart/r_leg/robot = 1, - /obj/item/stack/sheet/metal = 1, - /obj/item/stack/cable_coil = 1, - /obj/item/gun/energy/e_gun/advtaser = 1, - /obj/item/stock_parts/cell = 1, - /obj/item/assembly/prox_sensor = 1) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) - time = 60 - category = CAT_ROBOT - -/datum/crafting_recipe/secbot - name = "Secbot" - result = /mob/living/simple_animal/bot/secbot - reqs = list(/obj/item/assembly/signaler = 1, - /obj/item/clothing/head/helmet/sec = 1, - /obj/item/melee/baton = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - tools = list(TOOL_WELDER) - time = 60 - category = CAT_ROBOT - -/datum/crafting_recipe/cleanbot - name = "Cleanbot" - result = /mob/living/simple_animal/bot/cleanbot - reqs = list(/obj/item/reagent_containers/glass/bucket = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/floorbot - name = "Floorbot" - result = /mob/living/simple_animal/bot/floorbot - reqs = list(/obj/item/storage/toolbox/mechanical = 1, - /obj/item/stack/tile/plasteel = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/medbot - name = "Medbot" - result = /mob/living/simple_animal/bot/medbot - reqs = list(/obj/item/healthanalyzer = 1, - /obj/item/storage/firstaid = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bodypart/r_arm/robot = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/honkbot - name = "Honkbot" - result = /mob/living/simple_animal/bot/honkbot - reqs = list(/obj/item/storage/box/clown = 1, - /obj/item/bodypart/r_arm/robot = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/bikehorn/ = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/Firebot - name = "Firebot" - result = /mob/living/simple_animal/bot/firebot - reqs = list(/obj/item/extinguisher = 1, - /obj/item/bodypart/r_arm/robot = 1, - /obj/item/assembly/prox_sensor = 1, - /obj/item/clothing/head/hardhat/red = 1) - time = 40 - category = CAT_ROBOT - -/datum/crafting_recipe/potatos - name = "Potat-OS" - reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 ) - result = /obj/item/aicard/potato - category = CAT_ROBOT - -/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but - name = "Pneumatic Cannon" - result = /obj/item/pneumatic_cannon/ghetto - tools = list(TOOL_WELDER, TOOL_WRENCH) - reqs = list(/obj/item/stack/sheet/metal = 4, - /obj/item/stack/packageWrap = 8, - /obj/item/pipe = 2) - time = 300 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/flamethrower - name = "Flamethrower" - result = /obj/item/flamethrower - reqs = list(/obj/item/weldingtool = 1, - /obj/item/assembly/igniter = 1, - /obj/item/stack/rods = 1) - parts = list(/obj/item/assembly/igniter = 1, - /obj/item/weldingtool = 1) - tools = list(TOOL_SCREWDRIVER) - time = 10 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/meteorslug - name = "Meteorslug Shell" - result = /obj/item/ammo_casing/shotgun/meteorslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/rcd_ammo = 1, - /obj/item/stock_parts/manipulator = 2) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/pulseslug - name = "Pulse Slug Shell" - result = /obj/item/ammo_casing/shotgun/pulseslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/capacitor/adv = 2, - /obj/item/stock_parts/micro_laser/ultra = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/dragonsbreath - name = "Dragonsbreath Shell" - result = /obj/item/ammo_casing/shotgun/dragonsbreath - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /datum/reagent/phosphorus = 5) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/frag12 - name = "FRAG-12 Shell" - result = /obj/item/ammo_casing/shotgun/frag12 - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /datum/reagent/glycerol = 5, - /datum/reagent/toxin/acid = 5, - /datum/reagent/toxin/acid/fluacid = 5) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/ionslug - name = "Ion Scatter Shell" - result = /obj/item/ammo_casing/shotgun/ion - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/micro_laser/ultra = 1, - /obj/item/stock_parts/subspace/crystal = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/improvisedslug - name = "Improvised Shotgun Shell" - result = /obj/item/ammo_casing/shotgun/improvised - reqs = list(/obj/item/grenade/chem_grenade = 1, - /obj/item/stack/sheet/metal = 1, - /obj/item/stack/cable_coil = 1, - /datum/reagent/fuel = 10) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/laserslug - name = "Scatter Laser Shell" - result = /obj/item/ammo_casing/shotgun/laserslug - reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, - /obj/item/stock_parts/capacitor/adv = 1, - /obj/item/stock_parts/micro_laser/high = 1) - tools = list(TOOL_SCREWDRIVER) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/ishotgun - name = "Improvised Shotgun" - result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised - reqs = list(/obj/item/weaponcrafting/receiver = 1, - /obj/item/pipe = 1, - /obj/item/weaponcrafting/stock = 1, - /obj/item/stack/packageWrap = 5) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/irifle - name = "Improvised Rifle(7.62mm)" - result = /obj/item/gun/ballistic/shotgun/boltaction/improvised - reqs = list(/obj/item/weaponcrafting/receiver = 1, - /obj/item/pipe = 2, - /obj/item/weaponcrafting/stock = 1, - /obj/item/stack/packageWrap = 5) - tools = list(TOOL_SCREWDRIVER) - time = 100 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/chainsaw - name = "Chainsaw" - result = /obj/item/twohanded/required/chainsaw - reqs = list(/obj/item/circular_saw = 1, - /obj/item/stack/cable_coil = 3, - /obj/item/stack/sheet/plasteel = 5) - tools = list(TOOL_WELDER) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/spear - name = "Spear" - result = /obj/item/twohanded/spear - reqs = list(/obj/item/restraints/handcuffs/cable = 1, - /obj/item/shard = 1, - /obj/item/stack/rods = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/spooky_camera - name = "Camera Obscura" - result = /obj/item/camera/spooky - time = 15 - reqs = list(/obj/item/camera = 1, - /datum/reagent/water/holywater = 10) - parts = list(/obj/item/camera = 1) - category = CAT_MISC - -/datum/crafting_recipe/skateboard - name = "Skateboard" - result = /obj/vehicle/ridden/scooter/skateboard - time = 60 - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/rods = 10) - category = CAT_MISC - -/datum/crafting_recipe/scooter - name = "Scooter" - result = /obj/vehicle/ridden/scooter - time = 65 - reqs = list(/obj/item/stack/sheet/metal = 5, - /obj/item/stack/rods = 12) - category = CAT_MISC - -/datum/crafting_recipe/mousetrap - name = "Mouse Trap" - result = /obj/item/assembly/mousetrap - time = 10 - reqs = list(/obj/item/stack/sheet/cardboard = 1, - /obj/item/stack/rods = 1) - category = CAT_MISC - -/datum/crafting_recipe/papersack - name = "Paper Sack" - result = /obj/item/storage/box/papersack - time = 10 - reqs = list(/obj/item/paper = 5) - category = CAT_MISC - -/datum/crafting_recipe/flashlight_eyes - name = "Flashlight Eyes" - result = /obj/item/organ/eyes/robotic/flashlight - time = 10 - reqs = list( - /obj/item/flashlight = 2, - /obj/item/restraints/handcuffs/cable = 1 - ) - category = CAT_MISC - -/datum/crafting_recipe/paperframes - name = "Paper Frames" - result = /obj/item/stack/sheet/paperframes/five - time = 10 - reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/paper = 20) - category = CAT_MISC - -/datum/crafting_recipe/naturalpaper - name = "Hand-Pressed Paper" - time = 30 - reqs = list(/datum/reagent/water = 50, /obj/item/stack/sheet/mineral/wood = 1) - tools = list(/obj/item/hatchet) - result = /obj/item/paper_bin/bundlenatural - category = CAT_MISC - -/datum/crafting_recipe/toysword - name = "Toy Sword" - reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) - result = /obj/item/toy/sword - category = CAT_MISC - -/datum/crafting_recipe/blackcarpet - name = "Black Carpet" - reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) - result = /obj/item/stack/tile/carpet/black/fifty - category = CAT_MISC - -/datum/crafting_recipe/showercurtain - name = "Shower Curtains" - reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 1) - result = /obj/structure/curtain - category = CAT_MISC - -/datum/crafting_recipe/extendohand - name = "Extendo-Hand" - reqs = list(/obj/item/bodypart/r_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1) - result = /obj/item/extendohand - category = CAT_MISC - -/datum/crafting_recipe/bluespacehonker - name = "Bluespace Bike horn" - result = /obj/item/bikehorn/bluespacehonker - time = 10 - reqs = list(/obj/item/stack/ore/bluespace_crystal = 1, - /obj/item/toy/crayon/blue = 1, - /obj/item/bikehorn = 1) - category = CAT_MISC - -/datum/crafting_recipe/toyneb - name = "Non-Euplastic Blade" - reqs = list(/obj/item/light/tube = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) - result = /obj/item/toy/sword/cx - category = CAT_MISC - -/datum/crafting_recipe/chemical_payload - name = "Chemical Payload (C4)" - result = /obj/item/bombcore/chemical - reqs = list( - /obj/item/stock_parts/matter_bin = 1, - /obj/item/grenade/plastic/c4 = 1, - /obj/item/grenade/chem_grenade = 2 - ) - parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) - time = 30 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/chemical_payload2 - name = "Chemical Payload (Gibtonite)" - result = /obj/item/bombcore/chemical - reqs = list( - /obj/item/stock_parts/matter_bin = 1, - /obj/item/twohanded/required/gibtonite = 1, - /obj/item/grenade/chem_grenade = 2 - ) - parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) - time = 50 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/bonearmor - name = "Bone Armor" - result = /obj/item/clothing/suit/armor/bone - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 6) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonetalisman - name = "Bone Talisman" - result = /obj/item/clothing/accessory/talisman - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonecodpiece - name = "Skull Codpiece" - result = /obj/item/clothing/accessory/skullcodpiece - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/bracers - name = "Bone Bracers" - result = /obj/item/clothing/gloves/bracer - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/skullhelm - name = "Skull Helmet" - result = /obj/item/clothing/head/helmet/skull - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4) - category = CAT_PRIMAL - -/datum/crafting_recipe/goliathcloak - name = "Goliath Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned - category = CAT_PRIMAL - -/datum/crafting_recipe/drakecloak - name = "Ash Drake Armour" - result = /obj/item/clothing/suit/hooded/cloak/drake - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 10, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/ashdrake = 5) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonebag - name = "Bone Satchel" - result = /obj/item/storage/backpack/satchel/bone - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 3, - /obj/item/stack/sheet/sinew = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/gold_horn - name = "Golden Bike Horn" - result = /obj/item/bikehorn/golden - time = 20 - reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, - /obj/item/bikehorn = 1) - category = CAT_MISC - -/datum/crafting_recipe/bonedagger - name = "Bone Dagger" - result = /obj/item/kitchen/knife/combat/bone - time = 20 - reqs = list(/obj/item/stack/sheet/bone = 2) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonespear - name = "Bone Spear" - result = /obj/item/twohanded/bonespear - time = 30 - reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/sinew = 1) - category = CAT_PRIMAL - -/datum/crafting_recipe/boneaxe - name = "Bone Axe" - result = /obj/item/twohanded/fireaxe/boneaxe - time = 50 - reqs = list(/obj/item/stack/sheet/bone = 6, - /obj/item/stack/sheet/sinew = 3) - category = CAT_PRIMAL - -/datum/crafting_recipe/bonfire - name = "Bonfire" - time = 60 - reqs = list(/obj/item/grown/log = 5) - result = /obj/structure/bonfire - category = CAT_PRIMAL - -/datum/crafting_recipe/headpike - name = "Spike Head (Glass Spear)" - time = 65 - reqs = list(/obj/item/twohanded/spear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/twohanded/spear = 1) - result = /obj/structure/headpike - category = CAT_PRIMAL - -/datum/crafting_recipe/headpikebone - name = "Spike Head (Bone Spear)" - time = 65 - reqs = list(/obj/item/twohanded/bonespear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/twohanded/bonespear = 1) - result = /obj/structure/headpike/bone - category = CAT_PRIMAL - -/datum/crafting_recipe/smallcarton - name = "Small Carton" - result = /obj/item/reagent_containers/food/drinks/sillycup/smallcarton - time = 10 - reqs = list(/obj/item/stack/sheet/cardboard = 1) - category = CAT_MISC - -/datum/crafting_recipe/pressureplate - name = "Pressure Plate" - result = /obj/item/pressure_plate - time = 5 - reqs = list(/obj/item/stack/sheet/metal = 1, - /obj/item/stack/tile/plasteel = 1, - /obj/item/stack/cable_coil = 2, - /obj/item/assembly/igniter = 1) - category = CAT_MISC - - -/datum/crafting_recipe/wheelchair - name = "Wheelchair" - result = /obj/vehicle/ridden/wheelchair - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stack/rods = 8) - time = 100 - category = CAT_MISC - -/datum/crafting_recipe/motorized_wheelchair - name = "Motorized Wheelchair" - result = /obj/vehicle/ridden/wheelchair/motorized - reqs = list(/obj/item/stack/sheet/metal = 10, - /obj/item/stack/rods = 8, - /obj/item/stock_parts/manipulator = 2, - /obj/item/stock_parts/capacitor = 1) - parts = list(/obj/item/stock_parts/manipulator = 2, - /obj/item/stock_parts/capacitor = 1) - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) - time = 200 - category = CAT_MISC - -/datum/crafting_recipe/rcl - name = "Makeshift Rapid Cable Layer" - result = /obj/item/twohanded/rcl/ghetto - time = 40 - tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) - reqs = list(/obj/item/stack/sheet/metal = 15) - category = CAT_MISC - -/datum/crafting_recipe/mummy - name = "Mummification Bandages (Mask)" - result = /obj/item/clothing/mask/mummy - time = 10 - tools = list(/obj/item/nullrod/egyptian) - reqs = list(/obj/item/stack/sheet/cloth = 2) - category = CAT_CLOTHING - -/datum/crafting_recipe/mummy/body - name = "Mummification Bandages (Body)" - result = /obj/item/clothing/under/mummy - reqs = list(/obj/item/stack/sheet/cloth = 5) - -/datum/crafting_recipe/guillotine - name = "Guillotine" - result = /obj/structure/guillotine - time = 150 // Building a functioning guillotine takes time - reqs = list(/obj/item/stack/sheet/plasteel = 3, - /obj/item/stack/sheet/mineral/wood = 20, - /obj/item/stack/cable_coil = 10) - tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) - category = CAT_MISC - -/datum/crafting_recipe/lizardhat - name = "Lizard Cloche Hat" - result = /obj/item/clothing/head/lizard - time = 10 - reqs = list(/obj/item/organ/tail/lizard = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/lizardhat_alternate - name = "Lizard Cloche Hat" - result = /obj/item/clothing/head/lizard - time = 10 - reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/kittyears - name = "Kitty Ears" - result = /obj/item/clothing/head/kitty/genuine - time = 10 - reqs = list(/obj/item/organ/tail/cat = 1, - /obj/item/organ/ears/cat = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunsec - name = "Security HUDsunglasses" - result = /obj/item/clothing/glasses/hud/security/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/security = 1, - /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunsecremoval - name = "Security HUD removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunmed - name = "Medical HUDsunglasses" - result = /obj/item/clothing/glasses/hud/health/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/health = 1, - /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/hudsunmedremoval - name = "Medical HUD removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/beergoggles - name = "Beer Goggles" - result = /obj/item/clothing/glasses/sunglasses/reagent - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/science = 1, - /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/stack/cable_coil = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/beergogglesremoval - name = "Beer Goggles removal" - result = /obj/item/clothing/glasses/sunglasses - time = 20 - tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/ghostsheet - name = "Ghost Sheet" - result = /obj/item/clothing/suit/ghost_sheet - time = 5 - tools = list(TOOL_WIRECUTTER) - reqs = list(/obj/item/bedsheet = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/briefcase - name = "Hand made Briefcase" - result = /obj/item/storage/briefcase/crafted - time = 35 - tools = list(TOOL_WIRECUTTER) - reqs = list(/obj/item/stack/sheet/cardboard = 1, - /obj/item/stack/sheet/cloth = 2, - /obj/item/stack/sheet/leather = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/aitater - name = "intelliTater" - result = /obj/item/aicard/aitater - time = 30 - reqs = list(/obj/item/aicard = 1, - /obj/item/reagent_containers/food/snacks/grown/potato = 1) - category = CAT_MISC - -/datum/crafting_recipe/paperwork - name = "Filed Paper Work" - result = /obj/item/folder/paperwork_correct - time = 60 //Takes time for people to file and complete paper work! - reqs = list(/obj/item/pen = 1, - /obj/item/folder/paperwork = 2) - category = CAT_MISC - -/datum/crafting_recipe/ghettojetpack - name = "Improvised Jetpack" - result = /obj/item/tank/jetpack/improvised - time = 30 - reqs = list(/obj/item/tank/internals/oxygen = 2, - /obj/item/extinguisher = 1, - /obj/item/pipe = 3, - /obj/item/stack/cable_coil = 30) - category = CAT_MISC - tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER) - -/datum/crafting_recipe/goldenbox - name = "Gold Plated Toolbox" - result = /obj/item/storage/toolbox/gold_fake - reqs = list(/obj/item/stack/sheet/cardboard = 1, //so we dont null items in crafting - /obj/item/stack/cable_coil = 10, - /obj/item/stack/sheet/mineral/gold = 1, - /obj/item/stock_parts/cell = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_driver - name = "Bronze Plated Screwdriver" - result = /obj/item/screwdriver/bronze - reqs = list(/obj/item/screwdriver = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_welder - name = "Bronze Plated Welding Tool" - result = /obj/item/weldingtool/bronze - reqs = list(/obj/item/weldingtool = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_wirecutters - name = "Bronze Plated Wirecutters" - result = /obj/item/wirecutters/bronze - reqs = list(/obj/item/wirecutters = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_crowbar - name = "Bronze Plated Crowbar" - result = /obj/item/crowbar/bronze - reqs = list(/obj/item/crowbar = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/bronze_wrench - name = "Bronze Plated Wrench" - result = /obj/item/wrench/bronze - reqs = list(/obj/item/wrench = 1, - /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, - /datum/reagent/water = 15) - time = 40 - category = CAT_MISC - -/datum/crafting_recipe/smartdart - name = "Medical smartdart" - result = /obj/item/reagent_containers/syringe/dart - reqs = list(/obj/item/stack/sheet/metal = 1, - /obj/item/stack/sheet/glass = 1, - /obj/item/stack/sheet/plastic = 1) - time = 10 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/medolier - name = "Medolier" - result = /obj/item/storage/belt/medolier - reqs = list(/obj/item/stack/sheet/metal = 2, - /obj/item/stack/sheet/cloth = 3, - /obj/item/stack/sheet/plastic = 4) - time = 30 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - -/datum/crafting_recipe/smartdartgun - name = "Smart dartgun" - result = /obj/item/gun/syringe/dart - reqs = list(/obj/item/stack/sheet/metal = 15, - /obj/item/stack/sheet/glass = 10, - /obj/item/tank/internals = 1, - /obj/item/reagent_containers/glass/beaker = 1, - /obj/item/stack/sheet/plastic = 10, - /obj/item/stack/cable_coil = 2) - time = 150 //It's a gun - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/durathread_duffelbag - name = "Durathread Dufflebag" - result = /obj/item/storage/backpack/duffelbag/durathread - reqs = list(/obj/item/stack/sheet/durathread = 7, - /obj/item/stack/sheet/leather = 3) - time = 70 - category = CAT_CLOTHING - -/datum/crafting_recipe/durathread_toolbelt - name = "Durathread Toolbelt" - result = /obj/item/storage/belt/durathread - reqs = list(/obj/item/stack/sheet/durathread = 5, - /obj/item/stack/sheet/leather = 1) - time = 30 - category = CAT_CLOTHING - -/datum/crafting_recipe/durathread_helmet - name = "Makeshift Durathread Helmet" - result = /obj/item/clothing/head/helmet/durathread - reqs = list(/obj/item/stack/sheet/durathread = 4, - /obj/item/stack/sheet/leather = 2) - time = 30 - category = CAT_CLOTHING - -/datum/crafting_recipe/durathread_vest - name = "Makeshift Durathread Armour" - result = /obj/item/clothing/suit/armor/vest/durathread - reqs = list(/obj/item/stack/sheet/durathread = 6, - /obj/item/stack/sheet/leather = 3) - time = 50 - category = CAT_CLOTHING - -/datum/crafting_recipe/durathread_wintercoat - name = "Durathread Winter Coat" - result = /obj/item/clothing/suit/hooded/wintercoat/durathread - reqs = list(/obj/item/stack/sheet/durathread = 12, - /obj/item/stack/sheet/leather = 10) - time = 70 - category = CAT_CLOTHING - -/datum/crafting_recipe/wintercoat_cosmic - name = "Cosmic Winter Coat" - result = /obj/item/clothing/suit/hooded/wintercoat/cosmic - reqs = list(/obj/item/clothing/suit/hooded/wintercoat = 1, - /obj/item/clothing/suit/hooded/wintercoat/captain = 1, - /obj/item/clothing/suit/hooded/wintercoat/hop = 1, - /obj/item/clothing/suit/hooded/wintercoat/hos = 1, - /obj/item/clothing/suit/hooded/wintercoat/rd = 1, - /obj/item/clothing/suit/hooded/wintercoat/ce = 1, - /obj/item/clothing/suit/hooded/wintercoat/cmo = 1, - /obj/item/clothing/suit/hooded/wintercoat/qm = 1, - /obj/item/clothing/suit/hooded/wintercoat/robotics = 1, - /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 1, - /obj/item/clothing/suit/hooded/wintercoat/engineering = 1, - /obj/item/clothing/suit/hooded/wintercoat/science = 1, - /obj/item/clothing/suit/hooded/wintercoat/genetics = 1, - /obj/item/clothing/suit/hooded/wintercoat/chemistry = 1, - /obj/item/clothing/suit/hooded/wintercoat/medical = 1, - /obj/item/clothing/suit/hooded/wintercoat/viro = 1, - /obj/item/clothing/suit/hooded/wintercoat/janitor = 1, - /obj/item/clothing/suit/hooded/wintercoat/security = 1, - /obj/item/clothing/suit/hooded/wintercoat/cargo = 1, - /obj/item/clothing/suit/hooded/wintercoat/hydro = 1, - /obj/item/clothing/suit/hooded/wintercoat/miner = 1) - time = 60 - always_availible = TRUE - category = CAT_CLOTHING - -/datum/crafting_recipe/coconut_bong - name = "Coconut Bong" - result = /obj/item/bong/coconut - reqs = list(/obj/item/stack/sheet/mineral/bamboo = 2, - /obj/item/reagent_containers/food/snacks/grown/coconut = 1) - time = 70 - category = CAT_MISC diff --git a/code/modules/crafting/recipes/recipes_clothing.dm b/code/modules/crafting/recipes/recipes_clothing.dm new file mode 100644 index 00000000..32de354b --- /dev/null +++ b/code/modules/crafting/recipes/recipes_clothing.dm @@ -0,0 +1,187 @@ +/datum/crafting_recipe/mummy + name = "Mummification Bandages (Mask)" + result = /obj/item/clothing/mask/mummy + time = 10 + tools = list(/obj/item/nullrod/egyptian) + reqs = list(/obj/item/stack/sheet/cloth = 2) + category = CAT_CLOTHING + +/datum/crafting_recipe/mummy/body + name = "Mummification Bandages (Body)" + result = /obj/item/clothing/under/mummy + reqs = list(/obj/item/stack/sheet/cloth = 5) + +/datum/crafting_recipe/lizardhat + name = "Lizard Cloche Hat" + result = /obj/item/clothing/head/lizard + time = 10 + reqs = list(/obj/item/organ/tail/lizard = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/lizardhat_alternate + name = "Lizard Cloche Hat" + result = /obj/item/clothing/head/lizard + time = 10 + reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/kittyears + name = "Kitty Ears" + result = /obj/item/clothing/head/kitty/genuine + time = 10 + reqs = list(/obj/item/organ/tail/cat = 1, + /obj/item/organ/ears/cat = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunsec + name = "Security HUDsunglasses" + result = /obj/item/clothing/glasses/hud/security/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/security = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunsecremoval + name = "Security HUD removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunmed + name = "Medical HUDsunglasses" + result = /obj/item/clothing/glasses/hud/health/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/health = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunmedremoval + name = "Medical HUD removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/beergoggles + name = "Beer Goggles" + result = /obj/item/clothing/glasses/sunglasses/reagent + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/science = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/beergogglesremoval + name = "Beer Goggles removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/ghostsheet + name = "Ghost Sheet" + result = /obj/item/clothing/suit/ghost_sheet + time = 5 + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/bedsheet = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/briefcase + name = "Hand made Briefcase" + result = /obj/item/storage/briefcase/crafted + time = 35 + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/stack/sheet/cardboard = 1, + /obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/leather = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/medolier + name = "Medolier" + result = /obj/item/storage/belt/medolier + reqs = list(/obj/item/stack/sheet/metal = 2, + /obj/item/stack/sheet/cloth = 3, + /obj/item/stack/sheet/plastic = 4) + time = 30 + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_duffelbag + name = "Durathread Dufflebag" + result = /obj/item/storage/backpack/duffelbag/durathread + reqs = list(/obj/item/stack/sheet/durathread = 7, + /obj/item/stack/sheet/leather = 3) + time = 70 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_toolbelt + name = "Durathread Toolbelt" + result = /obj/item/storage/belt/durathread + reqs = list(/obj/item/stack/sheet/durathread = 5, + /obj/item/stack/sheet/leather = 2) + time = 30 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_helmet + name = "Makeshift Durathread Helmet" + result = /obj/item/clothing/head/helmet/durathread + reqs = list(/obj/item/stack/sheet/durathread = 4, + /obj/item/stack/sheet/leather = 2) + time = 30 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_vest + name = "Makeshift Durathread Armour" + result = /obj/item/clothing/suit/armor/vest/durathread + reqs = list(/obj/item/stack/sheet/durathread = 6, + /obj/item/stack/sheet/leather = 3) + time = 50 + always_availible = TRUE + category = CAT_CLOTHING + +/datum/crafting_recipe/durathread_wintercoat + name = "Durathread Winter Coat" + result = /obj/item/clothing/suit/hooded/wintercoat/durathread + reqs = list(/obj/item/stack/sheet/durathread = 12, + /obj/item/stack/sheet/leather = 10) + time = 70 + category = CAT_CLOTHING + +/datum/crafting_recipe/wintercoat_cosmic + name = "Cosmic Winter Coat" + result = /obj/item/clothing/suit/hooded/wintercoat/cosmic + reqs = list(/obj/item/clothing/suit/hooded/wintercoat = 1, + /obj/item/clothing/suit/hooded/wintercoat/captain = 1, + /obj/item/clothing/suit/hooded/wintercoat/hop = 1, + /obj/item/clothing/suit/hooded/wintercoat/hos = 1, + /obj/item/clothing/suit/hooded/wintercoat/rd = 1, + /obj/item/clothing/suit/hooded/wintercoat/ce = 1, + /obj/item/clothing/suit/hooded/wintercoat/cmo = 1, + /obj/item/clothing/suit/hooded/wintercoat/qm = 1, + /obj/item/clothing/suit/hooded/wintercoat/robotics = 1, + /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 1, + /obj/item/clothing/suit/hooded/wintercoat/engineering = 1, + /obj/item/clothing/suit/hooded/wintercoat/science = 1, + /obj/item/clothing/suit/hooded/wintercoat/genetics = 1, + /obj/item/clothing/suit/hooded/wintercoat/chemistry = 1, + /obj/item/clothing/suit/hooded/wintercoat/medical = 1, + /obj/item/clothing/suit/hooded/wintercoat/viro = 1, + /obj/item/clothing/suit/hooded/wintercoat/janitor = 1, + /obj/item/clothing/suit/hooded/wintercoat/security = 1, + /obj/item/clothing/suit/hooded/wintercoat/cargo = 1, + /obj/item/clothing/suit/hooded/wintercoat/hydro = 1, + /obj/item/clothing/suit/hooded/wintercoat/miner = 1) + time = 60 + always_availible = TRUE + category = CAT_CLOTHING diff --git a/code/modules/crafting/recipes/recipes_misc.dm b/code/modules/crafting/recipes/recipes_misc.dm new file mode 100644 index 00000000..70695466 --- /dev/null +++ b/code/modules/crafting/recipes/recipes_misc.dm @@ -0,0 +1,337 @@ +///////////////// +//Large Objects// +///////////////// + +/datum/crafting_recipe/showercurtain + name = "Shower Curtains" + reqs = list(/obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/plastic = 2, + /obj/item/stack/rods = 1) + result = /obj/structure/curtain + category = CAT_MISC + +/datum/crafting_recipe/guillotine + name = "Guillotine" + result = /obj/structure/guillotine + time = 150 // Building a functioning guillotine takes time + reqs = list(/obj/item/stack/sheet/plasteel = 3, + /obj/item/stack/sheet/mineral/wood = 20, + /obj/item/stack/cable_coil = 10) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) + category = CAT_MISC + +/////////////////// +//Tools & Storage// +/////////////////// + +/datum/crafting_recipe/ghettojetpack + name = "Improvised Jetpack" + result = /obj/item/tank/jetpack/improvised + time = 30 + reqs = list(/obj/item/tank/internals/oxygen = 2, + /obj/item/extinguisher = 1, + /obj/item/pipe = 3, + /obj/item/stack/cable_coil = 30) + category = CAT_MISC + tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER) + +/datum/crafting_recipe/goldenbox + name = "Gold Plated Toolbox" + result = /obj/item/storage/toolbox/gold_fake + reqs = list(/obj/item/stack/sheet/cardboard = 1, //so we dont null items in crafting + /obj/item/stack/cable_coil = 10, + /obj/item/stack/sheet/mineral/gold = 1, + /obj/item/stock_parts/cell = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_driver + name = "Bronze Plated Screwdriver" + result = /obj/item/screwdriver/bronze + reqs = list(/obj/item/screwdriver = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_welder + name = "Bronze Plated Welding Tool" + result = /obj/item/weldingtool/bronze + reqs = list(/obj/item/weldingtool = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_wirecutters + name = "Bronze Plated Wirecutters" + result = /obj/item/wirecutters/bronze + reqs = list(/obj/item/wirecutters = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_crowbar + name = "Bronze Plated Crowbar" + result = /obj/item/crowbar/bronze + reqs = list(/obj/item/crowbar = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/bronze_wrench + name = "Bronze Plated Wrench" + result = /obj/item/wrench/bronze + reqs = list(/obj/item/wrench = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/tile/bronze = 1, + /datum/reagent/water = 15) + time = 40 + category = CAT_MISC + +/datum/crafting_recipe/rcl + name = "Makeshift Rapid Cable Layer" + result = /obj/item/twohanded/rcl/ghetto + time = 40 + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) + reqs = list(/obj/item/stack/sheet/metal = 15) + category = CAT_MISC + +//////////// +//Vehicles// +//////////// + +/datum/crafting_recipe/wheelchair + name = "Wheelchair" + result = /obj/vehicle/ridden/wheelchair + reqs = list(/obj/item/stack/sheet/metal = 10, + /obj/item/stack/rods = 8) + time = 100 + category = CAT_MISC + +/datum/crafting_recipe/motorized_wheelchair + name = "Motorized Wheelchair" + result = /obj/vehicle/ridden/wheelchair/motorized + reqs = list(/obj/item/stack/sheet/metal = 10, + /obj/item/stack/rods = 8, + /obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/capacitor = 1) + parts = list(/obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/capacitor = 1) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) + time = 200 + category = CAT_MISC + +/datum/crafting_recipe/skateboard + name = "Skateboard" + result = /obj/vehicle/ridden/scooter/skateboard + time = 60 + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/rods = 10) + category = CAT_MISC + +/datum/crafting_recipe/scooter + name = "Scooter" + result = /obj/vehicle/ridden/scooter + time = 65 + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/rods = 12) + category = CAT_MISC + +///////// +//Toys/// +///////// + +/datum/crafting_recipe/toysword + name = "Toy Sword" + reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) + result = /obj/item/toy/sword + category = CAT_MISC + +/datum/crafting_recipe/extendohand + name = "Extendo-Hand" + reqs = list(/obj/item/bodypart/r_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1) + result = /obj/item/extendohand + category = CAT_MISC + +/datum/crafting_recipe/toyneb + name = "Non-Euplastic Blade" + reqs = list(/obj/item/light/tube = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) + result = /obj/item/toy/sword/cx + category = CAT_MISC + +//////////// +//Unsorted// +//////////// + +/datum/crafting_recipe/blackcarpet + name = "Black Carpet" + reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) + result = /obj/item/stack/tile/carpet/black/fifty + category = CAT_MISC + +/datum/crafting_recipe/paperframes + name = "Paper Frames" + result = /obj/item/stack/sheet/paperframes/five + time = 10 + reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/paper = 20) + category = CAT_MISC + +/datum/crafting_recipe/naturalpaper + name = "Hand-Pressed Paper" + time = 30 + reqs = list(/datum/reagent/water = 50, /obj/item/stack/sheet/mineral/wood = 1) + tools = list(/obj/item/hatchet) + result = /obj/item/paper_bin/bundlenatural + category = CAT_MISC + +/datum/crafting_recipe/bluespacehonker + name = "Bluespace Bike horn" + result = /obj/item/bikehorn/bluespacehonker + time = 10 + reqs = list(/obj/item/stack/ore/bluespace_crystal = 1, + /obj/item/toy/crayon/blue = 1, + /obj/item/bikehorn = 1) + category = CAT_MISC + +/datum/crafting_recipe/aitater + name = "intelliTater" + result = /obj/item/aicard/aitater + time = 30 + reqs = list(/obj/item/aicard = 1, + /obj/item/reagent_containers/food/snacks/grown/potato = 1) + category = CAT_MISC + +/datum/crafting_recipe/mousetrap + name = "Mouse Trap" + result = /obj/item/assembly/mousetrap + time = 10 + reqs = list(/obj/item/stack/sheet/cardboard = 1, + /obj/item/stack/rods = 1) + category = CAT_MISC + +/datum/crafting_recipe/papersack + name = "Paper Sack" + result = /obj/item/storage/box/papersack + time = 10 + reqs = list(/obj/item/paper = 5) + category = CAT_MISC + +/datum/crafting_recipe/flashlight_eyes + name = "Flashlight Eyes" + result = /obj/item/organ/eyes/robotic/flashlight + time = 10 + reqs = list( + /obj/item/flashlight = 2, + /obj/item/restraints/handcuffs/cable = 1 + ) + category = CAT_MISC + +/datum/crafting_recipe/smallcarton + name = "Small Carton" + result = /obj/item/reagent_containers/food/drinks/sillycup/smallcarton + time = 10 + reqs = list(/obj/item/stack/sheet/cardboard = 1) + category = CAT_MISC + +/datum/crafting_recipe/pressureplate + name = "Pressure Plate" + result = /obj/item/pressure_plate + time = 5 + reqs = list(/obj/item/stack/sheet/metal = 1, + /obj/item/stack/tile/plasteel = 1, + /obj/item/stack/cable_coil = 2, + /obj/item/assembly/igniter = 1) + category = CAT_MISC + +/datum/crafting_recipe/gold_horn + name = "Golden Bike Horn" + result = /obj/item/bikehorn/golden + time = 20 + reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, + /obj/item/bikehorn = 1) + category = CAT_MISC + +/datum/crafting_recipe/spooky_camera + name = "Camera Obscura" + result = /obj/item/camera/spooky + time = 15 + reqs = list(/obj/item/camera = 1, + /datum/reagent/water/holywater = 10) + parts = list(/obj/item/camera = 1) + category = CAT_MISC + +/datum/crafting_recipe/paperwork + name = "Filed Paper Work" + result = /obj/item/folder/paperwork_correct + time = 10 //Takes time for people to file and complete paper work! + tools = list(/obj/item/pen) + reqs = list(/obj/item/folder/paperwork = 1) + category = CAT_MISC + +////////////// +//Banners///// +////////////// + +/datum/crafting_recipe/command_banner + name = "Command Banner" + result = /obj/item/banner/command/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/captainparade = 1) + category = CAT_MISC + +/datum/crafting_recipe/engineering_banner + name = "Engitopia Banner" + result = /obj/item/banner/engineering/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/engineer = 1) + category = CAT_MISC + +/datum/crafting_recipe/cargo_banner + name = "Cargonia Banner" + result = /obj/item/banner/cargo/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/cargotech = 1) + category = CAT_MISC + +/datum/crafting_recipe/science_banner + name = "Sciencia Banner" + result = /obj/item/banner/science/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/scientist = 1) + category = CAT_MISC + +/datum/crafting_recipe/medical_banner + name = "Meditopia Banner" + result = /obj/item/banner/medical/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/medical = 1) + category = CAT_MISC + +/datum/crafting_recipe/security_banner + name = "Securistan Banner" + result = /obj/item/banner/security/mundane + time = 40 + reqs = list(/obj/item/stack/rods = 2, + /obj/item/clothing/under/rank/security = 1) + category = CAT_MISC + +/datum/crafting_recipe/coconut_bong + name = "Coconut Bong" + result = /obj/item/bong/coconut + reqs = list(/obj/item/stack/sheet/mineral/bamboo = 2, + /obj/item/reagent_containers/food/snacks/grown/coconut = 1) + time = 70 + category = CAT_MISC diff --git a/code/modules/crafting/recipes/recipes_primal.dm b/code/modules/crafting/recipes/recipes_primal.dm new file mode 100644 index 00000000..1be479e4 --- /dev/null +++ b/code/modules/crafting/recipes/recipes_primal.dm @@ -0,0 +1,113 @@ +/datum/crafting_recipe/bonearmor + name = "Bone Armor" + result = /obj/item/clothing/suit/armor/bone + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 6) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonetalisman + name = "Bone Talisman" + result = /obj/item/clothing/accessory/talisman + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonecodpiece + name = "Skull Codpiece" + result = /obj/item/clothing/accessory/skullcodpiece + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bracers + name = "Bone Bracers" + result = /obj/item/clothing/gloves/bracer + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/skullhelm + name = "Skull Helmet" + result = /obj/item/clothing/head/helmet/skull + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4) + category = CAT_PRIMAL + +/datum/crafting_recipe/goliathcloak + name = "Goliath Cloak" + result = /obj/item/clothing/suit/hooded/cloak/goliath + time = 50 + reqs = list(/obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned + category = CAT_PRIMAL + +/datum/crafting_recipe/drakecloak + name = "Ash Drake Armour" + result = /obj/item/clothing/suit/hooded/cloak/drake + time = 60 + reqs = list(/obj/item/stack/sheet/bone = 10, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/ashdrake = 5) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonebag + name = "Bone Satchel" + result = /obj/item/storage/backpack/satchel/bone + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 3, + /obj/item/stack/sheet/sinew = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonedagger + name = "Bone Dagger" + result = /obj/item/kitchen/knife/combat/bone + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonespear + name = "Bone Spear" + result = /obj/item/twohanded/bonespear + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/boneaxe + name = "Bone Axe" + result = /obj/item/twohanded/fireaxe/boneaxe + time = 50 + reqs = list(/obj/item/stack/sheet/bone = 6, + /obj/item/stack/sheet/sinew = 3) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonfire + name = "Bonfire" + time = 60 + reqs = list(/obj/item/grown/log = 5) + result = /obj/structure/bonfire + category = CAT_PRIMAL + +/datum/crafting_recipe/headpike + name = "Spike Head (Glass Spear)" + time = 65 + reqs = list(/obj/item/twohanded/spear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/spear = 1) + result = /obj/structure/headpike + category = CAT_PRIMAL + +/datum/crafting_recipe/headpikebone + name = "Spike Head (Bone Spear)" + time = 65 + reqs = list(/obj/item/twohanded/bonespear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/bonespear = 1) + result = /obj/structure/headpike/bone + category = CAT_PRIMAL \ No newline at end of file diff --git a/code/modules/crafting/recipes/recipes_robot.dm b/code/modules/crafting/recipes/recipes_robot.dm new file mode 100644 index 00000000..ae5bca77 --- /dev/null +++ b/code/modules/crafting/recipes/recipes_robot.dm @@ -0,0 +1,84 @@ + +/datum/crafting_recipe/ed209 + name = "ED209" + result = /mob/living/simple_animal/bot/ed209 + reqs = list(/obj/item/robot_suit = 1, + /obj/item/clothing/head/helmet = 1, + /obj/item/clothing/suit/armor/vest = 1, + /obj/item/bodypart/l_leg/robot = 1, + /obj/item/bodypart/r_leg/robot = 1, + /obj/item/stack/sheet/metal = 1, + /obj/item/stack/cable_coil = 1, + /obj/item/gun/energy/e_gun/advtaser = 1, + /obj/item/stock_parts/cell = 1, + /obj/item/assembly/prox_sensor = 1) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) + time = 60 + category = CAT_ROBOT + +/datum/crafting_recipe/secbot + name = "Secbot" + result = /mob/living/simple_animal/bot/secbot + reqs = list(/obj/item/assembly/signaler = 1, + /obj/item/clothing/head/helmet/sec = 1, + /obj/item/melee/baton = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + tools = list(TOOL_WELDER) + time = 60 + category = CAT_ROBOT + +/datum/crafting_recipe/cleanbot + name = "Cleanbot" + result = /mob/living/simple_animal/bot/cleanbot + reqs = list(/obj/item/reagent_containers/glass/bucket = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/floorbot + name = "Floorbot" + result = /mob/living/simple_animal/bot/floorbot + reqs = list(/obj/item/storage/toolbox/mechanical = 1, + /obj/item/stack/tile/plasteel = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/medbot + name = "Medbot" + result = /mob/living/simple_animal/bot/medbot + reqs = list(/obj/item/healthanalyzer = 1, + /obj/item/storage/firstaid = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bodypart/r_arm/robot = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/honkbot + name = "Honkbot" + result = /mob/living/simple_animal/bot/honkbot + reqs = list(/obj/item/storage/box/clown = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/bikehorn/ = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/Firebot + name = "Firebot" + result = /mob/living/simple_animal/bot/firebot + reqs = list(/obj/item/extinguisher = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/assembly/prox_sensor = 1, + /obj/item/clothing/head/hardhat/red = 1) + time = 40 + category = CAT_ROBOT + +/datum/crafting_recipe/potatos + name = "Potat-OS" + reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 ) + result = /obj/item/aicard/potato + category = CAT_ROBOT \ No newline at end of file diff --git a/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm b/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm new file mode 100644 index 00000000..9a06981b --- /dev/null +++ b/code/modules/crafting/recipes/recipes_weapon_and_ammo.dm @@ -0,0 +1,347 @@ +/datum/crafting_recipe/pin_removal + name = "Pin Removal" + result = /obj/item/gun + reqs = list(/obj/item/gun = 1) + parts = list(/obj/item/gun = 1) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/strobeshield + name = "Strobe Shield" + result = /obj/item/assembly/flash/shield + reqs = list(/obj/item/wallframe/flasher = 1, + /obj/item/assembly/flash/handheld = 1, + /obj/item/shield/riot = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/makeshiftshield + name = "Makeshift Metal Shield" + result = /obj/item/shield/makeshift + reqs = list(/obj/item/stack/cable_coil = 30, + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/leather = 3) + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/spear + name = "Spear" + result = /obj/item/twohanded/spear + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/shard = 1, + /obj/item/stack/rods = 1) + parts = list(/obj/item/shard = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/stunprod + name = "Stunprod" + result = /obj/item/melee/baton/cattleprod + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/assembly/igniter = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/teleprod + name = "Teleprod" + result = /obj/item/melee/baton/cattleprod/teleprod + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/assembly/igniter = 1, + /obj/item/stack/ore/bluespace_crystal = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/bola + name = "Bola" + result = /obj/item/restraints/legcuffs/bola + reqs = list(/obj/item/restraints/handcuffs/cable = 1, + /obj/item/stack/sheet/metal = 6) + time = 20//15 faster than crafting them by hand! + category= CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/tailclub + name = "Tail Club" + result = /obj/item/tailclub + reqs = list(/obj/item/organ/tail/lizard = 1, + /obj/item/stack/sheet/metal = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/tailwhip + name = "Liz O' Nine Tails" + result = /obj/item/melee/chainofcommand/tailwhip + reqs = list(/obj/item/organ/tail/lizard = 1, + /obj/item/stack/cable_coil = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/catwhip + name = "Cat O' Nine Tails" + result = /obj/item/melee/chainofcommand/tailwhip/kitty + reqs = list(/obj/item/organ/tail/cat = 1, + /obj/item/stack/cable_coil = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/chainsaw + name = "Chainsaw" + result = /obj/item/twohanded/required/chainsaw + reqs = list(/obj/item/circular_saw = 1, + /obj/item/stack/cable_coil = 3, + /obj/item/stack/sheet/plasteel = 5) + tools = list(TOOL_WELDER) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +////////////////// +///BOMB CRAFTING// +////////////////// + +/datum/crafting_recipe/chemical_payload + name = "Chemical Payload (C4)" + result = /obj/item/bombcore/chemical + reqs = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/grenade/plastic/c4 = 1, + /obj/item/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) + time = 30 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/chemical_payload2 + name = "Chemical Payload (Gibtonite)" + result = /obj/item/bombcore/chemical + reqs = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/twohanded/required/gibtonite = 1, + /obj/item/grenade/chem_grenade = 2 + ) + parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2) + time = 50 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/molotov + name = "Molotov" + result = /obj/item/reagent_containers/food/drinks/bottle/molotov + reqs = list(/obj/item/reagent_containers/rag = 1, + /obj/item/reagent_containers/food/drinks/bottle = 1) + parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/IED + name = "IED" + result = /obj/item/grenade/iedcasing + reqs = list(/datum/reagent/fuel = 50, + /obj/item/stack/cable_coil = 1, + /obj/item/assembly/igniter = 1, + /obj/item/reagent_containers/food/drinks/soda_cans = 1) + parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1) + time = 15 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/lance + name = "Explosive Lance (Grenade)" + result = /obj/item/twohanded/spear + reqs = list(/obj/item/twohanded/spear = 1, + /obj/item/grenade = 1) + parts = list(/obj/item/twohanded/spear = 1, + /obj/item/grenade = 1) + time = 15 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +////////////////// +///GUNS CRAFTING// +////////////////// + + +/datum/crafting_recipe/smartdartgun + name = "Smart dartgun" + result = /obj/item/gun/syringe/dart + reqs = list(/obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/glass = 5, + /obj/item/tank/internals = 1, + /obj/item/reagent_containers/glass/beaker = 1, + /obj/item/stack/sheet/plastic = 5, + /obj/item/stack/cable_coil = 1) + time = 150 //It's a gun + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/* We don't have this yet -- Archie +/datum/crafting_recipe/rapiddartgun + name = "Rapid Smart dartgun" + result = /obj/item/gun/syringe/dart/rapiddart + reqs = list( + /obj/item/gun/syringe/dart = 1, + /obj/item/stack/sheet/plastic = 5, + /obj/item/stack/cable_coil = 1, + /obj/item/reagent_containers/glass/beaker = 1 + ) + parts = list(/obj/item/reagent_containers/glass/beaker = 1) + time = 120 //Modifying your gun + category = CAT_WEAPONRY + subcategory = CAT_WEAPON +*/ + +/datum/crafting_recipe/improvised_pneumatic_cannon + name = "Pneumatic Cannon" + result = /obj/item/pneumatic_cannon/ghetto + tools = list(TOOL_WELDER, TOOL_WRENCH) + reqs = list(/obj/item/stack/sheet/metal = 4, + /obj/item/stack/packageWrap = 8, + /obj/item/pipe = 2) + time = 300 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/flamethrower //Gun* + name = "Flamethrower" + result = /obj/item/flamethrower + reqs = list(/obj/item/weldingtool = 1, + /obj/item/assembly/igniter = 1, + /obj/item/stack/rods = 1) + parts = list(/obj/item/assembly/igniter = 1, + /obj/item/weldingtool = 1) + tools = list(TOOL_SCREWDRIVER) + time = 10 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/ishotgun + name = "Improvised Shotgun" + result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised + reqs = list(/obj/item/weaponcrafting/receiver = 1, + /obj/item/pipe = 1, + /obj/item/weaponcrafting/stock = 1, + /obj/item/stack/packageWrap = 5) + tools = list(TOOL_SCREWDRIVER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/irifle + name = "Improvised Rifle(7.62mm)" + result = /obj/item/gun/ballistic/shotgun/boltaction/improvised + reqs = list(/obj/item/weaponcrafting/receiver = 1, + /obj/item/pipe = 2, + /obj/item/weaponcrafting/stock = 1, + /obj/item/stack/packageWrap = 5) + tools = list(TOOL_SCREWDRIVER) + time = 100 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +////////////////// +///AMMO CRAFTING// +////////////////// + +/datum/crafting_recipe/smartdart + name = "Medical smartdart" + result = /obj/item/reagent_containers/syringe/dart + reqs = list(/obj/item/stack/sheet/metal = 1, + /obj/item/stack/sheet/glass = 1, + /obj/item/stack/sheet/plastic = 1) + time = 10 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/meteorslug + name = "Meteorslug Shell" + result = /obj/item/ammo_casing/shotgun/meteorslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/rcd_ammo = 1, + /obj/item/stock_parts/manipulator = 2) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/pulseslug + name = "Pulse Slug Shell" + result = /obj/item/ammo_casing/shotgun/pulseslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/capacitor/adv = 2, + /obj/item/stock_parts/micro_laser/ultra = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/dragonsbreath + name = "Dragonsbreath Shell" + result = /obj/item/ammo_casing/shotgun/dragonsbreath + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /datum/reagent/phosphorus = 5) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/frag12 + name = "FRAG-12 Shell" + result = /obj/item/ammo_casing/shotgun/frag12 + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /datum/reagent/glycerol = 5, + /datum/reagent/toxin/acid = 5, + /datum/reagent/toxin/acid/fluacid = 5) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/ionslug + name = "Ion Scatter Shell" + result = /obj/item/ammo_casing/shotgun/ion + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/micro_laser/ultra = 1, + /obj/item/stock_parts/subspace/crystal = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/improvisedslug + name = "Improvised Shotgun Shell" + result = /obj/item/ammo_casing/shotgun/improvised + reqs = list(/obj/item/grenade/chem_grenade = 1, + /obj/item/stack/sheet/metal = 1, + /obj/item/stack/cable_coil = 1, + /datum/reagent/fuel = 10) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/laserslug + name = "Scatter Laser Shell" + result = /obj/item/ammo_casing/shotgun/laserslug + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /obj/item/stock_parts/capacitor/adv = 1, + /obj/item/stock_parts/micro_laser/high = 1) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO diff --git a/code/modules/vending/magivend.dm b/code/modules/vending/magivend.dm index b414638b..30c6ae61 100644 --- a/code/modules/vending/magivend.dm +++ b/code/modules/vending/magivend.dm @@ -4,7 +4,7 @@ icon_state = "MagiVend" product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!" vend_reply = "Have an enchanted evening!" - product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!" + product_ads = "EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!;Now-magic proofing venders!" products = list(/obj/item/clothing/head/wizard = 1, /obj/item/clothing/suit/wizrobe = 1, /obj/item/clothing/head/wizard/red = 1, @@ -14,5 +14,5 @@ /obj/item/clothing/shoes/sandal/magic = 1, /obj/item/staff = 2) contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) + armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "magic" = 100) resistance_flags = FIRE_PROOF diff --git a/tgstation.dme b/tgstation.dme index 2b66c708..7988c73a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1628,6 +1628,11 @@ #include "code\modules\crafting\craft.dm" #include "code\modules\crafting\guncrafting.dm" #include "code\modules\crafting\recipes.dm" +#include "code\modules\crafting\recipes\recipes_clothing.dm" +#include "code\modules\crafting\recipes\recipes_misc.dm" +#include "code\modules\crafting\recipes\recipes_primal.dm" +#include "code\modules\crafting\recipes\recipes_robot.dm" +#include "code\modules\crafting\recipes\recipes_weapon_and_ammo.dm" #include "code\modules\detectivework\detective_work.dm" #include "code\modules\detectivework\evidence.dm" #include "code\modules\detectivework\scanner.dm" From 4a9d6a82ce717dcb594672365668079454453f44 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 24 Oct 2019 18:51:34 -0700 Subject: [PATCH 3/8] Merge pull request #9542 from Trilbyspaceclone/patch-231 Lowers Cargo most packs down to Pre- MK I Cargo rework* --- code/modules/cargo/exports/manifest.dm | 2 +- code/modules/cargo/packs/armory.dm | 14 +++++----- code/modules/cargo/packs/emergency.dm | 6 ++--- code/modules/cargo/packs/engineering.dm | 35 +++++++++++++++++++++---- code/modules/cargo/packs/misc.dm | 23 ++++++++++------ code/modules/cargo/packs/service.dm | 2 +- 6 files changed, 57 insertions(+), 25 deletions(-) diff --git a/code/modules/cargo/exports/manifest.dm b/code/modules/cargo/exports/manifest.dm index d03f5a46..60515781 100644 --- a/code/modules/cargo/exports/manifest.dm +++ b/code/modules/cargo/exports/manifest.dm @@ -80,7 +80,7 @@ // Paper work done correctly /datum/export/paperwork_correct - cost = 150 + cost = 120 // finicky number 20 x 120 = 2400 per crate k_elasticity = 0 unit_name = "correct paperwork" export_types = list(/obj/item/folder/paperwork_correct) diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index 4713d941..11aae8a0 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -87,7 +87,7 @@ /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 = 4000 + cost = 3000 //Lowered untill cargo rework MK II is done contains = list(/obj/item/storage/lockbox/loyalty) crate_name = "mindshield implant crate" @@ -175,7 +175,7 @@ /datum/supply_pack/security/armory/swat name = "SWAT Crate" desc = "Contains two fullbody sets of tough, fireproof, pressurized 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 = 6750 + cost = 6000 contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, /obj/item/clothing/head/helmet/swat/nanotrasen, /obj/item/clothing/suit/space/swat, @@ -199,7 +199,7 @@ /datum/supply_pack/security/armory/woodstock name = "Classic WoodStock Shotguns Crate" desc = "Contains three rustic, pumpaction shotguns. Requires Armory access to open." - cost = 3500 + cost = 3000 contains = list(/obj/item/gun/ballistic/shotgun, /obj/item/gun/ballistic/shotgun, /obj/item/gun/ballistic/shotgun) @@ -208,7 +208,7 @@ /datum/supply_pack/security/armory/wt550 name = "WT-550 Semi-Auto Rifle Crate" desc = "Contains two high-powered, semiautomatic rifles chambered in 4.6x30mm. Requires Armory access to open." - cost = 3250 + cost = 2550 contains = list(/obj/item/gun/ballistic/automatic/wt550, /obj/item/gun/ballistic/automatic/wt550) crate_name = "auto rifle crate" @@ -216,7 +216,7 @@ /datum/supply_pack/security/armory/wt550ammo name = "WT-550 Semi-Auto SMG Ammo Crate" desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 2750 + cost = 1750 contains = list(/obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9, @@ -226,7 +226,7 @@ /datum/supply_pack/security/armory/wt550ammo_nonlethal // Takes around 12 shots to stun crit someone name = "WT-550 Semi-Auto SMG Non-Lethal Ammo Crate" desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 1200 + cost = 1000 contains = list(/obj/item/ammo_box/magazine/wt550m9/wtrubber, /obj/item/ammo_box/magazine/wt550m9/wtrubber, /obj/item/ammo_box/magazine/wt550m9/wtrubber, @@ -236,7 +236,7 @@ /datum/supply_pack/security/armory/wt550ammo_special name = "WT-550 Semi-Auto SMG Special Ammo Crate" desc = "Contains 2 20-round Armour Piercing and Incendiary magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." - cost = 3500 + cost = 3000 contains = list(/obj/item/ammo_box/magazine/wt550m9/wtap, /obj/item/ammo_box/magazine/wt550m9/wtap, /obj/item/ammo_box/magazine/wt550m9/wtic, diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 9ae80dff..eba56379 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -12,7 +12,7 @@ /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 = 2800 + cost = 2500 contraband = TRUE contains = list(/obj/vehicle/ridden/atv, /obj/item/key, @@ -26,7 +26,7 @@ /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 = 3750 + cost = 2750 contains = list(/mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/medbot, @@ -132,7 +132,7 @@ /datum/supply_pack/emergency/metalfoam name = "Metal Foam Grenade Crate" desc = "Seal up those pesky hull breaches with 14 Metal Foam Grenades." - cost = 2000 + cost = 1500 contains = list(/obj/item/storage/box/metalfoam, /obj/item/storage/box/metalfoam) crate_name = "metal foam grenade crate" diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm index 0503b04e..792f2ee6 100644 --- a/code/modules/cargo/packs/engineering.dm +++ b/code/modules/cargo/packs/engineering.dm @@ -55,7 +55,7 @@ /datum/supply_pack/engineering/engihardsuit name = "Engineering Hardsuit" desc = "Poly 'Who stole all the hardsuits!' Well now you can get more hardsuits if needed! NOTE ONE HARDSUIT IS IN THIS CRATE, as well as one air tank and mask!" - cost = 2750 + cost = 2250 contains = list(/obj/item/tank/internals/air, /obj/item/clothing/mask/gas, /obj/item/clothing/suit/space/hardsuit/engine) @@ -84,7 +84,7 @@ /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 = 2750 //Made of pure-grade bullshittinium + cost = 2300 //Made of pure-grade bullshittinium contains = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow) @@ -132,7 +132,18 @@ /obj/item/crowbar/power) crate_name = "power tools crate" crate_type = /obj/structure/closet/crate/secure/engineering - + +/datum/supply_pack/engineering/siezedpower + name = "Seized Power Cell Crate" + desc = "We took the means of power! Contains three high-voltage plus power cells." + cost = 1300 + contraband = TRUE + contains = list(/obj/item/stock_parts/cell/high/plus, + /obj/item/stock_parts/cell/high/plus, + /obj/item/stock_parts/cell/high/plus) + crate_name = "seized 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." @@ -141,7 +152,22 @@ 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/seizedproduction + name = "The Means of Production" + desc = "We will win for we have took over the production! Contains five metal sheets, five wire, three matter bins, one manipulator and one sheet of glass." + cost = 1500 + contraband = TRUE + contains = list(/obj/item/stock_parts/cell/high/plus, + /obj/item/circuitboard/machine/autolathe, + /obj/item/stack/cable_coil/random/five, + /obj/item/stack/sheet/metal/five, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/manipulator, + /obj/item/stack/sheet/glass,) + crate_name = "seized crate" /datum/supply_pack/engineering/tools name = "Toolbox Crate" @@ -195,7 +221,6 @@ ) 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." diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index 56b69440..5db3e230 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -222,8 +222,8 @@ /datum/supply_pack/misc/paper_work name = "Freelance Paper work" - desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up. - cost = 700 // Net of 0 credits + desc = "The Kinaris Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (20) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Kinaris Standards." // Disbursement. It's not a typo, look it up. + cost = 700 // Net of 0 credits but makes (120 x 20 = 2400) contains = list(/obj/item/folder/paperwork, /obj/item/folder/paperwork, /obj/item/folder/paperwork, @@ -234,11 +234,18 @@ /obj/item/folder/paperwork, /obj/item/folder/paperwork, /obj/item/folder/paperwork, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain) + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/pen/fountain + ) crate_name = "Paperwork" /datum/supply_pack/misc/funeral @@ -254,7 +261,7 @@ /datum/supply_pack/misc/jukebox name = "Jukebox" - cost = 15000 + cost = 10000 contains = list(/obj/machinery/jukebox) crate_name = "Jukebox" diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index 59cc97f3..b16ea03d 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -50,7 +50,7 @@ /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 10 different flooring patterns." - cost = 4000 + cost = 7000 contains = list(/obj/item/stack/tile/carpet/blue/fifty, /obj/item/stack/tile/carpet/blue/fifty, /obj/item/stack/tile/carpet/cyan/fifty, From f1f89cbb50efb7e2e86b9d9c015370ed39f18e66 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 10 Sep 2019 22:06:36 -0700 Subject: [PATCH 4/8] Merge pull request #9147 from Code-Cygnet/The-Art-of-Drunken-Captaining The art of drunken captaining --- code/__DEFINES/traits.dm | 1 + .../food_and_drinks/recipes/drinks_recipes.dm | 9 ++++++- code/modules/jobs/job_types/captain.dm | 2 ++ .../chemistry/reagents/alcohol_reagents.dm | 23 ++++++++++++++++++ icons/obj/drinks.dmi | Bin 98005 -> 98374 bytes 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e65c8654..657cfdae 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -125,6 +125,7 @@ #define TRAIT_CURSED_BLOOD "cursed_blood" //Yo dawg I heard you like bloodborne references so I put a #define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking +#define TRAIT_CAPTAIN_METABOLISM "captain-metabolism" //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index e66870dc..b3a1ebac 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -885,4 +885,11 @@ name = "Hotlime Miami" id = "hotlime_miami" results = list("hotlime_miami" = 2) - required_reagents = list("ephedrine" = 1, "pina_colada" = 1) \ No newline at end of file + required_reagents = list("ephedrine" = 1, "pina_colada" = 1) + +/datum/chemical_reaction/commander_and_chief + name = "Commander and Chief" + id = "commander_and_chief" + results = list("commander_and_chief" = 50) + required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10) + mix_message = "When your powers combine, I am Captain Pl-..." diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 46af0f96..366d8fd2 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -22,6 +22,8 @@ Captain access = list() //See get_access() minimal_access = list() //See get_access() + mind_traits = list(TRAIT_CAPTAIN_METABOLISM) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) /datum/job/captain/get_access() diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 65230bd4..88ac3e2a 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2161,6 +2161,29 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_name = "Planet Cracker" glass_desc = "Although historians believe the drink was originally created to commemorate the end of an important conflict in man's past, its origins have largely been forgotten and it is today seen more as a general symbol of human supremacy." +/datum/reagent/consumable/ethanol/commander_and_chief + name = "Commander and Chief" + id = "commander_and_chief" + description = "A cocktail for the captain on the go." + color = "#ffffc9" + boozepwr = 50 + quality = DRINK_FANTASTIC + taste_description = "Tastes like...duty and responsibility?" + glass_icon_state = "commander_and_chief" + glass_name = "Commander and Chief" + glass_desc = "The gems of this majestic chalice represent the departments and their Heads." + +/datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M) + if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM)) + M.heal_bodypart_damage(2,2,2) + M.adjustBruteLoss(-3.5,0) + M.adjustOxyLoss(-3.5,0) + M.adjustFireLoss(-3.5,0) + M.adjustToxLoss(-3.5,0) + M.radiation = max(M.radiation - 25, 0) + . = 1 + return ..() + /datum/reagent/consumable/ethanol/fruit_wine name = "Fruit Wine" id = "fruit_wine" diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index c6694d3b7f7876a8ce5898caf27b88b8336265f5..d4f41764333bdc60cfc8ce6b7f78a2dc37a0b96c 100644 GIT binary patch delta 23415 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�@GhkyOHD+~E~vMzCUWm7Cs&$l?LcaiipwZ}t( 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 Date: Tue, 27 Oct 2020 13:34:12 -0300 Subject: [PATCH 5/8] better sprites --- icons/obj/drinks.dmi | Bin 98374 -> 98714 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index d4f41764333bdc60cfc8ce6b7f78a2dc37a0b96c..7d0cdbcf0f96d3d2d6bc1cd559ee1537159faa79 100644 GIT binary patch delta 42320 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 From 89aa5852c8801956011fb7964e4bfa29b0762b59 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 8 Oct 2019 00:30:54 -0700 Subject: [PATCH 6/8] Merge pull request #9226 from Trilbyspaceclone/unmodular_2 Unmodulars a few things + new sprite + new welder tank(unused --- code/modules/reagents/reagent_dispenser.dm | 140 +++++++++++++----- .../research/designs/weapon_designs.dm | 16 ++ icons/obj/objects.dmi | Bin 104501 -> 105664 bytes modular_citadel/icons/firstaid.dmi | Bin 3060 -> 3073 bytes tgstation.dme | 3 - 5 files changed, 116 insertions(+), 43 deletions(-) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index e6f9df71..17ad95ba 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -39,6 +39,10 @@ else qdel(src) +/////////////// +//Water Tanks// +/////////////// + /obj/structure/reagent_dispensers/watertank name = "water tank" desc = "A water tank." @@ -57,12 +61,52 @@ reagent_id = "firefighting_foam" tank_volume = 500 +/obj/structure/reagent_dispensers/water_cooler + name = "liquid cooler" + desc = "A machine that dispenses liquid to drink." + icon = 'icons/obj/vending.dmi' + icon_state = "water_cooler" + anchored = TRUE + tank_volume = 500 + var/paper_cups = 25 //Paper cups left from the cooler + +/obj/structure/reagent_dispensers/water_cooler/examine(mob/user) + ..() + if (paper_cups > 1) + to_chat(user, "There are [paper_cups] paper cups left.") + else if (paper_cups == 1) + to_chat(user, "There is one paper cup left.") + else + to_chat(user, "There are no paper cups left.") + +/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(!paper_cups) + to_chat(user, "There aren't any cups left!") + return + user.visible_message("[user] takes a cup from [src].", "You take a paper cup from [src].") + var/obj/item/reagent_containers/food/drinks/sillycup/S = new(get_turf(src)) + user.put_in_hands(S) + paper_cups-- + +////////////// +//Fuel Tanks// +////////////// + /obj/structure/reagent_dispensers/fueltank name = "fuel tank" desc = "A tank full of industrial welding fuel. Do not consume." icon_state = "fuel" reagent_id = "welding_fuel" +/obj/structure/reagent_dispensers/fueltank/high //Unused - Good for ghost roles + name = "high-capacity fuel tank" + desc = "A now illegal tank, full of highly pressurized industrial welding fuel. Do not consume or have a open flame close to this tank." + icon_state = "fuel_high" + tank_volume = 3000 + /obj/structure/reagent_dispensers/fueltank/boom() explosion(get_turf(src), 0, 1, 5, flame_range = 5) qdel(src) @@ -117,6 +161,9 @@ return return ..() +/////////////////// +//Misc Dispenders// +/////////////////// /obj/structure/reagent_dispensers/peppertank name = "pepper spray refiller" @@ -131,36 +178,24 @@ if(prob(1)) desc = "IT'S PEPPER TIME, BITCH!" - -/obj/structure/reagent_dispensers/water_cooler - name = "liquid cooler" - desc = "A machine that dispenses liquid to drink." - icon = 'icons/obj/vending.dmi' - icon_state = "water_cooler" +/obj/structure/reagent_dispensers/virusfood + name = "virus food dispenser" + desc = "A dispenser of low-potency virus mutagenic." + icon_state = "virus_food" anchored = TRUE - tank_volume = 500 - var/paper_cups = 25 //Paper cups left from the cooler + density = FALSE + reagent_id = "virusfood" -/obj/structure/reagent_dispensers/water_cooler/examine(mob/user) - . = ..() - if (paper_cups > 1) - . += "There are [paper_cups] paper cups left." - else if (paper_cups == 1) - . += "There is one paper cup left." - else - . += "There are no paper cups left." +/obj/structure/reagent_dispensers/cooking_oil + name = "vat of cooking oil" + desc = "A huge metal vat with a tap on the front. Filled with cooking oil for use in frying food." + icon_state = "vat" + anchored = TRUE + reagent_id = "cooking_oil" -/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!paper_cups) - to_chat(user, "There aren't any cups left!") - return - user.visible_message("[user] takes a cup from [src].", "You take a paper cup from [src].") - var/obj/item/reagent_containers/food/drinks/sillycup/S = new(get_turf(src)) - user.put_in_hands(S) - paper_cups-- +//////// +//Kegs// +//////// /obj/structure/reagent_dispensers/beerkeg name = "beer keg" @@ -173,19 +208,44 @@ if(!QDELETED(src)) qdel(src) +/obj/structure/reagent_dispensers/keg + name = "keg" + desc = "A keg." + icon = 'modular_citadel/icons/obj/objects.dmi' + icon_state = "keg" + reagent_id = "water" -/obj/structure/reagent_dispensers/virusfood - name = "virus food dispenser" - desc = "A dispenser of low-potency virus mutagenic." - icon_state = "virus_food" - anchored = TRUE - density = FALSE - reagent_id = "virusfood" +/obj/structure/reagent_dispensers/keg/mead + name = "keg of mead" + desc = "A keg of mead." + icon_state = "orangekeg" + reagent_id = "mead" +/obj/structure/reagent_dispensers/keg/aphro + name = "keg of aphrodisiac" + desc = "A keg of aphrodisiac." + icon_state = "pinkkeg" + reagent_id = "aphro" -/obj/structure/reagent_dispensers/cooking_oil - name = "vat of cooking oil" - desc = "A huge metal vat with a tap on the front. Filled with cooking oil for use in frying food." - icon_state = "vat" - anchored = TRUE - reagent_id = "cooking_oil" +/obj/structure/reagent_dispensers/keg/aphro/strong + name = "keg of strong aphrodisiac" + desc = "A keg of strong and addictive aphrodisiac." + reagent_id = "aphro+" + +/obj/structure/reagent_dispensers/keg/milk + name = "keg of milk" + desc = "It's not quite what you were hoping for." + icon_state = "whitekeg" + reagent_id = "milk" + +/obj/structure/reagent_dispensers/keg/semen + name = "keg of semen" + desc = "Dear lord, where did this even come from?" + icon_state = "whitekeg" + reagent_id = "semen" + +/obj/structure/reagent_dispensers/keg/gargle + name = "keg of pan galactic gargleblaster" + desc = "A keg of... wow that's a long name." + icon_state = "bluekeg" + reagent_id = "gargleblaster" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 7dd85ea1..02fd6c5f 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -77,6 +77,22 @@ build_path = /obj/item/ammo_box/magazine/wt550m9/wtic departmental_flags = DEPARTMENTAL_FLAG_SECURITY +/datum/design/mag_oldsmg/tx_mag + name = "WT-550 Semi-Auto SMG Uranium Magazine (4.6x30mm TX)" + desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Semi-Auto SMG." + id = "mag_oldsmg_tx" + materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000) + build_path = /obj/item/ammo_box/magazine/wt550m9/wttx + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_oldsmg/rubber_mag + name = "WT-550 Semi-Auto SMG rubberbullets Magazine (4.6x30mm rubber)" + desc = "A 20 round rubber shots magazine for the out of date security WT-550 Semi-Auto SMG" + id = "mag_oldsmg_rubber" + materials = list(MAT_METAL = 6000) + build_path = /obj/item/ammo_box/magazine/wt550m9/wtrubber + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + ////////////// //Ammo Shells/ ////////////// diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index e7fdd874a3e3d16c5b7ea56c7817bb903a180cc2..834785eebf1796ba1d78bc2e6447232259ae07ac 100644 GIT binary patch delta 13589 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 delta 12419 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 J3VF+r{{f6i^f>?k diff --git a/modular_citadel/icons/firstaid.dmi b/modular_citadel/icons/firstaid.dmi index e7ac37822268e1aeaa5ddb80fca59c8b0697f56e..d061adf9f272da2efab101d65b10d6052e073d96 100644 GIT binary patch delta 2611 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 delta 2598 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 diff --git a/tgstation.dme b/tgstation.dme index 7988c73a..8af24b4d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3209,16 +3209,13 @@ #include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm" #include "modular_citadel\code\modules\reagents\objects\clothes.dm" #include "modular_citadel\code\modules\reagents\objects\items.dm" -#include "modular_citadel\code\modules\reagents\reagent container\cit_kegs.dm" #include "modular_citadel\code\modules\reagents\reagent container\hypospraymkii.dm" #include "modular_citadel\code\modules\reagents\reagent container\hypovial.dm" #include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm" #include "modular_citadel\code\modules\recycling\disposal\bin.dm" #include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm" #include "modular_citadel\code\modules\research\designs\machine_designs.dm" -#include "modular_citadel\code\modules\research\designs\weapon_designs.dm" #include "modular_citadel\code\modules\research\designs\xenobio_designs.dm" -#include "modular_citadel\code\modules\research\designs\weapon_designs\weapon_designs.dm" #include "modular_citadel\code\modules\research\techweb\_techweb.dm" #include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm" #include "modular_citadel\code\modules\vehicles\secway.dm" From 45f7b020c44f553d22ebb4fb605e6191d04e3038 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 14 Nov 2019 16:00:45 -0700 Subject: [PATCH 7/8] Merge pull request #9628 from Trilbyspaceclone/Cargo_MKII [Ready] [Testmerge] MK II Cargo Rework - Sell harder edition --- code/__DEFINES/machines.dm | 3 +- .../circuitboards/machine_circuitboards.dm | 9 + .../items/stacks/sheets/sheet_types.dm | 50 ++- code/modules/cargo/console.dm | 6 +- code/modules/cargo/export_scanner.dm | 4 +- code/modules/cargo/exports.dm | 12 +- code/modules/cargo/exports/food_wine.dm | 181 ++++++++++ code/modules/cargo/exports/gear.dm | 1 + code/modules/cargo/exports/large_objects.dm | 25 +- code/modules/cargo/exports/materials.dm | 1 - code/modules/cargo/exports/organs_robotics.dm | 53 ++- code/modules/cargo/exports/parts.dm | 9 +- code/modules/cargo/exports/sheets.dm | 13 +- code/modules/cargo/exports/tools.dm | 6 +- code/modules/cargo/exports/weapons.dm | 14 +- code/modules/cargo/packs/livestock.dm | 17 +- code/modules/cargo/packs/materials.dm | 38 ++ code/modules/cargo/packs/organic.dm | 152 +++++--- code/modules/food_and_drinks/autobottler.dm | 18 + .../food_and_drinks/drinks/drinks/bottle.dm | 192 ++++++++++ code/modules/hydroponics/fermenting_barrel.dm | 7 - code/modules/reagents/chemistry/reagents.dm | 2 +- .../chemistry/reagents/alcohol_reagents.dm | 141 +++++++- .../chemistry/reagents/drink_reagents.dm | 1 + .../chemistry/reagents/drug_reagents.dm | 1 + .../chemistry/reagents/food_reagents.dm | 20 ++ .../chemistry/reagents/medicine_reagents.dm | 10 + .../chemistry/reagents/other_reagents.dm | 1 + .../reagents/pyrotechnic_reagents.dm | 5 + code/modules/reagents/reagent_dispenser.dm | 3 + .../research/designs/autobotter_designs.dm | 335 ++++++++++++++++++ code/modules/research/techweb/_techweb.dm | 4 + code/modules/research/techweb/all_nodes.dm | 23 +- code/modules/shuttle/supply.dm | 8 + icons/mob/screen_gen.dmi | Bin 116171 -> 116168 bytes icons/obj/drinks.dmi | Bin 98714 -> 99957 bytes icons/obj/stack_objects.dmi | Bin 42093 -> 42304 bytes .../chemistry/reagents/fermi_reagents.dm | 2 + tgstation.dme | 3 + 39 files changed, 1253 insertions(+), 117 deletions(-) create mode 100644 code/modules/cargo/exports/food_wine.dm create mode 100644 code/modules/food_and_drinks/autobottler.dm create mode 100644 code/modules/research/designs/autobotter_designs.dm diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index ec719794..d0eb6640 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -30,7 +30,8 @@ #define LIMBGROWER (1<<6) //Uses synthetic flesh #define SMELTER (1<<7) //uses various minerals #define AUTOYLATHE (1<<8) // CITADEL ADD -#define NANITE_COMPILER (1<<9) //Prints nanite disks +#define NANITE_COMPILER (1<<9) //Prints nanite disks +#define AUTOBOTTLER (1<<10) //Uses booze, for printing //Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable. //Modular computer/NTNet defines diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 04243ae7..9e67633e 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1012,3 +1012,12 @@ name = "Ore Silo (Machine Board)" build_path = /obj/machinery/ore_silo req_components = list() + +/obj/item/circuitboard/machine/autobottler + name = "Auto-Bottler (Machine Board)" + build_path = /obj/machinery/rnd/production/protolathe/department/autobottler //Manips make you print things cheaper, even chems + req_components = list(/obj/item/stock_parts/matter_bin = 5, + /obj/item/stack/sheet/glass = 2, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stack/cable_coil = 5, + /obj/item/reagent_containers/glass/beaker = 6) //So it can hold lots of chems \ No newline at end of file diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index e6715768..7c98cb6c 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -10,6 +10,7 @@ * Runed Metal (cult) * Brass (clockwork cult) * Bronze (bake brass) + * Cotton/Duracotton */ /* @@ -188,32 +189,38 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ */ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ + new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2), \ new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \ new/datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 10), \ + null, \ new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40), \ new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 30), \ + new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40), \ + new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15),\ + null, \ new/datum/stack_recipe("wooden chair", /obj/structure/chair/wood/, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("winged wooden chair", /obj/structure/chair/wood/wings, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("plywood chair", /obj/structure/chair/comfy/plywood, 4, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("rustic wooden door", /obj/structure/mineral_door/woodrustic, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new/datum/stack_recipe("wooden barrel", /obj/structure/fermenting_barrel, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE),\ new/datum/stack_recipe("coffin", /obj/structure/closet/crate/coffin, 5, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("dresser", /obj/structure/dresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 10),\ - new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("loom", /obj/structure/loom, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40), \ - new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\ - new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2), \ - new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),\ - new/datum/stack_recipe("cross", /obj/structure/kitchenspike/cross, 10, time = 10),\ new/datum/stack_recipe("ore box", /obj/structure/ore_box, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),\ new/datum/stack_recipe("wooden crate", /obj/structure/closet/crate/wooden, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\ - new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15),\ + new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("loom", /obj/structure/loom, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\ + null, \ + new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 10),\ + new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),\ + new/datum/stack_recipe("cross", /obj/structure/kitchenspike/cross, 10, time = 10),\ )) /obj/item/stack/sheet/mineral/wood @@ -303,6 +310,9 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ resistance_flags = FLAMMABLE force = 0 throwforce = 0 + pull_effort = 90 + is_fabric = TRUE + loom_result = /obj/item/stack/sheet/silk merge_type = /obj/item/stack/sheet/cloth /obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE) @@ -312,6 +322,22 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ /obj/item/stack/sheet/cloth/ten amount = 10 +/obj/item/stack/sheet/cloth/thirty + amount = 30 + +/obj/item/stack/sheet/silk + name = "silk" + desc = "A long soft material. This one is just made out of cotton rather then any spiders or wyrms" + singular_name = "silk sheet" + icon_state = "sheet-silk" + item_state = "sheet-cloth" + novariants = TRUE + merge_type = /obj/item/stack/sheet/silk + +//obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE) +// recipes = GLOB.silk_recipes +// return ..() + //Durathread fuck slash-asterisk comments GLOBAL_LIST_INIT(durathread_recipes, list ( \ new/datum/stack_recipe("durathread jumpsuit", /obj/item/clothing/under/durathread, 4, time = 40), @@ -681,6 +707,12 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra pull_effort = 30 loom_result = /obj/item/stack/sheet/cloth +/obj/item/stack/sheet/cotton/ten + amount = 10 + +/obj/item/stack/sheet/cotton/thirty + amount = 30 + /obj/item/stack/sheet/cotton/durathread name = "raw durathread bundle" desc = "A bundle of raw durathread ready to be spun on the loom." diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index f80334f1..1ad0d569 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -29,11 +29,11 @@ obj_flags &= ~EMAGGED /obj/machinery/computer/cargo/proc/get_export_categories() - var/cat = EXPORT_CARGO + . = EXPORT_CARGO if(contraband) - cat |= EXPORT_CONTRABAND + . |= EXPORT_CONTRABAND if(obj_flags & EMAGGED) - cat |= EXPORT_EMAG + . |= EXPORT_EMAG /obj/machinery/computer/cargo/emag_act(mob/user) if(obj_flags & EMAGGED) diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index 06173335..9c523c19 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -1,6 +1,6 @@ /obj/item/export_scanner name = "export scanner" - desc = "A device used to check objects against Nanotrasen exports and bounty database." + desc = "A device used to check objects against Nanotrasen exports and bounty database. Sadly can not scan reagents vaule." icon = 'icons/obj/device.dmi' icon_state = "export_scanner" item_state = "radio" @@ -31,7 +31,7 @@ else // Before you fix it: // yes, checking manifests is a part of intended functionality. - + var/datum/export_report/ex = export_item_and_contents(O, cargo_console.get_export_categories(), dry_run=TRUE) var/price = 0 for(var/x in ex.total_amount) diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index 9a99f201..51c48640 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -21,9 +21,10 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they // Simple holder datum to pass export results around /datum/export_report - var/list/exported_atoms = list() //names of atoms sold/deleted by export - var/list/total_amount = list() //export instance => total count of sold objects of its type, only exists if any were sold - var/list/total_value = list() //export instance => total value of sold objects + var/list/exported_atoms = list()//names of atoms sold/deleted by export + var/list/total_amount = list() //export instance => total count of sold objects of its type, only exists if any were sold + var/list/total_value = list() //export instance => total value of sold objects + var/list/total_reagents = list()//export reagents => into the total vaule of the object sold // external_report works as "transaction" object, pass same one in if you're doing more than one export in single go /proc/export_item_and_contents(atom/movable/AM, allowed_categories = EXPORT_CARGO, apply_elastic = TRUE, delete_unsold = TRUE, dry_run=FALSE, datum/export_report/external_report) @@ -47,6 +48,9 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they sold = E.sell_object(thing, report, dry_run, allowed_categories , apply_elastic) report.exported_atoms += " [thing.name]" break + if(thing.reagents) + for(var/datum/reagent/R in thing.reagents.reagent_list) + report.total_reagents[R] += R.volume if(!dry_run && (sold || delete_unsold)) if(ismob(thing)) thing.investigate_log("deleted through cargo export",INVESTIGATE_CARGO) @@ -58,7 +62,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they var/unit_name = "" // Unit name. Only used in "Received [total_amount] [name]s [message]." message var/message = "" var/cost = 100 // Cost of item, in cargo credits. Must not alow for infinite price dupes, see above. - var/k_elasticity = 1/20 //coefficient used in marginal price calculation that roughly corresponds to the inverse of price elasticity, or "quantity elasticity" - CIT EDIT 30 - > 20 + var/k_elasticity = 1/300 //coefficient used in marginal price calculation that roughly corresponds to the inverse of price elasticity, or "quantity elasticity" - CIT EDIT 1/30 - > 0 var/list/export_types = list() // Type of the exported object. If none, the export datum is considered base type. var/include_subtypes = TRUE // Set to FALSE to make the datum apply only to a strict type. var/list/exclude_types = list() // Types excluded from export diff --git a/code/modules/cargo/exports/food_wine.dm b/code/modules/cargo/exports/food_wine.dm new file mode 100644 index 00000000..851c3660 --- /dev/null +++ b/code/modules/cargo/exports/food_wine.dm @@ -0,0 +1,181 @@ +/datum/export/food + k_elasticity = 0 + include_subtypes = TRUE + +/datum/export/booze //Like the kind you bottle! + k_elasticity = 0 + unit_name = "brand unit of booze" + include_subtypes = TRUE + +/datum/export/food/meat + cost = 5 + unit_name = "protein based food" + export_types = list(/obj/item/reagent_containers/food/snacks/meat/slab) + +/datum/export/food/raw_cutlets + cost = 3 + unit_name = "protein based food" + export_types = list(/obj/item/reagent_containers/food/snacks/meat/rawcutlet) + +/datum/export/food/cooked_cutlets + cost = 4 + unit_name = "cooked protein based food" + export_types = list(/obj/item/reagent_containers/food/snacks/meat/cutlet) + +/datum/export/food/cooked_meat + cost = 8 + unit_name = "cooked protein based food" + export_types = list(/obj/item/reagent_containers/food/snacks/meat/steak) + +/datum/export/food/dough + cost = 3 + unit_name = "uncooked food base" + export_types = list(/obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/flatdough) + +/datum/export/food/cooked_dough + cost = 5 + unit_name = "cooked food base" + export_types = list(/obj/item/reagent_containers/food/snacks/pizzabread) + +/datum/export/food/buns + cost = 3 + unit_name = "cooked food base" + export_types = list(/obj/item/reagent_containers/food/snacks/bun) + +/datum/export/food/buns + cost = 3 + unit_name = "cooked food base" + export_types = list(/obj/item/reagent_containers/food/snacks/bun) + +/datum/export/food/eggs + cost = 4 + unit_name = "cooked food base" + export_types = list(/obj/item/reagent_containers/food/snacks/friedegg) + +/datum/export/food/eggs_food + cost = 20 + unit_name = "cooked egg based food" + export_types = list(/obj/item/reagent_containers/food/snacks/omelette, /obj/item/reagent_containers/food/snacks/benedict, /obj/item/reagent_containers/food/snacks/salad/eggbowl) + +/datum/export/food/sweets + cost = 4 + unit_name = "pastery base" + export_types = list(/obj/item/reagent_containers/food/snacks/rawpastrybase, /obj/item/reagent_containers/food/snacks/pastrybase) + +/datum/export/food/cake_pie_raw + cost = 12 + unit_name = "uncooked food base" + export_types = list(/obj/item/reagent_containers/food/snacks/cakebatter, /obj/item/reagent_containers/food/snacks/piedough) + +/datum/export/food/cooked_cake_pie + cost = 15 + unit_name = "cooked food base" + export_types = list(/obj/item/reagent_containers/food/snacks/store/cake/plain, /obj/item/reagent_containers/food/snacks/pie/plain) + +/datum/export/food/glassbottle + cost = 10 + unit_name = "glass bottle" + export_types = list(/obj/item/reagent_containers/food/drinks/bottle) + +/datum/export/food/produce + cost = 3 + unit_name = "produce" + export_types = list(/obj/item/reagent_containers/food/snacks/grown) + exclude_types = list(/obj/item/grown/log) + +/datum/export/food/egg + cost = 2 + unit_name = "egg" + export_types = list(/obj/item/reagent_containers/food/snacks/egg) + +/datum/export/food/soup + cost = 30 + unit_name = "bowl of soup" + export_types = list(/obj/item/reagent_containers/food/snacks/soup) + +/datum/export/food/bread + cost = 20 + unit_name = "load of bread" + export_types = list(/obj/item/reagent_containers/food/snacks/store/bread) + +/datum/export/food/bread_slice + cost = 4 + unit_name = "slice of bread" + export_types = list(/obj/item/reagent_containers/food/snacks/breadslice) + +/datum/export/food/burger + cost = 12 + unit_name = "burger" + export_types = list(/obj/item/reagent_containers/food/snacks/burger) + +/datum/export/food/cake + cost = 50 + unit_name = "cake" + export_types = list(/obj/item/reagent_containers/food/snacks/store/cake) + +/datum/export/food/cake_slice + cost = 10 + unit_name = "cake slice" + export_types = list(/obj/item/reagent_containers/food/snacks/cakeslice) + +/datum/export/food/cheese_wheel + cost = 70 + unit_name = "cheese wheel" + export_types = list(/obj/item/reagent_containers/food/snacks/store/cheesewheel) + +/datum/export/food/cheese_wheel + cost = 20 + unit_name = "cheese wedge" + export_types = list(/obj/item/reagent_containers/food/snacks/cheesewedge) + +/datum/export/food/candy + cost = 5 + unit_name = "candy" //Not anything from the vender + export_types = list(/obj/item/reagent_containers/food/snacks/candy_corn, /obj/item/reagent_containers/food/snacks/chocolatebar, /obj/item/reagent_containers/food/snacks/candiedapple, /obj/item/reagent_containers/food/snacks/spiderlollipop, \ + /obj/item/reagent_containers/food/snacks/chococoin, /obj/item/reagent_containers/food/snacks/fudgedice, /obj/item/reagent_containers/food/snacks/chocoorange, /obj/item/reagent_containers/food/snacks/lollipop, \ + /obj/item/reagent_containers/food/snacks/gumball, /obj/item/reagent_containers/food/snacks/tinychocolate) + +/datum/export/food/pastery + cost = 30 + unit_name = "baked goods" + export_types = list(/obj/item/reagent_containers/food/snacks/donut, /obj/item/reagent_containers/food/snacks/muffin, /obj/item/reagent_containers/food/snacks/waffles, /obj/item/reagent_containers/food/snacks/plumphelmetbiscuit, \ + /obj/item/reagent_containers/food/snacks/chococornet, /obj/item/reagent_containers/food/snacks/cherrycupcake, /obj/item/reagent_containers/food/snacks/bluecherrycupcake, /obj/item/reagent_containers/food/snacks/honeybun, /obj/item/reagent_containers/food/snacks/pancakes) + +/datum/export/food/pasta + cost = 20 + unit_name = "pasta based meal" + export_types = list(/obj/item/reagent_containers/food/snacks/spaghetti, /obj/item/reagent_containers/food/snacks/boiledspaghetti, /obj/item/reagent_containers/food/snacks/pastatomato, /obj/item/reagent_containers/food/snacks/copypasta, \ + /obj/item/reagent_containers/food/snacks/meatballspaghetti, /obj/item/reagent_containers/food/snacks/spesslaw, /obj/item/reagent_containers/food/snacks/chowmein, /obj/item/reagent_containers/food/snacks/beefnoodle, /obj/item/reagent_containers/food/snacks/butternoodles) + +/datum/export/food/pizza + cost = 120 + unit_name = "pizza" + export_types = list(/obj/item/reagent_containers/food/snacks/pizza) + +/datum/export/food/sliced_pizza + cost = 12 + unit_name = "pizza slice" + export_types = list(/obj/item/reagent_containers/food/snacks/pizzaslice) + +/datum/export/food/snowcone + cost = 3 + unit_name = "snowcone" + export_types = list(/obj/item/reagent_containers/food/snacks/snowcones) + +/datum/export/booze/brands + cost = 200 + unit_name = "export bottle" + export_types = list(/obj/item/export/bottle/kahlua, /obj/item/export/bottle/whiskey, /obj/item/export/bottle/vodka, /obj/item/export/bottle/gin, \ + /obj/item/export/bottle/rum, /obj/item/export/bottle/tequila, /obj/item/export/bottle/vermouth, /obj/item/export/bottle/wine, /obj/item/export/bottle/grappa, /obj/item/export/bottle/cognac, \ + /obj/item/export/bottle/absinthe, /obj/item/export/bottle/goldschlager, /obj/item/export/bottle/patron, /obj/item/export/bottle/sake, /obj/item/export/bottle/hcider, /obj/item/export/bottle/champagne, \ + /obj/item/export/bottle/applejack, /obj/item/export/bottle/trappist, /obj/item/export/bottle/blazaam, /obj/item/export/bottle/grenadine, /obj/item/export/bottle/fernet) + +/datum/export/booze/bottled + cost = 400 + unit_name = "exotic brews" + export_types = list(/obj/item/export/bottle/blooddrop, /obj/item/export/bottle/slim_gold, /obj/item/export/bottle/white_bloodmoon, /obj/item/export/bottle/greenroad) + +/datum/export/booze/bottledkeg + cost = 250 + unit_name = "exotic brews" + export_types = list(/obj/item/export/bottle/minikeg) //Its just beer diff --git a/code/modules/cargo/exports/gear.dm b/code/modules/cargo/exports/gear.dm index ee273935..0632f157 100644 --- a/code/modules/cargo/exports/gear.dm +++ b/code/modules/cargo/exports/gear.dm @@ -793,6 +793,7 @@ datum/export/gear/glasses //glasses are not worth selling ////////////////////// /datum/export/gear/chameleon //Selling a full kit is easy money for 2 tc cost = 280 + k_elasticity = 0 unit_name = "chameleon item" export_types = list(/obj/item/clothing/head/chameleon, /obj/item/clothing/mask/chameleon, /obj/item/clothing/under/chameleon, /obj/item/clothing/suit/chameleon, /obj/item/clothing/glasses/chameleon,\ /obj/item/clothing/gloves/chameleon, /obj/item/clothing/head/chameleon, /obj/item/clothing/shoes/chameleon, /obj/item/storage/backpack/chameleon, \ diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 88ff5f47..5feb54e0 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -24,11 +24,16 @@ export_types = list(/obj/structure/ore_box) /datum/export/large/crate/wood - cost = 140 + cost = 140 // unit_name = "wooden crate" export_types = list(/obj/structure/closet/crate/wooden) exclude_types = list() +/datum/export/large/barrel + cost = 500 //150 to make meaning proffit of 350 + unit_name = "wooden barrel" + export_types = list(/obj/structure/fermenting_barrel) + /datum/export/large/crate/coffin cost = 150 unit_name = "coffin" @@ -282,17 +287,17 @@ include_subtypes = FALSE /datum/export/large/mech/odysseus - cost = 5500 + cost = 7500 unit_name = "working odysseus" export_types = list(/obj/mecha/medical/odysseus) /datum/export/large/mech/ripley - cost = 6500 + cost = 12000 unit_name = "working ripley" export_types = list(/obj/mecha/working/ripley) /datum/export/large/mech/firefighter - cost = 9000 + cost = 14000 unit_name = "working firefighter" export_types = list(/obj/mecha/working/ripley/firefighter) @@ -302,12 +307,12 @@ export_types = list(/obj/mecha/combat/gygax) /datum/export/large/mech/durand - cost = 10000 + cost = 16000 unit_name = "working durand" export_types = list(/obj/mecha/combat/durand) /datum/export/large/mech/phazon - cost = 25000 //Little over half do to needing a core + cost = 35000 //Little over half do to needing a core unit_name = "working phazon" export_types = list(/obj/mecha/combat/phazon) @@ -317,7 +322,7 @@ export_types = list(/obj/mecha/combat/marauder) /datum/export/large/mech/deathripley - cost = 8500 //Still a "Combat class" mech - Illegal tech as well! 165% "normal" boundy price. + cost = 18500 //Still a "Combat class" mech - Illegal tech as well! 165% "normal" boundy price. unit_name = "working illegally modified" export_types = list(/obj/mecha/working/ripley/deathripley) @@ -332,12 +337,12 @@ export_types = list(/obj/mecha/working/ripley/mining) /datum/export/large/mech/honk - cost = 12000 //Still a "Combat class" mech - Comats bordem honk! + cost = 16000 //Still a "Combat class" mech - Comats bordem honk! unit_name = "working honker" export_types = list(/obj/mecha/combat/honker) /datum/export/large/mech/reticence - cost = 12000 //Still a "Combat class" mech - Has cloking and lethal weaponds. + cost = 16000 //Still a "Combat class" mech - Has cloking and lethal weaponds. unit_name = "working reticence" export_types = list(/obj/mecha/combat/reticence) @@ -347,6 +352,6 @@ export_types = list(/obj/mecha/combat/marauder/seraph) /datum/export/large/mech/mauler - cost = 12000 //Still a Combat class mech - CC lethal weaponds. + cost = 25000 //Still a Combat class mech - CC lethal weaponds. unit_name = "working legally modified marauder" export_types = list(/obj/mecha/combat/marauder/mauler) diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index cd11660e..d8fc5f22 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -42,7 +42,6 @@ /datum/export/material/plasma cost = 100 - k_elasticity = 0 material_id = MAT_PLASMA message = "cm3 of plasma" diff --git a/code/modules/cargo/exports/organs_robotics.dm b/code/modules/cargo/exports/organs_robotics.dm index 924d27c1..7a77568c 100644 --- a/code/modules/cargo/exports/organs_robotics.dm +++ b/code/modules/cargo/exports/organs_robotics.dm @@ -8,7 +8,7 @@ include_subtypes = FALSE k_elasticity = 0 //ALWAYS worth selling upgrades -/datum/export/orgains +/datum/export/organs include_subtypes = TRUE k_elasticity = 0 //ALWAYS worth selling orgains @@ -36,6 +36,7 @@ /datum/export/implant/breathtube cost = 150 + k_elasticity = 300/20 //Large before depleating unit_name = "breath implant" export_types = list(/obj/item/organ/cyberimp/mouth/breathing_tube) @@ -110,7 +111,18 @@ export_types = list(/obj/item/organ/liver) exclude_types = list(/obj/item/organ/liver/cybernetic, /obj/item/organ/liver/cybernetic/upgraded) -/datum/export/orgains/tail //Shhh +/datum/export/organs/cybernetic + cost = 225 + unit_name = "cybernetic organ" + export_types = list(/obj/item/organ/liver/cybernetic, /obj/item/organ/lungs/cybernetic, /obj/item/organ/eyes/robotic, /obj/item/organ/heart/cybernetic) + exclude_types = list(/obj/item/organ/lungs/cybernetic/upgraded, /obj/item/organ/liver/cybernetic/upgraded) + +/datum/export/organs/upgraded + cost = 275 + unit_name = "upgraded cybernetic organ" + export_types = list(/obj/item/organ/lungs/cybernetic/upgraded, /obj/item/organ/liver/cybernetic/upgraded) + +/datum/export/organs/tail //Shhh cost = 500 unit_name = "error shipment failer" export_types = list(/obj/item/organ/tail) @@ -136,6 +148,41 @@ export_types = list(/obj/item/bodypart/l_arm/robot/surplus_upgraded, /obj/item/bodypart/r_arm/robot/surplus_upgraded, /obj/item/bodypart/l_leg/robot/surplus_upgraded, /obj/item/bodypart/r_leg/robot/surplus_upgraded) /datum/export/robotics/surgery_gear_basic - cost = 5 + cost = 10 unit_name = "surgery tool" export_types = list(/obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw, /obj/item/surgical_drapes) + +/datum/export/robotics/mech_weapon_laser + cost = 300 //Sadly just metal and glass + unit_name = "mech laser based weapon" + include_subtypes = TRUE + export_types = list(/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam, /obj/item/mecha_parts/mecha_equipment/weapon/energy) + +/datum/export/robotics/mech_weapon_bullet + cost = 250 + unit_name = "mech bullet based weapon" + include_subtypes = TRUE + export_types = list(/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun, /obj/item/mecha_parts/mecha_equipment/weapon/honker, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic) + +/datum/export/robotics/mech_tools + cost = 150 + unit_name = "mech based tool" + include_subtypes = TRUE + export_types = list(/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp, /obj/item/mecha_parts/mecha_equipment/extinguisher, /obj/item/mecha_parts/mecha_equipment/rcd, /obj/item/mecha_parts/mecha_equipment/cable_layer, \ + /obj/item/mecha_parts/mecha_equipment/drill, /obj/item/mecha_parts/mecha_equipment/mining_scanner, /obj/item/mecha_parts/mecha_equipment/medical/sleeper) + +/datum/export/robotics/mech_blue_space + cost = 750 + k_elasticity = 1/10 + unit_name = "mech bluespace tech" + export_types = list(/obj/item/mecha_parts/mecha_equipment/teleporter, /obj/item/mecha_parts/mecha_equipment/wormhole_generator, /obj/item/mecha_parts/mecha_equipment/gravcatapult) + +/datum/export/robotics/mech_reactors + cost = 350 + unit_name = "mech based reactor" + export_types = list(/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay, /obj/item/mecha_parts/mecha_equipment/generator, /obj/item/mecha_parts/mecha_equipment/generator/nuclear) + +/datum/export/robotics/mech_armor + cost = 350 + unit_name = "mech armor tech" + export_types = list(/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster, /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster, /obj/item/mecha_parts/mecha_equipment/repair_droid) diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm index 335dbadf..2f881e2c 100644 --- a/code/modules/cargo/exports/parts.dm +++ b/code/modules/cargo/exports/parts.dm @@ -6,14 +6,15 @@ export_types = list(/obj/item/solar_assembly) /datum/export/solar/tracker_board - cost = 30 + cost = 10 unit_name = "solar tracker board" export_types = list(/obj/item/electronics/tracker) /datum/export/solar/control_board - cost = 75 + cost = 15 unit_name = "solar panel control board" export_types = list(/obj/item/circuitboard/computer/solar_control) + include_subtypes = FALSE /datum/export/swarmer cost = 500 @@ -30,9 +31,9 @@ /datum/export/board/SMES cost = 20 - k_elasticity = 1/2 //Only a few unit_name = "smes board" export_types = list(/obj/item/circuitboard/machine/smes) + include_subtypes = FALSE //Stock Parts @@ -70,7 +71,7 @@ export_types = list(/obj/item/stock_parts/cell) include_subtypes = TRUE -/datum/export/cell +/datum/export/cellupgraded cost = 10 unit_name = "upgraded power cell" export_types = list(/obj/item/stock_parts/cell/upgraded, /obj/item/stock_parts/cell/upgraded/plus) diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index 1072a38f..e0179b80 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -83,6 +83,11 @@ unit_name = "wood plank" export_types = list(/obj/item/stack/sheet/mineral/wood) +/datum/export/stack/log + cost = 10 + unit_name = "raw wood" + export_types = list(/obj/item/grown/log) + /datum/export/stack/cardboard cost = 2 message = "of cardboard" @@ -100,11 +105,17 @@ export_types = list(/obj/item/stack/cable_coil) /datum/export/stack/cloth - cost = 10 + cost = 20 unit_name = "sheets" message = "of cloth" export_types = list(/obj/item/stack/sheet/cloth) +/datum/export/stack/silk + cost = 200 //The new plasma + unit_name = "sheets" + message = "of silk" + export_types = list(/obj/item/stack/sheet/silk) + /datum/export/stack/duracloth cost = 40 unit_name = "sheets" diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index 9e920006..2a0cb0f3 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -12,7 +12,7 @@ /datum/export/gear/powerdrill cost = 25 - k_elasticity = 1/40 //Market can only take so much + k_elasticity = 1/80 //Market can only take so much unit_name = "power tool" export_types = list(/obj/item/crowbar/power, /obj/item/screwdriver/power, \ /obj/item/weldingtool/experimental, /obj/item/wirecutters/power, /obj/item/wrench/power) @@ -65,13 +65,13 @@ // Basic tools /datum/export/basicmining - cost = 20 + cost = 30 unit_name = "basic mining tool" export_types = list(/obj/item/pickaxe, /obj/item/pickaxe/mini, /obj/item/shovel, /obj/item/resonator) include_subtypes = FALSE /datum/export/upgradedmining - cost = 50 + cost = 80 unit_name = "mining tool" export_types = list(/obj/item/pickaxe/silver, /obj/item/pickaxe/drill, /obj/item/gun/energy/plasmacutter, /obj/item/resonator/upgraded) include_subtypes = FALSE diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index 34c7ff36..3192f784 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -125,7 +125,7 @@ /datum/export/weapon/temp_gun cost = 175 //Its just smaller unit_name = "small temperature gun" - k_elasticity = 1/5 //Its just a smaller temperature gun, easy to mass make + k_elasticity = 1/30 //Its just a smaller temperature gun, easy to mass make export_types = list(/obj/item/gun/energy/temperature) /datum/export/weapon/flowergun @@ -140,7 +140,7 @@ /datum/export/weapon/ioncarbine cost = 200 - k_elasticity = 1/5 //Its just a smaller temperature gun, easy to mass make + k_elasticity = 1/30 //Its just a smaller temperature gun, easy to mass make unit_name = "ion carbine" export_types = list(/obj/item/gun/energy/ionrifle/carbine) @@ -174,12 +174,12 @@ ///////////////// /datum/export/weapon/wtammo - cost = 10 + cost = 15 unit_name = "WT-550 automatic rifle ammo" export_types = list(/obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9/wtrubber) /datum/export/weapon/wtammo/advanced - cost = 30 + cost = 45 unit_name = "advanced WT-550 automatic rifle ammo" export_types = list( /obj/item/ammo_box/magazine/wt550m9/wtap, /obj/item/ammo_box/magazine/wt550m9/wttx, /obj/item/ammo_box/magazine/wt550m9/wtic) @@ -194,7 +194,7 @@ export_types = list(/obj/item/firing_pin/test_range) /datum/export/weapon/techslug - cost = 15 + cost = 25 k_elasticity = 0 unit_name = "advanced shotgun shell" export_types = list(/obj/item/ammo_casing/shotgun/dragonsbreath, /obj/item/ammo_casing/shotgun/meteorslug, /obj/item/ammo_casing/shotgun/pulseslug, /obj/item/ammo_casing/shotgun/frag12, /obj/item/ammo_casing/shotgun/ion, /obj/item/ammo_casing/shotgun/laserslug) @@ -344,13 +344,13 @@ export_types = list(/obj/item/storage/toolbox/gold_real) /datum/export/weapon/melee - cost = 30 + cost = 50 unit_name = "unlisted weapon" export_types = list(/obj/item/melee) include_subtypes = TRUE /datum/export/weapon/gun - cost = 30 + cost = 50 unit_name = "unlisted weapon" export_types = list(/obj/item/gun) include_subtypes = TRUE diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm index ca0c308d..29a6be78 100644 --- a/code/modules/cargo/packs/livestock.dm +++ b/code/modules/cargo/packs/livestock.dm @@ -10,6 +10,21 @@ group = "Livestock" crate_type = /obj/structure/closet/crate/critter +/datum/supply_pack/critter/animal_feed + name = "Animal Feed Crate" + desc = "Feed for livestock, like cows and hens. Contains fifty Wheat bundles and fifty Oat bundles." + cost = 1500 + contains = list(/obj/item/reagent_containers/food/snacks/grown/wheat, + /obj/item/reagent_containers/food/snacks/grown/oat) + crate_name = "animal feed crate" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/critter/animal_feed/generate() + . = ..() + for(var/i in 1 to 49) + new /obj/item/reagent_containers/food/snacks/grown/wheat(.) + + /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 @@ -115,7 +130,7 @@ /datum/supply_pack/critter/monkey name = "Monkey Cube Crate" desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" - cost = 2000 + cost = 1500 contains = list (/obj/item/storage/box/monkeycubes) crate_name = "monkey cube crate" diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index 0a82aa0b..ab408ffe 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -65,6 +65,28 @@ contains = list(/obj/item/stack/sheet/mineral/wood/fifty) crate_name = "wood planks crate" +/datum/supply_pack/organic/rawcotton + name = "Raw Cotton Crate" + desc = "Plushies have been on the down in the market, and now due to a flood of raw cotton the price of it is so cheap, its a steal! Contains 40 raw cotton sheets." + cost = 800 // 100 net cost, 20 x 20 = 400. 300 proffit if turned into cloth sheets or more if turned to silk then 10 x 200 = 2000 + contains = list(/obj/item/stack/sheet/cotton/thirty, + /obj/item/stack/sheet/cotton/ten + ) + crate_name = "cotton crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/organic/rawlumber + name = "Raw Lumber Crate" + desc = "Raw logs from towercaps. Contains fifty logs." + cost = 1000 + contains = list(/obj/item/grown/log) + crate_name = "lumber crate" + +/datum/supply_pack/critter/animal_feed/generate() + . = ..() + for(var/i in 1 to 49) + new /obj/item/grown/log(.) + /datum/supply_pack/materials/rcdammo name = "Spare RCD ammo" desc = "This crate contains sixteen RCD ammo packs, to help with any holes or projects people might be working on." @@ -168,3 +190,19 @@ 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/loom + name = "Loom" + desc = "A large pre-made loom." + cost = 1000 + contains = list(/obj/structure/loom) + crate_name = "loom crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/materials/wooden_barrel + name = "Wooden Barrel" + desc = "Wooden barrels ready for storage." + cost = 1500 + contains = list(/obj/structure/fermenting_barrel) + crate_name = "wooden barrel crate" + crate_type = /obj/structure/closet/crate/large diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index cf3bf865..06274561 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -69,31 +69,24 @@ /obj/item/storage/fancy/donut_box) crate_name = "candy crate" -/datum/supply_pack/organic/cutlery - name = "Kitchen Cutlery Deluxe Set" - desc = "Need to slice and dice away those ''Tomatos'' well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal." - cost = 10000 - contraband = TRUE - contains = list(/obj/item/sharpener, - /obj/item/kitchen/fork, - /obj/item/kitchen/fork, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife, - /obj/item/kitchen/knife/butcher, - /obj/item/kitchen/knife/butcher, - /obj/item/kitchen/rollingpin, //Deluxe for a reason - /obj/item/trash/plate, - /obj/item/trash/plate, - /obj/item/trash/plate, - /obj/item/trash/plate, - /obj/item/reagent_containers/food/drinks/drinkingglass, - /obj/item/reagent_containers/food/drinks/drinkingglass, - /obj/item/reagent_containers/food/drinks/drinkingglass, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) - crate_name = "kitchen cutlery deluxe set" +/datum/supply_pack/organic/exoticseeds + name = "Exotic Seeds Crate" + desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!" + cost = 1500 + contains = list(/obj/item/seeds/nettle, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/plump, + /obj/item/seeds/liberty, + /obj/item/seeds/amanita, + /obj/item/seeds/reishi, + /obj/item/seeds/banana, + /obj/item/seeds/eggplant/eggy, + /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" @@ -139,6 +132,70 @@ /obj/item/reagent_containers/glass/bottle/capsaicin) crate_name = "fiesta crate" +/datum/supply_pack/organic/fruit_1 + name = "Fruit Basic Crate" + desc = "Getting scurvy on the station? Well heres your fixing! Contains three of each - bananas, watermelons, limes, lemons, oranges and even three pineapple." + cost = 2250 + contains = list(/obj/item/reagent_containers/food/snacks/grown/watermelon, + /obj/item/reagent_containers/food/snacks/grown/watermelon, + /obj/item/reagent_containers/food/snacks/grown/watermelon, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/citrus/lime, + /obj/item/reagent_containers/food/snacks/grown/citrus/lime, + /obj/item/reagent_containers/food/snacks/grown/citrus/lime, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange, + /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, + /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, + /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana) + crate_name = "fruit crate" + +/datum/supply_pack/organic/fruit_2 + name = "Fruit Delux Crate" + desc = "Getting tired of the basic fruits and want to have something a bit more decadent! This crate is for you! Contains three of each - bunches of berries, apples, pineapples, cherries, green & red grapes, eggplants, bananas lastly ten strawberry." + cost = 3500 + contains = list(/obj/item/reagent_containers/food/snacks/grown/berries, + /obj/item/reagent_containers/food/snacks/grown/berries, + /obj/item/reagent_containers/food/snacks/grown/berries, + /obj/item/reagent_containers/food/snacks/grown/apple, + /obj/item/reagent_containers/food/snacks/grown/apple, + /obj/item/reagent_containers/food/snacks/grown/apple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/cherries, + /obj/item/reagent_containers/food/snacks/grown/cherries, + /obj/item/reagent_containers/food/snacks/grown/cherries, + /obj/item/reagent_containers/food/snacks/grown/grapes, + /obj/item/reagent_containers/food/snacks/grown/grapes, + /obj/item/reagent_containers/food/snacks/grown/grapes, + /obj/item/reagent_containers/food/snacks/grown/grapes/green, + /obj/item/reagent_containers/food/snacks/grown/grapes/green, + /obj/item/reagent_containers/food/snacks/grown/grapes/green, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/eggplant, + /obj/item/reagent_containers/food/snacks/grown/eggplant, + /obj/item/reagent_containers/food/snacks/grown/eggplant, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry) + crate_name = "fruit 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." @@ -226,6 +283,32 @@ crate_name = "hydroponics backpack crate" crate_type = /obj/structure/closet/crate/secure +/datum/supply_pack/organic/cutlery + name = "Kitchen Cutlery Deluxe Set" + desc = "Need to slice and dice away those ''Tomatos'' well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal." + cost = 10000 + contraband = TRUE + contains = list(/obj/item/sharpener, + /obj/item/kitchen/fork, + /obj/item/kitchen/fork, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife, + /obj/item/kitchen/knife/butcher, + /obj/item/kitchen/knife/butcher, + /obj/item/kitchen/rollingpin, //Deluxe for a reason + /obj/item/trash/plate, + /obj/item/trash/plate, + /obj/item/trash/plate, + /obj/item/trash/plate, + /obj/item/reagent_containers/food/drinks/drinkingglass, + /obj/item/reagent_containers/food/drinks/drinkingglass, + /obj/item/reagent_containers/food/drinks/drinkingglass, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) + crate_name = "kitchen cutlery deluxe set" + /datum/supply_pack/organic/mre name = "MRE supply kit (emergency rations)" desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank." @@ -339,22 +422,3 @@ /obj/item/seeds/random) crate_name = "strange seeds crate" crate_type = /obj/structure/closet/crate/hydroponics - -/datum/supply_pack/organic/exoticseeds - name = "Exotic Seeds Crate" - desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!" - cost = 1500 - contains = list(/obj/item/seeds/nettle, - /obj/item/seeds/replicapod, - /obj/item/seeds/replicapod, - /obj/item/seeds/replicapod, - /obj/item/seeds/plump, - /obj/item/seeds/liberty, - /obj/item/seeds/amanita, - /obj/item/seeds/reishi, - /obj/item/seeds/banana, - /obj/item/seeds/eggplant/eggy, - /obj/item/seeds/random, - /obj/item/seeds/random) - crate_name = "exotic seeds crate" - crate_type = /obj/structure/closet/crate/hydroponics diff --git a/code/modules/food_and_drinks/autobottler.dm b/code/modules/food_and_drinks/autobottler.dm new file mode 100644 index 00000000..6d5e0508 --- /dev/null +++ b/code/modules/food_and_drinks/autobottler.dm @@ -0,0 +1,18 @@ +/obj/machinery/rnd/production/protolathe/department/autobottler //We want to link with Rnd + name = "auto bottler" + desc = "Takes glass, metal and booze to make exports." + icon_state = "protolathe" + circuit = /obj/item/circuitboard/machine/autobottler + categories = list( + "Wines", + "Beers", + "Brands", + "Storge", + ) + production_animation = "protolathe_n" + allowed_buildtypes = AUTOBOTTLER + +//Brands - This is just export verson of the booze bottles +//Storge - Just the bottles not booze inside +//Wines - Holds wines later made by Sci nodes +//Beers - Holds beers later made by Sci nodes \ No newline at end of file diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index abf48c52..7df105c5 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -133,18 +133,27 @@ icon_state = "ginbottle" list_reagents = list("gin" = 100) +/obj/item/reagent_containers/food/drinks/bottle/gin/empty + list_reagents = list("gin" = 0) + /obj/item/reagent_containers/food/drinks/bottle/whiskey name = "Uncle Git's special reserve" desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." icon_state = "whiskeybottle" list_reagents = list("whiskey" = 100) +/obj/item/reagent_containers/food/drinks/bottle/whiskey/empty + list_reagents = list("whiskey" = 0) + /obj/item/reagent_containers/food/drinks/bottle/vodka name = "Tunguska triple distilled" desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." icon_state = "vodkabottle" list_reagents = list("vodka" = 100) +/obj/item/reagent_containers/food/drinks/bottle/vodka/empty + list_reagents = list("vodka" = 0) + /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka name = "Badminka vodka" desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'." @@ -157,6 +166,9 @@ icon_state = "tequilabottle" list_reagents = list("tequila" = 100) +/obj/item/reagent_containers/food/drinks/bottle/tequila/empty + list_reagents = list("tequila" = 0) + /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing name = "bottle of nothing" desc = "A bottle filled with nothing." @@ -164,18 +176,27 @@ list_reagents = list("nothing" = 100) foodtype = NONE +/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing/empty + list_reagents = list("nothing" = 0) + /obj/item/reagent_containers/food/drinks/bottle/patron name = "Wrapp Artiste Patron" desc = "Silver laced tequila, served in space night clubs across the galaxy." icon_state = "patronbottle" list_reagents = list("patron" = 100) +/obj/item/reagent_containers/food/drinks/bottle/patron/empty + list_reagents = list("patron" = 0) + /obj/item/reagent_containers/food/drinks/bottle/rum name = "Captain Pete's Cuban spiced rum" desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle." icon_state = "rumbottle" list_reagents = list("rum" = 100) +/obj/item/reagent_containers/food/drinks/bottle/rum/empty + list_reagents = list("rum" = 0) + /obj/item/reagent_containers/food/drinks/bottle/holywater name = "flask of holy water" desc = "A flask of the chaplain's holy water." @@ -207,6 +228,9 @@ icon_state = "vermouthbottle" list_reagents = list("vermouth" = 100) +/obj/item/reagent_containers/food/drinks/bottle/vermouth/empty + list_reagents = list("vermouth" = 0) + /obj/item/reagent_containers/food/drinks/bottle/kahlua name = "Robert Robust's coffee liqueur" desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK." @@ -214,18 +238,27 @@ list_reagents = list("kahlua" = 100) foodtype = VEGETABLES +/obj/item/reagent_containers/food/drinks/bottle/kahlua/empty + list_reagents = list("kahlua" = 0) + /obj/item/reagent_containers/food/drinks/bottle/goldschlager name = "College Girl goldschlager" desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." icon_state = "goldschlagerbottle" list_reagents = list("goldschlager" = 100) +/obj/item/reagent_containers/food/drinks/bottle/goldschlager/empty + list_reagents = list("goldschlager" = 0) + /obj/item/reagent_containers/food/drinks/bottle/cognac name = "Chateau de Baton premium cognac" desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." icon_state = "cognacbottle" list_reagents = list("cognac" = 100) +/obj/item/reagent_containers/food/drinks/bottle/cognac/empty + list_reagents = list("cognac" = 0) + /obj/item/reagent_containers/food/drinks/bottle/wine name = "Doublebeard's bearded special wine" desc = "A faint aura of unease and asspainery surrounds the bottle." @@ -233,12 +266,18 @@ list_reagents = list("wine" = 100) foodtype = FRUIT | ALCOHOL +/obj/item/reagent_containers/food/drinks/bottle/wine/empty + list_reagents = list("wine" = 0) + /obj/item/reagent_containers/food/drinks/bottle/absinthe name = "extra-strong absinthe" desc = "An strong alcoholic drink brewed and distributed by" icon_state = "absinthebottle" list_reagents = list("absinthe" = 100) +/obj/item/reagent_containers/food/drinks/bottle/absinthe/empty + list_reagents = list("absinthe" = 0) + /obj/item/reagent_containers/food/drinks/bottle/absinthe/Initialize() . = ..() redact() @@ -300,18 +339,27 @@ volume = 50 list_reagents = list("hcider" = 50) +/obj/item/reagent_containers/food/drinks/bottle/hcider/empty + list_reagents = list("hcider" = 0) + /obj/item/reagent_containers/food/drinks/bottle/grappa name = "Phillipes well-aged Grappa" desc = "Bottle of Grappa." icon_state = "grappabottle" list_reagents = list("grappa" = 100) +/obj/item/reagent_containers/food/drinks/bottle/grappa/empty + list_reagents = list("grappa" = 0) + /obj/item/reagent_containers/food/drinks/bottle/sake name = "Ryo's traditional sake" desc = "Sweet as can be, and burns like fire going down." icon_state = "sakebottle" list_reagents = list("sake" = 100) +/obj/item/reagent_containers/food/drinks/bottle/sake/empty + list_reagents = list("sake" = 0) + /obj/item/reagent_containers/food/drinks/bottle/sake/Initialize() . = ..() if(prob(10)) @@ -329,6 +377,9 @@ icon_state = "fernetbottle" list_reagents = list("fernet" = 100) +/obj/item/reagent_containers/food/drinks/bottle/fernet/empty + list_reagents = list("fernet" = 0) + /obj/item/reagent_containers/food/drinks/bottle/applejack name = "Buckin' Bronco's Applejack" desc = "Kicks like a horse, tastes like an apple!" @@ -336,18 +387,27 @@ list_reagents = list("applejack" = 100) foodtype = FRUIT +/obj/item/reagent_containers/food/drinks/bottle/applejack/empty + list_reagents = list("applejack" = 0) + /obj/item/reagent_containers/food/drinks/bottle/champagne name = "Eau d' Dandy Brut Champagne" desc = "Finely sourced from only the most pretentious French vineyards." icon_state = "champagne_bottle" list_reagents = list("champagne" = 100) +/obj/item/reagent_containers/food/drinks/bottle/champagne/empty + list_reagents = list("champagne" = 0) + /obj/item/reagent_containers/food/drinks/bottle/blazaam name = "Ginbad's Blazaam" desc = "You feel like you should give the bottle a good rub before opening." icon_state = "blazaambottle" list_reagents = list("blazaam" = 100) +/obj/item/reagent_containers/food/drinks/bottle/blazaam/empty + list_reagents = list("blazaam" = 0) + /obj/item/reagent_containers/food/drinks/bottle/trappist name = "Mont de Requin Trappistes Bleu" desc = "Brewed in space-Belgium. Fancy!" @@ -355,6 +415,8 @@ volume = 50 list_reagents = list("trappist" = 50) +/obj/item/reagent_containers/food/drinks/bottle/trappist/empty + list_reagents = list("trappist" = 0) //////////////////////////JUICES AND STUFF /////////////////////// @@ -442,6 +504,8 @@ list_reagents = list("grenadine" = 100) foodtype = FRUIT +/obj/item/reagent_containers/food/drinks/bottle/grenadine/empty + list_reagents = list("grenadine" = 0) ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/molotov @@ -509,3 +573,131 @@ to_chat(user, "You snuff out the flame on [src].") cut_overlay(GLOB.fire_overlay) active = 0 + +/obj/item/export/bottle/attack_self(mob/user) + to_chat(user, "The seal seems fine. Best to not open it.") + return + +/obj/item/export/bottle + name = "Report this please" + desc = "A sealed bottle of alcohol, ready to be exported" + icon = 'icons/obj/drinks.dmi' + force = 0 + throwforce = 0 + throw_speed = 0 + throw_range = 0 + w_class = WEIGHT_CLASS_TINY + item_state = "beer" + attack_verb = list("boop", "thunked", "shown") + +/obj/item/export/bottle/gin + icon_state = "ginbottle" + name = "Sealed Gin" + +/obj/item/export/bottle/wine + icon_state = "winebottle" + name = "Sealed Wine" + +/obj/item/export/bottle/whiskey + icon_state = "whiskeybottle" + name = "Sealed Whiskey" + +/obj/item/export/bottle/vodka + icon_state = "vodkabottle" + name = "Sealed Vodka" + +/obj/item/export/bottle/tequila + icon_state = "tequilabottle" + name = "Sealed Tequila" + +/obj/item/export/bottle/patron + icon_state = "patronbottle" + name = "Sealed Patron" + +/obj/item/export/bottle/rum + icon_state = "rumbottle" + name = "Sealed Rum" + +/obj/item/export/bottle/vermouth + icon_state = "vermouthbottle" + name = "Sealed Vermouth" + +/obj/item/export/bottle/kahlua + icon_state = "kahluabottle" + name = "Sealed Kahlua" + +/obj/item/export/bottle/goldschlager + icon_state = "goldschlagerbottle" + name = "Sealed Goldschlager" + +/obj/item/export/bottle/hcider + icon_state = "hcider" + name = "Sealed Cider" + +/obj/item/export/bottle/cognac + icon_state = "cognacbottle" + name = "Sealed Cognac" + +/obj/item/export/bottle/absinthe + icon_state = "absinthebottle" + name = "Sealed Unmarked Absinthe" + +/obj/item/export/bottle/grappa + icon_state = "grappabottle" + name = "Sealed Grappa" + +/obj/item/export/bottle/sake + icon_state = "sakebottle" + name = "Sealed Sake" + +/obj/item/export/bottle/fernet + icon_state = "fernetbottle" + name = "Sealed Fernet" + +/obj/item/export/bottle/applejack + icon_state = "applejack_bottle" + name = "Sealed Applejack" + +/obj/item/export/bottle/champagne + icon_state = "champagne_bottle" + name = "Sealed Champagne" + +/obj/item/export/bottle/blazaam + icon_state = "blazaambottle" + name = "Sealed Blazaam" + +/obj/item/export/bottle/trappist + icon_state = "trappistbottle" + name = "Sealed Trappist" + +/obj/item/export/bottle/grenadine + icon_state = "grenadine" + name = "Sealed Grenadine" + +/obj/item/export/bottle/minikeg + name = "Mini-Beer Keg" + icon_state = "keggy" + desc = "A small wooden barrle with metal rings, untapped beer inside." + +/obj/item/export/bottle/blooddrop + icon_state = "champagne_selling_bottle" + name = "Blood Drop" + desc = "Large red bottle filled with a mix of wine and other named brands." + +/obj/item/export/bottle/slim_gold + name = "Slim Gold " + icon_state = "selling_bottle_alt" + desc = "A gold looking yellow bottle that has a mix of different named brands." + +/obj/item/export/bottle/white_bloodmoon + name = "White Bloodmoon" + icon_state = "selling_bottle_basic" + desc = "Rather simple bottle for this kind of drink." + +/obj/item/export/bottle/greenroad + name = "Green Road" + icon_state = "selling_bottle" + desc = "Ironic name as the fruit used is from ashy plants." + + + diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index f253c06b..e9001322 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -69,10 +69,3 @@ icon_state = "barrel_open" else icon_state = "barrel" - -/datum/crafting_recipe/fermenting_barrel - name = "Wooden Barrel" - result = /obj/structure/fermenting_barrel - reqs = list(/obj/item/stack/sheet/mineral/wood = 30) - time = 50 - category = CAT_PRIMAL diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index aaccc6d0..73bf3bf4 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -44,7 +44,7 @@ var/inverse_chem // What chem is metabolised when purity is below inverse_chem_val, this shouldn't be made, but if it does, well, I guess I'll know about it. var/metabolizing = FALSE var/chemical_flags // See fermi/readme.dm REAGENT_DEAD_PROCESS, REAGENT_DONOTSPLIT, REAGENT_ONLYINVERSE, REAGENT_ONMOBMERGE, REAGENT_INVISIBLE, REAGENT_FORCEONNEW, REAGENT_SNEAKYNAME - + var/value = 0 //How much does it sell for in cargo? /datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references . = ..() diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 88ac3e2a..e7358f8c 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -90,7 +90,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of beer" glass_desc = "A freezing pint of beer." pH = 4 - + value = 0.1 /datum/reagent/consumable/ethanol/beer/light name = "Light Beer" @@ -101,6 +101,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of light beer" glass_desc = "A freezing pint of watery light beer." pH = 5 + value = 0.3 /datum/reagent/consumable/ethanol/beer/green name = "Green Beer" @@ -112,6 +113,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of green beer" glass_desc = "A freezing pint of green beer. Festive." pH = 6 + value = 0.3 /datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/M) if(M.color != color) @@ -132,6 +134,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "DAMN, THIS THING LOOKS ROBUST!" shot_glass_icon_state = "shotglasscream" pH = 6 + value = 0.1 /datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/M) @@ -155,6 +158,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy." shot_glass_icon_state = "shotglassbrown" pH = 4.5 + value = 0.1 /datum/reagent/consumable/ethanol/thirteenloko name = "Thirteen Loko" @@ -170,7 +174,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "thirteen_loko_glass" glass_name = "glass of Thirteen Loko" glass_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass." - + value = 0.3 /datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-7) @@ -233,6 +237,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "The glass contain wodka. Xynta." shot_glass_icon_state = "shotglassclear" pH = 8.1 + value = 0.1 /datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/carbon/M) M.radiation = max(M.radiation-2,0) @@ -249,6 +254,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "glass_brown" glass_name = "glass of bilk" glass_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis." + value = 0.5 /datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(10)) @@ -268,6 +274,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Three Mile Island Ice Tea" glass_desc = "A glass of this is sure to prevent a meltdown." pH = 3.5 + value = 1 /datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/M) M.set_drugginess(50) @@ -284,6 +291,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of gin" glass_desc = "A crystal clear glass of Griffeater gin." pH = 6.9 + value = 0.1 /datum/reagent/consumable/ethanol/rum name = "Rum" @@ -297,6 +305,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Now you want to Pray for a pirate suit, don't you?" shot_glass_icon_state = "shotglassbrown" pH = 6.5 + value = 0.1 /datum/reagent/consumable/ethanol/tequila name = "Tequila" @@ -310,6 +319,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Now all that's missing is the weird colored shades!" shot_glass_icon_state = "shotglassgold" pH = 4 + value = 0.1 /datum/reagent/consumable/ethanol/vermouth name = "Vermouth" @@ -323,6 +333,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "You wonder why you're even drinking this straight." shot_glass_icon_state = "shotglassclear" pH = 3.25 + value = 0.1 /datum/reagent/consumable/ethanol/wine name = "Wine" @@ -336,6 +347,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "A very classy looking drink." shot_glass_icon_state = "shotglassred" pH = 3.45 + value = 0.1 /datum/reagent/consumable/ethanol/lizardwine name = "Lizard wine" @@ -346,6 +358,7 @@ All effects don't start immediately, but rather get worse over time; the rate is quality = DRINK_FANTASTIC taste_description = "scaley sweetness" pH = 3 + value = 2 /datum/reagent/consumable/ethanol/grappa name = "Grappa" @@ -358,6 +371,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of grappa" glass_desc = "A fine drink originally made to prevent waste by using the leftovers from winemaking." pH = 3.5 + value = 0.1 /datum/reagent/consumable/ethanol/cognac name = "Cognac" @@ -371,6 +385,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Damn, you feel like some kind of French aristocrat just by holding this." shot_glass_icon_state = "shotglassbrown" pH = 3.5 + value = 0.1 /datum/reagent/consumable/ethanol/absinthe name = "Absinthe" @@ -383,6 +398,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of absinthe" glass_desc = "It's as strong as it smells." shot_glass_icon_state = "shotglassgreen" + value = 0.1 /datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/M) if(prob(10) && !HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE)) @@ -417,6 +433,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of ale" glass_desc = "A freezing pint of delicious Ale." pH = 4.5 + value = 0.1 /datum/reagent/consumable/ethanol/goldschlager name = "Goldschlager" @@ -430,6 +447,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of goldschlager" glass_desc = "100% proof that teen girls will drink anything with gold in it." shot_glass_icon_state = "shotglassgold" + value = 0.5 /datum/reagent/consumable/ethanol/patron name = "Patron" @@ -444,6 +462,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Drinking patron in the bar, with all the subpar ladies." shot_glass_icon_state = "shotglassclear" pH = 4.5 + value = 0.1 /datum/reagent/consumable/ethanol/gintonic name = "Gin and Tonic" @@ -457,6 +476,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Gin and Tonic" glass_desc = "A mild but still great cocktail. Drink up, like a true Englishman." pH = 3 + value = 0.5 /datum/reagent/consumable/ethanol/rum_coke name = "Rum and Coke" @@ -470,6 +490,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Rum and Coke" glass_desc = "The classic go-to of space-fratboys." pH = 4 + value = 1 /datum/reagent/consumable/ethanol/cuba_libre name = "Cuba Libre" @@ -482,6 +503,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "cubalibreglass" glass_name = "Cuba Libre" glass_desc = "A classic mix of rum, cola, and lime. A favorite of revolutionaries everywhere!" + value = 0.5 /datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/M) @@ -504,7 +526,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "whiskeycolaglass" glass_name = "whiskey cola" glass_desc = "An innocent-looking mixture of cola and Whiskey. Delicious." - + value = 0.5 /datum/reagent/consumable/ethanol/martini name = "Classic Martini" @@ -517,6 +539,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "martiniglass" glass_name = "Classic Martini" glass_desc = "Damn, the bartender even stirred it, not shook it." + value = 1 /datum/reagent/consumable/ethanol/vodkamartini name = "Vodka Martini" @@ -529,6 +552,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "martiniglass" glass_name = "Vodka martini" glass_desc ="A bastardisation of the classic martini. Still great." + value = 1 /datum/reagent/consumable/ethanol/white_russian @@ -542,6 +566,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "whiterussianglass" glass_name = "White Russian" glass_desc = "A very nice looking drink. But that's just, like, your opinion, man." + value = 1 /datum/reagent/consumable/ethanol/screwdrivercocktail name = "Screwdriver" @@ -554,6 +579,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "screwdriverglass" glass_name = "Screwdriver" glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." + value = 1 /datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M) if(M.mind && M.mind.assigned_role in list("Station Engineer", "Atmospheric Technician", "Chief Engineer")) //Engineers lose radiation poisoning at a massive rate. @@ -570,6 +596,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "booger" glass_name = "Booger" glass_desc = "Ewww..." + value = 0.3 /datum/reagent/consumable/ethanol/bloody_mary name = "Bloody Mary" @@ -582,6 +609,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "bloodymaryglass" glass_name = "Bloody Mary" glass_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder." + value = 1.3 /datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C) if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio)) @@ -599,6 +627,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "bravebullglass" glass_name = "Brave Bull" glass_desc = "Tequila and Coffee liqueur, brought together in a mouthwatering mixture. Drink up." + value = 2 var/tough_text /datum/reagent/consumable/ethanol/brave_bull/on_mob_metabolize(mob/living/M) @@ -623,6 +652,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "tequilasunriseglass" glass_name = "tequila Sunrise" glass_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..." + value = 2 var/obj/effect/light_holder /datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_metabolize(mob/living/M) @@ -653,6 +683,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Toxins Special" glass_desc = "Whoah, this thing is on FIRE!" shot_glass_icon_state = "toxinsspecialglass" + value = 2 /datum/reagent/consumable/ethanol/toxins_special/on_mob_life(var/mob/living/M) M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp. @@ -672,6 +703,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW." pH = 2 overdose_threshold = 40 + value = 3 var/datum/brain_trauma/special/beepsky/B /datum/reagent/consumable/ethanol/beepsky_smash/on_mob_metabolize(mob/living/carbon/M) @@ -713,6 +745,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "irishcreamglass" glass_name = "Irish Cream" glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?" + value = 1 /datum/reagent/consumable/ethanol/manly_dorf name = "The Manly Dorf" @@ -725,6 +758,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "manlydorfglass" glass_name = "The Manly Dorf" glass_desc = "A manly concoction made from Ale and Beer. Intended for true men only." + value = 2 var/dorf_mode /datum/reagent/consumable/ethanol/manly_dorf/on_mob_metabolize(mob/living/M) @@ -752,7 +786,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "longislandicedteaglass" glass_name = "Long Island Iced Tea" glass_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." - + value = 1 /datum/reagent/consumable/ethanol/moonshine name = "Moonshine" @@ -764,6 +798,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "glass_clear" glass_name = "Moonshine" glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." + value = 2 /datum/reagent/consumable/ethanol/b52 name = "B-52" @@ -777,6 +812,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "B-52" glass_desc = "Kahlua, Irish Cream, and cognac. You will get bombed." shot_glass_icon_state = "b52glass" + value = 5.2 /datum/reagent/consumable/ethanol/b52/on_mob_metabolize(mob/living/M) playsound(M, 'sound/effects/explosion_distant.ogg', 100, FALSE) @@ -792,6 +828,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "irishcoffeeglass" glass_name = "Irish Coffee" glass_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning." + value = 2 /datum/reagent/consumable/ethanol/margarita name = "Margarita" @@ -804,6 +841,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "margaritaglass" glass_name = "Margarita" glass_desc = "On the rocks with salt on the rim. Arriba~!" + value = 2 /datum/reagent/consumable/ethanol/black_russian name = "Black Russian" @@ -816,6 +854,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "blackrussianglass" glass_name = "Black Russian" glass_desc = "For the lactose-intolerant. Still as classy as a White Russian." + value = 3 /datum/reagent/consumable/ethanol/manhattan @@ -829,6 +868,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "manhattanglass" glass_name = "Manhattan" glass_desc = "The Detective's undercover drink of choice. He never could stomach gin..." + value = 3 /datum/reagent/consumable/ethanol/manhattan_proj @@ -842,6 +882,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "proj_manhattanglass" glass_name = "Manhattan Project" glass_desc = "A scientist's drink of choice, for thinking how to blow up the station." + value = 6 /datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/M) @@ -859,6 +900,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "whiskeysodaglass2" glass_name = "whiskey soda" glass_desc = "Ultimate refreshment." + value = 1 /datum/reagent/consumable/ethanol/antifreeze name = "Anti-freeze" @@ -867,10 +909,11 @@ All effects don't start immediately, but rather get worse over time; the rate is color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 quality = DRINK_NICE - taste_description = "Jack Frost's piss" + taste_description = "Jack Frost's piss" //Waterspots eeewww glass_icon_state = "antifreeze" glass_name = "Anti-freeze" glass_desc = "The ultimate refreshment." + value = 3 /datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp. @@ -887,6 +930,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "b&p" glass_name = "Barefoot" glass_desc = "Barefoot and pregnant." + value = 4 /datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/M) if(ishuman(M)) //Barefoot causes the imbiber to quickly regenerate brute trauma if they're not wearing shoes. @@ -907,6 +951,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "snowwhite" glass_name = "Snow White" glass_desc = "A cold refreshment." + value = 1 /datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon. name = "Demon's Blood" @@ -919,6 +964,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "demonsblood" glass_name = "Demons Blood" glass_desc = "Just looking at this thing makes the hair at the back of your neck stand up." + value = 2 /datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it. name = "Devil's Kiss" @@ -931,6 +977,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "devilskiss" glass_name = "Devils Kiss" glass_desc = "Creepy time!" + value = 2 /datum/reagent/consumable/ethanol/vodkatonic name = "Vodka and Tonic" @@ -943,7 +990,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "vodkatonicglass" glass_name = "vodka and tonic" glass_desc = "For when a gin and tonic isn't Russian enough." - + value = 1 /datum/reagent/consumable/ethanol/ginfizz name = "Gin Fizz" @@ -956,7 +1003,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "ginfizzglass" glass_name = "gin fizz" glass_desc = "Refreshingly lemony, deliciously dry." - + value = 1 /datum/reagent/consumable/ethanol/bahama_mama name = "Bahama Mama" @@ -969,6 +1016,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "bahama_mama" glass_name = "Bahama Mama" glass_desc = "A tropical cocktail with a complex blend of flavors." + value = 2 /datum/reagent/consumable/ethanol/singulo name = "Singulo" @@ -981,6 +1029,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "singulo" glass_name = "Singulo" glass_desc = "A blue-space beverage." + value = 4 /datum/reagent/consumable/ethanol/sbiten name = "Sbiten" @@ -993,6 +1042,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "sbitenglass" glass_name = "Sbiten" glass_desc = "A spicy mix of Vodka and Spice. Very hot." + value = 2 /datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(50 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 ,BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp. @@ -1009,6 +1059,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "red_meadglass" glass_name = "Red Mead" glass_desc = "A True Viking's Beverage, though its color is strange." + value = 5 /datum/reagent/consumable/ethanol/mead name = "Mead" @@ -1022,6 +1073,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "meadglass" glass_name = "Mead" glass_desc = "A Viking's Beverage, though a cheap one." + value = 1 /datum/reagent/consumable/ethanol/iced_beer name = "Iced Beer" @@ -1033,6 +1085,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "iced_beerglass" glass_name = "iced beer" glass_desc = "A beer so frosty, the air around it freezes." + value = 1 /datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp. @@ -1048,7 +1101,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "grogglass" glass_name = "Grog" glass_desc = "A fine and cepa drink for Space." - + value = 2.1 /datum/reagent/consumable/ethanol/aloe name = "Aloe" @@ -1061,6 +1114,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "aloe" glass_name = "Aloe" glass_desc = "Very, very, very good." + value = 1 /datum/reagent/consumable/ethanol/andalusia name = "Andalusia" @@ -1073,6 +1127,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "andalusia" glass_name = "Andalusia" glass_desc = "A nice, strangely named drink." + value = 1 /datum/reagent/consumable/ethanol/alliescocktail name = "Allies Cocktail" @@ -1085,6 +1140,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "alliescocktail" glass_name = "Allies cocktail" glass_desc = "A drink made from your allies." + value = 4 /datum/reagent/consumable/ethanol/acid_spit name = "Acid Spit" @@ -1097,6 +1153,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "acidspitglass" glass_name = "Acid Spit" glass_desc = "A drink from Nanotrasen. Made from live aliens." + value = 3 /datum/reagent/consumable/ethanol/amasec name = "Amasec" @@ -1109,6 +1166,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "amasecglass" glass_name = "Amasec" glass_desc = "Always handy before COMBAT!!!" + value = 2 /datum/reagent/consumable/ethanol/changelingsting name = "Changeling Sting" @@ -1121,6 +1179,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "changelingsting" glass_name = "Changeling Sting" glass_desc = "A stingy drink." + value = 1.5 /datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/M) if(M.mind) //Changeling Sting assists in the recharging of changeling chemicals. @@ -1141,6 +1200,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "irishcarbomb" glass_name = "Irish Car Bomb" glass_desc = "An Irish car bomb." + value = 5 /datum/reagent/consumable/ethanol/syndicatebomb name = "Syndicate Bomb" @@ -1153,6 +1213,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "syndicatebomb" glass_name = "Syndicate Bomb" glass_desc = "A syndicate bomb." + value = 2 /datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/M) if(prob(5)) @@ -1170,6 +1231,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "erikasurprise" glass_name = "Erika Surprise" glass_desc = "The surprise is, it's green!" + value = 4 /datum/reagent/consumable/ethanol/driestmartini name = "Driest Martini" @@ -1183,6 +1245,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "driestmartiniglass" glass_name = "Driest Martini" glass_desc = "Only for the experienced. You think you see sand floating in the glass." + value = 5 /datum/reagent/consumable/ethanol/bananahonk name = "Banana Honk" @@ -1196,6 +1259,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "bananahonkglass" glass_name = "Banana Honk" glass_desc = "A drink from Clown Heaven." + value = 8 /datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/M) if((ishuman(M) && M.job == "Clown") || ismonkey(M)) @@ -1215,6 +1279,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "silencerglass" glass_name = "Silencer" glass_desc = "A drink from Mime Heaven." + value = 2 /datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/M) if(ishuman(M) && M.job == "Mime") @@ -1233,6 +1298,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "drunkenblumpkin" glass_name = "Drunken Blumpkin" glass_desc = "A drink for the drunks." + value = 3 /datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour. name = "Whiskey Sour" @@ -1245,6 +1311,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "whiskey_sour" glass_name = "whiskey sour" glass_desc = "Lemon juice mixed with whiskey and a dash of sugar. Surprisingly satisfying." + value = 2 /datum/reagent/consumable/ethanol/hcider name = "Hard Cider" @@ -1258,7 +1325,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "hard cider" glass_desc = "Tastes like autumn... no wait, fall!" shot_glass_icon_state = "shotglassbrown" - + value = 3 /datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber! name = "Fetching Fizz" @@ -1272,7 +1339,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "fetching_fizz" glass_name = "Fetching Fizz" glass_desc = "Induces magnetism in the imbiber. Started as a barroom prank but evolved to become popular with miners and scrappers. Metallic aftertaste." - + value = 2 /datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/M) for(var/obj/item/stack/ore/O in orange(3, M)) @@ -1292,6 +1359,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "hearty_punch" glass_name = "Hearty Punch" glass_desc = "Aromatic beverage served piping hot. According to folk tales it can almost wake the dead." + value = 1 /datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/M) if(M.health <= 0) @@ -1313,7 +1381,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "glass_brown2" glass_name = "Bacchus' Blessing" glass_desc = "You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...?" - + value = 8 /datum/reagent/consumable/ethanol/atomicbomb @@ -1327,6 +1395,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "atomicbombglass" glass_name = "Atomic Bomb" glass_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing." + value = 3.56 /datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/M) M.set_drugginess(50) @@ -1356,6 +1425,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "gargleblasterglass" glass_name = "Pan-Galactic Gargle Blaster" glass_desc = "Like having your brain smashed out by a slice of lemon wrapped around a large gold brick." + value = 5 /datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/M) M.dizziness +=1.5 @@ -1390,6 +1460,7 @@ All effects don't start immediately, but rather get worse over time; the rate is impure_chem = "neuroweak" inverse_chem_val = 0.5 //Clear conversion inverse_chem = "neuroweak" + value = 4 /datum/reagent/consumable/ethanol/neurotoxin/proc/pickt() return (pick(TRAIT_PARALYSIS_L_ARM,TRAIT_PARALYSIS_R_ARM,TRAIT_PARALYSIS_R_LEG,TRAIT_PARALYSIS_L_LEG)) @@ -1436,6 +1507,8 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "neurosmashglass" glass_name = "Neurosmash" glass_desc = "A mostly safe alcoholic drink for the true daredevils. Do not mix with Neurotoxin." + pH = 8 + value = 3 /datum/reagent/consumable/ethanol/neurosmash/on_mob_life(mob/living/carbon/M) if(holder.has_reagent("neurotoxin")) @@ -1458,6 +1531,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "hippiesdelightglass" glass_name = "Hippie's Delight" glass_desc = "A drink enjoyed by people during the 1960's." + value = 1.96 /datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M) M.slurring = max(M.slurring,50) @@ -1502,6 +1576,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "nog3" glass_name = "eggnog" glass_desc = "The traditional way to get absolutely hammered at a Christmas party." + value = 4 /datum/reagent/consumable/ethanol/narsour @@ -1515,6 +1590,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "narsour" glass_name = "Nar'Sour" glass_desc = "A new hit cocktail inspired by THE ARM Breweries will have you shouting Fuu ma'jin in no time!" + value = 6.66 /datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/M) M.cultslurring = min(M.cultslurring + 3, 3) @@ -1531,6 +1607,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "glass_orange" glass_name = "Triple Sec" glass_desc = "A glass of straight Triple Sec." + value = 1.5 /datum/reagent/consumable/ethanol/creme_de_menthe name = "Creme de Menthe" @@ -1542,6 +1619,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "glass_green" glass_name = "Creme de Menthe" glass_desc = "You can almost feel the first breath of spring just looking at it." + value = 2 /datum/reagent/consumable/ethanol/creme_de_cacao name = "Creme de Cacao" @@ -1553,6 +1631,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "glass_brown" glass_name = "Creme de Cacao" glass_desc = "A million hazing lawsuits and alcohol poisonings have started with this humble ingredient." + value = 1 datum/reagent/consumable/ethanol/creme_de_coconut name = "Creme de Coconut" @@ -1576,6 +1655,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "quadruple_sec" glass_name = "Quadruple Sec" glass_desc = "An intimidating and lawful beverage dares you to violate the law and make its day. Still can't drink it on duty, though." + value = 3.04 /datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/M) if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM)) //Securidrink in line with the screwderiver for engineers or nothing for mimes. @@ -1595,6 +1675,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "quintuple_sec" glass_name = "Quintuple Sec" glass_desc = "Now you are become law, destroyer of clowns." + value = 4.01 /datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/M) if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM)) //Securidrink in line with the screwderiver for engineers or nothing for mimes but STRONG.. @@ -1617,6 +1698,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "grasshopper" glass_name = "Grasshopper" glass_desc = "You weren't aware edible beverages could be that green." + value = 1 /datum/reagent/consumable/ethanol/stinger name = "Stinger" @@ -1629,6 +1711,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "stinger" glass_name = "Stinger" glass_desc = "You wonder what would happen if you pointed this at a heat source..." + value = 1 /datum/reagent/consumable/ethanol/bastion_bourbon name = "Bastion Bourbon" @@ -1644,6 +1727,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_desc = "If you're feeling low, count on the buttery flavor of our own bastion bourbon." shot_glass_icon_state = "shotglassgreen" pH = 4 + value = 8 /datum/reagent/consumable/ethanol/bastion_bourbon/on_mob_metabolize(mob/living/L) var/heal_points = 10 @@ -1681,6 +1765,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_name = "Squirt Cider" glass_desc = "Squirt cider will toughen you right up. Too bad about the musty aftertaste." shot_glass_icon_state = "shotglassgreen" + value = 1 /datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/M) M.satiety += 5 //for context, vitamins give 30 satiety per tick @@ -1698,6 +1783,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "fringe_weaver" glass_name = "Fringe Weaver" glass_desc = "It's a wonder it doesn't spill out of the glass." + value = 1 /datum/reagent/consumable/ethanol/sugar_rush name = "Sugar Rush" @@ -1711,6 +1797,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "sugar_rush" glass_name = "Sugar Rush" glass_desc = "If you can't mix a Sugar Rush, you can't tend bar." + value = 1 /datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/M) M.satiety -= 10 //junky as hell! a whole glass will keep you from being able to eat junk food @@ -1728,6 +1815,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "crevice_spike" glass_name = "Crevice Spike" glass_desc = "It'll either knock the drunkenness out of you or knock you out cold. Both, probably." + value = 1 /datum/reagent/consumable/ethanol/crevice_spike/on_mob_metabolize(mob/living/L) //damage only applies when drink first enters system and won't again until drink metabolizes out L.adjustBruteLoss(3 * min(5,volume)) //minimum 3 brute damage on ingestion to limit non-drink means of injury - a full 5 unit gulp of the drink trucks you for the full 15 @@ -1742,6 +1830,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "sakecup" glass_name = "cup of sake" glass_desc = "A traditional cup of sake." + value = 0.1 /datum/reagent/consumable/ethanol/peppermint_patty name = "Peppermint Patty" @@ -1754,6 +1843,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "peppermint_patty" glass_name = "Peppermint Patty" glass_desc = "A boozy minty hot cocoa that warms your belly on a cold night." + value = 2 /datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) @@ -1771,6 +1861,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_name = "Alexander" glass_desc = "A creamy, indulgent delight that is stronger than it seems." var/obj/item/shield/mighty_shield + value = 1 /datum/reagent/consumable/ethanol/alexander/on_mob_metabolize(mob/living/L) if(ishuman(L)) @@ -1803,6 +1894,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "sidecar" glass_name = "Sidecar" glass_desc = "The one ride you'll gladly give up the wheel for." + value = 1 /datum/reagent/consumable/ethanol/between_the_sheets name = "Between the Sheets" @@ -1815,6 +1907,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "between_the_sheets" glass_name = "Between the Sheets" glass_desc = "The only drink that comes with a label reminding you of Nanotrasen's zero-tolerance promiscuity policy." + value = 2 /datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L) ..() @@ -1840,6 +1933,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "kamikaze" glass_name = "Kamikaze" glass_desc = "Divinely windy." + value = 1 /datum/reagent/consumable/ethanol/mojito name = "Mojito" @@ -1852,6 +1946,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "mojito" glass_name = "Mojito" glass_desc = "A drink that looks as refreshing as it tastes." + value = 1 /datum/reagent/consumable/ethanol/fernet name = "Fernet" @@ -1861,7 +1956,8 @@ datum/reagent/consumable/ethanol/creme_de_coconut boozepwr = 80 taste_description = "utter bitterness" glass_name = "glass of fernet" - glass_desc = "A glass of pure Fernet. Only an absolute madman would drink this alone." //Hi Kevum + glass_desc = "A glass of pure Fernet. Only an absolute madman would drink this alone." + value = 0.1 /datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) @@ -1881,6 +1977,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "godlyblend" glass_name = "glass of fernet cola" glass_desc = "A sawed-off cola bottle filled with Fernet Cola. Nothing better after eating like a lardass." + value = 1 /datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) @@ -1901,6 +1998,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "fanciulli" glass_name = "glass of fanciulli" glass_desc = "A glass of Fanciulli. It's just Manhattan with Fernet." + value = 1 /datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/M) M.nutrition = max(M.nutrition - 5, 0) @@ -1925,7 +2023,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state= "minted_fernet" glass_name = "glass of branca menta" glass_desc = "A glass of Branca Menta, perfect for those lazy and hot sunday summer afternoons." //Get lazy literally by drinking this - + value = 1 /datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) @@ -1949,6 +2047,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "blank_paper" glass_name = "glass of blank paper" glass_desc = "A fizzy cocktail for those looking to start fresh." + value = 1 /datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/M) if(ishuman(M) && M.job == "Mime") @@ -1966,6 +2065,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "champagne_glass" glass_name = "Champagne" glass_desc = "The flute clearly displays the slowly rising bubbles." + value = 1 /datum/reagent/consumable/ethanol/wizz_fizz name = "Wizz Fizz" @@ -1978,6 +2078,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "wizz_fizz" glass_name = "Wizz Fizz" glass_desc = "The glass bubbles and froths with an almost magical intensity." + value = 1 /datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/M) //A healing drink similar to Quadruple Sec, Ling Stings, and Screwdrivers for the Wizznerds; the check is consistent with the changeling sting @@ -1998,6 +2099,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "bug_spray" glass_name = "Bug Spray" glass_desc = "Your eyes begin to water as the sting of alcohol reaches them." + value = 1 /datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M) //Bugs should not drink Bug spray. @@ -2020,6 +2122,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "applejack_glass" glass_name = "Applejack" glass_desc = "You feel like you could drink this all neight." + value = 0.1 /datum/reagent/consumable/ethanol/jack_rose name = "Jack Rose" @@ -2032,6 +2135,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "jack_rose" glass_name = "Jack Rose" glass_desc = "Enough of these, and you really will start to suppose your toeses are roses." + value = 1 /datum/reagent/consumable/ethanol/turbo name = "Turbo" @@ -2044,6 +2148,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "turbo" glass_name = "Turbo" glass_desc = "A turbulent cocktail for outlaw hoverbikers." + value = 0.3 /datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/M) if(prob(4)) @@ -2062,6 +2167,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "old_timer" glass_name = "Old Timer" glass_desc = "WARNING! May cause premature aging!" + value = 2 /datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/M) if(prob(20)) @@ -2095,6 +2201,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "rubberneck" glass_name = "Rubberneck" glass_desc = "A popular drink amongst those adhering to an all synthetic diet." + value = 1 /datum/reagent/consumable/ethanol/duplex name = "Duplex" @@ -2107,6 +2214,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "duplex" glass_name = "Duplex" glass_desc = "To imbibe one component separately from the other is consider a great faux pas." + value = 1 /datum/reagent/consumable/ethanol/trappist name = "Trappist Beer" @@ -2119,6 +2227,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "trappistglass" glass_name = "Trappist Beer" glass_desc = "boozy Catholicism in a glass." + value = 1 /datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M) if(M.mind.isholy) @@ -2138,6 +2247,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_name = "Blazaam" glass_desc = "The glass seems to be sliding between realities. Doubles as a Berenstain remover." var/stored_teleports = 0 + value = 4 /datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/M) if(M.drunkenness > 40) @@ -2160,6 +2270,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "planet_cracker" glass_name = "Planet Cracker" glass_desc = "Although historians believe the drink was originally created to commemorate the end of an important conflict in man's past, its origins have largely been forgotten and it is today seen more as a general symbol of human supremacy." + value = 1 /datum/reagent/consumable/ethanol/commander_and_chief name = "Commander and Chief" @@ -2172,7 +2283,8 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_icon_state = "commander_and_chief" glass_name = "Commander and Chief" glass_desc = "The gems of this majestic chalice represent the departments and their Heads." - + value = 10 + /datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M) if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM)) M.heal_bodypart_damage(2,2,2) @@ -2196,6 +2308,7 @@ datum/reagent/consumable/ethanol/creme_de_coconut var/list/names = list("null fruit" = 1) //Names of the fruits used. Associative list where name is key, value is the percentage of that fruit. var/list/tastes = list("bad coding" = 1) //List of tastes. See above. pH = 4 + value = 4 /datum/reagent/consumable/ethanol/fruit_wine/on_new(list/data) names = data["names"] diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 36dc4725..3e185298 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -90,6 +90,7 @@ description = "The sweet juice of an apple, fit for all ages." color = "#ECFF56" // rgb: 236, 255, 86 taste_description = "apples" + pH = 3.2 // ~ 2.7 -> 3.7 /datum/reagent/consumable/poisonberryjuice name = "Poison Berry Juice" diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index f3df72cd..99694310 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -1,6 +1,7 @@ /datum/reagent/drug name = "Drug" id = "drug" + value = 12 metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" var/trippy = TRUE //Does this drug make you trip? diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index f451b1d3..00ff28c8 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -12,6 +12,7 @@ id = "consumable" taste_description = "generic food" taste_mult = 4 + value = 0.1 var/nutriment_factor = 1 * REAGENTS_METABOLISM var/quality = 0 //affects mood, typically higher for mixed drinks with more complex recipes @@ -91,6 +92,7 @@ name = "Vitamin" id = "vitamin" description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." + value = 0.5 brute_heal = 1 burn_heal = 1 @@ -106,6 +108,7 @@ description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying." color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil) taste_mult = 0.8 + value = 1 taste_description = "oil" nutriment_factor = 7 * REAGENTS_METABOLISM //Not very healthy on its own metabolization_rate = 10 * REAGENTS_METABOLISM @@ -156,6 +159,7 @@ metabolization_rate = 2 * REAGENTS_METABOLISM overdose_threshold = 200 // Hyperglycaemic shock taste_description = "sweetness" + value = 1 /datum/reagent/consumable/sugar/overdose_start(mob/living/M) to_chat(M, "You go into hyperglycaemic shock! Lay off the twinkies!") @@ -230,6 +234,7 @@ description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes." color = "#8BA6E9" // rgb: 139, 166, 233 taste_description = "mint" + value = 2 pH = 13 //HMM! I wonder /datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/M) @@ -431,6 +436,7 @@ /datum/reagent/consumable/sprinkles name = "Sprinkles" id = "sprinkles" + value = 3 description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." color = "#FF00FF" // rgb: 255, 0, 255 taste_description = "childhood whimsy" @@ -446,6 +452,7 @@ id = "peanut_butter" description = "A popular food paste made from ground dry-roasted peanuts." color = "#C29261" + value = 3 nutriment_factor = 15 * REAGENTS_METABOLISM taste_description = "peanuts" @@ -454,6 +461,7 @@ id = "cornoil" description = "An oil derived from various types of corn." nutriment_factor = 20 * REAGENTS_METABOLISM + value = 4 color = "#302000" // rgb: 48, 32, 0 taste_description = "slime" @@ -472,6 +480,7 @@ /datum/reagent/consumable/enzyme name = "Universal Enzyme" id = "enzyme" + value = 1 description = "A universal enzyme used in the preperation of certain chemicals and foods." color = "#365E30" // rgb: 54, 94, 48 taste_description = "sweetness" @@ -511,6 +520,7 @@ /datum/reagent/consumable/flour name = "Flour" id = "flour" + value = 0.5 description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID color = "#FFFFFF" // rgb: 0, 0, 0 @@ -528,6 +538,7 @@ id = "cherryjelly" description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." color = "#801E28" // rgb: 128, 30, 40 + value = 1 taste_description = "cherry" /datum/reagent/consumable/bluecherryjelly @@ -535,6 +546,7 @@ id = "bluecherryjelly" description = "Blue and tastier kind of cherry jelly." color = "#00F0FF" + value = 12 taste_description = "blue cherry" /datum/reagent/consumable/garlic //NOTE: having garlic in your blood stops vampires from biting you. @@ -561,6 +573,7 @@ /datum/reagent/consumable/rice name = "Rice" id = "rice" + value = 0.5 description = "tiny nutritious grains" reagent_state = SOLID nutriment_factor = 3 * REAGENTS_METABOLISM @@ -570,6 +583,7 @@ /datum/reagent/consumable/vanilla name = "Vanilla Powder" id = "vanilla" + value = 1 description = "A fatty, bitter paste made from vanilla pods." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM @@ -579,6 +593,7 @@ /datum/reagent/consumable/eggyolk name = "Egg Yolk" id = "eggyolk" + value = 1 description = "It's full of protein." nutriment_factor = 3 * REAGENTS_METABOLISM color = "#FFB500" @@ -587,6 +602,7 @@ /datum/reagent/consumable/corn_starch name = "Corn Starch" id = "corn_starch" + value = 2 description = "A slippery solution." color = "#f7f6e4" taste_description = "slime" @@ -594,6 +610,7 @@ /datum/reagent/consumable/corn_syrup name = "Corn Syrup" id = "corn_syrup" + value = 1 description = "Decays into sugar." color = "#fff882" metabolization_rate = 3 * REAGENTS_METABOLISM @@ -608,6 +625,7 @@ id = "honey" description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties." color = "#d3a308" + value = 15 nutriment_factor = 15 * REAGENTS_METABOLISM metabolization_rate = 1 * REAGENTS_METABOLISM taste_description = "sweetness" @@ -633,6 +651,7 @@ id = "mayonnaise" description = "An white and oily mixture of mixed egg yolks." color = "#DFDFDF" + value = 5 taste_description = "mayonnaise" /datum/reagent/consumable/tearjuice @@ -761,6 +780,7 @@ taste_mult = 8 taste_description = "sweetness" overdose_threshold = 17 + value = 0.2 /datum/reagent/consumable/astrotame/overdose_process(mob/living/carbon/M) if(M.disgust < 80) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 88b0fe4e..b1c9554b 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -8,6 +8,7 @@ /datum/reagent/medicine name = "Medicine" id = "medicine" + value = 2 taste_description = "bitterness" /datum/reagent/medicine/on_mob_life(mob/living/carbon/M) @@ -127,6 +128,7 @@ description = "Instantly restores all hearing to the patient, but does not cure deafness." color = "#6600FF" // rgb: 100, 165, 255 pH = 2 + value = 10 /datum/reagent/medicine/inacusiate/on_mob_life(mob/living/carbon/M) M.restoreEars() @@ -209,6 +211,7 @@ overdose_threshold = 30 taste_description = "fish" pH = 12.2 + value = 20 /datum/reagent/medicine/rezadone/on_mob_life(mob/living/carbon/M) M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that. @@ -243,6 +246,7 @@ color = "#ffeac9" metabolization_rate = 5 * REAGENTS_METABOLISM overdose_threshold = 50 + value = 3 /datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) if(iscarbon(M) && M.stat != DEAD) @@ -281,6 +285,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 25 pH = 10.7 + value = 4 /datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/M) if(M.getFireLoss() > 25) @@ -305,6 +310,7 @@ pH = 6.7 metabolization_rate = 5 * REAGENTS_METABOLISM overdose_threshold = 50 + value = 3 /datum/reagent/medicine/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) if(iscarbon(M) && M.stat != DEAD) @@ -347,6 +353,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) var/last_added = 0 var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active pH = 5.5 + value = 1 /datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M) if(last_added) @@ -427,6 +434,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 11.5 metabolization_rate = 5 * REAGENTS_METABOLISM overdose_threshold = 40 + value = 6 /datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1) if(iscarbon(M)) @@ -461,6 +469,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "ash" pH = 5 + value = 1 /datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) @@ -479,6 +488,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) metabolization_rate = 0.25 * REAGENTS_METABOLISM overdose_threshold = 30 pH = 2 + value = 5 /datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-0.5*REM, 0) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 85f42356..3c2702c1 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2,6 +2,7 @@ data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Blood" id = "blood" + value = 1 color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 description = "Blood from some creature." metabolization_rate = 5 //fast rate so it disappears fast. diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 90cb732a..c170858d 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -19,6 +19,7 @@ /datum/reagent/nitroglycerin name = "Nitroglycerin" id = "nitroglycerin" + value = 5 description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." color = "#808080" // rgb: 128, 128, 128 taste_description = "oil" @@ -29,6 +30,7 @@ description = "Keeps unstable chemicals stable. This does not work on everything." reagent_state = LIQUID color = "#FFFF00" + value = 3 taste_description = "metal" /datum/reagent/clf3 @@ -89,6 +91,7 @@ description = "Sucks everything into the detonation point." reagent_state = LIQUID color = "#210021" + value = 10 taste_description = "compressed bitterness" /datum/reagent/blackpowder @@ -97,6 +100,7 @@ description = "Explodes. Violently." reagent_state = LIQUID color = "#000000" + value = 5 metabolization_rate = 0.05 taste_description = "salt" @@ -164,6 +168,7 @@ description = "Very flammable." reagent_state = LIQUID color = "#FA00AF" + value = 1 taste_description = "burning" /datum/reagent/napalm/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 17ad95ba..161caded 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -226,11 +226,13 @@ desc = "A keg of aphrodisiac." icon_state = "pinkkeg" reagent_id = "aphro" + tank_volume = 150 /obj/structure/reagent_dispensers/keg/aphro/strong name = "keg of strong aphrodisiac" desc = "A keg of strong and addictive aphrodisiac." reagent_id = "aphro+" + tank_volume = 120 /obj/structure/reagent_dispensers/keg/milk name = "keg of milk" @@ -249,3 +251,4 @@ desc = "A keg of... wow that's a long name." icon_state = "bluekeg" reagent_id = "gargleblaster" + tank_volume = 100 diff --git a/code/modules/research/designs/autobotter_designs.dm b/code/modules/research/designs/autobotter_designs.dm new file mode 100644 index 00000000..7b56beaf --- /dev/null +++ b/code/modules/research/designs/autobotter_designs.dm @@ -0,0 +1,335 @@ +/////////////////////////////////// +//////////AutoBottler Designs////// +/////////////////////////////////// + +/datum/design/board/autobottler + name = "Machine Design (AutoBottler)" + desc = "Allows for the construction of circuit boards used to build an Autobottler." + id = "autobottler" + materials = list(MAT_GLASS = 2000) + build_path = /obj/item/circuitboard/machine/autobottler + category = list ("Misc. Machinery") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SERVICE + +/datum/design/bottle + materials = list(MAT_GLASS = 1200) + build_type = AUTOBOTTLER + category = list("Storge") + +/datum/design/bottle/wine + name = "Bottle Design (Wine)" + desc = "Allows for the blowing of Wine bottles." + id = "wine" + build_path = /obj/item/reagent_containers/food/drinks/bottle/wine/empty + +/datum/design/bottle/rum + name = "Bottle Design (Rum)" + desc = "Allows for the blowing of Rum bottles." + id = "rum" + build_path = /obj/item/reagent_containers/food/drinks/bottle/rum/empty + +/datum/design/bottle/gin + name = "Bottle Design (Gin)" + desc = "Allows for the blowing of Gin bottles." + id = "gin" + build_path = /obj/item/reagent_containers/food/drinks/bottle/gin/empty + +/datum/design/bottle/whiskey + name = "Bottle Design (Whiskey)" + desc = "Allows for the blowing of Whiskey bottles." + id = "whiskey" + build_path = /obj/item/reagent_containers/food/drinks/bottle/whiskey/empty + +/datum/design/bottle/vodka + name = "Bottle Design (Vodka)" + desc = "Allows for the blowing of Vodka bottles." + id = "vodka" + build_path = /obj/item/reagent_containers/food/drinks/bottle/vodka/empty + +/datum/design/bottle/tequila + name = "Bottle Design (Tequila)" + desc = "Allows for the blowing of Tequila bottles." + id = "tequila" + build_path = /obj/item/reagent_containers/food/drinks/bottle/tequila/empty + +/datum/design/bottle/patron + name = "Bottle Design (Patron)" + desc = "Allows for the blowing of Patron bottles." + id = "patron" + build_path = /obj/item/reagent_containers/food/drinks/bottle/patron/empty + +/datum/design/bottle/kahlua + name = "Bottle Design (Kahlua)" + desc = "Allows for the blowing of Kahlua bottles." + id = "kahlua" + build_path = /obj/item/reagent_containers/food/drinks/bottle/kahlua/empty + +/datum/design/bottle/sake + name = "Bottle Design (Sake)" + desc = "Allows for the blowing of Sake bottles." + id = "sake" + build_path = /obj/item/reagent_containers/food/drinks/bottle/sake/empty + +/datum/design/bottle/vermouth + name = "Bottle Design (Vermouth)" + desc = "Allows for the blowing of Vermouth bottles." + id = "vermouth" + build_path = /obj/item/reagent_containers/food/drinks/bottle/vermouth/empty + +/datum/design/bottle/goldschlager + name = "Bottle Design (Goldschlager)" + desc = "Allows for the blowing of Goldschlager bottles." + id = "goldschlager" + build_path = /obj/item/reagent_containers/food/drinks/bottle/goldschlager/empty + +/datum/design/bottle/hcider + name = "Bottle Design (Cider)" + desc = "Allows for the blowing of Cider bottles." + id = "hcider" + build_path = /obj/item/reagent_containers/food/drinks/bottle/hcider/empty + +/datum/design/bottle/cognac + name = "Bottle Design (Cognac)" + desc = "Allows for the blowing of Cognac bottles." + id = "cognac" + build_path = /obj/item/reagent_containers/food/drinks/bottle/cognac/empty + +/datum/design/bottle/absinthe + name = "Bottle Design (Absinthe)" + desc = "Allows for the blowing of Absinthe bottles." + id = "absinthe" + build_path = /obj/item/reagent_containers/food/drinks/bottle/absinthe/empty + +/datum/design/bottle/grappa + name = "Bottle Design (Grappa)" + desc = "Allows for the blowing of Grappa bottles." + id = "grappa" + build_path = /obj/item/reagent_containers/food/drinks/bottle/grappa/empty + +/datum/design/bottle/fernet + name = "Bottle Design (Fernet)" + desc = "Allows for the blowing of Fernet bottles." + id = "fernet" + build_path = /obj/item/reagent_containers/food/drinks/bottle/fernet/empty + +/datum/design/bottle/applejack + name = "Bottle Design (Applejack)" + desc = "Allows for the blowing of Applejack bottles." + id = "applejack" + build_path = /obj/item/reagent_containers/food/drinks/bottle/applejack/empty + +/datum/design/bottle/champagne + name = "Bottle Design (Champagne)" + desc = "Allows for the blowing of Champagne bottles." + id = "champagne" + build_path = /obj/item/reagent_containers/food/drinks/bottle/champagne/empty + +/datum/design/bottle/blazaam + name = "Bottle Design (Blazaam)" + desc = "Allows for the blowing of Blazaam bottles." + id = "blazaam" + build_path = /obj/item/reagent_containers/food/drinks/bottle/blazaam/empty + +/datum/design/bottle/trappist + name = "Bottle Design (Trappist)" + desc = "Allows for the blowing of Trappist bottles." + id = "trappist" + build_path = /obj/item/reagent_containers/food/drinks/bottle/trappist/empty + +/datum/design/bottle/grenadine + name = "Bottle Design (Grenadine)" + desc = "Allows for the blowing of Grenadine bottles." + id = "grenadine" + build_path = /obj/item/reagent_containers/food/drinks/bottle/grenadine/empty + +/datum/design/bottle/export + materials = list(MAT_GLASS = 1200) + build_type = AUTOBOTTLER + category = list("Brands") + +/datum/design/bottle/export/wine + name = "Export Design (Wine)" + desc = "Allows for the blowing, and bottling of Wine bottles." + id = "wine_export" + reagents_list = list("wine" = 100) + build_path = /obj/item/export/bottle/wine + +/datum/design/bottle/export/rum + name = "Export Design (Rum)" + desc = "Allows for the blowing, and bottling of Rum bottles." + id = "rum_export" + reagents_list = list("rum" = 100) + build_path = /obj/item/export/bottle/rum + +/datum/design/bottle/export/gin + name = "Export Design (Gin)" + desc = "Allows for the blowing, and bottling of Gin bottles." + id = "gin_export" + reagents_list = list("gin" = 100) + build_path = /obj/item/export/bottle/gin + +/datum/design/bottle/export/whiskey + name = "Export Design (Whiskey)" + desc = "Allows for the blowing, and bottling of Whiskey bottles." + id = "whiskey_export" + reagents_list = list("whiskey" = 100) + build_path = /obj/item/export/bottle/whiskey + +/datum/design/bottle/export/vodka + name = "Export Design (Vodka)" + desc = "Allows for the blowing, and bottling of 99% Vodka bottles." + id = "vodka_export" + reagents_list = list("vodka" = 99, "water" = 1) + build_path = /obj/item/export/bottle/vodka + +/datum/design/bottle/export/tequila + name = "Export Design (Tequila)" + desc = "Allows for the blowing, and bottling of Tequila bottles." + id = "tequila_export" + reagents_list = list("tequila" = 80, "lemon_juice" = 20) + build_path = /obj/item/export/bottle/tequila + +/datum/design/bottle/export/patron + name = "Export Design (Patron)" + desc = "Allows for the blowing, and bottling of Patron bottles." + id = "patron_export" + reagents_list = list("patron" = 100) + build_path = /obj/item/export/bottle/patron + +/datum/design/bottle/export/kahlua + name = "Export Design (Kahlua)" + desc = "Allows for the blowing, and bottling of Kahlua bottles." + id = "kahlua_export" + reagents_list = list("kahlua" = 100) + build_path = /obj/item/export/bottle/kahlua + +/datum/design/bottle/export/sake + name = "Export Design (Sake)" + desc = "Allows for the blowing, and bottling of Sake bottles." + id = "sake_export" + reagents_list = list("sake" = 80, "rice" = 10, "sugar" = 10) + build_path = /obj/item/export/bottle/sake + +/datum/design/bottle/export/vermouth + name = "Export Design (Vermouth)" + desc = "Allows for the blowing, and bottling of Vermouth bottles." + id = "vermouth_export" + reagents_list = list("vermouth" = 100) + build_path = /obj/item/export/bottle/vermouth + +/datum/design/bottle/export/goldschlager + name = "Export Design (Goldschlager)" + desc = "Allows for the blowing, and bottling of Goldschlager bottles." + id = "goldschlager_export" + reagents_list = list("goldschlager" = 100) + build_path = /obj/item/export/bottle/goldschlager + +/datum/design/bottle/export/hcider + name = "Export Design (Cider)" + desc = "Allows for the blowing, and bottling of Cider bottles." + id = "hcider_export" + reagents_list = list("hcider" = 30, "water" = 20) + build_path = /obj/item/export/bottle/hcider + +/datum/design/bottle/export/cognac + name = "Export Design (Cognac)" + desc = "Allows for the blowing, and bottling of Cognac bottles." + id = "cognac_export" + reagents_list = list("cognac" = 100) + build_path = /obj/item/export/bottle/cognac + +/datum/design/bottle/export/absinthe + name = "Export Design (Absinthe)" + desc = "Allows for the blowing, and bottling of Absinthe bottles." + reagents_list = list("absinthe" = 100) + id = "absinthe_export" + build_path = /obj/item/export/bottle/absinthe + +/datum/design/bottle/export/grappa + name = "Export Design (Grappa)" + desc = "Allows for the blowing, and bottling of Grappa bottles." + id = "grappa_export" + reagents_list = list("grappa" = 100) + build_path = /obj/item/export/bottle/grappa + +/datum/design/bottle/export/fernet + name = "Export Design (Fernet)" + desc = "Allows for the blowing, and bottling of Fernet bottles." + id = "fernet_export" + reagents_list = list("fernet" = 100) + build_path = /obj/item/export/bottle/fernet + +/datum/design/bottle/export/applejack + name = "Export Design (Applejack)" + desc = "Allows for the blowing, and bottling of Applejack bottles." + id = "applejack_export" + reagents_list = list("applejack" = 50, "gin" = 10) + build_path = /obj/item/export/bottle/applejack + +/datum/design/bottle/export/champagne + name = "Export Design (Champagne)" + desc = "Allows for the blowing, and bottling of Champagne bottles." + id = "champagne_export" + reagents_list = list("champagne" = 90, "co2" = 10) + build_path = /obj/item/export/bottle/champagne + +/datum/design/bottle/export/blazaam + name = "Export Design (Blazaam)" + desc = "Allows for the blowing, and bottling of Blazaam bottles." + id = "blazaam_export" + reagents_list = list("blazaam" = 80, "holywater" = 20) + build_path = /obj/item/export/bottle/blazaam + +/datum/design/bottle/export/trappist + name = "Export Design (Trappist)" + desc = "Allows for the blowing, and bottling of Trappist bottles." + id = "trappist_export" + reagents_list = list("trappist" = 100) + build_path = /obj/item/export/bottle/trappist + +/datum/design/bottle/export/grenadine + name = "Export Design (Grenadine)" + desc = "Allows for the blowing, and bottling of Grenadine bottles." + id = "grenadine_export" + reagents_list = list("grenadine" = 100) + build_path = /obj/item/export/bottle/grenadine + +/datum/design/bottle/export/minikeg + name = "Export Design (Minikeg)" + desc = "Allows for the fabication, and bottling of Minikeg of craft beer." + id = "minikeg" + category = list("Beers") + reagents_list = list("light_beer" = 100) + build_path = /obj/item/export/bottle/minikeg + +/datum/design/bottle/export/blooddrop + name = "Export Design (Blooddrop)" + desc = "Allows for the blowing, and bottling of Blooddrop bottles." + id = "blooddrop" + category = list("Wines") + reagents_list = list("champagne" = 30, "co2" = 30, "wine" = 10, "grape_juice" = 30) + build_path = /obj/item/export/bottle/blooddrop + +/datum/design/bottle/export/slim_gold + name = "Export Design (Slim Gold)" + desc = "Allows for the blowing, and bottling of Slim Gold bottles." + id = "slim_gold" + category = list("Beers") + reagents_list = list("gold" = 10, "co2" = 10, "rum" = 30, "beer" = 40) + build_path = /obj/item/export/bottle/slim_gold + +/datum/design/bottle/export/white_bloodmoon + name = "Export Design (White Bloodmoon)" + desc = "Allows for the blowing, and bottling of White Bloodmoon bottles." + id = "white_bloodmoon" + category = list("Wines") + reagents_list = list("synthflesh" = 50, "blood" = 50, "gib" = 10) + build_path = /obj/item/export/bottle/white_bloodmoon + +/datum/design/bottle/export/greenroad + name = "Export Design (Greenroad)" + desc = "Allows for the blowing, and bottling of Greenroad bottles." + id = "greenroad" + reagents_list = list("vitfro" = 50, "rum" = 50, "ash" = 10) + category = list("Beers") + build_path = /obj/item/export/bottle/greenroad \ No newline at end of file diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index 42cd5ff1..855c741e 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -365,3 +365,7 @@ /datum/techweb/specialized/autounlocking/exofab allowed_buildtypes = MECHFAB + +/datum/techweb/specialized/autounlocking/autobottler + design_autounlock_buildtypes = AUTOBOTTLER + allowed_buildtypes = AUTOBOTTLER diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index b4a860c8..1d221480 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -44,7 +44,6 @@ description = "Various tools fit for basic mech units" design_ids = list("mech_drill", "mech_mscanner", "mech_extinguisher", "mech_cable_layer") - /datum/techweb_node/surplus_lims id = "surplus_lims" display_name = "Basic Prosthetics" @@ -52,8 +51,20 @@ starting_node = TRUE prereq_ids = list("biotech") design_ids = list("basic_l_arm", "basic_r_arm", "basic_r_leg", "basic_l_leg") - export_price = 5000 +/datum/techweb_node/blueprinted_bottles + id = "blueprinted_bottles" + display_name = "License Bottling" + description = "Some Branded bottles to print and export." + starting_node = TRUE + design_ids = list("gin", "wine", "whiskey", "vodka", "tequila", "patron", "rum", "kahlua", "vermouth", "goldschlager", "hcider", "cognac", "absinthe", "grappa", "sake", "fernet", "applejack", "champagne", "blazaam", "trappist", "grenadine", "autobottler") + +/datum/techweb_node/blueprinted_exports + id = "blueprinted_exports" + display_name = "License Exports" + description = "Some Branded bottles to print and export." + starting_node = TRUE + design_ids = list("gin_export", "wine_export", "whiskey_export", "vodka_export", "tequila_export", "patron_export", "rum_export", "kahlua_export", "vermouth_export", "goldschlager_export", "hcider_export", "cognac_export", "absinthe_export", "grappa_export", "sake_export", "fernet_export", "applejack_export", "champagne_export", "blazaam_export", "trappist_export", "grenadine_export") /////////////////////////Biotech///////////////////////// /datum/techweb_node/biotech @@ -83,6 +94,14 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 +/datum/techweb_node/bottle_exports + id = "bottle_exports" + display_name = "Legal Bottling" + prereq_ids = list("blueprinted_bottles") + description = "New bottles for printing and selling." + design_ids = list("minikeg", "blooddrop", "slim_gold", "white_bloodmoon", "greenroad") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 250) + /datum/techweb_node/advance_lims id = "advance_lims" display_name = "Upgraded Prosthetics" diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 1c27af05..2ac6df76 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -166,5 +166,13 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( msg += export_text + "\n" SSshuttle.points += ex.total_value[E] + for(var/datum/reagent/R in ex.total_reagents) + var/amount = ex.total_reagents[R] + var/value = amount*R.value + if(!value) + continue + msg += "[value] credits: received [amount]u of [R.name].\n" + SSshuttle.points += value + SSshuttle.centcom_message = msg investigate_log("Shuttle contents sold for [SSshuttle.points - presale_points] credits. Contents: [ex.exported_atoms || "none."] Message: [SSshuttle.centcom_message || "none."]", INVESTIGATE_CARGO) diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 3cd7388378f66a55d7d823c000fda1aa58362c97..f1fafb8946acb62a2f2a071315c35b0058f589ee 100644 GIT binary patch delta 29110 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�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%0Dm-hjE}Ds@M4H`7gFJgvB_-N_b>OW@## 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 delta 23563 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 ul%;8kixp2z58<`>o!hgDg8boIh+t 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 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index 4cb8ea0c..ebd0b597 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -6,6 +6,7 @@ id = "fermi" taste_description = "affection and love!" can_synth = FALSE + value = 20 //SplitChem = TRUE impure_chem = "fermiTox"// What chemical is metabolised with an inpure reaction inverse_chem_val = 0.25 // If the impurity is below 0.5, replace ALL of the chem with inverse_chemupon metabolising @@ -178,6 +179,7 @@ inverse_chem = "nanite_b_goneTox" //At really impure vols, it just becomes 100% inverse taste_description = "what can only be described as licking a battery." pH = 9 + value = 90 can_synth = FALSE /datum/reagent/fermi/nanite_b_gone/on_mob_life(mob/living/carbon/C) diff --git a/tgstation.dme b/tgstation.dme index 8af24b4d..9277ae81 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1502,6 +1502,7 @@ #include "code\modules\cargo\bounties\slime.dm" #include "code\modules\cargo\bounties\special.dm" #include "code\modules\cargo\bounties\virus.dm" +#include "code\modules\cargo\exports\food_wine.dm" #include "code\modules\cargo\exports\gear.dm" #include "code\modules\cargo\exports\large_objects.dm" #include "code\modules\cargo\exports\manifest.dm" @@ -1713,6 +1714,7 @@ #include "code\modules\fields\turf_objects.dm" #include "code\modules\flufftext\Dreaming.dm" #include "code\modules\flufftext\Hallucination.dm" +#include "code\modules\food_and_drinks\autobottler.dm" #include "code\modules\food_and_drinks\food.dm" #include "code\modules\food_and_drinks\pizzabox.dm" #include "code\modules\food_and_drinks\drinks\drinks.dm" @@ -2632,6 +2634,7 @@ #include "code\modules\research\server.dm" #include "code\modules\research\stock_parts.dm" #include "code\modules\research\designs\AI_module_designs.dm" +#include "code\modules\research\designs\autobotter_designs.dm" #include "code\modules\research\designs\biogenerator_designs.dm" #include "code\modules\research\designs\bluespace_designs.dm" #include "code\modules\research\designs\computer_part_designs.dm" From 82daa9b75ef4daaf1d87a2545e90b24176a203a7 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 10 Nov 2019 11:30:33 -0700 Subject: [PATCH 8/8] Merge pull request #9709 from Trilbyspaceclone/cargo_memes_3 Adds 8 more sci crates to cargo --- code/game/objects/items/theft_tools.dm | 26 +++++++++++++++- code/modules/cargo/packs.dm | 18 +++++------ code/modules/cargo/packs/livestock.dm | 7 ----- code/modules/cargo/packs/science.dm | 40 ++++++++++++++++++++++++- icons/obj/nuke_tools.dmi | Bin 4423 -> 5017 bytes 5 files changed, 73 insertions(+), 18 deletions(-) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 243787dc..9b9fae7c 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -49,6 +49,10 @@ lefthand_file = 'icons/mob/inhands/misc/sheets_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/sheets_righthand.dmi' var/obj/item/nuke_core/core + var/nt =FALSE //For the lid + +/obj/item/nuke_core_container/nt + nt = TRUE /obj/item/nuke_core_container/Destroy() QDEL_NULL(core) @@ -67,10 +71,13 @@ /obj/item/nuke_core_container/proc/seal() if(istype(core)) STOP_PROCESSING(SSobj, core) - icon_state = "core_container_sealed" playsound(src, 'sound/items/deconstruct.ogg', 60, 1) if(ismob(loc)) to_chat(loc, "[src] is permanently sealed, [core]'s radiation is contained.") + if(nt != TRUE) + icon_state = "core_container_sealed" + else + icon_state = "core_container_sealed_nt" /obj/item/nuke_core_container/attackby(obj/item/nuke_core/core, mob/user) if(istype(core)) @@ -92,6 +99,11 @@ toolspeed = 0.5 random_color = FALSE +/obj/item/screwdriver/nuke/nt + desc = "A screwdriver with an ultra thin diamon tip." + toolspeed = 0.25 + icon_state = "screwdriver_nt" + /obj/item/paper/guides/antag/nuke_instructions info = "How to break into a Nanotrasen self-destruct terminal and remove its plutonium core:
\

" +/obj/item/paper/guides/nt/nuke_instructions + info = "How to remove its plutonium core:
\ +
    \ +
  • Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel
  • \ +
  • Dislodge and remove the front panel with a crowbar
  • \ +
  • Cut the inner metal plate with a welding tool
  • \ +
  • Pry off the inner plate with a crowbar to expose the radioactive core
  • \ +
  • Use the core container to remove the plutonium core; the container will take some time to seal
  • \ +
  • Send core back to CC
  • \ +
" + + // STEALING SUPERMATTER /obj/item/paper/guides/antag/supermatter_sliver diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 89c463f3..4c9ddfe3 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1,20 +1,20 @@ /datum/supply_pack var/name = "Crate" var/group = "" - var/hidden = FALSE - var/contraband = FALSE + var/hidden = FALSE //Aka emag only + var/contraband = FALSE //Hacking the console with a multitool var/cost = 700 // Minimum cost, or infinite points are possible. - var/access = FALSE - var/access_any = FALSE - var/list/contains = null - var/crate_name = "crate" + var/access = FALSE //What access does the Crate itself need? + var/access_any = FALSE //Do we care about access? + var/list/contains = null //What items are in the crate + var/crate_name = "crate" //The crate that comes with each order var/desc = ""//no desc by default - var/crate_type = /obj/structure/closet/crate + var/crate_type = /obj/structure/closet/crate //what kind of crate - Locked crates needed for access locked crates 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/admin_spawned = FALSE + var/DropPodOnly = FALSE //only usable by the Bluespace Drop Pod via the express cargo console + var/admin_spawned = FALSE //Can only an admin spawn this crate? /datum/supply_pack/proc/generate(atom/A) var/obj/structure/closet/crate/C = new crate_type(A) diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm index 29a6be78..99a6dd00 100644 --- a/code/modules/cargo/packs/livestock.dm +++ b/code/modules/cargo/packs/livestock.dm @@ -127,13 +127,6 @@ contains = list(/mob/living/simple_animal/hostile/retaliate/goose) crate_name = "goose crate" -/datum/supply_pack/critter/monkey - name = "Monkey Cube Crate" - desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" - cost = 1500 - contains = list (/obj/item/storage/box/monkeycubes) - 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!" diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm index fa6ef393..c94d72f0 100644 --- a/code/modules/cargo/packs/science.dm +++ b/code/modules/cargo/packs/science.dm @@ -22,7 +22,7 @@ /datum/supply_pack/science/beakers name = "Chemistry Beakers Crate" desc = "Glassware for any chemistry lab! Contains four small beakers, three large, two plastic, and one metamaterial. As well as three droppers and two pairs of latex gloves." - cost = 2000 + cost = 1500 contains = list(/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/beaker, @@ -72,6 +72,13 @@ /obj/item/integrated_electronics/wirer) crate_name = "circuitry starter pack crate" +/datum/supply_pack/science/monkey + name = "Monkey Cube Crate" + desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" + cost = 2000 + contains = list (/obj/item/storage/box/monkeycubes) + crate_name = "monkey cube crate" + /datum/supply_pack/science/nitrilegloves name = "Nitrile Gloves Crate" desc = "Handling toxic chemicals? Well worry not, keep your flesh intact with some nitrile made gloves! Contains three pairs of nitrile gloves." @@ -81,6 +88,17 @@ /obj/item/clothing/gloves/color/latex/nitrile) crate_name = "nitrile gloves crate" +/datum/supply_pack/science/nuke_b_gone + name = "Nuke Defusal Kit" + desc = "Contains set of tools to defuse a nuke." + cost = 7500 //Usefull for traitors/nukies that fucked up + dangerous = TRUE + DropPodOnly = TRUE + contains = list(/obj/item/nuke_core_container/nt, + /obj/item/screwdriver/nuke/nt, + /obj/item/paper/guides/nt/nuke_instructions) + crate_name = "safe defusal kit storage" + /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 Toxins access to open." @@ -101,6 +119,15 @@ crate_name = "plasma assembly crate" crate_type = /obj/structure/closet/crate/secure/plasma +/datum/supply_pack/science/relic + name = "Relic Crate" + desc = "Ever want to play with old discounted toys? Look no more. Contains two relics." + cost = 1000 + contraband = TRUE + contains = list(/obj/item/relic, + /obj/item/relic) + crate_name = "relic crate" + /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 three proximity sensors, two high-powered cells, six flashes, and an electrical toolbox. Requires Robotics access to open." @@ -137,6 +164,17 @@ crate_name = "slime core crate" crate_type = /obj/structure/closet/crate/secure/science +/datum/supply_pack/science/supermater + name = "Supermatter Extraction Tools Crate" + desc = "Contains a set of tools to extract a sliver of supermatter. Consult your CE today!" + cost = 7500 //Usefull for traitors that fucked up + hidden = TRUE + contains = list(/obj/item/nuke_core_container/supermatter, + /obj/item/scalpel/supermatter, + /obj/item/hemostat/supermatter, + /obj/item/paper/guides/antag/supermatter_sliver) + crate_name = "supermatter extraction kit crate" + /datum/supply_pack/science/tablets name = "Tablet Crate" desc = "What's a computer? Contains five cargo tablets." diff --git a/icons/obj/nuke_tools.dmi b/icons/obj/nuke_tools.dmi index 2c10b5424ff2641a91825db79f6df0f38c828750..799c4baabbc7070fabb5471bbe8c865d8f4c477b 100644 GIT binary patch literal 5017 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 Af&c&j delta 4309 zcmX|Fc{r4B7k`@|X$Py*Hnb$5PBN8b)*$HEb?4c-R z5VBQdH{ax7BdV0080@EYXE?pO%&z_>kG%T zEG~!*cV@eLh6w&pB@r|X7?vj1Th9}dLdwS_QVwYwFZ@|5y6dXKewbB3K8m^VN7L5Q zgma%|hx1e=3-cD&vY5_>Gc#XyfAzHO?CFDdZzE7CI+}bB{p~(tV))){=?AUm?8pve z2%jX@tFUwT`*+EvxVTM{v=l^zK+kHF-c9)t#%xxT`1dR?hC_?}wG<9j$c)iJ7xC8l zWdsomC6kQJ~uAI44Z@6pbHXr|?uqI^0lsAUeib6^Bj(JA3AG0RXX} ztD$P<|7!I$=yht2ySoLRh}OI;dM-6l#uz0)K*~M&9&r_EToR&lwa-QMrwW_tDuKJZ z=mY<27NOG;vb;`eWy3d9Vc8^^GeZ1C{zYD{w2SC?7aU8HaE`iuVL2@*02@JJ&8j6%y+my1j3os5Qa+Df(!T1?3~t+ z$B9oB>v2rG0%o-J`gM^Bn*-AZyY?B?c`*g0|1~*;`7&_%bPn?S-a0IdN6*T z7{#7p*6h*o54@27* ze#auoqYVd2Zkiwbr;Zx{;WNgs~kwE6~LF>|9Xj_cbTrap_6*6l#z|x)_F=4JwJzT1*z1aQ! ziM;}otIILSVyp*B0Eedxf91`!06O}iW)umI`>ArN4?&z(B~j>;iH$xqnR>*~GIzOB zkVCsqKUAC>_w9yH)T9Wj9!)o!O#oDFMPEH`k0bXo zgZnIp`L4MtzK^RF@EdFWBPmXM$JgQxnuz(ge4`6@N+3!nQW%Bq@zLkajNJk@G408I zVeG>Oh7n^x$(V()#j8VmqNK0urwU-x8KUuPHSo#@M*!Z@yNY;73R5;d@EVxRVjQKf zxjfrIYLnB3zTF*cClJxNHOF&WsImo4PL$-GoLd+;!ucm z|4;4r;s-NI9gqr*YRJDKbZu9!aUBlHWh@Y_!TR-^A2SZnu?-C89AHq{w)qifzhZpX z6TZc2J?HN6V&&f7U8FRN{Qd&x__j17?Q7_klK}%5Z_R<%3^9~3PEREX;_7YLiQ3+2 zoq=^e6ximooAGS?i~N_iC%!3pVNN9&#$+ZDYwwdws(#Y zTq{uVslc<+l-arzyXmt*SJX=>jon&O2OmwPsf|WaL!Jyj154S$o^UJuEu&wbd&!_> znUNsvaOJ{lUbjVTw@Z~k7 z{NfgtyY;~fPI^$UrM{BAqpooQ3P^52i4Qvm9J=~ty$oIZ4cRG6D|@HV-Yi#reWEC_ z7+hSr`3mp-wD@RI{`XD%jz>8r4p=F7ncz~oD{4jij3kw~UNQ$wAz>id z*Q$}Xas)k^6h4~q81ToGPrBwnQsQ?9fh^Ja>I&sgwN_}`phNSlF~EG-*)Qj)CMHs! z64YXJJ4%e0FfDo!rP9|HWl0cEi~OXMxgD+EbYQkj1uUf>F-cWpuP!EG^>CA~ZU4(M z(wi!g|1fgUif^(QjyPGPM$Pk##Fimcyx8(plK#LjN#o3{VEnwcpee=o=9>lNNLE0a znbKWtx|dzIDM)h0wO?VaIC;+rr}Y(c)2;__8ga(p!v0Urn{)xol+ZgPwOn?Y@;3dG z)KF?#V7J%tbJ2B&=|n6*S295>KjjJ5Jt#UoAKxfB!$P--AGIy~GxDwslh0=XZ;(#W zW<1@;n58NE3E~_ptZFG#dvf>E3#Ry&Dt;bD=Hzn899FDt7PjTOYLAJH#2%aypVm5X z+E$^olj7N;8| zuQI}WujgGg6foK?M>Qb)I&s=lQ+q}G%}xP_5k4+YlfSSeK{TMM!IGHT$?rV%8yXec z6ZE{SHEX}`e!o`Df6a&|WLC0I)~T1!Hju>hcuO+IRUS3cZJ5f6i*d7ZPLC0kGN} zVi?R#V{7MWCkCW0UoO~B{7f2>RNegm58JHK5sPA#;@JKg7kR8Fa6vts&HdI<5VsLJW0a{qzJpkJkz2O`blv6SskOi)YWoFyGM1GkNb@F^eWOfv~jBAx!m-=I6-KZn;rwoER=Mm@>@eyFpE~xF08-?C8 z(^Om@KXF(}QTIWqHGg+Le9y(haJrvr2}WH(s=|!yKE$480Q6I(R9%;smYz+;t$H?X zM6m$o6?Y^a`S{rV{_;8n9M8pkQw{&PcTH3`#wAw4-UF|@Bwzb{=r;fah|)+rrT3k%K^Ic?5{p+F|D z#>u_4#&vhyP-brdsK~bl?>Blxgp}n7+{Lv$;u!J=6^Pi%I`w$wY@kTS%vl+rP0kSr zb1OvZOXXKq5{j_a^n)${<*-r*Vf^(`tpC;NStgkn;_@XHfbbe87Hc6vq-F4rPz@qk zZ5iA~J z3&@VU%4rY5_|ib?s#HF#p-ekUGf)mWlJfhZ0fkbgI2%; z$aC{~jlU$N_wXCPM9s|acZ*3Xy#Za1=n#2JGGiAmsT2=KkH*UEk(z%}=Am3XFH4Iq zM=3Y&AV`{)5$|;32qIG2@9@Pry})K7ACXE1^5_qgYsIHsh7C4r(U4QR29w?^Xh@G{ z#U?Jw8zxS1R#+|-mwtcx@}<4}28`7j>2KiKShrm2YVw*MH^F6em z6tZ?=v|bqlo612w)l4pHnAbI&|ES!wU|DxlVix>GU-!WcZE0cWz1gWPo7(eYoY5oI zEo0P{fHhtSU^Nv(Ok*o_sB27gL_5V^$Wf+?*+ z9yIW~y?l3jcQ@gnxkNk3>F0~zYK_xVpM#CnKf`o}sbtrcZ$3u#w4JL0nYZE%cVW>% zb$^sl=8WLoIp1WOZ~VnC6;Y`=LNrO9%axukWc=8Ag^=(h>)x-5{-Lg zMqQVmu9^MbAW8m+K_@J)u4>xYpcz$FS_Tr1u#m6;geu3t=yXD9Y5Kr$0C%odyc!59 zV-HqjGu;@^IlsFmBFl0;m?IJyWxa{ zRR>q7_Arc?gKc`o+sJ;r7a!=SPc9426L1pN0QP1RBmv;loo}o_!E~_sod;GxNYMQB zDdeF~;u*V<74EMt32D?#vxUJ}`y!m*15L0UuOh?iG2#=-a~Ejj*a9o$mFN2qK$*o3 z1lT#;QeIeFgW2NAh!4-jEEs`8f3YVUxssLzWh0n9+I;4%hfhk`X1>AgOC5XlMg=_j zguZHIrv3qW#^P^Rg;a6Y<ynx~%hKQs($OLo^@l+SeoUf<>+C8<|H;Mg*67&c+Kr=Qwkb?g^4$>qxbu z?uKHl+(}aaY|Zo SPtd