modular_aphelion/modules/custom_sprites/code/salon.dm 
| SALON_DRAFTING | Session state: the artist is drawing, or the session has returned to the draft. |
|---|---|
| SALON_AWAITING_APPROVAL | Session state: the recipient's mirror shows the proposal. |
| SALON_APPLYING | Session state: the approved work's finishing touches are under way. |
| SALON_COMPLETED | Session state: the work went on; the session is ending. |
| SALON_PROMPT_TIMEOUT | How long a recipient has to answer a request to start work. |
| SALON_REQUEST_COOLDOWN | How long before the same artist may ask the same recipient again. |
| SALON_APPLY_DURATION | How long the finishing touches take once the recipient approves. |
| SALON_TRIMMING_FIRST_DELAY | Hair starts hitting the floor shortly after the artist gets going. |
| SALON_TRIMMING_GROW_MIN | The shortest time the pile takes to grow by one more step while work continues. |
| SALON_TRIMMING_GROW_MAX | The longest time the pile takes to grow by one more step while work continues. |
| SALON_TRIMMING_WORKING_MAX | Mid-cut the pile only ever reaches this size. The rest lands on completion. |
| /proc/custom_sprite_salon_draft_key | Where an artist keeps their draft for one drawing target on one person. |
| /proc/custom_sprite_salon_session | The artist's retained draft for one drawing target on one person, or null. |
| /proc/custom_sprite_salon_sessions_for | Every draft this artist has, newest last. |
| /proc/custom_sprite_salon_sessions_for_tool | The drafts this tool can resume. |
| /proc/custom_sprite_salon_label | What salon work on a target is called. A zone names where a tattoo is; without one it's the whole body's. |
| /proc/custom_sprite_live_package | The recipient's live style for one target. Hair includes the whitelisted base hair look. |
| /proc/custom_sprite_region_signature | A cheap fingerprint of one marking zone's live look: its paint's hash and its native markings. |
| /proc/custom_sprite_salon_keys | Style keys a salon target covers: the hair target itself, or every marking zone. |
| /proc/custom_sprite_live_packages | The recipient's live look for every drawing a salon target covers, by style key. |
| /proc/custom_sprite_packages_hash | One content hash for a set of packages, so a change to any of them shows. |
| /proc/custom_sprite_salon_changes | Region labels a set of packages changes, in body order. Hair packages name none. |
| /proc/custom_style_marking_entries | Ordered, portable records for native markings: a limb's or a collection zone's entries, or a zone's saved nested shape. |
| /proc/custom_style_marking_data | Convert validated records back into the native marking renderer's ordered map. |
| /proc/custom_style_apply_base_markings | Change only this limb/hand's native markings and its DNA snapshot. The caller redraws the body. |
| /proc/custom_style_apply_hair_context | Applies a whitelisted hair look to a live or preview body. |
| /proc/custom_sprite_apply_round_style | Changes a live body's round appearance for one drawing target. |
| /proc/custom_sprite_apply_round_styles | Changes a live body's round appearance for several drawings, redrawing it once. |
| /proc/custom_sprite_salon_dummy | Builds a private preview body from a live body's current appearance. |
| /proc/custom_sprite_salon_start_problem | Returns why an artist can't start work on a recipient, or null when they can. |
| /proc/custom_sprite_salon_target_problem | Why a drawing target can't be worked on. Markings without a zone mean the whole body. Addresses the recipient when they're doing the work. |
| /proc/custom_sprite_zone_covered | Returns whether worn clothing covers a marking zone. |
| /proc/custom_sprite_self_mirror | Whether someone can see the parts of themselves they can't look at directly. |
| /proc/custom_sprite_salon_claim_request | Claims the recipient's single incoming prompt and the pair's request cooldown. |
| /proc/custom_sprite_salon_request | Asks a recipient to start custom work, then opens the artist's editor. Sleeps on prompts. |
| /proc/custom_sprite_salon_request_restore | Asks a recipient to restore the looks they had before their last salon change. Sleeps. |
| /proc/custom_sprite_salon_restore_problem | Why an artist can't start restoring previous looks, or null. keys limits which looks count. |
| /proc/custom_sprite_salon_start_restore | Shows the recipient previous looks to restore, in the mirror. keys limits them to the chosen ones. |
| /proc/custom_sprite_salon_previous | Style key -> a copy of the look each of a target's drawings had before its last salon change, for those that have one. keys limits it. |
| /proc/custom_sprite_salon_restore_choices | What Restore previous offers for several previous looks: the whole body, then each region by name. Label -> style keys. |
| /proc/custom_sprite_salon_export_live | Sends a player their own live look for a salon target: one file for hair, a whole-body file for a tattoo. |
| /datum/custom_sprite_salon | One artist's custom work for one recipient and drawing target. |
| /proc/custom_sprite_salon_resume | Resumes a retained draft from a tool's self-use action. Sleeps only when asking which one. |
| /proc/custom_sprite_salon_choose_draft | Asks which retained draft to reopen. Sleeps on the prompt. |
| /proc/custom_sprite_salon_open_draft | Reopens a retained draft for its artist, rebinding the artist's body and tool. |
| /datum/custom_sprite_editor/salon | The salon's hair context: an artist-owned draft of another player's live hair or facial hair. |
| /datum/custom_sprite_editor/markings/salon | The salon's tattoo context: the whole-body canvas on another player's live look. |
Define Details
SALON_APPLYING 
Session state: the approved work's finishing touches are under way.
SALON_APPLY_DURATION 
How long the finishing touches take once the recipient approves.
SALON_AWAITING_APPROVAL 
Session state: the recipient's mirror shows the proposal.
SALON_COMPLETED 
Session state: the work went on; the session is ending.
SALON_DRAFTING 
Session state: the artist is drawing, or the session has returned to the draft.
SALON_PROMPT_TIMEOUT 
How long a recipient has to answer a request to start work.
SALON_REQUEST_COOLDOWN 
How long before the same artist may ask the same recipient again.
SALON_TRIMMING_FIRST_DELAY 
Hair starts hitting the floor shortly after the artist gets going.
SALON_TRIMMING_GROW_MAX 
The longest time the pile takes to grow by one more step while work continues.
SALON_TRIMMING_GROW_MIN 
The shortest time the pile takes to grow by one more step while work continues.
SALON_TRIMMING_WORKING_MAX 
Mid-cut the pile only ever reaches this size. The rest lands on completion.