[MIRROR] Quirks are passed an incoming client when applied, allowing quirks to read preferences in add and add_unique. Renders visual quirks on the preference menu dummy. [MDB IGNORE] (#18311)

* Quirks are passed an incoming client when applied, allowing quirks to read preferences in `add` and `add_unique`. Renders visual quirks on the preference menu dummy.

* fixes quirk order to match upstream

* Modular quirk updates

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
This commit is contained in:
SkyratBot
2023-01-09 10:58:33 +01:00
committed by GitHub
parent 2e6a3193b5
commit 08e45df749
18 changed files with 252 additions and 198 deletions
@@ -76,19 +76,19 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
continue
hardcore_quirks[quirk_type] += hardcore_value
/datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli)
/datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/applied_client)
var/badquirk = FALSE
for(var/quirk_name in cli.prefs.all_quirks)
var/datum/quirk/Q = quirks[quirk_name]
if(Q)
if(user.add_quirk(Q))
for(var/quirk_name in applied_client.prefs.all_quirks)
var/datum/quirk/quirk_type = quirks[quirk_name]
if(ispath(quirk_type))
if(user.add_quirk(quirk_type, override_client = applied_client))
SSblackbox.record_feedback("nested tally", "quirks_taken", 1, list("[quirk_name]"))
else
stack_trace("Invalid quirk \"[quirk_name]\" in client [cli.ckey] preferences")
cli.prefs.all_quirks -= quirk_name
stack_trace("Invalid quirk \"[quirk_name]\" in client [applied_client.ckey] preferences")
applied_client.prefs.all_quirks -= quirk_name
badquirk = TRUE
if(badquirk)
cli.prefs.save_character()
applied_client.prefs.save_character()
/*
*Randomises the quirks for a specified mob
@@ -169,7 +169,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
if (isnull(quirk))
continue
if (initial(quirk.mood_quirk) && CONFIG_GET(flag/disable_human_mood))
if ((initial(quirk.quirk_flags) & QUIRK_MOODLET_BASED) && CONFIG_GET(flag/disable_human_mood))
continue
var/blacklisted = FALSE