From 647183dad5f06e6acb030170aed355800a4de9b2 Mon Sep 17 00:00:00 2001
From: Gristlebee <56049844+Gristlebee@users.noreply.github.com>
Date: Fri, 13 Sep 2024 02:54:43 -0700
Subject: [PATCH] New items and rebalances for Outpost Cargo Exploration Tab +
Underground Scanner detection change (#3328)
## About The Pull Request
Rebalances the prices of old packs in the exploration tab, and adds some
new items.
- Lava Exploration Kit: Price: 1500 -> 500, adds two pocket
extinguishers
- Ice Exploration Kit: Price: 1500 -> 500, swaps out the boots for ice
hiking boots, adds two winter coats
- Jungle Exploration Ki: Price: 750-> 500, adds two lanterns
- Bluespace shelter capsules: Price: 3000 -> 500, only contains a single
capsule now
Adds some new packs:
- Lavaproof rods crate, 200 credits
- Binoculars 200 credits
- Deep core drill scanner, 250 credits
- Anomaly neutralizer, 250 credits
- GPS, 100 credits
You can now click a vein with a deep core scanner on harm intent so the
scanner no longer picks it up, or hit it again to readd it to tracking.
The deep core scanner fits in explorer webbing storage and explorer
suits.
## Why It's Good For The Game
A lot of the exploration packs were comically overcosted for what they
were. For 1500, the ice exploration pack got you.... two pickaxes, boots
that didnt protect from the ice, and cosmetic goggles. For 1500 you
could get two actual mining crates which would serve you a lot better.
The new prices should hopefully make them more worthwhile purchases.
The new packs are meant to be generally useful items to aid in
exploration.
Lavaproof rods are a useful, if niche nice to have if you're penned in
by lava.
Binocs and GPS are good for general exploration.
Anomaly neutralizers are handy for difficult anomalies that hard or
impossible to approach normally. Case in point:
https://github.com/user-attachments/assets/cabbdb99-d425-4227-863b-ffdd6549fff1
Adds the deep core mining scanner as an individual purchase so you don't
have to pay a 1000 credit buy in for the drill if you only intend to do
missions.
Detectability changes for veins are meant to be QOL, and streamline
finding the type of vein you want, as you can now remove unwanted veins
from being tracked instead of wandering aimlessly hoping to get close
enough to another vein for the scanner to lock on.
## Changelog
:cl:
add: Adds binocs, lavaproof rods, gps, deep core mining scanner, anomaly
neutralizer to exploration cargo
add: You can hit veins with a deep core scanner on harm intent to stop
it tracking, and hit it again to readd it.
add: Deep core scanner fits in explorer webbing and explorer suits.
balance: Outpost Cargo exploration tab
/:cl:
---
code/game/objects/items/storage/belt.dm | 1 +
code/modules/cargo/packs/exploration.dm | 82 ++++++++++++++-----
.../modules/mining/equipment/explorer_gear.dm | 6 +-
.../mining/equipment/mineral_scanner.dm | 13 ++-
code/modules/mining/ore_veins.dm | 8 ++
5 files changed, 85 insertions(+), 25 deletions(-)
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 055fa58ad393..fb56a7a15886 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -357,6 +357,7 @@
/obj/item/clothing/gloves,
/obj/item/resonator,
/obj/item/mining_scanner,
+ /obj/item/pinpointer/mineral,
/obj/item/pickaxe,
/obj/item/shovel,
/obj/item/stack/sheet/animalhide,
diff --git a/code/modules/cargo/packs/exploration.dm b/code/modules/cargo/packs/exploration.dm
index 504b3b4bdbb1..e88cf65a3931 100644
--- a/code/modules/cargo/packs/exploration.dm
+++ b/code/modules/cargo/packs/exploration.dm
@@ -8,13 +8,13 @@
/datum/supply_pack/exploration/lava
name = "Lava Exploration Kit"
- desc = "Contains two pickaxes, 60 lavaproof rods, and goggles to protect eyes from the heat"
- cost = 1500
+ desc = "Contains two pickaxes, 60 lavaproof rods, two pocket extinguishers and goggles to protect yourself from the heat."
+ cost = 500
contains = list(
/obj/item/pickaxe/mini,
/obj/item/pickaxe/mini,
- /obj/item/clothing/glasses/heat,
- /obj/item/clothing/glasses/heat,
+ /obj/item/extinguisher/mini,
+ /obj/item/extinguisher/mini,
/obj/item/clothing/glasses/heat,
/obj/item/clothing/glasses/heat,
/obj/item/stack/rods/lava/thirty,
@@ -22,34 +22,45 @@
)
crate_name = "Lava Exploration Kit"
+/datum/supply_pack/exploration/lavaproof_ords
+ name ="Lavaproof Rods Crate"
+ desc = "Contains 60 lavaproof rods for safely traversing molten pits."
+ cost = 200
+ contains = list(
+ /obj/item/stack/rods/lava/thirty,
+ /obj/item/stack/rods/lava/thirty,
+ )
+ crate_name = "Lavaproof Rod Crate"
+
/datum/supply_pack/exploration/ice
name = "Ice Exploration Kit"
- desc = "Contains two pickaxes, winter clothes, and goggles to protect eyes from the cold"
- cost = 1500
+ desc = "Contains two pickaxes, 2 sets of winter clothes and ice hiking boots, along with goggles to protect eyes from the cold."
+ cost = 500
contains = list(
/obj/item/pickaxe/mini,
/obj/item/pickaxe/mini,
/obj/item/clothing/glasses/cold,
/obj/item/clothing/glasses/cold,
- /obj/item/clothing/glasses/cold,
- /obj/item/clothing/glasses/cold,
- /obj/item/clothing/shoes/winterboots,
- /obj/item/clothing/shoes/winterboots,
- /obj/item/clothing/shoes/winterboots,
- /obj/item/clothing/shoes/winterboots,
+ /obj/item/clothing/suit/hooded/wintercoat,
+ /obj/item/clothing/suit/hooded/wintercoat,
+ /obj/item/clothing/shoes/winterboots/ice_boots,
+ /obj/item/clothing/shoes/winterboots/ice_boots,
)
crate_name = "Ice Exploration Kit"
/datum/supply_pack/exploration/jungle
name = "Jungle Exploration Kit"
- desc = "Contains hatchets, picks, and antivenom, great for dense jungles!"
- cost = 750
+ desc = "Contains a hatchets, two picks and lanterns, plus antivenom pills, great for dense jungles!"
+ cost = 500
contains = list(
/obj/item/pickaxe/mini,
/obj/item/pickaxe/mini,
+ /obj/item/flashlight/lantern,
+ /obj/item/flashlight/lantern,
/obj/item/storage/pill_bottle/charcoal,
/obj/item/storage/pill_bottle/charcoal,
/obj/item/hatchet,
+ /obj/item/hatchet,
)
crate_name = "Jungle Exploration Kit"
@@ -76,16 +87,45 @@
crate_name = "Beach Kit"
/*
- Heavy Duty Exploration Gear
+ General Exploration Gear
*/
/datum/supply_pack/exploration/capsules
- name = "Bluespace Shelter Capsules"
- desc = "A trio of Bluespace Shelter Capsules, for instant shelter in rough situations."
- cost = 3000
+ name = "Bluespace Shelter Capsule"
+ desc = "Contains a Bluespace Shelter Capsule, for instant shelter in rough situations."
+ cost = 500
+ contains = list(
+ /obj/item/survivalcapsule
+ )
+
+/datum/supply_pack/exploration/binocular
+ name = "Binoculars"
+ desc = "One pair of binoculars for surveying terrain."
+ cost = 200
+ contains = list(
+ /obj/item/binoculars
+ )
+
+/datum/supply_pack/exploration/anom_neutralizer
+ name = "Anomaly Neutralizer"
+ desc = "A single use anomaly neutralizer for stabalizing hazardous anomalies."
+ cost = 250
+ contains = list(
+ /obj/item/anomaly_neutralizer
+ )
+
+/datum/supply_pack/exploration/mineral_scanner
+ name = "Underground Mineral Scanner"
+ desc = "Contains an underground mineral scanner for locating veins of ore beneath the earth. Deep core laser drill for extracting said ores not included."
+ cost = 250
contains = list(
- /obj/item/survivalcapsule,
- /obj/item/survivalcapsule,
- /obj/item/survivalcapsule,
+ /obj/item/pinpointer/mineral
)
+/datum/supply_pack/exploration/gps
+ name = "GPS"
+ desc = "Contains a GPS device, useful for finding lost things and not getting lost yourself."
+ cost = 100
+ contains = list(
+ /obj/item/gps
+ )
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index 038d69dff370..3b390da34251 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -11,7 +11,7 @@
heat_protection = CHEST|GROIN|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hooded/explorer
armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/pinpointer/mineral, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
resistance_flags = FIRE_PROOF
supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
@@ -65,7 +65,7 @@
resistance_flags = FIRE_PROOF | LAVA_PROOF
slowdown = 0
armor = list("melee" = 70, "bullet" = 40, "laser" = 30, "energy" = 45, "bomb" = 70, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/pinpointer/mineral, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
/obj/item/clothing/suit/space/hostile_environment/Initialize()
. = ..()
@@ -167,7 +167,7 @@
heat_protection = CHEST|GROIN|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hooded/survivor_hood
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 10, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30)
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/pinpointer/mineral, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
resistance_flags = FIRE_PROOF
supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm
index 7c62a915f65e..4def7dbe5dde 100644
--- a/code/modules/mining/equipment/mineral_scanner.dm
+++ b/code/modules/mining/equipment/mineral_scanner.dm
@@ -126,6 +126,7 @@
/obj/item/pinpointer/mineral/examine(mob/user)
. = ..()
. += "It is currently set to [scanmode ? "scan underground" : "scan the surface"]."
+ . += span_notice("You can use the scanner on an vein on harm intent to mark them as sites of no interest, causing them to no longer show up on scans.")
/obj/item/pinpointer/mineral/AltClick(mob/user) //switching modes
..()
@@ -204,7 +205,7 @@
var/located_dist
var/obj/structure/located_vein
for(var/obj/structure/vein/I in GLOB.ore_veins)
- if(I.z == 0 || I.virtual_z() != here.virtual_z())
+ if(I.z == 0 || I.virtual_z() != here.virtual_z() || I.detectable == FALSE)
continue
if(located_vein)
var/new_dist = get_dist(here, get_turf(I))
@@ -223,6 +224,16 @@
if(!proximity || !istype(O,/obj/structure/vein))
return
playsound(src, 'sound/effects/fastbeep.ogg', 10)
+ if(user.a_intent == INTENT_HARM)
+ if(O.detectable == TRUE)
+ to_chat(user,span_notice("You blacklist the vein from the scanner's telemetry, and will no longer be detected as a site of interest to the scanner."))
+ O.detectable = FALSE
+ return
+ else
+ to_chat(user,span_notice("You mark vein into the scanner's telemetry, allowing it be located by underground scans."))
+ O.detectable = TRUE
+ return
+
if(O.vein_contents.len > 0)
to_chat(user, "Class [O.vein_class] ore vein with [O.mining_charges] possible ore lodes found.")
for(var/re in O.vein_contents)
diff --git a/code/modules/mining/ore_veins.dm b/code/modules/mining/ore_veins.dm
index 32b1ffeab8d5..16f6afa8da0c 100644
--- a/code/modules/mining/ore_veins.dm
+++ b/code/modules/mining/ore_veins.dm
@@ -10,6 +10,8 @@ GLOBAL_LIST_EMPTY(ore_veins)
move_resist = INFINITY
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ //Whether the mining scanner is able to locate this vein.
+ var/detectable = TRUE
var/mining_charges = 6
//Classification of the quality of possible ores within a vein
//Used to determine difficulty & ore amounts
@@ -75,6 +77,11 @@ GLOBAL_LIST_EMPTY(ore_veins)
ore_list.Remove(picked)
GLOB.ore_veins += src
+/obj/structure/vein/examine(mob/user)
+ . = ..()
+ if(!detectable)
+ . += span_notice("This vein has been marked as a site of no interest, and will not show up on deep core scans.")
+
/obj/structure/vein/Destroy()
GLOB.ore_veins -= src
return ..()
@@ -105,6 +112,7 @@ GLOBAL_LIST_EMPTY(ore_veins)
/obj/structure/vein/proc/toggle_spawning()
spawning_started = SEND_SIGNAL(src, COMSIG_SPAWNER_TOGGLE_SPAWNING, spawning_started)
+
//
// Planetary and Class Subtypes
// The current set of subtypes are heavily subject to future balancing and reworking as the balance of them is tested more