mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 16:44:43 +01:00
Makes quirk points configs get loaded into vars on the subsystem, + a small biome fix (#95941)
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user