# 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