# Human Customization Rework: ## goals - Unified system for human mobs cosmetics - Support for customization options for non-human mutantraces - Clean up the 30+ vars in use on mutantraces for handling their cosmetics - Improved QoL for selecting/customizing mutantraces in character setup menu ## Design draft: `datum/customization_style` - similar to what we have now, holds info on icon, iconstate, (default) layer, name, etc. - immutable `datum/customization_holder` type, - Holds a `datum/customization_style` - ability to filter acceptable customization styles (e.g.: `datum/customization_holder/hair`) - where you uh, customize customizations (color, layer overrides if needed, etc.) on mutantraces (incl human mutantrace!): - `var/list/customization_holder/customization_slots` - i.e.: each mutantrace would define what customizations can be applied - humans would have 3 `hair` holders or whatever other stuff that I'd want to bundle in: - some kind of "customization cache", so if you swap mutantraces around, things go less fucky - if there's no entry in the cache for that round for a given mutantrace type, pull appearance from charprefs - otherwise, reuse what was in the cache - migrate random appearance code to mutantraces, so each mrace can have a randomappearance generator - also default appearance? ## Unsolved questions: - handling dismemberment - currently all customizations are on the head, so heads just grab all of them - would need more handling there - what existing mrace features would get pulled into customizations vs baked in (ideally all) - "non-decal" customizations (e.g.: could we support 'different tail type' as a customization?) - in-round customization editing (barbershop, genetics, etc.) ## Breakdown - Migrate existing mutantrace decals to customization styles - Expand customization_style code as needed to be feature complete - Create customization_holder system - Core code on datum itself - Use in human rendering code - Add to mutantrace datums - Character setup menu - Need dynamic menu for selecting customization options - Ideally put mutantrace selector in same tab as customization, instead of in traits menu - Individually store data for *all* mutantraces for a character in preferences