[MIRROR] Buffing some awful black market items to be less awful. (#28856)

* Buffing some awful black market items to be less awful. (#84895)

## About The Pull Request
With this PR, I'm making some awful or bad blackmarket items less bad
(some are still bad imo). I don't aim to tweak every item that I find
mediocre at best, because it ultimately boils down to opinion and maybe
what I don't like, others do, but also because the feature was designed
to have some "scammy" items in there (the broken chameleon hat is a
prime example).

Moving on, some of the more noticeable changes:
- the old spacesuit in a box should no longer cost thousands of credits
- the thermite bottle now contains enough thermite to melt one r-wall
- replaced the shotgun dart item with a more expensive box of XL shotgun
darts (25 units of reagent capacity vs 15)
- replaced the science googles with a more expensive medical-security
combo HUD (the sprites exist already)
- the donk pocket box item can now spawn subtypes of the donk pocket
box, this includes the gondola box, though it's pretty rare.
- the suspicious pill bottle item can now spawn a pill bottle of
maintenance pills

The rest should be price changes.

## Why It's Good For The Game
Many of the blackmarkets choices are downright a bummer, and I'm not
talking about things like the broken chameleon hat, but stuff such as
shotgun darts, science googles, thermite; I mean, SOME of stuff that's
OBVIOUSLY easy and more convenient to get from a (proto/auto) lathe or
the chemist and just make the blackmarket look kinda bad.

## Changelog

🆑
balance: reduced the prices of some blackmarket items across the board.
balance: the thermite bottle (from the contraband spawner and the
blackmarket), now spawns with 50u of thermite vs 30, enough to melt one
reinforced wall.
add: Replaced the science googles from the blackmarket with a security +
health scanner HUD.
add: Replaced the single shotgun dart from the blackmarket with a box of
XL shotgun darts.
add: The donk pocket box from the blackmarket now comes in different
flavors.
/🆑

* Buffing some awful black market items to be less awful.

* modular edits

* maybe?

* fix icons

* fix

* Update storage.dm

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
This commit is contained in:
SkyratBot
2024-07-20 21:12:55 +05:30
committed by GitHub
co-authored by Ghom SpaceLoveSs13
parent d4fb5d6e2b
commit ae51c811e0
15 changed files with 103 additions and 64 deletions
@@ -204,6 +204,16 @@
for(var/i in 1 to 7)
new /obj/item/ammo_casing/shotgun/breacher(src)
/obj/item/storage/box/large_dart
name = "box of XL shotgun darts"
name = "A box full of shotgun darts with increased chemical storage capacity."
icon_state = "shotdart_box"
illustration = null
/obj/item/storage/box/large_dart/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/ammo_casing/shotgun/dart/large(src)
/obj/item/storage/box/emptysandbags
name = "box of empty sandbags"
illustration = "sandbag"
@@ -32,13 +32,23 @@
stock_max = 4
availability_prob = 50
/datum/market_item/tool/medsechud
name = "MedSec HUD"
desc = "A mostly defunct combination of security and health scanner HUDs. They don't produce these around anymore."
item = /obj/item/clothing/glasses/hud/medsechud
price_min = CARGO_CRATE_VALUE * 2
price_max = CARGO_CRATE_VALUE * 3.5
stock_max = 3
availability_prob = 50
/datum/market_item/clothing/full_spacesuit_set
name = "\improper Nanotrasen Branded Spacesuit Box"
desc = "A few boxes of \"Old Style\" space suits fell off the back of a space truck."
item = /obj/item/storage/box
price_min = CARGO_CRATE_VALUE * 7.5
price_max = CARGO_CRATE_VALUE * 20
price_min = CARGO_CRATE_VALUE * 1.875
price_max = CARGO_CRATE_VALUE * 4
stock_max = 3
availability_prob = 30
@@ -66,7 +76,7 @@
item = /obj/item/clothing/shoes/bhop/rocket
price_min = CARGO_CRATE_VALUE * 5
price_max = CARGO_CRATE_VALUE * 15
price_max = CARGO_CRATE_VALUE * 10
stock_max = 1
availability_prob = 40
@@ -19,10 +19,20 @@
stock_min = 2
stock_max = 5
price_min = CARGO_CRATE_VALUE * 1.625
price_max = CARGO_CRATE_VALUE * 2
price_min = CARGO_CRATE_VALUE * 1.375
price_max = CARGO_CRATE_VALUE * 1.825
availability_prob = 80
/datum/market_item/consumable/donk_pocket_box/spawn_item(loc)
var/static/list/choices
if(isnull(choices))
choices = list()
for(var/boxtype as anything in typesof(/obj/item/storage/box/donkpockets))
choices[boxtype] = 3
choices[/obj/item/storage/box/donkpockets/donkpocketgondola] = 1
item = pick_weight(choices)
return ..()
/datum/market_item/consumable/suspicious_pills
name = "Bottle of Suspicious Pills"
desc = "A random cocktail of luxury drugs that are sure to put a smile on your face!"
@@ -30,17 +40,18 @@
stock_min = 2
stock_max = 3
price_min = CARGO_CRATE_VALUE * 2
price_max = CARGO_CRATE_VALUE * 3.5
price_min = CARGO_CRATE_VALUE * 0.625
price_max = CARGO_CRATE_VALUE * 1.25
availability_prob = 50
/datum/market_item/consumable/suspicious_pills/spawn_item(loc)
var/pillbottle = pick(list(/obj/item/storage/pill_bottle/zoom,
/obj/item/storage/pill_bottle/happy,
/obj/item/storage/pill_bottle/lsd,
/obj/item/storage/pill_bottle/aranesp,
/obj/item/storage/pill_bottle/stimulant))
item = pillbottle
item = pick(list(/obj/item/storage/pill_bottle/zoom,
/obj/item/storage/pill_bottle/happy,
/obj/item/storage/pill_bottle/lsd,
/obj/item/storage/pill_bottle/aranesp,
/obj/item/storage/pill_bottle/stimulant,
/obj/item/storage/pill_bottle/maintenance_pill,
))
return ..()
/datum/market_item/consumable/floor_pill
@@ -2,7 +2,7 @@
category = "Miscellaneous"
abstract_path = /datum/market_item/misc
/datum/market_item/misc/Clear_PDA
/datum/market_item/misc/clear_pda
name = "Clear PDA"
desc = "Show off your style with this limited edition clear PDA!."
item = /obj/item/modular_computer/pda/clear
@@ -12,7 +12,7 @@
stock_max = 2
availability_prob = 50
/datum/market_item/misc/jade_Lantern
/datum/market_item/misc/jade_lantern
name = "Jade Lantern"
desc = "Found in a box labeled 'Danger: Radioactive'. Probably safe."
item = /obj/item/flashlight/lantern/jade
@@ -60,8 +60,8 @@
item = /obj/item/binoculars
stock = 1
price_min = CARGO_CRATE_VALUE * 2
price_max = CARGO_CRATE_VALUE * 4.8
price_min = CARGO_CRATE_VALUE * 1.75
price_max = CARGO_CRATE_VALUE * 4
availability_prob = 30
/datum/market_item/tool/riot_shield
@@ -76,23 +76,13 @@
/datum/market_item/tool/thermite_bottle
name = "Thermite Bottle"
desc = "30u of Thermite to assist in creating a quick access point or get away!"
desc = "50u of Thermite to assist in creating a quick access point or get away!"
item = /obj/item/reagent_containers/cup/bottle/thermite
price_min = CARGO_CRATE_VALUE * 2.5
price_max = CARGO_CRATE_VALUE * 7.5
stock_max = 3
availability_prob = 30
/datum/market_item/tool/science_goggles
name = "Science Goggles"
desc = "These glasses scan the contents of containers and projects their contents to the user in an easy to read format."
item = /obj/item/clothing/glasses/science
price_min = CARGO_CRATE_VALUE * 0.75
price_max = CARGO_CRATE_VALUE
stock_max = 3
availability_prob = 50
availability_prob = 30
/**
* # Fake N-spect scanner black market entry
@@ -13,16 +13,15 @@
availability_prob = 40
/datum/market_item/weapon/shotgun_dart
name = "Shotgun Dart"
name = "Box of XL Shotgun Darts"
desc = "These handy darts can be filled up with any chemical and be shot with a shotgun! \
Prank your friends by shooting them with laughter! \
Not recommended for comercial use."
item = /obj/item/ammo_casing/shotgun/dart
item = /obj/item/storage/box/large_dart
price_min = CARGO_CRATE_VALUE * 0.05
price_max = CARGO_CRATE_VALUE * 0.25
stock_min = 10
stock_max = 60
price_min = CARGO_CRATE_VALUE * 1.375
price_max = CARGO_CRATE_VALUE * 2.875
stock_max = 4
availability_prob = 40
/datum/market_item/weapon/bone_spear
+23 -14
View File
@@ -2,7 +2,8 @@
name = "HUD"
desc = "A heads-up display that provides important info in (almost) real time."
flags_1 = null //doesn't protect eyes because it's a monocle, duh
var/hud_type = null
///A list of atom hud types added to the mob when the glasses are worn on the appropriate slot.
var/list/hud_types
// NOTE: Just because you have a HUD display doesn't mean you should be able to interact with stuff on examine, that's where the associated trait (TRAIT_MEDICAL_HUD, TRAIT_SECURITY_HUD, etc) is necessary.
@@ -10,7 +11,7 @@
..()
if(!(slot & ITEM_SLOT_EYES))
return
if(hud_type)
for(var/hud_type in hud_types)
var/datum/atom_hud/our_hud = GLOB.huds[hud_type]
our_hud.show_to(user)
@@ -18,7 +19,7 @@
..()
if(!istype(user) || user.glasses != src)
return
if(hud_type)
for(var/hud_type in hud_types)
var/datum/atom_hud/our_hud = GLOB.huds[hud_type]
our_hud.hide_from(user)
@@ -55,10 +56,17 @@
name = "health scanner HUD"
desc = "A heads-up display that scans the humanoids in view and provides accurate data about their health status."
icon_state = "healthhud"
hud_type = DATA_HUD_MEDICAL_ADVANCED
hud_types = list(DATA_HUD_MEDICAL_ADVANCED)
clothing_traits = list(TRAIT_MEDICAL_HUD)
glass_colour_type = /datum/client_colour/glass_colour/lightblue
/obj/item/clothing/glasses/hud/medsechud
name = "health scanner security HUD"
desc = "A heads-up display that scans the humanoids in view and provides accurate data about their health status, ID status and security records."
icon_state = "medsechud"
hud_types = list(DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_SECURITY_ADVANCED)
clothing_traits = list(TRAIT_MEDICAL_HUD, TRAIT_SECURITY_HUD)
/obj/item/clothing/glasses/hud/health/night
name = "night vision health scanner HUD"
desc = "An advanced medical heads-up display that allows doctors to find patients in complete darkness."
@@ -110,7 +118,7 @@
name = "diagnostic HUD"
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits."
icon_state = "diagnostichud"
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
hud_types = list(DATA_HUD_DIAGNOSTIC_BASIC)
clothing_traits = list(TRAIT_DIAGNOSTIC_HUD)
glass_colour_type = /datum/client_colour/glass_colour/lightorange
@@ -153,7 +161,7 @@
name = "security HUD"
desc = "A heads-up display that scans the humanoids in view and provides accurate data about their ID status and security records."
icon_state = "securityhud"
hud_type = DATA_HUD_SECURITY_ADVANCED
hud_types = list(DATA_HUD_SECURITY_ADVANCED)
clothing_traits = list(TRAIT_SECURITY_HUD)
glass_colour_type = /datum/client_colour/glass_colour/red
@@ -243,18 +251,18 @@
if (wearer.glasses != src)
return
if (hud_type)
for(var/hud_type in hud_types)
var/datum/atom_hud/our_hud = GLOB.huds[hud_type]
our_hud.hide_from(user)
if (hud_type == DATA_HUD_MEDICAL_ADVANCED)
hud_type = null
else if (hud_type == DATA_HUD_SECURITY_ADVANCED)
hud_type = DATA_HUD_MEDICAL_ADVANCED
if (DATA_HUD_MEDICAL_ADVANCED in hud_types)
hud_types = null
else if (DATA_HUD_SECURITY_ADVANCED in hud_types)
hud_types = list(DATA_HUD_MEDICAL_ADVANCED)
else
hud_type = DATA_HUD_SECURITY_ADVANCED
hud_types = list(DATA_HUD_SECURITY_ADVANCED)
if (hud_type)
for(var/hud_type in hud_types)
var/datum/atom_hud/our_hud = GLOB.huds[hud_type]
our_hud.show_to(user)
@@ -265,13 +273,14 @@
name = "thermal HUD scanner"
desc = "Thermal imaging HUD in the shape of glasses."
icon_state = "thermal"
hud_type = DATA_HUD_SECURITY_ADVANCED
hud_types = list(DATA_HUD_SECURITY_ADVANCED)
vision_flags = SEE_MOBS
color_cutoffs = list(25, 8, 5)
glass_colour_type = /datum/client_colour/glass_colour/red
/obj/item/clothing/glasses/hud/toggle/thermal/attack_self(mob/user)
..()
var/hud_type = hud_types[1]
switch (hud_type)
if (DATA_HUD_MEDICAL_ADVANCED)
icon_state = "meson"
@@ -160,7 +160,13 @@
/obj/item/ammo_casing/shotgun/dart/attackby()
return
/obj/item/ammo_casing/shotgun/dart/large
name = "XL shotgun dart"
desc = "A dart for use in shotguns. Can be injected with up to 25 units of any chemical."
reagent_amount = 25
/obj/item/ammo_casing/shotgun/dart/bioterror
name = "bioterror dart"
desc = "An improved shotgun dart filled with deadly toxins. Can be injected with up to 30 units of any chemical."
reagent_amount = 30
@@ -431,7 +431,7 @@
/obj/item/reagent_containers/cup/bottle/thermite
name = "thermite bottle"
list_reagents = list(/datum/reagent/thermite = 30)
list_reagents = list(/datum/reagent/thermite = 50)
// Bottles for mail goodies.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

@@ -120,6 +120,10 @@
icon_state = "secbox_xl"
illustration = "breacherslug"
/obj/item/storage/box/large_dart
icon_state = "secbox_xl"
illustration = "shotdart"
/obj/item/storage/box/evidence
icon_state = "secbox"
illustration = "evidence"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@@ -4,7 +4,7 @@
icon = 'modular_skyrat/modules/company_imports/icons/hud_goggles.dmi'
worn_icon = 'modular_skyrat/modules/company_imports/icons/hud_goggles_worn.dmi'
icon_state = "permithud"
hud_type = DATA_HUD_PERMIT
hud_types = list(DATA_HUD_PERMIT)
/obj/item/clothing/glasses/hud/gun_permit/sunglasses
name = "permit HUD sunglasses"
@@ -20,7 +20,7 @@
/obj/item/clothing/glasses/hud/eyepatch/sec
name = "security eyepatch HUD"
desc = "Lost your eye beating an innocent clown? Thankfully your corporate overlords have made something to make up for this. May not do well against flashes."
hud_type = DATA_HUD_SECURITY_ADVANCED
hud_types = list(DATA_HUD_SECURITY_ADVANCED)
clothing_traits = list(TRAIT_SECURITY_HUD)
glass_colour_type = /datum/client_colour/glass_colour/blue
@@ -39,7 +39,7 @@
desc = "Do no harm, maybe harm has befell to you, or your poor eyeball, thankfully there's a way to continue your oath, thankfully it didn't mention sleepdarts or monkey men."
icon_state = "medpatch"
base_icon_state = "medpatch"
hud_type = DATA_HUD_MEDICAL_ADVANCED
hud_types = list(DATA_HUD_MEDICAL_ADVANCED)
clothing_traits = list(TRAIT_MEDICAL_HUD)
glass_colour_type = /datum/client_colour/glass_colour/lightblue
@@ -81,7 +81,7 @@
desc = "Lost your eyeball to a rogue borg? Dare to tell a Dogborg to do it's job? Got bored? Whatever the reason, this bit of tech will help you still repair borgs, they'll never need it since they usually do it themselves, but its the thought that counts."
icon_state = "robopatch"
base_icon_state = "robopatch"
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
hud_types = list(DATA_HUD_DIAGNOSTIC_BASIC)
clothing_traits = list(TRAIT_DIAGNOSTIC_HUD)
glass_colour_type = /datum/client_colour/glass_colour/lightorange
@@ -88,7 +88,7 @@
if(ishuman(user)) // Make sure they're a human wearing the glasses first
var/mob/living/carbon/human/human = user
if(human.glasses == src)
var/datum/atom_hud/our_hud = GLOB.huds[initial(glasses_type.hud_type)]
var/datum/atom_hud/our_hud = GLOB.huds[initial(glasses_type.hud_types)]
our_hud.show_to(human)
for(var/trait in initial(glasses_type.clothing_traits))
ADD_TRAIT(human, trait, GLASSES_TRAIT)
@@ -97,7 +97,7 @@
if(ishuman(user)) // Make sure they're a human wearing the glasses first
var/mob/living/carbon/human/human = user
if(human.glasses == src)
var/datum/atom_hud/our_hud = GLOB.huds[initial(glasses_type.hud_type)]
var/datum/atom_hud/our_hud = GLOB.huds[initial(glasses_type.hud_types)]
our_hud.hide_from(human)
for(var/trait in initial(glasses_type.clothing_traits))
REMOVE_TRAIT(human, trait, GLASSES_TRAIT)
@@ -109,17 +109,17 @@
tint = initial(glasses_type.tint)
color_cutoffs = initial(glasses_type.color_cutoffs)
vision_flags = initial(glasses_type.vision_flags)
hud_type = initial(glasses_type.hud_type)
//initial does not currently work on lists so we must do this
var/obj/item/clothing/glasses/hud/ar/glasses_object = new glasses_type // make a temporary glasses obj
clothing_traits = glasses_object.clothing_traits // pull the list from the created obj
hud_types = glasses_object.hud_types // same here
qdel(glasses_object) // delete the object
/obj/item/clothing/glasses/hud/ar/proc/disable_vars(mob/user)
vision_flags = 0 /// Sets vision_flags to 0 to disable meson view mainly
color_cutoffs = null // Resets lighting_alpha to user's default one
clothing_traits = null /// also disables the options for Science functionality
hud_type = null
hud_types = null
/// Create new icon and worn_icon, with only the first frame of every state and setting that as icon.
/// this practically freezes the animation :)
@@ -164,7 +164,7 @@
icon_state = "aviator_sec"
off_state = "aviator_sec_flash"
flash_protect = FLASH_PROTECTION_NONE
hud_type = DATA_HUD_SECURITY_ADVANCED
hud_types = list(DATA_HUD_SECURITY_ADVANCED)
clothing_traits = list(TRAIT_SECURITY_HUD)
glass_colour_type = /datum/client_colour/glass_colour/red
modes = list(MODE_OFF_FLASH_PROTECTION, MODE_ON)
@@ -176,7 +176,7 @@
desc = "A heads-up display that scans the humanoids in view and provides accurate data about their health status. This HUD has been fitted inside of a pair of sunglasses."
icon_state = "aviator_med"
flash_protect = FLASH_PROTECTION_NONE
hud_type = DATA_HUD_MEDICAL_ADVANCED
hud_types = list(DATA_HUD_MEDICAL_ADVANCED)
clothing_traits = list(TRAIT_MEDICAL_HUD)
glass_colour_type = /datum/client_colour/glass_colour/lightblue
@@ -197,7 +197,7 @@
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits. This HUD has been fitted inside of a pair of sunglasses."
icon_state = "aviator_diagnostic"
flash_protect = FLASH_PROTECTION_NONE
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
hud_types = list(DATA_HUD_DIAGNOSTIC_BASIC)
clothing_traits = list(TRAIT_DIAGNOSTIC_HUD)
glass_colour_type = /datum/client_colour/glass_colour/lightorange
@@ -263,19 +263,19 @@
/obj/item/clothing/glasses/hud/ar/projector/health
name = "retinal projector health HUD"
icon_state = "projector_med"
hud_type = DATA_HUD_MEDICAL_ADVANCED
hud_types = list(DATA_HUD_MEDICAL_ADVANCED)
clothing_traits = list(ID_HUD, TRAIT_MEDICAL_HUD)
/obj/item/clothing/glasses/hud/ar/projector/security
name = "retinal projector security HUD"
icon_state = "projector_sec"
hud_type = DATA_HUD_SECURITY_ADVANCED
hud_types = list(DATA_HUD_SECURITY_ADVANCED)
clothing_traits = list(TRAIT_SECURITY_HUD)
/obj/item/clothing/glasses/hud/ar/projector/diagnostic
name = "retinal projector diagnostic HUD"
icon_state = "projector_diagnostic"
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
hud_types = list(DATA_HUD_DIAGNOSTIC_BASIC)
clothing_traits = list(TRAIT_DIAGNOSTIC_HUD)
/obj/item/clothing/glasses/hud/ar/projector/science