[MODULAR] Fixes Quickspawn/SimpleTF/genetics eating mutcols (#23061)

* One-line-fix for human transformation eating prefs

This is a weird timing bug we inherited from TGstation somehow, but I cannot for the life of me figure out *how* it breaks or what a good independent repro is since all the individual parts play nice when called by hand.  In a nutshell: randomization prefs is partially overriding normal char prefs despite the former running before the latter, and only when safe_transfer_prefs_to is called during something like a transformation.  It's fine when applying to a fully spawned mob.

* no spawn, added a sleeping wrapper & INVOKE_ASYNC

* Hotfix to avoid random human IDs

why is safe_transfer_prefs so cursed and only in a subset of use cases

* Tentatively unhackying this

* removing nonmodular change from prefs.dm

* and removing nonmodular alteration from dna.dm

this REALLY should just be fixed upstream
This commit is contained in:
CliffracerX
2023-09-03 13:13:23 -07:00
committed by GitHub
parent 87b11fabad
commit f973ac8aca
@@ -276,15 +276,15 @@ GLOBAL_LIST_EMPTY(total_uf_len_by_block)
var/features = dna.unique_features
if(dna.features["mcolor"])
dna.features["mcolor"] = sanitize_hexcolor(get_uni_identity_block(features, DNA_MUTANT_COLOR_BLOCK))
dna.features["mcolor"] = sanitize_hexcolor(get_uni_feature_block(features, DNA_MUTANT_COLOR_BLOCK))
if(dna.features["mcolor2"])
dna.features["mcolor2"] = sanitize_hexcolor(get_uni_identity_block(features, DNA_MUTANT_COLOR_2_BLOCK))
dna.features["mcolor2"] = sanitize_hexcolor(get_uni_feature_block(features, DNA_MUTANT_COLOR_2_BLOCK))
if(dna.features["mcolor3"])
dna.features["mcolor3"] = sanitize_hexcolor(get_uni_identity_block(features, DNA_MUTANT_COLOR_3_BLOCK))
dna.features["mcolor3"] = sanitize_hexcolor(get_uni_feature_block(features, DNA_MUTANT_COLOR_3_BLOCK))
if(dna.features["ethcolor"])
dna.features["ethcolor"] = sanitize_hexcolor(get_uni_identity_block(features, DNA_ETHEREAL_COLOR_BLOCK))
dna.features["ethcolor"] = sanitize_hexcolor(get_uni_feature_block(features, DNA_ETHEREAL_COLOR_BLOCK))
if(dna.features["skin_color"])
dna.features["skin_color"] = sanitize_hexcolor(get_uni_identity_block(features, DNA_SKIN_COLOR_BLOCK))
dna.features["skin_color"] = sanitize_hexcolor(get_uni_feature_block(features, DNA_SKIN_COLOR_BLOCK))
if(icon_update)
if(mutcolor_update)