diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs
index 7fa6c9df..29be9361 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs
@@ -670,17 +670,11 @@ public record UpdDogtag
}
[JsonPropertyName("Side")]
- public object? Side
+ [JsonConverter(typeof(DogtagSideConverter))]
+ public DogtagSide? Side
{
- get
- {
- return _side;
- }
- set
- {
- Console.WriteLine($"Side: {value}");
- _side = value;
- }
+ get;
+ set;
}
[JsonPropertyName("Level")]
diff --git a/Libraries/SPTarkov.Server.Core/Models/Enums/DogtagSide.cs b/Libraries/SPTarkov.Server.Core/Models/Enums/DogtagSide.cs
new file mode 100644
index 00000000..d94e0717
--- /dev/null
+++ b/Libraries/SPTarkov.Server.Core/Models/Enums/DogtagSide.cs
@@ -0,0 +1,12 @@
+namespace SPTarkov.Server.Core.Models.Enums;
+
+public enum DogtagSide
+{
+ ///
+ /// This is for the dogtag equipped by the player, which shows up as 0 (integer) on the profile json.
+ ///
+ NotApplicable,
+
+ Usec,
+ Bear
+}
diff --git a/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/DogtagSideConverter.cs b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/DogtagSideConverter.cs
new file mode 100644
index 00000000..b7b2b4ae
--- /dev/null
+++ b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/DogtagSideConverter.cs
@@ -0,0 +1,33 @@
+using System.Text.Json;
+using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Enums;
+
+namespace SPTarkov.Server.Core.Utils.Json.Converters;
+
+public class DogtagSideConverter : JsonConverter
+{
+ public override DogtagSide Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ if (reader.TokenType == JsonTokenType.Number)
+ {
+ return DogtagSide.NotApplicable;
+ }
+
+ var value = reader.GetString();
+ return value != null ? Enum.Parse(value) : DogtagSide.NotApplicable;
+ }
+
+ public override void Write(Utf8JsonWriter writer, DogtagSide value, JsonSerializerOptions options)
+ {
+ switch (value)
+ {
+ case DogtagSide.NotApplicable:
+ writer.WriteNumberValue(0);
+ break;
+ case DogtagSide.Usec:
+ case DogtagSide.Bear:
+ writer.WriteStringValue(value.ToString());
+ break;
+ }
+ }
+}