module things, jfc
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
|
||||
/datum/bounty/item/assistant/skateboard
|
||||
name = "Skateboard"
|
||||
description = "Nanotrasen has determined walking to be a wasteful. Ship a skateboard to CentCom to speed operations up."
|
||||
description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up."
|
||||
reward = 900 // the tony hawk
|
||||
wanted_types = list(/obj/vehicle/ridden/scooter/skateboard)
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
description = "Central Command will be holding a business convention this year. Ship a few briefcases in support."
|
||||
reward = 2500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/storage/briefcase)
|
||||
wanted_types = list(/obj/item/storage/briefcase, /obj/item/storage/secure/briefcase)
|
||||
|
||||
/datum/bounty/item/assistant/sunglasses
|
||||
name = "Sunglasses"
|
||||
@@ -104,43 +104,12 @@
|
||||
required_count = 2
|
||||
wanted_types = list(/obj/item/clothing/glasses/sunglasses)
|
||||
|
||||
/datum/bounty/item/assistant/gondola_hide
|
||||
name = "Gondola Hide"
|
||||
description = "Central Command has recently learned of strange creatures called Gondolas. If you catch one, ship its hide back to CentCom."
|
||||
reward = 5000
|
||||
wanted_types = list(/obj/item/stack/sheet/animalhide/gondola)
|
||||
|
||||
/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
|
||||
wanted_types = list(/obj/item/stack/sheet/animalhide/monkey)
|
||||
|
||||
/datum/bounty/item/assistant/heart
|
||||
name = "Heart"
|
||||
description = "Commander Johnson is in critical condition after suffering a heart attack. Doctors say he needs a new heart fast. Ship one, pronto!"
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/organ/heart)
|
||||
|
||||
/datum/bounty/item/assistant/lung
|
||||
name = "Lungs"
|
||||
description = "A recent explosion at Central Command has left multiple staff with punctured lungs. Ship spare lungs to be rewarded."
|
||||
reward = 3000
|
||||
required_count = 1
|
||||
wanted_types = list(/obj/item/organ/lungs)
|
||||
|
||||
/datum/bounty/item/assistant/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 = 3000
|
||||
wanted_types = list(/obj/item/organ/appendix)
|
||||
|
||||
/datum/bounty/item/assistant/lizard_tail
|
||||
name = "Lizard Tail"
|
||||
description = "The Wizard Federation has made off with Nanotrasen's supply of lizard tails. While CentCom is dealing with the wizards, can the station spare a tail of their own?"
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/organ/tail/lizard)
|
||||
|
||||
/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."
|
||||
@@ -150,23 +119,11 @@
|
||||
|
||||
/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. "
|
||||
description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him."
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/comfy)
|
||||
|
||||
/datum/bounty/item/assistant/revolver
|
||||
name = "Revolver"
|
||||
description = "Captain Johann of station 12 has challenged Captain Vic of station 11 to a duel. He's asked for help securing an appropriate revolver to use."
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/item/gun/ballistic/revolver)
|
||||
|
||||
/datum/bounty/item/assistant/hand_tele
|
||||
name = "Hand Tele"
|
||||
description = "Central Command has come up with a genius idea: Why not teleport cargo rather than ship it? Send over a hand tele, receive payment, then wait 6-8 years while they deliberate."
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/item/hand_tele)
|
||||
|
||||
/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."
|
||||
@@ -230,7 +187,7 @@
|
||||
|
||||
/datum/bounty/item/assistant/bonfire
|
||||
name = "Lit Bonfire"
|
||||
description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Ship a lit bonfire to warm them up."
|
||||
description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Ship a lit bonfire to warm them up."
|
||||
reward = 5000
|
||||
wanted_types = list(/obj/structure/bonfire)
|
||||
|
||||
@@ -240,31 +197,21 @@
|
||||
var/obj/structure/bonfire/B = O
|
||||
return !!B.burning
|
||||
|
||||
/datum/bounty/item/assistant/plasma_tank
|
||||
name = "Full Tank of Plasma"
|
||||
description = "Station 12 has requested supplies to set up a singularity engine. In particular, they request 28 moles of plasma."
|
||||
reward = 2500
|
||||
wanted_types = list(/obj/item/tank)
|
||||
var/moles_required = 20 // A full tank is 28 moles, but CentCom ignores that fact.
|
||||
|
||||
/datum/bounty/item/assistant/plasma_tank/applies_to(obj/O)
|
||||
if(!..())
|
||||
return FALSE
|
||||
var/obj/item/tank/T = O
|
||||
if(!T.air_contents.gases[/datum/gas/plasma])
|
||||
return FALSE
|
||||
return T.air_contents.gases[/datum/gas/plasma][MOLES] >= moles_required
|
||||
|
||||
/datum/bounty/item/assistant/corgimeat
|
||||
name = "Raw Corgi Meat"
|
||||
description = "The Syndicate recently stole all of CentCom's corgi meat. Ship out a replacement immediately."
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/meat/slab/corgi)
|
||||
|
||||
/datum/bounty/item/chef/action_figures
|
||||
/datum/bounty/item/assistant/action_figures
|
||||
name = "Action Figures"
|
||||
description = "The vice president's son saw an ad for action figures on the telescreen and now he won't shut up about them. Ship some to ease his complaints."
|
||||
reward = 4000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/toy/figure)
|
||||
|
||||
/datum/bounty/item/assistant/tail_whip
|
||||
name = "Nine Tails whip"
|
||||
description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails."
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/melee/chainofcommand/tailwhip)
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
/datum/bounty/item/botany
|
||||
reward = 5000
|
||||
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
|
||||
|
||||
/datum/bounty/item/botany/New()
|
||||
..()
|
||||
description = "Central Command's head chef is looking to prepare a fine [foodtype] with [name]. [bonus_desc]"
|
||||
reward += multiplier * 1000
|
||||
required_count = rand(5, 10)
|
||||
|
||||
/datum/bounty/item/botany/ambrosia_vulgaris
|
||||
name = "Ambrosia Vulgaris Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris)
|
||||
foodtype = "stew"
|
||||
|
||||
/datum/bounty/item/botany/ambrosia_gaia
|
||||
name = "Ambrosia Gaia Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia)
|
||||
multiplier = 4
|
||||
foodtype = "stew"
|
||||
|
||||
/datum/bounty/item/botany/apple_golden
|
||||
name = "Golden Apples"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/apple/gold)
|
||||
multiplier = 4
|
||||
foodtype = "dessert"
|
||||
|
||||
/datum/bounty/item/botany/banana
|
||||
name = "Bananas"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/banana)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace)
|
||||
foodtype = "banana split"
|
||||
|
||||
/datum/bounty/item/botany/banana_bluespace
|
||||
name = "Bluespace Bananas"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace)
|
||||
multiplier = 2
|
||||
foodtype = "banana split"
|
||||
|
||||
/datum/bounty/item/botany/beans_koi
|
||||
name = "Koi Beans"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/koibeans)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/berries_death
|
||||
name = "Death Berries"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/death)
|
||||
multiplier = 2
|
||||
bonus_desc = "He insists that \"he knows what he's doing\"."
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/berries_glow
|
||||
name = "Glow-Berries"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/glow)
|
||||
multiplier = 2
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/cannabis
|
||||
name = "Cannabis Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white, /obj/item/reagent_containers/food/snacks/grown/cannabis/death, /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate)
|
||||
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)
|
||||
multiplier = 6
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_death
|
||||
name = "Deathweed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/death)
|
||||
multiplier = 6
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_ultimate
|
||||
name = "Omega Weed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate)
|
||||
multiplier = 6
|
||||
bonus_desc = "Under no circumstances mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/wheat
|
||||
name = "Wheat Grains"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/wheat)
|
||||
|
||||
/datum/bounty/item/botany/rice
|
||||
name = "Rice Grains"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/rice)
|
||||
|
||||
/datum/bounty/item/botany/chili
|
||||
name = "Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/chili)
|
||||
|
||||
/datum/bounty/item/botany/chili
|
||||
name = "Ice Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/icepepper)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/chili
|
||||
name = "Ghost Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ghost_chili)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/citrus_lime
|
||||
name = "Limes"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime)
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/citrus_lemon
|
||||
name = "Lemons"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lemon)
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/citrus_oranges
|
||||
name = "Oranges"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/orange)
|
||||
bonus_desc = "Do not ship lemons or limes." //I vanted orahnge!
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/eggplant
|
||||
name = "Eggplants"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/eggplant)
|
||||
bonus_desc = "Not to be confused with egg-plants."
|
||||
|
||||
/datum/bounty/item/botany/eggplant_eggy
|
||||
name = "Egg-plants"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/shell/eggy)
|
||||
bonus_desc = "Not to be confused with eggplants."
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/kudzu
|
||||
name = "Kudzu Pods"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/kudzupod)
|
||||
bonus_desc = "Store in a dry, dark place."
|
||||
multiplier = 4
|
||||
|
||||
/datum/bounty/item/botany/watermelon
|
||||
name = "Watermelons"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/watermelon)
|
||||
foodtype = "dessert"
|
||||
|
||||
/datum/bounty/item/botany/watermelon_holy
|
||||
name = "Holy Melons"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/holymelon)
|
||||
multiplier = 2
|
||||
foodtype = "dessert"
|
||||
|
||||
/datum/bounty/item/botany/glowshroom
|
||||
name = "Glowshrooms"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap, /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom)
|
||||
foodtype = "omelet"
|
||||
|
||||
/datum/bounty/item/botany/glowshroom_cap
|
||||
name = "Glowcaps"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap)
|
||||
multiplier = 2
|
||||
foodtype = "omelet"
|
||||
|
||||
/datum/bounty/item/botany/glowshroom_shadow
|
||||
name = "Shadowshrooms"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom)
|
||||
multiplier = 2
|
||||
foodtype = "omelet"
|
||||
|
||||
/datum/bounty/item/botany/nettles_death
|
||||
name = "Death Nettles"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/nettle/death)
|
||||
multiplier = 2
|
||||
bonus_desc = "Wear protection when handling them."
|
||||
foodtype = "cheese"
|
||||
|
||||
/datum/bounty/item/botany/pineapples
|
||||
name = "Pineapples"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/pineapple)
|
||||
bonus_desc = "Not for human consumption."
|
||||
foodtype = "ashtray"
|
||||
|
||||
/datum/bounty/item/botany/tomato
|
||||
name = "Tomatoes"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue)
|
||||
|
||||
/datum/bounty/item/botany/tomato_bluespace
|
||||
name = "Bluespace Tomatoes"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace)
|
||||
multiplier = 4
|
||||
@@ -82,13 +82,6 @@
|
||||
reward = 8000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/hotdog)
|
||||
|
||||
/datum/bounty/item/chef/lemon
|
||||
name = "Lemons"
|
||||
description = "A commander claims he can turn lemons into money. Ship him a few and he'll deposit the money into the station's account."
|
||||
reward = 4444
|
||||
required_count = 10
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lemon)
|
||||
|
||||
/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!"
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
/datum/bounty/item/engineering/gas
|
||||
name = "Full Tank of Pluoxium"
|
||||
description = "CentCom RnD is researching extra compact internals. Ship us a tank full of Pluoxium and you'll be compensated."
|
||||
reward = 7500
|
||||
wanted_types = list(/obj/item/tank)
|
||||
var/moles_required = 20 // A full tank is 28 moles, but CentCom ignores that fact.
|
||||
var/gas_type = /datum/gas/pluoxium
|
||||
|
||||
/datum/bounty/item/engineering/gas/applies_to(obj/O)
|
||||
if(!..())
|
||||
return FALSE
|
||||
var/obj/item/tank/T = O
|
||||
if(!T.air_contents.gases[gas_type])
|
||||
return FALSE
|
||||
return T.air_contents.gases[gas_type][MOLES] >= moles_required
|
||||
|
||||
/datum/bounty/item/engineering/gas/nitryl_tank
|
||||
name = "Full Tank of Nitryl"
|
||||
description = "The non-human staff of Station 88 has been volunteered to test performance enhancing drugs. Ship them a tank full of Nitryl so they can get started."
|
||||
gas_type = /datum/gas/nitryl
|
||||
|
||||
/datum/bounty/item/engineering/gas/tritium_tank
|
||||
name = "Full Tank of Tritium"
|
||||
description = "Station 49 is looking to kickstart their research program. Ship them a tank full of Tritium."
|
||||
gas_type = /datum/gas/tritium
|
||||
|
||||
/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
|
||||
wanted_types = list(/obj/singularity/energy_ball)
|
||||
@@ -17,6 +17,12 @@
|
||||
name = "APLU \"Ripley\""
|
||||
reward = 13000
|
||||
wanted_types = list(/obj/mecha/working/ripley)
|
||||
exclude_types = list(/obj/mecha/working/ripley/firefighter)
|
||||
|
||||
/datum/bounty/item/mech/firefighter
|
||||
name = "APLU \"Firefighter\""
|
||||
reward = 18000
|
||||
wanted_types = list(/obj/mecha/working/ripley/firefighter)
|
||||
|
||||
/datum/bounty/item/mech/odysseus
|
||||
name = "Odysseus"
|
||||
@@ -37,4 +43,3 @@
|
||||
name = "Phazon"
|
||||
reward = 50000
|
||||
wanted_types = list(/obj/mecha/combat/phazon)
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/datum/bounty/item/medical/heart
|
||||
name = "Heart"
|
||||
description = "Commander Johnson is in critical condition after suffering yet another heart attack. Doctors say he needs a new heart fast. Ship one, pronto!"
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/organ/heart)
|
||||
|
||||
/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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/eyes)
|
||||
exclude_types = list(/obj/item/organ/eyes/robotic)
|
||||
|
||||
/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
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/tongue)
|
||||
|
||||
/datum/bounty/item/medical/lizard_tail
|
||||
name = "Lizard Tail"
|
||||
description = "The Wizard Federation has made off with Nanotrasen's supply of lizard tails. While CentCom is dealing with the wizards, can the station spare a tail of their own?"
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/organ/tail/lizard)
|
||||
|
||||
/datum/bounty/item/medical/cat_tail
|
||||
name = "Cat Tail"
|
||||
description = "Central Command has run out of heavy duty pipe cleaners. Can you ship over a cat tail to help us out?"
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/organ/tail/cat)
|
||||
@@ -0,0 +1,51 @@
|
||||
/datum/bounty/item/mining/goliath_steaks
|
||||
name = "Lava-Cooked Goliath Steaks"
|
||||
description = "Admiral Pavlov has gone on hunger strike ever since the canteen started serving only monkey and monkey byproducts. She is demanding lava-cooked Goliath steaks."
|
||||
reward = 5000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/meat/steak/goliath)
|
||||
|
||||
/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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/kitchen/knife/combat/bone)
|
||||
@@ -45,7 +45,7 @@
|
||||
name = "Diamond Mining Drill"
|
||||
description = "Central Command is willing to pay three months salary in exchange for one diamond mining drill."
|
||||
reward = 15000
|
||||
wanted_types = list(/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill)
|
||||
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"
|
||||
@@ -53,12 +53,6 @@
|
||||
reward = 10000
|
||||
wanted_types = list(/obj/item/janiupgrade)
|
||||
|
||||
/datum/bounty/item/science/flightsuit
|
||||
name = "Flight Suit"
|
||||
description = "According to all known laws of physics, flight suits are cool. CentCom will pay at a premium for them, so get shipping!"
|
||||
reward = 30000
|
||||
wanted_types = list(/obj/item/clothing/suit/space/hardsuit/flightsuit)
|
||||
|
||||
/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."
|
||||
|
||||
@@ -1,21 +1,3 @@
|
||||
/datum/bounty/item/security/headset
|
||||
name = "Security Headset"
|
||||
description = "Nanotrasen wants to ensure that their encryption is working correctly. Ship them a security headset so that they can check."
|
||||
reward = 800
|
||||
wanted_types = list(/obj/item/radio/headset/headset_sec, /obj/item/radio/headset/heads/hos)
|
||||
|
||||
/datum/bounty/item/security/securitybelt
|
||||
name = "Security Belt"
|
||||
description = "CentCom is having difficulties with their security belts. Ship one from the station to receive compensation."
|
||||
reward = 800
|
||||
wanted_types = list(/obj/item/storage/belt/security)
|
||||
|
||||
/datum/bounty/item/security/sechuds
|
||||
name = "Security HUDSunglasses"
|
||||
description = "CentCom screwed up and ordered the wrong type of security sunglasses. They request the station ship some of theirs."
|
||||
reward = 800
|
||||
wanted_types = list(/obj/item/clothing/glasses/hud/security/sunglasses)
|
||||
|
||||
/datum/bounty/item/security/riotshotgun
|
||||
name = "Riot Shotguns"
|
||||
description = "Hooligans have boarded CentCom! Ship riot shotguns quick, or things are going to get dirty."
|
||||
@@ -23,40 +5,9 @@
|
||||
required_count = 2
|
||||
wanted_types = list(/obj/item/gun/ballistic/shotgun/riot)
|
||||
|
||||
/datum/bounty/item/security/pinpointer
|
||||
name = "Nuclear Pinpointer"
|
||||
description = "There's a teeny-tiny itty-bitty chance CentCom may have lost a nuke disk. Can the station spare a pinpointer to help out?"
|
||||
reward = 1500
|
||||
wanted_types = list(/obj/item/pinpointer/nuke)
|
||||
|
||||
/datum/bounty/item/security/captains_spare
|
||||
name = "Captain's Spare"
|
||||
description = "Captain Bart of Station 12 has forgotten his ID! Ship him your station's spare, would you?"
|
||||
reward = 1500
|
||||
wanted_types = list(/obj/item/card/id/captains_spare)
|
||||
|
||||
/datum/bounty/item/security/hardsuit
|
||||
name = "Security Hardsuit"
|
||||
description = "Space pirates are heading towards CentCom! Quick! Ship a security hardsuit to aid the fight!"
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/item/clothing/suit/space/hardsuit/security)
|
||||
|
||||
/datum/bounty/item/security/krav_maga
|
||||
name = "Krav Maga Gloves"
|
||||
description = "Chef Howerwitz of CentCom is trying to take a kung-fu Pizza out of the oven, but his mitts aren't up to the task. Ship them a pair of Krav Maga gloves to do the job right."
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/item/clothing/gloves/krav_maga)
|
||||
|
||||
/datum/bounty/item/security/recharger
|
||||
name = "Rechargers"
|
||||
description = "Nanotrasen military academy is conducting marksmanship exercises. They request that rechargers be shipped."
|
||||
reward = 2000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/machinery/recharger)
|
||||
|
||||
/datum/bounty/item/security/sabre
|
||||
name = "Officer's Sabre"
|
||||
description = "A 3-hour LARP session will be held at CentCom in the upcoming months. A shipped officer's sabre would make a good prop."
|
||||
reward = 2500
|
||||
wanted_types = list(/obj/item/melee/sabre)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
/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 = 10000
|
||||
reward = 15000
|
||||
wanted_types = list(/obj/item/documents/syndicate, /obj/item/documents/photocopy)
|
||||
|
||||
/datum/bounty/item/syndicate_documents/applies_to(obj/O)
|
||||
@@ -19,6 +19,13 @@
|
||||
return (Copy.copy_type && ispath(Copy.copy_type, /obj/item/documents/syndicate))
|
||||
return TRUE
|
||||
|
||||
/datum/bounty/item/adamantine
|
||||
name = "Adamantine"
|
||||
description = "Nanotrasen'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
|
||||
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!"
|
||||
|
||||
@@ -75,7 +75,7 @@ GLOBAL_LIST_EMPTY(bounties_list)
|
||||
|
||||
// Returns a new bounty of random type, but does not add it to GLOB.bounties_list.
|
||||
/proc/random_bounty()
|
||||
switch(rand(1, 9))
|
||||
switch(rand(1, 13))
|
||||
if(1)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/assistant))
|
||||
return new subtype
|
||||
@@ -103,40 +103,70 @@ GLOBAL_LIST_EMPTY(bounties_list)
|
||||
if(9)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/slime))
|
||||
return new subtype
|
||||
if(10)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/engineering))
|
||||
return new subtype
|
||||
if(11)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/mining))
|
||||
return new subtype
|
||||
if(12)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/medical))
|
||||
return new subtype
|
||||
if(13)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/botany))
|
||||
return new subtype
|
||||
|
||||
// Called lazily at startup to populate GLOB.bounties_list with random bounties.
|
||||
/proc/setup_bounties()
|
||||
for(var/i = 0; i < 3; ++i)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/assistant))
|
||||
try_add_bounty(new subtype)
|
||||
|
||||
for(var/i = 0; i < 1; ++i)
|
||||
var/list/subtype = pick(subtypesof(/datum/bounty/item/mech))
|
||||
try_add_bounty(new subtype)
|
||||
|
||||
for(var/i = 0; i < 2; ++i)
|
||||
var/list/subtype = pick(subtypesof(/datum/bounty/item/chef))
|
||||
try_add_bounty(new subtype)
|
||||
|
||||
for(var/i = 0; i < 1; ++i)
|
||||
var/list/subtype = pick(subtypesof(/datum/bounty/item/security))
|
||||
try_add_bounty(new subtype)
|
||||
|
||||
try_add_bounty(new /datum/bounty/reagent/simple_drink)
|
||||
try_add_bounty(new /datum/bounty/reagent/complex_drink)
|
||||
try_add_bounty(new /datum/bounty/reagent/chemical)
|
||||
|
||||
for(var/i = 0; i < 1; ++i)
|
||||
var/list/subtype = pick(subtypesof(/datum/bounty/virus))
|
||||
try_add_bounty(new subtype)
|
||||
|
||||
var/pick // instead of creating it a bunch let's go ahead and toss it here, we know we're going to use it for dynamics and subtypes!
|
||||
|
||||
/********************************Subtype Gens********************************/
|
||||
var/list/easy_add_list_subtypes = list(/datum/bounty/item/assistant = 2,
|
||||
/datum/bounty/item/mech = 1,
|
||||
/datum/bounty/item/chef = 2,
|
||||
/datum/bounty/item/security = 1,
|
||||
/datum/bounty/virus = 1,
|
||||
/datum/bounty/item/engineering = 1,
|
||||
/datum/bounty/item/mining = 2,
|
||||
/datum/bounty/item/medical = 2,
|
||||
/datum/bounty/item/botany = 2)
|
||||
|
||||
for(var/the_type in easy_add_list_subtypes)
|
||||
for(var/i in 1 to easy_add_list_subtypes[the_type])
|
||||
pick = pick(subtypesof(the_type))
|
||||
try_add_bounty(new pick)
|
||||
|
||||
/********************************Strict Type Gens********************************/
|
||||
var/list/easy_add_list_strict_types = list(/datum/bounty/reagent/simple_drink = 1,
|
||||
/datum/bounty/reagent/complex_drink = 1,
|
||||
/datum/bounty/reagent/chemical = 1)
|
||||
|
||||
for(var/the_strict_type in easy_add_list_strict_types)
|
||||
for(var/i in 1 to easy_add_list_strict_types[the_strict_type])
|
||||
try_add_bounty(new the_strict_type)
|
||||
|
||||
/********************************Dynamic Gens********************************/
|
||||
|
||||
for(var/i in 0 to 1)
|
||||
if(prob(50))
|
||||
pick = pick(subtypesof(/datum/bounty/item/slime))
|
||||
else
|
||||
pick = pick(subtypesof(/datum/bounty/item/science))
|
||||
try_add_bounty(new pick)
|
||||
|
||||
/********************************Cutoff for Non-Low Priority Bounties********************************/
|
||||
var/datum/bounty/B = pick(GLOB.bounties_list)
|
||||
B.mark_high_priority()
|
||||
|
||||
// Generate these last so they can't be high priority.
|
||||
try_add_bounty(new /datum/bounty/item/alien_organs)
|
||||
try_add_bounty(new /datum/bounty/item/syndicate_documents)
|
||||
try_add_bounty(new /datum/bounty/more_bounties)
|
||||
/********************************Low Priority Gens********************************/
|
||||
var/list/low_priority_strict_type_list = list( /datum/bounty/item/alien_organs,
|
||||
/datum/bounty/item/syndicate_documents,
|
||||
/datum/bounty/item/adamantine,
|
||||
/datum/bounty/more_bounties)
|
||||
|
||||
for(var/low_priority_bounty in low_priority_strict_type_list)
|
||||
try_add_bounty(new low_priority_bounty)
|
||||
|
||||
/proc/completed_bounty_count()
|
||||
var/count = 0
|
||||
|
||||
@@ -28,6 +28,13 @@
|
||||
else
|
||||
obj_flags &= ~EMAGGED
|
||||
|
||||
/obj/machinery/computer/cargo/proc/get_export_categories()
|
||||
var/cat = EXPORT_CARGO
|
||||
if(contraband)
|
||||
cat |= EXPORT_CONTRABAND
|
||||
if(obj_flags & EMAGGED)
|
||||
cat |= EXPORT_EMAG
|
||||
|
||||
/obj/machinery/computer/cargo/emag_act(mob/user)
|
||||
if(obj_flags & EMAGGED)
|
||||
return
|
||||
@@ -115,11 +122,7 @@
|
||||
say(blockade_warning)
|
||||
return
|
||||
if(SSshuttle.supply.getDockedId() == "supply_home")
|
||||
if (obj_flags & EMAGGED)
|
||||
SSshuttle.supply.obj_flags |= EMAGGED
|
||||
else
|
||||
SSshuttle.supply.obj_flags = (SSshuttle.supply.obj_flags & ~EMAGGED)
|
||||
SSshuttle.supply.contraband = contraband
|
||||
SSshuttle.supply.export_categories = get_export_categories()
|
||||
SSshuttle.moveShuttle("supply", "supply_away", TRUE)
|
||||
say("The supply shuttle is departing.")
|
||||
investigate_log("[key_name(usr)] sent the supply shuttle away.", INVESTIGATE_CARGO)
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
to_chat(user, "<span class='notice'>[src] is not currently linked to a cargo console.</span>")
|
||||
|
||||
/obj/item/export_scanner/afterattack(obj/O, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!istype(O) || !proximity)
|
||||
return
|
||||
|
||||
@@ -30,7 +31,12 @@
|
||||
else
|
||||
// Before you fix it:
|
||||
// yes, checking manifests is a part of intended functionality.
|
||||
var/price = export_item_and_contents(O, cargo_console.contraband, (cargo_console.obj_flags & EMAGGED), dry_run=TRUE)
|
||||
|
||||
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)
|
||||
price += ex.total_value[x]
|
||||
|
||||
if(price)
|
||||
to_chat(user, "<span class='notice'>Scanned [O], value: <b>[price]</b> credits[O.contents.len ? " (contents included)" : ""].</span>")
|
||||
else
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
/* How it works:
|
||||
The shuttle arrives at CentCom dock and calls sell(), which recursively loops through all the shuttle contents that are unanchored.
|
||||
The loop only checks contents of storage types, see supply.dm shuttle code.
|
||||
|
||||
|
||||
Each object in the loop is checked for applies_to() of various export datums, except the invalid ones.
|
||||
Objects on shutlle floor are checked only against shuttle_floor = TRUE exports.
|
||||
|
||||
If applies_to() returns TRUE, sell_object() is called on object and checks against exports are stopped for this object.
|
||||
sell_object() must add object amount and cost to export's total_cost and total_amount.
|
||||
|
||||
When all the shuttle objects are looped, export cycle is over. The shuttle calls total_printout() for each valid export.
|
||||
If total_printout() returns something, the export datum's total_cost is added to cargo credits, then export_end() is called to reset total_cost and total_amount.
|
||||
*/
|
||||
|
||||
/* The rule in figuring out item export cost:
|
||||
@@ -26,52 +18,57 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
|
||||
then the player gets the profit from selling his own wasted time.
|
||||
*/
|
||||
/proc/export_item_and_contents(atom/movable/AM, contraband, emagged, dry_run=FALSE)
|
||||
|
||||
// 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
|
||||
|
||||
// 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)
|
||||
if(!GLOB.exports_list.len)
|
||||
setupExports()
|
||||
|
||||
var/sold_str = ""
|
||||
var/cost = 0
|
||||
|
||||
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
|
||||
|
||||
// We go backwards, so it'll be innermost objects sold first
|
||||
for(var/i in reverseRange(contents))
|
||||
var/atom/movable/thing = i
|
||||
var/sold = FALSE
|
||||
for(var/datum/export/E in GLOB.exports_list)
|
||||
if(!E)
|
||||
continue
|
||||
if(E.applies_to(thing, contraband, emagged))
|
||||
if(dry_run)
|
||||
cost += E.get_cost(thing, contraband, emagged)
|
||||
else
|
||||
E.sell_object(thing, contraband, emagged)
|
||||
sold_str += " [thing.name]"
|
||||
if(E.applies_to(thing, allowed_categories, apply_elastic))
|
||||
sold = E.sell_object(thing, report, dry_run, allowed_categories , apply_elastic)
|
||||
report.exported_atoms += " [thing.name]"
|
||||
break
|
||||
if(!dry_run)
|
||||
if(!dry_run && (sold || delete_unsold))
|
||||
if(ismob(thing))
|
||||
thing.investigate_log("deleted through cargo export",INVESTIGATE_CARGO)
|
||||
qdel(thing)
|
||||
|
||||
if(dry_run)
|
||||
return cost
|
||||
else
|
||||
return sold_str
|
||||
return report
|
||||
|
||||
/datum/export
|
||||
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/contraband = FALSE // Export must be unlocked with multitool.
|
||||
var/emagged = FALSE // Export must be unlocked with emag.
|
||||
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
|
||||
|
||||
// Used by print-out
|
||||
var/total_cost = 0
|
||||
var/total_amount = 0
|
||||
//cost includes elasticity, this does not.
|
||||
var/init_cost
|
||||
|
||||
//All these need to be present in export call parameter for this to apply.
|
||||
var/export_category = EXPORT_CARGO
|
||||
|
||||
/datum/export/New()
|
||||
..()
|
||||
SSprocessing.processing += src
|
||||
@@ -79,7 +76,6 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
export_types = typecacheof(export_types)
|
||||
exclude_types = typecacheof(exclude_types)
|
||||
|
||||
|
||||
/datum/export/Destroy()
|
||||
SSprocessing.processing -= src
|
||||
return ..()
|
||||
@@ -91,29 +87,30 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
cost = init_cost
|
||||
|
||||
// Checks the cost. 0 cost items are skipped in export.
|
||||
/datum/export/proc/get_cost(obj/O, contr = 0, emag = 0)
|
||||
var/amount = get_amount(O, contr, emag)
|
||||
if(k_elasticity!=0)
|
||||
return round((cost/k_elasticity) * (1 - NUM_E**(-1 * k_elasticity * amount))) //anti-derivative of the marginal cost function
|
||||
/datum/export/proc/get_cost(obj/O, allowed_categories = NONE, apply_elastic = TRUE)
|
||||
var/amount = get_amount(O)
|
||||
if(apply_elastic)
|
||||
if(k_elasticity!=0)
|
||||
return round((cost/k_elasticity) * (1 - NUM_E**(-1 * k_elasticity * amount))) //anti-derivative of the marginal cost function
|
||||
else
|
||||
return round(cost * amount) //alternative form derived from L'Hopital to avoid division by 0
|
||||
else
|
||||
return round(cost * amount) //alternative form derived from L'Hopital to avoid division by 0
|
||||
return round(init_cost * amount)
|
||||
|
||||
// Checks the amount of exportable in object. Credits in the bill, sheets in the stack, etc.
|
||||
// Usually acts as a multiplier for a cost, so item that has 0 amount will be skipped in export.
|
||||
/datum/export/proc/get_amount(obj/O, contr = 0, emag = 0)
|
||||
/datum/export/proc/get_amount(obj/O)
|
||||
return 1
|
||||
|
||||
// Checks if the item is fit for export datum.
|
||||
/datum/export/proc/applies_to(obj/O, contr = 0, emag = 0)
|
||||
if(contraband && !contr)
|
||||
return FALSE
|
||||
if(emagged && !emag)
|
||||
/datum/export/proc/applies_to(obj/O, allowed_categories = NONE, apply_elastic = TRUE)
|
||||
if((allowed_categories & export_category) != export_category)
|
||||
return FALSE
|
||||
if(!include_subtypes && !(O.type in export_types))
|
||||
return FALSE
|
||||
if(include_subtypes && (!is_type_in_typecache(O, export_types) || is_type_in_typecache(O, exclude_types)))
|
||||
return FALSE
|
||||
if(!get_cost(O, contr, emag))
|
||||
if(!get_cost(O, allowed_categories , apply_elastic))
|
||||
return FALSE
|
||||
if(O.flags_1 & HOLOGRAM_1)
|
||||
return FALSE
|
||||
@@ -122,26 +119,38 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
// Called only once, when the object is actually sold by the datum.
|
||||
// Adds item's cost and amount to the current export cycle.
|
||||
// get_cost, get_amount and applies_to do not neccesary mean a successful sale.
|
||||
/datum/export/proc/sell_object(obj/O, contr = 0, emag = 0)
|
||||
var/the_cost = get_cost(O)
|
||||
/datum/export/proc/sell_object(obj/O, datum/export_report/report, dry_run = TRUE, allowed_categories = EXPORT_CARGO , apply_elastic = TRUE)
|
||||
var/the_cost = get_cost(O, allowed_categories , apply_elastic)
|
||||
var/amount = get_amount(O)
|
||||
total_cost += the_cost
|
||||
if(istype(O, /datum/export/material))
|
||||
total_amount += amount*MINERAL_MATERIAL_AMOUNT
|
||||
else
|
||||
total_amount += amount
|
||||
|
||||
cost *= NUM_E**(-1*k_elasticity*amount) //marginal cost modifier
|
||||
SSblackbox.record_feedback("nested tally", "export_sold_cost", 1, list("[O.type]", "[the_cost]"))
|
||||
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
|
||||
report.total_amount[src] += amount
|
||||
|
||||
if(!dry_run)
|
||||
if(apply_elastic)
|
||||
cost *= NUM_E**(-1*k_elasticity*amount) //marginal cost modifier
|
||||
SSblackbox.record_feedback("nested tally", "export_sold_cost", 1, list("[O.type]", "[the_cost]"))
|
||||
return TRUE
|
||||
|
||||
// Total printout for the cargo console.
|
||||
// Called before the end of current export cycle.
|
||||
// It must always return something if the datum adds or removes any credts.
|
||||
/datum/export/proc/total_printout(contr = 0, emag = 0)
|
||||
if(!total_cost && !total_amount)
|
||||
/datum/export/proc/total_printout(datum/export_report/ex, notes = TRUE)
|
||||
if(!ex.total_amount[src] || !ex.total_value[src])
|
||||
return ""
|
||||
var/msg = "[total_cost] credits: Received [total_amount] "
|
||||
if(total_cost > 0)
|
||||
|
||||
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
|
||||
|
||||
if(unit_name)
|
||||
@@ -157,11 +166,6 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
msg += "."
|
||||
return msg
|
||||
|
||||
// The current export cycle is over now. Reset all the export temporary vars.
|
||||
/datum/export/proc/export_end()
|
||||
total_cost = 0
|
||||
total_amount = 0
|
||||
|
||||
GLOBAL_LIST_EMPTY(exports_list)
|
||||
|
||||
/proc/setupExports()
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
export_types = list(/obj/structure/closet/crate)
|
||||
exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden)
|
||||
|
||||
/datum/export/large/crate/total_printout() // That's why a goddamn metal crate costs that much.
|
||||
/datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much.
|
||||
. = ..()
|
||||
if(.)
|
||||
if(. && notes)
|
||||
. += " Thanks for participating in Nanotrasen Crates Recycling Program."
|
||||
|
||||
/datum/export/large/crate/wooden
|
||||
@@ -56,42 +56,72 @@
|
||||
export_types = list(/obj/structure/reagent_dispensers/beerkeg)
|
||||
|
||||
|
||||
|
||||
/datum/export/large/emitter
|
||||
cost = 200
|
||||
unit_name = "emitter"
|
||||
export_types = list(/obj/machinery/power/emitter)
|
||||
|
||||
/datum/export/large/field_generator
|
||||
cost = 200
|
||||
unit_name = "field generator"
|
||||
export_types = list(/obj/machinery/field/generator)
|
||||
|
||||
/datum/export/large/collector
|
||||
cost = 200
|
||||
unit_name = "collector"
|
||||
export_types = list(/obj/machinery/power/rad_collector)
|
||||
|
||||
/datum/export/large/collector/pa
|
||||
cost = 300
|
||||
unit_name = "particle accelerator part"
|
||||
export_types = list(/obj/structure/particle_accelerator)
|
||||
|
||||
/datum/export/large/collector/pa/controls
|
||||
cost = 500
|
||||
unit_name = "particle accelerator control console"
|
||||
export_types = list(/obj/machinery/particle_accelerator/control_box)
|
||||
|
||||
/datum/export/large/pipedispenser
|
||||
cost = 500
|
||||
unit_name = "pipe dispenser"
|
||||
export_types = list(/obj/machinery/pipedispenser)
|
||||
|
||||
/datum/export/large/emitter
|
||||
cost = 550
|
||||
unit_name = "emitter"
|
||||
export_types = list(/obj/machinery/power/emitter)
|
||||
|
||||
/datum/export/large/field_generator
|
||||
cost = 550
|
||||
unit_name = "field generator"
|
||||
export_types = list(/obj/machinery/field/generator)
|
||||
|
||||
/datum/export/large/collector
|
||||
cost = 400
|
||||
unit_name = "radiation collector"
|
||||
export_types = list(/obj/machinery/power/rad_collector)
|
||||
|
||||
/datum/export/large/tesla_coil
|
||||
cost = 450
|
||||
unit_name = "tesla coil"
|
||||
export_types = list(/obj/machinery/power/tesla_coil)
|
||||
|
||||
/datum/export/large/pa
|
||||
cost = 350
|
||||
unit_name = "particle accelerator part"
|
||||
export_types = list(/obj/structure/particle_accelerator)
|
||||
|
||||
/datum/export/large/pa/controls
|
||||
cost = 500
|
||||
unit_name = "particle accelerator control console"
|
||||
export_types = list(/obj/machinery/particle_accelerator/control_box)
|
||||
|
||||
/datum/export/large/supermatter
|
||||
cost = 9000
|
||||
cost = 8000
|
||||
unit_name = "supermatter shard"
|
||||
export_types = list(/obj/machinery/power/supermatter_crystal/shard)
|
||||
|
||||
/datum/export/large/grounding_rod
|
||||
cost = 350
|
||||
unit_name = "grounding rod"
|
||||
export_types = list(/obj/machinery/power/grounding_rod)
|
||||
|
||||
/datum/export/large/tesla_gen
|
||||
cost = 4000
|
||||
unit_name = "energy ball generator"
|
||||
export_types = list(/obj/machinery/the_singularitygen/tesla)
|
||||
|
||||
/datum/export/large/singulo_gen
|
||||
cost = 4000
|
||||
unit_name = "gravitational singularity generator"
|
||||
export_types = list(/obj/machinery/the_singularitygen)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/am_control_unit
|
||||
cost = 4000
|
||||
unit_name = "antimatter control unit"
|
||||
export_types = list(/obj/machinery/power/am_control_unit)
|
||||
|
||||
/datum/export/large/am_shielding_container
|
||||
cost = 150
|
||||
unit_name = "packaged antimatter reactor section"
|
||||
export_types = list(/obj/item/am_shielding_container)
|
||||
|
||||
|
||||
/datum/export/large/iv
|
||||
cost = 50
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//Tendril chest artifacts and ruin loot. Includes ash drake loot since they drop two sets of armor + random item
|
||||
//Consumable or one-use items like the magic D20 and gluttony's blessing are omitted
|
||||
|
||||
/datum/export/lavaland/minor
|
||||
cost = 10000
|
||||
unit_name = "minor lava planet artifact"
|
||||
export_types = list(/obj/item/immortality_talisman,
|
||||
/obj/item/book_of_babel,
|
||||
/obj/item/gun/magic/hook,
|
||||
/obj/item/wisp_lantern,
|
||||
/obj/item/reagent_containers/glass/bottle/potion/flight,
|
||||
/obj/item/katana/cursed,
|
||||
/obj/item/clothing/glasses/godeye,
|
||||
/obj/item/melee/ghost_sword,
|
||||
/obj/item/clothing/suit/space/hardsuit/cult,
|
||||
/obj/item/voodoo,
|
||||
/obj/item/grenade/clusterbuster/inferno,
|
||||
/obj/item/clothing/neck/necklace/memento_mori,
|
||||
/obj/item/organ/heart/cursed/wizard,
|
||||
/obj/item/clothing/suit/hooded/cloak/drake,
|
||||
/obj/item/dragons_blood,
|
||||
/obj/item/lava_staff,
|
||||
/obj/item/ship_in_a_bottle,
|
||||
/obj/item/clothing/shoes/clown_shoes/banana_shoes,
|
||||
/obj/item/gun/magic/staff/honk,
|
||||
/obj/item/kitchen/knife/envy,
|
||||
/obj/item/gun/ballistic/revolver/russian/soul,
|
||||
/obj/item/veilrender/vealrender)
|
||||
|
||||
/datum/export/lavaland/major //valuable chest/ruin loot and staff of storms
|
||||
cost = 20000
|
||||
unit_name = "lava planet artifact"
|
||||
export_types = list(/obj/item/guardiancreator,
|
||||
/obj/item/rod_of_asclepius,
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal,
|
||||
/obj/item/prisoncube,
|
||||
/obj/item/staff/storm)
|
||||
|
||||
//Megafauna loot, except for ash drakes and legion
|
||||
|
||||
/datum/export/lavaland/megafauna
|
||||
cost = 40000
|
||||
unit_name = "major lava planet artifact"
|
||||
export_types = list(/obj/item/hierophant_club,
|
||||
/obj/item/melee/transforming/cleaving_saw,
|
||||
/obj/item/organ/vocal_cords/colossus,
|
||||
/obj/machinery/anomalous_crystal,
|
||||
/obj/item/mayhem,
|
||||
/obj/item/blood_contract,
|
||||
/obj/item/gun/magic/staff/spellblade)
|
||||
|
||||
/datum/export/lavaland/megafauna/total_printout(datum/export_report/ex, notes = TRUE) //in the unlikely case a miner feels like selling megafauna loot
|
||||
. = ..()
|
||||
if(. && notes)
|
||||
. += " On behalf of the Nanotrasen RnD division: Thank you for your hard work."
|
||||
|
||||
/datum/export/lavaland/megafauna/hev/suit
|
||||
cost = 30000
|
||||
unit_name = "H.E.C.K. suit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hostile_environment)
|
||||
|
||||
/datum/export/lavaland/megafauna/hev/helmet
|
||||
cost = 10000
|
||||
unit_name = "H.E.C.K. helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/space/hostile_environment)
|
||||
@@ -15,9 +15,10 @@
|
||||
return ..() * S.rarity // That's right, no bonus for potency. Send a crappy sample first to "show improvement" later.
|
||||
|
||||
/datum/export/seed/sell_object(obj/O)
|
||||
..()
|
||||
var/obj/item/seeds/S = O
|
||||
discoveredPlants[S.type] = S.potency
|
||||
. = ..()
|
||||
if(.)
|
||||
var/obj/item/seeds/S = O
|
||||
discoveredPlants[S.type] = S.potency
|
||||
|
||||
|
||||
/datum/export/seed/potency
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/datum/export/stack/skin/human
|
||||
cost = 100
|
||||
contraband = TRUE
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "piece"
|
||||
message = "of human skin"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/human)
|
||||
@@ -28,13 +28,13 @@
|
||||
|
||||
/datum/export/stack/skin/cat
|
||||
cost = 150
|
||||
contraband = TRUE
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "cat hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/cat)
|
||||
|
||||
/datum/export/stack/skin/corgi
|
||||
cost = 200
|
||||
contraband = TRUE
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "corgi hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/corgi)
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/lizard)
|
||||
|
||||
/datum/export/stack/skin/gondola
|
||||
cost = 500
|
||||
cost = 5000
|
||||
unit_name = "gondola hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/gondola)
|
||||
|
||||
|
||||
@@ -110,3 +110,23 @@
|
||||
cost = 100
|
||||
unit_name = "rapid piping device"
|
||||
export_types = list(/obj/item/pipe_dispenser)
|
||||
|
||||
/datum/export/singulo //failsafe in case someone decides to ship a live singularity to CentCom without the corresponding bounty
|
||||
cost = 1
|
||||
unit_name = "singularity"
|
||||
export_types = list(/obj/singularity)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/singulo/total_printout(datum/export_report/ex, notes = TRUE)
|
||||
. = ..()
|
||||
if(. && notes)
|
||||
. += " ERROR: Invalid object detected."
|
||||
|
||||
/datum/export/singulo/tesla //see above
|
||||
unit_name = "energy ball"
|
||||
export_types = list(/obj/singularity/energy_ball)
|
||||
|
||||
/datum/export/singulo/tesla/total_printout(datum/export_report/ex, notes = TRUE)
|
||||
. = ..()
|
||||
if(. && notes)
|
||||
. += " ERROR: Unscheduled energy ball delivery detected."
|
||||
|
||||
@@ -69,97 +69,3 @@
|
||||
unit_name = "pair"
|
||||
message = "of handcuffs"
|
||||
export_types = list(/obj/item/restraints/handcuffs)
|
||||
|
||||
// relics of lavaland
|
||||
|
||||
/datum/export/weapon/hierophant
|
||||
cost = 40000
|
||||
unit_name = "Hierophant Club"
|
||||
export_types = list(/obj/item/hierophant_club)
|
||||
|
||||
/datum/export/weapon/lava
|
||||
cost = 40000
|
||||
unit_name = "Lava Staff"
|
||||
export_types = list(/obj/item/lava_staff)
|
||||
|
||||
/datum/export/weapon/cleaving_saw
|
||||
cost = 40000
|
||||
unit_name = "Cleaving Saw"
|
||||
export_types = list(/obj/item/melee/transforming/cleaving_saw)
|
||||
|
||||
/datum/export/weapon/mayhem
|
||||
cost = 40000
|
||||
unit_name = "Mayhem in a bottle"
|
||||
export_types = list(/obj/item/mayhem)
|
||||
|
||||
/datum/export/weapon/blood_contract
|
||||
cost = 40000
|
||||
unit_name = "Blood Contract"
|
||||
export_types = list(/obj/item/blood_contract)
|
||||
|
||||
//Artifacts of lavaland
|
||||
|
||||
/datum/export/weapon/immortality_talisman
|
||||
cost = 10000
|
||||
unit_name = "Immortality Talisman"
|
||||
export_types = list(/obj/item/immortality_talisman)
|
||||
|
||||
/datum/export/weapon/babel
|
||||
cost = 10000
|
||||
unit_name = "Book of Babel"
|
||||
export_types = list(/obj/item/book_of_babel)
|
||||
|
||||
/datum/export/weapon/hook
|
||||
cost = 10000
|
||||
unit_name = "Meat hook"
|
||||
export_types = list(/obj/item/gun/magic/hook)
|
||||
|
||||
/datum/export/weapon/shipbottle //the price for not breaking the bottle.
|
||||
cost = 20000
|
||||
unit_name = "Ship in a bottle"
|
||||
export_types = list(/obj/item/ship_in_a_bottle)
|
||||
|
||||
/datum/export/weapon/tarot //price for sacraficing a very profitiable ally
|
||||
cost = 20000
|
||||
unit_name = "Tarot cards"
|
||||
export_types = list(/obj/item/guardiancreator)
|
||||
|
||||
/datum/export/weapon/red //second half of telecube
|
||||
cost = 5000
|
||||
unit_name = "Red Cube"
|
||||
export_types = list(/obj/item/warp_cube/red)
|
||||
|
||||
/datum/export/weapon/blue //first half of telecube
|
||||
cost = 5000
|
||||
unit_name = "Blue Cube"
|
||||
export_types = list(/obj/item/warp_cube)
|
||||
|
||||
/datum/export/weapon/wisplantern //thermals on lavaland
|
||||
cost = 10000
|
||||
unit_name = "Wisp Lantern"
|
||||
export_types = list(/obj/item/wisp_lantern)
|
||||
|
||||
/datum/export/weapon/flight //if xenobiology ever reaches the point to get these without shuttle being called they deserve it
|
||||
cost = 10000
|
||||
unit_name = "Strange Elixir"
|
||||
export_types = list(/obj/item/reagent_containers/glass/bottle/potion/flight)
|
||||
|
||||
/datum/export/weapon/cheart //is a very powerfull healing artifact in the robust hands
|
||||
cost = 10000
|
||||
unit_name = "Cursed Heart"
|
||||
export_types = list(/obj/item/organ/heart/cursed/wizard)
|
||||
|
||||
/datum/export/weapon/ckatana
|
||||
cost = 10000
|
||||
unit_name = "Katana"
|
||||
export_types = list(/obj/item/katana/cursed)
|
||||
|
||||
/datum/export/weapon/geye //xray
|
||||
cost = 10000
|
||||
unit_name = "God eye"
|
||||
export_types = list(/obj/item/clothing/glasses/godeye)
|
||||
|
||||
/datum/export/weapon/spectral
|
||||
cost = 10000
|
||||
unit_name = "Spectral Sword"
|
||||
export_types = list(/obj/item/melee/ghost_sword)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/obj/machinery/computer/cargo/express
|
||||
name = "express supply console"
|
||||
desc = "This console allows the user to purchase a package \
|
||||
with 1/40th of the delivery time: made possible by NanoTrasen's new \"1500mm Orbital Railgun\".\
|
||||
with 1/40th of the delivery time: made possible by Nanotrasen's new \"1500mm Orbital Railgun\".\
|
||||
All sales are near instantaneous - please choose carefully"
|
||||
icon_screen = "supply_express"
|
||||
circuit = /obj/item/circuitboard/computer/cargo/express
|
||||
@@ -109,7 +109,7 @@
|
||||
if(SSshuttle.supplyBlocked)
|
||||
message = blockade_warning
|
||||
if(usingBeacon && !beacon)
|
||||
message = "BEACON ERROR: BEACON MISSING"//beacon was destroyed
|
||||
message = "BEACON ERROR: BEACON MISSING"//beacon was destroyed
|
||||
else if (usingBeacon && !canBeacon)
|
||||
message = "BEACON ERROR: MUST BE EXPOSED"//beacon's loc/user's loc must be a turf
|
||||
if(obj_flags & EMAGGED)
|
||||
@@ -165,9 +165,9 @@
|
||||
var/LZ
|
||||
if (istype(beacon) && usingBeacon)//prioritize beacons over landing in cargobay
|
||||
LZ = get_turf(beacon)
|
||||
beacon.update_status(SP_LAUNCH)
|
||||
beacon.update_status(SP_LAUNCH)
|
||||
else if (!usingBeacon)//find a suitable supplypod landing zone in cargobay
|
||||
landingzone = locate(/area/quartermaster/storage) in GLOB.sortedAreas
|
||||
landingzone = GLOB.areas_by_type[/area/quartermaster/storage]
|
||||
if (!landingzone)
|
||||
WARNING("[src] couldnt find a Quartermaster/Storage (aka cargobay) area on the station, and as such it has set the supplypod landingzone to the area it resides in.")
|
||||
landingzone = get_area(src)
|
||||
@@ -177,7 +177,7 @@
|
||||
LAZYADD(empty_turfs, T)
|
||||
CHECK_TICK
|
||||
if(empty_turfs && empty_turfs.len)
|
||||
LZ = pick(empty_turfs)
|
||||
LZ = pick(empty_turfs)
|
||||
if (SO.pack.cost <= SSshuttle.points && LZ)//we need to call the cost check again because of the CHECK_TICK call
|
||||
SSshuttle.points -= SO.pack.cost
|
||||
new /obj/effect/DPtarget(LZ, SO, podID)
|
||||
@@ -185,7 +185,7 @@
|
||||
update_icon()
|
||||
else
|
||||
if(SO.pack.cost * (0.72*MAX_EMAG_ROCKETS) <= SSshuttle.points) // bulk discount :^)
|
||||
landingzone = locate(pick(GLOB.the_station_areas)) in GLOB.sortedAreas //override default landing zone
|
||||
landingzone = GLOB.areas_by_type[pick(GLOB.the_station_areas)] //override default landing zone
|
||||
for(var/turf/open/floor/T in landingzone.contents)
|
||||
if(is_blocked_turf(T))
|
||||
continue
|
||||
|
||||
+72
-11
@@ -460,7 +460,7 @@
|
||||
|
||||
/datum/supply_pack/security/armory/laserarmor
|
||||
name = "Reflector Vest Crate"
|
||||
desc = "Contains two vests of highly reflective material. Each armor peice 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."
|
||||
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)
|
||||
@@ -1052,6 +1052,15 @@
|
||||
/obj/item/storage/firstaid/o2)
|
||||
crate_name = "oxygen deprivation kit crate"
|
||||
|
||||
/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 = 3000
|
||||
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."
|
||||
@@ -1072,13 +1081,14 @@
|
||||
/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/OMinus,
|
||||
/obj/item/reagent_containers/blood/lizard)
|
||||
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."
|
||||
desc = "Contains two defibrillators for bringing the recently deceased back to life."
|
||||
cost = 2500
|
||||
contains = list(/obj/item/defibrillator/loaded,
|
||||
/obj/item/defibrillator/loaded)
|
||||
@@ -1162,7 +1172,7 @@
|
||||
|
||||
/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."
|
||||
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,
|
||||
@@ -1181,6 +1191,16 @@
|
||||
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/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."
|
||||
@@ -1257,6 +1277,18 @@
|
||||
/datum/supply_pack/service
|
||||
group = "Service"
|
||||
|
||||
/datum/supply_pack/service/cargo_supples
|
||||
name = "Cargo Supplies Crate"
|
||||
desc = "Sold everything that wasn't bolted down? You can get right back to work with this crate containing stamps, an export scanner, destination tagger, hand labeler and some package wrapping."
|
||||
cost = 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/noslipfloor
|
||||
name = "High-traction Floor Tiles"
|
||||
desc = "Make slipping a thing of the past with thirty industrial-grade anti-slip floortiles!"
|
||||
@@ -1332,6 +1364,16 @@
|
||||
/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."
|
||||
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/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."
|
||||
@@ -1641,6 +1683,14 @@
|
||||
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!"
|
||||
@@ -1739,13 +1789,14 @@
|
||||
/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/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/clothing/neck/necklace/dope,
|
||||
/obj/item/vending_refill/donksoft)
|
||||
crate_name = "crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/foamforce
|
||||
@@ -1942,14 +1993,14 @@
|
||||
crate_name = "autodrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/cargo
|
||||
name = "Cargo Department Supply Crate"
|
||||
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 Department Wardrobe Supply Crate"
|
||||
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,
|
||||
@@ -1975,7 +2026,7 @@
|
||||
crate_name = "hydrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/medical
|
||||
name = "Medical Department Wardrobe Supply Crate"
|
||||
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,
|
||||
@@ -1985,7 +2036,7 @@
|
||||
crate_name = "medical department wardrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/science
|
||||
name = "Science Department Wardrobe Supply Crate"
|
||||
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,
|
||||
@@ -1993,7 +2044,7 @@
|
||||
crate_name = "science department wardrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/security
|
||||
name = "Security Department Supply Crate"
|
||||
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,
|
||||
@@ -2090,6 +2141,16 @@
|
||||
cost = 700
|
||||
contains = list(/obj/item/storage/box/fountainpens)
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
crate_name = "calligraphy crate"
|
||||
|
||||
/datum/supply_pack/misc/wrapping_paper
|
||||
name = "Festive Wrapping Paper Crate"
|
||||
desc = "Want to mail your loved ones gift-wrapped chocolates, stuffed animals, the Clown's severed head? You can do all that, with this crate full of wrapping paper."
|
||||
cost = 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/funeral
|
||||
name = "Funeral Supply crate"
|
||||
|
||||
@@ -48,6 +48,8 @@
|
||||
..()
|
||||
if(!express_console)
|
||||
to_chat(user, "<span class='notice'>[src] is not currently linked to a Express Supply console.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Alt-click to unlink it from the Express Supply console.</span>")
|
||||
|
||||
/obj/item/supplypod_beacon/Destroy()
|
||||
if(express_console)
|
||||
|
||||
Reference in New Issue
Block a user