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
|
|
@ -5,7 +5,7 @@ namespace AcDream.Core.Items;
|
|||
public enum ExternalContainerTransitionKind
|
||||
{
|
||||
Opened,
|
||||
Replaced,
|
||||
ReplacementRequested,
|
||||
Closed,
|
||||
Reset,
|
||||
}
|
||||
|
|
@ -33,7 +33,24 @@ public sealed class ExternalContainerState
|
|||
{
|
||||
if (containerId == 0u || RequestedContainerId == containerId)
|
||||
return false;
|
||||
|
||||
uint previous = CurrentContainerId;
|
||||
RequestedContainerId = containerId;
|
||||
|
||||
// ClientUISystem::SetGroundObject @ 0x00564510 retires the old
|
||||
// ground-object presentation synchronously when a different root is
|
||||
// requested. ViewContents for the new root arrives later. Keeping the
|
||||
// old root current during that interval lets its range watcher issue a
|
||||
// close Use, which ACE interprets as cancellation of the new root's
|
||||
// MoveTo chain.
|
||||
if (previous != 0u && previous != containerId)
|
||||
{
|
||||
CurrentContainerId = 0u;
|
||||
Changed?.Invoke(new ExternalContainerTransition(
|
||||
ExternalContainerTransitionKind.ReplacementRequested,
|
||||
previous,
|
||||
containerId));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -49,9 +66,7 @@ public sealed class ExternalContainerState
|
|||
return false;
|
||||
|
||||
Changed?.Invoke(new ExternalContainerTransition(
|
||||
previous == 0u
|
||||
? ExternalContainerTransitionKind.Opened
|
||||
: ExternalContainerTransitionKind.Replaced,
|
||||
ExternalContainerTransitionKind.Opened,
|
||||
previous,
|
||||
containerId));
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue