diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 1a10b7b..29815e2 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -46,6 +46,47 @@ Copy this block when adding a new issue: # Active issues +## #65 — Local player doesn't turn to face target on close-range Use + +**Status:** OPEN +**Severity:** LOW (functional — Use still completes — but visually awkward) +**Filed:** 2026-05-15 (B.6/B.7 visual verification) +**Component:** physics / movement / inbound MoveTo handling + +**Description:** When the local player has a target selected and is +already within ACE's `WithinUseRadius` (close-range branch in +`CreateMoveToChain` at `Player_Move.cs:66`), ACE skips the auto-walk +chain and just calls `Rotate(target)` server-side. The Use action +completes, but the local player's body doesn't visibly turn to face +the target — the character stays at whatever heading the user was +looking when they clicked. + +**User-visible:** Stand behind an NPC, click them, press R. Dialogue +appears, but the character keeps facing away from the NPC. In retail +the character would have turned to face the NPC before / during the +Use. + +**Root cause:** ACE's close-range path sends a `TurnTo` motion +(MovementType=8 TurnToObject, decomp `0x005241b3` switch case 8). +Our `OnLiveMotionUpdated` doesn't currently handle MovementType=8 — +it falls into the locomotion path and ignores the rotation. + +**Acceptance:** When the user uses an in-range target while facing +away, the character rotates to face the target before / as the Use +action fires. No regression on close-range pickup (item still picks +up cleanly). + +**Files (likely):** +- `src/AcDream.Core.Net/Messages/UpdateMotion.cs` — extend parser for MovementType=8 TurnToObject payload. +- `src/AcDream.App/Input/PlayerMovementController.cs` — add a `BeginServerTurnToObject(targetWorld, useFinalHeading)` method that rotates Yaw at TurnRateRadPerSec each frame until aligned, then clears the state. +- `src/AcDream.App/Rendering/GameWindow.cs` `OnLiveMotionUpdated` — when inbound motion is MovementType=8 and the guid is `_playerServerGuid`, install the turn on the controller. + +**Estimated scope:** Small — ~50 LOC plus tests. Pairs naturally with +B.6 (already does turn-then-walk for far targets via RemoteMoveToDriver's +heading correction; this is the close-range cousin). + +--- + ## #64 — Local-player pickup animation does not render **Status:** OPEN