docs: #170 — record code-grounded root cause (MovementManager coexistence, R5-V4)
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 <noreply@anthropic.com>
This commit is contained in:
parent
5eb902ffe7
commit
eb423fb749
1 changed files with 29 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue