From eb423fb7490192e43eda6d9e2eaa3c3e1fc60315 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 4 Jul 2026 09:17:24 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20#170=20=E2=80=94=20record=20code-ground?= =?UTF-8?q?ed=20root=20cause=20(MovementManager=20coexistence,=20R5-V4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Traced the live remote path: the mt-6 chase runs through the verbatim MoveToManager, but every inbound mt-0 attack UM fires the unpack_movement head interrupt (bound to MoveTo.CancelMoveTo) AND installs the UM's ForwardCommand (Ready/idle for an attack-only UM), so the chase MoveTo is cancelled and the run legs are replaced by idle while the body keeps dead-reckoning -> glide + repeated idle/attack. The 15-bit ServerActionStamp gate is faithful (uniform-anim is not a stamp bug). This chase+attack coexistence is R5/MovementManager scope, so #170 sub-bugs 2/3 are downstream of the incomplete MovementManager port (R5-V4), not #159. Recorded as a hypothesis pending a live ACDREAM_DUMP_MOTION capture + retail side-by-side (no guessing a fix in this revert-prone path). Co-Authored-By: Claude Opus 4.8 --- docs/ISSUES.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) 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