feat(inventory): port retail item giving (#216)

Preserve SmartBox drag-release coordinates, route the picked 3-D target through the retail AttemptPlaceIn3D policy, and send authoritative GiveObject requests with the selected stack quantity. Honor PlayerDescription's player secure-trade option and document the remaining trade-system boundary.

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-13 20:28:38 +02:00
parent a944e49b9c
commit 30d294506c
13 changed files with 421 additions and 10 deletions

View file

@ -463,6 +463,14 @@ include dungeons.
acknowledgement independently of rollback bookkeeping, and prevents rapid
switches from overlapping or remaining stuck; ACE owns stance-specific motions and its PropertyInt 40 update
now drives the client `CombatState`.
- **M2 item giving (implemented 2026-07-13; starter-dungeon live gate pending)**
a physical inventory drag released over a 3-D creature now ports
`ItemHolder::AttemptPlaceIn3D` through the exact `GiveObjectRequest 0x00CD`
packet, including selected partial-stack quantities and authoritative-only
inventory mutation. Release coordinates feed the existing world picker, and
`PlayerDescription.Options1` preserves retail's player secure-trade
preference. See
`docs/research/2026-07-13-retail-give-item-pseudocode.md` and issue #216.
- **L.1c local attack receive path (implemented 2026-07-11; live gate pending)**
local non-autonomous mt-0 UpdateMotion now uses retail's wholesale interpreted
funnel and action-stamp gate, so ACE's server-selected melee/missile action