System for restricting quirks based on species, no more blood deficiency on bloodless species (#90326)

Quirks can now define if they're "species appropriate," where the base
proc's behavior is simply "does this species already have the quirk's
main trait"
I am unsure if that on its own imposes any new restrictions, currently.

Additionally, blood deficiency cannot be picked on any species without
blood or that doesn't breathe.
I'm sure there's more that might make sense, I'm open to suggestions

Alternative to #90238
Currently, reduces the possibility of taking something like blood
deficiency on a race which suffers no downside from it in order to get
free positive quirks.
Future-ly, potentially allows quirks exclusive to only a select few
species as offered by #90238
🆑
fix: Species without blood can no longer be blood deficient
/🆑
This commit is contained in:
FlufflesTheDog
2025-04-29 17:15:01 -06:00
committed by Shadow-Quill
parent 23f2704bce
commit 15ed8137da
9 changed files with 85 additions and 13 deletions
@@ -72,6 +72,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
wait = 1 SECONDS
var/list/quirks = list() //Assoc. list of all roundstart quirk datum types; "name" = /path/
var/list/datum/quirk/quirk_prototypes = list()
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()
@@ -108,6 +109,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
#endif
// SKYRAT EDIT ADDITION END
quirk_prototypes[type] = new type
quirks[initial(quirk_type.name)] = quirk_type
quirk_points[initial(quirk_type.name)] = initial(quirk_type.value)