fix(inventory): complete switches on wield response
Clear retail AutoWield on the matching authoritative WieldObject instead of waiting for unrelated rollback bookkeeping to drain. This prevents a completed switch from consuming the next weapon activation locally, including crossbows. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
ea5cf5b842
commit
3e84027885
9 changed files with 47 additions and 21 deletions
|
|
@ -94,6 +94,7 @@ send_wield(item, mask):
|
|||
send GetAndWieldItem(item.id, mask)
|
||||
|
||||
on server-confirmed WieldObject(item):
|
||||
reconcile the item's optimistic rollback snapshot separately
|
||||
if item matches pending.requestedItem
|
||||
and pending.blockingItem is none:
|
||||
clear pending
|
||||
|
|
@ -116,7 +117,10 @@ The request is not complete when `GetAndWieldItem` is merely sent. Retail
|
|||
`UIAttemptWield` records `prevRequest = IR_WIELD` and leaves the item waiting
|
||||
until `ServerSaysMoveItem` reconciles it. acdream therefore keeps AutoWield
|
||||
busy through the final authoritative `WieldObject`; allowing another switch
|
||||
during the optimistic interval makes ACE reject otherwise valid items.
|
||||
during the optimistic interval makes ACE reject otherwise valid items. Retail
|
||||
`ACCWeenieObject::ServerSaysMoveItem @ 0x0058DBB0` clears the matching request
|
||||
directly; that UI completion is intentionally independent of the object's
|
||||
separate optimistic rollback counter.
|
||||
|
||||
## Known remaining retail surface
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue