Makes quirk points configs get loaded into vars on the subsystem, + a small biome fix (#95941)

This commit is contained in:
Bloop
2026-05-03 14:23:12 -04:00
committed by GitHub
parent de059fdf57
commit e6e0200edb
5 changed files with 32 additions and 11 deletions
@@ -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
@@ -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()
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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))
@@ -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)