diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 1b6a08d0..c0124423 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -94,6 +94,35 @@ MOTIONDONE loop between `0x8000003C` (stance) and the dispatched motion. **Acceptance:** side-by-side with retail — a chasing+attacking Mite Scamp shows correct attack-animation variety, correct frequency, and steps/runs (no glide). +**Investigation 2026-07-04 (code-grounded mechanism, HYPOTHESIS — pending live +confirmation):** traced the live remote path end-to-end. The chase (`mt-6` +MoveToObject) is owned by the entity's verbatim `MoveToManager` +(`GameWindow.RouteServerMoveTo`, ~4899) — this is what moves the legs. The +attacks arrive as SEPARATE `mt-0` InterpretedMotionState UMs and flow through +`MotionInterpreter.MoveToInterpretedState` (~4985). Two seams make the creature +glide + over-play: +1. **Every inbound UM fires the `unpack_movement` head interrupt** + (`remoteMot.Motion.InterruptCurrentMovement`, GameWindow ~4893) which is bound + to `MoveTo.CancelMoveTo(ActionCancelled)` (GameWindow ~4319). So each `mt-0` + attack UM **cancels the active chase MoveTo.** +2. `MoveToInterpretedState` → `ApplyInterpretedMovement(cancelMoveTo:true)` + installs the UM's `ForwardCommand`, which for an attack-only UM defaults to + **Ready/idle** (`ims.ForwardCommand = fullMotion`, null/0 → Ready, ~4933) → + the run cycle is replaced by idle while the body keeps its dead-reckon + translation → **glide**; the creature is repeatedly knocked idle+attack + rather than running (over-play / "stuck"). +The `ServerActionStamp` 15-bit gate (`MoveToInterpretedState` ~2845) IS faithfully +ported, so identical-stamp replays are already suppressed — the "uniform anim" is +NOT a stamp bug. This coexistence of MoveTo (chase) + interpreted-state (attack) +is **explicitly R5/MovementManager scope** (GameWindow ~4816 "LoseControlToServer +autonomy handoff is R5/MovementManager scope"). So #170 sub-bugs 2/3 are +**downstream of the incomplete MovementManager port (R5-V4), not #159 and not a +localized bug.** NEXT: (a) confirm with a labelled `ACDREAM_DUMP_MOTION=1` capture +of the Mite Scamp (exact mt-6/mt-0 interleave + what ForwardCommand + stamps the +attack UMs carry), (b) retail side-by-side — does retail keep the legs running +during attacks and re-establish the chase between swings? — then port the retail +MovementManager coexistence (R5-V4). Do NOT guess a fix in this revert-prone path. + ## #169 — Cold-spawn "hole": world doesn't load / invisible player when spawning far from Holtburg **Status:** DONE (`9b06a9b8`, 2026-07-03) — root confirmed live via a landblock-load