From e6e0200edb0fca2dc7f2d509e8eec0f18e52e7d2 Mon Sep 17 00:00:00 2001 From: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Sun, 3 May 2026 14:23:12 -0400 Subject: [PATCH] Makes quirk points configs get loaded into vars on the subsystem, + a small biome fix (#95941) --- .../configuration/entries/game_options.dm | 15 +++++++++++++++ code/controllers/subsystem/processing/quirks.dm | 14 ++++++++++---- code/datums/mapgen/biomes/_biome.dm | 2 +- code/modules/client/preferences.dm | 4 ++-- .../client/preferences/middleware/quirks.dm | 8 ++++---- 5 files changed, 32 insertions(+), 11 deletions(-) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 4191f5c6fcd..cb38d2f9d07 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -477,16 +477,31 @@ /// Disables Quirk point balancing for the server and clients. /datum/config_entry/flag/disable_quirk_points +/datum/config_entry/flag/disable_quirk_points/ValidateAndSet(str_val) + . = ..() + if(.) + SSquirks.points_enabled = !config_entry_value + /// The maximum amount of positive quirks one character can have at roundstart. /datum/config_entry/number/max_positive_quirks default = 6 min_val = -1 +/datum/config_entry/number/max_positive_quirks/ValidateAndSet(str_val) + . = ..() + if(.) + SSquirks.max_positive_quirks = config_entry_value + /// Freebie quirk points. Can't go negative because we have no way of enforcing a person has a quirk before they join. /datum/config_entry/number/default_quirk_points default = 2 min_val = 0 +/datum/config_entry/number/default_quirk_points/ValidateAndSet(str_val) + . = ..() + if(.) + SSquirks.default_quirk_points = config_entry_value + /// Max personalities you can have at once /datum/config_entry/number/max_personalities default = 5 diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 9bc33a49573..9bedd6a0796 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -54,8 +54,17 @@ PROCESSING_SUBSYSTEM_DEF(quirks) var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad ///An assoc list of quirks that can be obtained as a hardcore character, and their hardcore value. var/list/hardcore_quirks = list() + /// Whether or not quirk points are enabled, per server config + var/points_enabled + /// The number of max positive quirks that we allow, per server config + var/max_positive_quirks + // The default number of quirk points that you get to spend, per server config + var/default_quirk_points /datum/controller/subsystem/processing/quirks/Initialize() + points_enabled = !CONFIG_GET(flag/disable_quirk_points) + max_positive_quirks = CONFIG_GET(number/max_positive_quirks) + default_quirk_points = CONFIG_GET(number/default_quirk_points) get_quirks() return SS_INIT_SUCCESS @@ -110,7 +119,6 @@ PROCESSING_SUBSYSTEM_DEF(quirks) ///Cached list of possible quirks var/list/possible_quirks = quirks.Copy() - var/max_positive_quirks = CONFIG_GET(number/max_positive_quirks) if(max_positive_quirks < 0) max_positive_quirks = 6 @@ -174,9 +182,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) /datum/controller/subsystem/processing/quirks/proc/filter_invalid_quirks(list/quirks) var/list/new_quirks = list() var/list/positive_quirks = list() - var/points_enabled = !CONFIG_GET(flag/disable_quirk_points) - var/max_positive_quirks = CONFIG_GET(number/max_positive_quirks) - var/balance = -CONFIG_GET(number/default_quirk_points) + var/balance = -default_quirk_points var/list/all_quirks = get_quirks() diff --git a/code/datums/mapgen/biomes/_biome.dm b/code/datums/mapgen/biomes/_biome.dm index 51ab019e07f..d671f50e1f8 100644 --- a/code/datums/mapgen/biomes/_biome.dm +++ b/code/datums/mapgen/biomes/_biome.dm @@ -153,7 +153,7 @@ var/list/things_in_range = range(12, target_turf) var/blocked = FALSE for(var/mob/living/mob_blocker in things_in_range) - if(!ismining(mob_blocker)) + if(ismining(mob_blocker)) blocked = TRUE break diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index af6789d02f4..e1d644bb000 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -417,7 +417,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) return TRUE /datum/preferences/proc/GetQuirkBalance() - var/bal = CONFIG_GET(number/default_quirk_points) + var/bal = SSquirks.default_quirk_points for(var/V in all_quirks) var/datum/quirk/T = SSquirks.quirks[V] bal -= initial(T.value) @@ -442,7 +442,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(LAZYLEN(quirks_removed)) LAZYADD(feedback, "The following quirks are incompatible with your species:") LAZYADD(feedback, quirks_removed) - if(!CONFIG_GET(flag/disable_quirk_points) && GetQuirkBalance() < 0) + if(SSquirks.points_enabled && GetQuirkBalance() < 0) LAZYADD(feedback, "Your quirks have been reset.") all_quirks = list() if(LAZYLEN(feedback)) diff --git a/code/modules/client/preferences/middleware/quirks.dm b/code/modules/client/preferences/middleware/quirks.dm index 8d6c6355866..6705b0262c2 100644 --- a/code/modules/client/preferences/middleware/quirks.dm +++ b/code/modules/client/preferences/middleware/quirks.dm @@ -19,7 +19,7 @@ if(!LAZYLEN(incompatible_quirks)) return var/list/message = list("The following quirks are incompatible with your selected species and will be removed: [incompatible_quirks.Join(", ")].") - if(CONFIG_GET(flag/disable_quirk_points)) + if(!SSquirks.points_enabled) message += "Would you like to continue?" else message += "If you do not have enough points to cover the removed quirks, your quirks will be reset. Would you like to continue?" @@ -48,7 +48,7 @@ var/list/data = list() data["selected_quirks"] = get_selected_quirks() - data["default_quirk_balance"] = CONFIG_GET(number/default_quirk_points) + data["default_quirk_balance"] = SSquirks.default_quirk_points data["species_disallowed_quirks"] = get_species_compatibility() return data @@ -68,7 +68,7 @@ var/list/quirks = SSquirks.get_quirks() - var/max_positive_quirks = CONFIG_GET(number/max_positive_quirks) + var/max_positive_quirks = SSquirks.max_positive_quirks var/positive_quirks_disabled = max_positive_quirks == 0 for (var/quirk_name in quirks) var/datum/quirk/quirk = quirks[quirk_name] @@ -91,7 +91,7 @@ "max_positive_quirks" = max_positive_quirks, "quirk_info" = quirk_info, "quirk_blacklist" = GLOB.quirk_string_blacklist, - "points_enabled" = !CONFIG_GET(flag/disable_quirk_points), + "points_enabled" = SSquirks.points_enabled, ) /datum/preference_middleware/quirks/on_new_character(mob/user)