diff --git a/docs/presentation/ART_ASSET_AND_ANIMATION_CATALOG.md b/docs/presentation/ART_ASSET_AND_ANIMATION_CATALOG.md index eabaa6ae..558457c2 100644 --- a/docs/presentation/ART_ASSET_AND_ANIMATION_CATALOG.md +++ b/docs/presentation/ART_ASSET_AND_ANIMATION_CATALOG.md @@ -787,10 +787,43 @@ silhouette. | Damage | Toothed inward contour | Directional ink break and actor response | Jagged edge and hit direction | | Healing | Open leaf contour | Upward fill and stable recovery pose | Split leaf endpoint | | Protection | Closed double bracket | Intercept line, absorb plane, or break seam | Closed contour and relation line | -| Miss or evade | Forecast separates from actor | Broken endpoint and preserved pose | Dashed gap, no impact contact | +| Deterministic terminal outcome | No terminal cue before resolution; retain the action forecast | Per-recipient shape from the outcome map below | Outcome-specific contour and causal label, never a generic gap | | Forced movement | Origin ghost plus destination bracket | Actor lands on destination marker | Arrow body with blocked variant | | Permanent loss | Segmented condition frame | Still final contour, lowered tool, history seal | Broken lower edge, never a reward burst | +Terminal cues bind one-to-one to `SYSTEM.COMBAT.EVENT_SCHEMA` records. They do +not add an undeclared resolution check and do not reinterpret forecast +divergence as an action result. + +| Outcome ID | Resolution shape | Required causal read | +|---|---|---| +| `AO_APPLIED` | Behavior-specific contact closes at the actual recipient with a filled endpoint. | Applied component and actual recipient; a moved-but-legal target keeps the same endpoint. | +| `AO_NO_CHANGE` | The contact reaches an intact contour and ends in a flat cap/current-state bar. | Legal recipient plus the cap or current-state reason for zero primary change. | +| `AO_INVALID_REACH` | A measured reach line breaks between origin and intended target. | Old/current depth and required reach remain inspectable. | +| `AO_INVALID_UNTARGETABLE` | An outward-facing exclusion notch opens in the intended target contour. | Declared exclusion rule and remaining duration, not actor motion alone. | +| `AO_INVALID_FALLEN` | The intended marker is left empty and linked to the earlier casualty seal. | Earlier death event caused invalidation; no substitute target is implied. | +| `AO_INVALID_FILTER` | A candidate-filter frame closes outside the intended target. | Exact side, state, or tag filter that no longer permits the target. | +| `AO_INTERCEPTED` | The intended path branches to the interceptor; the intended endpoint stays hollow. | Interceptor and routing/protection rule; the actual recipient receives its own component cue. | +| `AO_BLOCKED` | A square stop plane meets the component and loses one charge notch when applicable. | Named blocker actor/rule and committed charge or delta. | +| `AO_IMMUNE` | A closed seal forms around the rejected component glyph at the actual recipient. | Immunity tag and source; no resistance roll is implied. | +| `AO_RESISTED` | The status glyph reaches the target boundary and stops against a crosshatched threshold line. | Stored status roll, threshold, Potency, and Tenacity. | +| `AO_FIZZLED` | Source geometry folds inward before any recipient endpoint forms. | Invalid cause, failed retarget or empty ground result, and declared refund. | +| `AO_INTERRUPTED` | A crossbar cuts the source wind-up/channel and holds the interrupted actor pose. | Interrupter/rule and declared refund; no target defense is implied. | + +Area and multi-component actions draw the terminal shape at each actual +recipient. `APPLIED_ALL`, `APPLIED_PARTIAL`, and `APPLIED_NONE` may appear only +after the per-recipient cues and never replace them or act as trigger IDs. For a +mixed area result, applied, immune, and no-change recipients therefore retain +three distinct endpoint shapes in the same resolved frame. When more than two +results resolve together, secondary endpoints become compact ground-contact +badges rather than disappearing; inspection preserves every causal label. + +At 130 percent text, causal labels occupy the UX-defined text-safe band and do +not cover faces, order markers, or endpoint shapes. Reduced-motion mode uses +the resolved shape and final actor pose without path travel. Low-power mode +keeps every endpoint badge and derived summary while removing only secondary +particles and trails. + Floating values are engine-rendered and secondary. They occupy a dedicated vertical band above the target, merge repeated low-value ticks, and never cover faces, order markers, or forecast endpoints. @@ -815,7 +848,7 @@ motion settles to its final state. | `DAMAGE` | light, heavy, critical, repeated | 4 | Directional ink fracture, never a radial reward burst. | | `HEAL` | acquire, pulse, excess, blocked | 4 | Open leaf and upward fill. | | `PROTECT` | gain, intercept, absorb, break | 4 | Closed double bracket and seam. | -| `AVOID` | miss, dodge, immune, resist | 4 | Broken endpoint with a preserved body contour. | +| `DEFENSE_OUTCOME` | `AO_INTERCEPTED`, `AO_BLOCKED`, `AO_IMMUNE`, `AO_RESISTED` | 4 | Branched route, square stop, closed seal, or crosshatched status threshold. | | `INTERRUPT` | windup, interrupt, stagger, recover | 4 | Crossing bars and halted motion line. | | `MOVE` | step, forced, pull, blocked | 4 | Origin ghost, destination, and direction body. | | `STATUS` | apply, stack, tick, expire, cleanse, resist | 6 | Container shape plus content-bound glyph. |