From 7dcf53bb3feb83f207dd7069c63211f350fdfd85 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 10 Jun 2026 23:42:46 -0700 Subject: [PATCH] Docs: MC-4 follow-up fixes (anim-sink root cause + enemy telegraph) Co-Authored-By: Claude Opus 4.8 (1M context) --- .../2026/2026-06-10_MC4_Melee_Anim_VFX_Archetype.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Docs/Vault/07_Sessions/2026/2026-06-10_MC4_Melee_Anim_VFX_Archetype.md b/Docs/Vault/07_Sessions/2026/2026-06-10_MC4_Melee_Anim_VFX_Archetype.md index de5343229..150285760 100644 --- a/Docs/Vault/07_Sessions/2026/2026-06-10_MC4_Melee_Anim_VFX_Archetype.md +++ b/Docs/Vault/07_Sessions/2026/2026-06-10_MC4_Melee_Anim_VFX_Archetype.md @@ -42,5 +42,11 @@ Built the thing DR-030 deferred — minimally + correctly per the MC-4 review's - **The MC-4 fun-gate still stands** — now with the swing animation + a clear range arc, run the feel pass (left-click = melee). Tune the swing curves in `PlayerRigTools` (re-run the menu item) + the cone/range live via `DEV ▲`. - After MC-4 passes → **EB-1 (machines can die)** is the next committed milestone. +## Follow-up fixes (operator review, same day) +Operator: *"clicking melee makes half the player model sink into the floor — also happens with enemies. Fix it + prevent it in future. Also add the same clarity to enemy attacks (can't tell range/hitbox/when to dodge)."* + +1. **The attack-animation sink — ROOT CAUSE + fix (player AND enemy).** The procedural attack clips key ONLY the `Root` bone's rotation, but the Attack/MeleeSwing states had **`writeDefaultValues = true`**. The `Root` bone carries the rig's mesh-positioning offset (Player.prefab `Root` localPosition = `(0, -0.90, 0)`, identity rotation) and the `Hips`/`Spine` carry big authored orientations `(0,270,278)`/`(0,180,191)`. With WDV=true a **partial** (Root-only) clip resets EVERY un-keyed bone to Rukhanka's defaults (~identity) → the body collapses/folds into the floor; the locomotion clips never hit this because they key the full skeleton. **Fix: `writeDefaultValues = false` on the attack states** (a partial clip must leave un-keyed bones in their pose and only lean the `Root`). Patched both `AC_PlayerTopDown` (MeleeSwing) + `AC_EnemyTopDown` (Attack) AND both recipes (`PlayerRigTools`/`EnemyRigTools`) so a rebuild can't regress it. Play-verified: the forced MeleeSwing pose stands intact (no sink). **General rule for future procedural overlay clips: partial Root/bone-subset clips ⇒ `writeDefaultValues = false`.** +2. **Enemy attack telegraph (the same clarity).** `CombatFeedbackSystem.UpdateEnemyDanger` paints a red ground **danger cone** at each enemy while its `AttackWindup` counts down — oriented along the enemy's facing, sized to `EnemyStats.AttackRange`, brightening + scaling as the strike nears (`intensity = 1 - ticksRemaining/22`) so the player reads WHERE + WHEN to dodge. Client-only observe-only, one pooled mesh/enemy keyed by Entity, pruned each frame (same idiom as the projectile trails + the player slash-arc). Play-verified: 14-enemy wave, 8 telegraphs rendering at once, zero console errors. Cone size/colour/intensity are tunable in the system. + ## Links [[2026-06-10_MC4_Combo_Melee]] · [[DR-030_MC4_Combo_Melee_Primary_Verb]] · [[DR-022_Animation_Pipeline_Rukhanka_Synty]] · [[DR-023_Enemy_Animation_MonsterMash]] · [[Path_to_Fun]]