fix(gameplay): reconcile wield ownership and target facing

Preserve PlayerDescription inventory/equipment ownership across authoritative manifest replacement, make weapon switching and combat/UI consumers read the same canonical object state, and carry the complete outbound player position frame across landblocks.

Route target-facing and mouse-look through the shared MovementManager and MotionInterpreter completion owner. Match retail input aggregation, toggle ordering, turn/sidestep remapping, per-axis hold keys, and synchronous movement publication without render-only heading state.

Initialize the live streaming origin from the first accepted canonical player Position, defer other projections until that origin exists, and retain logical entity identity through hydration.

Advance the project ledger from completed M2 to active M3, synchronize CLAUDE.md/AGENTS.md and durable memory, and record the next cast-lifecycle, spellbook/enchantment, and two-client portal gates.

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-15 08:19:23 +02:00
parent b26f84cc69
commit 7b7ffcd278
36 changed files with 3884 additions and 761 deletions

View file

@ -108,17 +108,12 @@ movement queries.
## Current state
**Currently working toward: M2 — Kill a drudge** (equip sword → hit a drudge → damage
in chat → loot → inventory). **M1.5 — Indoor world feels right LANDED 2026-07-10**:
buildings/cellars/multi-floor inns + full dungeon round-trip (enter→navigate→exit) all
user-gated; #138 closed by the round-trip gate; #133/#137/#95/#79/#93/#80 CLOSED. M2
first ports = `CombatMath.ComputeDamage` (F.3) + inventory panel (F.2) + combat anim
(L.1c) — see the M2 section in the milestones doc + `docs/research/2026-06-04-combat-math-deep-dive.md`.
**Carried post-M1.5, NOT blockers:** #145-residual (far-town teleport-OUT cascade —
capture-harness-first), #116 slide-response. **D.6 retained retail radar/compass**
implemented 2026-07-10 (live-world user visual gate pending; `claude-memory/project_d2b_retail_ui.md`);
**R5 movement-manager arc DONE** (2026-07-05; carried #167, R6/TS-42); **Track MP** perf
side track at MP0. Keep this paragraph ≤6 lines + pointers — detail in the docs below, NOT here.
**Currently working toward: M3 — Cast a spell. M2 — Kill a drudge LANDED 2026-07-15**:
the live melee/missile loop covers weapon switching, target-facing, attack/damage/death, loot,
inventory, and item giving. The M2/M3 projectile + DAT-effect foundation is automated through
Step 9; single-client missiles/protection effects are user-gated. **Next:** reconcile F.4/L.1d's
cast lifecycle against that foundation, then F.5 spellbook + active enchantments. **Carried:** final
two-client portal/observer VFX gate, #145-residual, #116, R6/TS-42, and Track MP0. Detail below.
For canonical state, read in this order:
- [`docs/plans/2026-05-12-milestones.md`](docs/plans/2026-05-12-milestones.md) — milestone targets + freeze list per milestone