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

@ -197,6 +197,20 @@ public static class PlayerDescriptionParser
SpellLists8 = 0x00000400,
}
/// <summary>
/// Character-option bits consumed by the client runtime. Values are the
/// verbatim retail <c>CharacterOption</c> enum from
/// <c>named-retail/acclient.h:3404</c>.
/// </summary>
[Flags]
public enum CharacterOptions1 : uint
{
None = 0,
AllowGive = 0x00000040,
DragItemOnPlayerOpensSecureTrade = 0x04000000,
Default = 0x50C4A54A,
}
/// <summary>One inventory entry — a guid plus a ContainerType
/// discriminator (0=NonContainer, 1=Container, 2=Foci). Holtburger
/// <c>events.rs:143-168</c> validates <c>ContainerType &lt;= 2</c>