From a44e7210bc65d707da15de52303bbad62d064d35 Mon Sep 17 00:00:00 2001
From: goaaats <16760685+goaaats@users.noreply.github.com>
Date: Fri, 3 Dec 2021 14:28:24 +0100
Subject: [PATCH] fix: update MarketTaxRates, check category, add sharlayan
---
.../Universalis/Types/UniversalisTaxData.cs | 6 ++++++
.../Game/Network/Internal/NetworkHandlers.cs | 8 ++++++--
.../Game/Network/Structures/MarketTaxRates.cs | 17 +++++++++++++++--
3 files changed, 27 insertions(+), 4 deletions(-)
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;
}