diff --git a/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxData.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxData.cs index 0a93f788b..442c1047b 100644 --- a/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxData.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxData.cs @@ -42,5 +42,11 @@ namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types /// [JsonProperty("crystarium")] public uint Crystarium { get; set; } + + /// + /// Gets or sets The Crystarium's current tax rate. + /// + [JsonProperty("sharlayan")] + public uint Sharlayan { get; set; } } } diff --git a/Dalamud/Game/Network/Internal/NetworkHandlers.cs b/Dalamud/Game/Network/Internal/NetworkHandlers.cs index 4d7b7145e..3958f3f3b 100644 --- a/Dalamud/Game/Network/Internal/NetworkHandlers.cs +++ b/Dalamud/Game/Network/Internal/NetworkHandlers.cs @@ -191,14 +191,18 @@ namespace Dalamud.Game.Network.Internal var taxes = MarketTaxRates.Read(dataPtr); + if (taxes.Category != 0xb0009) + return; + Log.Verbose( - "MarketTaxRates: limsa#{0} grid#{1} uldah#{2} ish#{3} kugane#{4} cr#{5}", + "MarketTaxRates: limsa#{0} grid#{1} uldah#{2} ish#{3} kugane#{4} cr#{5} sh#{6}", taxes.LimsaLominsaTax, taxes.GridaniaTax, taxes.UldahTax, taxes.IshgardTax, taxes.KuganeTax, - taxes.CrystariumTax); + taxes.CrystariumTax, + taxes.SharlayanTax); Task.Run(() => this.uploader.UploadTax(taxes)) .ContinueWith((task) => Log.Error(task.Exception, "Market Board tax data upload failed."), TaskContinuationOptions.OnlyOnFaulted); diff --git a/Dalamud/Game/Network/Structures/MarketTaxRates.cs b/Dalamud/Game/Network/Structures/MarketTaxRates.cs index 4fb6a2b13..bdca8fe7d 100644 --- a/Dalamud/Game/Network/Structures/MarketTaxRates.cs +++ b/Dalamud/Game/Network/Structures/MarketTaxRates.cs @@ -4,7 +4,8 @@ using System.IO; namespace Dalamud.Game.Network.Structures { /// - /// This class represents the market tax rates from a game network packet. + /// This class represents the "Result Dialog" packet. This is also used e.g. for reduction results, but we only care about tax rates. + /// We can do that by checking the "Category" field. /// public class MarketTaxRates { @@ -12,6 +13,11 @@ namespace Dalamud.Game.Network.Structures { } + /// + /// Category of this ResultDialog packet. + /// + public uint Category { get; private set; } + /// /// Gets the tax rate in Limsa Lominsa. /// @@ -42,6 +48,11 @@ namespace Dalamud.Game.Network.Structures /// public uint CrystariumTax { get; private set; } + /// + /// Gets the tax rate in the Crystarium. + /// + public uint SharlayanTax { get; private set; } + /// /// Read a object from memory. /// @@ -54,13 +65,15 @@ namespace Dalamud.Game.Network.Structures var output = new MarketTaxRates(); - stream.Position += 8; + output.Category = reader.ReadUInt32(); + stream.Position += 4; output.LimsaLominsaTax = reader.ReadUInt32(); output.GridaniaTax = reader.ReadUInt32(); output.UldahTax = reader.ReadUInt32(); output.IshgardTax = reader.ReadUInt32(); output.KuganeTax = reader.ReadUInt32(); output.CrystariumTax = reader.ReadUInt32(); + output.SharlayanTax = reader.ReadUInt32(); return output; }