fix(items): finish corpse pickup and combat switching
Port retail's first-slot ShowPendingInPlayer path for double-click loot and carry the current owned-container destination through deferred pickup. Retire the previous ground-container view as soon as a replacement is requested so its range close cannot cancel ACE's active MoveTo chain. Preserve active-combat weapon intent across ACE's authoritative wand-to-missile stance tail while leaving peace-mode switches unchanged. Release build succeeds and all 5,885 tests pass with five intentional skips. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
d51a0fc825
commit
0392c6d721
17 changed files with 631 additions and 81 deletions
|
|
@ -516,6 +516,18 @@ optimistic pre-confirm projection instead of treating equipment as backpack
|
|||
contents. The connected gate completed NonCombat → Missile → NonCombat →
|
||||
Missile, including a Jump press, without a server rejection.
|
||||
|
||||
**2026-07-17 active-switch follow-up:** A connected Magic wand -> missile
|
||||
weapon trace exposed ACE's queued `Magic -> Melee -> NonCombat -> Missile ->
|
||||
NonCombat` tail. `AutoWieldController` now retains the desired ready mode
|
||||
through every confirmed blocker move and, only for a transaction that began
|
||||
in active combat, arms settlement on authoritative `WieldObject`. An already-
|
||||
correct first mode notice clears it; ACE's observed `NonCombat -> Missile ->
|
||||
NonCombat` sequence sends the normal mode request from its trailing notice,
|
||||
after the queued callback that caused that notice.
|
||||
This keeps the missile bar present while retaining
|
||||
ACE ownership of every state and motion; peace-mode switching is unchanged.
|
||||
The narrow ACE compatibility difference is registered as AP-118.
|
||||
|
||||
**Research:** `docs/research/2026-07-11-combat-default-and-parent-event-pseudocode.md`
|
||||
|
||||
**Acceptance:** Relaunch with the crossbow already equipped. The combat button
|
||||
|
|
@ -2294,6 +2306,19 @@ R5/R6 touches the action list. **Where:**
|
|||
|
||||
**Research:** `docs/research/2026-07-17-retail-external-container-looting-pseudocode.md`.
|
||||
|
||||
**2026-07-17 interaction-routing follow-up:** The production binding routes
|
||||
keyboard R through the same application Use adapter as retained double-click,
|
||||
preserving approach-then-send completion. It also supplies the live external
|
||||
root to `DetermineUseResult`, so double-clicking a corpse child requests
|
||||
loot-to-pack rather than ordinary item use.
|
||||
|
||||
**2026-07-17 pending/replacement follow-up:** Double-click loot now follows
|
||||
`ShowPendingInPlayer`: it inserts a waiting projection in slot 1 of the current
|
||||
owned pack and sends that same destination/placement on the wire. A new corpse
|
||||
request now retires the previous ground-object presentation immediately, as
|
||||
retail `SetGroundObject` does. This removes the stale range watcher whose close
|
||||
Use canceled ACE's active MoveTo chain before the new corpse could open.
|
||||
|
||||
**Acceptance:** replacement sends `NoLongerViewingContents` once; authored close/range sends `Use` once and waits for `0x0052`; owned main/side-pack navigation sends neither; root/nested projections retire without deleting objects; corpse Use never attempts to pick up the corpse; a full-stack loot drop immediately shows a ghosted pending copy at the chosen destination slot and confirmation/failure clears it; canonical transfers remain server-authoritative. Focused Core, Core.Net, and App tests pin each path; visual acceptance remains the normal user gate.
|
||||
|
||||
---
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue