feat(D.5.4): forward full item field set through WorldSession.EntitySpawn

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-06-18 15:53:07 +02:00
parent e4dd37a3b8
commit b00a373c5a

View file

@ -91,7 +91,24 @@ public sealed class WorldSession : IDisposable
uint IconUnderlayId = 0, uint IconUnderlayId = 0,
// D.5.2 (2026-06-17): UiEffects bitfield (weenieFlags 0x80) — drives the icon's // D.5.2 (2026-06-17): UiEffects bitfield (weenieFlags 0x80) — drives the icon's
// effect recolor. CreateObject-only; 0 = no effect. // effect recolor. CreateObject-only; 0 = no effect.
uint UiEffects = 0); uint UiEffects = 0,
// D.5.4 (2026-06-18): full item field set, forwarded to the object table.
// Quantity fields int? (ACE PropertyInt convention); id/mask fields uint?.
uint WeenieClassId = 0,
int? Value = null,
int? StackSize = null,
int? StackSizeMax = null,
int? Burden = null,
int? ItemsCapacity = null,
int? ContainersCapacity = null,
uint? ContainerId = null,
uint? WielderId = null,
uint? ValidLocations = null,
uint? CurrentWieldedLocation = null,
uint? Priority = null,
int? Structure = null,
int? MaxStructure = null,
float? Workmanship = null);
/// <summary>Fires when the session finishes parsing a CreateObject.</summary> /// <summary>Fires when the session finishes parsing a CreateObject.</summary>
public event Action<EntitySpawn>? EntitySpawned; public event Action<EntitySpawn>? EntitySpawned;
@ -745,7 +762,22 @@ public sealed class WorldSession : IDisposable
parsed.Value.IconId, parsed.Value.IconId,
parsed.Value.IconOverlayId, parsed.Value.IconOverlayId,
parsed.Value.IconUnderlayId, parsed.Value.IconUnderlayId,
parsed.Value.UiEffects)); parsed.Value.UiEffects,
parsed.Value.WeenieClassId,
parsed.Value.Value,
parsed.Value.StackSize,
parsed.Value.StackSizeMax,
parsed.Value.Burden,
parsed.Value.ItemsCapacity,
parsed.Value.ContainersCapacity,
parsed.Value.ContainerId,
parsed.Value.WielderId,
parsed.Value.ValidLocations,
parsed.Value.CurrentWieldedLocation,
parsed.Value.Priority,
parsed.Value.Structure,
parsed.Value.MaxStructure,
parsed.Value.Workmanship));
} }
} }
else if (op == DeleteObject.Opcode) else if (op == DeleteObject.Opcode)