fix(items): port retail useability and autowear rejection

Use the exact low USEABLE_NO-bit predicate so reset/zero-valued direct-use items such as Blackmoor's Favor reach the ordinary Use request. Port AutoWear's clothing-priority blocker lookup and exact named system notice through the shared activation owner.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-23 08:33:31 +02:00
parent 60387668d0
commit f71f947475
13 changed files with 289 additions and 57 deletions

View file

@ -15,11 +15,14 @@ assessment information, equipped-child picking, vendor browsing, and
server-authoritative vendor transactions. Slice 1's DAT-authored arrow-only
favorite-spell scrollbar, fixed 18-cell capacity, authored arrow sides/media,
and persistent manual offset passed the connected gate. Slice 2 is active: the
status hand now follows canonical selection/object notices, ghosts empty and
unusable selections, and routes enabled weapons, direct-use items, and
use-on-target tools through the existing interaction transaction and cursor
owners. Its connected hand-state gate is pending; the magnifying-glass Assess
command follows in the same slice.
status hand follows canonical selection/object notices, ghosts empty and
explicitly unusable selections, and routes enabled weapons, direct-use items,
and use-on-target tools through the existing interaction transaction and
cursor owners. Its connected state gate passed. A named-retail correction now
treats reset/absent useability zero as usable, allowing Blackmoor's Favor to
send ordinary Use, while shared AutoWear reports the exact overlapping worn
item that must be removed. That correction awaits its connected gate; the
magnifying-glass Assess command follows in the same slice.
---

View file

@ -91,8 +91,10 @@ broaden the feature surface.
Slice 1's 18-cell favorite-spell overflow bar is user-accepted. Slice 2 is
active: the status hand's selected-object availability and existing
Use/AutoWield/use-on-target command routing are code-complete, with the
connected state/cursor gate pending before the Assess half continues.
Use/AutoWield/use-on-target command routing passed their connected gate.
The follow-up retail correction for zero-valued direct-use items and named
AutoWear blockers is code-complete and awaiting its connected gate before the
Assess half continues.
Carried:
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus

View file

@ -1,7 +1,8 @@
# World interaction completion — pre-M4 program
**Status:** Slice 1 user-accepted 2026-07-23. Slice 2 Use-hand state and command
path code-complete; connected visual gate pending before Assess continues.
**Status:** Slice 1 user-accepted 2026-07-23. Slice 2 Use-hand selection state
passed its connected gate. The follow-up zero-useability/AutoWear correction is
code-complete and awaits its connected gate before Assess continues.
**Milestone:** M4 prerequisite/preamble.
**Architecture:** retained gameplay UI over shared selection, object, and
interaction state. `GameWindow` remains a composition/callback shell.
@ -69,6 +70,20 @@ AP-122. The 14-test Core interaction focus, 49-test toolbar focus, Release
solution build, 3,474 App tests / 3 skips, and 7,848 complete-solution tests /
5 skips pass.
The connected selection-state gate passed. Its follow-up exposed two deeper
shared-policy defects, now corrected from named retail plus the matching
binary. `ItemUses::IsUseable @ 0x004FCCC0` tests only `USEABLE_NO`; reset/absent
value zero is usable, so Blackmoor's Favor and other zero-valued direct-use
items now emit the ordinary Use request. AutoWear now applies
`CPlayerSystem::AutoWearIsLegal @ 0x0055EF40` through the same double-click and
toolbar-hand path, resolves the overlapping worn object from the
retail-ordered equipment projection, and emits the exact system line
`You must remove your <item> to wear that`. Research:
[`../research/2026-07-23-retail-item-use-and-autowear-pseudocode.md`](../research/2026-07-23-retail-item-use-and-autowear-pseudocode.md).
The focused 25-test Core and 85-test App sets pass, as do the warning-free
Release solution build, 3,476 App tests / 3 skips, and 7,857 complete-solution
tests / 5 skips.
## Slice 1 — spell-bar overflow arrows
### Retail oracle
@ -148,7 +163,8 @@ Named retail references and executable pseudocode are recorded in
### Remaining Slice 2 work
- Port the magnifying-glass Assess command state and activation.
- Run the connected Use-hand visual gate: no selection, spell component,
weapon, and health kit.
- Run the connected correction gate: activate Blackmoor's Favor, then try to
equip armor blocked by an overlapping worn item and verify the named system
message.
- Continue directly into the Assess information slice after the combined
status-control gate.