feat(D.5.4): add item fields to ClientObject + WeenieData ingest DTO
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
b00a373c5a
commit
b83f17a927
2 changed files with 73 additions and 1 deletions
|
|
@ -127,7 +127,7 @@ public sealed class PropertyBundle
|
|||
public sealed class ClientObject
|
||||
{
|
||||
public uint ObjectId { get; init; }
|
||||
public uint WeenieClassId { get; init; } // "blueprint"
|
||||
public uint WeenieClassId { get; set; } // "blueprint"
|
||||
public string Name { get; set; } = "";
|
||||
public ItemType Type { get; set; }
|
||||
public EquipMask ValidLocations { get; set; }
|
||||
|
|
@ -150,9 +150,49 @@ public sealed class ClientObject
|
|||
public int ContainerSlot { get; set; } = -1;
|
||||
public bool Attuned { get; set; }
|
||||
public bool Bonded { get; set; }
|
||||
public uint WielderId { get; set; } // PropertyInstanceId.Wielder; 0 = not wielded
|
||||
public int ItemsCapacity { get; set; } // main-pack slots (containers)
|
||||
public int ContainersCapacity{ get; set; } // side-pack slots (containers)
|
||||
public uint Priority { get; set; } // ClothingPriority / CoverageMask layer order
|
||||
public int Structure { get; set; } // charges/uses remaining
|
||||
public int MaxStructure { get; set; }
|
||||
public float Workmanship { get; set; } // 0..10 (fractional on the wire)
|
||||
public PropertyBundle Properties { get; } = new();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The wire-delivered patch from a <c>CreateObject</c> (0xF745). Nullable fields
|
||||
/// were gated by a WeenieHeader flag that was ABSENT — the merge upsert
|
||||
/// (ClientObjectTable.Ingest) leaves the existing value untouched
|
||||
/// for those, matching retail's <c>SetWeenieDesc</c> (patches only present fields).
|
||||
/// Non-nullable id/effect fields use 0 = "not sent". Effects is assigned
|
||||
/// unconditionally (0 clears) — the D.5.2 icon contract. Quantity fields are
|
||||
/// int? (ACE PropertyInt convention); id/mask fields are uint?.
|
||||
/// </summary>
|
||||
public readonly record struct WeenieData(
|
||||
uint Guid,
|
||||
string? Name,
|
||||
ItemType? Type,
|
||||
uint WeenieClassId,
|
||||
uint IconId,
|
||||
uint IconOverlayId,
|
||||
uint IconUnderlayId,
|
||||
uint Effects,
|
||||
int? Value,
|
||||
int? StackSize,
|
||||
int? StackSizeMax,
|
||||
int? Burden,
|
||||
uint? ContainerId,
|
||||
uint? WielderId,
|
||||
uint? ValidLocations,
|
||||
uint? CurrentWieldedLocation,
|
||||
uint? Priority,
|
||||
int? ItemsCapacity,
|
||||
int? ContainersCapacity,
|
||||
int? Structure,
|
||||
int? MaxStructure,
|
||||
float? Workmanship);
|
||||
|
||||
/// <summary>
|
||||
/// Container = inventory pack. Hierarchy is strictly 2-deep: character
|
||||
/// → side packs; a side pack cannot hold another side pack (r06 §7).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue