diff --git a/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentItemSearch.cs b/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentItemSearch.cs index 2a2d660ed..54f327294 100644 --- a/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentItemSearch.cs +++ b/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentItemSearch.cs @@ -1,4 +1,5 @@ using FFXIVClientStructs.FFXIV.Client.Game; +using FFXIVClientStructs.FFXIV.Client.UI.Info; using static FFXIVClientStructs.FFXIV.Common.Configuration.ConfigBase; namespace FFXIVClientStructs.FFXIV.Client.UI.Agent; @@ -12,7 +13,9 @@ namespace FFXIVClientStructs.FFXIV.Client.UI.Agent; [Inherits, Inherits] [StructLayout(LayoutKind.Explicit, Size = 0x3888)] public unsafe partial struct AgentItemSearch { + [FieldOffset(0x90)] public InfoProxyItemSearch* InfoProxyItemSearch; [FieldOffset(0x98)] public StringHolder* StringData; + // [FieldOffset(0xA2C), FixedSizeArray] internal FixedSizeArray100 _unkUints; [FieldOffset(0xA29)] public bool ListingPageLoaded; [FieldOffset(0xBBC), FixedSizeArray] internal FixedSizeArray100 _listingPageItemIds; diff --git a/FFXIVClientStructs/FFXIV/Client/UI/Info/InfoProxyItemSearch.cs b/FFXIVClientStructs/FFXIV/Client/UI/Info/InfoProxyItemSearch.cs index daaba8aab..21eab42d2 100644 --- a/FFXIVClientStructs/FFXIV/Client/UI/Info/InfoProxyItemSearch.cs +++ b/FFXIVClientStructs/FFXIV/Client/UI/Info/InfoProxyItemSearch.cs @@ -84,41 +84,36 @@ public unsafe partial struct InfoProxyItemSearch { } [GenerateInterop] -[StructLayout(LayoutKind.Explicit, Size = Size)] -public unsafe partial struct MarketBoardListing { - public const int Size = 0xB8; - - // [FieldOffset(0x00)] private Utf8String Unk0x00; - +[StructLayout(LayoutKind.Explicit, Size = 0xB8)] +public partial struct MarketBoardListing { + /// + /// Only populated when item is being sold as a set (see Addon#6994). + /// + [FieldOffset(0x00)] public Utf8String CharacterName; [FieldOffset(0x68)] public ulong ListingId; - [FieldOffset(0x70)] public ulong SellingRetainerContentId; // ?? - [FieldOffset(0x78)] public ulong SellingPlayerContentId; + [FieldOffset(0x70)] public ulong RetainerId; + [FieldOffset(0x78)] public ulong ContentId; [FieldOffset(0x80)] public ulong ArtisanId; - [FieldOffset(0x88)] public uint UnitPrice; [FieldOffset(0x8C)] public uint TotalTax; [FieldOffset(0x90)] public uint Quantity; [FieldOffset(0x94)] public uint ItemId; - /// /// The index of the retainer's inventory slot in the RetainerMarket inventory. /// [FieldOffset(0x98)] public ushort ContainerIndex; - [FieldOffset(0x9A)] public ushort Durability; [FieldOffset(0x9C)] public ushort Spiritbond; - /// /// List of materias associated with this item. Only valid up to the count specified in MateriaCount. /// [FieldOffset(0x9E), FixedSizeArray] internal FixedSizeArray5 _materia; - [FieldOffset(0xA8)] public bool IsHqItem; [FieldOffset(0xA9)] public byte MateriaCount; [FieldOffset(0xAA)] public bool IsMannequin; - // [FieldOffset(0xAC)] private ushort Unk0xAC; - + [BitField(nameof(IsSellingAsSet), 0)] + [FieldOffset(0xAC)] private uint Flags; // Not entirely sure. Server sends this as byte, but it's stored as (u)int for the NumberArray /// /// The Town (from EXD) that this marketboard entry is from. /// @@ -129,7 +124,7 @@ public unsafe partial struct MarketBoardListing { [StructLayout(LayoutKind.Explicit, Size = 0x24)] public struct LastPurchasedMarketboardItem { - [FieldOffset(0x00)] public ulong SellingRetainerContentId; + [FieldOffset(0x00)] public ulong RetainerId; [FieldOffset(0x08)] public ulong ListingId; [FieldOffset(0x10)] public uint ItemId; [FieldOffset(0x14)] public uint Quantity;