fix(B.6): tighter 5° alignment + defer Use until rotation completes; file #69 turn anim
User report: 'You should be face to face with the NPC before sending
use. So first is rotation, when you are facing, then using.' and
'it does not face it completely.'
Two changes:
1. Split alignment thresholds in ApplyAutoWalkOverlay:
walkAligned (30°) — gate for synthesised Forward+Run motion
during far-range approach; body walks
while finishing residual turn within 30°.
aligned (5°) — gate for arrival-fire. Final facing
before the auto-walk ends and the action
re-sends. Matches retail's tight pre-Use
rotation tolerance.
Within-arrival check still requires alignment; without alignment
the body holds in turn-only mode regardless of distance.
2. Defer wire Use/PickUp packet for CLOSE-range targets. SendUse
and SendPickUp now check IsCloseRangeTarget(guid): if the player
is already within the target's use-radius, we install the
speculative overlay, set _pendingPostArrivalAction, and RETURN
without sending the wire packet. AutoWalkArrived fires after the
local rotation completes (alignment within 5°); the existing
re-send handler then fires SendUse with isRetryAfterArrival=true,
sending the wire packet at that moment. Effect: rotate first,
THEN Use — the NPC/door/item only sees the action after the
character has turned to face it.
Far-range path unchanged: send immediately, ACE auto-walks,
arrival re-sends.
Filed #69: turn animation (leg/arm cycle while pivoting). The body
now rotates but doesn't play the TurnLeft/TurnRight cycle the user
wants to see. Separate scope — needs motion-interpreter integration.
This commit is contained in:
parent
5b908bcca2
commit
cffb10ff18
3 changed files with 124 additions and 15 deletions
|
|
@ -46,6 +46,44 @@ Copy this block when adding a new issue:
|
|||
|
||||
# Active issues
|
||||
|
||||
## #69 — Local player rotation isn't animated (no leg/arm cycle while pivoting)
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** LOW (visual polish — rotation works, just looks stiff)
|
||||
**Filed:** 2026-05-15 (B.6 close-range turn-to-face)
|
||||
**Component:** motion / animation cycle
|
||||
|
||||
**Description:** When the auto-walk overlay rotates the local player
|
||||
(close-range Use turn-to-face, or turn-first phase of a far-range walk),
|
||||
the body's Yaw rotates smoothly but no leg / arm animation plays —
|
||||
the body just statue-pivots. Retail played a `TurnLeft` / `TurnRight`
|
||||
motion cycle while rotating, visible to observers as the character
|
||||
moving their legs / arms to turn.
|
||||
|
||||
**Cause:** `ApplyAutoWalkOverlay` synthesises `Forward+Run` input
|
||||
during the walking phase (so the motion interpreter emits `RunForward`
|
||||
cycle commands), but synthesises nothing during the turn-only phase
|
||||
— so the motion interpreter emits no command and the sequencer
|
||||
holds whatever cycle was last set (typically Ready / idle).
|
||||
|
||||
**Approach:** While turning (`!walkAligned`), synthesise
|
||||
`TurnLeft = delta > 0` / `TurnRight = delta < 0` so the motion
|
||||
interpreter emits the turn command. Care needed: the existing
|
||||
`Update` body also steps Yaw on `TurnLeft`/`TurnRight` input — if
|
||||
both apply, the body rotates twice as fast. Cleanest: set the input
|
||||
flags AND skip the overlay's own Yaw step (let Update's existing
|
||||
handling do the rotation).
|
||||
|
||||
**Acceptance:** A retail observer watching `+Acdream` turn to face
|
||||
an NPC sees the turning animation play (leg shuffle / arm swing) for
|
||||
the duration of the rotation.
|
||||
|
||||
**Estimated scope:** Small. ~30 LOC in `ApplyAutoWalkOverlay` plus
|
||||
verification that retail's `TurnLeft`/`TurnRight` cycle is in the
|
||||
human motion table.
|
||||
|
||||
---
|
||||
|
||||
## #68 — Remote players don't stop running animation on auto-walk arrival
|
||||
|
||||
**Status:** OPEN
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue