fix(world): restore portal and distant use lifecycles

This commit is contained in:
Erik 2026-07-25 09:59:25 +02:00
parent c730632075
commit 1a14812c44
18 changed files with 401 additions and 196 deletions

View file

@ -22,10 +22,14 @@ cursor owners. Its connected state gate passed. A named-retail correction now
treats reset/absent useability zero as usable. The connected gate then exposed
the delivery defect beneath that classifier: carried Use had been routed
through the world-object approach query and silently cancelled because
inventory objects have no spatial entity. Owned direct-use now sends
immediately, while the registered AD-27 approach seam remains world-only;
shared AutoWear reports the exact overlapping worn item that must be removed.
That correction is user-confirmed. The requested adjacent cooldown follow-up
inventory objects have no spatial entity. Ordinary Use now sends immediately
for both owned and world objects, matching `ItemHolder::UseObject`; ACE owns
distant approach and AD-27 remains pickup-only. The connected distant-NPC
gate also corrected the logical animation-owner callback across temporary
spatial projection withdrawal, so ACE MoveTo turns, walks, and completes Use
without leaving the UI busy. Shared AutoWear reports the exact overlapping
worn item that must be removed. These corrections are user-confirmed. The
requested adjacent cooldown follow-up
ports the optional public shared-cooldown metadata, the authoritative
cooldown-enchantment lookup, the exact ten-step bucket formula, and DAT
sprites `0x060067CF..0x060067D8` through the shared retained `UiItemSlot`

View file

@ -86,10 +86,11 @@ The connected selection-state gate passed. Its follow-up exposed three deeper
shared-policy/delivery defects, now corrected from named retail plus the
matching binary. `ItemUses::IsUseable @ 0x004FCCC0` tests only `USEABLE_NO`;
reset/absent value zero is usable. `ItemHolder::UseObject @ 0x00588A80` sends a
carried direct-use item immediately; acdream had incorrectly routed that
packet through a world approach lookup, where Blackmoor's Favor has no spatial
entity and was silently cancelled. Owned Use now bypasses that query while
world-object Use retains the registered AD-27 approach seam. AutoWear applies
Use event immediately for both owned and world objects; acdream had
incorrectly routed the packet through a local approach lookup, where
Blackmoor's Favor has no spatial entity and was silently cancelled. Every
ordinary Use now sends once and ACE owns any authoritative MoveTo chain.
AD-27 remains only for client-side pickup completion. AutoWear 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