diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index b2fe671f24c3..e9bf9f0671ee 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -240,21 +240,6 @@ 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." diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm new file mode 100644 index 000000000000..8b73ebac4b22 --- /dev/null +++ b/code/modules/cargo/bounties/engineering.dm @@ -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) diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm new file mode 100644 index 000000000000..1b8b46734fe3 --- /dev/null +++ b/code/modules/cargo/bounties/mining.dm @@ -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) diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index 06d74c0ed9c5..0a150a077e91 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -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, 11)) if(1) var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) return new subtype @@ -103,6 +103,12 @@ 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 // Called lazily at startup to populate GLOB.bounties_list with random bounties. /proc/setup_bounties() @@ -114,7 +120,9 @@ GLOBAL_LIST_EMPTY(bounties_list) /datum/bounty/item/mech = 1, /datum/bounty/item/chef = 2, /datum/bounty/item/security = 1, - /datum/bounty/virus = 1) + /datum/bounty/virus = 1, + /datum/bounty/item/engineering = 1, + /datum/bounty/item/mining = 2) for(var/the_type in easy_add_list_subtypes) for(var/i in 1 to easy_add_list_subtypes[the_type]) diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index 024c93821a8f..2c2859d2e943 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -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() + . = ..() + if(.) + . += " 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() + . = ..() + if(.) + . += " ERROR: Unscheduled energy ball delivery detected." diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 6f2997a07825..e77c2420c222 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -6,7 +6,8 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /obj/item/disk/nuclear, /obj/machinery/nuclearbomb, /obj/item/beacon, - /obj/singularity, + /obj/singularity/narsie, + /obj/singularity/wizard, /obj/machinery/teleport/station, /obj/machinery/teleport/hub, /obj/machinery/quantumpad, diff --git a/tgstation.dme b/tgstation.dme index b6e12e049891..9c98d54cbb03 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1363,8 +1363,10 @@ #include "code\modules\cargo\supplypod_beacon.dm" #include "code\modules\cargo\bounties\assistant.dm" #include "code\modules\cargo\bounties\chef.dm" +#include "code\modules\cargo\bounties\engineering.dm" #include "code\modules\cargo\bounties\item.dm" #include "code\modules\cargo\bounties\mech.dm" +#include "code\modules\cargo\bounties\mining.dm" #include "code\modules\cargo\bounties\reagent.dm" #include "code\modules\cargo\bounties\science.dm" #include "code\modules\cargo\bounties\security.dm"