mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 12:08:55 +01:00
Rebalance the work camp again (#96731)
## About The Pull Request People had been noting that it was taking longer to pay off a 1000 point gulag sentence than expected, because we made some changes to mining and forgot to update it So now: - There are ores in the walls again (iron, plasma, silver, and gold) - Materials are now worth a variable amount of points (iron = plasma < silver < gold) - Boulders mined from the walls pop into a large amount of the kinds of ores you can mine - Boulders dragged out of the infinite use "work pit" contain a guaranteed large amount of iron The upshot of these changes are: - You can pull 14 boulders out of the hole for a guaranteed time spent of about 6 and a half quite boring minutes to guarantee finishing your sentence (if you know exactly what you are doing and optimise it, probably a bit longer for many people) - You can mine the walls for ore at the mercy of RNG, you will _likely_ be done in about 5 minutes of mining if you're an early sentence and obviously it gets harder the more people have already mined out the ores I aimed for about 5 and 6 minutes as a target because of a combination of travel time, the fact that you need to actively do something, and because of the weather. Remember that's only 5 or 6 minutes actually doing _mining_ (or... watching progress bars and repeatedly falling over), doesn't include variations in skill or luck, being hustled into the teleporter, suiting up, processing the ores, summoning the shuttle, taking the ores to the shuttle, and an ash storm if you're unlucky. So all around, probably adds up to be reasonably close to a 10 minute brig timer. We all know most people given a 1 point sentence are just going to kill themselves anyway. Also I moved some lightbulbs in the mining station work camp area because you couldn't see some of the important tiles and it was annoying me ## Why It's Good For The Game We advise players that 1000 points in the work camp is work about a 10 minute brig sentence and this is basically ban-baiting from our policy page if it's not actually true ## Changelog 🆑 balance: Adjusted the values of ores from the work camp to make a 1000 point sentence closer to a 10 minute brig timer map: Moved some lightbulbs around in the work camp so you can see the bars getting printed /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. -->
This commit is contained in:
@@ -3207,6 +3207,7 @@
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/ore_box,
|
||||
/obj/structure/sign/poster/official/do_not_question/directional/north,
|
||||
/obj/machinery/light/small/directional/north,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/mine/laborcamp/production)
|
||||
"qd" = (
|
||||
@@ -3375,6 +3376,7 @@
|
||||
"rm" = (
|
||||
/obj/structure/sign/warning/gas_mask/directional/west,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/light/small/directional/west,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/mine/laborcamp/production)
|
||||
"ro" = (
|
||||
@@ -3577,7 +3579,6 @@
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/sign/departments/medbay/alt/directional/north,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/light/small/directional/north,
|
||||
/turf/open/floor/iron/smooth_edge,
|
||||
/area/mine/laborcamp/production)
|
||||
"sH" = (
|
||||
@@ -8054,7 +8055,6 @@
|
||||
/area/lavaland/surface/outdoors)
|
||||
"Ub" = (
|
||||
/obj/item/kirbyplants/random,
|
||||
/obj/machinery/light/small/directional/west,
|
||||
/obj/machinery/airalarm/directional/north,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/smooth,
|
||||
@@ -24775,7 +24775,7 @@ Nz
|
||||
Ez
|
||||
pQ
|
||||
uq
|
||||
Jw
|
||||
jU
|
||||
ff
|
||||
Gc
|
||||
RV
|
||||
@@ -25289,7 +25289,7 @@ oq
|
||||
fe
|
||||
yu
|
||||
uq
|
||||
jU
|
||||
Jw
|
||||
ff
|
||||
Ge
|
||||
dr
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
icon_state = "polycrystal"
|
||||
inhand_icon_state = null
|
||||
material_flags = MATERIAL_NO_DESCRIPTORS
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 100
|
||||
mats_per_unit = list(/datum/material/bluespace=SHEET_MATERIAL_AMOUNT)
|
||||
attack_verb_continuous = list("bluespace polybashes", "bluespace polybatters", "bluespace polybludgeons", "bluespace polythrashes", "bluespace polysmashes")
|
||||
attack_verb_simple = list("bluespace polybash", "bluespace polybatter", "bluespace polybludgeon", "bluespace polythrash", "bluespace polysmash")
|
||||
|
||||
@@ -207,7 +207,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
||||
resistance_flags = ACID_PROOF
|
||||
material_flags = NONE
|
||||
merge_type = /obj/item/stack/sheet/plasmarglass
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 5
|
||||
matter_amount = 8
|
||||
table_type = /obj/structure/table/reinforced/plasmarglass
|
||||
pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg'
|
||||
|
||||
@@ -107,7 +107,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
singular_name = "diamond"
|
||||
construction_path_type = "diamond"
|
||||
mats_per_unit = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 100
|
||||
merge_type = /obj/item/stack/sheet/mineral/diamond
|
||||
material_type = /datum/material/diamond
|
||||
walltype = /turf/closed/wall/mineral/diamond
|
||||
@@ -137,7 +137,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
singular_name = "uranium sheet"
|
||||
construction_path_type = "uranium"
|
||||
mats_per_unit = list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 50
|
||||
merge_type = /obj/item/stack/sheet/mineral/uranium
|
||||
material_type = /datum/material/uranium
|
||||
walltype = /turf/closed/wall/mineral/uranium
|
||||
@@ -173,7 +173,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 100
|
||||
mats_per_unit = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 5
|
||||
merge_type = /obj/item/stack/sheet/mineral/plasma
|
||||
material_type = /datum/material/plasma
|
||||
walltype = /turf/closed/wall/mineral/plasma
|
||||
@@ -210,7 +210,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
singular_name = "gold bar"
|
||||
construction_path_type = "gold"
|
||||
mats_per_unit = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 20
|
||||
merge_type = /obj/item/stack/sheet/mineral/gold
|
||||
material_type = /datum/material/gold
|
||||
walltype = /turf/closed/wall/mineral/gold
|
||||
@@ -240,7 +240,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
singular_name = "silver bar"
|
||||
construction_path_type = "silver"
|
||||
mats_per_unit = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 10
|
||||
merge_type = /obj/item/stack/sheet/mineral/silver
|
||||
material_type = /datum/material/silver
|
||||
table_type = /obj/structure/table/optable
|
||||
@@ -269,7 +269,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
singular_name = "bananium sheet"
|
||||
construction_path_type = "bananium"
|
||||
mats_per_unit = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = -5
|
||||
merge_type = /obj/item/stack/sheet/mineral/bananium
|
||||
material_type = /datum/material/bananium
|
||||
walltype = /turf/closed/wall/mineral/bananium
|
||||
@@ -300,7 +300,7 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
|
||||
throw_range = 3
|
||||
construction_path_type = "titanium"
|
||||
mats_per_unit = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 10
|
||||
merge_type = /obj/item/stack/sheet/mineral/titanium
|
||||
material_type = /datum/material/titanium
|
||||
walltype = /turf/closed/wall/mineral/titanium
|
||||
@@ -357,7 +357,7 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \
|
||||
throw_range = 3
|
||||
construction_path_type = "plastitanium"
|
||||
mats_per_unit = list(/datum/material/alloy/plastitanium=SHEET_MATERIAL_AMOUNT)
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 20
|
||||
material_type = /datum/material/alloy/plastitanium
|
||||
merge_type = /obj/item/stack/sheet/mineral/plastitanium
|
||||
material_flags = NONE
|
||||
@@ -537,7 +537,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
|
||||
singular_name = "metal hydrogen sheet"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF | BOMB_PROOF
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 100
|
||||
mats_per_unit = list(/datum/material/metalhydrogen = SHEET_MATERIAL_AMOUNT)
|
||||
material_type = /datum/material/metalhydrogen
|
||||
merge_type = /obj/item/stack/sheet/mineral/metal_hydrogen
|
||||
@@ -567,7 +567,7 @@ GLOBAL_LIST_INIT(zaukerite_recipes, list(
|
||||
inhand_icon_state = "sheet-zaukerite"
|
||||
singular_name = "zaukerite crystal"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 100
|
||||
mats_per_unit = list(/datum/material/zaukerite = SHEET_MATERIAL_AMOUNT)
|
||||
merge_type = /obj/item/stack/sheet/mineral/zaukerite
|
||||
material_type = /datum/material/zaukerite
|
||||
|
||||
@@ -169,7 +169,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
obj_flags = CONDUCTS_ELECTRICITY
|
||||
resistance_flags = FIRE_PROOF
|
||||
merge_type = /obj/item/stack/sheet/iron
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 5
|
||||
table_type = /obj/structure/table
|
||||
material_type = /datum/material/iron
|
||||
matter_amount = 4
|
||||
@@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
|
||||
armor_type = /datum/armor/sheet_plasteel
|
||||
resistance_flags = FIRE_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plasteel
|
||||
gulag_valid = TRUE
|
||||
gulag_value = 10
|
||||
table_type = /obj/structure/table/reinforced
|
||||
material_flags = NONE
|
||||
matter_amount = 12
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
/// text string used to find typepaths used in door and wall (false and tram too) construction for door assemblies and girders respectively
|
||||
var/construction_path_type = null
|
||||
///If true, this is worth points in the gulag labour stacker
|
||||
var/gulag_valid = FALSE
|
||||
var/gulag_value = 0
|
||||
///Set to true if this is vended from a material storage
|
||||
var/manufactured = FALSE
|
||||
/// whether this sheet can be sniffed by the material sniffer
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
/obj/item/stack/sheet/examine(mob/user)
|
||||
. = ..()
|
||||
if (manufactured && gulag_valid)
|
||||
if (manufactured && gulag_value)
|
||||
. += span_notice("It has been embossed with a manufacturer's mark of guaranteed quality.")
|
||||
|
||||
var/datum/material/material = get_master_material()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
/// What kind of rock we got in there?
|
||||
var/spawned_boulder = /obj/item/boulder/gulag
|
||||
var/spawned_boulder = /obj/item/boulder/gulag_vent
|
||||
/// Prevents multiple people from hauling at a time
|
||||
var/occupied = FALSE
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
/turf/closed/mineral/proc/change_ore(ore_type, random = TRUE)
|
||||
if (ispath(ore_type, /obj/item/boulder))
|
||||
scan_state = "rock_boulder" // Yes even the lowly boulder has a scan state
|
||||
spawned_boulder = /obj/item/boulder/gulag_expanded
|
||||
spawned_boulder = /obj/item/boulder/gulag
|
||||
return
|
||||
|
||||
if (random)
|
||||
@@ -727,8 +727,12 @@
|
||||
|
||||
/turf/closed/mineral/random/labormineral/mineral_chances()
|
||||
return list(
|
||||
/obj/item/boulder/gulag = 165,
|
||||
/turf/closed/mineral/gibtonite = 2,
|
||||
/obj/item/boulder/gulag = 30,
|
||||
/obj/item/stack/ore/gold = 10,
|
||||
/obj/item/stack/ore/iron = 25,
|
||||
/obj/item/stack/ore/plasma = 20,
|
||||
/obj/item/stack/ore/silver = 20,
|
||||
/turf/closed/mineral/gibtonite/volcanic = 2,
|
||||
)
|
||||
|
||||
/turf/closed/mineral/random/labormineral/volcanic
|
||||
@@ -738,12 +742,6 @@
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = TRUE
|
||||
|
||||
/turf/closed/mineral/random/labormineral/volcanic/mineral_chances()
|
||||
return list(
|
||||
/obj/item/boulder/gulag_expanded = 166,
|
||||
/turf/closed/mineral/gibtonite/volcanic = 2,
|
||||
)
|
||||
|
||||
// Subtypes for mappers placing ores manually.
|
||||
/turf/closed/mineral/random/labormineral/ice
|
||||
name = "snowy mountainside"
|
||||
@@ -760,7 +758,11 @@
|
||||
|
||||
/turf/closed/mineral/random/labormineral/ice/mineral_chances()
|
||||
return list(
|
||||
/obj/item/boulder/gulag = 168,
|
||||
/obj/item/boulder/gulag = 30,
|
||||
/obj/item/stack/ore/gold = 10,
|
||||
/obj/item/stack/ore/iron = 25,
|
||||
/obj/item/stack/ore/plasma = 20,
|
||||
/obj/item/stack/ore/silver = 20,
|
||||
/turf/closed/mineral/gibtonite/ice/icemoon = 2,
|
||||
)
|
||||
|
||||
|
||||
@@ -53,47 +53,31 @@
|
||||
icon_state = "boulder_artifact_diamond"
|
||||
bonus_mat = /datum/material/diamond
|
||||
|
||||
///Boulders usually spawned in lavaland labour camp area
|
||||
///Boulders spawned by the vent in the work camp, contain exclusively iron so we can have a reliable payout
|
||||
/obj/item/boulder/gulag_vent
|
||||
name = "iron boulder"
|
||||
desc = "Basically just a raw lump of iron. Smash it into bits with a pickaxe."
|
||||
// This produces 5 ore when smashed open because not using a machine reduces the ore count by one. 14 boulders x 15 ore x 5 points = 1050 points
|
||||
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 16)
|
||||
|
||||
/// Boulders usually spawned in lavaland labour camp area, broken open with pickaxe like a loot box
|
||||
/obj/item/boulder/gulag
|
||||
name = "low-quality boulder"
|
||||
desc = "This rocks. It's a low quality boulder, so it's probably not worth as much."
|
||||
desc = "Smash it with a pickaxe to get a bunch of ore at once. This rocks."
|
||||
|
||||
/obj/item/boulder/gulag/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
/// Static list of all minerals to populate gulag boulders with.
|
||||
var/static/list/gulag_minerals = list(
|
||||
/datum/material/diamond = 1,
|
||||
/datum/material/gold = 8,
|
||||
/datum/material/iron = 95,
|
||||
/datum/material/plasma = 30,
|
||||
/datum/material/silver = 20,
|
||||
/datum/material/titanium = 8,
|
||||
/datum/material/uranium = 3,
|
||||
/datum/material/gold = 1,
|
||||
/datum/material/iron = 5,
|
||||
/datum/material/plasma = 4,
|
||||
/datum/material/silver = 2,
|
||||
)
|
||||
|
||||
set_custom_materials(list(pick_weight(gulag_minerals) = SHEET_MATERIAL_AMOUNT))
|
||||
|
||||
///Boulders usually spawned in lavaland labour camp area but with bluespace material
|
||||
/obj/item/boulder/gulag_expanded
|
||||
name = "low-density boulder"
|
||||
desc = "This rocks. It's not very well packed, and can't contain as many minerals."
|
||||
|
||||
/obj/item/boulder/gulag_expanded/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
/// Static list of all minerals to populate gulag boulders with, but with bluespace added where safe.
|
||||
var/static/list/expanded_gulag_minerals = list(
|
||||
/datum/material/bluespace = 1,
|
||||
/datum/material/diamond = 1,
|
||||
/datum/material/gold = 8,
|
||||
/datum/material/iron = 94,
|
||||
/datum/material/plasma = 30,
|
||||
/datum/material/silver = 20,
|
||||
/datum/material/titanium = 8,
|
||||
/datum/material/uranium = 3,
|
||||
)
|
||||
set_custom_materials(list(pick_weight(expanded_gulag_minerals) = SHEET_MATERIAL_AMOUNT))
|
||||
var/amount = rand(10, 13)
|
||||
set_custom_materials(list(pick_weight(gulag_minerals) = SHEET_MATERIAL_AMOUNT * amount))
|
||||
|
||||
///lowgrade boulder, Exists as an admin spawn for testing
|
||||
/obj/item/boulder/shabby
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#define SHEET_POINT_VALUE 33
|
||||
|
||||
/**********************Prisoners' Console**************************/
|
||||
|
||||
/obj/machinery/mineral/labor_claim_console
|
||||
@@ -201,8 +199,8 @@
|
||||
if (!istype(input, /obj/item/stack/sheet))
|
||||
return ..()
|
||||
var/obj/item/stack/sheet/sheet = input
|
||||
if (sheet.manufactured && sheet.gulag_valid)
|
||||
points += SHEET_POINT_VALUE * sheet.amount
|
||||
if (sheet.manufactured && sheet.gulag_value)
|
||||
points += sheet.gulag_value * sheet.amount
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mineral/stacking_machine/laborstacker/base_item_interaction(mob/living/user, obj/item/weapon, list/modifiers)
|
||||
@@ -245,5 +243,3 @@
|
||||
vars_and_tooltips_map = list(
|
||||
"PERSON" = "will be replaced with the name of the prisoner."
|
||||
)
|
||||
|
||||
#undef SHEET_POINT_VALUE
|
||||
|
||||
Reference in New Issue
Block a user