From abb5e84f37b3ca31f40e58ad64d9fc50f9b08a3c Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Thu, 9 Aug 2018 06:12:56 +0200 Subject: [PATCH] Adds mining and engineering cargo bounties (#39568) The game can use more bounties that require actual effort and cooperation to complete, but give far higher rewards than the "collect some glass shards" Assistant type bounties. Thanks again to Tlaltecuhtli for these ideas. I added the following: Engineering Various atmos gases, price determined by how hard they are to acquire. I deliberately left out Stimulum/Hypernobilium, as only a handful of players even have an idea of how to make them. Plasma tank bounty got removed, since it's just a case of "put tank into plasma canister and open valve". Contained Tesla ball. The idea is to build a tesla setup inside the supply shuttle, then ship it off. This pays a lot, since players have to purchase a bunch of packs, get them unlocked+approved by heads of staff and finally construct the whole thing inside a cramped shuttle. Materials alone cost about 14.000 credits for this one. Tesla containment maintains power during the shuttle ride and it gets deleted successfully on arrival at CentCom. As a failsafe, I've added both singulo and tesla as 1 credit exports in case someone ships them over to CentCom without an active bounty. Mining Almost everything you can craft from Lavaland fauna, from lava grilled steaks over bone axes to goliath hide boats. --- code/modules/cargo/bounties/assistant.dm | 15 ------- code/modules/cargo/bounties/engineering.dm | 31 +++++++++++++ code/modules/cargo/bounties/mining.dm | 51 ++++++++++++++++++++++ code/modules/cargo/bounty.dm | 12 ++++- code/modules/cargo/exports/tools.dm | 20 +++++++++ code/modules/shuttle/supply.dm | 3 +- tgstation.dme | 2 + 7 files changed, 116 insertions(+), 18 deletions(-) create mode 100644 code/modules/cargo/bounties/engineering.dm create mode 100644 code/modules/cargo/bounties/mining.dm diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index b2fe671f24c..e9bf9f0671e 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 00000000000..8b73ebac4b2 --- /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 00000000000..1b8b46734fe --- /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 06d74c0ed9c..0a150a077e9 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 024c93821a8..2c2859d2e94 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 6f2997a0782..e77c2420c22 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 b6e12e04989..9c98d54cbb0 100755 --- 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"