From 6c100171c1888e5f72651489a7c3b872a6655612 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Tue, 7 Jan 2025 20:49:04 -0500 Subject: [PATCH 1/9] Add more tests, fix bug test found :) --- Core/Utils/RandomUtil.cs | 4 +- UnitTests/Tests/Utils/RandomUtilTests.cs | 71 +++++++++++++++++++++++- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/Core/Utils/RandomUtil.cs b/Core/Utils/RandomUtil.cs index dd8c41e4..50a9ebf2 100644 --- a/Core/Utils/RandomUtil.cs +++ b/Core/Utils/RandomUtil.cs @@ -158,7 +158,9 @@ public class RandomUtil const ulong maxInt = 1UL << 48; - return (double)integer / maxInt; + Console.WriteLine(integer); + + return (double)Math.Abs(integer) / maxInt; } /// diff --git a/UnitTests/Tests/Utils/RandomUtilTests.cs b/UnitTests/Tests/Utils/RandomUtilTests.cs index 8d2c7d37..81a91517 100644 --- a/UnitTests/Tests/Utils/RandomUtilTests.cs +++ b/UnitTests/Tests/Utils/RandomUtilTests.cs @@ -17,7 +17,7 @@ public sealed class RandomUtilTests if (result < 0 || result > 10) { - Assert.Fail("GetInt() out of range."); + Assert.Fail($"GetInt() out of range. Expected range [0, 10] but was {result}."); } } } @@ -32,8 +32,75 @@ public sealed class RandomUtilTests if (result < 1 || result > 9) { - Assert.Fail("GetIntEx() out of range."); + Assert.Fail($"GetInt() out of range. Expected range [1, 9] but was {result}."); } } } + + [TestMethod] + public void GetFloatTest() + { + // Run 100 test cases + for (var i = 0; i < 100; i++) + { + var result = _randomUtil.GetFloat(0f, 10f); + + if (result < 0f || result >= 9f) + { + Assert.Fail($"GetFloat() out of range. Expected range [0.0f, 8.99f] but was {result}."); + } + } + } + + [TestMethod] + public void GetPercentOfValueTest() + { + const float expected = 45.5f; + var result = _randomUtil.GetPercentOfValue(45.5f, 100f); + + Assert.AreEqual( + expected, + result, + 0.0001f, + $"GetPercentOfValue() out of range. Expected: {expected}. Actual: {result}."); + } + + [TestMethod] + public void ReduceValueByPercentTest() + { + const float expected = 54.5f; + var result = _randomUtil.ReduceValueByPercent(100f, 45.5f); + + Assert.AreEqual( + expected, + result, + 0.0001f, + $"ReduceValueByPercent() out of range. Expected: {expected}. Actual: {result}."); + } + + [TestMethod] + public void GetChance100Test() + { + for (var i = 0; i < 100; i++) + { + const bool expectedTrue = true; + var resultTrue = _randomUtil.GetChance100(100f); + + Assert.AreEqual( + expectedTrue, + resultTrue, + $"GetChance100() out of range. Expected: {expectedTrue}. Actual: {resultTrue}."); + } + + for (var i = 0; i < 100; i++) + { + const bool expectedFalse = false; + var resultFalse = _randomUtil.GetChance100(0f); + + Assert.AreEqual( + expectedFalse, + resultFalse, + $"GetChance100() out of range. Expected: {expectedFalse}. Actual: {resultFalse}."); + } + } } \ No newline at end of file From a85bc22568d54d7c7cff02190f318d0917e33637 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Tue, 7 Jan 2025 21:07:06 -0500 Subject: [PATCH 2/9] MongoId validation test --- UnitTests/Tests/Utils/HashUtilTests.cs | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 UnitTests/Tests/Utils/HashUtilTests.cs diff --git a/UnitTests/Tests/Utils/HashUtilTests.cs b/UnitTests/Tests/Utils/HashUtilTests.cs new file mode 100644 index 00000000..c9a06405 --- /dev/null +++ b/UnitTests/Tests/Utils/HashUtilTests.cs @@ -0,0 +1,37 @@ +using Core.Utils; + +namespace UnitTests.Tests.Utils; + +[TestClass] +public class HashUtilTests +{ + private readonly HashUtil _hashUtil = new(); + + [TestMethod] + public void IsValidMongoIdTest() + { + // Invalid mongoId character + var ResultBadChar = _hashUtil.IsValidMongoId("677ddb67406e9918a0264bbz"); + + Assert.AreEqual( + false, + ResultBadChar, + "IsValidMongoId() `677ddb67406e9918a0264bbz` contains invalid char `z`, but result was true"); + + // Invalid mongoId length + var resultBadLength = _hashUtil.IsValidMongoId("677ddb67406e9918a0264bbcc"); + + Assert.AreEqual( + false, + resultBadLength, + "IsValidMongoId() `677ddb67406e9918a0264bbcc` is 25 characters, but result was true"); + + // Valid mongoId + var resultPass = _hashUtil.IsValidMongoId("677ddb67406e9918a0264bbc"); + + Assert.AreEqual( + true, + resultPass, + "IsValidMongoId() `677ddb67406e9918a0264bbc` is a valid mongoId, but result was false"); + } +} \ No newline at end of file From da764079f3e2ce216a9414f88520980677c7cc36 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Wed, 8 Jan 2025 00:00:37 -0500 Subject: [PATCH 3/9] More RandomUtil work --- Core/Utils/RandomUtil.cs | 161 ++++++++++++++++++++++- UnitTests/Tests/Utils/RandomUtilTests.cs | 74 ++++++++++- 2 files changed, 221 insertions(+), 14 deletions(-) diff --git a/Core/Utils/RandomUtil.cs b/Core/Utils/RandomUtil.cs index 50a9ebf2..5a99eddc 100644 --- a/Core/Utils/RandomUtil.cs +++ b/Core/Utils/RandomUtil.cs @@ -9,6 +9,12 @@ public class RandomUtil { private readonly Random _random = new(); + /// + /// The IEEE-754 standard for double-precision floating-point numbers limits the number of digits (including both + /// integer + fractional parts) to about 15–17 significant digits. 15 is a safe upper bound, so we'll use that. + /// + public const int MaxSignificantDigits = 15; + /// /// Generates a random integer between the specified minimum and maximum values, inclusive. /// @@ -39,7 +45,7 @@ public class RandomUtil } /// - /// Generates a random floating-point number within the specified range. + /// Generates a random floating-point number within the specified range ~6-9 digits (4 bytes). /// /// The minimum value of the range (inclusive). /// The maximum value of the range (exclusive). @@ -48,6 +54,17 @@ public class RandomUtil { return (float)GetSecureRandomNumber() * (max - min) + min; } + + /// + /// Generates a random floating-point number within the specified range ~15-17 digits (8 bytes). + /// + /// The minimum value of the range (inclusive). + /// The maximum value of the range (exclusive). + /// A random floating-point number between `min` (inclusive) and `max` (exclusive). + public double GetDouble(double min, double max) + { + return GetSecureRandomNumber() * (max - min) + min; + } /// /// Generates a random boolean value. @@ -110,9 +127,9 @@ public class RandomUtil } /// - /// Returns a random string from the provided collection of strings. + /// Returns a random type T from the provided collection of type T. /// - /// + /// The collection to get the random element from /// The type of elements in the collection. /// A random element from the collection. /// This was formerly getArrayValue() in the node server @@ -132,6 +149,134 @@ public class RandomUtil { return GetCollectionValue(dictionary.Keys); } + + /// + /// Gets a random val from the given dictionary + /// + /// The dictionary from which to retrieve a value. + /// Type of key + /// Type of Value + /// A random TVal representing one of the values of the dictionary. + public TVal GetVal(Dictionary dictionary) where TKey : notnull + { + return GetCollectionValue(dictionary.Values); + } + + /// + /// Generates a normally distributed random number using the Box-Muller transform. + /// + /// The mean (μ) of the normal distribution. + /// The standard deviation (σ) of the normal distribution. + /// The current attempt count to generate a valid number (default is 0). + /// A normally distributed random number. + /// + /// This function uses the Box-Muller transform to generate a normally distributed random number. + /// If the generated number is less than 0, it will recursively attempt to generate a valid number up to 100 times. + /// If it fails to generate a valid number after 100 attempts, it will return a random float between 0.01 and twice the mean. + /// + public double GetNormallyDistributedRandomNumber(double mean, double sigma, int attempt = 0) + { + double u, v; + + do + { + u = GetSecureRandomNumber(); + } while (u == 0); + + do + { + v = GetSecureRandomNumber(); + } while (v == 0); + + // Apply the Box-Muller transform + var w = Math.Sqrt(-2.0 * Math.Log(u)) * Math.Cos(2.0 * Math.PI * v); + var valueDrawn = mean + w * sigma; + + // Check if the generated value is valid + if (valueDrawn < 0) + { + return attempt > 100 + ? GetDouble(0.01f, mean * 2f) + : GetNormallyDistributedRandomNumber(mean, sigma, attempt + 1); + } + + return valueDrawn; + } + + /// + /// Generates a random integer between the specified range. + /// + /// The lower bound of the range (inclusive). + /// The upper bound of the range (exclusive). If not provided, the range will be from 0 to `low`. + /// A random integer within the specified range. + public int RandInt(int low, int? high) + { + // Return a random integer from 0 to low if high is not provided + if (high is null) + { + return _random.Next(0, low); + } + + // Return low directly when low and high are equal + return low == high + ? low + : _random.Next(low, (int)high); + } + + /// + /// Generates a random number between two given values with optional precision. + /// + /// The first value to determine the range. + /// The second value to determine the range. If not provided, 0 is used. + /// + /// The number of decimal places to round the result to. Must be a positive integer between 0 + /// and MaxSignificantDigits(15), inclusive. If not provided, precision is determined by the input values. + /// + /// + public double RandNum(double val1, double val2 = 0, byte? precision = null) + { + if (!double.IsFinite(val1) || !double.IsFinite(val2)) + { + throw new ArgumentException("RandNum() parameters 'value1' and 'value2' must be finite numbers."); + } + + // Determine the range + var min = Math.Min(val1, val2); + var max = Math.Max(val1, val2); + + // Validate and adjust precision + if (precision is not null) + { + if (precision > MaxSignificantDigits) + { + throw new ArgumentOutOfRangeException( + nameof(precision), "Must be less than 16"); + } + + // Calculate the number of whole-number digits in the maximum absolute value of the range + var maxAbsoluteValue = Math.Max(Math.Abs(min), Math.Abs(max)); + var wholeNumberDigits = (int)Math.Floor(Math.Log10(maxAbsoluteValue)) + 1; + + var maxAllowedPrecision = Math.Max(0, MaxSignificantDigits - wholeNumberDigits); + + if (precision > maxAllowedPrecision) + { + throw new ArgumentException( + $"RandNum() precision of {precision} exceeds the allowable precision ({maxAllowedPrecision}) for the given values." + ); + } + } + + var result = GetSecureRandomNumber() * (max - min) + min; + + // Determine effective precision + var maxPrecision = Math.Max(GetNumberPrecision(val1), GetNumberPrecision(val2)); + var effectivePrecision = precision ?? maxPrecision; + + var factor = Math.Pow(2, effectivePrecision); + + return Math.Round(result * factor) / factor; + } /// /// Generates a secure random number between 0 (inclusive) and 1 (exclusive). @@ -158,8 +303,6 @@ public class RandomUtil const ulong maxInt = 1UL << 48; - Console.WriteLine(integer); - return (double)Math.Abs(integer) / maxInt; } @@ -168,8 +311,12 @@ public class RandomUtil /// /// The number to analyze. /// The number of decimal places, or 0 if none exist. - private static int GetNumberPrecision(double num) + public int GetNumberPrecision(double num) { - return num.ToString().Split('.')[1]?.Length ?? 0; + var parts = num.ToString($"G{MaxSignificantDigits}").Split('.'); + + return parts.Length > 1 + ? parts[1].Length + : 0; } } \ No newline at end of file diff --git a/UnitTests/Tests/Utils/RandomUtilTests.cs b/UnitTests/Tests/Utils/RandomUtilTests.cs index 81a91517..be9b3041 100644 --- a/UnitTests/Tests/Utils/RandomUtilTests.cs +++ b/UnitTests/Tests/Utils/RandomUtilTests.cs @@ -17,7 +17,7 @@ public sealed class RandomUtilTests if (result < 0 || result > 10) { - Assert.Fail($"GetInt() out of range. Expected range [0, 10] but was {result}."); + Assert.Fail($"GetInt(0, 10) out of range. Expected range [0, 10] but was {result}."); } } } @@ -32,7 +32,7 @@ public sealed class RandomUtilTests if (result < 1 || result > 9) { - Assert.Fail($"GetInt() out of range. Expected range [1, 9] but was {result}."); + Assert.Fail($"GetInt(10) out of range. Expected range [1, 9] but was {result}."); } } } @@ -47,7 +47,7 @@ public sealed class RandomUtilTests if (result < 0f || result >= 9f) { - Assert.Fail($"GetFloat() out of range. Expected range [0.0f, 8.99f] but was {result}."); + Assert.Fail($"GetFloat(0f, 10f) out of range. Expected range [0.0f, 9.999f] but was {result}."); } } } @@ -62,7 +62,7 @@ public sealed class RandomUtilTests expected, result, 0.0001f, - $"GetPercentOfValue() out of range. Expected: {expected}. Actual: {result}."); + $"GetPercentOfValue(45.5f, 100f) out of range. Expected: {expected}. Actual: {result}."); } [TestMethod] @@ -75,7 +75,7 @@ public sealed class RandomUtilTests expected, result, 0.0001f, - $"ReduceValueByPercent() out of range. Expected: {expected}. Actual: {result}."); + $"ReduceValueByPercent(100f, 45.5f) out of range. Expected: {expected}. Actual: {result}."); } [TestMethod] @@ -89,7 +89,7 @@ public sealed class RandomUtilTests Assert.AreEqual( expectedTrue, resultTrue, - $"GetChance100() out of range. Expected: {expectedTrue}. Actual: {resultTrue}."); + $"GetChance100(100f) out of range. Expected: {expectedTrue}. Actual: {resultTrue}."); } for (var i = 0; i < 100; i++) @@ -100,7 +100,67 @@ public sealed class RandomUtilTests Assert.AreEqual( expectedFalse, resultFalse, - $"GetChance100() out of range. Expected: {expectedFalse}. Actual: {resultFalse}."); + $"GetChance100(0f) out of range. Expected: {expectedFalse}. Actual: {resultFalse}."); + } + } + + // TODO: Missing methods between these two + + [TestMethod] + public void RandIntTest() + { + for (var i = 0; i < 100; i++) + { + var result = _randomUtil.RandInt(0, 10); + + if (result < 0 || result > 9) + { + Assert.Fail($"RandInt(0, 10) out of range. Expected range [0, 9] but was {result}."); + } + } + + for (var i = 0; i < 100; i++) + { + var result = _randomUtil.RandInt(10, null); + + if (result < 0 || result > 9) + { + Assert.Fail($"RandInt(10, null) out of range. Expected range [0, 9] but was {result}."); + } + } + } + + [TestMethod] + public void RandNumTest() + { + for (var i = 0; i < 100; i++) + { + var result = _randomUtil.RandNum(0, 10); + + if (result < 0 || result > 9) + { + Assert.Fail($"RandNum(0, 10) out of range. Expected range [0, 9.999d] but was {result}."); + } + + if (_randomUtil.GetNumberPrecision(result) > RandomUtil.MaxSignificantDigits) + { + Assert.Fail($"RandNum(0, 10) precision of {result} exceeds the allowable precision ({RandomUtil.MaxSignificantDigits}) for the given values."); + } + } + + for (var i = 0; i < 100; i++) + { + var result = _randomUtil.RandNum(10); + + if (result < 0 || result > 9) + { + Assert.Fail($"RandNum(10) out of range. Expected range [0, 9.999d] but was {result}."); + } + + if (_randomUtil.GetNumberPrecision(result) > RandomUtil.MaxSignificantDigits) + { + Assert.Fail($"RandNum(10) precision of {result} exceeds the allowable precision ({RandomUtil.MaxSignificantDigits}) for the given values."); + } } } } \ No newline at end of file From ee65da4860c569c32e7160c13d8700d4d6ead2e1 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Wed, 8 Jan 2025 02:50:11 -0500 Subject: [PATCH 4/9] More work on randomUtil --- Core/Utils/RandomUtil.cs | 79 +++++++++++++++++++++++- UnitTests/Tests/Utils/RandomUtilTests.cs | 19 +++++- 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/Core/Utils/RandomUtil.cs b/Core/Utils/RandomUtil.cs index 5a99eddc..5da25cd3 100644 --- a/Core/Utils/RandomUtil.cs +++ b/Core/Utils/RandomUtil.cs @@ -209,7 +209,7 @@ public class RandomUtil /// The lower bound of the range (inclusive). /// The upper bound of the range (exclusive). If not provided, the range will be from 0 to `low`. /// A random integer within the specified range. - public int RandInt(int low, int? high) + public int RandInt(int low, int? high = null) { // Return a random integer from 0 to low if high is not provided if (high is null) @@ -277,6 +277,83 @@ public class RandomUtil return Math.Round(result * factor) / factor; } + + /// + /// Draws a specified number of random elements from a given list. + /// + /// The list to draw elements from. + /// The number of elements to draw. Defaults to 1. + /// Whether to draw with replacement. Defaults to true. + /// The type of elements in the list. + /// A List containing the drawn elements. + public List DrawRandomFromList(List originalList, int count = 1, bool replacement = true) + { + throw new NotImplementedException("ICloneable needs implemented on types before this can be written"); + } + + /// + /// Draws a specified number of random keys from a given dictionary. + /// + /// The dictionary from which to draw keys. + /// The number of keys to draw. Defaults to 1. + /// Whether to draw with replacement. Defaults to true. + /// The type of elements in keys + /// The type of elements in values + /// A list of randomly drawn keys from the dictionary. + public List DrawRandomFromDict(Dictionary dict, int count = 1, bool replacement = true) where TKey : notnull + { + throw new NotImplementedException("ICloneable needs implemented on types before this can be written"); + } + + /// + /// Generates a biased random number within a specified range. + /// + /// The minimum value of the range (inclusive). + /// The maximum value of the range (inclusive). + /// The bias shift to apply to the random number generation. + /// The number of iterations to use for generating a Gaussian random number. + /// A biased random number within the specified range. + public double GetBiasedRandomNumber(double min, double max, double shift, double n) + { + /*** + * This function generates a random number based on a gaussian distribution with an option to add a bias via shifting. + * + * Here's an example graph of how the probabilities can be distributed: + * https://www.boost.org/doc/libs/1_49_0/libs/math/doc/sf_and_dist/graphs/normal_pdf.png + * + * Our parameter 'n' is sort of like σ (sigma) in the example graph. + * + * An 'n' of 1 means all values are equally likely. Increasing 'n' causes numbers near the edge to become less likely. + * By setting 'shift' to whatever 'max' is, we can make values near 'min' very likely, while values near 'max' become extremely unlikely. + * + * Here's a place where you can play around with the 'n' and 'shift' values to see how the distribution changes: + * http://jsfiddle.net/e08cumyx/ + */ + + throw new NotImplementedException("This honestly went over my head..."); + } + + /// + /// Shuffles a list in place using the Fisher-Yates algorithm. + /// + /// The list to shuffle. + /// The type of elements in the list. + /// The shuffled list. + public List Shuffle(List originalList) + { + var currentIndex = originalList.Count; + + while (currentIndex != 0) + { + var randomIndex = GetInt(0, currentIndex); + currentIndex--; + + // Swap it with the current element. + (originalList[currentIndex], originalList[randomIndex]) = (originalList[randomIndex], originalList[currentIndex]); + } + + return originalList; + } /// /// Generates a secure random number between 0 (inclusive) and 1 (exclusive). diff --git a/UnitTests/Tests/Utils/RandomUtilTests.cs b/UnitTests/Tests/Utils/RandomUtilTests.cs index be9b3041..23a6d95d 100644 --- a/UnitTests/Tests/Utils/RandomUtilTests.cs +++ b/UnitTests/Tests/Utils/RandomUtilTests.cs @@ -121,7 +121,7 @@ public sealed class RandomUtilTests for (var i = 0; i < 100; i++) { - var result = _randomUtil.RandInt(10, null); + var result = _randomUtil.RandInt(10); if (result < 0 || result > 9) { @@ -163,4 +163,21 @@ public sealed class RandomUtilTests } } } + + [TestMethod] + public void ShuffleTest() + { + var testList = new List() + { + 1,2,3,4,5,6,7,8,9,10 + }; + + var orig = new List(testList); + + var result = _randomUtil.Shuffle(testList); + + Assert.IsFalse( + result.SequenceEqual(orig), + $"Shuffle test failed. Expected: {string.Join(", ", orig)}, but got {string.Join(", ", result)}"); + } } \ No newline at end of file From e4b346d6280e14907ba293e1ef1448a8d15450e5 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Wed, 8 Jan 2025 04:10:40 -0500 Subject: [PATCH 5/9] Math Util and tests --- Core/Utils/MathUtil.cs | 116 +++++++++++++++++++++++++ UnitTests/Tests/Utils/MathUtilTests.cs | 83 ++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100644 Core/Utils/MathUtil.cs create mode 100644 UnitTests/Tests/Utils/MathUtilTests.cs diff --git a/Core/Utils/MathUtil.cs b/Core/Utils/MathUtil.cs new file mode 100644 index 00000000..eaa53b49 --- /dev/null +++ b/Core/Utils/MathUtil.cs @@ -0,0 +1,116 @@ +using System.Numerics; +using Core.Annotations; + +namespace Core.Utils; + +[Injectable(InjectionType.Singleton)] +public class MathUtil +{ + /// + /// Helper to create the sum of all list elements + /// + /// List of floats to sum + /// sum of all values + public float ListSum(List values) + { + // Sum the list starting with an initial value of 0 + return values.Aggregate(0f, (sum, x) => sum + x); + } + + /// + /// Helper to create the cumulative sum of all list elements + /// ListCumSum([1, 2, 3, 4]) = [1, 3, 6, 10] + /// + /// The list with numbers of which to calculate the cumulative sum + /// cumulative sum of values + public List ListCumSum(List values) + { + var cumSumList = new List(values.Count); + float sum = 0; + + foreach (var value in values) + { + sum += value; + cumSumList.Add(sum); + } + + return cumSumList; + } + + /// + /// Helper to create the product of each element times factor + /// + /// The list of numbers which shall be multiplied by the factor + /// Number to multiply each element by + /// A list of elements all multiplied by the factor + public List ListProduct(List values, float factor) + { + return values.Select(v => v * factor).ToList(); + } + + /// + /// Helper to add a constant to all list elements + /// + /// The list of numbers to which the summand should be added + /// + /// A list of elements with the additive added to all elements + public List ListAdd(List values, float additive) + { + return values.Select(v => v + additive).ToList(); + } + + /// + /// Maps a value from an input range to an output range linearly. + /// + /// Example: + /// a_min = 0; a_max=1; + /// b_min = 1; b_max=3; + /// MapToRange(0.5, a_min, a_max, b_min, b_max) // returns 2 + /// + /// + /// The value from the input range to be mapped to the output range. + /// Minimum of the input range. + /// Maximum of the input range. + /// Minimum of the output range. + /// Maximum of the output range. + /// The result of the mapping. + public double MapToRange(double x, double minIn, double maxIn, double minOut, double maxOut) + { + var deltaIn = maxIn - minIn; + var deltaOut = maxOut - minOut; + + var xScale = (x - minIn) / deltaIn; + return Math.Max(minOut, Math.Min(maxOut, minOut + xScale * deltaOut)); + } + + /// + /// Linear interpolation + /// e.g. used to do a continuous integration for quest rewards which are defined for specific support centers of pmcLevel + /// + /// The point of x at which to interpolate + /// Support points in x (of same length as y) + /// Support points in y (of same length as x) + /// Interpolated value at xp, or null if xp is out of bounds + public static double? Interp1(double xp, double[] x, double[] y) + { + if (xp > x[^1]) // ^1 is the last index in C# + { + return y[^1]; + } + + if (xp < x[0]) + { + return y[0]; + } + + for (var i = 0; i < x.Length - 1; i++) + { + if (xp >= x[i] && xp <= x[i + 1]) + { + return y[i] + ((xp - x[i]) * (y[i + 1] - y[i])) / (x[i + 1] - x[i]); + } + } + + return null; + } +} \ No newline at end of file diff --git a/UnitTests/Tests/Utils/MathUtilTests.cs b/UnitTests/Tests/Utils/MathUtilTests.cs new file mode 100644 index 00000000..79400d7f --- /dev/null +++ b/UnitTests/Tests/Utils/MathUtilTests.cs @@ -0,0 +1,83 @@ +using Core.Utils; + +namespace UnitTests.Tests.Utils; + +[TestClass] +public class MathUtilTests +{ + private readonly MathUtil _mathUtil = new(); + + [TestMethod] + public void ListSumTest() + { + var test = new List { 1.1f, 2.1f, 3.3f }; + const float expected = 6.5f; + + var actual = _mathUtil.ListSum(test); + + Assert.AreEqual(expected, actual, + $"ListSum() Expected: {expected}, Actual: {actual}"); + } + + [TestMethod] + public void ListCumSumTest() + { + var test = new List { 1f, 2f, 3f, 4f }; + var expected = new List { 1f, 3f, 6f, 10f }; + + var actual = _mathUtil.ListCumSum(test); + + for (var i = 0; i < actual.Count; i++) + { + if (Math.Abs(expected[i] - actual[i]) > 0.00001f) + { + Assert.Fail($"ListCumSum() Expected: {string.Join(", ", expected)}, Actual: {string.Join(", ", actual)}"); + } + } + } + + [TestMethod] + public void ListProductTest() + { + var test = new List { 1f, 2f, 3f, 4f }; + var expected = new List { 2f, 4f, 6f, 8f }; + + var actual = _mathUtil.ListProduct(test, 2); + + for (var i = 0; i < actual.Count; i++) + { + if (Math.Abs(expected[i] - actual[i]) > 0.00001f) + { + Assert.Fail($"ListProduct() Expected: {string.Join(", ", expected)}, Actual: {string.Join(", ", actual)}"); + } + } + } + + [TestMethod] + public void ListAddTest() + { + var test = new List { 1f, 2f, 3f, 4f }; + var expected = new List { 3f, 4f, 5f, 6f }; + + var actual = _mathUtil.ListAdd(test, 2); + + for (var i = 0; i < actual.Count; i++) + { + if (Math.Abs(expected[i] - actual[i]) > 0.00001f) + { + Assert.Fail($"ListProduct() Expected: {string.Join(", ", expected)}, Actual: {string.Join(", ", actual)}"); + } + } + } + + [TestMethod] + public void MapToRangeTest() + { + const double expected = 2; + + var actual = _mathUtil.MapToRange(0.5, 0, 1, 1, 3); + + Assert.AreEqual(expected, actual, + $"MapToRange() Expected: {expected}, Actual: {actual}"); + } +} \ No newline at end of file From 1a863ecf4b5ec514b0d49ed838afa0f48e68d9d0 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Wed, 8 Jan 2025 04:21:22 -0500 Subject: [PATCH 6/9] Remove redundant parenthesis --- Core/Utils/MathUtil.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Utils/MathUtil.cs b/Core/Utils/MathUtil.cs index eaa53b49..1c5d8e50 100644 --- a/Core/Utils/MathUtil.cs +++ b/Core/Utils/MathUtil.cs @@ -107,7 +107,7 @@ public class MathUtil { if (xp >= x[i] && xp <= x[i + 1]) { - return y[i] + ((xp - x[i]) * (y[i + 1] - y[i])) / (x[i + 1] - x[i]); + return y[i] + (xp - x[i]) * (y[i + 1] - y[i]) / (x[i + 1] - x[i]); } } From 36a278a4ca6d3b2e3c16df27d6165ecc1e0a5479 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Wed, 8 Jan 2025 04:51:30 -0500 Subject: [PATCH 7/9] Implement generate and test --- Core/Utils/HashUtil.cs | 32 +++++++++++++++++++++++--- Core/Utils/RandomUtil.cs | 10 ++++---- UnitTests/Tests/Utils/HashUtilTests.cs | 21 ++++++++++++++++- 3 files changed, 54 insertions(+), 9 deletions(-) diff --git a/Core/Utils/HashUtil.cs b/Core/Utils/HashUtil.cs index 23de8a29..993d228c 100644 --- a/Core/Utils/HashUtil.cs +++ b/Core/Utils/HashUtil.cs @@ -9,14 +9,40 @@ namespace Core.Utils; public class HashUtil { private readonly Regex MongoIdRegex = new Regex("^[a-fA-F0-9]{24}$"); + + private readonly RandomUtil _randomUtil; + + public HashUtil(RandomUtil randomUtil) + { + _randomUtil = randomUtil; + } /// - /// Create a 24 character id using the sha256 algorithm + current timestamp + /// Create a 24 character MongoId /// - /// 24 character hash + /// 24 character objectId public string Generate() { - throw new NotImplementedException(); + var objectId = new byte[12]; + + // Time stamp (4 bytes) + var timestamp = BitConverter.GetBytes((int)DateTimeOffset.UtcNow.ToUnixTimeSeconds()); + // Convert to big-endian + Array.Reverse(timestamp); + Array.Copy(timestamp, 0, objectId, 0, 4); + + // Random value (5 bytes) + var randomValue = new byte[5]; + _randomUtil.Random.NextBytes(randomValue); + Array.Copy(randomValue, 0, objectId, 4, 5); + + // Incrementing counter (3 bytes) + // 24-bit counter + var counter = BitConverter.GetBytes(_randomUtil.GetInt(0, 16777215)); + Array.Reverse(counter); + Array.Copy(counter, 0, objectId, 9, 3); + + return Convert.ToHexStringLower(objectId); } /// diff --git a/Core/Utils/RandomUtil.cs b/Core/Utils/RandomUtil.cs index 5da25cd3..7e5993d8 100644 --- a/Core/Utils/RandomUtil.cs +++ b/Core/Utils/RandomUtil.cs @@ -7,7 +7,7 @@ namespace Core.Utils; [Injectable(InjectionType.Singleton)] public class RandomUtil { - private readonly Random _random = new(); + public readonly Random Random = new(); /// /// The IEEE-754 standard for double-precision floating-point numbers limits the number of digits (including both @@ -30,7 +30,7 @@ public class RandomUtil } // maxVal is exclusive of the passed value, so add 1 - return max > min ? _random.Next(min, max + 1) : min; + return max > min ? Random.Next(min, max + 1) : min; } /// @@ -41,7 +41,7 @@ public class RandomUtil /// A random integer between 1 and max - 1, or 1 if max is less than or equal to 1. public int GetIntEx(int max) { - return max > 2 ? _random.Next(1, max - 1) : 1; + return max > 2 ? Random.Next(1, max - 1) : 1; } /// @@ -214,13 +214,13 @@ public class RandomUtil // Return a random integer from 0 to low if high is not provided if (high is null) { - return _random.Next(0, low); + return Random.Next(0, low); } // Return low directly when low and high are equal return low == high ? low - : _random.Next(low, (int)high); + : Random.Next(low, (int)high); } /// diff --git a/UnitTests/Tests/Utils/HashUtilTests.cs b/UnitTests/Tests/Utils/HashUtilTests.cs index c9a06405..d6f91006 100644 --- a/UnitTests/Tests/Utils/HashUtilTests.cs +++ b/UnitTests/Tests/Utils/HashUtilTests.cs @@ -5,7 +5,26 @@ namespace UnitTests.Tests.Utils; [TestClass] public class HashUtilTests { - private readonly HashUtil _hashUtil = new(); + private readonly HashUtil _hashUtil = new(new RandomUtil()); + + [TestMethod] + public void GenerateTest() + { + // Generate 100 MongoId's + for (var i = 0; i < 100; i++) + { + // Invalid mongoId character + var result = _hashUtil.Generate(); + + // Invalid mongoId length + var test = _hashUtil.IsValidMongoId(result); + + Assert.AreEqual( + true, + test, + $"IsValidMongoId() `{result}` is not a valid MongoId."); + } + } [TestMethod] public void IsValidMongoIdTest() From c4b2f4b3db4bd5b65bba7e29ec3770d8313e3d90 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Wed, 8 Jan 2025 06:25:51 -0500 Subject: [PATCH 8/9] Start nullables --- .../Models/Eft/Bot/GenerateBotsRequestData.cs | 6 +- .../Eft/Bot/RandomisedBotLevelResult.cs | 4 +- Core/Models/Eft/Builds/SetMagazineRequest.cs | 12 +- Core/Models/Eft/Common/Globals.cs | 5097 +++++++++-------- Core/Models/Eft/Common/Location.cs | 260 +- Core/Models/Eft/Common/LocationBase.cs | 1431 ++--- Core/Models/Eft/Common/LooseLoot.cs | 164 +- Core/Models/Eft/Common/PmcData.cs | 15 +- .../Request/BaseInteractionRequestData.cs | 10 +- .../Eft/Common/Request/UIDRequestData.cs | 2 +- Core/Models/Eft/Common/Tables/Achievement.cs | 30 +- Core/Models/Eft/Common/Tables/BotBase.cs | 56 +- Core/Models/Eft/Common/Tables/BotCore.cs | 53 +- Core/Models/Eft/Common/Tables/BotType.cs | 210 +- .../Eft/Common/Tables/CustomisationStorage.cs | 6 +- .../Eft/Common/Tables/CustomizationItem.cs | 12 +- Core/Models/Eft/Common/Tables/HandbookBase.cs | 18 +- Core/Models/Eft/Common/Tables/Item.cs | 88 +- .../Eft/Common/Tables/LocationServices.cs | 100 +- .../Models/Eft/Common/Tables/LocationsBase.cs | 10 +- .../Tables/LocationsGenerateAllResponse.cs | 4 +- Core/Models/Eft/Common/Tables/Match.cs | 14 +- Core/Models/Eft/Common/Tables/Prestige.cs | 34 +- .../Eft/Common/Tables/ProfileTemplate.cs | 46 +- Core/Models/Eft/Common/Tables/Quest.cs | 126 +- .../Eft/Common/Tables/RepeatableQuests.cs | 120 +- Core/Models/Eft/Common/Tables/TemplateItem.cs | 330 +- Core/Models/Eft/Common/Tables/Trader.cs | 154 +- Core/Models/Eft/Common/XY.cs | 4 +- Core/Models/Eft/Common/XYZ.cs | 6 +- Core/Models/Eft/Ws/WsAid.cs | 2 +- Core/Models/Eft/Ws/WsAidNickname.cs | 4 +- Core/Models/Eft/Ws/WsChatMessageReceived.cs | 4 +- Core/Models/Eft/Ws/WsFriendListAccept.cs | 2 +- Core/Models/Eft/Ws/WsGroupId.cs | 2 +- 35 files changed, 4224 insertions(+), 4212 deletions(-) diff --git a/Core/Models/Eft/Bot/GenerateBotsRequestData.cs b/Core/Models/Eft/Bot/GenerateBotsRequestData.cs index daee6fe9..a27facff 100644 --- a/Core/Models/Eft/Bot/GenerateBotsRequestData.cs +++ b/Core/Models/Eft/Bot/GenerateBotsRequestData.cs @@ -5,7 +5,7 @@ namespace Core.Models.Eft.Bot; public class GenerateBotsRequestData { [JsonPropertyName("conditions")] - public List Conditions { get; set; } + public List? Conditions { get; set; } } public class Condition @@ -14,11 +14,11 @@ public class Condition /// e.g. assault/pmcBot/bossKilla /// [JsonPropertyName("Role")] - public string Role { get; set; } + public string? Role { get; set; } [JsonPropertyName("Limit")] public int Limit { get; set; } [JsonPropertyName("Difficulty")] - public string Difficulty { get; set; } + public string? Difficulty { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Bot/RandomisedBotLevelResult.cs b/Core/Models/Eft/Bot/RandomisedBotLevelResult.cs index b10697b0..11b292da 100644 --- a/Core/Models/Eft/Bot/RandomisedBotLevelResult.cs +++ b/Core/Models/Eft/Bot/RandomisedBotLevelResult.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Bot; public class RandomisedBotLevelResult { [JsonPropertyName("level")] - public int Level { get; set; } + public int? Level { get; set; } [JsonPropertyName("exp")] - public int Exp { get; set; } + public int? Exp { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Builds/SetMagazineRequest.cs b/Core/Models/Eft/Builds/SetMagazineRequest.cs index 49f53fcc..911541a4 100644 --- a/Core/Models/Eft/Builds/SetMagazineRequest.cs +++ b/Core/Models/Eft/Builds/SetMagazineRequest.cs @@ -6,20 +6,20 @@ namespace Core.Models.Eft.Builds; public class SetMagazineRequest { [JsonPropertyName("Id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("Name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("Caliber")] - public string Caliber { get; set; } + public string? Caliber { get; set; } [JsonPropertyName("Items")] - public List Items { get; set; } + public List? Items { get; set; } [JsonPropertyName("TopCount")] - public int TopCount { get; set; } + public int? TopCount { get; set; } [JsonPropertyName("BottomCount")] - public int BottomCount { get; set; } + public int? BottomCount { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Globals.cs b/Core/Models/Eft/Common/Globals.cs index 19d42d55..974329fd 100644 --- a/Core/Models/Eft/Common/Globals.cs +++ b/Core/Models/Eft/Common/Globals.cs @@ -7,4343 +7,4348 @@ using System.Text.Json.Serialization; public class Globals { - [JsonPropertyName("time")] - public double Time { get; set; } + [JsonPropertyName("time")] + public double? Time { get; set; } - [JsonPropertyName("config")] - public Config Configuration { get; set; } + [JsonPropertyName("config")] + public Config? Configuration { get; set; } - [JsonPropertyName("LocationInfection")] - public LocationInfection LocationInfection { get; set; } + [JsonPropertyName("LocationInfection")] + public LocationInfection? LocationInfection { get; set; } - [JsonPropertyName("bot_presets")] - public List BotPresets { get; set; } + [JsonPropertyName("bot_presets")] + public List? BotPresets { get; set; } - [JsonPropertyName("BotWeaponScatterings")] - public List BotWeaponScatterings { get; set; } + [JsonPropertyName("BotWeaponScatterings")] + public List? BotWeaponScatterings { get; set; } - [JsonPropertyName("ItemPresets")] - public Dictionary ItemPresets { get; set; } + [JsonPropertyName("ItemPresets")] + public Dictionary? ItemPresets { get; set; } } public class PlayerSettings { - [JsonPropertyName("BaseMaxMovementRolloff")] - public double BaseMaxMovementRolloff { get; set; } + [JsonPropertyName("BaseMaxMovementRolloff")] + public double? BaseMaxMovementRolloff { get; set; } - [JsonPropertyName("EnabledOcclusionDynamicRolloff")] - public bool IsEnabledOcclusionDynamicRolloff { get; set; } + [JsonPropertyName("EnabledOcclusionDynamicRolloff")] + public bool? IsEnabledOcclusionDynamicRolloff { get; set; } - [JsonPropertyName("IndoorRolloffMult")] - public double IndoorRolloffMultiplier { get; set; } + [JsonPropertyName("IndoorRolloffMult")] + public double? IndoorRolloffMultiplier { get; set; } - [JsonPropertyName("MinStepSoundRolloffMult")] - public double MinStepSoundRolloffMultiplier { get; set; } + [JsonPropertyName("MinStepSoundRolloffMult")] + public double? MinStepSoundRolloffMultiplier { get; set; } - [JsonPropertyName("MinStepSoundVolumeMult")] - public double MinStepSoundVolumeMultiplier { get; set; } + [JsonPropertyName("MinStepSoundVolumeMult")] + public double? MinStepSoundVolumeMultiplier { get; set; } - [JsonPropertyName("MovementRolloffMultipliers")] - public List MovementRolloffMultipliers { get; set; } + [JsonPropertyName("MovementRolloffMultipliers")] + public List? MovementRolloffMultipliers { get; set; } - [JsonPropertyName("OutdoorRolloffMult")] - public double OutdoorRolloffMultiplier { get; set; } + [JsonPropertyName("OutdoorRolloffMult")] + public double? OutdoorRolloffMultiplier { get; set; } } public class MovementRolloffMultiplier { - [JsonPropertyName("MovementState")] - public string MovementState { get; set; } + [JsonPropertyName("MovementState")] + public string? MovementState { get; set; } - [JsonPropertyName("RolloffMultiplier")] - public double RolloffMultiplier { get; set; } + [JsonPropertyName("RolloffMultiplier")] + public double? RolloffMultiplier { get; set; } } public class RadioBroadcastSettings { - [JsonPropertyName("EnabledBroadcast")] - public bool EnabledBroadcast { get; set; } + [JsonPropertyName("EnabledBroadcast")] + public bool? EnabledBroadcast { get; set; } - [JsonPropertyName("RadioStations")] - public List RadioStations { get; set; } + [JsonPropertyName("RadioStations")] + public List? RadioStations { get; set; } } public class RadioStation { - [JsonPropertyName("Enabled")] - public bool Enabled { get; set; } + [JsonPropertyName("Enabled")] + public bool? Enabled { get; set; } - [JsonPropertyName("Station")] - public string Station { get; set; } + [JsonPropertyName("Station")] + public string? Station { get; set; } } public class LocationInfection { - [JsonPropertyName("Interchange")] - public double Interchange { get; set; } + [JsonPropertyName("Interchange")] + public double? Interchange { get; set; } - [JsonPropertyName("Lighthouse")] - public double Lighthouse { get; set; } + [JsonPropertyName("Lighthouse")] + public double? Lighthouse { get; set; } - [JsonPropertyName("RezervBase")] - public double RezervBase { get; set; } + [JsonPropertyName("RezervBase")] + public double? RezervBase { get; set; } - [JsonPropertyName("Sandbox")] - public double Sandbox { get; set; } + [JsonPropertyName("Sandbox")] + public double? Sandbox { get; set; } - [JsonPropertyName("Shoreline")] - public double Shoreline { get; set; } + [JsonPropertyName("Shoreline")] + public double? Shoreline { get; set; } - [JsonPropertyName("TarkovStreets")] - public double TarkovStreets { get; set; } + [JsonPropertyName("TarkovStreets")] + public double? TarkovStreets { get; set; } - [JsonPropertyName("Woods")] - public double Woods { get; set; } + [JsonPropertyName("Woods")] + public double? Woods { get; set; } - [JsonPropertyName("bigmap")] - public double BigMap { get; set; } + [JsonPropertyName("bigmap")] + public double? BigMap { get; set; } - [JsonPropertyName("factory4")] - public double Factory4 { get; set; } + [JsonPropertyName("factory4")] + public double? Factory4 { get; set; } - [JsonPropertyName("laboratory")] - public double Laboratory { get; set; } + [JsonPropertyName("laboratory")] + public double? Laboratory { get; set; } } public class ArtilleryShelling { - [JsonPropertyName("ArtilleryMapsConfigs")] - public Dictionary ArtilleryMapsConfigs { get; set; } + [JsonPropertyName("ArtilleryMapsConfigs")] + public Dictionary? ArtilleryMapsConfigs { get; set; } - [JsonPropertyName("ProjectileExplosionParams")] - public ProjectileExplosionParams ProjectileExplosionParams { get; set; } + [JsonPropertyName("ProjectileExplosionParams")] + public ProjectileExplosionParams? ProjectileExplosionParams { get; set; } - [JsonPropertyName("MaxCalledShellingCount")] - public double MaxCalledShellingCount { get; set; } + [JsonPropertyName("MaxCalledShellingCount")] + public double? MaxCalledShellingCount { get; set; } } public class ArtilleryMapSettings { - [JsonPropertyName("PlanedShellingOn")] - public bool PlanedShellingOn { get; set; } + [JsonPropertyName("PlanedShellingOn")] + public bool? PlanedShellingOn { get; set; } - [JsonPropertyName("InitShellingTimer")] - public double InitShellingTimer { get; set; } + [JsonPropertyName("InitShellingTimer")] + public double? InitShellingTimer { get; set; } - [JsonPropertyName("BeforeShellingSignalTime")] - public double BeforeShellingSignalTime { get; set; } + [JsonPropertyName("BeforeShellingSignalTime")] + public double? BeforeShellingSignalTime { get; set; } - [JsonPropertyName("ShellingCount")] - public double ShellingCount { get; set; } + [JsonPropertyName("ShellingCount")] + public double? ShellingCount { get; set; } - [JsonPropertyName("ZonesInShelling")] - public double ZonesInShelling { get; set; } + [JsonPropertyName("ZonesInShelling")] + public double? ZonesInShelling { get; set; } - [JsonPropertyName("NewZonesForEachShelling")] - public bool NewZonesForEachShelling { get; set; } + [JsonPropertyName("NewZonesForEachShelling")] + public bool? NewZonesForEachShelling { get; set; } - [JsonPropertyName("InitCalledShellingTime")] - public double InitCalledShellingTime { get; set; } + [JsonPropertyName("InitCalledShellingTime")] + public double? InitCalledShellingTime { get; set; } - [JsonPropertyName("ShellingZones")] - public List ShellingZones { get; set; } + [JsonPropertyName("ShellingZones")] + public List? ShellingZones { get; set; } - [JsonPropertyName("Brigades")] - public List Brigades { get; set; } + [JsonPropertyName("Brigades")] + public List? Brigades { get; set; } - [JsonPropertyName("ArtilleryShellingAirDropSettings")] - public ArtilleryShellingAirDropSettings ArtilleryShellingAirDropSettings { get; set; } + [JsonPropertyName("ArtilleryShellingAirDropSettings")] + public ArtilleryShellingAirDropSettings? ArtilleryShellingAirDropSettings { get; set; } - [JsonPropertyName("PauseBetweenShellings")] - public XYZ PauseBetweenShellings { get; set; } + [JsonPropertyName("PauseBetweenShellings")] + public XYZ? PauseBetweenShellings { get; set; } } public class ShellingZone { - [JsonPropertyName("ID")] - public double ID { get; set; } + [JsonPropertyName("ID")] + public double? ID { get; set; } - [JsonPropertyName("PointsInShellings")] - public XYZ PointsInShellings { get; set; } + [JsonPropertyName("PointsInShellings")] + public XYZ? PointsInShellings { get; set; } - [JsonPropertyName("ShellingRounds")] - public double ShellingRounds { get; set; } + [JsonPropertyName("ShellingRounds")] + public double? ShellingRounds { get; set; } - [JsonPropertyName("ShotCount")] - public double ShotCount { get; set; } + [JsonPropertyName("ShotCount")] + public double? ShotCount { get; set; } - [JsonPropertyName("PauseBetweenRounds")] - public XYZ PauseBetweenRounds { get; set; } + [JsonPropertyName("PauseBetweenRounds")] + public XYZ? PauseBetweenRounds { get; set; } - [JsonPropertyName("PauseBetweenShots")] - public XYZ PauseBetweenShots { get; set; } + [JsonPropertyName("PauseBetweenShots")] + public XYZ? PauseBetweenShots { get; set; } - [JsonPropertyName("Center")] - public XYZ Center { get; set; } + [JsonPropertyName("Center")] + public XYZ? Center { get; set; } - [JsonPropertyName("Rotate")] - public double Rotate { get; set; } + [JsonPropertyName("Rotate")] + public double? Rotate { get; set; } - [JsonPropertyName("GridStep")] - public XYZ GridStep { get; set; } + [JsonPropertyName("GridStep")] + public XYZ? GridStep { get; set; } - [JsonPropertyName("Points")] - public XYZ Points { get; set; } + [JsonPropertyName("Points")] + public XYZ? Points { get; set; } - [JsonPropertyName("PointRadius")] - public double PointRadius { get; set; } + [JsonPropertyName("PointRadius")] + public double? PointRadius { get; set; } - [JsonPropertyName("ExplosionDistanceRange")] - public XYZ ExplosionDistanceRange { get; set; } + [JsonPropertyName("ExplosionDistanceRange")] + public XYZ? ExplosionDistanceRange { get; set; } - [JsonPropertyName("AlarmStages")] - public List AlarmStages { get; set; } + [JsonPropertyName("AlarmStages")] + public List? AlarmStages { get; set; } - [JsonPropertyName("BeforeShellingSignalTime")] - public double BeforeShellingSignalTime { get; set; } + [JsonPropertyName("BeforeShellingSignalTime")] + public double? BeforeShellingSignalTime { get; set; } - [JsonPropertyName("UsedInPlanedShelling")] - public bool UsedInPlanedShelling { get; set; } + [JsonPropertyName("UsedInPlanedShelling")] + public bool? UsedInPlanedShelling { get; set; } - [JsonPropertyName("UseInCalledShelling")] - public bool UseInCalledShelling { get; set; } + [JsonPropertyName("UseInCalledShelling")] + public bool? UseInCalledShelling { get; set; } - [JsonPropertyName("IsActive")] - public bool IsActive { get; set; } + [JsonPropertyName("IsActive")] + public bool? IsActive { get; set; } } public class AlarmStage { - [JsonPropertyName("Value")] - public Position Value { get; set; } + [JsonPropertyName("Value")] + public Position? Value { get; set; } } public class Brigade { - [JsonPropertyName("ID")] - public double Id { get; set; } + [JsonPropertyName("ID")] + public double? Id { get; set; } - [JsonPropertyName("ArtilleryGuns")] - public List ArtilleryGuns { get; set; } + [JsonPropertyName("ArtilleryGuns")] + public List? ArtilleryGuns { get; set; } } public class ArtilleryGun { - [JsonPropertyName("Position")] - public XYZ Position { get; set; } + [JsonPropertyName("Position")] + public XYZ? Position { get; set; } } public class ArtilleryShellingAirDropSettings { - [JsonPropertyName("UseAirDrop")] - public bool UseAirDrop { get; set; } + [JsonPropertyName("UseAirDrop")] + public bool? UseAirDrop { get; set; } - [JsonPropertyName("AirDropTime")] - public double AirDropTime { get; set; } + [JsonPropertyName("AirDropTime")] + public double? AirDropTime { get; set; } - [JsonPropertyName("AirDropPosition")] - public XYZ AirDropPosition { get; set; } + [JsonPropertyName("AirDropPosition")] + public XYZ? AirDropPosition { get; set; } - [JsonPropertyName("LootTemplateId")] - public string LootTemplateId { get; set; } + [JsonPropertyName("LootTemplateId")] + public string? LootTemplateId { get; set; } } public class ProjectileExplosionParams { - [JsonPropertyName("Blindness")] - public XYZ Blindness { get; set; } + [JsonPropertyName("Blindness")] + public XYZ? Blindness { get; set; } - [JsonPropertyName("Contusion")] - public XYZ Contusion { get; set; } + [JsonPropertyName("Contusion")] + public XYZ? Contusion { get; set; } - [JsonPropertyName("ArmorDistanceDistanceDamage")] - public XYZ ArmorDistanceDistanceDamage { get; set; } + [JsonPropertyName("ArmorDistanceDistanceDamage")] + public XYZ? ArmorDistanceDistanceDamage { get; set; } - [JsonPropertyName("MinExplosionDistance")] - public float MinExplosionDistance { get; set; } + [JsonPropertyName("MinExplosionDistance")] + public float? MinExplosionDistance { get; set; } - [JsonPropertyName("MaxExplosionDistance")] - public float MaxExplosionDistance { get; set; } + [JsonPropertyName("MaxExplosionDistance")] + public float? MaxExplosionDistance { get; set; } - [JsonPropertyName("FragmentsCount")] - public double FragmentsCount { get; set; } + [JsonPropertyName("FragmentsCount")] + public double? FragmentsCount { get; set; } - [JsonPropertyName("Strength")] - public float Strength { get; set; } + [JsonPropertyName("Strength")] + public float? Strength { get; set; } - [JsonPropertyName("ArmorDamage")] - public float ArmorDamage { get; set; } + [JsonPropertyName("ArmorDamage")] + public float? ArmorDamage { get; set; } - [JsonPropertyName("StaminaBurnRate")] - public float StaminaBurnRate { get; set; } + [JsonPropertyName("StaminaBurnRate")] + public float? StaminaBurnRate { get; set; } - [JsonPropertyName("PenetrationPower")] - public float PenetrationPower { get; set; } + [JsonPropertyName("PenetrationPower")] + public float? PenetrationPower { get; set; } - [JsonPropertyName("DirectionalDamageAngle")] - public float DirectionalDamageAngle { get; set; } + [JsonPropertyName("DirectionalDamageAngle")] + public float? DirectionalDamageAngle { get; set; } - [JsonPropertyName("DirectionalDamageMultiplier")] - public float DirectionalDamageMultiplier { get; set; } + [JsonPropertyName("DirectionalDamageMultiplier")] + public float? DirectionalDamageMultiplier { get; set; } - [JsonPropertyName("FragmentType")] - public string FragmentType { get; set; } + [JsonPropertyName("FragmentType")] + public string? FragmentType { get; set; } - [JsonPropertyName("DeadlyDistance")] - public float DeadlyDistance { get; set; } + [JsonPropertyName("DeadlyDistance")] + public float? DeadlyDistance { get; set; } } public class Config { - [JsonPropertyName("ArtilleryShelling")] - public ArtilleryShelling ArtilleryShelling { get; set; } + [JsonPropertyName("ArtilleryShelling")] + public ArtilleryShelling? ArtilleryShelling { get; set; } - [JsonPropertyName("content")] - public Content Content { get; set; } + [JsonPropertyName("content")] + public Content? Content { get; set; } - [JsonPropertyName("AimPunchMagnitude")] - public double AimPunchMagnitude { get; set; } + [JsonPropertyName("AimPunchMagnitude")] + public double? AimPunchMagnitude { get; set; } - [JsonPropertyName("WeaponSkillProgressRate")] - public double WeaponSkillProgressRate { get; set; } + [JsonPropertyName("WeaponSkillProgressRate")] + public double? WeaponSkillProgressRate { get; set; } - [JsonPropertyName("SkillAtrophy")] - public bool SkillAtrophy { get; set; } + [JsonPropertyName("SkillAtrophy")] + public bool? SkillAtrophy { get; set; } - [JsonPropertyName("exp")] - public Exp Exp { get; set; } + [JsonPropertyName("exp")] + public Exp? Exp { get; set; } - [JsonPropertyName("t_base_looting")] - public double TBaseLooting { get; set; } + [JsonPropertyName("t_base_looting")] + public double? TBaseLooting { get; set; } - [JsonPropertyName("t_base_lockpicking")] - public double TBaseLockpicking { get; set; } + [JsonPropertyName("t_base_lockpicking")] + public double? TBaseLockpicking { get; set; } - [JsonPropertyName("armor")] - public Armor Armor { get; set; } + [JsonPropertyName("armor")] + public Armor? Armor { get; set; } - [JsonPropertyName("SessionsToShowHotKeys")] - public double SessionsToShowHotKeys { get; set; } + [JsonPropertyName("SessionsToShowHotKeys")] + public double? SessionsToShowHotKeys { get; set; } - [JsonPropertyName("MaxBotsAliveOnMap")] - public double MaxBotsAliveOnMap { get; set; } + [JsonPropertyName("MaxBotsAliveOnMap")] + public double? MaxBotsAliveOnMap { get; set; } - [JsonPropertyName("MaxBotsAliveOnMapPvE")] - public double MaxBotsAliveOnMapPvE { get; set; } + [JsonPropertyName("MaxBotsAliveOnMapPvE")] + public double? MaxBotsAliveOnMapPvE { get; set; } - [JsonPropertyName("RunddansSettings")] - public RunddansSettings RunddansSettings { get; set; } + [JsonPropertyName("RunddansSettings")] + public RunddansSettings? RunddansSettings { get; set; } - [JsonPropertyName("SavagePlayCooldown")] - public double SavagePlayCooldown { get; set; } + [JsonPropertyName("SavagePlayCooldown")] + public double? SavagePlayCooldown { get; set; } - [JsonPropertyName("SavagePlayCooldownNdaFree")] - public double SavagePlayCooldownNdaFree { get; set; } + [JsonPropertyName("SavagePlayCooldownNdaFree")] + public double? SavagePlayCooldownNdaFree { get; set; } - [JsonPropertyName("SeasonActivity")] - public SeasonActivity SeasonActivity { get; set; } + [JsonPropertyName("SeasonActivity")] + public SeasonActivity? SeasonActivity { get; set; } - [JsonPropertyName("MarksmanAccuracy")] - public double MarksmanAccuracy { get; set; } + [JsonPropertyName("MarksmanAccuracy")] + public double? MarksmanAccuracy { get; set; } - [JsonPropertyName("SavagePlayCooldownDevelop")] - public double SavagePlayCooldownDevelop { get; set; } + [JsonPropertyName("SavagePlayCooldownDevelop")] + public double? SavagePlayCooldownDevelop { get; set; } - [JsonPropertyName("TODSkyDate")] - public string TODSkyDate { get; set; } + [JsonPropertyName("TODSkyDate")] + public string? TODSkyDate { get; set; } - [JsonPropertyName("Mastering")] - public Mastering[] Mastering { get; set; } + [JsonPropertyName("Mastering")] + public Mastering[] Mastering { get; set; } - [JsonPropertyName("GlobalItemPriceModifier")] - public double GlobalItemPriceModifier { get; set; } + [JsonPropertyName("GlobalItemPriceModifier")] + public double? GlobalItemPriceModifier { get; set; } - [JsonPropertyName("TradingUnlimitedItems")] - public bool TradingUnlimitedItems { get; set; } + [JsonPropertyName("TradingUnlimitedItems")] + public bool? TradingUnlimitedItems { get; set; } - [JsonPropertyName("TradingUnsetPersonalLimitItems")] - public bool TradingUnsetPersonalLimitItems { get; set; } + [JsonPropertyName("TradingUnsetPersonalLimitItems")] + public bool? TradingUnsetPersonalLimitItems { get; set; } - [JsonPropertyName("TransitSettings")] - public TransitSettings TransitSettings { get; set; } + [JsonPropertyName("TransitSettings")] + public TransitSettings? TransitSettings { get; set; } - [JsonPropertyName("TripwiresSettings")] - public TripwiresSettings TripwiresSettings { get; set; } + [JsonPropertyName("TripwiresSettings")] + public TripwiresSettings? TripwiresSettings { get; set; } - [JsonPropertyName("MaxLoyaltyLevelForAll")] - public bool MaxLoyaltyLevelForAll { get; set; } + [JsonPropertyName("MaxLoyaltyLevelForAll")] + public bool? MaxLoyaltyLevelForAll { get; set; } - [JsonPropertyName("MountingSettings")] - public MountingSettings MountingSettings { get; set; } + [JsonPropertyName("MountingSettings")] + public MountingSettings? MountingSettings { get; set; } - [JsonPropertyName("GlobalLootChanceModifier")] - public double GlobalLootChanceModifier { get; set; } + [JsonPropertyName("GlobalLootChanceModifier")] + public double? GlobalLootChanceModifier { get; set; } - [JsonPropertyName("GlobalLootChanceModifierPvE")] - public double GlobalLootChanceModifierPvE { get; set; } + [JsonPropertyName("GlobalLootChanceModifierPvE")] + public double? GlobalLootChanceModifierPvE { get; set; } - [JsonPropertyName("GraphicSettings")] - public GraphicSettings GraphicSettings { get; set; } + [JsonPropertyName("GraphicSettings")] + public GraphicSettings? GraphicSettings { get; set; } - [JsonPropertyName("TimeBeforeDeploy")] - public double TimeBeforeDeploy { get; set; } + [JsonPropertyName("TimeBeforeDeploy")] + public double? TimeBeforeDeploy { get; set; } - [JsonPropertyName("TimeBeforeDeployLocal")] - public double TimeBeforeDeployLocal { get; set; } + [JsonPropertyName("TimeBeforeDeployLocal")] + public double? TimeBeforeDeployLocal { get; set; } - [JsonPropertyName("TradingSetting")] - public double TradingSetting { get; set; } + [JsonPropertyName("TradingSetting")] + public double? TradingSetting { get; set; } - [JsonPropertyName("TradingSettings")] - public TradingSettings TradingSettings { get; set; } + [JsonPropertyName("TradingSettings")] + public TradingSettings? TradingSettings { get; set; } - [JsonPropertyName("ItemsCommonSettings")] - public ItemsCommonSettings ItemsCommonSettings { get; set; } + [JsonPropertyName("ItemsCommonSettings")] + public ItemsCommonSettings? ItemsCommonSettings { get; set; } - [JsonPropertyName("LoadTimeSpeedProgress")] - public double LoadTimeSpeedProgress { get; set; } + [JsonPropertyName("LoadTimeSpeedProgress")] + public double? LoadTimeSpeedProgress { get; set; } - [JsonPropertyName("BaseLoadTime")] - public double BaseLoadTime { get; set; } + [JsonPropertyName("BaseLoadTime")] + public double? BaseLoadTime { get; set; } - [JsonPropertyName("BaseUnloadTime")] - public double BaseUnloadTime { get; set; } + [JsonPropertyName("BaseUnloadTime")] + public double? BaseUnloadTime { get; set; } - [JsonPropertyName("BaseCheckTime")] - public double BaseCheckTime { get; set; } + [JsonPropertyName("BaseCheckTime")] + public double? BaseCheckTime { get; set; } - [JsonPropertyName("BluntDamageReduceFromSoftArmorMod")] - public double BluntDamageReduceFromSoftArmorMod { get; set; } + [JsonPropertyName("BluntDamageReduceFromSoftArmorMod")] + public double? BluntDamageReduceFromSoftArmorMod { get; set; } - [JsonPropertyName("BodyPartColliderSettings")] - public BodyPartColliderSettings BodyPartColliderSettings { get; set; } + [JsonPropertyName("BodyPartColliderSettings")] + public BodyPartColliderSettings? BodyPartColliderSettings { get; set; } - [JsonPropertyName("Customization")] - public Customization Customization { get; set; } + [JsonPropertyName("Customization")] + public Customization? Customization { get; set; } - [JsonPropertyName("UncheckOnShot")] - public bool UncheckOnShot { get; set; } + [JsonPropertyName("UncheckOnShot")] + public bool? UncheckOnShot { get; set; } - [JsonPropertyName("BotsEnabled")] - public bool BotsEnabled { get; set; } + [JsonPropertyName("BotsEnabled")] + public bool? BotsEnabled { get; set; } - [JsonPropertyName("BufferZone")] - public BufferZone BufferZone { get; set; } + [JsonPropertyName("BufferZone")] + public BufferZone? BufferZone { get; set; } - [JsonPropertyName("Airdrop")] - public AirdropGlobalSettings Airdrop { get; set; } + [JsonPropertyName("Airdrop")] + public AirdropGlobalSettings? Airdrop { get; set; } - [JsonPropertyName("ArmorMaterials")] - public ArmorMaterials ArmorMaterials { get; set; } + [JsonPropertyName("ArmorMaterials")] + public ArmorMaterials? ArmorMaterials { get; set; } - [JsonPropertyName("ArenaEftTransferSettings")] - public ArenaEftTransferSettings - ArenaEftTransferSettings - { - get; - set; - } // TODO: this needs to be looked into, there are two types further down commented out with the same name + [JsonPropertyName("ArenaEftTransferSettings")] + public ArenaEftTransferSettings + ArenaEftTransferSettings + { + get; + set; + } // TODO: this needs to be looked into, there are two types further down commented out with the same name - [JsonPropertyName("KarmaCalculationSettings")] - public KarmaCalculationSettings KarmaCalculationSettings { get; set; } + [JsonPropertyName("KarmaCalculationSettings")] + public KarmaCalculationSettings? KarmaCalculationSettings { get; set; } - [JsonPropertyName("LegsOverdamage")] - public double LegsOverdamage { get; set; } + [JsonPropertyName("LegsOverdamage")] + public double? LegsOverdamage { get; set; } - [JsonPropertyName("HandsOverdamage")] - public double HandsOverdamage { get; set; } + [JsonPropertyName("HandsOverdamage")] + public double? HandsOverdamage { get; set; } - [JsonPropertyName("StomachOverdamage")] - public double StomachOverdamage { get; set; } + [JsonPropertyName("StomachOverdamage")] + public double? StomachOverdamage { get; set; } - [JsonPropertyName("Health")] - public Health Health { get; set; } + [JsonPropertyName("Health")] + public Health? Health { get; set; } - [JsonPropertyName("rating")] - public Rating Rating { get; set; } + [JsonPropertyName("rating")] + public Rating? Rating { get; set; } - [JsonPropertyName("tournament")] - public Tournament Tournament { get; set; } + [JsonPropertyName("tournament")] + public Tournament? Tournament { get; set; } - [JsonPropertyName("QuestSettings")] - public QuestSettings QuestSettings { get; set; } + [JsonPropertyName("QuestSettings")] + public QuestSettings? QuestSettings { get; set; } - [JsonPropertyName("RagFair")] - public RagFair RagFair { get; set; } + [JsonPropertyName("RagFair")] + public RagFair? RagFair { get; set; } - [JsonPropertyName("handbook")] - public Handbook Handbook { get; set; } + [JsonPropertyName("handbook")] + public Handbook? Handbook { get; set; } - [JsonPropertyName("FractureCausedByFalling")] - public Probability FractureCausedByFalling { get; set; } + [JsonPropertyName("FractureCausedByFalling")] + public Probability? FractureCausedByFalling { get; set; } - [JsonPropertyName("FractureCausedByBulletHit")] - public Probability FractureCausedByBulletHit { get; set; } + [JsonPropertyName("FractureCausedByBulletHit")] + public Probability? FractureCausedByBulletHit { get; set; } - [JsonPropertyName("WAVE_COEF_LOW")] - public double WaveCoefficientLow { get; set; } + [JsonPropertyName("WAVE_COEF_LOW")] + public double? WaveCoefficientLow { get; set; } - [JsonPropertyName("WAVE_COEF_MID")] - public double WaveCoefficientMid { get; set; } + [JsonPropertyName("WAVE_COEF_MID")] + public double? WaveCoefficientMid { get; set; } - [JsonPropertyName("WAVE_COEF_HIGH")] - public double WaveCoefficientHigh { get; set; } + [JsonPropertyName("WAVE_COEF_HIGH")] + public double? WaveCoefficientHigh { get; set; } - [JsonPropertyName("WAVE_COEF_HORDE")] - public double WaveCoefficientHorde { get; set; } + [JsonPropertyName("WAVE_COEF_HORDE")] + public double? WaveCoefficientHorde { get; set; } - [JsonPropertyName("Stamina")] - public Stamina Stamina { get; set; } + [JsonPropertyName("Stamina")] + public Stamina? Stamina { get; set; } - [JsonPropertyName("StaminaRestoration")] - public StaminaRestoration StaminaRestoration { get; set; } + [JsonPropertyName("StaminaRestoration")] + public StaminaRestoration? StaminaRestoration { get; set; } - [JsonPropertyName("StaminaDrain")] - public StaminaDrain StaminaDrain { get; set; } + [JsonPropertyName("StaminaDrain")] + public StaminaDrain? StaminaDrain { get; set; } - [JsonPropertyName("RequirementReferences")] - public RequirementReferences RequirementReferences { get; set; } + [JsonPropertyName("RequirementReferences")] + public RequirementReferences? RequirementReferences { get; set; } - [JsonPropertyName("RestrictionsInRaid")] - public RestrictionsInRaid[] RestrictionsInRaid { get; set; } + [JsonPropertyName("RestrictionsInRaid")] + public RestrictionsInRaid[] RestrictionsInRaid { get; set; } - [JsonPropertyName("SkillMinEffectiveness")] - public double SkillMinEffectiveness { get; set; } + [JsonPropertyName("SkillMinEffectiveness")] + public double? SkillMinEffectiveness { get; set; } - [JsonPropertyName("SkillFatiguePerPoint")] - public double SkillFatiguePerPoint { get; set; } + [JsonPropertyName("SkillFatiguePerPoint")] + public double? SkillFatiguePerPoint { get; set; } - [JsonPropertyName("SkillFreshEffectiveness")] - public double SkillFreshEffectiveness { get; set; } + [JsonPropertyName("SkillFreshEffectiveness")] + public double? SkillFreshEffectiveness { get; set; } - [JsonPropertyName("SkillFreshPoints")] - public double SkillFreshPoints { get; set; } + [JsonPropertyName("SkillFreshPoints")] + public double? SkillFreshPoints { get; set; } - [JsonPropertyName("SkillPointsBeforeFatigue")] - public double SkillPointsBeforeFatigue { get; set; } + [JsonPropertyName("SkillPointsBeforeFatigue")] + public double? SkillPointsBeforeFatigue { get; set; } - [JsonPropertyName("SkillFatigueReset")] - public double SkillFatigueReset { get; set; } + [JsonPropertyName("SkillFatigueReset")] + public double? SkillFatigueReset { get; set; } - [JsonPropertyName("DiscardLimitsEnabled")] - public bool DiscardLimitsEnabled { get; set; } + [JsonPropertyName("DiscardLimitsEnabled")] + public bool? DiscardLimitsEnabled { get; set; } - [JsonPropertyName("EnvironmentSettings")] - public EnvironmentSetting2 EnvironmentSettings { get; set; } + [JsonPropertyName("EnvironmentSettings")] + public EnvironmentSetting2? EnvironmentSettings { get; set; } - [JsonPropertyName("EventSettings")] - public EventSettings EventSettings { get; set; } + [JsonPropertyName("EventSettings")] + public EventSettings? EventSettings { get; set; } - [JsonPropertyName("FavoriteItemsSettings")] - public FavoriteItemsSettings FavoriteItemsSettings { get; set; } + [JsonPropertyName("FavoriteItemsSettings")] + public FavoriteItemsSettings? FavoriteItemsSettings { get; set; } - [JsonPropertyName("VaultingSettings")] - public VaultingSettings VaultingSettings { get; set; } + [JsonPropertyName("VaultingSettings")] + public VaultingSettings? VaultingSettings { get; set; } - [JsonPropertyName("BTRSettings")] - public BTRSettings BTRSettings { get; set; } + [JsonPropertyName("BTRSettings")] + public BTRSettings? BTRSettings { get; set; } - [JsonPropertyName("EventType")] - public string[] EventType { get; set; } + [JsonPropertyName("EventType")] + public string[] EventType { get; set; } - [JsonPropertyName("WalkSpeed")] - public XYZ WalkSpeed { get; set; } + [JsonPropertyName("WalkSpeed")] + public XYZ? WalkSpeed { get; set; } - [JsonPropertyName("SprintSpeed")] - public XYZ SprintSpeed { get; set; } + [JsonPropertyName("SprintSpeed")] + public XYZ? SprintSpeed { get; set; } - [JsonPropertyName("SquadSettings")] - public SquadSettings SquadSettings { get; set; } + [JsonPropertyName("SquadSettings")] + public SquadSettings? SquadSettings { get; set; } - [JsonPropertyName("SkillEnduranceWeightThreshold")] - public double SkillEnduranceWeightThreshold { get; set; } + [JsonPropertyName("SkillEnduranceWeightThreshold")] + public double? SkillEnduranceWeightThreshold { get; set; } - [JsonPropertyName("TeamSearchingTimeout")] - public double TeamSearchingTimeout { get; set; } + [JsonPropertyName("TeamSearchingTimeout")] + public double? TeamSearchingTimeout { get; set; } - [JsonPropertyName("Insurance")] - public Insurance Insurance { get; set; } + [JsonPropertyName("Insurance")] + public Insurance? Insurance { get; set; } - [JsonPropertyName("SkillExpPerLevel")] - public double SkillExpPerLevel { get; set; } + [JsonPropertyName("SkillExpPerLevel")] + public double? SkillExpPerLevel { get; set; } - [JsonPropertyName("GameSearchingTimeout")] - public double GameSearchingTimeout { get; set; } + [JsonPropertyName("GameSearchingTimeout")] + public double? GameSearchingTimeout { get; set; } - [JsonPropertyName("WallContusionAbsorption")] - public XYZ WallContusionAbsorption { get; set; } + [JsonPropertyName("WallContusionAbsorption")] + public XYZ? WallContusionAbsorption { get; set; } - [JsonPropertyName("WeaponFastDrawSettings")] - public WeaponFastDrawSettings WeaponFastDrawSettings { get; set; } + [JsonPropertyName("WeaponFastDrawSettings")] + public WeaponFastDrawSettings? WeaponFastDrawSettings { get; set; } - [JsonPropertyName("SkillsSettings")] - public SkillsSettings SkillsSettings { get; set; } + [JsonPropertyName("SkillsSettings")] + public SkillsSettings? SkillsSettings { get; set; } - [JsonPropertyName("AzimuthPanelShowsPlayerOrientation")] - public bool AzimuthPanelShowsPlayerOrientation { get; set; } + [JsonPropertyName("AzimuthPanelShowsPlayerOrientation")] + public bool? AzimuthPanelShowsPlayerOrientation { get; set; } - [JsonPropertyName("Aiming")] - public Aiming Aiming { get; set; } + [JsonPropertyName("Aiming")] + public Aiming? Aiming { get; set; } - [JsonPropertyName("Malfunction")] - public Malfunction Malfunction { get; set; } + [JsonPropertyName("Malfunction")] + public Malfunction? Malfunction { get; set; } - [JsonPropertyName("Overheat")] - public Overheat Overheat { get; set; } + [JsonPropertyName("Overheat")] + public Overheat? Overheat { get; set; } - [JsonPropertyName("FenceSettings")] - public FenceSettings FenceSettings { get; set; } + [JsonPropertyName("FenceSettings")] + public FenceSettings? FenceSettings { get; set; } - [JsonPropertyName("TestValue")] - public double TestValue { get; set; } + [JsonPropertyName("TestValue")] + public double? TestValue { get; set; } - [JsonPropertyName("Inertia")] - public Inertia Inertia { get; set; } + [JsonPropertyName("Inertia")] + public Inertia? Inertia { get; set; } - [JsonPropertyName("Ballistic")] - public Ballistic Ballistic { get; set; } + [JsonPropertyName("Ballistic")] + public Ballistic? Ballistic { get; set; } - [JsonPropertyName("RepairSettings")] - public RepairSettings RepairSettings { get; set; } - - [JsonPropertyName("AudioSettings")] - public AudioSettings AudioSettings { get; set; } - - public CoopSettings CoopSettings { get; set; } - - public PveSettings PveSettings { get; set; } + [JsonPropertyName("RepairSettings")] + public RepairSettings? RepairSettings { get; set; } + + [JsonPropertyName("AudioSettings")] + public AudioSettings? AudioSettings { get; set; } + + public CoopSettings? CoopSettings { get; set; } + + public PveSettings? PveSettings { get; set; } } public class PveSettings { - public List AvailableVersions { get; set; } - public bool ModeEnabled { get; set; } + public List? AvailableVersions { get; set; } + public bool? ModeEnabled { get; set; } } public class CoopSettings { - public List AvailableVersions { get; set; } + public List? AvailableVersions { get; set; } } public class RunddansSettings { - [JsonPropertyName("accessKeys")] - public List AccessKeys { get; set; } + [JsonPropertyName("accessKeys")] + public List? AccessKeys { get; set; } - [JsonPropertyName("active")] - public bool Active { get; set; } + [JsonPropertyName("active")] + public bool? Active { get; set; } - [JsonPropertyName("activePVE")] - public bool ActivePVE { get; set; } + [JsonPropertyName("activePVE")] + public bool? ActivePVE { get; set; } - [JsonPropertyName("applyFrozenEverySec")] - public double ApplyFrozenEverySec { get; set; } + [JsonPropertyName("applyFrozenEverySec")] + public double? ApplyFrozenEverySec { get; set; } - [JsonPropertyName("consumables")] - public List Consumables { get; set; } + [JsonPropertyName("consumables")] + public List? Consumables { get; set; } - [JsonPropertyName("drunkImmunitySec")] - public double DrunkImmunitySec { get; set; } + [JsonPropertyName("drunkImmunitySec")] + public double? DrunkImmunitySec { get; set; } - [JsonPropertyName("durability")] - public XY Durability { get; set; } + [JsonPropertyName("durability")] + public XY? Durability { get; set; } - [JsonPropertyName("fireDistanceToHeat")] - public double FireDistanceToHeat { get; set; } + [JsonPropertyName("fireDistanceToHeat")] + public double? FireDistanceToHeat { get; set; } - [JsonPropertyName("grenadeDistanceToBreak")] - public double GrenadeDistanceToBreak { get; set; } + [JsonPropertyName("grenadeDistanceToBreak")] + public double? GrenadeDistanceToBreak { get; set; } - [JsonPropertyName("interactionDistance")] - public double InteractionDistance { get; set; } + [JsonPropertyName("interactionDistance")] + public double? InteractionDistance { get; set; } - [JsonPropertyName("knifeCritChanceToBreak")] - public double KnifeCritChanceToBreak { get; set; } + [JsonPropertyName("knifeCritChanceToBreak")] + public double? KnifeCritChanceToBreak { get; set; } - [JsonPropertyName("locations")] - public List Locations { get; set; } + [JsonPropertyName("locations")] + public List? Locations { get; set; } - [JsonPropertyName("multitoolRepairSec")] - public double MultitoolRepairSec { get; set; } + [JsonPropertyName("multitoolRepairSec")] + public double? MultitoolRepairSec { get; set; } - [JsonPropertyName("nonExitsLocations")] - public List NonExitsLocations { get; set; } + [JsonPropertyName("nonExitsLocations")] + public List? NonExitsLocations { get; set; } - [JsonPropertyName("rainForFrozen")] - public double RainForFrozen { get; set; } + [JsonPropertyName("rainForFrozen")] + public double? RainForFrozen { get; set; } - [JsonPropertyName("repairSec")] - public double RepairSec { get; set; } + [JsonPropertyName("repairSec")] + public double? RepairSec { get; set; } - [JsonPropertyName("secToBreak")] - public XY SecToBreak { get; set; } + [JsonPropertyName("secToBreak")] + public XY? SecToBreak { get; set; } - [JsonPropertyName("sleighLocations")] - public List SleighLocations { get; set; } + [JsonPropertyName("sleighLocations")] + public List? SleighLocations { get; set; } } public class SeasonActivity { - [JsonPropertyName("InfectionHalloween")] - public SeasonActivityHalloween InfectionHalloween { get; set; } + [JsonPropertyName("InfectionHalloween")] + public SeasonActivityHalloween? InfectionHalloween { get; set; } } public class SeasonActivityHalloween { - [JsonPropertyName("DisplayUIEnabled")] - public bool DisplayUIEnabled { get; set; } + [JsonPropertyName("DisplayUIEnabled")] + public bool? DisplayUIEnabled { get; set; } - [JsonPropertyName("Enabled")] - public bool Enabled { get; set; } + [JsonPropertyName("Enabled")] + public bool? Enabled { get; set; } - [JsonPropertyName("ZombieBleedMul")] - public double ZombieBleedMul { get; set; } + [JsonPropertyName("ZombieBleedMul")] + public double? ZombieBleedMul { get; set; } } public class EnvironmentSetting2 { - public EnvironmentUIData EnvironmentUIData { get; set; } + public EnvironmentUIData? EnvironmentUIData { get; set; } } public class EnvironmentUIData { - public string[] TheUnheardEditionEnvironmentUiType { get; set; } + public string[] TheUnheardEditionEnvironmentUiType { get; set; } } public class BodyPartColliderSettings { - public BodyPartColliderPart BackHead { get; set; } - public BodyPartColliderPart Ears { get; set; } - public BodyPartColliderPart Eyes { get; set; } - public BodyPartColliderPart HeadCommon { get; set; } - public BodyPartColliderPart Jaw { get; set; } - public BodyPartColliderPart LeftCalf { get; set; } - public BodyPartColliderPart LeftForearm { get; set; } - public BodyPartColliderPart LeftSideChestDown { get; set; } - public BodyPartColliderPart LeftSideChestUp { get; set; } - public BodyPartColliderPart LeftThigh { get; set; } - public BodyPartColliderPart LeftUpperArm { get; set; } - public BodyPartColliderPart NeckBack { get; set; } - public BodyPartColliderPart NeckFront { get; set; } - public BodyPartColliderPart ParietalHead { get; set; } - public BodyPartColliderPart Pelvis { get; set; } - public BodyPartColliderPart PelvisBack { get; set; } - public BodyPartColliderPart RibcageLow { get; set; } - public BodyPartColliderPart RibcageUp { get; set; } - public BodyPartColliderPart RightCalf { get; set; } - public BodyPartColliderPart RightForearm { get; set; } - public BodyPartColliderPart RightSideChestDown { get; set; } - public BodyPartColliderPart RightSideChestUp { get; set; } - public BodyPartColliderPart RightThigh { get; set; } - public BodyPartColliderPart RightUpperArm { get; set; } - public BodyPartColliderPart SpineDown { get; set; } - public BodyPartColliderPart SpineTop { get; set; } + public BodyPartColliderPart? BackHead { get; set; } + public BodyPartColliderPart? Ears { get; set; } + public BodyPartColliderPart? Eyes { get; set; } + public BodyPartColliderPart? HeadCommon { get; set; } + public BodyPartColliderPart? Jaw { get; set; } + public BodyPartColliderPart? LeftCalf { get; set; } + public BodyPartColliderPart? LeftForearm { get; set; } + public BodyPartColliderPart? LeftSideChestDown { get; set; } + public BodyPartColliderPart? LeftSideChestUp { get; set; } + public BodyPartColliderPart? LeftThigh { get; set; } + public BodyPartColliderPart? LeftUpperArm { get; set; } + public BodyPartColliderPart? NeckBack { get; set; } + public BodyPartColliderPart? NeckFront { get; set; } + public BodyPartColliderPart? ParietalHead { get; set; } + public BodyPartColliderPart? Pelvis { get; set; } + public BodyPartColliderPart? PelvisBack { get; set; } + public BodyPartColliderPart? RibcageLow { get; set; } + public BodyPartColliderPart? RibcageUp { get; set; } + public BodyPartColliderPart? RightCalf { get; set; } + public BodyPartColliderPart? RightForearm { get; set; } + public BodyPartColliderPart? RightSideChestDown { get; set; } + public BodyPartColliderPart? RightSideChestUp { get; set; } + public BodyPartColliderPart? RightThigh { get; set; } + public BodyPartColliderPart? RightUpperArm { get; set; } + public BodyPartColliderPart? SpineDown { get; set; } + public BodyPartColliderPart? SpineTop { get; set; } } public class BodyPartColliderPart { - [JsonPropertyName("PenetrationChance")] - public double PenetrationChance { get; set; } + [JsonPropertyName("PenetrationChance")] + public double? PenetrationChance { get; set; } - [JsonPropertyName("PenetrationDamageMod")] - public double PenetrationDamageMod { get; set; } + [JsonPropertyName("PenetrationDamageMod")] + public double? PenetrationDamageMod { get; set; } - [JsonPropertyName("PenetrationLevel")] - public double PenetrationLevel { get; set; } + [JsonPropertyName("PenetrationLevel")] + public double? PenetrationLevel { get; set; } } public class WeaponFastDrawSettings { - [JsonPropertyName("HandShakeCurveFrequency")] - public double HandShakeCurveFrequency { get; set; } + [JsonPropertyName("HandShakeCurveFrequency")] + public double? HandShakeCurveFrequency { get; set; } - [JsonPropertyName("HandShakeCurveIntensity")] - public double HandShakeCurveIntensity { get; set; } + [JsonPropertyName("HandShakeCurveIntensity")] + public double? HandShakeCurveIntensity { get; set; } - [JsonPropertyName("HandShakeMaxDuration")] - public double HandShakeMaxDuration { get; set; } + [JsonPropertyName("HandShakeMaxDuration")] + public double? HandShakeMaxDuration { get; set; } - [JsonPropertyName("HandShakeTremorIntensity")] - public double HandShakeTremorIntensity { get; set; } + [JsonPropertyName("HandShakeTremorIntensity")] + public double? HandShakeTremorIntensity { get; set; } - [JsonPropertyName("WeaponFastSwitchMaxSpeedMult")] - public double WeaponFastSwitchMaxSpeedMult { get; set; } + [JsonPropertyName("WeaponFastSwitchMaxSpeedMult")] + public double? WeaponFastSwitchMaxSpeedMult { get; set; } - [JsonPropertyName("WeaponFastSwitchMinSpeedMult")] - public double WeaponFastSwitchMinSpeedMult { get; set; } + [JsonPropertyName("WeaponFastSwitchMinSpeedMult")] + public double? WeaponFastSwitchMinSpeedMult { get; set; } - [JsonPropertyName("WeaponPistolFastSwitchMaxSpeedMult")] - public double WeaponPistolFastSwitchMaxSpeedMult { get; set; } + [JsonPropertyName("WeaponPistolFastSwitchMaxSpeedMult")] + public double? WeaponPistolFastSwitchMaxSpeedMult { get; set; } - [JsonPropertyName("WeaponPistolFastSwitchMinSpeedMult")] - public double WeaponPistolFastSwitchMinSpeedMult { get; set; } + [JsonPropertyName("WeaponPistolFastSwitchMinSpeedMult")] + public double? WeaponPistolFastSwitchMinSpeedMult { get; set; } } public class EventSettings { - [JsonPropertyName("EventActive")] - public bool EventActive { get; set; } + [JsonPropertyName("EventActive")] + public bool? EventActive { get; set; } - [JsonPropertyName("EventTime")] - public double EventTime { get; set; } + [JsonPropertyName("EventTime")] + public double? EventTime { get; set; } - [JsonPropertyName("EventWeather")] - public EventWeather EventWeather { get; set; } + [JsonPropertyName("EventWeather")] + public EventWeather? EventWeather { get; set; } - [JsonPropertyName("ExitTimeMultiplier")] - public double ExitTimeMultiplier { get; set; } + [JsonPropertyName("ExitTimeMultiplier")] + public double? ExitTimeMultiplier { get; set; } - [JsonPropertyName("StaminaMultiplier")] - public double StaminaMultiplier { get; set; } + [JsonPropertyName("StaminaMultiplier")] + public double? StaminaMultiplier { get; set; } - [JsonPropertyName("SummonFailedWeather")] - public EventWeather SummonFailedWeather { get; set; } + [JsonPropertyName("SummonFailedWeather")] + public EventWeather? SummonFailedWeather { get; set; } - [JsonPropertyName("SummonSuccessWeather")] - public EventWeather SummonSuccessWeather { get; set; } + [JsonPropertyName("SummonSuccessWeather")] + public EventWeather? SummonSuccessWeather { get; set; } - [JsonPropertyName("WeatherChangeTime")] - public double WeatherChangeTime { get; set; } + [JsonPropertyName("WeatherChangeTime")] + public double? WeatherChangeTime { get; set; } } public class EventWeather { - [JsonPropertyName("Cloudness")] - public double Cloudness { get; set; } + [JsonPropertyName("Cloudness")] + public double? Cloudness { get; set; } - [JsonPropertyName("Hour")] - public double Hour { get; set; } + [JsonPropertyName("Hour")] + public double? Hour { get; set; } - [JsonPropertyName("Minute")] - public double Minute { get; set; } + [JsonPropertyName("Minute")] + public double? Minute { get; set; } - [JsonPropertyName("Rain")] - public double Rain { get; set; } + [JsonPropertyName("Rain")] + public double? Rain { get; set; } - [JsonPropertyName("RainRandomness")] - public double RainRandomness { get; set; } + [JsonPropertyName("RainRandomness")] + public double? RainRandomness { get; set; } - [JsonPropertyName("ScaterringFogDensity")] - public double ScaterringFogDensity { get; set; } + [JsonPropertyName("ScaterringFogDensity")] + public double? ScaterringFogDensity { get; set; } - [JsonPropertyName("TopWindDirection")] - public XYZ TopWindDirection { get; set; } + [JsonPropertyName("TopWindDirection")] + public XYZ? TopWindDirection { get; set; } - [JsonPropertyName("Wind")] - public double Wind { get; set; } + [JsonPropertyName("Wind")] + public double? Wind { get; set; } - [JsonPropertyName("WindDirection")] - public double WindDirection { get; set; } + [JsonPropertyName("WindDirection")] + public double? WindDirection { get; set; } } public class TransitSettings { - [JsonPropertyName("BearPriceMod")] - public double BearPriceMod { get; set; } + [JsonPropertyName("BearPriceMod")] + public double? BearPriceMod { get; set; } - [JsonPropertyName("ClearAllPlayerEffectsOnTransit")] - public bool ClearAllPlayerEffectsOnTransit { get; set; } + [JsonPropertyName("ClearAllPlayerEffectsOnTransit")] + public bool? ClearAllPlayerEffectsOnTransit { get; set; } - [JsonPropertyName("CoefficientDiscountCharisma")] - public double CoefficientDiscountCharisma { get; set; } + [JsonPropertyName("CoefficientDiscountCharisma")] + public double? CoefficientDiscountCharisma { get; set; } - [JsonPropertyName("DeliveryMinPrice")] - public double DeliveryMinPrice { get; set; } + [JsonPropertyName("DeliveryMinPrice")] + public double? DeliveryMinPrice { get; set; } - [JsonPropertyName("DeliveryPrice")] - public double DeliveryPrice { get; set; } + [JsonPropertyName("DeliveryPrice")] + public double? DeliveryPrice { get; set; } - [JsonPropertyName("ModDeliveryCost")] - public double ModDeliveryCost { get; set; } + [JsonPropertyName("ModDeliveryCost")] + public double? ModDeliveryCost { get; set; } - [JsonPropertyName("PercentageOfMissingEnergyRestore")] - public double PercentageOfMissingEnergyRestore { get; set; } + [JsonPropertyName("PercentageOfMissingEnergyRestore")] + public double? PercentageOfMissingEnergyRestore { get; set; } - [JsonPropertyName("PercentageOfMissingHealthRestore")] - public double PercentageOfMissingHealthRestore { get; set; } + [JsonPropertyName("PercentageOfMissingHealthRestore")] + public double? PercentageOfMissingHealthRestore { get; set; } - [JsonPropertyName("PercentageOfMissingWaterRestore")] - public double PercentageOfMissingWaterRestore { get; set; } + [JsonPropertyName("PercentageOfMissingWaterRestore")] + public double? PercentageOfMissingWaterRestore { get; set; } - [JsonPropertyName("RestoreHealthOnDestroyedParts")] - public bool RestoreHealthOnDestroyedParts { get; set; } + [JsonPropertyName("RestoreHealthOnDestroyedParts")] + public bool? RestoreHealthOnDestroyedParts { get; set; } - [JsonPropertyName("ScavPriceMod")] - public double ScavPriceMod { get; set; } + [JsonPropertyName("ScavPriceMod")] + public double? ScavPriceMod { get; set; } - [JsonPropertyName("UsecPriceMod")] - public double UsecPriceMod { get; set; } + [JsonPropertyName("UsecPriceMod")] + public double? UsecPriceMod { get; set; } - [JsonPropertyName("active")] - public bool Active { get; set; } + [JsonPropertyName("active")] + public bool? Active { get; set; } } public class TripwiresSettings { - [JsonPropertyName("CollisionCapsuleCheckCoef")] - public double CollisionCapsuleCheckCoef { get; set; } + [JsonPropertyName("CollisionCapsuleCheckCoef")] + public double? CollisionCapsuleCheckCoef { get; set; } - [JsonPropertyName("CollisionCapsuleRadius")] - public double CollisionCapsuleRadius { get; set; } + [JsonPropertyName("CollisionCapsuleRadius")] + public double? CollisionCapsuleRadius { get; set; } - [JsonPropertyName("DefuseTimeSeconds")] - public double DefuseTimeSeconds { get; set; } + [JsonPropertyName("DefuseTimeSeconds")] + public double? DefuseTimeSeconds { get; set; } - [JsonPropertyName("DestroyedSeconds")] - public double DestroyedSeconds { get; set; } + [JsonPropertyName("DestroyedSeconds")] + public double? DestroyedSeconds { get; set; } - [JsonPropertyName("GroundDotProductTolerance")] - public double GroundDotProductTolerance { get; set; } + [JsonPropertyName("GroundDotProductTolerance")] + public double? GroundDotProductTolerance { get; set; } - [JsonPropertyName("InertSeconds")] - public double InertSeconds { get; set; } + [JsonPropertyName("InertSeconds")] + public double? InertSeconds { get; set; } - [JsonPropertyName("InteractionSqrDistance")] - public double InteractionSqrDistance { get; set; } + [JsonPropertyName("InteractionSqrDistance")] + public double? InteractionSqrDistance { get; set; } - [JsonPropertyName("MaxHeightDifference")] - public double MaxHeightDifference { get; set; } + [JsonPropertyName("MaxHeightDifference")] + public double? MaxHeightDifference { get; set; } - [JsonPropertyName("MaxLength")] - public double MaxLength { get; set; } + [JsonPropertyName("MaxLength")] + public double? MaxLength { get; set; } - [JsonPropertyName("MaxPreviewLength")] - public double MaxPreviewLength { get; set; } + [JsonPropertyName("MaxPreviewLength")] + public double? MaxPreviewLength { get; set; } - [JsonPropertyName("MaxTripwireToPlayerDistance")] - public double MaxTripwireToPlayerDistance { get; set; } + [JsonPropertyName("MaxTripwireToPlayerDistance")] + public double? MaxTripwireToPlayerDistance { get; set; } - [JsonPropertyName("MinLength")] - public double MinLength { get; set; } + [JsonPropertyName("MinLength")] + public double? MinLength { get; set; } - [JsonPropertyName("MultitoolDefuseTimeSeconds")] - public double MultitoolDefuseTimeSeconds { get; set; } + [JsonPropertyName("MultitoolDefuseTimeSeconds")] + public double? MultitoolDefuseTimeSeconds { get; set; } - [JsonPropertyName("ShotSqrDistance")] - public double ShotSqrDistance { get; set; } + [JsonPropertyName("ShotSqrDistance")] + public double? ShotSqrDistance { get; set; } } public class MountingSettings { - [JsonPropertyName("MovementSettings")] - public MountingMovementSettings MovementSettings { get; set; } + [JsonPropertyName("MovementSettings")] + public MountingMovementSettings? MovementSettings { get; set; } - [JsonPropertyName("PointDetectionSettings")] - public MountingPointDetectionSettings PointDetectionSettings { get; set; } + [JsonPropertyName("PointDetectionSettings")] + public MountingPointDetectionSettings? PointDetectionSettings { get; set; } } public class MountingMovementSettings { - [JsonPropertyName("ApproachTime")] - public double ApproachTime { get; set; } + [JsonPropertyName("ApproachTime")] + public double? ApproachTime { get; set; } - [JsonPropertyName("ApproachTimeDeltaAngleModifier")] - public double ApproachTimeDeltaAngleModifier { get; set; } + [JsonPropertyName("ApproachTimeDeltaAngleModifier")] + public double? ApproachTimeDeltaAngleModifier { get; set; } - [JsonPropertyName("ExitTime")] - public double ExitTime { get; set; } + [JsonPropertyName("ExitTime")] + public double? ExitTime { get; set; } - [JsonPropertyName("MaxApproachTime")] - public double MaxApproachTime { get; set; } + [JsonPropertyName("MaxApproachTime")] + public double? MaxApproachTime { get; set; } - [JsonPropertyName("MaxPitchLimitExcess")] - public double MaxPitchLimitExcess { get; set; } + [JsonPropertyName("MaxPitchLimitExcess")] + public double? MaxPitchLimitExcess { get; set; } - [JsonPropertyName("MaxVerticalMountAngle")] - public double MaxVerticalMountAngle { get; set; } + [JsonPropertyName("MaxVerticalMountAngle")] + public double? MaxVerticalMountAngle { get; set; } - [JsonPropertyName("MaxYawLimitExcess")] - public double MaxYawLimitExcess { get; set; } + [JsonPropertyName("MaxYawLimitExcess")] + public double? MaxYawLimitExcess { get; set; } - [JsonPropertyName("MinApproachTime")] - public double MinApproachTime { get; set; } + [JsonPropertyName("MinApproachTime")] + public double? MinApproachTime { get; set; } - [JsonPropertyName("MountingCameraSpeed")] - public double MountingCameraSpeed { get; set; } + [JsonPropertyName("MountingCameraSpeed")] + public double? MountingCameraSpeed { get; set; } - [JsonPropertyName("MountingSwayFactorModifier")] - public double MountingSwayFactorModifier { get; set; } + [JsonPropertyName("MountingSwayFactorModifier")] + public double? MountingSwayFactorModifier { get; set; } - [JsonPropertyName("PitchLimitHorizontal")] - public XYZ PitchLimitHorizontal { get; set; } + [JsonPropertyName("PitchLimitHorizontal")] + public XYZ? PitchLimitHorizontal { get; set; } - [JsonPropertyName("PitchLimitHorizontalBipod")] - public XYZ PitchLimitHorizontalBipod { get; set; } + [JsonPropertyName("PitchLimitHorizontalBipod")] + public XYZ? PitchLimitHorizontalBipod { get; set; } - [JsonPropertyName("PitchLimitVertical")] - public XYZ PitchLimitVertical { get; set; } + [JsonPropertyName("PitchLimitVertical")] + public XYZ? PitchLimitVertical { get; set; } - [JsonPropertyName("RotationSpeedClamp")] - public double RotationSpeedClamp { get; set; } + [JsonPropertyName("RotationSpeedClamp")] + public double? RotationSpeedClamp { get; set; } - [JsonPropertyName("SensitivityMultiplier")] - public double SensitivityMultiplier { get; set; } + [JsonPropertyName("SensitivityMultiplier")] + public double? SensitivityMultiplier { get; set; } } public class MountingPointDetectionSettings { - [JsonPropertyName("CheckHorizontalSecondaryOffset")] - public double CheckHorizontalSecondaryOffset { get; set; } + [JsonPropertyName("CheckHorizontalSecondaryOffset")] + public double? CheckHorizontalSecondaryOffset { get; set; } - [JsonPropertyName("CheckWallOffset")] - public double CheckWallOffset { get; set; } + [JsonPropertyName("CheckWallOffset")] + public double? CheckWallOffset { get; set; } - [JsonPropertyName("EdgeDetectionDistance")] - public double EdgeDetectionDistance { get; set; } + [JsonPropertyName("EdgeDetectionDistance")] + public double? EdgeDetectionDistance { get; set; } - [JsonPropertyName("GridMaxHeight")] - public double GridMaxHeight { get; set; } + [JsonPropertyName("GridMaxHeight")] + public double? GridMaxHeight { get; set; } - [JsonPropertyName("GridMinHeight")] - public double GridMinHeight { get; set; } + [JsonPropertyName("GridMinHeight")] + public double? GridMinHeight { get; set; } - [JsonPropertyName("HorizontalGridFromTopOffset")] - public double HorizontalGridFromTopOffset { get; set; } + [JsonPropertyName("HorizontalGridFromTopOffset")] + public double? HorizontalGridFromTopOffset { get; set; } - [JsonPropertyName("HorizontalGridSize")] - public double HorizontalGridSize { get; set; } + [JsonPropertyName("HorizontalGridSize")] + public double? HorizontalGridSize { get; set; } - [JsonPropertyName("HorizontalGridStepsAmount")] - public double HorizontalGridStepsAmount { get; set; } + [JsonPropertyName("HorizontalGridStepsAmount")] + public double? HorizontalGridStepsAmount { get; set; } - [JsonPropertyName("MaxFramesForRaycast")] - public double MaxFramesForRaycast { get; set; } + [JsonPropertyName("MaxFramesForRaycast")] + public double? MaxFramesForRaycast { get; set; } - [JsonPropertyName("MaxHorizontalMountAngleDotDelta")] - public double MaxHorizontalMountAngleDotDelta { get; set; } + [JsonPropertyName("MaxHorizontalMountAngleDotDelta")] + public double? MaxHorizontalMountAngleDotDelta { get; set; } - [JsonPropertyName("MaxProneMountAngleDotDelta")] - public double MaxProneMountAngleDotDelta { get; set; } + [JsonPropertyName("MaxProneMountAngleDotDelta")] + public double? MaxProneMountAngleDotDelta { get; set; } - [JsonPropertyName("MaxVerticalMountAngleDotDelta")] - public double MaxVerticalMountAngleDotDelta { get; set; } + [JsonPropertyName("MaxVerticalMountAngleDotDelta")] + public double? MaxVerticalMountAngleDotDelta { get; set; } - [JsonPropertyName("PointHorizontalMountOffset")] - public double PointHorizontalMountOffset { get; set; } + [JsonPropertyName("PointHorizontalMountOffset")] + public double? PointHorizontalMountOffset { get; set; } - [JsonPropertyName("PointVerticalMountOffset")] - public double PointVerticalMountOffset { get; set; } + [JsonPropertyName("PointVerticalMountOffset")] + public double? PointVerticalMountOffset { get; set; } - [JsonPropertyName("RaycastDistance")] - public double RaycastDistance { get; set; } + [JsonPropertyName("RaycastDistance")] + public double? RaycastDistance { get; set; } - [JsonPropertyName("SecondCheckVerticalDistance")] - public double SecondCheckVerticalDistance { get; set; } + [JsonPropertyName("SecondCheckVerticalDistance")] + public double? SecondCheckVerticalDistance { get; set; } - [JsonPropertyName("SecondCheckVerticalGridOffset")] - public double SecondCheckVerticalGridOffset { get; set; } + [JsonPropertyName("SecondCheckVerticalGridOffset")] + public double? SecondCheckVerticalGridOffset { get; set; } - [JsonPropertyName("SecondCheckVerticalGridSize")] - public double SecondCheckVerticalGridSize { get; set; } + [JsonPropertyName("SecondCheckVerticalGridSize")] + public double? SecondCheckVerticalGridSize { get; set; } - [JsonPropertyName("SecondCheckVerticalGridSizeStepsAmount")] - public double SecondCheckVerticalGridSizeStepsAmount { get; set; } + [JsonPropertyName("SecondCheckVerticalGridSizeStepsAmount")] + public double? SecondCheckVerticalGridSizeStepsAmount { get; set; } - [JsonPropertyName("VerticalGridSize")] - public double VerticalGridSize { get; set; } + [JsonPropertyName("VerticalGridSize")] + public double? VerticalGridSize { get; set; } - [JsonPropertyName("VerticalGridStepsAmount")] - public double VerticalGridStepsAmount { get; set; } + [JsonPropertyName("VerticalGridStepsAmount")] + public double? VerticalGridStepsAmount { get; set; } } public class GraphicSettings { - [JsonPropertyName("ExperimentalFogInCity")] - public bool ExperimentalFogInCity { get; set; } + [JsonPropertyName("ExperimentalFogInCity")] + public bool? ExperimentalFogInCity { get; set; } } public class BufferZone { - [JsonPropertyName("CustomerAccessTime")] - public double CustomerAccessTime { get; set; } + [JsonPropertyName("CustomerAccessTime")] + public double? CustomerAccessTime { get; set; } - [JsonPropertyName("CustomerCriticalTimeStart")] - public double CustomerCriticalTimeStart { get; set; } + [JsonPropertyName("CustomerCriticalTimeStart")] + public double? CustomerCriticalTimeStart { get; set; } - [JsonPropertyName("CustomerKickNotifTime")] - public double CustomerKickNotifTime { get; set; } + [JsonPropertyName("CustomerKickNotifTime")] + public double? CustomerKickNotifTime { get; set; } } public class ItemsCommonSettings { - [JsonPropertyName("ItemRemoveAfterInterruptionTime")] - public double ItemRemoveAfterInterruptionTime { get; set; } + [JsonPropertyName("ItemRemoveAfterInterruptionTime")] + public double? ItemRemoveAfterInterruptionTime { get; set; } } public class TradingSettings { - [JsonPropertyName("BuyRestrictionMaxBonus")] - public Dictionary BuyRestrictionMaxBonus { get; set; } + [JsonPropertyName("BuyRestrictionMaxBonus")] + public Dictionary? BuyRestrictionMaxBonus { get; set; } - [JsonPropertyName("BuyoutRestrictions")] - public BuyoutRestrictions BuyoutRestrictions { get; set; } + [JsonPropertyName("BuyoutRestrictions")] + public BuyoutRestrictions? BuyoutRestrictions { get; set; } } public class BuyRestrictionMaxBonus { - [JsonPropertyName("multiplier")] - public double Multiplier { get; set; } + [JsonPropertyName("multiplier")] + public double? Multiplier { get; set; } } public class BuyoutRestrictions { - [JsonPropertyName("MinDurability")] - public double MinDurability { get; set; } + [JsonPropertyName("MinDurability")] + public double? MinDurability { get; set; } - [JsonPropertyName("MinFoodDrinkResource")] - public double MinFoodDrinkResource { get; set; } + [JsonPropertyName("MinFoodDrinkResource")] + public double? MinFoodDrinkResource { get; set; } - [JsonPropertyName("MinMedsResource")] - public double MinMedsResource { get; set; } + [JsonPropertyName("MinMedsResource")] + public double? MinMedsResource { get; set; } } public class Content { - [JsonPropertyName("ip")] - public string Ip { get; set; } + [JsonPropertyName("ip")] + public string? Ip { get; set; } - [JsonPropertyName("port")] - public double Port { get; set; } + [JsonPropertyName("port")] + public double? Port { get; set; } - [JsonPropertyName("root")] - public string Root { get; set; } + [JsonPropertyName("root")] + public string? Root { get; set; } } public class Exp { - [JsonPropertyName("heal")] - public Heal Heal { get; set; } + [JsonPropertyName("heal")] + public Heal? Heal { get; set; } - [JsonPropertyName("match_end")] - public MatchEnd MatchEnd { get; set; } + [JsonPropertyName("match_end")] + public MatchEnd? MatchEnd { get; set; } - [JsonPropertyName("kill")] - public Kill Kill { get; set; } + [JsonPropertyName("kill")] + public Kill? Kill { get; set; } - [JsonPropertyName("level")] - public Level Level { get; set; } + [JsonPropertyName("level")] + public Level? Level { get; set; } - [JsonPropertyName("loot_attempts")] - public List LootAttempts { get; set; } + [JsonPropertyName("loot_attempts")] + public List? LootAttempts { get; set; } - [JsonPropertyName("expForLevelOneDogtag")] - public double ExpForLevelOneDogtag { get; set; } + [JsonPropertyName("expForLevelOneDogtag")] + public double? ExpForLevelOneDogtag { get; set; } - [JsonPropertyName("expForLockedDoorOpen")] - public double ExpForLockedDoorOpen { get; set; } + [JsonPropertyName("expForLockedDoorOpen")] + public double? ExpForLockedDoorOpen { get; set; } - [JsonPropertyName("expForLockedDoorBreach")] - public double ExpForLockedDoorBreach { get; set; } + [JsonPropertyName("expForLockedDoorBreach")] + public double? ExpForLockedDoorBreach { get; set; } - [JsonPropertyName("triggerMult")] - public double TriggerMult { get; set; } + [JsonPropertyName("triggerMult")] + public double? TriggerMult { get; set; } } public class Heal { - [JsonPropertyName("expForHeal")] - public double ExpForHeal { get; set; } + [JsonPropertyName("expForHeal")] + public double? ExpForHeal { get; set; } - [JsonPropertyName("expForHydration")] - public double ExpForHydration { get; set; } + [JsonPropertyName("expForHydration")] + public double? ExpForHydration { get; set; } - [JsonPropertyName("expForEnergy")] - public double ExpForEnergy { get; set; } + [JsonPropertyName("expForEnergy")] + public double? ExpForEnergy { get; set; } } public class MatchEnd { - [JsonPropertyName("README")] - public string ReadMe { get; set; } + [JsonPropertyName("README")] + public string? ReadMe { get; set; } - [JsonPropertyName("survived_exp_requirement")] - public double SurvivedExperienceRequirement { get; set; } + [JsonPropertyName("survived_exp_requirement")] + public double? SurvivedExperienceRequirement { get; set; } - [JsonPropertyName("survived_seconds_requirement")] - public double SurvivedSecondsRequirement { get; set; } + [JsonPropertyName("survived_seconds_requirement")] + public double? SurvivedSecondsRequirement { get; set; } - [JsonPropertyName("survived_exp_reward")] - public double SurvivedExperienceReward { get; set; } + [JsonPropertyName("survived_exp_reward")] + public double? SurvivedExperienceReward { get; set; } - [JsonPropertyName("mia_exp_reward")] - public double MiaExperienceReward { get; set; } + [JsonPropertyName("mia_exp_reward")] + public double? MiaExperienceReward { get; set; } - [JsonPropertyName("runner_exp_reward")] - public double RunnerExperienceReward { get; set; } + [JsonPropertyName("runner_exp_reward")] + public double? RunnerExperienceReward { get; set; } - [JsonPropertyName("leftMult")] - public double LeftMultiplier { get; set; } + [JsonPropertyName("leftMult")] + public double? LeftMultiplier { get; set; } - [JsonPropertyName("miaMult")] - public double MiaMultiplier { get; set; } + [JsonPropertyName("miaMult")] + public double? MiaMultiplier { get; set; } - [JsonPropertyName("survivedMult")] - public double SurvivedMultiplier { get; set; } + [JsonPropertyName("survivedMult")] + public double? SurvivedMultiplier { get; set; } - [JsonPropertyName("runnerMult")] - public double RunnerMultiplier { get; set; } + [JsonPropertyName("runnerMult")] + public double? RunnerMultiplier { get; set; } - [JsonPropertyName("killedMult")] - public double KilledMultiplier { get; set; } + [JsonPropertyName("killedMult")] + public double? KilledMultiplier { get; set; } - [JsonPropertyName("transit_exp_reward")] - public double TransitExperienceReward { get; set; } + [JsonPropertyName("transit_exp_reward")] + public double? TransitExperienceReward { get; set; } - [JsonPropertyName("transit_mult")] - public List> TransitMultiplier { get; set; } + [JsonPropertyName("transit_mult")] + public List>? TransitMultiplier { get; set; } } public class Kill { - [JsonPropertyName("combo")] - public Combo[] Combos { get; set; } + [JsonPropertyName("combo")] + public Combo[] Combos { get; set; } - [JsonPropertyName("victimLevelExp")] - public double VictimLevelExperience { get; set; } + [JsonPropertyName("victimLevelExp")] + public double? VictimLevelExperience { get; set; } - [JsonPropertyName("headShotMult")] - public double HeadShotMultiplier { get; set; } + [JsonPropertyName("headShotMult")] + public double? HeadShotMultiplier { get; set; } - [JsonPropertyName("expOnDamageAllHealth")] - public double ExperienceOnDamageAllHealth { get; set; } + [JsonPropertyName("expOnDamageAllHealth")] + public double? ExperienceOnDamageAllHealth { get; set; } - [JsonPropertyName("longShotDistance")] - public double LongShotDistance { get; set; } + [JsonPropertyName("longShotDistance")] + public double? LongShotDistance { get; set; } - [JsonPropertyName("bloodLossToLitre")] - public double BloodLossToLitre { get; set; } + [JsonPropertyName("bloodLossToLitre")] + public double? BloodLossToLitre { get; set; } - [JsonPropertyName("botExpOnDamageAllHealth")] - public double BotExperienceOnDamageAllHealth { get; set; } + [JsonPropertyName("botExpOnDamageAllHealth")] + public double? BotExperienceOnDamageAllHealth { get; set; } - [JsonPropertyName("botHeadShotMult")] - public double BotHeadShotMultiplier { get; set; } + [JsonPropertyName("botHeadShotMult")] + public double? BotHeadShotMultiplier { get; set; } - [JsonPropertyName("victimBotLevelExp")] - public double VictimBotLevelExperience { get; set; } + [JsonPropertyName("victimBotLevelExp")] + public double? VictimBotLevelExperience { get; set; } - [JsonPropertyName("pmcExpOnDamageAllHealth")] - public double PmcExperienceOnDamageAllHealth { get; set; } + [JsonPropertyName("pmcExpOnDamageAllHealth")] + public double? PmcExperienceOnDamageAllHealth { get; set; } - [JsonPropertyName("pmcHeadShotMult")] - public double PmcHeadShotMultiplier { get; set; } + [JsonPropertyName("pmcHeadShotMult")] + public double? PmcHeadShotMultiplier { get; set; } } public class Combo { - [JsonPropertyName("percent")] - public double Percentage { get; set; } + [JsonPropertyName("percent")] + public double? Percentage { get; set; } } public class Level { - [JsonPropertyName("exp_table")] - public ExpTable[] ExperienceTable { get; set; } + [JsonPropertyName("exp_table")] + public ExpTable[] ExperienceTable { get; set; } - [JsonPropertyName("trade_level")] - public double TradeLevel { get; set; } + [JsonPropertyName("trade_level")] + public double? TradeLevel { get; set; } - [JsonPropertyName("savage_level")] - public double SavageLevel { get; set; } + [JsonPropertyName("savage_level")] + public double? SavageLevel { get; set; } - [JsonPropertyName("clan_level")] - public double ClanLevel { get; set; } + [JsonPropertyName("clan_level")] + public double? ClanLevel { get; set; } - [JsonPropertyName("mastering1")] - public double Mastering1 { get; set; } + [JsonPropertyName("mastering1")] + public double? Mastering1 { get; set; } - [JsonPropertyName("mastering2")] - public double Mastering2 { get; set; } + [JsonPropertyName("mastering2")] + public double? Mastering2 { get; set; } } public class ExpTable { - [JsonPropertyName("exp")] - public double Experience { get; set; } + [JsonPropertyName("exp")] + public double? Experience { get; set; } } public class LootAttempt { - [JsonPropertyName("k_exp")] - public double ExperiencePoints { get; set; } + [JsonPropertyName("k_exp")] + public double? ExperiencePoints { get; set; } } public class Armor { - [JsonPropertyName("class")] - public List Classes { get; set; } + [JsonPropertyName("class")] + public List? Classes { get; set; } } public class Class { - [JsonPropertyName("resistance")] - public double Resistance { get; set; } + [JsonPropertyName("resistance")] + public double? Resistance { get; set; } } public class Mastering { - [JsonPropertyName("Name")] - public string Name { get; set; } + [JsonPropertyName("Name")] + public string? Name { get; set; } - [JsonPropertyName("Templates")] - public List Templates { get; set; } + [JsonPropertyName("Templates")] + public List? Templates { get; set; } - [JsonPropertyName("Level2")] - public double Level2 { get; set; } + [JsonPropertyName("Level2")] + public double? Level2 { get; set; } - [JsonPropertyName("Level3")] - public double Level3 { get; set; } + [JsonPropertyName("Level3")] + public double? Level3 { get; set; } } public class Customization { - [JsonPropertyName("SavageHead")] - public Dictionary> Head { get; set; } + [JsonPropertyName("SavageHead")] + public Dictionary>? Head { get; set; } - [JsonPropertyName("SavageBody")] - public Dictionary> Body { get; set; } + [JsonPropertyName("SavageBody")] + public Dictionary>? Body { get; set; } - [JsonPropertyName("SavageFeet")] - public Dictionary> Feet { get; set; } + [JsonPropertyName("SavageFeet")] + public Dictionary>? Feet { get; set; } - [JsonPropertyName("CustomizationVoice")] - public List VoiceOptions { get; set; } + [JsonPropertyName("CustomizationVoice")] + public List? VoiceOptions { get; set; } - [JsonPropertyName("BodyParts")] - public BodyParts BodyParts { get; set; } + [JsonPropertyName("BodyParts")] + public BodyParts? BodyParts { get; set; } } public class CustomizationVoice { - [JsonPropertyName("voice")] - public string Voice { get; set; } + [JsonPropertyName("voice")] + public string? Voice { get; set; } - [JsonPropertyName("side")] - public List Side { get; set; } + [JsonPropertyName("side")] + public List? Side { get; set; } - [JsonPropertyName("isNotRandom")] - public bool IsNotRandom { get; set; } + [JsonPropertyName("isNotRandom")] + public bool? IsNotRandom { get; set; } } public class BodyParts { - public string Head { get; set; } - public string Body { get; set; } - public string Feet { get; set; } - public string Hands { get; set; } + public string? Head { get; set; } + public string? Body { get; set; } + public string? Feet { get; set; } + public string? Hands { get; set; } } public class AirdropGlobalSettings { - public string AirdropViewType { get; set; } - public double ParachuteEndOpenHeight { get; set; } - public double ParachuteStartOpenHeight { get; set; } - public double PlaneAdditionalDistance { get; set; } - public double PlaneAirdropDuration { get; set; } - public double PlaneAirdropFlareWait { get; set; } - public double PlaneAirdropSmoke { get; set; } - public double PlaneMaxFlightHeight { get; set; } - public double PlaneMinFlightHeight { get; set; } - public double PlaneSpeed { get; set; } - public double SmokeActivateHeight { get; set; } + public string? AirdropViewType { get; set; } + public double? ParachuteEndOpenHeight { get; set; } + public double? ParachuteStartOpenHeight { get; set; } + public double? PlaneAdditionalDistance { get; set; } + public double? PlaneAirdropDuration { get; set; } + public double? PlaneAirdropFlareWait { get; set; } + public double? PlaneAirdropSmoke { get; set; } + public double? PlaneMaxFlightHeight { get; set; } + public double? PlaneMinFlightHeight { get; set; } + public double? PlaneSpeed { get; set; } + public double? SmokeActivateHeight { get; set; } } public class KarmaCalculationSettings { - [JsonPropertyName("defaultPveKarmaValue")] - public double DefaultPveKarmaValue { get; set; } + [JsonPropertyName("defaultPveKarmaValue")] + public double? DefaultPveKarmaValue { get; set; } - [JsonPropertyName("enable")] - public bool Enable { get; set; } + [JsonPropertyName("enable")] + public bool? Enable { get; set; } - [JsonPropertyName("expireDaysAfterLastRaid")] - public double ExpireDaysAfterLastRaid { get; set; } + [JsonPropertyName("expireDaysAfterLastRaid")] + public double? ExpireDaysAfterLastRaid { get; set; } - [JsonPropertyName("maxKarmaThresholdPercentile")] - public double MaxKarmaThresholdPercentile { get; set; } + [JsonPropertyName("maxKarmaThresholdPercentile")] + public double? MaxKarmaThresholdPercentile { get; set; } - [JsonPropertyName("minKarmaThresholdPercentile")] - public double MinKarmaThresholdPercentile { get; set; } + [JsonPropertyName("minKarmaThresholdPercentile")] + public double? MinKarmaThresholdPercentile { get; set; } - [JsonPropertyName("minSurvivedRaidCount")] - public double MinSurvivedRaidCount { get; set; } + [JsonPropertyName("minSurvivedRaidCount")] + public double? MinSurvivedRaidCount { get; set; } } public class ArenaEftTransferSettings { - public double ArenaManagerReputationTaxMultiplier { get; set; } - public double CharismaTaxMultiplier { get; set; } - public double CreditPriceTaxMultiplier { get; set; } - public double RubTaxMultiplier { get; set; } - public Dictionary TransferLimitsByGameEdition { get; set; } - public Dictionary TransferLimitsSettings { get; set; } + public double? ArenaManagerReputationTaxMultiplier { get; set; } + public double? CharismaTaxMultiplier { get; set; } + public double? CreditPriceTaxMultiplier { get; set; } + public double? RubTaxMultiplier { get; set; } + public Dictionary? TransferLimitsByGameEdition { get; set; } + public Dictionary? TransferLimitsSettings { get; set; } } public class ArmorMaterials { - [JsonPropertyName("UHMWPE")] - public ArmorType UHMWPE { get; set; } + [JsonPropertyName("UHMWPE")] + public ArmorType? UHMWPE { get; set; } - [JsonPropertyName("Aramid")] - public ArmorType Aramid { get; set; } + [JsonPropertyName("Aramid")] + public ArmorType? Aramid { get; set; } - [JsonPropertyName("Combined")] - public ArmorType Combined { get; set; } + [JsonPropertyName("Combined")] + public ArmorType? Combined { get; set; } - [JsonPropertyName("Titan")] - public ArmorType Titan { get; set; } + [JsonPropertyName("Titan")] + public ArmorType? Titan { get; set; } - [JsonPropertyName("Aluminium")] - public ArmorType Aluminium { get; set; } + [JsonPropertyName("Aluminium")] + public ArmorType? Aluminium { get; set; } - [JsonPropertyName("ArmoredSteel")] - public ArmorType ArmoredSteel { get; set; } + [JsonPropertyName("ArmoredSteel")] + public ArmorType? ArmoredSteel { get; set; } - [JsonPropertyName("Ceramic")] - public ArmorType Ceramic { get; set; } + [JsonPropertyName("Ceramic")] + public ArmorType? Ceramic { get; set; } - [JsonPropertyName("Glass")] - public ArmorType Glass { get; set; } + [JsonPropertyName("Glass")] + public ArmorType? Glass { get; set; } } public class ArmorType { - [JsonPropertyName("Destructibility")] - public double Destructibility { get; set; } + [JsonPropertyName("Destructibility")] + public double? Destructibility { get; set; } - [JsonPropertyName("MinRepairDegradation")] - public double MinRepairDegradation { get; set; } + [JsonPropertyName("MinRepairDegradation")] + public double? MinRepairDegradation { get; set; } - [JsonPropertyName("MaxRepairDegradation")] - public double MaxRepairDegradation { get; set; } + [JsonPropertyName("MaxRepairDegradation")] + public double? MaxRepairDegradation { get; set; } - [JsonPropertyName("ExplosionDestructibility")] - public double ExplosionDestructibility { get; set; } + [JsonPropertyName("ExplosionDestructibility")] + public double? ExplosionDestructibility { get; set; } - [JsonPropertyName("MinRepairKitDegradation")] - public double MinRepairKitDegradation { get; set; } + [JsonPropertyName("MinRepairKitDegradation")] + public double? MinRepairKitDegradation { get; set; } - [JsonPropertyName("MaxRepairKitDegradation")] - public double MaxRepairKitDegradation { get; set; } + [JsonPropertyName("MaxRepairKitDegradation")] + public double? MaxRepairKitDegradation { get; set; } } public class Health { - [JsonPropertyName("Falling")] - public Falling Falling { get; set; } + [JsonPropertyName("Falling")] + public Falling? Falling { get; set; } - [JsonPropertyName("Effects")] - public Effects Effects { get; set; } + [JsonPropertyName("Effects")] + public Effects? Effects { get; set; } - [JsonPropertyName("HealPrice")] - public HealPrice HealPrice { get; set; } + [JsonPropertyName("HealPrice")] + public HealPrice? HealPrice { get; set; } - [JsonPropertyName("ProfileHealthSettings")] - public ProfileHealthSettings ProfileHealthSettings { get; set; } + [JsonPropertyName("ProfileHealthSettings")] + public ProfileHealthSettings? ProfileHealthSettings { get; set; } } public class Falling { - [JsonPropertyName("DamagePerMeter")] - public double DamagePerMeter { get; set; } + [JsonPropertyName("DamagePerMeter")] + public double? DamagePerMeter { get; set; } - [JsonPropertyName("SafeHeight")] - public double SafeHeight { get; set; } + [JsonPropertyName("SafeHeight")] + public double? SafeHeight { get; set; } } public class Effects { - [JsonPropertyName("Existence")] - public Existence Existence { get; set; } + [JsonPropertyName("Existence")] + public Existence? Existence { get; set; } - [JsonPropertyName("Dehydration")] - public Dehydration Dehydration { get; set; } + [JsonPropertyName("Dehydration")] + public Dehydration? Dehydration { get; set; } - [JsonPropertyName("BreakPart")] - public BreakPart BreakPart { get; set; } + [JsonPropertyName("BreakPart")] + public BreakPart? BreakPart { get; set; } - [JsonPropertyName("Contusion")] - public Contusion Contusion { get; set; } + [JsonPropertyName("Contusion")] + public Contusion? Contusion { get; set; } - [JsonPropertyName("Disorientation")] - public Disorientation Disorientation { get; set; } + [JsonPropertyName("Disorientation")] + public Disorientation? Disorientation { get; set; } - [JsonPropertyName("Exhaustion")] - public Exhaustion Exhaustion { get; set; } + [JsonPropertyName("Exhaustion")] + public Exhaustion? Exhaustion { get; set; } - [JsonPropertyName("LowEdgeHealth")] - public LowEdgeHealth LowEdgeHealth { get; set; } + [JsonPropertyName("LowEdgeHealth")] + public LowEdgeHealth? LowEdgeHealth { get; set; } - [JsonPropertyName("RadExposure")] - public RadExposure RadExposure { get; set; } + [JsonPropertyName("RadExposure")] + public RadExposure? RadExposure { get; set; } - [JsonPropertyName("Stun")] - public Stun Stun { get; set; } + [JsonPropertyName("Stun")] + public Stun? Stun { get; set; } - [JsonPropertyName("Intoxication")] - public Intoxication Intoxication { get; set; } + [JsonPropertyName("Intoxication")] + public Intoxication? Intoxication { get; set; } - [JsonPropertyName("Regeneration")] - public Regeneration Regeneration { get; set; } + [JsonPropertyName("Regeneration")] + public Regeneration? Regeneration { get; set; } - [JsonPropertyName("Wound")] - public Wound Wound { get; set; } + [JsonPropertyName("Wound")] + public Wound? Wound { get; set; } - [JsonPropertyName("Berserk")] - public Berserk Berserk { get; set; } + [JsonPropertyName("Berserk")] + public Berserk? Berserk { get; set; } - [JsonPropertyName("Flash")] - public Flash Flash { get; set; } + [JsonPropertyName("Flash")] + public Flash? Flash { get; set; } - [JsonPropertyName("MedEffect")] - public MedEffect MedEffect { get; set; } + [JsonPropertyName("MedEffect")] + public MedEffect? MedEffect { get; set; } - [JsonPropertyName("Pain")] - public Pain Pain { get; set; } + [JsonPropertyName("Pain")] + public Pain? Pain { get; set; } - [JsonPropertyName("PainKiller")] - public PainKiller PainKiller { get; set; } + [JsonPropertyName("PainKiller")] + public PainKiller? PainKiller { get; set; } - [JsonPropertyName("SandingScreen")] - public SandingScreen SandingScreen { get; set; } + [JsonPropertyName("SandingScreen")] + public SandingScreen? SandingScreen { get; set; } - [JsonPropertyName("MildMusclePain")] - public MusclePainEffect MildMusclePain { get; set; } + [JsonPropertyName("MildMusclePain")] + public MusclePainEffect? MildMusclePain { get; set; } - [JsonPropertyName("SevereMusclePain")] - public MusclePainEffect SevereMusclePain { get; set; } + [JsonPropertyName("SevereMusclePain")] + public MusclePainEffect? SevereMusclePain { get; set; } - [JsonPropertyName("Stimulator")] - public Stimulator Stimulator { get; set; } + [JsonPropertyName("Stimulator")] + public Stimulator? Stimulator { get; set; } - [JsonPropertyName("Tremor")] - public Tremor Tremor { get; set; } + [JsonPropertyName("Tremor")] + public Tremor? Tremor { get; set; } - [JsonPropertyName("ChronicStaminaFatigue")] - public ChronicStaminaFatigue ChronicStaminaFatigue { get; set; } + [JsonPropertyName("ChronicStaminaFatigue")] + public ChronicStaminaFatigue? ChronicStaminaFatigue { get; set; } - [JsonPropertyName("Fracture")] - public Fracture Fracture { get; set; } + [JsonPropertyName("Fracture")] + public Fracture? Fracture { get; set; } - [JsonPropertyName("HeavyBleeding")] - public HeavyBleeding HeavyBleeding { get; set; } + [JsonPropertyName("HeavyBleeding")] + public HeavyBleeding? HeavyBleeding { get; set; } - [JsonPropertyName("LightBleeding")] - public LightBleeding LightBleeding { get; set; } + [JsonPropertyName("LightBleeding")] + public LightBleeding? LightBleeding { get; set; } - [JsonPropertyName("BodyTemperature")] - public BodyTemperature BodyTemperature { get; set; } + [JsonPropertyName("BodyTemperature")] + public BodyTemperature? BodyTemperature { get; set; } - [JsonPropertyName("ZombieInfection")] - public ZombieInfection ZombieInfection { get; set; } + [JsonPropertyName("ZombieInfection")] + public ZombieInfection? ZombieInfection { get; set; } } public class ZombieInfection { - [JsonPropertyName("Dehydration")] - public double Dehydration { get; set; } + [JsonPropertyName("Dehydration")] + public double? Dehydration { get; set; } - [JsonPropertyName("HearingDebuffPercentage")] - public double HearingDebuffPercentage { get; set; } + [JsonPropertyName("HearingDebuffPercentage")] + public double? HearingDebuffPercentage { get; set; } - // The C on the Cumulatie down here is the russian C, its encoded differently, I THINK - // Just in case, dont change it - [JsonPropertyName("СumulativeTime")] - public double CumulativeTime { get; set; } + // The C on the Cumulatie down here is the russian C, its encoded differently, I THINK + // Just in case, dont change it + [JsonPropertyName("СumulativeTime")] + public double? CumulativeTime { get; set; } } public class Existence { - [JsonPropertyName("EnergyLoopTime")] - public double EnergyLoopTime { get; set; } + [JsonPropertyName("EnergyLoopTime")] + public double? EnergyLoopTime { get; set; } - [JsonPropertyName("HydrationLoopTime")] - public double HydrationLoopTime { get; set; } + [JsonPropertyName("HydrationLoopTime")] + public double? HydrationLoopTime { get; set; } - [JsonPropertyName("EnergyDamage")] - public double EnergyDamage { get; set; } + [JsonPropertyName("EnergyDamage")] + public double? EnergyDamage { get; set; } - [JsonPropertyName("HydrationDamage")] - public double HydrationDamage { get; set; } + [JsonPropertyName("HydrationDamage")] + public double? HydrationDamage { get; set; } - [JsonPropertyName("DestroyedStomachEnergyTimeFactor")] - public double DestroyedStomachEnergyTimeFactor { get; set; } + [JsonPropertyName("DestroyedStomachEnergyTimeFactor")] + public double? DestroyedStomachEnergyTimeFactor { get; set; } - [JsonPropertyName("DestroyedStomachHydrationTimeFactor")] - public double DestroyedStomachHydrationTimeFactor { get; set; } + [JsonPropertyName("DestroyedStomachHydrationTimeFactor")] + public double? DestroyedStomachHydrationTimeFactor { get; set; } } public class Dehydration { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("BleedingHealth")] - public double BleedingHealth { get; set; } + [JsonPropertyName("BleedingHealth")] + public double? BleedingHealth { get; set; } - [JsonPropertyName("BleedingLoopTime")] - public double BleedingLoopTime { get; set; } + [JsonPropertyName("BleedingLoopTime")] + public double? BleedingLoopTime { get; set; } - [JsonPropertyName("BleedingLifeTime")] - public double BleedingLifeTime { get; set; } + [JsonPropertyName("BleedingLifeTime")] + public double? BleedingLifeTime { get; set; } - [JsonPropertyName("DamageOnStrongDehydration")] - public double DamageOnStrongDehydration { get; set; } + [JsonPropertyName("DamageOnStrongDehydration")] + public double? DamageOnStrongDehydration { get; set; } - [JsonPropertyName("StrongDehydrationLoopTime")] - public double StrongDehydrationLoopTime { get; set; } + [JsonPropertyName("StrongDehydrationLoopTime")] + public double? StrongDehydrationLoopTime { get; set; } } public class BreakPart { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("HealExperience")] - public double HealExperience { get; set; } + [JsonPropertyName("HealExperience")] + public double? HealExperience { get; set; } - [JsonPropertyName("OfflineDurationMin")] - public double OfflineDurationMin { get; set; } + [JsonPropertyName("OfflineDurationMin")] + public double? OfflineDurationMin { get; set; } - [JsonPropertyName("OfflineDurationMax")] - public double OfflineDurationMax { get; set; } + [JsonPropertyName("OfflineDurationMax")] + public double? OfflineDurationMax { get; set; } - [JsonPropertyName("RemovePrice")] - public double RemovePrice { get; set; } + [JsonPropertyName("RemovePrice")] + public double? RemovePrice { get; set; } - [JsonPropertyName("RemovedAfterDeath")] - public bool RemovedAfterDeath { get; set; } + [JsonPropertyName("RemovedAfterDeath")] + public bool? RemovedAfterDeath { get; set; } - [JsonPropertyName("BulletHitProbability")] - public Probability BulletHitProbability { get; set; } + [JsonPropertyName("BulletHitProbability")] + public Probability? BulletHitProbability { get; set; } - [JsonPropertyName("FallingProbability")] - public Probability FallingProbability { get; set; } + [JsonPropertyName("FallingProbability")] + public Probability? FallingProbability { get; set; } } public class Contusion { - [JsonPropertyName("Dummy")] - public double Dummy { get; set; } + [JsonPropertyName("Dummy")] + public double? Dummy { get; set; } } public class Disorientation { - [JsonPropertyName("Dummy")] - public double Dummy { get; set; } + [JsonPropertyName("Dummy")] + public double? Dummy { get; set; } } public class Exhaustion { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("Damage")] - public double Damage { get; set; } + [JsonPropertyName("Damage")] + public double? Damage { get; set; } - [JsonPropertyName("DamageLoopTime")] - public double DamageLoopTime { get; set; } + [JsonPropertyName("DamageLoopTime")] + public double? DamageLoopTime { get; set; } } public class LowEdgeHealth { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("StartCommonHealth")] - public double StartCommonHealth { get; set; } + [JsonPropertyName("StartCommonHealth")] + public double? StartCommonHealth { get; set; } } public class RadExposure { - [JsonPropertyName("Damage")] - public double Damage { get; set; } + [JsonPropertyName("Damage")] + public double? Damage { get; set; } - [JsonPropertyName("DamageLoopTime")] - public double DamageLoopTime { get; set; } + [JsonPropertyName("DamageLoopTime")] + public double? DamageLoopTime { get; set; } } public class Stun { - [JsonPropertyName("Dummy")] - public double Dummy { get; set; } + [JsonPropertyName("Dummy")] + public double? Dummy { get; set; } } public class Intoxication { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("DamageHealth")] - public double DamageHealth { get; set; } + [JsonPropertyName("DamageHealth")] + public double? DamageHealth { get; set; } - [JsonPropertyName("HealthLoopTime")] - public double HealthLoopTime { get; set; } + [JsonPropertyName("HealthLoopTime")] + public double? HealthLoopTime { get; set; } - [JsonPropertyName("OfflineDurationMin")] - public double OfflineDurationMin { get; set; } + [JsonPropertyName("OfflineDurationMin")] + public double? OfflineDurationMin { get; set; } - [JsonPropertyName("OfflineDurationMax")] - public double OfflineDurationMax { get; set; } + [JsonPropertyName("OfflineDurationMax")] + public double? OfflineDurationMax { get; set; } - [JsonPropertyName("RemovedAfterDeath")] - public bool RemovedAfterDeath { get; set; } + [JsonPropertyName("RemovedAfterDeath")] + public bool? RemovedAfterDeath { get; set; } - [JsonPropertyName("HealExperience")] - public double HealExperience { get; set; } + [JsonPropertyName("HealExperience")] + public double? HealExperience { get; set; } - [JsonPropertyName("RemovePrice")] - public double RemovePrice { get; set; } + [JsonPropertyName("RemovePrice")] + public double? RemovePrice { get; set; } } public class Regeneration { - [JsonPropertyName("LoopTime")] - public double LoopTime { get; set; } + [JsonPropertyName("LoopTime")] + public double? LoopTime { get; set; } - [JsonPropertyName("MinimumHealthPercentage")] - public double MinimumHealthPercentage { get; set; } + [JsonPropertyName("MinimumHealthPercentage")] + public double? MinimumHealthPercentage { get; set; } - [JsonPropertyName("Energy")] - public double Energy { get; set; } + [JsonPropertyName("Energy")] + public double? Energy { get; set; } - [JsonPropertyName("Hydration")] - public double Hydration { get; set; } + [JsonPropertyName("Hydration")] + public double? Hydration { get; set; } - [JsonPropertyName("BodyHealth")] - public BodyHealth BodyHealth { get; set; } + [JsonPropertyName("BodyHealth")] + public BodyHealth? BodyHealth { get; set; } - [JsonPropertyName("Influences")] - public Influences Influences { get; set; } + [JsonPropertyName("Influences")] + public Influences? Influences { get; set; } } public class BodyHealth { - [JsonPropertyName("Head")] - public BodyHealthValue Head { get; set; } + [JsonPropertyName("Head")] + public BodyHealthValue? Head { get; set; } - [JsonPropertyName("Chest")] - public BodyHealthValue Chest { get; set; } + [JsonPropertyName("Chest")] + public BodyHealthValue? Chest { get; set; } - [JsonPropertyName("Stomach")] - public BodyHealthValue Stomach { get; set; } + [JsonPropertyName("Stomach")] + public BodyHealthValue? Stomach { get; set; } - [JsonPropertyName("LeftArm")] - public BodyHealthValue LeftArm { get; set; } + [JsonPropertyName("LeftArm")] + public BodyHealthValue? LeftArm { get; set; } - [JsonPropertyName("RightArm")] - public BodyHealthValue RightArm { get; set; } + [JsonPropertyName("RightArm")] + public BodyHealthValue? RightArm { get; set; } - [JsonPropertyName("LeftLeg")] - public BodyHealthValue LeftLeg { get; set; } + [JsonPropertyName("LeftLeg")] + public BodyHealthValue? LeftLeg { get; set; } - [JsonPropertyName("RightLeg")] - public BodyHealthValue RightLeg { get; set; } + [JsonPropertyName("RightLeg")] + public BodyHealthValue? RightLeg { get; set; } } public class BodyHealthValue { - [JsonPropertyName("Value")] - public double Value { get; set; } + [JsonPropertyName("Value")] + public double? Value { get; set; } } public class Influences { - [JsonPropertyName("LightBleeding")] - public Influence LightBleeding { get; set; } + [JsonPropertyName("LightBleeding")] + public Influence? LightBleeding { get; set; } - [JsonPropertyName("HeavyBleeding")] - public Influence HeavyBleeding { get; set; } + [JsonPropertyName("HeavyBleeding")] + public Influence? HeavyBleeding { get; set; } - [JsonPropertyName("Fracture")] - public Influence Fracture { get; set; } + [JsonPropertyName("Fracture")] + public Influence? Fracture { get; set; } - [JsonPropertyName("RadExposure")] - public Influence RadExposure { get; set; } + [JsonPropertyName("RadExposure")] + public Influence? RadExposure { get; set; } - [JsonPropertyName("Intoxication")] - public Influence Intoxication { get; set; } + [JsonPropertyName("Intoxication")] + public Influence? Intoxication { get; set; } } public class Influence { - [JsonPropertyName("HealthSlowDownPercentage")] - public double HealthSlowDownPercentage { get; set; } + [JsonPropertyName("HealthSlowDownPercentage")] + public double? HealthSlowDownPercentage { get; set; } - [JsonPropertyName("EnergySlowDownPercentage")] - public double EnergySlowDownPercentage { get; set; } + [JsonPropertyName("EnergySlowDownPercentage")] + public double? EnergySlowDownPercentage { get; set; } - [JsonPropertyName("HydrationSlowDownPercentage")] - public double HydrationSlowDownPercentage { get; set; } + [JsonPropertyName("HydrationSlowDownPercentage")] + public double? HydrationSlowDownPercentage { get; set; } } public class Wound { - [JsonPropertyName("WorkingTime")] - public double WorkingTime { get; set; } + [JsonPropertyName("WorkingTime")] + public double? WorkingTime { get; set; } - [JsonPropertyName("ThresholdMin")] - public double ThresholdMin { get; set; } + [JsonPropertyName("ThresholdMin")] + public double? ThresholdMin { get; set; } - [JsonPropertyName("ThresholdMax")] - public double ThresholdMax { get; set; } + [JsonPropertyName("ThresholdMax")] + public double? ThresholdMax { get; set; } } public class Berserk { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("WorkingTime")] - public double WorkingTime { get; set; } + [JsonPropertyName("WorkingTime")] + public double? WorkingTime { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } } public class Flash { - [JsonPropertyName("Dummy")] - public double Dummy { get; set; } + [JsonPropertyName("Dummy")] + public double? Dummy { get; set; } } public class MedEffect { - [JsonPropertyName("LoopTime")] - public double LoopTime { get; set; } + [JsonPropertyName("LoopTime")] + public double? LoopTime { get; set; } - [JsonPropertyName("StartDelay")] - public double StartDelay { get; set; } + [JsonPropertyName("StartDelay")] + public double? StartDelay { get; set; } - [JsonPropertyName("DrinkStartDelay")] - public double DrinkStartDelay { get; set; } + [JsonPropertyName("DrinkStartDelay")] + public double? DrinkStartDelay { get; set; } - [JsonPropertyName("FoodStartDelay")] - public double FoodStartDelay { get; set; } + [JsonPropertyName("FoodStartDelay")] + public double? FoodStartDelay { get; set; } - [JsonPropertyName("DrugsStartDelay")] - public double DrugsStartDelay { get; set; } + [JsonPropertyName("DrugsStartDelay")] + public double? DrugsStartDelay { get; set; } - [JsonPropertyName("MedKitStartDelay")] - public double MedKitStartDelay { get; set; } + [JsonPropertyName("MedKitStartDelay")] + public double? MedKitStartDelay { get; set; } - [JsonPropertyName("MedicalStartDelay")] - public double MedicalStartDelay { get; set; } + [JsonPropertyName("MedicalStartDelay")] + public double? MedicalStartDelay { get; set; } - [JsonPropertyName("StimulatorStartDelay")] - public double StimulatorStartDelay { get; set; } + [JsonPropertyName("StimulatorStartDelay")] + public double? StimulatorStartDelay { get; set; } } public class Pain { - [JsonPropertyName("TremorDelay")] - public double TremorDelay { get; set; } + [JsonPropertyName("TremorDelay")] + public double? TremorDelay { get; set; } - [JsonPropertyName("HealExperience")] - public double HealExperience { get; set; } + [JsonPropertyName("HealExperience")] + public double? HealExperience { get; set; } } public class PainKiller { - public double Dummy { get; set; } + public double? Dummy { get; set; } } public class SandingScreen { - public double Dummy { get; set; } + public double? Dummy { get; set; } } public class MusclePainEffect { - public double GymEffectivity { get; set; } - public double OfflineDurationMax { get; set; } - public double OfflineDurationMin { get; set; } - public double TraumaChance { get; set; } + public double? GymEffectivity { get; set; } + public double? OfflineDurationMax { get; set; } + public double? OfflineDurationMin { get; set; } + public double? TraumaChance { get; set; } } public class Stimulator { - public double BuffLoopTime { get; set; } - public Dictionary> Buffs { get; set; } + public double? BuffLoopTime { get; set; } + public Dictionary>? Buffs { get; set; } } public class Buff { - [JsonPropertyName("BuffType")] - public string BuffType { get; set; } + [JsonPropertyName("BuffType")] + public string? BuffType { get; set; } - [JsonPropertyName("Chance")] - public double Chance { get; set; } + [JsonPropertyName("Chance")] + public double? Chance { get; set; } - [JsonPropertyName("Delay")] - public double Delay { get; set; } + [JsonPropertyName("Delay")] + public double? Delay { get; set; } - [JsonPropertyName("Duration")] - public double Duration { get; set; } + [JsonPropertyName("Duration")] + public double? Duration { get; set; } - [JsonPropertyName("Value")] - public double Value { get; set; } + [JsonPropertyName("Value")] + public double? Value { get; set; } - [JsonPropertyName("AbsoluteValue")] - public bool AbsoluteValue { get; set; } + [JsonPropertyName("AbsoluteValue")] + public bool? AbsoluteValue { get; set; } - [JsonPropertyName("SkillName")] - public string SkillName { get; set; } - - public List AppliesTo {get;set;} + [JsonPropertyName("SkillName")] + public string? SkillName { get; set; } + + public List? AppliesTo { get; set; } } public class Tremor { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } } public class ChronicStaminaFatigue { - [JsonPropertyName("EnergyRate")] - public double EnergyRate { get; set; } + [JsonPropertyName("EnergyRate")] + public double? EnergyRate { get; set; } - [JsonPropertyName("WorkingTime")] - public double WorkingTime { get; set; } + [JsonPropertyName("WorkingTime")] + public double? WorkingTime { get; set; } - [JsonPropertyName("TicksEvery")] - public double TicksEvery { get; set; } + [JsonPropertyName("TicksEvery")] + public double? TicksEvery { get; set; } - [JsonPropertyName("EnergyRatePerStack")] - public double EnergyRatePerStack { get; set; } + [JsonPropertyName("EnergyRatePerStack")] + public double? EnergyRatePerStack { get; set; } } public class Fracture { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("HealExperience")] - public double HealExperience { get; set; } + [JsonPropertyName("HealExperience")] + public double? HealExperience { get; set; } - [JsonPropertyName("OfflineDurationMin")] - public double OfflineDurationMin { get; set; } + [JsonPropertyName("OfflineDurationMin")] + public double? OfflineDurationMin { get; set; } - [JsonPropertyName("OfflineDurationMax")] - public double OfflineDurationMax { get; set; } + [JsonPropertyName("OfflineDurationMax")] + public double? OfflineDurationMax { get; set; } - [JsonPropertyName("RemovePrice")] - public double RemovePrice { get; set; } + [JsonPropertyName("RemovePrice")] + public double? RemovePrice { get; set; } - [JsonPropertyName("RemovedAfterDeath")] - public bool RemovedAfterDeath { get; set; } + [JsonPropertyName("RemovedAfterDeath")] + public bool? RemovedAfterDeath { get; set; } - [JsonPropertyName("BulletHitProbability")] - public Probability BulletHitProbability { get; set; } + [JsonPropertyName("BulletHitProbability")] + public Probability? BulletHitProbability { get; set; } - [JsonPropertyName("FallingProbability")] - public Probability FallingProbability { get; set; } + [JsonPropertyName("FallingProbability")] + public Probability? FallingProbability { get; set; } } public class HeavyBleeding { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("DamageEnergy")] - public double DamageEnergy { get; set; } + [JsonPropertyName("DamageEnergy")] + public double? DamageEnergy { get; set; } - [JsonPropertyName("DamageHealth")] - public double DamageHealth { get; set; } + [JsonPropertyName("DamageHealth")] + public double? DamageHealth { get; set; } - [JsonPropertyName("EnergyLoopTime")] - public double EnergyLoopTime { get; set; } + [JsonPropertyName("EnergyLoopTime")] + public double? EnergyLoopTime { get; set; } - [JsonPropertyName("HealthLoopTime")] - public double HealthLoopTime { get; set; } + [JsonPropertyName("HealthLoopTime")] + public double? HealthLoopTime { get; set; } - [JsonPropertyName("DamageHealthDehydrated")] - public double DamageHealthDehydrated { get; set; } + [JsonPropertyName("DamageHealthDehydrated")] + public double? DamageHealthDehydrated { get; set; } - [JsonPropertyName("HealthLoopTimeDehydrated")] - public double HealthLoopTimeDehydrated { get; set; } + [JsonPropertyName("HealthLoopTimeDehydrated")] + public double? HealthLoopTimeDehydrated { get; set; } - [JsonPropertyName("LifeTimeDehydrated")] - public double LifeTimeDehydrated { get; set; } + [JsonPropertyName("LifeTimeDehydrated")] + public double? LifeTimeDehydrated { get; set; } - [JsonPropertyName("EliteVitalityDuration")] - public double EliteVitalityDuration { get; set; } + [JsonPropertyName("EliteVitalityDuration")] + public double? EliteVitalityDuration { get; set; } - [JsonPropertyName("HealExperience")] - public double HealExperience { get; set; } + [JsonPropertyName("HealExperience")] + public double? HealExperience { get; set; } - [JsonPropertyName("OfflineDurationMin")] - public double OfflineDurationMin { get; set; } + [JsonPropertyName("OfflineDurationMin")] + public double? OfflineDurationMin { get; set; } - [JsonPropertyName("OfflineDurationMax")] - public double OfflineDurationMax { get; set; } + [JsonPropertyName("OfflineDurationMax")] + public double? OfflineDurationMax { get; set; } - [JsonPropertyName("RemovePrice")] - public double RemovePrice { get; set; } + [JsonPropertyName("RemovePrice")] + public double? RemovePrice { get; set; } - [JsonPropertyName("RemovedAfterDeath")] - public bool RemovedAfterDeath { get; set; } + [JsonPropertyName("RemovedAfterDeath")] + public bool? RemovedAfterDeath { get; set; } - [JsonPropertyName("Probability")] - public Probability Probability { get; set; } + [JsonPropertyName("Probability")] + public Probability? Probability { get; set; } } public class Probability { - [JsonPropertyName("FunctionType")] - public string FunctionType { get; set; } + [JsonPropertyName("FunctionType")] + public string? FunctionType { get; set; } - [JsonPropertyName("K")] - public double K { get; set; } + [JsonPropertyName("K")] + public double? K { get; set; } - [JsonPropertyName("B")] - public double B { get; set; } + [JsonPropertyName("B")] + public double? B { get; set; } - [JsonPropertyName("Threshold")] - public double Threshold { get; set; } + [JsonPropertyName("Threshold")] + public double? Threshold { get; set; } } public class LightBleeding { - [JsonPropertyName("DefaultDelay")] - public double DefaultDelay { get; set; } + [JsonPropertyName("DefaultDelay")] + public double? DefaultDelay { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("DamageEnergy")] - public double DamageEnergy { get; set; } + [JsonPropertyName("DamageEnergy")] + public double? DamageEnergy { get; set; } - [JsonPropertyName("DamageHealth")] - public double DamageHealth { get; set; } + [JsonPropertyName("DamageHealth")] + public double? DamageHealth { get; set; } - [JsonPropertyName("EnergyLoopTime")] - public double EnergyLoopTime { get; set; } + [JsonPropertyName("EnergyLoopTime")] + public double? EnergyLoopTime { get; set; } - [JsonPropertyName("HealthLoopTime")] - public double HealthLoopTime { get; set; } + [JsonPropertyName("HealthLoopTime")] + public double? HealthLoopTime { get; set; } - [JsonPropertyName("DamageHealthDehydrated")] - public double DamageHealthDehydrated { get; set; } + [JsonPropertyName("DamageHealthDehydrated")] + public double? DamageHealthDehydrated { get; set; } - [JsonPropertyName("HealthLoopTimeDehydrated")] - public double HealthLoopTimeDehydrated { get; set; } + [JsonPropertyName("HealthLoopTimeDehydrated")] + public double? HealthLoopTimeDehydrated { get; set; } - [JsonPropertyName("LifeTimeDehydrated")] - public double LifeTimeDehydrated { get; set; } + [JsonPropertyName("LifeTimeDehydrated")] + public double? LifeTimeDehydrated { get; set; } - [JsonPropertyName("EliteVitalityDuration")] - public double EliteVitalityDuration { get; set; } + [JsonPropertyName("EliteVitalityDuration")] + public double? EliteVitalityDuration { get; set; } - [JsonPropertyName("HealExperience")] - public double HealExperience { get; set; } + [JsonPropertyName("HealExperience")] + public double? HealExperience { get; set; } - [JsonPropertyName("OfflineDurationMin")] - public double OfflineDurationMin { get; set; } + [JsonPropertyName("OfflineDurationMin")] + public double? OfflineDurationMin { get; set; } - [JsonPropertyName("OfflineDurationMax")] - public double OfflineDurationMax { get; set; } + [JsonPropertyName("OfflineDurationMax")] + public double? OfflineDurationMax { get; set; } - [JsonPropertyName("RemovePrice")] - public double RemovePrice { get; set; } + [JsonPropertyName("RemovePrice")] + public double? RemovePrice { get; set; } - [JsonPropertyName("RemovedAfterDeath")] - public bool RemovedAfterDeath { get; set; } + [JsonPropertyName("RemovedAfterDeath")] + public bool? RemovedAfterDeath { get; set; } - [JsonPropertyName("Probability")] - public Probability Probability { get; set; } + [JsonPropertyName("Probability")] + public Probability? Probability { get; set; } } public class BodyTemperature { - [JsonPropertyName("DefaultBuildUpTime")] - public double DefaultBuildUpTime { get; set; } + [JsonPropertyName("DefaultBuildUpTime")] + public double? DefaultBuildUpTime { get; set; } - [JsonPropertyName("DefaultResidueTime")] - public double DefaultResidueTime { get; set; } + [JsonPropertyName("DefaultResidueTime")] + public double? DefaultResidueTime { get; set; } - [JsonPropertyName("LoopTime")] - public double LoopTime { get; set; } + [JsonPropertyName("LoopTime")] + public double? LoopTime { get; set; } } public class HealPrice { - [JsonPropertyName("HealthPointPrice")] - public double HealthPointPrice { get; set; } + [JsonPropertyName("HealthPointPrice")] + public double? HealthPointPrice { get; set; } - [JsonPropertyName("HydrationPointPrice")] - public double HydrationPointPrice { get; set; } + [JsonPropertyName("HydrationPointPrice")] + public double? HydrationPointPrice { get; set; } - [JsonPropertyName("EnergyPointPrice")] - public double EnergyPointPrice { get; set; } + [JsonPropertyName("EnergyPointPrice")] + public double? EnergyPointPrice { get; set; } - [JsonPropertyName("TrialLevels")] - public double TrialLevels { get; set; } + [JsonPropertyName("TrialLevels")] + public double? TrialLevels { get; set; } - [JsonPropertyName("TrialRaids")] - public double TrialRaids { get; set; } + [JsonPropertyName("TrialRaids")] + public double? TrialRaids { get; set; } } public class ProfileHealthSettings { - [JsonPropertyName("BodyPartsSettings")] - public BodyPartsSettings BodyPartsSettings { get; set; } + [JsonPropertyName("BodyPartsSettings")] + public BodyPartsSettings? BodyPartsSettings { get; set; } - [JsonPropertyName("HealthFactorsSettings")] - public HealthFactorsSettings HealthFactorsSettings { get; set; } + [JsonPropertyName("HealthFactorsSettings")] + public HealthFactorsSettings? HealthFactorsSettings { get; set; } - [JsonPropertyName("DefaultStimulatorBuff")] - public string DefaultStimulatorBuff { get; set; } + [JsonPropertyName("DefaultStimulatorBuff")] + public string? DefaultStimulatorBuff { get; set; } } public class BodyPartsSettings { - [JsonPropertyName("Head")] - public BodyPartsSetting Head { get; set; } + [JsonPropertyName("Head")] + public BodyPartsSetting? Head { get; set; } - [JsonPropertyName("Chest")] - public BodyPartsSetting Chest { get; set; } + [JsonPropertyName("Chest")] + public BodyPartsSetting? Chest { get; set; } - [JsonPropertyName("Stomach")] - public BodyPartsSetting Stomach { get; set; } + [JsonPropertyName("Stomach")] + public BodyPartsSetting? Stomach { get; set; } - [JsonPropertyName("LeftArm")] - public BodyPartsSetting LeftArm { get; set; } + [JsonPropertyName("LeftArm")] + public BodyPartsSetting? LeftArm { get; set; } - [JsonPropertyName("RightArm")] - public BodyPartsSetting RightArm { get; set; } + [JsonPropertyName("RightArm")] + public BodyPartsSetting? RightArm { get; set; } - [JsonPropertyName("LeftLeg")] - public BodyPartsSetting LeftLeg { get; set; } + [JsonPropertyName("LeftLeg")] + public BodyPartsSetting? LeftLeg { get; set; } - [JsonPropertyName("RightLeg")] - public BodyPartsSetting RightLeg { get; set; } + [JsonPropertyName("RightLeg")] + public BodyPartsSetting? RightLeg { get; set; } } public class BodyPartsSetting { - [JsonPropertyName("Minimum")] - public double Minimum { get; set; } + [JsonPropertyName("Minimum")] + public double? Minimum { get; set; } - [JsonPropertyName("Maximum")] - public double Maximum { get; set; } + [JsonPropertyName("Maximum")] + public double? Maximum { get; set; } - [JsonPropertyName("Default")] - public double Default { get; set; } + [JsonPropertyName("Default")] + public double? Default { get; set; } - [JsonPropertyName("EnvironmentDamageMultiplier")] - public float EnvironmentDamageMultiplier { get; set; } + [JsonPropertyName("EnvironmentDamageMultiplier")] + public float? EnvironmentDamageMultiplier { get; set; } - [JsonPropertyName("OverDamageReceivedMultiplier")] - public float OverDamageReceivedMultiplier { get; set; } + [JsonPropertyName("OverDamageReceivedMultiplier")] + public float? OverDamageReceivedMultiplier { get; set; } } public class HealthFactorsSettings { - [JsonPropertyName("Energy")] - public HealthFactorSetting Energy { get; set; } + [JsonPropertyName("Energy")] + public HealthFactorSetting? Energy { get; set; } - [JsonPropertyName("Hydration")] - public HealthFactorSetting Hydration { get; set; } + [JsonPropertyName("Hydration")] + public HealthFactorSetting? Hydration { get; set; } - [JsonPropertyName("Temperature")] - public HealthFactorSetting Temperature { get; set; } + [JsonPropertyName("Temperature")] + public HealthFactorSetting? Temperature { get; set; } - [JsonPropertyName("Poisoning")] - public HealthFactorSetting Poisoning { get; set; } + [JsonPropertyName("Poisoning")] + public HealthFactorSetting? Poisoning { get; set; } - [JsonPropertyName("Radiation")] - public HealthFactorSetting Radiation { get; set; } + [JsonPropertyName("Radiation")] + public HealthFactorSetting? Radiation { get; set; } } public class HealthFactorSetting { - [JsonPropertyName("Minimum")] - public double Minimum { get; set; } + [JsonPropertyName("Minimum")] + public double? Minimum { get; set; } - [JsonPropertyName("Maximum")] - public double Maximum { get; set; } + [JsonPropertyName("Maximum")] + public double? Maximum { get; set; } - [JsonPropertyName("Default")] - public double Default { get; set; } + [JsonPropertyName("Default")] + public double? Default { get; set; } } public class Rating { - [JsonPropertyName("levelRequired")] - public double LevelRequired { get; set; } + [JsonPropertyName("levelRequired")] + public double? LevelRequired { get; set; } - [JsonPropertyName("limit")] - public double Limit { get; set; } + [JsonPropertyName("limit")] + public double? Limit { get; set; } - [JsonPropertyName("categories")] - public Categories Categories { get; set; } + [JsonPropertyName("categories")] + public Categories? Categories { get; set; } } public class Categories { - [JsonPropertyName("experience")] - public bool Experience { get; set; } + [JsonPropertyName("experience")] + public bool? Experience { get; set; } - [JsonPropertyName("kd")] - public bool Kd { get; set; } + [JsonPropertyName("kd")] + public bool? Kd { get; set; } - [JsonPropertyName("surviveRatio")] - public bool SurviveRatio { get; set; } + [JsonPropertyName("surviveRatio")] + public bool? SurviveRatio { get; set; } - [JsonPropertyName("avgEarnings")] - public bool AvgEarnings { get; set; } + [JsonPropertyName("avgEarnings")] + public bool? AvgEarnings { get; set; } - [JsonPropertyName("pmcKills")] - public bool PmcKills { get; set; } + [JsonPropertyName("pmcKills")] + public bool? PmcKills { get; set; } - [JsonPropertyName("raidCount")] - public bool RaidCount { get; set; } + [JsonPropertyName("raidCount")] + public bool? RaidCount { get; set; } - [JsonPropertyName("longestShot")] - public bool LongestShot { get; set; } + [JsonPropertyName("longestShot")] + public bool? LongestShot { get; set; } - [JsonPropertyName("timeOnline")] - public bool TimeOnline { get; set; } + [JsonPropertyName("timeOnline")] + public bool? TimeOnline { get; set; } - [JsonPropertyName("inventoryFullCost")] - public bool InventoryFullCost { get; set; } + [JsonPropertyName("inventoryFullCost")] + public bool? InventoryFullCost { get; set; } - [JsonPropertyName("ragFairStanding")] - public bool RagFairStanding { get; set; } + [JsonPropertyName("ragFairStanding")] + public bool? RagFairStanding { get; set; } } public class Tournament { - [JsonPropertyName("categories")] - public TournamentCategories Categories { get; set; } + [JsonPropertyName("categories")] + public TournamentCategories? Categories { get; set; } - [JsonPropertyName("limit")] - public double Limit { get; set; } + [JsonPropertyName("limit")] + public double? Limit { get; set; } - [JsonPropertyName("levelRequired")] - public double LevelRequired { get; set; } + [JsonPropertyName("levelRequired")] + public double? LevelRequired { get; set; } } public class TournamentCategories { - [JsonPropertyName("dogtags")] - public bool Dogtags { get; set; } + [JsonPropertyName("dogtags")] + public bool? Dogtags { get; set; } } public class RagFair { - [JsonPropertyName("enabled")] - public bool Enabled { get; set; } + [JsonPropertyName("enabled")] + public bool? Enabled { get; set; } - [JsonPropertyName("priceStabilizerEnabled")] - public bool PriceStabilizerEnabled { get; set; } + [JsonPropertyName("priceStabilizerEnabled")] + public bool? PriceStabilizerEnabled { get; set; } - [JsonPropertyName("includePveTraderSales")] - public bool IncludePveTraderSales { get; set; } + [JsonPropertyName("includePveTraderSales")] + public bool? IncludePveTraderSales { get; set; } - [JsonPropertyName("priceStabilizerStartIntervalInHours")] - public double PriceStabilizerStartIntervalInHours { get; set; } + [JsonPropertyName("priceStabilizerStartIntervalInHours")] + public double? PriceStabilizerStartIntervalInHours { get; set; } - [JsonPropertyName("minUserLevel")] - public double MinUserLevel { get; set; } + [JsonPropertyName("minUserLevel")] + public double? MinUserLevel { get; set; } - [JsonPropertyName("communityTax")] - public float CommunityTax { get; set; } + [JsonPropertyName("communityTax")] + public float? CommunityTax { get; set; } - [JsonPropertyName("communityItemTax")] - public float CommunityItemTax { get; set; } + [JsonPropertyName("communityItemTax")] + public float? CommunityItemTax { get; set; } - [JsonPropertyName("communityRequirementTax")] - public float CommunityRequirementTax { get; set; } + [JsonPropertyName("communityRequirementTax")] + public float? CommunityRequirementTax { get; set; } - [JsonPropertyName("offerPriorityCost")] - public float OfferPriorityCost { get; set; } + [JsonPropertyName("offerPriorityCost")] + public float? OfferPriorityCost { get; set; } - [JsonPropertyName("offerDurationTimeInHour")] - public double OfferDurationTimeInHour { get; set; } + [JsonPropertyName("offerDurationTimeInHour")] + public double? OfferDurationTimeInHour { get; set; } - [JsonPropertyName("offerDurationTimeInHourAfterRemove")] - public double OfferDurationTimeInHourAfterRemove { get; set; } + [JsonPropertyName("offerDurationTimeInHourAfterRemove")] + public double? OfferDurationTimeInHourAfterRemove { get; set; } - [JsonPropertyName("priorityTimeModifier")] - public float PriorityTimeModifier { get; set; } + [JsonPropertyName("priorityTimeModifier")] + public float? PriorityTimeModifier { get; set; } - [JsonPropertyName("maxRenewOfferTimeInHour")] - public double MaxRenewOfferTimeInHour { get; set; } + [JsonPropertyName("maxRenewOfferTimeInHour")] + public double? MaxRenewOfferTimeInHour { get; set; } - [JsonPropertyName("renewPricePerHour")] - public float RenewPricePerHour { get; set; } + [JsonPropertyName("renewPricePerHour")] + public float? RenewPricePerHour { get; set; } - [JsonPropertyName("maxActiveOfferCount")] - public List MaxActiveOfferCount { get; set; } + [JsonPropertyName("maxActiveOfferCount")] + public List? MaxActiveOfferCount { get; set; } - [JsonPropertyName("balancerRemovePriceCoefficient")] - public float BalancerRemovePriceCoefficient { get; set; } + [JsonPropertyName("balancerRemovePriceCoefficient")] + public float? BalancerRemovePriceCoefficient { get; set; } - [JsonPropertyName("balancerMinPriceCount")] - public float BalancerMinPriceCount { get; set; } + [JsonPropertyName("balancerMinPriceCount")] + public float? BalancerMinPriceCount { get; set; } - [JsonPropertyName("balancerAveragePriceCoefficient")] - public float BalancerAveragePriceCoefficient { get; set; } + [JsonPropertyName("balancerAveragePriceCoefficient")] + public float? BalancerAveragePriceCoefficient { get; set; } - [JsonPropertyName("delaySinceOfferAdd")] - public float DelaySinceOfferAdd { get; set; } + [JsonPropertyName("delaySinceOfferAdd")] + public float? DelaySinceOfferAdd { get; set; } - [JsonPropertyName("uniqueBuyerTimeoutInDays")] - public double UniqueBuyerTimeoutInDays { get; set; } + [JsonPropertyName("uniqueBuyerTimeoutInDays")] + public double? UniqueBuyerTimeoutInDays { get; set; } - [JsonPropertyName("userRatingChangeFrequencyMultiplayer")] - public float UserRatingChangeFrequencyMultiplayer { get; set; } + [JsonPropertyName("userRatingChangeFrequencyMultiplayer")] + public float? UserRatingChangeFrequencyMultiplayer { get; set; } - [JsonPropertyName("RagfairTurnOnTimestamp")] - public long RagfairTurnOnTimestamp { get; set; } + [JsonPropertyName("RagfairTurnOnTimestamp")] + public long? RagfairTurnOnTimestamp { get; set; } - [JsonPropertyName("ratingSumForIncrease")] - public float RatingSumForIncrease { get; set; } + [JsonPropertyName("ratingSumForIncrease")] + public float? RatingSumForIncrease { get; set; } - [JsonPropertyName("ratingIncreaseCount")] - public double RatingIncreaseCount { get; set; } + [JsonPropertyName("ratingIncreaseCount")] + public double? RatingIncreaseCount { get; set; } - [JsonPropertyName("ratingSumForDecrease")] - public float RatingSumForDecrease { get; set; } + [JsonPropertyName("ratingSumForDecrease")] + public float? RatingSumForDecrease { get; set; } - [JsonPropertyName("ratingDecreaseCount")] - public double RatingDecreaseCount { get; set; } + [JsonPropertyName("ratingDecreaseCount")] + public double? RatingDecreaseCount { get; set; } - [JsonPropertyName("maxSumForIncreaseRatingPerOneSale")] - public float MaxSumForIncreaseRatingPerOneSale { get; set; } + [JsonPropertyName("maxSumForIncreaseRatingPerOneSale")] + public float? MaxSumForIncreaseRatingPerOneSale { get; set; } - [JsonPropertyName("maxSumForDecreaseRatingPerOneSale")] - public float MaxSumForDecreaseRatingPerOneSale { get; set; } + [JsonPropertyName("maxSumForDecreaseRatingPerOneSale")] + public float? MaxSumForDecreaseRatingPerOneSale { get; set; } - [JsonPropertyName("maxSumForRarity")] - public MaxSumForRarity MaxSumForRarity { get; set; } + [JsonPropertyName("maxSumForRarity")] + public MaxSumForRarity? MaxSumForRarity { get; set; } - [JsonPropertyName("ChangePriceCoef")] - public float ChangePriceCoef { get; set; } + [JsonPropertyName("ChangePriceCoef")] + public float? ChangePriceCoef { get; set; } - [JsonPropertyName("ItemRestrictions")] - public List ItemRestrictions { get; set; } + [JsonPropertyName("ItemRestrictions")] + public List? ItemRestrictions { get; set; } - [JsonPropertyName("balancerUserItemSaleCooldownEnabled")] - public bool BalancerUserItemSaleCooldownEnabled { get; set; } + [JsonPropertyName("balancerUserItemSaleCooldownEnabled")] + public bool? BalancerUserItemSaleCooldownEnabled { get; set; } - [JsonPropertyName("balancerUserItemSaleCooldown")] - public float BalancerUserItemSaleCooldown { get; set; } + [JsonPropertyName("balancerUserItemSaleCooldown")] + public float? BalancerUserItemSaleCooldown { get; set; } - [JsonPropertyName("youSellOfferMaxStorageTimeInHour")] - public double YouSellOfferMaxStorageTimeInHour { get; set; } + [JsonPropertyName("youSellOfferMaxStorageTimeInHour")] + public double? YouSellOfferMaxStorageTimeInHour { get; set; } - [JsonPropertyName("yourOfferDidNotSellMaxStorageTimeInHour")] - public double YourOfferDidNotSellMaxStorageTimeInHour { get; set; } + [JsonPropertyName("yourOfferDidNotSellMaxStorageTimeInHour")] + public double? YourOfferDidNotSellMaxStorageTimeInHour { get; set; } - [JsonPropertyName("isOnlyFoundInRaidAllowed")] - public bool IsOnlyFoundInRaidAllowed { get; set; } + [JsonPropertyName("isOnlyFoundInRaidAllowed")] + public bool? IsOnlyFoundInRaidAllowed { get; set; } - [JsonPropertyName("sellInOnePiece")] - public double SellInOnePiece { get; set; } + [JsonPropertyName("sellInOnePiece")] + public double? SellInOnePiece { get; set; } } public class ItemGlobalRestrictions { - [JsonPropertyName("MaxFlea")] - public double MaxFlea { get; set; } + [JsonPropertyName("MaxFlea")] + public double? MaxFlea { get; set; } - [JsonPropertyName("MaxFleaStacked")] - public double MaxFleaStacked { get; set; } + [JsonPropertyName("MaxFleaStacked")] + public double? MaxFleaStacked { get; set; } - [JsonPropertyName("TemplateId")] - public string TemplateId { get; set; } + [JsonPropertyName("TemplateId")] + public string? TemplateId { get; set; } } public class MaxActiveOfferCount { - [JsonPropertyName("from")] - public double From { get; set; } + [JsonPropertyName("from")] + public double? From { get; set; } - [JsonPropertyName("to")] - public double To { get; set; } + [JsonPropertyName("to")] + public double? To { get; set; } - [JsonPropertyName("count")] - public double Count { get; set; } + [JsonPropertyName("count")] + public double? Count { get; set; } - [JsonPropertyName("countForSpecialEditions")] - public double CountForSpecialEditions { get; set; } + [JsonPropertyName("countForSpecialEditions")] + public double? CountForSpecialEditions { get; set; } } public class MaxSumForRarity { - [JsonPropertyName("Common")] - public RarityMaxSum Common { get; set; } + [JsonPropertyName("Common")] + public RarityMaxSum? Common { get; set; } - [JsonPropertyName("Rare")] - public RarityMaxSum Rare { get; set; } + [JsonPropertyName("Rare")] + public RarityMaxSum? Rare { get; set; } - [JsonPropertyName("Superrare")] - public RarityMaxSum Superrare { get; set; } + [JsonPropertyName("Superrare")] + public RarityMaxSum? Superrare { get; set; } - [JsonPropertyName("Not_exist")] - public RarityMaxSum NotExist { get; set; } + [JsonPropertyName("Not_exist")] + public RarityMaxSum? NotExist { get; set; } } public class RarityMaxSum { - [JsonPropertyName("value")] - public double Value { get; set; } + [JsonPropertyName("value")] + public double? Value { get; set; } } public class Handbook { - [JsonPropertyName("defaultCategory")] - public string DefaultCategory { get; set; } + [JsonPropertyName("defaultCategory")] + public string? DefaultCategory { get; set; } } public class Stamina { - [JsonPropertyName("Capacity")] - public double Capacity { get; set; } + [JsonPropertyName("Capacity")] + public double? Capacity { get; set; } - [JsonPropertyName("SprintDrainRate")] - public double SprintDrainRate { get; set; } + [JsonPropertyName("SprintDrainRate")] + public double? SprintDrainRate { get; set; } - [JsonPropertyName("BaseRestorationRate")] - public double BaseRestorationRate { get; set; } + [JsonPropertyName("BaseRestorationRate")] + public double? BaseRestorationRate { get; set; } - [JsonPropertyName("BipodAimDrainRateMultiplier")] - public double BipodAimDrainRateMultiplier { get; set; } + [JsonPropertyName("BipodAimDrainRateMultiplier")] + public double? BipodAimDrainRateMultiplier { get; set; } - [JsonPropertyName("JumpConsumption")] - public double JumpConsumption { get; set; } + [JsonPropertyName("JumpConsumption")] + public double? JumpConsumption { get; set; } - [JsonPropertyName("MountingHorizontalAimDrainRateMultiplier")] - public double MountingHorizontalAimDrainRateMultiplier { get; set; } + [JsonPropertyName("MountingHorizontalAimDrainRateMultiplier")] + public double? MountingHorizontalAimDrainRateMultiplier { get; set; } - [JsonPropertyName("MountingVerticalAimDrainRateMultiplier")] - public double MountingVerticalAimDrainRateMultiplier { get; set; } + [JsonPropertyName("MountingVerticalAimDrainRateMultiplier")] + public double? MountingVerticalAimDrainRateMultiplier { get; set; } - [JsonPropertyName("GrenadeHighThrow")] - public double GrenadeHighThrow { get; set; } + [JsonPropertyName("GrenadeHighThrow")] + public double? GrenadeHighThrow { get; set; } - [JsonPropertyName("GrenadeLowThrow")] - public double GrenadeLowThrow { get; set; } + [JsonPropertyName("GrenadeLowThrow")] + public double? GrenadeLowThrow { get; set; } - [JsonPropertyName("AimDrainRate")] - public double AimDrainRate { get; set; } + [JsonPropertyName("AimDrainRate")] + public double? AimDrainRate { get; set; } - [JsonPropertyName("AimRangeFinderDrainRate")] - public double AimRangeFinderDrainRate { get; set; } + [JsonPropertyName("AimRangeFinderDrainRate")] + public double? AimRangeFinderDrainRate { get; set; } - [JsonPropertyName("OxygenCapacity")] - public double OxygenCapacity { get; set; } + [JsonPropertyName("OxygenCapacity")] + public double? OxygenCapacity { get; set; } - [JsonPropertyName("OxygenRestoration")] - public double OxygenRestoration { get; set; } + [JsonPropertyName("OxygenRestoration")] + public double? OxygenRestoration { get; set; } - [JsonPropertyName("WalkOverweightLimits")] - public XYZ WalkOverweightLimits { get; set; } + [JsonPropertyName("WalkOverweightLimits")] + public XYZ? WalkOverweightLimits { get; set; } - [JsonPropertyName("BaseOverweightLimits")] - public XYZ BaseOverweightLimits { get; set; } + [JsonPropertyName("BaseOverweightLimits")] + public XYZ? BaseOverweightLimits { get; set; } - [JsonPropertyName("SprintOverweightLimits")] - public XYZ SprintOverweightLimits { get; set; } + [JsonPropertyName("SprintOverweightLimits")] + public XYZ? SprintOverweightLimits { get; set; } - [JsonPropertyName("WalkSpeedOverweightLimits")] - public XYZ WalkSpeedOverweightLimits { get; set; } + [JsonPropertyName("WalkSpeedOverweightLimits")] + public XYZ? WalkSpeedOverweightLimits { get; set; } - [JsonPropertyName("CrouchConsumption")] - public XYZ CrouchConsumption { get; set; } + [JsonPropertyName("CrouchConsumption")] + public XYZ? CrouchConsumption { get; set; } - [JsonPropertyName("WalkConsumption")] - public XYZ WalkConsumption { get; set; } + [JsonPropertyName("WalkConsumption")] + public XYZ? WalkConsumption { get; set; } - [JsonPropertyName("StandupConsumption")] - public XYZ StandupConsumption { get; set; } + [JsonPropertyName("StandupConsumption")] + public XYZ? StandupConsumption { get; set; } - [JsonPropertyName("TransitionSpeed")] - public XYZ TransitionSpeed { get; set; } + [JsonPropertyName("TransitionSpeed")] + public XYZ? TransitionSpeed { get; set; } - [JsonPropertyName("SprintAccelerationLowerLimit")] - public double SprintAccelerationLowerLimit { get; set; } + [JsonPropertyName("SprintAccelerationLowerLimit")] + public double? SprintAccelerationLowerLimit { get; set; } - [JsonPropertyName("SprintSpeedLowerLimit")] - public double SprintSpeedLowerLimit { get; set; } + [JsonPropertyName("SprintSpeedLowerLimit")] + public double? SprintSpeedLowerLimit { get; set; } - [JsonPropertyName("SprintSensitivityLowerLimit")] - public double SprintSensitivityLowerLimit { get; set; } + [JsonPropertyName("SprintSensitivityLowerLimit")] + public double? SprintSensitivityLowerLimit { get; set; } - [JsonPropertyName("AimConsumptionByPose")] - public XYZ AimConsumptionByPose { get; set; } + [JsonPropertyName("AimConsumptionByPose")] + public XYZ? AimConsumptionByPose { get; set; } - [JsonPropertyName("RestorationMultiplierByPose")] - public XYZ RestorationMultiplierByPose { get; set; } + [JsonPropertyName("RestorationMultiplierByPose")] + public XYZ? RestorationMultiplierByPose { get; set; } - [JsonPropertyName("OverweightConsumptionByPose")] - public XYZ OverweightConsumptionByPose { get; set; } + [JsonPropertyName("OverweightConsumptionByPose")] + public XYZ? OverweightConsumptionByPose { get; set; } - [JsonPropertyName("AimingSpeedMultiplier")] - public double AimingSpeedMultiplier { get; set; } + [JsonPropertyName("AimingSpeedMultiplier")] + public double? AimingSpeedMultiplier { get; set; } - [JsonPropertyName("WalkVisualEffectMultiplier")] - public double WalkVisualEffectMultiplier { get; set; } + [JsonPropertyName("WalkVisualEffectMultiplier")] + public double? WalkVisualEffectMultiplier { get; set; } - [JsonPropertyName("WeaponFastSwitchConsumption")] - public double WeaponFastSwitchConsumption { get; set; } + [JsonPropertyName("WeaponFastSwitchConsumption")] + public double? WeaponFastSwitchConsumption { get; set; } - [JsonPropertyName("HandsCapacity")] - public double HandsCapacity { get; set; } + [JsonPropertyName("HandsCapacity")] + public double? HandsCapacity { get; set; } - [JsonPropertyName("HandsRestoration")] - public double HandsRestoration { get; set; } + [JsonPropertyName("HandsRestoration")] + public double? HandsRestoration { get; set; } - [JsonPropertyName("ProneConsumption")] - public double ProneConsumption { get; set; } + [JsonPropertyName("ProneConsumption")] + public double? ProneConsumption { get; set; } - [JsonPropertyName("BaseHoldBreathConsumption")] - public double BaseHoldBreathConsumption { get; set; } + [JsonPropertyName("BaseHoldBreathConsumption")] + public double? BaseHoldBreathConsumption { get; set; } - [JsonPropertyName("SoundRadius")] - public XYZ SoundRadius { get; set; } + [JsonPropertyName("SoundRadius")] + public XYZ? SoundRadius { get; set; } - [JsonPropertyName("ExhaustedMeleeSpeed")] - public double ExhaustedMeleeSpeed { get; set; } + [JsonPropertyName("ExhaustedMeleeSpeed")] + public double? ExhaustedMeleeSpeed { get; set; } - [JsonPropertyName("FatigueRestorationRate")] - public double FatigueRestorationRate { get; set; } + [JsonPropertyName("FatigueRestorationRate")] + public double? FatigueRestorationRate { get; set; } - [JsonPropertyName("FatigueAmountToCreateEffect")] - public double FatigueAmountToCreateEffect { get; set; } + [JsonPropertyName("FatigueAmountToCreateEffect")] + public double? FatigueAmountToCreateEffect { get; set; } - [JsonPropertyName("ExhaustedMeleeDamageMultiplier")] - public double ExhaustedMeleeDamageMultiplier { get; set; } + [JsonPropertyName("ExhaustedMeleeDamageMultiplier")] + public double? ExhaustedMeleeDamageMultiplier { get; set; } - [JsonPropertyName("FallDamageMultiplier")] - public double FallDamageMultiplier { get; set; } + [JsonPropertyName("FallDamageMultiplier")] + public double? FallDamageMultiplier { get; set; } - [JsonPropertyName("SafeHeightOverweight")] - public double SafeHeightOverweight { get; set; } + [JsonPropertyName("SafeHeightOverweight")] + public double? SafeHeightOverweight { get; set; } - [JsonPropertyName("SitToStandConsumption")] - public double SitToStandConsumption { get; set; } + [JsonPropertyName("SitToStandConsumption")] + public double? SitToStandConsumption { get; set; } - [JsonPropertyName("StaminaExhaustionCausesJiggle")] - public bool StaminaExhaustionCausesJiggle { get; set; } + [JsonPropertyName("StaminaExhaustionCausesJiggle")] + public bool? StaminaExhaustionCausesJiggle { get; set; } - [JsonPropertyName("StaminaExhaustionStartsBreathSound")] - public bool StaminaExhaustionStartsBreathSound { get; set; } + [JsonPropertyName("StaminaExhaustionStartsBreathSound")] + public bool? StaminaExhaustionStartsBreathSound { get; set; } - [JsonPropertyName("StaminaExhaustionRocksCamera")] - public bool StaminaExhaustionRocksCamera { get; set; } + [JsonPropertyName("StaminaExhaustionRocksCamera")] + public bool? StaminaExhaustionRocksCamera { get; set; } - [JsonPropertyName("HoldBreathStaminaMultiplier")] - public XYZ HoldBreathStaminaMultiplier { get; set; } + [JsonPropertyName("HoldBreathStaminaMultiplier")] + public XYZ? HoldBreathStaminaMultiplier { get; set; } - [JsonPropertyName("PoseLevelIncreaseSpeed")] - public XYZ PoseLevelIncreaseSpeed { get; set; } + [JsonPropertyName("PoseLevelIncreaseSpeed")] + public XYZ? PoseLevelIncreaseSpeed { get; set; } - [JsonPropertyName("PoseLevelDecreaseSpeed")] - public XYZ PoseLevelDecreaseSpeed { get; set; } + [JsonPropertyName("PoseLevelDecreaseSpeed")] + public XYZ? PoseLevelDecreaseSpeed { get; set; } - [JsonPropertyName("PoseLevelConsumptionPerNotch")] - public XYZ PoseLevelConsumptionPerNotch { get; set; } - - public XYZ ClimbLegsConsumption { get; set; } - public XYZ ClimbOneHandConsumption { get; set; } - public XYZ ClimbTwoHandsConsumption { get; set; } - public XYZ VaultLegsConsumption { get; set; } - public XYZ VaultOneHandConsumption { get; set; } + [JsonPropertyName("PoseLevelConsumptionPerNotch")] + public XYZ? PoseLevelConsumptionPerNotch { get; set; } + + public XYZ? ClimbLegsConsumption { get; set; } + public XYZ? ClimbOneHandConsumption { get; set; } + public XYZ? ClimbTwoHandsConsumption { get; set; } + public XYZ? VaultLegsConsumption { get; set; } + public XYZ? VaultOneHandConsumption { get; set; } } public class StaminaRestoration { - [JsonPropertyName("LowerLeftPoint")] - public double LowerLeftPoint { get; set; } + [JsonPropertyName("LowerLeftPoint")] + public double? LowerLeftPoint { get; set; } - [JsonPropertyName("LowerRightPoint")] - public double LowerRightPoint { get; set; } + [JsonPropertyName("LowerRightPoint")] + public double? LowerRightPoint { get; set; } - [JsonPropertyName("LeftPlatoPoint")] - public double LeftPlatoPoint { get; set; } + [JsonPropertyName("LeftPlatoPoint")] + public double? LeftPlatoPoint { get; set; } - [JsonPropertyName("RightPlatoPoint")] - public double RightPlatoPoint { get; set; } + [JsonPropertyName("RightPlatoPoint")] + public double? RightPlatoPoint { get; set; } - [JsonPropertyName("RightLimit")] - public double RightLimit { get; set; } + [JsonPropertyName("RightLimit")] + public double? RightLimit { get; set; } - [JsonPropertyName("ZeroValue")] - public double ZeroValue { get; set; } + [JsonPropertyName("ZeroValue")] + public double? ZeroValue { get; set; } } public class StaminaDrain { - [JsonPropertyName("LowerLeftPoint")] - public double LowerLeftPoint { get; set; } + [JsonPropertyName("LowerLeftPoint")] + public double? LowerLeftPoint { get; set; } - [JsonPropertyName("LowerRightPoint")] - public double LowerRightPoint { get; set; } + [JsonPropertyName("LowerRightPoint")] + public double? LowerRightPoint { get; set; } - [JsonPropertyName("LeftPlatoPoint")] - public double LeftPlatoPoint { get; set; } + [JsonPropertyName("LeftPlatoPoint")] + public double? LeftPlatoPoint { get; set; } - [JsonPropertyName("RightPlatoPoint")] - public double RightPlatoPoint { get; set; } + [JsonPropertyName("RightPlatoPoint")] + public double? RightPlatoPoint { get; set; } - [JsonPropertyName("RightLimit")] - public double RightLimit { get; set; } + [JsonPropertyName("RightLimit")] + public double? RightLimit { get; set; } - [JsonPropertyName("ZeroValue")] - public double ZeroValue { get; set; } + [JsonPropertyName("ZeroValue")] + public double? ZeroValue { get; set; } } public class RequirementReferences { - [JsonPropertyName("Alpinist")] - public List Alpinists { get; set; } + [JsonPropertyName("Alpinist")] + public List? Alpinists { get; set; } } public class Alpinist { - [JsonPropertyName("Requirement")] - public string Requirement { get; set; } + [JsonPropertyName("Requirement")] + public string? Requirement { get; set; } - [JsonPropertyName("Id")] - public string Id { get; set; } + [JsonPropertyName("Id")] + public string? Id { get; set; } - [JsonPropertyName("Count")] - public double Count { get; set; } + [JsonPropertyName("Count")] + public double? Count { get; set; } - [JsonPropertyName("RequiredSlot")] - public string RequiredSlot { get; set; } + [JsonPropertyName("RequiredSlot")] + public string? RequiredSlot { get; set; } - [JsonPropertyName("RequirementTip")] - public string RequirementTip { get; set; } + [JsonPropertyName("RequirementTip")] + public string? RequirementTip { get; set; } } public class RestrictionsInRaid { - [JsonPropertyName("MaxInLobby")] - public double MaxInLobby { get; set; } + [JsonPropertyName("MaxInLobby")] + public double? MaxInLobby { get; set; } - [JsonPropertyName("MaxInRaid")] - public double MaxInRaid { get; set; } + [JsonPropertyName("MaxInRaid")] + public double? MaxInRaid { get; set; } - [JsonPropertyName("TemplateId")] - public string TemplateId { get; set; } + [JsonPropertyName("TemplateId")] + public string? TemplateId { get; set; } } public class FavoriteItemsSettings { - [JsonPropertyName("WeaponStandMaxItemsCount")] - public double WeaponStandMaxItemsCount { get; set; } + [JsonPropertyName("WeaponStandMaxItemsCount")] + public double? WeaponStandMaxItemsCount { get; set; } - [JsonPropertyName("PlaceOfFameMaxItemsCount")] - public double PlaceOfFameMaxItemsCount { get; set; } + [JsonPropertyName("PlaceOfFameMaxItemsCount")] + public double? PlaceOfFameMaxItemsCount { get; set; } } public class VaultingSettings { - [JsonPropertyName("IsActive")] - public bool IsActive { get; set; } + [JsonPropertyName("IsActive")] + public bool? IsActive { get; set; } - [JsonPropertyName("VaultingInputTime")] - public double VaultingInputTime { get; set; } + [JsonPropertyName("VaultingInputTime")] + public double? VaultingInputTime { get; set; } - [JsonPropertyName("GridSettings")] - public VaultingGridSettings GridSettings { get; set; } + [JsonPropertyName("GridSettings")] + public VaultingGridSettings? GridSettings { get; set; } - [JsonPropertyName("MovesSettings")] - public VaultingMovesSettings MovesSettings { get; set; } + [JsonPropertyName("MovesSettings")] + public VaultingMovesSettings? MovesSettings { get; set; } } public class VaultingGridSettings { - [JsonPropertyName("GridSizeX")] - public double GridSizeX { get; set; } + [JsonPropertyName("GridSizeX")] + public double? GridSizeX { get; set; } - [JsonPropertyName("GridSizeY")] - public double GridSizeY { get; set; } + [JsonPropertyName("GridSizeY")] + public double? GridSizeY { get; set; } - [JsonPropertyName("GridSizeZ")] - public double GridSizeZ { get; set; } + [JsonPropertyName("GridSizeZ")] + public double? GridSizeZ { get; set; } - [JsonPropertyName("SteppingLengthX")] - public double SteppingLengthX { get; set; } + [JsonPropertyName("SteppingLengthX")] + public double? SteppingLengthX { get; set; } - [JsonPropertyName("SteppingLengthY")] - public double SteppingLengthY { get; set; } + [JsonPropertyName("SteppingLengthY")] + public double? SteppingLengthY { get; set; } - [JsonPropertyName("SteppingLengthZ")] - public double SteppingLengthZ { get; set; } + [JsonPropertyName("SteppingLengthZ")] + public double? SteppingLengthZ { get; set; } - [JsonPropertyName("GridOffsetX")] - public double GridOffsetX { get; set; } + [JsonPropertyName("GridOffsetX")] + public double? GridOffsetX { get; set; } - [JsonPropertyName("GridOffsetY")] - public double GridOffsetY { get; set; } + [JsonPropertyName("GridOffsetY")] + public double? GridOffsetY { get; set; } - [JsonPropertyName("GridOffsetZ")] - public double GridOffsetZ { get; set; } + [JsonPropertyName("GridOffsetZ")] + public double? GridOffsetZ { get; set; } - [JsonPropertyName("OffsetFactor")] - public double OffsetFactor { get; set; } + [JsonPropertyName("OffsetFactor")] + public double? OffsetFactor { get; set; } } public class VaultingMovesSettings { - [JsonPropertyName("VaultSettings")] - public VaultingSubMoveSettings VaultSettings { get; set; } + [JsonPropertyName("VaultSettings")] + public VaultingSubMoveSettings? VaultSettings { get; set; } - [JsonPropertyName("ClimbSettings")] - public VaultingSubMoveSettings ClimbSettings { get; set; } + [JsonPropertyName("ClimbSettings")] + public VaultingSubMoveSettings? ClimbSettings { get; set; } } public class VaultingSubMoveSettings { - [JsonPropertyName("IsActive")] - public bool IsActive { get; set; } + [JsonPropertyName("IsActive")] + public bool? IsActive { get; set; } - [JsonPropertyName("MaxWithoutHandHeight")] - public double MaxWithoutHandHeight { get; set; } - public double MaxOneHandHeight { get; set; } + [JsonPropertyName("MaxWithoutHandHeight")] + public double? MaxWithoutHandHeight { get; set; } - [JsonPropertyName("SpeedRange")] - public XYZ SpeedRange { get; set; } + public double? MaxOneHandHeight { get; set; } - [JsonPropertyName("MoveRestrictions")] - public MoveRestrictions MoveRestrictions { get; set; } + [JsonPropertyName("SpeedRange")] + public XYZ? SpeedRange { get; set; } - [JsonPropertyName("AutoMoveRestrictions")] - public MoveRestrictions AutoMoveRestrictions { get; set; } + [JsonPropertyName("MoveRestrictions")] + public MoveRestrictions? MoveRestrictions { get; set; } + + [JsonPropertyName("AutoMoveRestrictions")] + public MoveRestrictions? AutoMoveRestrictions { get; set; } } public class MoveRestrictions { - [JsonPropertyName("IsActive")] - public bool IsActive { get; set; } + [JsonPropertyName("IsActive")] + public bool? IsActive { get; set; } - [JsonPropertyName("MinDistantToInteract")] - public double MinDistantToInteract { get; set; } + [JsonPropertyName("MinDistantToInteract")] + public double? MinDistantToInteract { get; set; } - [JsonPropertyName("MinHeight")] - public double MinHeight { get; set; } + [JsonPropertyName("MinHeight")] + public double? MinHeight { get; set; } - [JsonPropertyName("MaxHeight")] - public double MaxHeight { get; set; } + [JsonPropertyName("MaxHeight")] + public double? MaxHeight { get; set; } - [JsonPropertyName("MinLength")] - public double MinLength { get; set; } + [JsonPropertyName("MinLength")] + public double? MinLength { get; set; } - [JsonPropertyName("MaxLength")] - public double MaxLength { get; set; } + [JsonPropertyName("MaxLength")] + public double? MaxLength { get; set; } } public class BTRSettings { - [JsonPropertyName("LocationsWithBTR")] - public List LocationsWithBTR { get; set; } + [JsonPropertyName("LocationsWithBTR")] + public List? LocationsWithBTR { get; set; } - [JsonPropertyName("BasePriceTaxi")] - public double BasePriceTaxi { get; set; } + [JsonPropertyName("BasePriceTaxi")] + public double? BasePriceTaxi { get; set; } - [JsonPropertyName("AddPriceTaxi")] - public double AddPriceTaxi { get; set; } + [JsonPropertyName("AddPriceTaxi")] + public double? AddPriceTaxi { get; set; } - [JsonPropertyName("CleanUpPrice")] - public double CleanUpPrice { get; set; } + [JsonPropertyName("CleanUpPrice")] + public double? CleanUpPrice { get; set; } - [JsonPropertyName("DeliveryPrice")] - public double DeliveryPrice { get; set; } + [JsonPropertyName("DeliveryPrice")] + public double? DeliveryPrice { get; set; } - [JsonPropertyName("ModDeliveryCost")] - public double ModDeliveryCost { get; set; } + [JsonPropertyName("ModDeliveryCost")] + public double? ModDeliveryCost { get; set; } - [JsonPropertyName("BearPriceMod")] - public double BearPriceMod { get; set; } + [JsonPropertyName("BearPriceMod")] + public double? BearPriceMod { get; set; } - [JsonPropertyName("UsecPriceMod")] - public double UsecPriceMod { get; set; } + [JsonPropertyName("UsecPriceMod")] + public double? UsecPriceMod { get; set; } - [JsonPropertyName("ScavPriceMod")] - public double ScavPriceMod { get; set; } + [JsonPropertyName("ScavPriceMod")] + public double? ScavPriceMod { get; set; } - [JsonPropertyName("CoefficientDiscountCharisma")] - public double CoefficientDiscountCharisma { get; set; } + [JsonPropertyName("CoefficientDiscountCharisma")] + public double? CoefficientDiscountCharisma { get; set; } - [JsonPropertyName("DeliveryMinPrice")] - public double DeliveryMinPrice { get; set; } + [JsonPropertyName("DeliveryMinPrice")] + public double? DeliveryMinPrice { get; set; } - [JsonPropertyName("TaxiMinPrice")] - public double TaxiMinPrice { get; set; } + [JsonPropertyName("TaxiMinPrice")] + public double? TaxiMinPrice { get; set; } - [JsonPropertyName("BotCoverMinPrice")] - public double BotCoverMinPrice { get; set; } + [JsonPropertyName("BotCoverMinPrice")] + public double? BotCoverMinPrice { get; set; } - [JsonPropertyName("MapsConfigs")] - public Dictionary MapsConfigs { get; set; } + [JsonPropertyName("MapsConfigs")] + public Dictionary? MapsConfigs { get; set; } - [JsonPropertyName("DiameterWheel")] - public double DiameterWheel { get; set; } + [JsonPropertyName("DiameterWheel")] + public double? DiameterWheel { get; set; } - [JsonPropertyName("HeightWheel")] - public double HeightWheel { get; set; } + [JsonPropertyName("HeightWheel")] + public double? HeightWheel { get; set; } - [JsonPropertyName("HeightWheelMaxPosLimit")] - public double HeightWheelMaxPosLimit { get; set; } + [JsonPropertyName("HeightWheelMaxPosLimit")] + public double? HeightWheelMaxPosLimit { get; set; } - [JsonPropertyName("HeightWheelMinPosLimit")] - public double HeightWheelMinPosLimit { get; set; } + [JsonPropertyName("HeightWheelMinPosLimit")] + public double? HeightWheelMinPosLimit { get; set; } - [JsonPropertyName("SnapToSurfaceWheelsSpeed")] - public double SnapToSurfaceWheelsSpeed { get; set; } + [JsonPropertyName("SnapToSurfaceWheelsSpeed")] + public double? SnapToSurfaceWheelsSpeed { get; set; } - [JsonPropertyName("CheckSurfaceForWheelsTimer")] - public double CheckSurfaceForWheelsTimer { get; set; } + [JsonPropertyName("CheckSurfaceForWheelsTimer")] + public double? CheckSurfaceForWheelsTimer { get; set; } - [JsonPropertyName("HeightWheelOffset")] - public double HeightWheelOffset { get; set; } + [JsonPropertyName("HeightWheelOffset")] + public double? HeightWheelOffset { get; set; } } public class BtrMapConfig { - [JsonPropertyName("BtrSkin")] - public string BtrSkin { get; set; } + [JsonPropertyName("BtrSkin")] + public string? BtrSkin { get; set; } - [JsonPropertyName("CheckSurfaceForWheelsTimer")] - public double CheckSurfaceForWheelsTimer { get; set; } + [JsonPropertyName("CheckSurfaceForWheelsTimer")] + public double? CheckSurfaceForWheelsTimer { get; set; } - [JsonPropertyName("DiameterWheel")] - public double DiameterWheel { get; set; } + [JsonPropertyName("DiameterWheel")] + public double? DiameterWheel { get; set; } - [JsonPropertyName("HeightWheel")] - public double HeightWheel { get; set; } + [JsonPropertyName("HeightWheel")] + public double? HeightWheel { get; set; } - [JsonPropertyName("HeightWheelMaxPosLimit")] - public double HeightWheelMaxPosLimit { get; set; } + [JsonPropertyName("HeightWheelMaxPosLimit")] + public double? HeightWheelMaxPosLimit { get; set; } - [JsonPropertyName("HeightWheelMinPosLimit")] - public double HeightWheelMinPosLimit { get; set; } + [JsonPropertyName("HeightWheelMinPosLimit")] + public double? HeightWheelMinPosLimit { get; set; } - [JsonPropertyName("HeightWheelOffset")] - public double HeightWheelOffset { get; set; } + [JsonPropertyName("HeightWheelOffset")] + public double? HeightWheelOffset { get; set; } - [JsonPropertyName("SnapToSurfaceWheelsSpeed")] - public double SnapToSurfaceWheelsSpeed { get; set; } + [JsonPropertyName("SnapToSurfaceWheelsSpeed")] + public double? SnapToSurfaceWheelsSpeed { get; set; } - [JsonPropertyName("SuspensionDamperStiffness")] - public double SuspensionDamperStiffness { get; set; } + [JsonPropertyName("SuspensionDamperStiffness")] + public double? SuspensionDamperStiffness { get; set; } - [JsonPropertyName("SuspensionRestLength")] - public double SuspensionRestLength { get; set; } + [JsonPropertyName("SuspensionRestLength")] + public double? SuspensionRestLength { get; set; } - [JsonPropertyName("SuspensionSpringStiffness")] - public double SuspensionSpringStiffness { get; set; } + [JsonPropertyName("SuspensionSpringStiffness")] + public double? SuspensionSpringStiffness { get; set; } - [JsonPropertyName("SuspensionTravel")] - public double SuspensionTravel { get; set; } + [JsonPropertyName("SuspensionTravel")] + public double? SuspensionTravel { get; set; } - [JsonPropertyName("SuspensionWheelRadius")] - public double SuspensionWheelRadius { get; set; } + [JsonPropertyName("SuspensionWheelRadius")] + public double? SuspensionWheelRadius { get; set; } - [JsonPropertyName("mapID")] - public string MapID { get; set; } + [JsonPropertyName("mapID")] + public string? MapID { get; set; } - [JsonPropertyName("pathsConfigurations")] - public List PathsConfigurations { get; set; } + [JsonPropertyName("pathsConfigurations")] + public List? PathsConfigurations { get; set; } } public class PathConfig { - [JsonPropertyName("active")] - public bool Active { get; set; } + [JsonPropertyName("active")] + public bool? Active { get; set; } - [JsonPropertyName("id")] - public string Id { get; set; } + [JsonPropertyName("id")] + public string? Id { get; set; } - [JsonPropertyName("enterPoint")] - public string EnterPoint { get; set; } + [JsonPropertyName("enterPoint")] + public string? EnterPoint { get; set; } - [JsonPropertyName("exitPoint")] - public string ExitPoint { get; set; } + [JsonPropertyName("exitPoint")] + public string? ExitPoint { get; set; } - [JsonPropertyName("pathPoints")] - public List PathPoints { get; set; } + [JsonPropertyName("pathPoints")] + public List? PathPoints { get; set; } - [JsonPropertyName("once")] - public bool Once { get; set; } + [JsonPropertyName("once")] + public bool? Once { get; set; } - [JsonPropertyName("circle")] - public bool Circle { get; set; } + [JsonPropertyName("circle")] + public bool? Circle { get; set; } - [JsonPropertyName("circleCount")] - public double CircleCount { get; set; } - - [JsonPropertyName("skinType")] - public List SkinType { get; set; } + [JsonPropertyName("circleCount")] + public double? CircleCount { get; set; } + + [JsonPropertyName("skinType")] + public List? SkinType { get; set; } } public class SquadSettings { - [JsonPropertyName("CountOfRequestsToOnePlayer")] - public double CountOfRequestsToOnePlayer { get; set; } + [JsonPropertyName("CountOfRequestsToOnePlayer")] + public double? CountOfRequestsToOnePlayer { get; set; } - [JsonPropertyName("SecondsForExpiredRequest")] - public double SecondsForExpiredRequest { get; set; } + [JsonPropertyName("SecondsForExpiredRequest")] + public double? SecondsForExpiredRequest { get; set; } - [JsonPropertyName("SendRequestDelaySeconds")] - public double SendRequestDelaySeconds { get; set; } + [JsonPropertyName("SendRequestDelaySeconds")] + public double? SendRequestDelaySeconds { get; set; } } public class Insurance { - [JsonPropertyName("ChangeForReturnItemsInOfflineRaid")] - public double ChangeForReturnItemsInOfflineRaid { get; set; } + [JsonPropertyName("ChangeForReturnItemsInOfflineRaid")] + public double? ChangeForReturnItemsInOfflineRaid { get; set; } - [JsonPropertyName("MaxStorageTimeInHour")] - public double MaxStorageTimeInHour { get; set; } + [JsonPropertyName("MaxStorageTimeInHour")] + public double? MaxStorageTimeInHour { get; set; } - [JsonPropertyName("CoefOfSendingMessageTime")] - public double CoefOfSendingMessageTime { get; set; } + [JsonPropertyName("CoefOfSendingMessageTime")] + public double? CoefOfSendingMessageTime { get; set; } - [JsonPropertyName("CoefOfHavingMarkOfUnknown")] - public double CoefOfHavingMarkOfUnknown { get; set; } + [JsonPropertyName("CoefOfHavingMarkOfUnknown")] + public double? CoefOfHavingMarkOfUnknown { get; set; } - [JsonPropertyName("EditionSendingMessageTime")] - public Dictionary EditionSendingMessageTime { get; set; } + [JsonPropertyName("EditionSendingMessageTime")] + public Dictionary? EditionSendingMessageTime { get; set; } - [JsonPropertyName("OnlyInDeathCase")] - public bool OnlyInDeathCase { get; set; } + [JsonPropertyName("OnlyInDeathCase")] + public bool? OnlyInDeathCase { get; set; } } public class MessageSendTimeMultiplier { - [JsonPropertyName("multiplier")] - public double Multiplier { get; set; } + [JsonPropertyName("multiplier")] + public double? Multiplier { get; set; } } public class SkillsSettings { - [JsonPropertyName("SkillProgressRate")] - public double SkillProgressRate { get; set; } + [JsonPropertyName("SkillProgressRate")] + public double? SkillProgressRate { get; set; } - [JsonPropertyName("WeaponSkillProgressRate")] - public double WeaponSkillProgressRate { get; set; } + [JsonPropertyName("WeaponSkillProgressRate")] + public double? WeaponSkillProgressRate { get; set; } - [JsonPropertyName("WeaponSkillRecoilBonusPerLevel")] - public double WeaponSkillRecoilBonusPerLevel { get; set; } + [JsonPropertyName("WeaponSkillRecoilBonusPerLevel")] + public double? WeaponSkillRecoilBonusPerLevel { get; set; } - [JsonPropertyName("HideoutManagement")] - public HideoutManagement HideoutManagement { get; set; } + [JsonPropertyName("HideoutManagement")] + public HideoutManagement? HideoutManagement { get; set; } - [JsonPropertyName("Crafting")] - public Crafting Crafting { get; set; } + [JsonPropertyName("Crafting")] + public Crafting? Crafting { get; set; } - [JsonPropertyName("Metabolism")] - public Metabolism Metabolism { get; set; } + [JsonPropertyName("Metabolism")] + public Metabolism? Metabolism { get; set; } - [JsonPropertyName("MountingErgonomicsBonusPerLevel")] - public double MountingErgonomicsBonusPerLevel { get; set; } + [JsonPropertyName("MountingErgonomicsBonusPerLevel")] + public double? MountingErgonomicsBonusPerLevel { get; set; } - [JsonPropertyName("Immunity")] - public Immunity Immunity { get; set; } + [JsonPropertyName("Immunity")] + public Immunity? Immunity { get; set; } - [JsonPropertyName("Endurance")] - public Endurance Endurance { get; set; } + [JsonPropertyName("Endurance")] + public Endurance? Endurance { get; set; } - [JsonPropertyName("Strength")] - public Strength Strength { get; set; } + [JsonPropertyName("Strength")] + public Strength? Strength { get; set; } - [JsonPropertyName("Vitality")] - public Vitality Vitality { get; set; } + [JsonPropertyName("Vitality")] + public Vitality? Vitality { get; set; } - [JsonPropertyName("Health")] - public HealthSkillProgress Health { get; set; } + [JsonPropertyName("Health")] + public HealthSkillProgress? Health { get; set; } - [JsonPropertyName("StressResistance")] - public StressResistance StressResistance { get; set; } + [JsonPropertyName("StressResistance")] + public StressResistance? StressResistance { get; set; } - [JsonPropertyName("Throwing")] - public Throwing Throwing { get; set; } + [JsonPropertyName("Throwing")] + public Throwing? Throwing { get; set; } - [JsonPropertyName("RecoilControl")] - public RecoilControl RecoilControl { get; set; } + [JsonPropertyName("RecoilControl")] + public RecoilControl? RecoilControl { get; set; } - [JsonPropertyName("Pistol")] - public WeaponSkills Pistol { get; set; } + [JsonPropertyName("Pistol")] + public WeaponSkills? Pistol { get; set; } - [JsonPropertyName("Revolver")] - public WeaponSkills Revolver { get; set; } + [JsonPropertyName("Revolver")] + public WeaponSkills? Revolver { get; set; } - [JsonPropertyName("SMG")] - public List SMG { get; set; } + [JsonPropertyName("SMG")] + public List? SMG { get; set; } - [JsonPropertyName("Assault")] - public WeaponSkills Assault { get; set; } + [JsonPropertyName("Assault")] + public WeaponSkills? Assault { get; set; } - [JsonPropertyName("Shotgun")] - public WeaponSkills Shotgun { get; set; } + [JsonPropertyName("Shotgun")] + public WeaponSkills? Shotgun { get; set; } - [JsonPropertyName("Sniper")] - public WeaponSkills Sniper { get; set; } + [JsonPropertyName("Sniper")] + public WeaponSkills? Sniper { get; set; } - [JsonPropertyName("LMG")] - public List LMG { get; set; } + [JsonPropertyName("LMG")] + public List? LMG { get; set; } - [JsonPropertyName("HMG")] - public List HMG { get; set; } + [JsonPropertyName("HMG")] + public List? HMG { get; set; } - [JsonPropertyName("Launcher")] - public List Launcher { get; set; } + [JsonPropertyName("Launcher")] + public List? Launcher { get; set; } - [JsonPropertyName("AttachedLauncher")] - public List AttachedLauncher { get; set; } + [JsonPropertyName("AttachedLauncher")] + public List? AttachedLauncher { get; set; } - [JsonPropertyName("Melee")] - public MeleeSkill Melee { get; set; } + [JsonPropertyName("Melee")] + public MeleeSkill? Melee { get; set; } - [JsonPropertyName("DMR")] - public WeaponSkills DMR { get; set; } + [JsonPropertyName("DMR")] + public WeaponSkills? DMR { get; set; } - [JsonPropertyName("BearAssaultoperations")] - public List BearAssaultoperations { get; set; } + [JsonPropertyName("BearAssaultoperations")] + public List? BearAssaultoperations { get; set; } - [JsonPropertyName("BearAuthority")] - public List BearAuthority { get; set; } + [JsonPropertyName("BearAuthority")] + public List? BearAuthority { get; set; } - [JsonPropertyName("BearAksystems")] - public List BearAksystems { get; set; } + [JsonPropertyName("BearAksystems")] + public List? BearAksystems { get; set; } - [JsonPropertyName("BearHeavycaliber")] - public List BearHeavycaliber { get; set; } + [JsonPropertyName("BearHeavycaliber")] + public List? BearHeavycaliber { get; set; } - [JsonPropertyName("BearRawpower")] - public List BearRawpower { get; set; } + [JsonPropertyName("BearRawpower")] + public List? BearRawpower { get; set; } - [JsonPropertyName("BipodErgonomicsBonusPerLevel")] - public double BipodErgonomicsBonusPerLevel { get; set; } + [JsonPropertyName("BipodErgonomicsBonusPerLevel")] + public double? BipodErgonomicsBonusPerLevel { get; set; } - [JsonPropertyName("UsecArsystems")] - public List UsecArsystems { get; set; } + [JsonPropertyName("UsecArsystems")] + public List? UsecArsystems { get; set; } - [JsonPropertyName("UsecDeepweaponmodding_Settings")] - public List UsecDeepweaponmodding_Settings { get; set; } + [JsonPropertyName("UsecDeepweaponmodding_Settings")] + public List? UsecDeepweaponmodding_Settings { get; set; } - [JsonPropertyName("UsecLongrangeoptics_Settings")] - public List UsecLongrangeoptics_Settings { get; set; } + [JsonPropertyName("UsecLongrangeoptics_Settings")] + public List? UsecLongrangeoptics_Settings { get; set; } - [JsonPropertyName("UsecNegotiations")] - public List UsecNegotiations { get; set; } + [JsonPropertyName("UsecNegotiations")] + public List? UsecNegotiations { get; set; } - [JsonPropertyName("UsecTactics")] - public List UsecTactics { get; set; } + [JsonPropertyName("UsecTactics")] + public List? UsecTactics { get; set; } - [JsonPropertyName("BotReload")] - public List BotReload { get; set; } + [JsonPropertyName("BotReload")] + public List? BotReload { get; set; } - [JsonPropertyName("CovertMovement")] - public CovertMovement CovertMovement { get; set; } + [JsonPropertyName("CovertMovement")] + public CovertMovement? CovertMovement { get; set; } - [JsonPropertyName("FieldMedicine")] - public List FieldMedicine { get; set; } + [JsonPropertyName("FieldMedicine")] + public List? FieldMedicine { get; set; } - [JsonPropertyName("Search")] - public Search Search { get; set; } + [JsonPropertyName("Search")] + public Search? Search { get; set; } - [JsonPropertyName("Sniping")] - public List Sniping { get; set; } + [JsonPropertyName("Sniping")] + public List? Sniping { get; set; } - [JsonPropertyName("ProneMovement")] - public List ProneMovement { get; set; } + [JsonPropertyName("ProneMovement")] + public List? ProneMovement { get; set; } - [JsonPropertyName("FirstAid")] - public List FirstAid { get; set; } + [JsonPropertyName("FirstAid")] + public List? FirstAid { get; set; } - [JsonPropertyName("LightVests")] - public ArmorSkills LightVests { get; set; } + [JsonPropertyName("LightVests")] + public ArmorSkills? LightVests { get; set; } - [JsonPropertyName("HeavyVests")] - public ArmorSkills HeavyVests { get; set; } + [JsonPropertyName("HeavyVests")] + public ArmorSkills? HeavyVests { get; set; } - [JsonPropertyName("WeaponModding")] - public List WeaponModding { get; set; } + [JsonPropertyName("WeaponModding")] + public List? WeaponModding { get; set; } - [JsonPropertyName("AdvancedModding")] - public List AdvancedModding { get; set; } + [JsonPropertyName("AdvancedModding")] + public List? AdvancedModding { get; set; } - [JsonPropertyName("NightOps")] - public List NightOps { get; set; } + [JsonPropertyName("NightOps")] + public List? NightOps { get; set; } - [JsonPropertyName("SilentOps")] - public List SilentOps { get; set; } + [JsonPropertyName("SilentOps")] + public List? SilentOps { get; set; } - [JsonPropertyName("Lockpicking")] - public List Lockpicking { get; set; } + [JsonPropertyName("Lockpicking")] + public List? Lockpicking { get; set; } - [JsonPropertyName("WeaponTreatment")] - public WeaponTreatment WeaponTreatment { get; set; } + [JsonPropertyName("WeaponTreatment")] + public WeaponTreatment? WeaponTreatment { get; set; } - [JsonPropertyName("MagDrills")] - public MagDrills MagDrills { get; set; } + [JsonPropertyName("MagDrills")] + public MagDrills? MagDrills { get; set; } - [JsonPropertyName("Freetrading")] - public List Freetrading { get; set; } + [JsonPropertyName("Freetrading")] + public List? Freetrading { get; set; } - [JsonPropertyName("Auctions")] - public List Auctions { get; set; } + [JsonPropertyName("Auctions")] + public List? Auctions { get; set; } - [JsonPropertyName("Cleanoperations")] - public List Cleanoperations { get; set; } + [JsonPropertyName("Cleanoperations")] + public List? Cleanoperations { get; set; } - [JsonPropertyName("Barter")] - public List Barter { get; set; } + [JsonPropertyName("Barter")] + public List? Barter { get; set; } - [JsonPropertyName("Shadowconnections")] - public List Shadowconnections { get; set; } + [JsonPropertyName("Shadowconnections")] + public List? Shadowconnections { get; set; } - [JsonPropertyName("Taskperformance")] - public List Taskperformance { get; set; } + [JsonPropertyName("Taskperformance")] + public List? Taskperformance { get; set; } - [JsonPropertyName("Perception")] - public Perception Perception { get; set; } + [JsonPropertyName("Perception")] + public Perception? Perception { get; set; } - [JsonPropertyName("Intellect")] - public Intellect Intellect { get; set; } + [JsonPropertyName("Intellect")] + public Intellect? Intellect { get; set; } - [JsonPropertyName("Attention")] - public Attention Attention { get; set; } + [JsonPropertyName("Attention")] + public Attention? Attention { get; set; } - [JsonPropertyName("Charisma")] - public Charisma Charisma { get; set; } + [JsonPropertyName("Charisma")] + public Charisma? Charisma { get; set; } - [JsonPropertyName("Memory")] - public Memory Memory { get; set; } + [JsonPropertyName("Memory")] + public Memory? Memory { get; set; } - [JsonPropertyName("Surgery")] - public Surgery Surgery { get; set; } + [JsonPropertyName("Surgery")] + public Surgery? Surgery { get; set; } - [JsonPropertyName("AimDrills")] - public AimDrills AimDrills { get; set; } + [JsonPropertyName("AimDrills")] + public AimDrills? AimDrills { get; set; } - [JsonPropertyName("BotSound")] - public List BotSound { get; set; } + [JsonPropertyName("BotSound")] + public List? BotSound { get; set; } - [JsonPropertyName("TroubleShooting")] - public TroubleShooting TroubleShooting { get; set; } + [JsonPropertyName("TroubleShooting")] + public TroubleShooting? TroubleShooting { get; set; } } public class MeleeSkill { - public BuffSettings BuffSettings { get; set; } + public BuffSettings? BuffSettings { get; set; } } public class ArmorSkills { - public double BluntThroughputDamageHVestsReducePerLevel { get; set; } - public double WearAmountRepairHVestsReducePerLevel { get; set; } - public double WearChanceRepairHVestsReduceEliteLevel { get; set; } - public double BuffMaxCount { get; set; } - public BuffSettings BuffSettings { get; set; } - public ArmorCounters Counters { get; set; } - public double MoveSpeedPenaltyReductionHVestsReducePerLevel { get; set; } - public double RicochetChanceHVestsCurrentDurabilityThreshold { get; set; } - public double RicochetChanceHVestsEliteLevel { get; set; } - public double RicochetChanceHVestsMaxDurabilityThreshold { get; set; } - public double MeleeDamageLVestsReducePerLevel { get; set; } - public double MoveSpeedPenaltyReductionLVestsReducePerLevel { get; set; } - public double WearAmountRepairLVestsReducePerLevel { get; set; } - public double WearChanceRepairLVestsReduceEliteLevel { get; set; } + public double? BluntThroughputDamageHVestsReducePerLevel { get; set; } + public double? WearAmountRepairHVestsReducePerLevel { get; set; } + public double? WearChanceRepairHVestsReduceEliteLevel { get; set; } + public double? BuffMaxCount { get; set; } + public BuffSettings? BuffSettings { get; set; } + public ArmorCounters? Counters { get; set; } + public double? MoveSpeedPenaltyReductionHVestsReducePerLevel { get; set; } + public double? RicochetChanceHVestsCurrentDurabilityThreshold { get; set; } + public double? RicochetChanceHVestsEliteLevel { get; set; } + public double? RicochetChanceHVestsMaxDurabilityThreshold { get; set; } + public double? MeleeDamageLVestsReducePerLevel { get; set; } + public double? MoveSpeedPenaltyReductionLVestsReducePerLevel { get; set; } + public double? WearAmountRepairLVestsReducePerLevel { get; set; } + public double? WearChanceRepairLVestsReduceEliteLevel { get; set; } } public class ArmorCounters { - [JsonPropertyName("armorDurability")] - public SkillCounter ArmorDurability { get; set; } + [JsonPropertyName("armorDurability")] + public SkillCounter? ArmorDurability { get; set; } } public class HideoutManagement { - public double SkillPointsPerAreaUpgrade { get; set; } - public double SkillPointsPerCraft { get; set; } - public double CircleOfCultistsBonusPercent { get; set; } - public double ConsumptionReductionPerLevel { get; set; } - public double SkillBoostPercent { get; set; } - public SkillPointsRate SkillPointsRate { get; set; } - public EliteSlots EliteSlots { get; set; } + public double? SkillPointsPerAreaUpgrade { get; set; } + public double? SkillPointsPerCraft { get; set; } + public double? CircleOfCultistsBonusPercent { get; set; } + public double? ConsumptionReductionPerLevel { get; set; } + public double? SkillBoostPercent { get; set; } + public SkillPointsRate? SkillPointsRate { get; set; } + public EliteSlots? EliteSlots { get; set; } } public class SkillPointsRate { - public SkillPointRate Generator { get; set; } - public SkillPointRate AirFilteringUnit { get; set; } - public SkillPointRate WaterCollector { get; set; } - public SkillPointRate SolarPower { get; set; } + public SkillPointRate? Generator { get; set; } + public SkillPointRate? AirFilteringUnit { get; set; } + public SkillPointRate? WaterCollector { get; set; } + public SkillPointRate? SolarPower { get; set; } } public class SkillPointRate { - public double ResourceSpent { get; set; } - public double PointsGained { get; set; } + public double? ResourceSpent { get; set; } + public double? PointsGained { get; set; } } public class EliteSlots { - public EliteSlot Generator { get; set; } - public EliteSlot AirFilteringUnit { get; set; } - public EliteSlot WaterCollector { get; set; } - public EliteSlot BitcoinFarm { get; set; } + public EliteSlot? Generator { get; set; } + public EliteSlot? AirFilteringUnit { get; set; } + public EliteSlot? WaterCollector { get; set; } + public EliteSlot? BitcoinFarm { get; set; } } public class EliteSlot { - public double Slots { get; set; } - public double Container { get; set; } + public double? Slots { get; set; } + public double? Container { get; set; } } public class Crafting { - [JsonPropertyName("DependentSkillRatios")] - public List DependentSkillRatios { get; set; } - - [JsonPropertyName("PointsPerCraftingCycle")] - public double PointsPerCraftingCycle { get; set; } + [JsonPropertyName("DependentSkillRatios")] + public List? DependentSkillRatios { get; set; } - [JsonPropertyName("CraftingCycleHours")] - public double CraftingCycleHours { get; set; } + [JsonPropertyName("PointsPerCraftingCycle")] + public double? PointsPerCraftingCycle { get; set; } - [JsonPropertyName("PointsPerUniqueCraftCycle")] - public double PointsPerUniqueCraftCycle { get; set; } + [JsonPropertyName("CraftingCycleHours")] + public double? CraftingCycleHours { get; set; } - [JsonPropertyName("UniqueCraftsPerCycle")] - public double UniqueCraftsPerCycle { get; set; } + [JsonPropertyName("PointsPerUniqueCraftCycle")] + public double? PointsPerUniqueCraftCycle { get; set; } - [JsonPropertyName("CraftTimeReductionPerLevel")] - public double CraftTimeReductionPerLevel { get; set; } + [JsonPropertyName("UniqueCraftsPerCycle")] + public double? UniqueCraftsPerCycle { get; set; } - [JsonPropertyName("ProductionTimeReductionPerLevel")] - public double ProductionTimeReductionPerLevel { get; set; } + [JsonPropertyName("CraftTimeReductionPerLevel")] + public double? CraftTimeReductionPerLevel { get; set; } - [JsonPropertyName("EliteExtraProductions")] - public double EliteExtraProductions { get; set; } + [JsonPropertyName("ProductionTimeReductionPerLevel")] + public double? ProductionTimeReductionPerLevel { get; set; } - // Yes, there is a typo - [JsonPropertyName("CraftingPointsToInteligence")] - public double CraftingPointsToIntelligence { get; set; } + [JsonPropertyName("EliteExtraProductions")] + public double? EliteExtraProductions { get; set; } + + // Yes, there is a typo + [JsonPropertyName("CraftingPointsToInteligence")] + public double? CraftingPointsToIntelligence { get; set; } } public class Metabolism { - [JsonPropertyName("HydrationRecoveryRate")] - public double HydrationRecoveryRate { get; set; } + [JsonPropertyName("HydrationRecoveryRate")] + public double? HydrationRecoveryRate { get; set; } - [JsonPropertyName("EnergyRecoveryRate")] - public double EnergyRecoveryRate { get; set; } + [JsonPropertyName("EnergyRecoveryRate")] + public double? EnergyRecoveryRate { get; set; } - [JsonPropertyName("IncreasePositiveEffectDurationRate")] - public double IncreasePositiveEffectDurationRate { get; set; } + [JsonPropertyName("IncreasePositiveEffectDurationRate")] + public double? IncreasePositiveEffectDurationRate { get; set; } - [JsonPropertyName("DecreaseNegativeEffectDurationRate")] - public double DecreaseNegativeEffectDurationRate { get; set; } + [JsonPropertyName("DecreaseNegativeEffectDurationRate")] + public double? DecreaseNegativeEffectDurationRate { get; set; } - [JsonPropertyName("DecreasePoisonDurationRate")] - public double DecreasePoisonDurationRate { get; set; } + [JsonPropertyName("DecreasePoisonDurationRate")] + public double? DecreasePoisonDurationRate { get; set; } } public class Immunity { - [JsonPropertyName("ImmunityMiscEffects")] - public double ImmunityMiscEffects { get; set; } + [JsonPropertyName("ImmunityMiscEffects")] + public double? ImmunityMiscEffects { get; set; } - [JsonPropertyName("ImmunityPoisonBuff")] - public double ImmunityPoisonBuff { get; set; } + [JsonPropertyName("ImmunityPoisonBuff")] + public double? ImmunityPoisonBuff { get; set; } - [JsonPropertyName("ImmunityPainKiller")] - public double ImmunityPainKiller { get; set; } + [JsonPropertyName("ImmunityPainKiller")] + public double? ImmunityPainKiller { get; set; } - [JsonPropertyName("HealthNegativeEffect")] - public double HealthNegativeEffect { get; set; } + [JsonPropertyName("HealthNegativeEffect")] + public double? HealthNegativeEffect { get; set; } - [JsonPropertyName("StimulatorNegativeBuff")] - public double StimulatorNegativeBuff { get; set; } + [JsonPropertyName("StimulatorNegativeBuff")] + public double? StimulatorNegativeBuff { get; set; } } public class Endurance { - [JsonPropertyName("MovementAction")] - public double MovementAction { get; set; } + [JsonPropertyName("MovementAction")] + public double? MovementAction { get; set; } - [JsonPropertyName("SprintAction")] - public double SprintAction { get; set; } + [JsonPropertyName("SprintAction")] + public double? SprintAction { get; set; } - [JsonPropertyName("GainPerFatigueStack")] - public double GainPerFatigueStack { get; set; } + [JsonPropertyName("GainPerFatigueStack")] + public double? GainPerFatigueStack { get; set; } - [JsonPropertyName("DependentSkillRatios")] - public List DependentSkillRatios { get; set; } + [JsonPropertyName("DependentSkillRatios")] + public List? DependentSkillRatios { get; set; } - [JsonPropertyName("QTELevelMultipliers")] - public Dictionary> QTELevelMultipliers { get; set; } + [JsonPropertyName("QTELevelMultipliers")] + public Dictionary>? QTELevelMultipliers { get; set; } } public class Strength { - [JsonPropertyName("DependentSkillRatios")] - public List DependentSkillRatios { get; set; } + [JsonPropertyName("DependentSkillRatios")] + public List? DependentSkillRatios { get; set; } - [JsonPropertyName("SprintActionMin")] - public double SprintActionMin { get; set; } + [JsonPropertyName("SprintActionMin")] + public double? SprintActionMin { get; set; } - [JsonPropertyName("SprintActionMax")] - public double SprintActionMax { get; set; } + [JsonPropertyName("SprintActionMax")] + public double? SprintActionMax { get; set; } - [JsonPropertyName("MovementActionMin")] - public double MovementActionMin { get; set; } + [JsonPropertyName("MovementActionMin")] + public double? MovementActionMin { get; set; } - [JsonPropertyName("MovementActionMax")] - public double MovementActionMax { get; set; } + [JsonPropertyName("MovementActionMax")] + public double? MovementActionMax { get; set; } - [JsonPropertyName("PushUpMin")] - public double PushUpMin { get; set; } + [JsonPropertyName("PushUpMin")] + public double? PushUpMin { get; set; } - [JsonPropertyName("PushUpMax")] - public double PushUpMax { get; set; } + [JsonPropertyName("PushUpMax")] + public double? PushUpMax { get; set; } - [JsonPropertyName("QTELevelMultipliers")] - public List QTELevelMultipliers { get; set; } + [JsonPropertyName("QTELevelMultipliers")] + public List? QTELevelMultipliers { get; set; } - [JsonPropertyName("FistfightAction")] - public double FistfightAction { get; set; } + [JsonPropertyName("FistfightAction")] + public double? FistfightAction { get; set; } - [JsonPropertyName("ThrowAction")] - public double ThrowAction { get; set; } + [JsonPropertyName("ThrowAction")] + public double? ThrowAction { get; set; } } public class DependentSkillRatio { - [JsonPropertyName("Ratio")] - public double Ratio { get; set; } + [JsonPropertyName("Ratio")] + public double? Ratio { get; set; } - [JsonPropertyName("SkillId")] - public string SkillId { get; set; } + [JsonPropertyName("SkillId")] + public string? SkillId { get; set; } } public class QTELevelMultiplier { - [JsonPropertyName("Level")] - public double Level { get; set; } + [JsonPropertyName("Level")] + public double? Level { get; set; } - [JsonPropertyName("Multiplier")] - public double Multiplier { get; set; } + [JsonPropertyName("Multiplier")] + public double? Multiplier { get; set; } } public class Vitality { - [JsonPropertyName("DamageTakenAction")] - public double DamageTakenAction { get; set; } + [JsonPropertyName("DamageTakenAction")] + public double? DamageTakenAction { get; set; } - [JsonPropertyName("HealthNegativeEffect")] - public double HealthNegativeEffect { get; set; } + [JsonPropertyName("HealthNegativeEffect")] + public double? HealthNegativeEffect { get; set; } } public class HealthSkillProgress { - [JsonPropertyName("SkillProgress")] - public double SkillProgress { get; set; } + [JsonPropertyName("SkillProgress")] + public double? SkillProgress { get; set; } } public class StressResistance { - [JsonPropertyName("HealthNegativeEffect")] - public double HealthNegativeEffect { get; set; } + [JsonPropertyName("HealthNegativeEffect")] + public double? HealthNegativeEffect { get; set; } - [JsonPropertyName("LowHPDuration")] - public double LowHPDuration { get; set; } + [JsonPropertyName("LowHPDuration")] + public double? LowHPDuration { get; set; } } public class Throwing { - [JsonPropertyName("ThrowAction")] - public double ThrowAction { get; set; } + [JsonPropertyName("ThrowAction")] + public double? ThrowAction { get; set; } } public class RecoilControl { - [JsonPropertyName("RecoilAction")] - public double RecoilAction { get; set; } + [JsonPropertyName("RecoilAction")] + public double? RecoilAction { get; set; } - [JsonPropertyName("RecoilBonusPerLevel")] - public double RecoilBonusPerLevel { get; set; } + [JsonPropertyName("RecoilBonusPerLevel")] + public double? RecoilBonusPerLevel { get; set; } } public class WeaponSkills { - [JsonPropertyName("WeaponReloadAction")] - public double WeaponReloadAction { get; set; } + [JsonPropertyName("WeaponReloadAction")] + public double? WeaponReloadAction { get; set; } - [JsonPropertyName("WeaponShotAction")] - public double WeaponShotAction { get; set; } + [JsonPropertyName("WeaponShotAction")] + public double? WeaponShotAction { get; set; } - [JsonPropertyName("WeaponFixAction")] - public double WeaponFixAction { get; set; } + [JsonPropertyName("WeaponFixAction")] + public double? WeaponFixAction { get; set; } - [JsonPropertyName("WeaponChamberAction")] - public double WeaponChamberAction { get; set; } + [JsonPropertyName("WeaponChamberAction")] + public double? WeaponChamberAction { get; set; } } public class CovertMovement { - [JsonPropertyName("MovementAction")] - public double MovementAction { get; set; } + [JsonPropertyName("MovementAction")] + public double? MovementAction { get; set; } } public class Search { - [JsonPropertyName("SearchAction")] - public double SearchAction { get; set; } + [JsonPropertyName("SearchAction")] + public double? SearchAction { get; set; } - [JsonPropertyName("FindAction")] - public double FindAction { get; set; } + [JsonPropertyName("FindAction")] + public double? FindAction { get; set; } } public class WeaponTreatment { - [JsonPropertyName("BuffMaxCount")] - public double BuffMaxCount { get; set; } + [JsonPropertyName("BuffMaxCount")] + public double? BuffMaxCount { get; set; } - [JsonPropertyName("BuffSettings")] - public BuffSettings BuffSettings { get; set; } + [JsonPropertyName("BuffSettings")] + public BuffSettings? BuffSettings { get; set; } - [JsonPropertyName("Counters")] - public WeaponTreatmentCounters Counters { get; set; } + [JsonPropertyName("Counters")] + public WeaponTreatmentCounters? Counters { get; set; } - [JsonPropertyName("DurLossReducePerLevel")] - public double DurLossReducePerLevel { get; set; } + [JsonPropertyName("DurLossReducePerLevel")] + public double? DurLossReducePerLevel { get; set; } - [JsonPropertyName("SkillPointsPerRepair")] - public double SkillPointsPerRepair { get; set; } + [JsonPropertyName("SkillPointsPerRepair")] + public double? SkillPointsPerRepair { get; set; } - [JsonPropertyName("Filter")] - public List Filter { get; set; } + [JsonPropertyName("Filter")] + public List? Filter { get; set; } - [JsonPropertyName("WearAmountRepairGunsReducePerLevel")] - public double WearAmountRepairGunsReducePerLevel { get; set; } + [JsonPropertyName("WearAmountRepairGunsReducePerLevel")] + public double? WearAmountRepairGunsReducePerLevel { get; set; } - [JsonPropertyName("WearChanceRepairGunsReduceEliteLevel")] - public double WearChanceRepairGunsReduceEliteLevel { get; set; } + [JsonPropertyName("WearChanceRepairGunsReduceEliteLevel")] + public double? WearChanceRepairGunsReduceEliteLevel { get; set; } } public class WeaponTreatmentCounters { - [JsonPropertyName("firearmsDurability")] - public SkillCounter FirearmsDurability { get; set; } + [JsonPropertyName("firearmsDurability")] + public SkillCounter? FirearmsDurability { get; set; } } public class BuffSettings { - [JsonPropertyName("CommonBuffChanceLevelBonus")] - public double CommonBuffChanceLevelBonus { get; set; } + [JsonPropertyName("CommonBuffChanceLevelBonus")] + public double? CommonBuffChanceLevelBonus { get; set; } - [JsonPropertyName("CommonBuffMinChanceValue")] - public double CommonBuffMinChanceValue { get; set; } + [JsonPropertyName("CommonBuffMinChanceValue")] + public double? CommonBuffMinChanceValue { get; set; } - [JsonPropertyName("CurrentDurabilityLossToRemoveBuff")] - public double? CurrentDurabilityLossToRemoveBuff { get; set; } + [JsonPropertyName("CurrentDurabilityLossToRemoveBuff")] + public double? CurrentDurabilityLossToRemoveBuff { get; set; } - [JsonPropertyName("MaxDurabilityLossToRemoveBuff")] - public double? MaxDurabilityLossToRemoveBuff { get; set; } + [JsonPropertyName("MaxDurabilityLossToRemoveBuff")] + public double? MaxDurabilityLossToRemoveBuff { get; set; } - [JsonPropertyName("RareBuffChanceCoff")] - public double RareBuffChanceCoff { get; set; } + [JsonPropertyName("RareBuffChanceCoff")] + public double? RareBuffChanceCoff { get; set; } - [JsonPropertyName("ReceivedDurabilityMaxPercent")] - public double ReceivedDurabilityMaxPercent { get; set; } + [JsonPropertyName("ReceivedDurabilityMaxPercent")] + public double? ReceivedDurabilityMaxPercent { get; set; } } public class MagDrills { - [JsonPropertyName("RaidLoadedAmmoAction")] - public double RaidLoadedAmmoAction { get; set; } + [JsonPropertyName("RaidLoadedAmmoAction")] + public double? RaidLoadedAmmoAction { get; set; } - [JsonPropertyName("RaidUnloadedAmmoAction")] - public double RaidUnloadedAmmoAction { get; set; } + [JsonPropertyName("RaidUnloadedAmmoAction")] + public double? RaidUnloadedAmmoAction { get; set; } - [JsonPropertyName("MagazineCheckAction")] - public double MagazineCheckAction { get; set; } + [JsonPropertyName("MagazineCheckAction")] + public double? MagazineCheckAction { get; set; } } public class Perception { - [JsonPropertyName("DependentSkillRatios")] - public List DependentSkillRatios { get; set; } + [JsonPropertyName("DependentSkillRatios")] + public List? DependentSkillRatios { get; set; } - [JsonPropertyName("OnlineAction")] - public double OnlineAction { get; set; } + [JsonPropertyName("OnlineAction")] + public double? OnlineAction { get; set; } - [JsonPropertyName("UniqueLoot")] - public double UniqueLoot { get; set; } + [JsonPropertyName("UniqueLoot")] + public double? UniqueLoot { get; set; } } public class SkillRatio { - [JsonPropertyName("Ratio")] - public double Ratio { get; set; } + [JsonPropertyName("Ratio")] + public double? Ratio { get; set; } - [JsonPropertyName("SkillId")] - public string SkillId { get; set; } + [JsonPropertyName("SkillId")] + public string? SkillId { get; set; } } public class Intellect { - public SkillRatio[] DependentSkillRatios { get; set; } - - [JsonPropertyName("Counters")] - public IntellectCounters Counters { get; set; } + public SkillRatio[] DependentSkillRatios { get; set; } - [JsonPropertyName("ExamineAction")] - public double ExamineAction { get; set; } + [JsonPropertyName("Counters")] + public IntellectCounters? Counters { get; set; } - [JsonPropertyName("SkillProgress")] - public double SkillProgress { get; set; } + [JsonPropertyName("ExamineAction")] + public double? ExamineAction { get; set; } - [JsonPropertyName("RepairAction")] - public double RepairAction { get; set; } + [JsonPropertyName("SkillProgress")] + public double? SkillProgress { get; set; } - [JsonPropertyName("WearAmountReducePerLevel")] - public double WearAmountReducePerLevel { get; set; } + [JsonPropertyName("RepairAction")] + public double? RepairAction { get; set; } - [JsonPropertyName("WearChanceReduceEliteLevel")] - public double WearChanceReduceEliteLevel { get; set; } + [JsonPropertyName("WearAmountReducePerLevel")] + public double? WearAmountReducePerLevel { get; set; } - [JsonPropertyName("RepairPointsCostReduction")] - public double RepairPointsCostReduction { get; set; } + [JsonPropertyName("WearChanceReduceEliteLevel")] + public double? WearChanceReduceEliteLevel { get; set; } + + [JsonPropertyName("RepairPointsCostReduction")] + public double? RepairPointsCostReduction { get; set; } } public class IntellectCounters { - [JsonPropertyName("armorDurability")] - public SkillCounter ArmorDurability { get; set; } + [JsonPropertyName("armorDurability")] + public SkillCounter? ArmorDurability { get; set; } - [JsonPropertyName("firearmsDurability")] - public SkillCounter FirearmsDurability { get; set; } + [JsonPropertyName("firearmsDurability")] + public SkillCounter? FirearmsDurability { get; set; } - [JsonPropertyName("meleeWeaponDurability")] - public SkillCounter MeleeWeaponDurability { get; set; } + [JsonPropertyName("meleeWeaponDurability")] + public SkillCounter? MeleeWeaponDurability { get; set; } } public class SkillCounter { - [JsonPropertyName("divisor")] - public double Divisor { get; set; } + [JsonPropertyName("divisor")] + public double? Divisor { get; set; } - [JsonPropertyName("points")] - public double Points { get; set; } + [JsonPropertyName("points")] + public double? Points { get; set; } } public class Attention { - [JsonPropertyName("DependentSkillRatios")] - public SkillRatio[] DependentSkillRatios { get; set; } + [JsonPropertyName("DependentSkillRatios")] + public SkillRatio[] DependentSkillRatios { get; set; } - [JsonPropertyName("ExamineWithInstruction")] - public double ExamineWithInstruction { get; set; } + [JsonPropertyName("ExamineWithInstruction")] + public double? ExamineWithInstruction { get; set; } - [JsonPropertyName("FindActionFalse")] - public double FindActionFalse { get; set; } + [JsonPropertyName("FindActionFalse")] + public double? FindActionFalse { get; set; } - [JsonPropertyName("FindActionTrue")] - public double FindActionTrue { get; set; } + [JsonPropertyName("FindActionTrue")] + public double? FindActionTrue { get; set; } } public class Charisma { - [JsonPropertyName("BonusSettings")] - public BonusSettings BonusSettings { get; set; } + [JsonPropertyName("BonusSettings")] + public BonusSettings? BonusSettings { get; set; } - [JsonPropertyName("Counters")] - public CharismaSkillCounters Counters { get; set; } + [JsonPropertyName("Counters")] + public CharismaSkillCounters? Counters { get; set; } - [JsonPropertyName("SkillProgressInt")] - public double SkillProgressInt { get; set; } + [JsonPropertyName("SkillProgressInt")] + public double? SkillProgressInt { get; set; } - [JsonPropertyName("SkillProgressAtn")] - public double SkillProgressAtn { get; set; } + [JsonPropertyName("SkillProgressAtn")] + public double? SkillProgressAtn { get; set; } - [JsonPropertyName("SkillProgressPer")] - public double SkillProgressPer { get; set; } + [JsonPropertyName("SkillProgressPer")] + public double? SkillProgressPer { get; set; } } public class CharismaSkillCounters { - [JsonPropertyName("insuranceCost")] - public SkillCounter InsuranceCost { get; set; } + [JsonPropertyName("insuranceCost")] + public SkillCounter? InsuranceCost { get; set; } - [JsonPropertyName("repairCost")] - public SkillCounter RepairCost { get; set; } + [JsonPropertyName("repairCost")] + public SkillCounter? RepairCost { get; set; } - [JsonPropertyName("repeatableQuestCompleteCount")] - public SkillCounter RepeatableQuestCompleteCount { get; set; } + [JsonPropertyName("repeatableQuestCompleteCount")] + public SkillCounter? RepeatableQuestCompleteCount { get; set; } - [JsonPropertyName("restoredHealthCost")] - public SkillCounter RestoredHealthCost { get; set; } + [JsonPropertyName("restoredHealthCost")] + public SkillCounter? RestoredHealthCost { get; set; } - [JsonPropertyName("scavCaseCost")] - public SkillCounter ScavCaseCost { get; set; } + [JsonPropertyName("scavCaseCost")] + public SkillCounter? ScavCaseCost { get; set; } } public class BonusSettings { - [JsonPropertyName("EliteBonusSettings")] - public EliteBonusSettings EliteBonusSettings { get; set; } + [JsonPropertyName("EliteBonusSettings")] + public EliteBonusSettings? EliteBonusSettings { get; set; } - [JsonPropertyName("LevelBonusSettings")] - public LevelBonusSettings LevelBonusSettings { get; set; } + [JsonPropertyName("LevelBonusSettings")] + public LevelBonusSettings? LevelBonusSettings { get; set; } } public class EliteBonusSettings { - [JsonPropertyName("FenceStandingLossDiscount")] - public double FenceStandingLossDiscount { get; set; } + [JsonPropertyName("FenceStandingLossDiscount")] + public double? FenceStandingLossDiscount { get; set; } - [JsonPropertyName("RepeatableQuestExtraCount")] - public double RepeatableQuestExtraCount { get; set; } + [JsonPropertyName("RepeatableQuestExtraCount")] + public double? RepeatableQuestExtraCount { get; set; } - [JsonPropertyName("ScavCaseDiscount")] - public double ScavCaseDiscount { get; set; } + [JsonPropertyName("ScavCaseDiscount")] + public double? ScavCaseDiscount { get; set; } } public class LevelBonusSettings { - [JsonPropertyName("HealthRestoreDiscount")] - public double HealthRestoreDiscount { get; set; } + [JsonPropertyName("HealthRestoreDiscount")] + public double? HealthRestoreDiscount { get; set; } - [JsonPropertyName("HealthRestoreTraderDiscount")] - public double HealthRestoreTraderDiscount { get; set; } + [JsonPropertyName("HealthRestoreTraderDiscount")] + public double? HealthRestoreTraderDiscount { get; set; } - [JsonPropertyName("InsuranceDiscount")] - public double InsuranceDiscount { get; set; } + [JsonPropertyName("InsuranceDiscount")] + public double? InsuranceDiscount { get; set; } - [JsonPropertyName("InsuranceTraderDiscount")] - public double InsuranceTraderDiscount { get; set; } + [JsonPropertyName("InsuranceTraderDiscount")] + public double? InsuranceTraderDiscount { get; set; } - [JsonPropertyName("PaidExitDiscount")] - public double PaidExitDiscount { get; set; } + [JsonPropertyName("PaidExitDiscount")] + public double? PaidExitDiscount { get; set; } - [JsonPropertyName("RepeatableQuestChangeDiscount")] - public double RepeatableQuestChangeDiscount { get; set; } + [JsonPropertyName("RepeatableQuestChangeDiscount")] + public double? RepeatableQuestChangeDiscount { get; set; } } public class Memory { - [JsonPropertyName("AnySkillUp")] - public double AnySkillUp { get; set; } + [JsonPropertyName("AnySkillUp")] + public double? AnySkillUp { get; set; } - [JsonPropertyName("SkillProgress")] - public double SkillProgress { get; set; } + [JsonPropertyName("SkillProgress")] + public double? SkillProgress { get; set; } } public class Surgery { - [JsonPropertyName("SurgeryAction")] - public double SurgeryAction { get; set; } + [JsonPropertyName("SurgeryAction")] + public double? SurgeryAction { get; set; } - [JsonPropertyName("SkillProgress")] - public double SkillProgress { get; set; } + [JsonPropertyName("SkillProgress")] + public double? SkillProgress { get; set; } } public class AimDrills { - [JsonPropertyName("WeaponShotAction")] - public double WeaponShotAction { get; set; } + [JsonPropertyName("WeaponShotAction")] + public double? WeaponShotAction { get; set; } } public class TroubleShooting { - [JsonPropertyName("MalfRepairSpeedBonusPerLevel")] - public double MalfRepairSpeedBonusPerLevel { get; set; } + [JsonPropertyName("MalfRepairSpeedBonusPerLevel")] + public double? MalfRepairSpeedBonusPerLevel { get; set; } - [JsonPropertyName("SkillPointsPerMalfFix")] - public double SkillPointsPerMalfFix { get; set; } + [JsonPropertyName("SkillPointsPerMalfFix")] + public double? SkillPointsPerMalfFix { get; set; } - [JsonPropertyName("EliteDurabilityChanceReduceMult")] - public double EliteDurabilityChanceReduceMult { get; set; } + [JsonPropertyName("EliteDurabilityChanceReduceMult")] + public double? EliteDurabilityChanceReduceMult { get; set; } - [JsonPropertyName("EliteAmmoChanceReduceMult")] - public double EliteAmmoChanceReduceMult { get; set; } + [JsonPropertyName("EliteAmmoChanceReduceMult")] + public double? EliteAmmoChanceReduceMult { get; set; } - [JsonPropertyName("EliteMagChanceReduceMult")] - public double EliteMagChanceReduceMult { get; set; } + [JsonPropertyName("EliteMagChanceReduceMult")] + public double? EliteMagChanceReduceMult { get; set; } } public class Aiming { - [JsonPropertyName("ProceduralIntensityByPose")] - public XYZ ProceduralIntensityByPose { get; set; } + [JsonPropertyName("ProceduralIntensityByPose")] + public XYZ? ProceduralIntensityByPose { get; set; } - [JsonPropertyName("AimProceduralIntensity")] - public double AimProceduralIntensity { get; set; } + [JsonPropertyName("AimProceduralIntensity")] + public double? AimProceduralIntensity { get; set; } - [JsonPropertyName("HeavyWeight")] - public double HeavyWeight { get; set; } + [JsonPropertyName("HeavyWeight")] + public double? HeavyWeight { get; set; } - [JsonPropertyName("LightWeight")] - public double LightWeight { get; set; } + [JsonPropertyName("LightWeight")] + public double? LightWeight { get; set; } - [JsonPropertyName("MaxTimeHeavy")] - public double MaxTimeHeavy { get; set; } + [JsonPropertyName("MaxTimeHeavy")] + public double? MaxTimeHeavy { get; set; } - [JsonPropertyName("MinTimeHeavy")] - public double MinTimeHeavy { get; set; } + [JsonPropertyName("MinTimeHeavy")] + public double? MinTimeHeavy { get; set; } - [JsonPropertyName("MaxTimeLight")] - public double MaxTimeLight { get; set; } + [JsonPropertyName("MaxTimeLight")] + public double? MaxTimeLight { get; set; } - [JsonPropertyName("MinTimeLight")] - public double MinTimeLight { get; set; } + [JsonPropertyName("MinTimeLight")] + public double? MinTimeLight { get; set; } - [JsonPropertyName("RecoilScaling")] - public double RecoilScaling { get; set; } + [JsonPropertyName("RecoilScaling")] + public double? RecoilScaling { get; set; } - [JsonPropertyName("RecoilDamping")] - public double RecoilDamping { get; set; } + [JsonPropertyName("RecoilDamping")] + public double? RecoilDamping { get; set; } - [JsonPropertyName("CameraSnapGlobalMult")] - public double CameraSnapGlobalMult { get; set; } + [JsonPropertyName("CameraSnapGlobalMult")] + public double? CameraSnapGlobalMult { get; set; } - [JsonPropertyName("RecoilXIntensityByPose")] - public XYZ RecoilXIntensityByPose { get; set; } + [JsonPropertyName("RecoilXIntensityByPose")] + public XYZ? RecoilXIntensityByPose { get; set; } - [JsonPropertyName("RecoilYIntensityByPose")] - public XYZ RecoilYIntensityByPose { get; set; } + [JsonPropertyName("RecoilYIntensityByPose")] + public XYZ? RecoilYIntensityByPose { get; set; } - [JsonPropertyName("RecoilZIntensityByPose")] - public XYZ RecoilZIntensityByPose { get; set; } + [JsonPropertyName("RecoilZIntensityByPose")] + public XYZ? RecoilZIntensityByPose { get; set; } - [JsonPropertyName("RecoilCrank")] - public bool RecoilCrank { get; set; } + [JsonPropertyName("RecoilCrank")] + public bool? RecoilCrank { get; set; } - [JsonPropertyName("RecoilHandDamping")] - public double RecoilHandDamping { get; set; } + [JsonPropertyName("RecoilHandDamping")] + public double? RecoilHandDamping { get; set; } - [JsonPropertyName("RecoilConvergenceMult")] - public double RecoilConvergenceMult { get; set; } + [JsonPropertyName("RecoilConvergenceMult")] + public double? RecoilConvergenceMult { get; set; } - [JsonPropertyName("RecoilVertBonus")] - public double RecoilVertBonus { get; set; } + [JsonPropertyName("RecoilVertBonus")] + public double? RecoilVertBonus { get; set; } - [JsonPropertyName("RecoilBackBonus")] - public double RecoilBackBonus { get; set; } + [JsonPropertyName("RecoilBackBonus")] + public double? RecoilBackBonus { get; set; } } public class Malfunction { - [JsonPropertyName("AmmoMalfChanceMult")] - public double AmmoMalfChanceMult { get; set; } + [JsonPropertyName("AmmoMalfChanceMult")] + public double? AmmoMalfChanceMult { get; set; } - [JsonPropertyName("MagazineMalfChanceMult")] - public double MagazineMalfChanceMult { get; set; } + [JsonPropertyName("MagazineMalfChanceMult")] + public double? MagazineMalfChanceMult { get; set; } - [JsonPropertyName("MalfRepairHardSlideMult")] - public double MalfRepairHardSlideMult { get; set; } + [JsonPropertyName("MalfRepairHardSlideMult")] + public double? MalfRepairHardSlideMult { get; set; } - [JsonPropertyName("MalfRepairOneHandBrokenMult")] - public double MalfRepairOneHandBrokenMult { get; set; } + [JsonPropertyName("MalfRepairOneHandBrokenMult")] + public double? MalfRepairOneHandBrokenMult { get; set; } - [JsonPropertyName("MalfRepairTwoHandsBrokenMult")] - public double MalfRepairTwoHandsBrokenMult { get; set; } + [JsonPropertyName("MalfRepairTwoHandsBrokenMult")] + public double? MalfRepairTwoHandsBrokenMult { get; set; } - [JsonPropertyName("AllowMalfForBots")] - public bool AllowMalfForBots { get; set; } + [JsonPropertyName("AllowMalfForBots")] + public bool? AllowMalfForBots { get; set; } - [JsonPropertyName("ShowGlowAttemptsCount")] - public double ShowGlowAttemptsCount { get; set; } + [JsonPropertyName("ShowGlowAttemptsCount")] + public double? ShowGlowAttemptsCount { get; set; } - [JsonPropertyName("OutToIdleSpeedMultForPistol")] - public double OutToIdleSpeedMultForPistol { get; set; } + [JsonPropertyName("OutToIdleSpeedMultForPistol")] + public double? OutToIdleSpeedMultForPistol { get; set; } - [JsonPropertyName("IdleToOutSpeedMultOnMalf")] - public double IdleToOutSpeedMultOnMalf { get; set; } + [JsonPropertyName("IdleToOutSpeedMultOnMalf")] + public double? IdleToOutSpeedMultOnMalf { get; set; } - [JsonPropertyName("TimeToQuickdrawPistol")] - public double TimeToQuickdrawPistol { get; set; } + [JsonPropertyName("TimeToQuickdrawPistol")] + public double? TimeToQuickdrawPistol { get; set; } - [JsonPropertyName("DurRangeToIgnoreMalfs")] - public XYZ DurRangeToIgnoreMalfs { get; set; } + [JsonPropertyName("DurRangeToIgnoreMalfs")] + public XYZ? DurRangeToIgnoreMalfs { get; set; } - [JsonPropertyName("DurFeedWt")] - public double DurFeedWt { get; set; } + [JsonPropertyName("DurFeedWt")] + public double? DurFeedWt { get; set; } - [JsonPropertyName("DurMisfireWt")] - public double DurMisfireWt { get; set; } + [JsonPropertyName("DurMisfireWt")] + public double? DurMisfireWt { get; set; } - [JsonPropertyName("DurJamWt")] - public double DurJamWt { get; set; } + [JsonPropertyName("DurJamWt")] + public double? DurJamWt { get; set; } - [JsonPropertyName("DurSoftSlideWt")] - public double DurSoftSlideWt { get; set; } + [JsonPropertyName("DurSoftSlideWt")] + public double? DurSoftSlideWt { get; set; } - [JsonPropertyName("DurHardSlideMinWt")] - public double DurHardSlideMinWt { get; set; } + [JsonPropertyName("DurHardSlideMinWt")] + public double? DurHardSlideMinWt { get; set; } - [JsonPropertyName("DurHardSlideMaxWt")] - public double DurHardSlideMaxWt { get; set; } + [JsonPropertyName("DurHardSlideMaxWt")] + public double? DurHardSlideMaxWt { get; set; } - [JsonPropertyName("AmmoMisfireWt")] - public double AmmoMisfireWt { get; set; } + [JsonPropertyName("AmmoMisfireWt")] + public double? AmmoMisfireWt { get; set; } - [JsonPropertyName("AmmoFeedWt")] - public double AmmoFeedWt { get; set; } + [JsonPropertyName("AmmoFeedWt")] + public double? AmmoFeedWt { get; set; } - [JsonPropertyName("AmmoJamWt")] - public double AmmoJamWt { get; set; } + [JsonPropertyName("AmmoJamWt")] + public double? AmmoJamWt { get; set; } - [JsonPropertyName("OverheatFeedWt")] - public double OverheatFeedWt { get; set; } + [JsonPropertyName("OverheatFeedWt")] + public double? OverheatFeedWt { get; set; } - [JsonPropertyName("OverheatJamWt")] - public double OverheatJamWt { get; set; } + [JsonPropertyName("OverheatJamWt")] + public double? OverheatJamWt { get; set; } - [JsonPropertyName("OverheatSoftSlideWt")] - public double OverheatSoftSlideWt { get; set; } + [JsonPropertyName("OverheatSoftSlideWt")] + public double? OverheatSoftSlideWt { get; set; } - [JsonPropertyName("OverheatHardSlideMinWt")] - public double OverheatHardSlideMinWt { get; set; } + [JsonPropertyName("OverheatHardSlideMinWt")] + public double? OverheatHardSlideMinWt { get; set; } - [JsonPropertyName("OverheatHardSlideMaxWt")] - public double OverheatHardSlideMaxWt { get; set; } + [JsonPropertyName("OverheatHardSlideMaxWt")] + public double? OverheatHardSlideMaxWt { get; set; } } public class Overheat { - [JsonPropertyName("MinOverheat")] - public double MinimumOverheat { get; set; } + [JsonPropertyName("MinOverheat")] + public double? MinimumOverheat { get; set; } - [JsonPropertyName("MaxOverheat")] - public double MaximumOverheat { get; set; } + [JsonPropertyName("MaxOverheat")] + public double? MaximumOverheat { get; set; } - [JsonPropertyName("OverheatProblemsStart")] - public double OverheatProblemsStart { get; set; } + [JsonPropertyName("OverheatProblemsStart")] + public double? OverheatProblemsStart { get; set; } - [JsonPropertyName("ModHeatFactor")] - public double ModificationHeatFactor { get; set; } + [JsonPropertyName("ModHeatFactor")] + public double? ModificationHeatFactor { get; set; } - [JsonPropertyName("ModCoolFactor")] - public double ModificationCoolFactor { get; set; } + [JsonPropertyName("ModCoolFactor")] + public double? ModificationCoolFactor { get; set; } - [JsonPropertyName("MinWearOnOverheat")] - public double MinimumWearOnOverheat { get; set; } + [JsonPropertyName("MinWearOnOverheat")] + public double? MinimumWearOnOverheat { get; set; } - [JsonPropertyName("MaxWearOnOverheat")] - public double MaximumWearOnOverheat { get; set; } + [JsonPropertyName("MaxWearOnOverheat")] + public double? MaximumWearOnOverheat { get; set; } - [JsonPropertyName("MinWearOnMaxOverheat")] - public double MinimumWearOnMaximumOverheat { get; set; } + [JsonPropertyName("MinWearOnMaxOverheat")] + public double? MinimumWearOnMaximumOverheat { get; set; } - [JsonPropertyName("MaxWearOnMaxOverheat")] - public double MaximumWearOnMaximumOverheat { get; set; } + [JsonPropertyName("MaxWearOnMaxOverheat")] + public double? MaximumWearOnMaximumOverheat { get; set; } - [JsonPropertyName("OverheatWearLimit")] - public double OverheatWearLimit { get; set; } + [JsonPropertyName("OverheatWearLimit")] + public double? OverheatWearLimit { get; set; } - [JsonPropertyName("MaxCOIIncreaseMult")] - public double MaximumCOIIncreaseMultiplier { get; set; } + [JsonPropertyName("MaxCOIIncreaseMult")] + public double? MaximumCOIIncreaseMultiplier { get; set; } - [JsonPropertyName("MinMalfChance")] - public double MinimumMalfunctionChance { get; set; } + [JsonPropertyName("MinMalfChance")] + public double? MinimumMalfunctionChance { get; set; } - [JsonPropertyName("MaxMalfChance")] - public double MaximumMalfunctionChance { get; set; } + [JsonPropertyName("MaxMalfChance")] + public double? MaximumMalfunctionChance { get; set; } - [JsonPropertyName("DurReduceMinMult")] - public double DurabilityReductionMinimumMultiplier { get; set; } + [JsonPropertyName("DurReduceMinMult")] + public double? DurabilityReductionMinimumMultiplier { get; set; } - [JsonPropertyName("DurReduceMaxMult")] - public double DurabilityReductionMaximumMultiplier { get; set; } + [JsonPropertyName("DurReduceMaxMult")] + public double? DurabilityReductionMaximumMultiplier { get; set; } - [JsonPropertyName("BarrelMoveRndDuration")] - public double BarrelMovementRandomDuration { get; set; } + [JsonPropertyName("BarrelMoveRndDuration")] + public double? BarrelMovementRandomDuration { get; set; } - [JsonPropertyName("BarrelMoveMaxMult")] - public double BarrelMovementMaximumMultiplier { get; set; } + [JsonPropertyName("BarrelMoveMaxMult")] + public double? BarrelMovementMaximumMultiplier { get; set; } - [JsonPropertyName("FireratePitchMult")] - public double FireRatePitchMultiplier { get; set; } + [JsonPropertyName("FireratePitchMult")] + public double? FireRatePitchMultiplier { get; set; } - [JsonPropertyName("FirerateReduceMinMult")] - public double FireRateReductionMinimumMultiplier { get; set; } + [JsonPropertyName("FirerateReduceMinMult")] + public double? FireRateReductionMinimumMultiplier { get; set; } - [JsonPropertyName("FirerateReduceMaxMult")] - public double FireRateReductionMaximumMultiplier { get; set; } + [JsonPropertyName("FirerateReduceMaxMult")] + public double? FireRateReductionMaximumMultiplier { get; set; } - [JsonPropertyName("FirerateOverheatBorder")] - public double FireRateOverheatBorder { get; set; } + [JsonPropertyName("FirerateOverheatBorder")] + public double? FireRateOverheatBorder { get; set; } - [JsonPropertyName("EnableSlideOnMaxOverheat")] - public bool IsSlideEnabledOnMaximumOverheat { get; set; } + [JsonPropertyName("EnableSlideOnMaxOverheat")] + public bool? IsSlideEnabledOnMaximumOverheat { get; set; } - [JsonPropertyName("StartSlideOverheat")] - public double StartSlideOverheat { get; set; } + [JsonPropertyName("StartSlideOverheat")] + public double? StartSlideOverheat { get; set; } - [JsonPropertyName("FixSlideOverheat")] - public double FixSlideOverheat { get; set; } + [JsonPropertyName("FixSlideOverheat")] + public double? FixSlideOverheat { get; set; } - [JsonPropertyName("AutoshotMinOverheat")] - public double AutoshotMinimumOverheat { get; set; } + [JsonPropertyName("AutoshotMinOverheat")] + public double? AutoshotMinimumOverheat { get; set; } - [JsonPropertyName("AutoshotChance")] - public double AutoshotChance { get; set; } + [JsonPropertyName("AutoshotChance")] + public double? AutoshotChance { get; set; } - [JsonPropertyName("AutoshotPossibilityDuration")] - public double AutoshotPossibilityDuration { get; set; } + [JsonPropertyName("AutoshotPossibilityDuration")] + public double? AutoshotPossibilityDuration { get; set; } - [JsonPropertyName("MaxOverheatCoolCoef")] - public double MaximumOverheatCoolCoefficient { get; set; } + [JsonPropertyName("MaxOverheatCoolCoef")] + public double? MaximumOverheatCoolCoefficient { get; set; } } public class FenceSettings { - [JsonPropertyName("FenceId")] - public string FenceIdentifier { get; set; } + [JsonPropertyName("FenceId")] + public string? FenceIdentifier { get; set; } - [JsonPropertyName("Levels")] - public Dictionary Levels { get; set; } + [JsonPropertyName("Levels")] + public Dictionary? Levels { get; set; } - [JsonPropertyName("paidExitStandingNumerator")] - public double PaidExitStandingNumerator { get; set; } - public double PmcBotKillStandingMultiplier { get; set; } + [JsonPropertyName("paidExitStandingNumerator")] + public double? PaidExitStandingNumerator { get; set; } + + public double? PmcBotKillStandingMultiplier { get; set; } } public class FenceLevel { - [JsonPropertyName("ReachOnMarkOnUnknowns")] - public bool CanReachOnMarkOnUnknowns { get; set; } + [JsonPropertyName("ReachOnMarkOnUnknowns")] + public bool? CanReachOnMarkOnUnknowns { get; set; } - [JsonPropertyName("SavageCooldownModifier")] - public double SavageCooldownModifier { get; set; } + [JsonPropertyName("SavageCooldownModifier")] + public double? SavageCooldownModifier { get; set; } - [JsonPropertyName("ScavCaseTimeModifier")] - public double ScavCaseTimeModifier { get; set; } + [JsonPropertyName("ScavCaseTimeModifier")] + public double? ScavCaseTimeModifier { get; set; } - [JsonPropertyName("PaidExitCostModifier")] - public double PaidExitCostModifier { get; set; } + [JsonPropertyName("PaidExitCostModifier")] + public double? PaidExitCostModifier { get; set; } - [JsonPropertyName("BotFollowChance")] - public double BotFollowChance { get; set; } + [JsonPropertyName("BotFollowChance")] + public double? BotFollowChance { get; set; } - [JsonPropertyName("ScavEquipmentSpawnChanceModifier")] - public double ScavEquipmentSpawnChanceModifier { get; set; } + [JsonPropertyName("ScavEquipmentSpawnChanceModifier")] + public double? ScavEquipmentSpawnChanceModifier { get; set; } - [JsonPropertyName("TransitGridSize")] - public XYZ TransitGridSize { get; set; } + [JsonPropertyName("TransitGridSize")] + public XYZ? TransitGridSize { get; set; } - [JsonPropertyName("PriceModifier")] - public double PriceModifier { get; set; } + [JsonPropertyName("PriceModifier")] + public double? PriceModifier { get; set; } - [JsonPropertyName("HostileBosses")] - public bool AreHostileBossesPresent { get; set; } + [JsonPropertyName("HostileBosses")] + public bool? AreHostileBossesPresent { get; set; } - [JsonPropertyName("HostileScavs")] - public bool AreHostileScavsPresent { get; set; } + [JsonPropertyName("HostileScavs")] + public bool? AreHostileScavsPresent { get; set; } - [JsonPropertyName("ScavAttackSupport")] - public bool IsScavAttackSupported { get; set; } + [JsonPropertyName("ScavAttackSupport")] + public bool? IsScavAttackSupported { get; set; } - [JsonPropertyName("ExfiltrationPriceModifier")] - public double ExfiltrationPriceModifier { get; set; } + [JsonPropertyName("ExfiltrationPriceModifier")] + public double? ExfiltrationPriceModifier { get; set; } - [JsonPropertyName("AvailableExits")] - public double AvailableExits { get; set; } + [JsonPropertyName("AvailableExits")] + public double? AvailableExits { get; set; } - [JsonPropertyName("BotApplySilenceChance")] - public double BotApplySilenceChance { get; set; } + [JsonPropertyName("BotApplySilenceChance")] + public double? BotApplySilenceChance { get; set; } - [JsonPropertyName("BotGetInCoverChance")] - public double BotGetInCoverChance { get; set; } + [JsonPropertyName("BotGetInCoverChance")] + public double? BotGetInCoverChance { get; set; } - [JsonPropertyName("BotHelpChance")] - public double BotHelpChance { get; set; } + [JsonPropertyName("BotHelpChance")] + public double? BotHelpChance { get; set; } - [JsonPropertyName("BotSpreadoutChance")] - public double BotSpreadoutChance { get; set; } + [JsonPropertyName("BotSpreadoutChance")] + public double? BotSpreadoutChance { get; set; } - [JsonPropertyName("BotStopChance")] - public double BotStopChance { get; set; } + [JsonPropertyName("BotStopChance")] + public double? BotStopChance { get; set; } - [JsonPropertyName("PriceModTaxi")] - public double PriceModifierTaxi { get; set; } + [JsonPropertyName("PriceModTaxi")] + public double? PriceModifierTaxi { get; set; } - [JsonPropertyName("PriceModDelivery")] - public double PriceModifierDelivery { get; set; } + [JsonPropertyName("PriceModDelivery")] + public double? PriceModifierDelivery { get; set; } - [JsonPropertyName("PriceModCleanUp")] - public double PriceModifierCleanUp { get; set; } + [JsonPropertyName("PriceModCleanUp")] + public double? PriceModifierCleanUp { get; set; } - [JsonPropertyName("ReactOnMarkOnUnknowns")] - public bool ReactOnMarkOnUnknowns { get; set; } + [JsonPropertyName("ReactOnMarkOnUnknowns")] + public bool? ReactOnMarkOnUnknowns { get; set; } - [JsonPropertyName("ReactOnMarkOnUnknownsPVE")] - public bool ReactOnMarkOnUnknownsPVE { get; set; } + [JsonPropertyName("ReactOnMarkOnUnknownsPVE")] + public bool? ReactOnMarkOnUnknownsPVE { get; set; } - [JsonPropertyName("DeliveryGridSize")] - public XYZ DeliveryGridSize { get; set; } + [JsonPropertyName("DeliveryGridSize")] + public XYZ? DeliveryGridSize { get; set; } - [JsonPropertyName("CanInteractWithBtr")] - public bool CanInteractWithBtr { get; set; } + [JsonPropertyName("CanInteractWithBtr")] + public bool? CanInteractWithBtr { get; set; } - [JsonPropertyName("CircleOfCultistsBonusPercent")] - public double CircleOfCultistsBonusPercentage { get; set; } + [JsonPropertyName("CircleOfCultistsBonusPercent")] + public double? CircleOfCultistsBonusPercentage { get; set; } } public class Inertia { - [JsonPropertyName("InertiaLimits")] - public XYZ InertiaLimits { get; set; } + [JsonPropertyName("InertiaLimits")] + public XYZ? InertiaLimits { get; set; } - [JsonPropertyName("InertiaLimitsStep")] - public double InertiaLimitsStep { get; set; } + [JsonPropertyName("InertiaLimitsStep")] + public double? InertiaLimitsStep { get; set; } - [JsonPropertyName("ExitMovementStateSpeedThreshold")] - public XYZ ExitMovementStateSpeedThreshold { get; set; } + [JsonPropertyName("ExitMovementStateSpeedThreshold")] + public XYZ? ExitMovementStateSpeedThreshold { get; set; } - [JsonPropertyName("WalkInertia")] - public XYZ WalkInertia { get; set; } + [JsonPropertyName("WalkInertia")] + public XYZ? WalkInertia { get; set; } - [JsonPropertyName("FallThreshold")] - public double FallThreshold { get; set; } + [JsonPropertyName("FallThreshold")] + public double? FallThreshold { get; set; } - [JsonPropertyName("SpeedLimitAfterFallMin")] - public XYZ SpeedLimitAfterFallMin { get; set; } + [JsonPropertyName("SpeedLimitAfterFallMin")] + public XYZ? SpeedLimitAfterFallMin { get; set; } - [JsonPropertyName("SpeedLimitAfterFallMax")] - public XYZ SpeedLimitAfterFallMax { get; set; } + [JsonPropertyName("SpeedLimitAfterFallMax")] + public XYZ? SpeedLimitAfterFallMax { get; set; } - [JsonPropertyName("SpeedLimitDurationMin")] - public XYZ SpeedLimitDurationMin { get; set; } + [JsonPropertyName("SpeedLimitDurationMin")] + public XYZ? SpeedLimitDurationMin { get; set; } - [JsonPropertyName("SpeedLimitDurationMax")] - public XYZ SpeedLimitDurationMax { get; set; } + [JsonPropertyName("SpeedLimitDurationMax")] + public XYZ? SpeedLimitDurationMax { get; set; } - [JsonPropertyName("SpeedInertiaAfterJump")] - public XYZ SpeedInertiaAfterJump { get; set; } + [JsonPropertyName("SpeedInertiaAfterJump")] + public XYZ? SpeedInertiaAfterJump { get; set; } - [JsonPropertyName("BaseJumpPenaltyDuration")] - public double BaseJumpPenaltyDuration { get; set; } + [JsonPropertyName("BaseJumpPenaltyDuration")] + public double? BaseJumpPenaltyDuration { get; set; } - [JsonPropertyName("DurationPower")] - public double DurationPower { get; set; } + [JsonPropertyName("DurationPower")] + public double? DurationPower { get; set; } - [JsonPropertyName("BaseJumpPenalty")] - public double BaseJumpPenalty { get; set; } + [JsonPropertyName("BaseJumpPenalty")] + public double? BaseJumpPenalty { get; set; } - [JsonPropertyName("PenaltyPower")] - public double PenaltyPower { get; set; } + [JsonPropertyName("PenaltyPower")] + public double? PenaltyPower { get; set; } - [JsonPropertyName("InertiaTiltCurveMin")] - public XYZ InertiaTiltCurveMin { get; set; } + [JsonPropertyName("InertiaTiltCurveMin")] + public XYZ? InertiaTiltCurveMin { get; set; } - [JsonPropertyName("InertiaTiltCurveMax")] - public XYZ InertiaTiltCurveMax { get; set; } + [JsonPropertyName("InertiaTiltCurveMax")] + public XYZ? InertiaTiltCurveMax { get; set; } - [JsonPropertyName("InertiaBackwardCoef")] - public XYZ InertiaBackwardCoef { get; set; } + [JsonPropertyName("InertiaBackwardCoef")] + public XYZ? InertiaBackwardCoef { get; set; } - [JsonPropertyName("TiltInertiaMaxSpeed")] - public XYZ TiltInertiaMaxSpeed { get; set; } + [JsonPropertyName("TiltInertiaMaxSpeed")] + public XYZ? TiltInertiaMaxSpeed { get; set; } - [JsonPropertyName("TiltStartSideBackSpeed")] - public XYZ TiltStartSideBackSpeed { get; set; } + [JsonPropertyName("TiltStartSideBackSpeed")] + public XYZ? TiltStartSideBackSpeed { get; set; } - [JsonPropertyName("TiltMaxSideBackSpeed")] - public XYZ TiltMaxSideBackSpeed { get; set; } + [JsonPropertyName("TiltMaxSideBackSpeed")] + public XYZ? TiltMaxSideBackSpeed { get; set; } - [JsonPropertyName("TiltAcceleration")] - public XYZ TiltAcceleration { get; set; } + [JsonPropertyName("TiltAcceleration")] + public XYZ? TiltAcceleration { get; set; } - [JsonPropertyName("AverageRotationFrameSpan")] - public double AverageRotationFrameSpan { get; set; } + [JsonPropertyName("AverageRotationFrameSpan")] + public double? AverageRotationFrameSpan { get; set; } - [JsonPropertyName("SprintSpeedInertiaCurveMin")] - public XYZ SprintSpeedInertiaCurveMin { get; set; } + [JsonPropertyName("SprintSpeedInertiaCurveMin")] + public XYZ? SprintSpeedInertiaCurveMin { get; set; } - [JsonPropertyName("SprintSpeedInertiaCurveMax")] - public XYZ SprintSpeedInertiaCurveMax { get; set; } + [JsonPropertyName("SprintSpeedInertiaCurveMax")] + public XYZ? SprintSpeedInertiaCurveMax { get; set; } - [JsonPropertyName("SprintBrakeInertia")] - public XYZ SprintBrakeInertia { get; set; } + [JsonPropertyName("SprintBrakeInertia")] + public XYZ? SprintBrakeInertia { get; set; } - [JsonPropertyName("SprintTransitionMotionPreservation")] - public XYZ SprintTransitionMotionPreservation { get; set; } + [JsonPropertyName("SprintTransitionMotionPreservation")] + public XYZ? SprintTransitionMotionPreservation { get; set; } - [JsonPropertyName("WeaponFlipSpeed")] - public XYZ WeaponFlipSpeed { get; set; } + [JsonPropertyName("WeaponFlipSpeed")] + public XYZ? WeaponFlipSpeed { get; set; } - [JsonPropertyName("PreSprintAccelerationLimits")] - public XYZ PreSprintAccelerationLimits { get; set; } + [JsonPropertyName("PreSprintAccelerationLimits")] + public XYZ? PreSprintAccelerationLimits { get; set; } - [JsonPropertyName("SprintAccelerationLimits")] - public XYZ SprintAccelerationLimits { get; set; } + [JsonPropertyName("SprintAccelerationLimits")] + public XYZ? SprintAccelerationLimits { get; set; } - [JsonPropertyName("SideTime")] - public XYZ SideTime { get; set; } + [JsonPropertyName("SideTime")] + public XYZ? SideTime { get; set; } - [JsonPropertyName("DiagonalTime")] - public XYZ DiagonalTime { get; set; } + [JsonPropertyName("DiagonalTime")] + public XYZ? DiagonalTime { get; set; } - [JsonPropertyName("MaxTimeWithoutInput")] - public XYZ MaxTimeWithoutInput { get; set; } + [JsonPropertyName("MaxTimeWithoutInput")] + public XYZ? MaxTimeWithoutInput { get; set; } - [JsonPropertyName("MinDirectionBlendTime")] - public double MinDirectionBlendTime { get; set; } + [JsonPropertyName("MinDirectionBlendTime")] + public double? MinDirectionBlendTime { get; set; } - [JsonPropertyName("MoveTimeRange")] - public XYZ MoveTimeRange { get; set; } + [JsonPropertyName("MoveTimeRange")] + public XYZ? MoveTimeRange { get; set; } - [JsonPropertyName("ProneDirectionAccelerationRange")] - public XYZ ProneDirectionAccelerationRange { get; set; } + [JsonPropertyName("ProneDirectionAccelerationRange")] + public XYZ? ProneDirectionAccelerationRange { get; set; } - [JsonPropertyName("ProneSpeedAccelerationRange")] - public XYZ ProneSpeedAccelerationRange { get; set; } + [JsonPropertyName("ProneSpeedAccelerationRange")] + public XYZ? ProneSpeedAccelerationRange { get; set; } - [JsonPropertyName("MinMovementAccelerationRangeRight")] - public XYZ MinMovementAccelerationRangeRight { get; set; } + [JsonPropertyName("MinMovementAccelerationRangeRight")] + public XYZ? MinMovementAccelerationRangeRight { get; set; } - [JsonPropertyName("MaxMovementAccelerationRangeRight")] - public XYZ MaxMovementAccelerationRangeRight { get; set; } - - public XYZ CrouchSpeedAccelerationRange { get; set; } + [JsonPropertyName("MaxMovementAccelerationRangeRight")] + public XYZ? MaxMovementAccelerationRangeRight { get; set; } + + public XYZ? CrouchSpeedAccelerationRange { get; set; } } public class Ballistic { - [JsonPropertyName("GlobalDamageDegradationCoefficient")] - public double GlobalDamageDegradationCoefficient { get; set; } + [JsonPropertyName("GlobalDamageDegradationCoefficient")] + public double? GlobalDamageDegradationCoefficient { get; set; } } public class RepairSettings { - [JsonPropertyName("ItemEnhancementSettings")] - public ItemEnhancementSettings ItemEnhancementSettings { get; set; } + [JsonPropertyName("ItemEnhancementSettings")] + public ItemEnhancementSettings? ItemEnhancementSettings { get; set; } - [JsonPropertyName("MinimumLevelToApplyBuff")] - public double MinimumLevelToApplyBuff { get; set; } + [JsonPropertyName("MinimumLevelToApplyBuff")] + public double? MinimumLevelToApplyBuff { get; set; } - [JsonPropertyName("RepairStrategies")] - public RepairStrategies RepairStrategies { get; set; } + [JsonPropertyName("RepairStrategies")] + public RepairStrategies? RepairStrategies { get; set; } - [JsonPropertyName("armorClassDivisor")] - public double ArmorClassDivisor { get; set; } + [JsonPropertyName("armorClassDivisor")] + public double? ArmorClassDivisor { get; set; } - [JsonPropertyName("durabilityPointCostArmor")] - public double DurabilityPointCostArmor { get; set; } + [JsonPropertyName("durabilityPointCostArmor")] + public double? DurabilityPointCostArmor { get; set; } - [JsonPropertyName("durabilityPointCostGuns")] - public double DurabilityPointCostGuns { get; set; } + [JsonPropertyName("durabilityPointCostGuns")] + public double? DurabilityPointCostGuns { get; set; } } public class ItemEnhancementSettings { - [JsonPropertyName("DamageReduction")] - public PriceModifier DamageReduction { get; set; } + [JsonPropertyName("DamageReduction")] + public PriceModifier? DamageReduction { get; set; } - [JsonPropertyName("MalfunctionProtections")] - public PriceModifier MalfunctionProtections { get; set; } + [JsonPropertyName("MalfunctionProtections")] + public PriceModifier? MalfunctionProtections { get; set; } - [JsonPropertyName("WeaponSpread")] - public PriceModifier WeaponSpread { get; set; } + [JsonPropertyName("WeaponSpread")] + public PriceModifier? WeaponSpread { get; set; } } public class PriceModifier { - [JsonPropertyName("PriceModifier")] - public double PriceModifierValue { get; set; } + [JsonPropertyName("PriceModifier")] + public double? PriceModifierValue { get; set; } } public class RepairStrategies { - [JsonPropertyName("Armor")] - public RepairStrategy Armor { get; set; } + [JsonPropertyName("Armor")] + public RepairStrategy? Armor { get; set; } - [JsonPropertyName("Firearms")] - public RepairStrategy Firearms { get; set; } + [JsonPropertyName("Firearms")] + public RepairStrategy? Firearms { get; set; } } public class RepairStrategy { - [JsonPropertyName("BuffTypes")] - public List BuffTypes { get; set; } + [JsonPropertyName("BuffTypes")] + public List? BuffTypes { get; set; } - [JsonPropertyName("Filter")] - public List Filter { get; set; } + [JsonPropertyName("Filter")] + public List? Filter { get; set; } } public class BotPreset { - [JsonPropertyName("UseThis")] - public bool UseThis { get; set; } + [JsonPropertyName("UseThis")] + public bool? UseThis { get; set; } - [JsonPropertyName("Role")] - public string Role { get; set; } + [JsonPropertyName("Role")] + public string? Role { get; set; } - [JsonPropertyName("BotDifficulty")] - public string BotDifficulty { get; set; } + [JsonPropertyName("BotDifficulty")] + public string? BotDifficulty { get; set; } - [JsonPropertyName("VisibleAngle")] - public double VisibleAngle { get; set; } + [JsonPropertyName("VisibleAngle")] + public double? VisibleAngle { get; set; } - [JsonPropertyName("VisibleDistance")] - public double VisibleDistance { get; set; } + [JsonPropertyName("VisibleDistance")] + public double? VisibleDistance { get; set; } - [JsonPropertyName("ScatteringPerMeter")] - public double ScatteringPerMeter { get; set; } + [JsonPropertyName("ScatteringPerMeter")] + public double? ScatteringPerMeter { get; set; } - [JsonPropertyName("HearingSense")] - public double HearingSense { get; set; } + [JsonPropertyName("HearingSense")] + public double? HearingSense { get; set; } - [JsonPropertyName("SCATTERING_DIST_MODIF")] - public double ScatteringDistModif { get; set; } + [JsonPropertyName("SCATTERING_DIST_MODIF")] + public double? ScatteringDistModif { get; set; } - [JsonPropertyName("MAX_AIMING_UPGRADE_BY_TIME")] - public double MaxAimingUpgradeByTime { get; set; } + [JsonPropertyName("MAX_AIMING_UPGRADE_BY_TIME")] + public double? MaxAimingUpgradeByTime { get; set; } - [JsonPropertyName("FIRST_CONTACT_ADD_SEC")] - public double FirstContactAddSec { get; set; } + [JsonPropertyName("FIRST_CONTACT_ADD_SEC")] + public double? FirstContactAddSec { get; set; } - [JsonPropertyName("COEF_IF_MOVE")] - public double CoefIfMove { get; set; } + [JsonPropertyName("COEF_IF_MOVE")] + public double? CoefIfMove { get; set; } } public class AudioSettings { - [JsonPropertyName("AudioGroupPresets")] - public List AudioGroupPresets { get; set; } - [JsonPropertyName("EnvironmentSettings")] - public EnvironmentSettings EnvironmentSettings { get; set; } - [JsonPropertyName("PlayerSettings")] - public PlayerSettings PlayerSettings { get; set; } - [JsonPropertyName("RadioBroadcastSettings")] - public RadioBroadcastSettings RadioBroadcastSettings { get; set; } + [JsonPropertyName("AudioGroupPresets")] + public List? AudioGroupPresets { get; set; } + + [JsonPropertyName("EnvironmentSettings")] + public EnvironmentSettings? EnvironmentSettings { get; set; } + + [JsonPropertyName("PlayerSettings")] + public PlayerSettings? PlayerSettings { get; set; } + + [JsonPropertyName("RadioBroadcastSettings")] + public RadioBroadcastSettings? RadioBroadcastSettings { get; set; } } public class AudioGroupPreset { - [JsonPropertyName("AngleToAllowBinaural")] - public double AngleToAllowBinaural { get; set; } + [JsonPropertyName("AngleToAllowBinaural")] + public double? AngleToAllowBinaural { get; set; } - [JsonPropertyName("DisabledBinauralByDistance")] - public bool DisabledBinauralByDistance { get; set; } + [JsonPropertyName("DisabledBinauralByDistance")] + public bool? DisabledBinauralByDistance { get; set; } - [JsonPropertyName("DistanceToAllowBinaural")] - public double DistanceToAllowBinaural { get; set; } + [JsonPropertyName("DistanceToAllowBinaural")] + public double? DistanceToAllowBinaural { get; set; } - [JsonPropertyName("GroupType")] - public double GroupType { get; set; } + [JsonPropertyName("GroupType")] + public double? GroupType { get; set; } - [JsonPropertyName("HeightToAllowBinaural")] - public double HeightToAllowBinaural { get; set; } + [JsonPropertyName("HeightToAllowBinaural")] + public double? HeightToAllowBinaural { get; set; } - [JsonPropertyName("Name")] - public string Name { get; set; } + [JsonPropertyName("Name")] + public string? Name { get; set; } - [JsonPropertyName("OcclusionEnabled")] - public bool OcclusionEnabled { get; set; } + [JsonPropertyName("OcclusionEnabled")] + public bool? OcclusionEnabled { get; set; } - [JsonPropertyName("OcclusionIntensity")] - public double OcclusionIntensity { get; set; } + [JsonPropertyName("OcclusionIntensity")] + public double? OcclusionIntensity { get; set; } - [JsonPropertyName("OcclusionRolloffScale")] - public double OcclusionRolloffScale { get; set; } + [JsonPropertyName("OcclusionRolloffScale")] + public double? OcclusionRolloffScale { get; set; } - [JsonPropertyName("OverallVolume")] - public double OverallVolume { get; set; } + [JsonPropertyName("OverallVolume")] + public double? OverallVolume { get; set; } } public class EnvironmentSettings { - [JsonPropertyName("SnowStepsVolumeMultiplier")] - public double SnowStepsVolumeMultiplier { get; set; } + [JsonPropertyName("SnowStepsVolumeMultiplier")] + public double? SnowStepsVolumeMultiplier { get; set; } - [JsonPropertyName("SurfaceMultipliers")] - public List SurfaceMultipliers { get; set; } + [JsonPropertyName("SurfaceMultipliers")] + public List? SurfaceMultipliers { get; set; } } public class SurfaceMultiplier { - [JsonPropertyName("SurfaceType")] - public string SurfaceType { get; set; } + [JsonPropertyName("SurfaceType")] + public string? SurfaceType { get; set; } - [JsonPropertyName("VolumeMult")] - public double VolumeMultiplier { get; set; } + [JsonPropertyName("VolumeMult")] + public double? VolumeMultiplier { get; set; } } public class BotWeaponScattering { - [JsonPropertyName("Name")] - public string Name { get; set; } + [JsonPropertyName("Name")] + public string? Name { get; set; } - [JsonPropertyName("PriorityScatter1meter")] - public double PriorityScatter1Meter { get; set; } + [JsonPropertyName("PriorityScatter1meter")] + public double? PriorityScatter1Meter { get; set; } - [JsonPropertyName("PriorityScatter10meter")] - public double PriorityScatter10Meter { get; set; } + [JsonPropertyName("PriorityScatter10meter")] + public double? PriorityScatter10Meter { get; set; } - [JsonPropertyName("PriorityScatter100meter")] - public double PriorityScatter100Meter { get; set; } + [JsonPropertyName("PriorityScatter100meter")] + public double? PriorityScatter100Meter { get; set; } } public class Preset { - [JsonPropertyName("_id")] - public string Id { get; set; } + [JsonPropertyName("_id")] + public string? Id { get; set; } - [JsonPropertyName("_type")] - public string Type { get; set; } + [JsonPropertyName("_type")] + public string? Type { get; set; } - [JsonPropertyName("_changeWeaponName")] - public bool ChangeWeaponName { get; set; } + [JsonPropertyName("_changeWeaponName")] + public bool? ChangeWeaponName { get; set; } - [JsonPropertyName("_name")] - public string Name { get; set; } + [JsonPropertyName("_name")] + public string? Name { get; set; } - [JsonPropertyName("_parent")] - public string Parent { get; set; } + [JsonPropertyName("_parent")] + public string? Parent { get; set; } - [JsonPropertyName("_items")] - public List Items { get; set; } + [JsonPropertyName("_items")] + public List? Items { get; set; } - /** Default presets have this property */ - [JsonPropertyName("_encyclopedia")] - public string? Encyclopedia { get; set; } + /** Default presets have this property */ + [JsonPropertyName("_encyclopedia")] + public string? Encyclopedia { get; set; } } public class QuestSettings { - [JsonPropertyName("GlobalRewardRepModifierDailyQuestPvE")] - public double GlobalRewardRepModifierDailyQuestPvE { get; set; } + [JsonPropertyName("GlobalRewardRepModifierDailyQuestPvE")] + public double? GlobalRewardRepModifierDailyQuestPvE { get; set; } - [JsonPropertyName("GlobalRewardRepModifierQuestPvE")] - public double GlobalRewardRepModifierQuestPvE { get; set; } + [JsonPropertyName("GlobalRewardRepModifierQuestPvE")] + public double? GlobalRewardRepModifierQuestPvE { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Location.cs b/Core/Models/Eft/Common/Location.cs index 9ea70742..7dfebd87 100644 --- a/Core/Models/Eft/Common/Location.cs +++ b/Core/Models/Eft/Common/Location.cs @@ -5,190 +5,190 @@ namespace Core.Models.Eft.Common; public class Location { - /** Map meta-data */ - [JsonPropertyName("base")] - public LocationBase Base { get; set; } - - /** Loose loot positions and item weights */ - [JsonPropertyName("looseLoot")] - public LooseLoot LooseLoot { get; set; } - - /** Static loot item weights */ - [JsonPropertyName("staticLoot")] - public Dictionary StaticLoot { get; set; } - - /** Static container positions and item weights */ - [JsonPropertyName("staticContainers")] - public StaticContainerDetails StaticContainers { get; set; } - - [JsonPropertyName("staticAmmo")] - public Dictionary StaticAmmo { get; set; } - - /** All possible static containers on map + their assign groupings */ - [JsonPropertyName("statics")] - public StaticContainer StaticContainer { get; set; } - - /** All possible map extracts */ - [JsonPropertyName("allExtracts")] - public Exit[] AllExtracts { get; set; } - - // TODO: talk to chomp about this type! - [JsonPropertyName("statics")] - public Dictionary Statics { get; set; } + /** Map meta-data */ + [JsonPropertyName("base")] + public LocationBase? Base { get; set; } + + /** Loose loot positions and item weights */ + [JsonPropertyName("looseLoot")] + public LooseLoot? LooseLoot { get; set; } + + /** Static loot item weights */ + [JsonPropertyName("staticLoot")] + public Dictionary? StaticLoot { get; set; } + + /** Static container positions and item weights */ + [JsonPropertyName("staticContainers")] + public StaticContainerDetails? StaticContainers { get; set; } + + [JsonPropertyName("staticAmmo")] + public Dictionary StaticAmmo { get; set; } + + /** All possible static containers on map + their assign groupings */ + [JsonPropertyName("statics")] + public StaticContainer? StaticContainer { get; set; } + + /** All possible map extracts */ + [JsonPropertyName("allExtracts")] + public Exit[] AllExtracts { get; set; } + + // TODO: talk to chomp about this type! + [JsonPropertyName("statics")] + public Dictionary? Statics { get; set; } } public class StaticContainer { - [JsonPropertyName("containersGroups")] - public Dictionary ContainersGroups { get; set; } - - [JsonPropertyName("containers")] - public Dictionary Containers { get; set; } + [JsonPropertyName("containersGroups")] + public Dictionary? ContainersGroups { get; set; } + + [JsonPropertyName("containers")] + public Dictionary? Containers { get; set; } } public class ContainerMinMax { - [JsonPropertyName("minContainers")] - public int MinContainers { get; set; } - - [JsonPropertyName("maxContainers")] - public int MaxContainers { get; set; } - - [JsonPropertyName("current")] - public int? Current { get; set; } - - [JsonPropertyName("chosenCount")] - public int? ChosenCount { get; set; } + [JsonPropertyName("minContainers")] + public int? MinContainers { get; set; } + + [JsonPropertyName("maxContainers")] + public int? MaxContainers { get; set; } + + [JsonPropertyName("current")] + public int? Current { get; set; } + + [JsonPropertyName("chosenCount")] + public int? ChosenCount { get; set; } } public class ContainerData { - [JsonPropertyName("groupId")] - public string GroupId { get; set; } + [JsonPropertyName("groupId")] + public string? GroupId { get; set; } } public class StaticLootDetails { - [JsonPropertyName("itemcountDistribution")] - public ItemCountDistribution[] ItemCountDistribution { get; set; } - - [JsonPropertyName("itemDistribution")] - public ItemDistribution[] ItemDistribution { get; set; } + [JsonPropertyName("itemcountDistribution")] + public ItemCountDistribution[] ItemCountDistribution { get; set; } + + [JsonPropertyName("itemDistribution")] + public ItemDistribution[] ItemDistribution { get; set; } } public class ItemCountDistribution { - [JsonPropertyName("count")] - public int Count { get; set; } - - [JsonPropertyName("relativeProbability")] - public float RelativeProbability { get; set; } + [JsonPropertyName("count")] + public int? Count { get; set; } + + [JsonPropertyName("relativeProbability")] + public float? RelativeProbability { get; set; } } public class ItemDistribution { - [JsonPropertyName("tpl")] - public string Tpl { get; set; } - - [JsonPropertyName("relativeProbability")] - public float RelativeProbability { get; set; } + [JsonPropertyName("tpl")] + public string? Tpl { get; set; } + + [JsonPropertyName("relativeProbability")] + public float? RelativeProbability { get; set; } } public class StaticPropsBase { - [JsonPropertyName("Id")] - public string Id { get; set; } - - [JsonPropertyName("IsContainer")] - public bool IsContainer { get; set; } - - [JsonPropertyName("useGravity")] - public bool UseGravity { get; set; } - - [JsonPropertyName("randomRotation")] - public bool RandomRotation { get; set; } - - [JsonPropertyName("Position")] - public XYZ Position { get; set; } - - [JsonPropertyName("Rotation")] - public XYZ Rotation { get; set; } - - [JsonPropertyName("IsGroupPosition")] - public bool IsGroupPosition { get; set; } - - [JsonPropertyName("IsAlwaysSpawn")] - public bool IsAlwaysSpawn { get; set; } - - [JsonPropertyName("GroupPositions")] - public GroupPosition[] GroupPositions { get; set; } - - [JsonPropertyName("Root")] - public string Root { get; set; } - - [JsonPropertyName("Items")] - public Item[] Items { get; set; } + [JsonPropertyName("Id")] + public string? Id { get; set; } + + [JsonPropertyName("IsContainer")] + public bool? IsContainer { get; set; } + + [JsonPropertyName("useGravity")] + public bool? UseGravity { get; set; } + + [JsonPropertyName("randomRotation")] + public bool? RandomRotation { get; set; } + + [JsonPropertyName("Position")] + public XYZ? Position { get; set; } + + [JsonPropertyName("Rotation")] + public XYZ? Rotation { get; set; } + + [JsonPropertyName("IsGroupPosition")] + public bool? IsGroupPosition { get; set; } + + [JsonPropertyName("IsAlwaysSpawn")] + public bool? IsAlwaysSpawn { get; set; } + + [JsonPropertyName("GroupPositions")] + public GroupPosition[] GroupPositions { get; set; } + + [JsonPropertyName("Root")] + public string? Root { get; set; } + + [JsonPropertyName("Items")] + public Item[] Items { get; set; } } public class StaticWeaponProps : StaticPropsBase { - [JsonPropertyName("Items")] - public Item[] Items { get; set; } + [JsonPropertyName("Items")] + public Item[] Items { get; set; } } public class StaticContainerDetails { - [JsonPropertyName("staticWeapons")] - public StaticWeaponProps[] StaticWeapons { get; set; } - - [JsonPropertyName("staticContainers")] - public StaticContainerData[] StaticContainers { get; set; } - - [JsonPropertyName("staticForced")] - public StaticForcedProps[] StaticForced { get; set; } + [JsonPropertyName("staticWeapons")] + public StaticWeaponProps[] StaticWeapons { get; set; } + + [JsonPropertyName("staticContainers")] + public StaticContainerData[] StaticContainers { get; set; } + + [JsonPropertyName("staticForced")] + public StaticForcedProps[] StaticForced { get; set; } } public class StaticContainerData { - [JsonPropertyName("probability")] - public float Probability { get; set; } - - [JsonPropertyName("template")] - public StaticContainerProps Template { get; set; } + [JsonPropertyName("probability")] + public float? Probability { get; set; } + + [JsonPropertyName("template")] + public StaticContainerProps? Template { get; set; } } public class StaticAmmoDetails { - [JsonPropertyName("tpl")] - public string Tpl { get; set; } - - [JsonPropertyName("relativeProbability")] - public float RelativeProbability { get; set; } + [JsonPropertyName("tpl")] + public string? Tpl { get; set; } + + [JsonPropertyName("relativeProbability")] + public float? RelativeProbability { get; set; } } public class StaticForcedProps { - [JsonPropertyName("containerId")] - public string ContainerId { get; set; } - - [JsonPropertyName("itemTpl")] - public string ItemTpl { get; set; } + [JsonPropertyName("containerId")] + public string? ContainerId { get; set; } + + [JsonPropertyName("itemTpl")] + public string? ItemTpl { get; set; } } public class StaticContainerProps : StaticPropsBase { - [JsonPropertyName("Items")] - public StaticItem[] Items { get; set; } + [JsonPropertyName("Items")] + public StaticItem[] Items { get; set; } } public class StaticItem { - [JsonPropertyName("_id")] - public string Id { get; set; } - - [JsonPropertyName("_tpl")] - public string Tpl { get; set; } - - [JsonPropertyName("upd")] - public Upd Upd { get; set; } + [JsonPropertyName("_id")] + public string? Id { get; set; } + + [JsonPropertyName("_tpl")] + public string? Tpl { get; set; } + + [JsonPropertyName("upd")] + public Upd? Upd { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/LocationBase.cs b/Core/Models/Eft/Common/LocationBase.cs index 2d75c79b..c6ef4266 100644 --- a/Core/Models/Eft/Common/LocationBase.cs +++ b/Core/Models/Eft/Common/LocationBase.cs @@ -5,896 +5,905 @@ namespace Core.Models.Eft.Common; public class LocationBase { - [JsonPropertyName("AccessKeys")] - public List AccessKeys { get; set; } + [JsonPropertyName("AccessKeys")] + public List? AccessKeys { get; set; } - [JsonPropertyName("AccessKeysPvE")] - public List AccessKeysPvE { get; set; } + [JsonPropertyName("AccessKeysPvE")] + public List? AccessKeysPvE { get; set; } - [JsonPropertyName("AirdropParameters")] - public List AirdropParameters { get; set; } + [JsonPropertyName("AirdropParameters")] + public List? AirdropParameters { get; set; } - [JsonPropertyName("NewSpawnForPlayers")] - public bool NewSpawnForPlayers { get; set; } - - [JsonPropertyName("OfflineNewSpawn")] - public bool OfflineNewSpawn { get; set; } - - [JsonPropertyName("OfflineOldSpawn")] - public bool OfflineOldSpawn { get; set; } - - [JsonPropertyName("Area")] - public double Area { get; set; } + [JsonPropertyName("NewSpawnForPlayers")] + public bool? NewSpawnForPlayers { get; set; } - [JsonPropertyName("AveragePlayTime")] - public double AveragePlayTime { get; set; } + [JsonPropertyName("OfflineNewSpawn")] + public bool? OfflineNewSpawn { get; set; } - [JsonPropertyName("AveragePlayerLevel")] - public double AveragePlayerLevel { get; set; } + [JsonPropertyName("OfflineOldSpawn")] + public bool? OfflineOldSpawn { get; set; } - [JsonPropertyName("Banners")] - public List Banners { get; set; } + [JsonPropertyName("Area")] + public double? Area { get; set; } - [JsonPropertyName("BossLocationSpawn")] - public List BossLocationSpawn { get; set; } + [JsonPropertyName("AveragePlayTime")] + public double? AveragePlayTime { get; set; } - [JsonPropertyName("secretExits")] - public List SecretExits { get; set; } + [JsonPropertyName("AveragePlayerLevel")] + public double? AveragePlayerLevel { get; set; } - [JsonPropertyName("BotStartPlayer")] - public int BotStartPlayer { get; set; } - - [JsonPropertyName("BotAssault")] - public int BotAssault { get; set; } + [JsonPropertyName("Banners")] + public List? Banners { get; set; } - /** Weighting on how likely a bot will be Easy difficulty */ - [JsonPropertyName("BotEasy")] - public int BotEasy { get; set; } + [JsonPropertyName("BossLocationSpawn")] + public List? BossLocationSpawn { get; set; } - /** Weighting on how likely a bot will be Hard difficulty */ - [JsonPropertyName("BotHard")] - public int BotHard { get; set; } + [JsonPropertyName("secretExits")] + public List? SecretExits { get; set; } - /** Weighting on how likely a bot will be Impossible difficulty */ - [JsonPropertyName("BotImpossible")] - public int BotImpossible { get; set; } + [JsonPropertyName("BotStartPlayer")] + public int? BotStartPlayer { get; set; } - [JsonPropertyName("BotLocationModifier")] - public BotLocationModifier BotLocationModifier { get; set; } + [JsonPropertyName("BotAssault")] + public int? BotAssault { get; set; } - [JsonPropertyName("BotMarksman")] - public int BotMarksman { get; set; } + /** Weighting on how likely a bot will be Easy difficulty */ + [JsonPropertyName("BotEasy")] + public int? BotEasy { get; set; } - /** Maximum Number of bots that are currently alive/loading/delayed */ - [JsonPropertyName("BotMax")] - public int BotMax { get; set; } + /** Weighting on how likely a bot will be Hard difficulty */ + [JsonPropertyName("BotHard")] + public int? BotHard { get; set; } - /** Is not used in 33420 */ - [JsonPropertyName("BotMaxPlayer")] - public int BotMaxPlayer { get; set; } + /** Weighting on how likely a bot will be Impossible difficulty */ + [JsonPropertyName("BotImpossible")] + public int? BotImpossible { get; set; } - /** Is not used in 33420 */ - [JsonPropertyName("BotMaxTimePlayer")] - public int BotMaxTimePlayer { get; set; } + [JsonPropertyName("BotLocationModifier")] + public BotLocationModifier? BotLocationModifier { get; set; } - /** Does not even exist in the client in 33420 */ - [JsonPropertyName("BotMaxPvE")] - public int BotMaxPvE { get; set; } + [JsonPropertyName("BotMarksman")] + public int? BotMarksman { get; set; } - /** Weighting on how likely a bot will be Normal difficulty */ - [JsonPropertyName("BotNormal")] - public int BotNormal { get; set; } + /** Maximum Number of bots that are currently alive/loading/delayed */ + [JsonPropertyName("BotMax")] + public int? BotMax { get; set; } - /** How many bot slots that need to be open before trying to spawn new bots. */ - [JsonPropertyName("BotSpawnCountStep")] - public int BotSpawnCountStep { get; set; } + /** Is not used in 33420 */ + [JsonPropertyName("BotMaxPlayer")] + public int? BotMaxPlayer { get; set; } - /** How often to check if bots are spawn-able. In seconds */ - [JsonPropertyName("BotSpawnPeriodCheck")] - public int BotSpawnPeriodCheck { get; set; } + /** Is not used in 33420 */ + [JsonPropertyName("BotMaxTimePlayer")] + public int? BotMaxTimePlayer { get; set; } - /** The bot spawn will toggle on and off in intervals of Off(Min/Max) and On(Min/Max) */ - [JsonPropertyName("BotSpawnTimeOffMax")] - public int BotSpawnTimeOffMax { get; set; } + /** Does not even exist in the client in 33420 */ + [JsonPropertyName("BotMaxPvE")] + public int? BotMaxPvE { get; set; } - [JsonPropertyName("BotSpawnTimeOffMin")] - public int BotSpawnTimeOffMin { get; set; } + /** Weighting on how likely a bot will be Normal difficulty */ + [JsonPropertyName("BotNormal")] + public int? BotNormal { get; set; } - [JsonPropertyName("BotSpawnTimeOnMax")] - public int BotSpawnTimeOnMax { get; set; } + /** How many bot slots that need to be open before trying to spawn new bots. */ + [JsonPropertyName("BotSpawnCountStep")] + public int? BotSpawnCountStep { get; set; } - [JsonPropertyName("BotSpawnTimeOnMin")] - public int BotSpawnTimeOnMin { get; set; } + /** How often to check if bots are spawn-able. In seconds */ + [JsonPropertyName("BotSpawnPeriodCheck")] + public int? BotSpawnPeriodCheck { get; set; } - /** How soon bots will be allowed to spawn */ - [JsonPropertyName("BotStart")] - public int BotStart { get; set; } + /** The bot spawn will toggle on and off in intervals of Off(Min/Max) and On(Min/Max) */ + [JsonPropertyName("BotSpawnTimeOffMax")] + public int? BotSpawnTimeOffMax { get; set; } - /** After this long bots will no longer spawn */ - [JsonPropertyName("BotStop")] - public int BotStop { get; set; } + [JsonPropertyName("BotSpawnTimeOffMin")] + public int? BotSpawnTimeOffMin { get; set; } - [JsonPropertyName("Description")] - public string Description { get; set; } + [JsonPropertyName("BotSpawnTimeOnMax")] + public int? BotSpawnTimeOnMax { get; set; } - [JsonPropertyName("DisabledForScav")] - public bool DisabledForScav { get; set; } + [JsonPropertyName("BotSpawnTimeOnMin")] + public int? BotSpawnTimeOnMin { get; set; } - [JsonPropertyName("DisabledScavExits")] - public string DisabledScavExits { get; set; } + /** How soon bots will be allowed to spawn */ + [JsonPropertyName("BotStart")] + public int? BotStart { get; set; } - [JsonPropertyName("Enabled")] - public bool Enabled { get; set; } + /** After this long bots will no longer spawn */ + [JsonPropertyName("BotStop")] + public int? BotStop { get; set; } - [JsonPropertyName("EnableCoop")] - public bool EnableCoop { get; set; } + [JsonPropertyName("Description")] + public string? Description { get; set; } - [JsonPropertyName("GlobalLootChanceModifier")] - public double GlobalLootChanceModifier { get; set; } + [JsonPropertyName("DisabledForScav")] + public bool? DisabledForScav { get; set; } - [JsonPropertyName("GlobalLootChanceModifierPvE")] - public double GlobalLootChanceModifierPvE { get; set; } + [JsonPropertyName("DisabledScavExits")] + public string? DisabledScavExits { get; set; } - [JsonPropertyName("GlobalContainerChanceModifier")] - public double GlobalContainerChanceModifier { get; set; } + [JsonPropertyName("Enabled")] + public bool? Enabled { get; set; } - [JsonPropertyName("IconX")] - public double IconX { get; set; } + [JsonPropertyName("EnableCoop")] + public bool? EnableCoop { get; set; } - [JsonPropertyName("IconY")] - public double IconY { get; set; } + [JsonPropertyName("GlobalLootChanceModifier")] + public double? GlobalLootChanceModifier { get; set; } - [JsonPropertyName("Id")] - public string Id { get; set; } + [JsonPropertyName("GlobalLootChanceModifierPvE")] + public double? GlobalLootChanceModifierPvE { get; set; } - [JsonPropertyName("Insurance")] - public bool Insurance { get; set; } + [JsonPropertyName("GlobalContainerChanceModifier")] + public double? GlobalContainerChanceModifier { get; set; } - [JsonPropertyName("IsSecret")] - public bool IsSecret { get; set; } + [JsonPropertyName("IconX")] + public double? IconX { get; set; } - [JsonPropertyName("Locked")] - public bool Locked { get; set; } + [JsonPropertyName("IconY")] + public double? IconY { get; set; } - [JsonPropertyName("Loot")] - public List Loot { get; set; } + [JsonPropertyName("Id")] + public string? Id { get; set; } - [JsonPropertyName("MatchMakerMinPlayersByWaitTime")] - public List MatchMakerMinPlayersByWaitTime { get; set; } + [JsonPropertyName("Insurance")] + public bool? Insurance { get; set; } - [JsonPropertyName("MaxBotPerZone")] - public int MaxBotPerZone { get; set; } + [JsonPropertyName("IsSecret")] + public bool? IsSecret { get; set; } - [JsonPropertyName("MaxDistToFreePoint")] - public int MaxDistToFreePoint { get; set; } + [JsonPropertyName("Locked")] + public bool? Locked { get; set; } - [JsonPropertyName("MaxPlayers")] - public int MaxPlayers { get; set; } + [JsonPropertyName("Loot")] + public List? Loot { get; set; } - [JsonPropertyName("MinDistToExitPoint")] - public double MinDistToExitPoint { get; set; } + [JsonPropertyName("MatchMakerMinPlayersByWaitTime")] + public List? MatchMakerMinPlayersByWaitTime { get; set; } - [JsonPropertyName("MinDistToFreePoint")] - public double MinDistToFreePoint { get; set; } + [JsonPropertyName("MaxBotPerZone")] + public int? MaxBotPerZone { get; set; } - [JsonPropertyName("MinMaxBots")] - public List MinMaxBots { get; set; } + [JsonPropertyName("MaxDistToFreePoint")] + public int? MaxDistToFreePoint { get; set; } - [JsonPropertyName("MinPlayers")] - public int MinPlayers { get; set; } + [JsonPropertyName("MaxPlayers")] + public int? MaxPlayers { get; set; } - [JsonPropertyName("MaxCoopGroup")] - public int MaxCoopGroup { get; set; } + [JsonPropertyName("MinDistToExitPoint")] + public double? MinDistToExitPoint { get; set; } - [JsonPropertyName("Name")] - public string Name { get; set; } + [JsonPropertyName("MinDistToFreePoint")] + public double? MinDistToFreePoint { get; set; } - [JsonPropertyName("NonWaveGroupScenario")] - public NonWaveGroupScenario NonWaveGroupScenario { get; set; } + [JsonPropertyName("MinMaxBots")] + public List? MinMaxBots { get; set; } - [JsonPropertyName("NewSpawn")] - public bool NewSpawn { get; set; } + [JsonPropertyName("MinPlayers")] + public int? MinPlayers { get; set; } - [JsonPropertyName("OcculsionCullingEnabled")] - public bool OcculsionCullingEnabled { get; set; } + [JsonPropertyName("MaxCoopGroup")] + public int? MaxCoopGroup { get; set; } - [JsonPropertyName("OldSpawn")] - public bool OldSpawn { get; set; } + [JsonPropertyName("Name")] + public string? Name { get; set; } - [JsonPropertyName("OpenZones")] - public string OpenZones { get; set; } + [JsonPropertyName("NonWaveGroupScenario")] + public NonWaveGroupScenario? NonWaveGroupScenario { get; set; } - [JsonPropertyName("Preview")] - public Preview Preview { get; set; } + [JsonPropertyName("NewSpawn")] + public bool? NewSpawn { get; set; } - [JsonPropertyName("PlayersRequestCount")] - public int PlayersRequestCount { get; set; } + [JsonPropertyName("OcculsionCullingEnabled")] + public bool? OcculsionCullingEnabled { get; set; } - [JsonPropertyName("RequiredPlayerLevel")] - public int? RequiredPlayerLevel { get; set; } + [JsonPropertyName("OldSpawn")] + public bool? OldSpawn { get; set; } - [JsonPropertyName("RequiredPlayerLevelMin")] - public int? RequiredPlayerLevelMin { get; set; } + [JsonPropertyName("OpenZones")] + public string? OpenZones { get; set; } - [JsonPropertyName("RequiredPlayerLevelMax")] - public int? RequiredPlayerLevelMax { get; set; } + [JsonPropertyName("Preview")] + public Preview? Preview { get; set; } - [JsonPropertyName("MinPlayerLvlAccessKeys")] - public int MinPlayerLvlAccessKeys { get; set; } + [JsonPropertyName("PlayersRequestCount")] + public int? PlayersRequestCount { get; set; } - [JsonPropertyName("PmcMaxPlayersInGroup")] - public int PmcMaxPlayersInGroup { get; set; } + [JsonPropertyName("RequiredPlayerLevel")] + public int? RequiredPlayerLevel { get; set; } - [JsonPropertyName("ScavMaxPlayersInGroup")] - public int ScavMaxPlayersInGroup { get; set; } + [JsonPropertyName("RequiredPlayerLevelMin")] + public int? RequiredPlayerLevelMin { get; set; } - [JsonPropertyName("Rules")] - public string Rules { get; set; } + [JsonPropertyName("RequiredPlayerLevelMax")] + public int? RequiredPlayerLevelMax { get; set; } - [JsonPropertyName("SafeLocation")] - public bool SafeLocation { get; set; } + [JsonPropertyName("MinPlayerLvlAccessKeys")] + public int? MinPlayerLvlAccessKeys { get; set; } - [JsonPropertyName("Scene")] - public Scene Scene { get; set; } + [JsonPropertyName("PmcMaxPlayersInGroup")] + public int? PmcMaxPlayersInGroup { get; set; } - [JsonPropertyName("SpawnPointParams")] - public List SpawnPointParams { get; set; } + [JsonPropertyName("ScavMaxPlayersInGroup")] + public int? ScavMaxPlayersInGroup { get; set; } - [JsonPropertyName("UnixDateTime")] - public long UnixDateTime { get; set; } + [JsonPropertyName("Rules")] + public string? Rules { get; set; } - [JsonPropertyName("_Id")] - public string IdField { get; set; } + [JsonPropertyName("SafeLocation")] + public bool? SafeLocation { get; set; } - [JsonPropertyName("doors")] - public List Doors { get; set; } + [JsonPropertyName("Scene")] + public Scene? Scene { get; set; } - [JsonPropertyName("EscapeTimeLimit")] - public int EscapeTimeLimit { get; set; } - - // BSG fucked up another property name - [JsonPropertyName("escape_time_limit")] - public int Escape_Time_Limit_Do_Not_Use - { - set => EscapeTimeLimit = value; - } - - [JsonPropertyName("EscapeTimeLimitCoop")] - public int EscapeTimeLimitCoop { get; set; } + [JsonPropertyName("SpawnPointParams")] + public List? SpawnPointParams { get; set; } - [JsonPropertyName("EscapeTimeLimitPVE")] - public int EscapeTimeLimitPVE { get; set; } + [JsonPropertyName("UnixDateTime")] + public long? UnixDateTime { get; set; } - [JsonPropertyName("Events")] - public LocationEvents Events { get; set; } + [JsonPropertyName("_Id")] + public string? IdField { get; set; } - [JsonPropertyName("exit_access_time")] - public int ExitAccessTime { get; set; } + [JsonPropertyName("doors")] + public List? Doors { get; set; } - [JsonPropertyName("ForceOnlineRaidInPVE")] - public bool ForceOnlineRaidInPVE { get; set; } + [JsonPropertyName("EscapeTimeLimit")] + public int? EscapeTimeLimit { get; set; } - [JsonPropertyName("exit_count")] - public int ExitCount { get; set; } + // BSG fucked up another property name + [JsonPropertyName("escape_time_limit")] + public int Escape_Time_Limit_Do_Not_Use + { + set => EscapeTimeLimit = value; + } - [JsonPropertyName("exit_time")] - public int ExitTime { get; set; } + [JsonPropertyName("EscapeTimeLimitCoop")] + public int? EscapeTimeLimitCoop { get; set; } - [JsonPropertyName("exits")] - public List Exits { get; set; } + [JsonPropertyName("EscapeTimeLimitPVE")] + public int? EscapeTimeLimitPVE { get; set; } - [JsonPropertyName("filter_ex")] - public List FilterEx { get; set; } + [JsonPropertyName("Events")] + public LocationEvents? Events { get; set; } - [JsonPropertyName("limits")] - public List Limits { get; set; } + [JsonPropertyName("exit_access_time")] + public int? ExitAccessTime { get; set; } - [JsonPropertyName("matching_min_seconds")] - public int MatchingMinSeconds { get; set; } + [JsonPropertyName("ForceOnlineRaidInPVE")] + public bool? ForceOnlineRaidInPVE { get; set; } - [JsonPropertyName("GenerateLocalLootCache")] - public bool GenerateLocalLootCache { get; set; } + [JsonPropertyName("exit_count")] + public int? ExitCount { get; set; } - [JsonPropertyName("maxItemCountInLocation")] - public List MaxItemCountInLocation { get; set; } + [JsonPropertyName("exit_time")] + public int? ExitTime { get; set; } - [JsonPropertyName("sav_summon_seconds")] - public int SavSummonSeconds { get; set; } + [JsonPropertyName("exits")] + public List? Exits { get; set; } - [JsonPropertyName("tmp_location_field_remove_me")] - public int TmpLocationFieldRemoveMe { get; set; } + [JsonPropertyName("filter_ex")] + public List? FilterEx { get; set; } - [JsonPropertyName("transits")] - public List Transits { get; set; } + [JsonPropertyName("limits")] + public List? Limits { get; set; } - [JsonPropertyName("users_gather_seconds")] - public int UsersGatherSeconds { get; set; } + [JsonPropertyName("matching_min_seconds")] + public int? MatchingMinSeconds { get; set; } - [JsonPropertyName("users_spawn_seconds_n")] - public int UsersSpawnSecondsN { get; set; } + [JsonPropertyName("GenerateLocalLootCache")] + public bool? GenerateLocalLootCache { get; set; } - [JsonPropertyName("users_spawn_seconds_n2")] - public int UsersSpawnSecondsN2 { get; set; } + [JsonPropertyName("maxItemCountInLocation")] + public List? MaxItemCountInLocation { get; set; } - [JsonPropertyName("users_summon_seconds")] - public int UsersSummonSeconds { get; set; } + [JsonPropertyName("sav_summon_seconds")] + public int? SavSummonSeconds { get; set; } - [JsonPropertyName("waves")] - public List Waves { get; set; } + [JsonPropertyName("tmp_location_field_remove_me")] + public int? TmpLocationFieldRemoveMe { get; set; } + + [JsonPropertyName("transits")] + public List? Transits { get; set; } + + [JsonPropertyName("users_gather_seconds")] + public int? UsersGatherSeconds { get; set; } + + [JsonPropertyName("users_spawn_seconds_n")] + public int? UsersSpawnSecondsN { get; set; } + + [JsonPropertyName("users_spawn_seconds_n2")] + public int? UsersSpawnSecondsN2 { get; set; } + + [JsonPropertyName("users_summon_seconds")] + public int? UsersSummonSeconds { get; set; } + + [JsonPropertyName("waves")] + public List? Waves { get; set; } } -public class Transit { - [JsonPropertyName("activateAfterSec")] - public int ActivateAfterSeconds { get; set; } // TODO: Int in client - - [JsonPropertyName("active")] - public bool IsActive { get; set; } - - [JsonPropertyName("events")] - public bool Events { get; set; } - - [JsonPropertyName("name")] - public string Name { get; set; } - - [JsonPropertyName("conditions")] - public string Conditions { get; set; } - - [JsonPropertyName("description")] - public string Description { get; set; } - - [JsonPropertyName("id")] - public int Id { get; set; } - - [JsonPropertyName("location")] - public string Location { get; set; } - - [JsonPropertyName("target")] - public string Target { get; set; } - - [JsonPropertyName("time")] - public int Time { get; set; } -} - -public class NonWaveGroupScenario { - [JsonPropertyName("Chance")] - public double Chance { get; set; } - - [JsonPropertyName("Enabled")] - public bool IsEnabled { get; set; } - - [JsonPropertyName("MaxToBeGroup")] - public int MaximumToBeGrouped { get; set; } - - [JsonPropertyName("MinToBeGroup")] - public int MinimumToBeGrouped { get; set; } -} - -public class Limit : MinMax { - [JsonPropertyName("items")] - public object[] Items { get; set; } // TODO: was on TS any[] hmmm.. - - [JsonPropertyName("min")] - public int Min { get; set; } - - [JsonPropertyName("max")] - public int Max { get; set; } -} - -public class AirdropParameter { - [JsonPropertyName("AirdropPointDeactivateDistance")] - public int AirdropPointDeactivateDistance { get; set; } - - [JsonPropertyName("MinPlayersCountToSpawnAirdrop")] - public int MinimumPlayersCountToSpawnAirdrop { get; set; } - - [JsonPropertyName("PlaneAirdropChance")] - public double PlaneAirdropChance { get; set; } - - [JsonPropertyName("PlaneAirdropCooldownMax")] - public int PlaneAirdropCooldownMax { get; set; } - - [JsonPropertyName("PlaneAirdropCooldownMin")] - public int PlaneAirdropCooldownMin { get; set; } - - [JsonPropertyName("PlaneAirdropEnd")] - public int PlaneAirdropEnd { get; set; } - - [JsonPropertyName("PlaneAirdropMax")] - public int PlaneAirdropMax { get; set; } - - [JsonPropertyName("PlaneAirdropStartMax")] - public int PlaneAirdropStartMax { get; set; } - - [JsonPropertyName("PlaneAirdropStartMin")] - public int PlaneAirdropStartMin { get; set; } - - [JsonPropertyName("UnsuccessfulTryPenalty")] - public int UnsuccessfulTryPenalty { get; set; } -} - -public class Banner { - [JsonPropertyName("id")] - public string Id { get; set; } - - [JsonPropertyName("pic")] - public Pic Picture { get; set; } -} - -public class Pic { - [JsonPropertyName("path")] - public string Path { get; set; } - - [JsonPropertyName("rcid")] - public string Rcid { get; set; } -} - -public class BossLocationSpawn { - [JsonPropertyName("BossChance")] - public double BossChance { get; set; } - - [JsonPropertyName("BossDifficult")] - public string BossDifficulty { get; set; } - - [JsonPropertyName("BossEscortAmount")] - public string BossEscortAmount { get; set; } - - [JsonPropertyName("BossEscortDifficult")] - public string BossEscortDifficulty { get; set; } - - [JsonPropertyName("BossEscortType")] - public string BossEscortType { get; set; } - - [JsonPropertyName("BossName")] - public string BossName { get; set; } - - [JsonPropertyName("BossPlayer")] - public bool IsBossPlayer { get; set; } - - [JsonPropertyName("BossZone")] - public string BossZone { get; set; } - - [JsonPropertyName("RandomTimeSpawn")] - public bool IsRandomTimeSpawn { get; set; } - - [JsonPropertyName("Time")] - public double Time { get; set; } - - [JsonPropertyName("TriggerId")] - public string TriggerId { get; set; } - - [JsonPropertyName("TriggerName")] - public string TriggerName { get; set; } - - [JsonPropertyName("Delay")] - public double? Delay { get; set; } - - [JsonPropertyName("DependKarma")] - public bool? DependKarma { get; set; } - - [JsonPropertyName("DependKarmaPVE")] - public bool? DependKarmaPVE { get; set; } - - [JsonPropertyName("ForceSpawn")] - public bool? ForceSpawn { get; set; } - - [JsonPropertyName("IgnoreMaxBots")] - public bool? IgnoreMaxBots { get; set; } - - [JsonPropertyName("Supports")] - public BossSupport[] Supports { get; set; } - - [JsonPropertyName("sptId")] - public string SptId { get; set; } - - [JsonPropertyName("SpawnMode")] - public string[] SpawnMode { get; set; } -} - -public class BossSupport { - [JsonPropertyName("BossEscortAmount")] - public string BossEscortAmount { get; set; } - - [JsonPropertyName("BossEscortDifficult")] - public string[] BossEscortDifficulty { get; set; } - - [JsonPropertyName("BossEscortType")] - public string BossEscortType { get; set; } -} - -public class BotLocationModifier { - [JsonPropertyName("AccuracySpeed")] - public double AccuracySpeed { get; set; } - - [JsonPropertyName("AdditionalHostilitySettings")] - public AdditionalHostilitySettings[] AdditionalHostilitySettings { get; set; } - - [JsonPropertyName("DistToActivate")] - public double DistanceToActivate { get; set; } - - [JsonPropertyName("DistToActivatePvE")] - public double DistanceToActivatePvE { get; set; } - - [JsonPropertyName("DistToPersueAxemanCoef")] - public double DistanceToPursueAxemanCoefficient { get; set; } - - [JsonPropertyName("DistToSleep")] - public double DistanceToSleep { get; set; } - - [JsonPropertyName("DistToSleepPvE")] - public double DistanceToSleepPvE { get; set; } - - [JsonPropertyName("GainSight")] - public double GainSight { get; set; } - - [JsonPropertyName("KhorovodChance")] - public double KhorovodChance { get; set; } - - [JsonPropertyName("MagnetPower")] - public double MagnetPower { get; set; } - - [JsonPropertyName("MarksmanAccuratyCoef")] - public double MarksmanAccuracyCoefficient { get; set; } - - [JsonPropertyName("Scattering")] - public double Scattering { get; set; } - - [JsonPropertyName("VisibleDistance")] - public double VisibleDistance { get; set; } - - [JsonPropertyName("MaxExfiltrationTime")] - public double MaxExfiltrationTime { get; set; } - - [JsonPropertyName("MinExfiltrationTime")] - public double MinExfiltrationTime { get; set; } -} - -public class AdditionalHostilitySettings +public class Transit { - [JsonPropertyName("AlwaysEnemies")] - public List AlwaysEnemies { get; set; } - - [JsonPropertyName("AlwaysFriends")] - public List AlwaysFriends { get; set; } - - [JsonPropertyName("BearEnemyChance")] - public int BearEnemyChance { get; set; } - - [JsonPropertyName("BearPlayerBehaviour")] - public string BearPlayerBehaviour { get; set; } - - [JsonPropertyName("BotRole")] - public string BotRole { get; set; } - - [JsonPropertyName("ChancedEnemies")] - public List ChancedEnemies { get; set; } - - [JsonPropertyName("Neutral")] - public List Neutral { get; set; } - - [JsonPropertyName("SavagePlayerBehaviour")] - public string SavagePlayerBehaviour { get; set; } - - [JsonPropertyName("SavageEnemyChance")] - public int? SavageEnemyChance { get; set; } - - [JsonPropertyName("UsecEnemyChance")] - public int UsecEnemyChance { get; set; } - - [JsonPropertyName("UsecPlayerBehaviour")] - public string UsecPlayerBehaviour { get; set; } - - [JsonPropertyName("Warn")] - public List Warn { get; set; } + [JsonPropertyName("activateAfterSec")] + public int ActivateAfterSeconds { get; set; } // TODO: Int in client + + [JsonPropertyName("active")] + public bool? IsActive { get; set; } + + [JsonPropertyName("events")] + public bool? Events { get; set; } + + [JsonPropertyName("name")] + public string? Name { get; set; } + + [JsonPropertyName("conditions")] + public string? Conditions { get; set; } + + [JsonPropertyName("description")] + public string? Description { get; set; } + + [JsonPropertyName("id")] + public int? Id { get; set; } + + [JsonPropertyName("location")] + public string? Location { get; set; } + + [JsonPropertyName("target")] + public string? Target { get; set; } + + [JsonPropertyName("time")] + public int? Time { get; set; } } -public class ChancedEnemy +public class NonWaveGroupScenario { - [JsonPropertyName("EnemyChance")] - public int EnemyChance { get; set; } - - [JsonPropertyName("Role")] - public string Role { get; set; } + [JsonPropertyName("Chance")] + public double? Chance { get; set; } + + [JsonPropertyName("Enabled")] + public bool? IsEnabled { get; set; } + + [JsonPropertyName("MaxToBeGroup")] + public int? MaximumToBeGrouped { get; set; } + + [JsonPropertyName("MinToBeGroup")] + public int? MinimumToBeGrouped { get; set; } } -public class MinMaxBot : MinMax +public class Limit : MinMax { - [JsonPropertyName("WildSpawnType")] - public object WildSpawnType { get; set; } // TODO: Could be WildSpawnType or string + [JsonPropertyName("items")] + public object[] Items { get; set; } // TODO: was on TS any[] hmmm.. + + [JsonPropertyName("min")] + public int? Min { get; set; } + + [JsonPropertyName("max")] + public int? Max { get; set; } } -public class MinPlayerWaitTime +public class AirdropParameter { - [JsonPropertyName("minPlayers")] - public int MinPlayers { get; set; } - - [JsonPropertyName("time")] - public int Time { get; set; } + [JsonPropertyName("AirdropPointDeactivateDistance")] + public int? AirdropPointDeactivateDistance { get; set; } + + [JsonPropertyName("MinPlayersCountToSpawnAirdrop")] + public int? MinimumPlayersCountToSpawnAirdrop { get; set; } + + [JsonPropertyName("PlaneAirdropChance")] + public double? PlaneAirdropChance { get; set; } + + [JsonPropertyName("PlaneAirdropCooldownMax")] + public int? PlaneAirdropCooldownMax { get; set; } + + [JsonPropertyName("PlaneAirdropCooldownMin")] + public int? PlaneAirdropCooldownMin { get; set; } + + [JsonPropertyName("PlaneAirdropEnd")] + public int? PlaneAirdropEnd { get; set; } + + [JsonPropertyName("PlaneAirdropMax")] + public int? PlaneAirdropMax { get; set; } + + [JsonPropertyName("PlaneAirdropStartMax")] + public int? PlaneAirdropStartMax { get; set; } + + [JsonPropertyName("PlaneAirdropStartMin")] + public int? PlaneAirdropStartMin { get; set; } + + [JsonPropertyName("UnsuccessfulTryPenalty")] + public int? UnsuccessfulTryPenalty { get; set; } } -public class Preview +public class Banner { - [JsonPropertyName("path")] - public string Path { get; set; } - - [JsonPropertyName("rcid")] - public string Rcid { get; set; } + [JsonPropertyName("id")] + public string? Id { get; set; } + + [JsonPropertyName("pic")] + public Pic? Picture { get; set; } } -public class Scene +public class Pic { - [JsonPropertyName("path")] - public string Path { get; set; } - - [JsonPropertyName("rcid")] - public string Rcid { get; set; } + [JsonPropertyName("path")] + public string? Path { get; set; } + + [JsonPropertyName("rcid")] + public string? Rcid { get; set; } } -public class SpawnPointParam +public class BossLocationSpawn { - [JsonPropertyName("BotZoneName")] - public string BotZoneName { get; set; } - - [JsonPropertyName("Categories")] - public List Categories { get; set; } - - [JsonPropertyName("ColliderParams")] - public ColliderParams ColliderParams { get; set; } - - [JsonPropertyName("CorePointId")] - public int CorePointId { get; set; } - - [JsonPropertyName("DelayToCanSpawnSec")] - public double DelayToCanSpawnSec { get; set; } - - [JsonPropertyName("Id")] - public string Id { get; set; } - - [JsonPropertyName("Infiltration")] - public string Infiltration { get; set; } - - [JsonPropertyName("Position")] - public XYZ Position { get; set; } - - [JsonPropertyName("Rotation")] - public float Rotation { get; set; } - - [JsonPropertyName("Sides")] - public List Sides { get; set; } + [JsonPropertyName("BossChance")] + public double? BossChance { get; set; } + + [JsonPropertyName("BossDifficult")] + public string? BossDifficulty { get; set; } + + [JsonPropertyName("BossEscortAmount")] + public string? BossEscortAmount { get; set; } + + [JsonPropertyName("BossEscortDifficult")] + public string? BossEscortDifficulty { get; set; } + + [JsonPropertyName("BossEscortType")] + public string? BossEscortType { get; set; } + + [JsonPropertyName("BossName")] + public string? BossName { get; set; } + + [JsonPropertyName("BossPlayer")] + public bool? IsBossPlayer { get; set; } + + [JsonPropertyName("BossZone")] + public string? BossZone { get; set; } + + [JsonPropertyName("RandomTimeSpawn")] + public bool? IsRandomTimeSpawn { get; set; } + + [JsonPropertyName("Time")] + public double? Time { get; set; } + + [JsonPropertyName("TriggerId")] + public string? TriggerId { get; set; } + + [JsonPropertyName("TriggerName")] + public string? TriggerName { get; set; } + + [JsonPropertyName("Delay")] + public double? Delay { get; set; } + + [JsonPropertyName("DependKarma")] + public bool? DependKarma { get; set; } + + [JsonPropertyName("DependKarmaPVE")] + public bool? DependKarmaPVE { get; set; } + + [JsonPropertyName("ForceSpawn")] + public bool? ForceSpawn { get; set; } + + [JsonPropertyName("IgnoreMaxBots")] + public bool? IgnoreMaxBots { get; set; } + + [JsonPropertyName("Supports")] + public BossSupport[] Supports { get; set; } + + [JsonPropertyName("sptId")] + public string? SptId { get; set; } + + [JsonPropertyName("SpawnMode")] + public string[] SpawnMode { get; set; } } -public class ColliderParams +public class BossSupport { - [JsonPropertyName("_parent")] - public string Parent { get; set; } - - [JsonPropertyName("_props")] - public Props Props { get; set; } + [JsonPropertyName("BossEscortAmount")] + public string? BossEscortAmount { get; set; } + + [JsonPropertyName("BossEscortDifficult")] + public string[] BossEscortDifficulty { get; set; } + + [JsonPropertyName("BossEscortType")] + public string? BossEscortType { get; set; } } -public class Props +public class BotLocationModifier { - [JsonPropertyName("Center")] - public XYZ Center { get; set; } - - [JsonPropertyName("Size")] - public XYZ? Size { get; set; } - - [JsonPropertyName("Radius")] - public float Radius { get; set; } + [JsonPropertyName("AccuracySpeed")] + public double? AccuracySpeed { get; set; } + + [JsonPropertyName("AdditionalHostilitySettings")] + public AdditionalHostilitySettings[] AdditionalHostilitySettings { get; set; } + + [JsonPropertyName("DistToActivate")] + public double? DistanceToActivate { get; set; } + + [JsonPropertyName("DistToActivatePvE")] + public double? DistanceToActivatePvE { get; set; } + + [JsonPropertyName("DistToPersueAxemanCoef")] + public double? DistanceToPursueAxemanCoefficient { get; set; } + + [JsonPropertyName("DistToSleep")] + public double? DistanceToSleep { get; set; } + + [JsonPropertyName("DistToSleepPvE")] + public double? DistanceToSleepPvE { get; set; } + + [JsonPropertyName("GainSight")] + public double? GainSight { get; set; } + + [JsonPropertyName("KhorovodChance")] + public double? KhorovodChance { get; set; } + + [JsonPropertyName("MagnetPower")] + public double? MagnetPower { get; set; } + + [JsonPropertyName("MarksmanAccuratyCoef")] + public double? MarksmanAccuracyCoefficient { get; set; } + + [JsonPropertyName("Scattering")] + public double? Scattering { get; set; } + + [JsonPropertyName("VisibleDistance")] + public double? VisibleDistance { get; set; } + + [JsonPropertyName("MaxExfiltrationTime")] + public double? MaxExfiltrationTime { get; set; } + + [JsonPropertyName("MinExfiltrationTime")] + public double? MinExfiltrationTime { get; set; } } -public class Exit +public class AdditionalHostilitySettings { - /** % Chance out of 100 exit will appear in raid */ - [JsonPropertyName("Chance")] - public double Chance { get; set; } - - [JsonPropertyName("ChancePVE")] - public double ChancePVE { get; set; } - - [JsonPropertyName("Count")] - public int Count { get; set; } - - [JsonPropertyName("CountPve")] - public int CountPve { get; set; } - - // Had to add this property as BSG sometimes names the properties with full PVE capitals - // This property will just point the value to CountPve - [JsonPropertyName("CountPVE")] - public int CountPVE - { - set => CountPve = value; - } - - [JsonPropertyName("EntryPoints")] - public string EntryPoints { get; set; } - - [JsonPropertyName("EventAvailable")] - public bool EventAvailable { get; set; } + [JsonPropertyName("AlwaysEnemies")] + public List? AlwaysEnemies { get; set; } - [JsonPropertyName("EligibleForPMC")] - public bool? EligibleForPMC { get; set; } + [JsonPropertyName("AlwaysFriends")] + public List? AlwaysFriends { get; set; } - [JsonPropertyName("EligibleForScav")] - public bool? EligibleForScav { get; set; } - - [JsonPropertyName("ExfiltrationTime")] - public double ExfiltrationTime { get; set; } - - [JsonPropertyName("ExfiltrationTimePVE")] - public float ExfiltrationTimePVE { get; set; } - - [JsonPropertyName("ExfiltrationType")] - public string ExfiltrationType { get; set; } - - [JsonPropertyName("RequiredSlot")] - public string RequiredSlot { get; set; } - - [JsonPropertyName("Id")] - public string Id { get; set; } - - [JsonPropertyName("MaxTime")] - public double MaxTime { get; set; } - - [JsonPropertyName("MaxTimePVE")] - public double MaxTimePVE { get; set; } - - [JsonPropertyName("MinTime")] - public double MinTime { get; set; } - - [JsonPropertyName("MinTimePVE")] - public double MinTimePVE { get; set; } - - [JsonPropertyName("Name")] - public string Name { get; set; } - - [JsonPropertyName("PassageRequirement")] - public string PassageRequirement { get; set; } - - [JsonPropertyName("PlayersCount")] - public int PlayersCount { get; set; } - - [JsonPropertyName("PlayersCountPVE")] - public int PlayersCountPVE { get; set; } - - [JsonPropertyName("RequirementTip")] - public string RequirementTip { get; set; } - - [JsonPropertyName("Side")] - public string Side { get; set; } + [JsonPropertyName("BearEnemyChance")] + public int? BearEnemyChance { get; set; } + + [JsonPropertyName("BearPlayerBehaviour")] + public string? BearPlayerBehaviour { get; set; } + + [JsonPropertyName("BotRole")] + public string? BotRole { get; set; } + + [JsonPropertyName("ChancedEnemies")] + public List? ChancedEnemies { get; set; } + + [JsonPropertyName("Neutral")] + public List? Neutral { get; set; } + + [JsonPropertyName("SavagePlayerBehaviour")] + public string? SavagePlayerBehaviour { get; set; } + + [JsonPropertyName("SavageEnemyChance")] + public int? SavageEnemyChance { get; set; } + + [JsonPropertyName("UsecEnemyChance")] + public int? UsecEnemyChance { get; set; } + + [JsonPropertyName("UsecPlayerBehaviour")] + public string? UsecPlayerBehaviour { get; set; } + + [JsonPropertyName("Warn")] + public List? Warn { get; set; } +} + +public class ChancedEnemy +{ + [JsonPropertyName("EnemyChance")] + public int? EnemyChance { get; set; } + + [JsonPropertyName("Role")] + public string? Role { get; set; } +} + +public class MinMaxBot : MinMax +{ + [JsonPropertyName("WildSpawnType")] + public object WildSpawnType { get; set; } // TODO: Could be WildSpawnType or string +} + +public class MinPlayerWaitTime +{ + [JsonPropertyName("minPlayers")] + public int? MinPlayers { get; set; } + + [JsonPropertyName("time")] + public int? Time { get; set; } +} + +public class Preview +{ + [JsonPropertyName("path")] + public string? Path { get; set; } + + [JsonPropertyName("rcid")] + public string? Rcid { get; set; } +} + +public class Scene +{ + [JsonPropertyName("path")] + public string? Path { get; set; } + + [JsonPropertyName("rcid")] + public string? Rcid { get; set; } +} + +public class SpawnPointParam +{ + [JsonPropertyName("BotZoneName")] + public string? BotZoneName { get; set; } + + [JsonPropertyName("Categories")] + public List? Categories { get; set; } + + [JsonPropertyName("ColliderParams")] + public ColliderParams? ColliderParams { get; set; } + + [JsonPropertyName("CorePointId")] + public int? CorePointId { get; set; } + + [JsonPropertyName("DelayToCanSpawnSec")] + public double? DelayToCanSpawnSec { get; set; } + + [JsonPropertyName("Id")] + public string? Id { get; set; } + + [JsonPropertyName("Infiltration")] + public string? Infiltration { get; set; } + + [JsonPropertyName("Position")] + public XYZ? Position { get; set; } + + [JsonPropertyName("Rotation")] + public float? Rotation { get; set; } + + [JsonPropertyName("Sides")] + public List? Sides { get; set; } +} + +public class ColliderParams +{ + [JsonPropertyName("_parent")] + public string? Parent { get; set; } + + [JsonPropertyName("_props")] + public Props? Props { get; set; } +} + +public class Props +{ + [JsonPropertyName("Center")] + public XYZ? Center { get; set; } + + [JsonPropertyName("Size")] + public XYZ? Size { get; set; } + + [JsonPropertyName("Radius")] + public float? Radius { get; set; } +} + +public class Exit +{ + /** % Chance out of 100 exit will appear in raid */ + [JsonPropertyName("Chance")] + public double? Chance { get; set; } + + [JsonPropertyName("ChancePVE")] + public double? ChancePVE { get; set; } + + [JsonPropertyName("Count")] + public int? Count { get; set; } + + [JsonPropertyName("CountPve")] + public int? CountPve { get; set; } + + // Had to add this property as BSG sometimes names the properties with full PVE capitals + // This property will just point the value to CountPve + [JsonPropertyName("CountPVE")] + public int CountPVE + { + set => CountPve = value; + } + + [JsonPropertyName("EntryPoints")] + public string? EntryPoints { get; set; } + + [JsonPropertyName("EventAvailable")] + public bool? EventAvailable { get; set; } + + [JsonPropertyName("EligibleForPMC")] + public bool? EligibleForPMC { get; set; } + + [JsonPropertyName("EligibleForScav")] + public bool? EligibleForScav { get; set; } + + [JsonPropertyName("ExfiltrationTime")] + public double? ExfiltrationTime { get; set; } + + [JsonPropertyName("ExfiltrationTimePVE")] + public float? ExfiltrationTimePVE { get; set; } + + [JsonPropertyName("ExfiltrationType")] + public string? ExfiltrationType { get; set; } + + [JsonPropertyName("RequiredSlot")] + public string? RequiredSlot { get; set; } + + [JsonPropertyName("Id")] + public string? Id { get; set; } + + [JsonPropertyName("MaxTime")] + public double? MaxTime { get; set; } + + [JsonPropertyName("MaxTimePVE")] + public double? MaxTimePVE { get; set; } + + [JsonPropertyName("MinTime")] + public double? MinTime { get; set; } + + [JsonPropertyName("MinTimePVE")] + public double? MinTimePVE { get; set; } + + [JsonPropertyName("Name")] + public string? Name { get; set; } + + [JsonPropertyName("PassageRequirement")] + public string? PassageRequirement { get; set; } + + [JsonPropertyName("PlayersCount")] + public int? PlayersCount { get; set; } + + [JsonPropertyName("PlayersCountPVE")] + public int? PlayersCountPVE { get; set; } + + [JsonPropertyName("RequirementTip")] + public string? RequirementTip { get; set; } + + [JsonPropertyName("Side")] + public string? Side { get; set; } } public class MaxItemCountInLocation { - [JsonPropertyName("TemplateId")] - public string TemplateId { get; set; } + [JsonPropertyName("TemplateId")] + public string? TemplateId { get; set; } - [JsonPropertyName("Value")] - public int Value { get; set; } + [JsonPropertyName("Value")] + public int? Value { get; set; } } public class Wave { - [JsonPropertyName("BotPreset")] - public string BotPreset { get; set; } + [JsonPropertyName("BotPreset")] + public string? BotPreset { get; set; } - [JsonPropertyName("BotSide")] - public string BotSide { get; set; } + [JsonPropertyName("BotSide")] + public string? BotSide { get; set; } - [JsonPropertyName("SpawnPoints")] - public string SpawnPoints { get; set; } + [JsonPropertyName("SpawnPoints")] + public string? SpawnPoints { get; set; } - [JsonPropertyName("WildSpawnType")] - [JsonConverter(typeof(JsonStringEnumConverter))] - public WildSpawnType WildSpawnType { get; set; } + [JsonPropertyName("WildSpawnType")] + [JsonConverter(typeof(JsonStringEnumConverter))] + public WildSpawnType? WildSpawnType { get; set; } - [JsonPropertyName("isPlayers")] - public bool IsPlayers { get; set; } + [JsonPropertyName("isPlayers")] + public bool? IsPlayers { get; set; } - [JsonPropertyName("number")] - public int Number { get; set; } + [JsonPropertyName("number")] + public int? Number { get; set; } - [JsonPropertyName("slots_max")] - public int SlotsMax { get; set; } + [JsonPropertyName("slots_max")] + public int? SlotsMax { get; set; } - [JsonPropertyName("slots_min")] - public int SlotsMin { get; set; } + [JsonPropertyName("slots_min")] + public int? SlotsMin { get; set; } - [JsonPropertyName("time_max")] - public int TimeMax { get; set; } + [JsonPropertyName("time_max")] + public int? TimeMax { get; set; } - [JsonPropertyName("time_min")] - public int TimeMin { get; set; } + [JsonPropertyName("time_min")] + public int? TimeMin { get; set; } - /** OPTIONAL - Needs to be unique - Used by custom wave service to ensure same wave isnt added multiple times */ - [JsonPropertyName("sptId")] - public string? SptId { get; set; } + /** OPTIONAL - Needs to be unique - Used by custom wave service to ensure same wave isnt added multiple times */ + [JsonPropertyName("sptId")] + public string? SptId { get; set; } - [JsonPropertyName("ChanceGroup")] - public int? ChanceGroup { get; set; } + [JsonPropertyName("ChanceGroup")] + public int? ChanceGroup { get; set; } - /** 'pve' and/or 'regular' */ - [JsonPropertyName("SpawnMode")] - public List SpawnMode { get; set; } + /** 'pve' and/or 'regular' */ + [JsonPropertyName("SpawnMode")] + public List? SpawnMode { get; set; } } public class LocationEvents { - [JsonPropertyName("Halloween2024")] - public Halloween2024 Halloween2024 { get; set; } - - public Khorovod? Khorovod { get; set; } + [JsonPropertyName("Halloween2024")] + public Halloween2024? Halloween2024 { get; set; } + + public Khorovod? Khorovod { get; set; } } public class Khorovod { - public double Chance { get; set; } + public double? Chance { get; set; } } public class Halloween2024 { - [JsonPropertyName("CrowdAttackBlockRadius")] - public int CrowdAttackBlockRadius { get; set; } + [JsonPropertyName("CrowdAttackBlockRadius")] + public int? CrowdAttackBlockRadius { get; set; } - [JsonPropertyName("CrowdAttackSpawnParams")] - public List CrowdAttackSpawnParams { get; set; } + [JsonPropertyName("CrowdAttackSpawnParams")] + public List? CrowdAttackSpawnParams { get; set; } - [JsonPropertyName("CrowdCooldownPerPlayerSec")] - public int CrowdCooldownPerPlayerSec { get; set; } + [JsonPropertyName("CrowdCooldownPerPlayerSec")] + public int? CrowdCooldownPerPlayerSec { get; set; } - [JsonPropertyName("CrowdsLimit")] - public int CrowdsLimit { get; set; } + [JsonPropertyName("CrowdsLimit")] + public int? CrowdsLimit { get; set; } - [JsonPropertyName("InfectedLookCoeff")] - public double InfectedLookCoeff { get; set; } + [JsonPropertyName("InfectedLookCoeff")] + public double? InfectedLookCoeff { get; set; } - [JsonPropertyName("MaxCrowdAttackSpawnLimit")] - public int MaxCrowdAttackSpawnLimit { get; set; } + [JsonPropertyName("MaxCrowdAttackSpawnLimit")] + public int? MaxCrowdAttackSpawnLimit { get; set; } - [JsonPropertyName("MinInfectionPercentage")] - public double MinInfectionPercentage { get; set; } + [JsonPropertyName("MinInfectionPercentage")] + public double? MinInfectionPercentage { get; set; } - [JsonPropertyName("MinSpawnDistToPlayer")] - public double MinSpawnDistToPlayer { get; set; } + [JsonPropertyName("MinSpawnDistToPlayer")] + public double? MinSpawnDistToPlayer { get; set; } - [JsonPropertyName("TargetPointSearchRadiusLimit")] - public double TargetPointSearchRadiusLimit { get; set; } + [JsonPropertyName("TargetPointSearchRadiusLimit")] + public double? TargetPointSearchRadiusLimit { get; set; } - [JsonPropertyName("ZombieCallDeltaRadius")] - public double ZombieCallDeltaRadius { get; set; } + [JsonPropertyName("ZombieCallDeltaRadius")] + public double? ZombieCallDeltaRadius { get; set; } - [JsonPropertyName("ZombieCallPeriodSec")] - public int ZombieCallPeriodSec { get; set; } + [JsonPropertyName("ZombieCallPeriodSec")] + public int? ZombieCallPeriodSec { get; set; } - [JsonPropertyName("ZombieCallRadiusLimit")] - public double ZombieCallRadiusLimit { get; set; } + [JsonPropertyName("ZombieCallRadiusLimit")] + public double? ZombieCallRadiusLimit { get; set; } - [JsonPropertyName("ZombieMultiplier")] - public double ZombieMultiplier { get; set; } + [JsonPropertyName("ZombieMultiplier")] + public double? ZombieMultiplier { get; set; } - [JsonPropertyName("InfectionPercentage")] - public double InfectionPercentage { get; set; } - - public Khorovod? Khorovod { get; set; } + [JsonPropertyName("InfectionPercentage")] + public double? InfectionPercentage { get; set; } + + public Khorovod? Khorovod { get; set; } } public class CrowdAttackSpawnParam { - [JsonPropertyName("Difficulty")] - public string Difficulty { get; set; } + [JsonPropertyName("Difficulty")] + public string? Difficulty { get; set; } - [JsonPropertyName("Role")] - public string Role { get; set; } + [JsonPropertyName("Role")] + public string? Role { get; set; } - [JsonPropertyName("Weight")] - public int Weight { get; set; } + [JsonPropertyName("Weight")] + public int? Weight { get; set; } } public enum WildSpawnType { - assault, - marksman, - pmcbot, - bosskilla, - bossknight + assault, + marksman, + pmcbot, + bosskilla, + bossknight } \ No newline at end of file diff --git a/Core/Models/Eft/Common/LooseLoot.cs b/Core/Models/Eft/Common/LooseLoot.cs index 2d8fa8bb..7f6ec70b 100644 --- a/Core/Models/Eft/Common/LooseLoot.cs +++ b/Core/Models/Eft/Common/LooseLoot.cs @@ -5,114 +5,114 @@ namespace Core.Models.Eft.Common; public class LooseLoot { - [JsonPropertyName("spawnpointCount")] - public SpawnpointCount SpawnpointCount { get; set; } - - [JsonPropertyName("spawnpointsForced")] - public List SpawnpointsForced { get; set; } - - [JsonPropertyName("spawnpoints")] - public List Spawnpoints { get; set; } + [JsonPropertyName("spawnpointCount")] + public SpawnpointCount? SpawnpointCount { get; set; } + + [JsonPropertyName("spawnpointsForced")] + public List? SpawnpointsForced { get; set; } + + [JsonPropertyName("spawnpoints")] + public List? Spawnpoints { get; set; } } public class SpawnpointCount { - [JsonPropertyName("mean")] - public double Mean { get; set; } - - [JsonPropertyName("std")] - public double Std { get; set; } + [JsonPropertyName("mean")] + public double? Mean { get; set; } + + [JsonPropertyName("std")] + public double? Std { get; set; } } public class SpawnpointsForced { - [JsonPropertyName("locationId")] - public string LocationId { get; set; } - - [JsonPropertyName("probability")] - public double Probability { get; set; } - - [JsonPropertyName("template")] - public SpawnpointTemplate Template { get; set; } + [JsonPropertyName("locationId")] + public string? LocationId { get; set; } + + [JsonPropertyName("probability")] + public double? Probability { get; set; } + + [JsonPropertyName("template")] + public SpawnpointTemplate? Template { get; set; } } public class SpawnpointTemplate { - [JsonPropertyName("Id")] - public string Id { get; set; } - - [JsonPropertyName("IsContainer")] - public bool IsContainer { get; set; } - - [JsonPropertyName("useGravity")] - public bool UseGravity { get; set; } - - [JsonPropertyName("randomRotation")] - public bool RandomRotation { get; set; } - - [JsonPropertyName("Position")] - public XYZ Position { get; set; } - - [JsonPropertyName("Rotation")] - public XYZ Rotation { get; set; } - - [JsonPropertyName("IsAlwaysSpawn")] - public bool IsAlwaysSpawn { get; set; } - - [JsonPropertyName("IsGroupPosition")] - public bool IsGroupPosition { get; set; } - - [JsonPropertyName("GroupPositions")] - public List GroupPositions { get; set; } - - [JsonPropertyName("Root")] - public string Root { get; set; } - - [JsonPropertyName("Items")] - public List Items { get; set; } + [JsonPropertyName("Id")] + public string? Id { get; set; } + + [JsonPropertyName("IsContainer")] + public bool? IsContainer { get; set; } + + [JsonPropertyName("useGravity")] + public bool? UseGravity { get; set; } + + [JsonPropertyName("randomRotation")] + public bool? RandomRotation { get; set; } + + [JsonPropertyName("Position")] + public XYZ? Position { get; set; } + + [JsonPropertyName("Rotation")] + public XYZ? Rotation { get; set; } + + [JsonPropertyName("IsAlwaysSpawn")] + public bool? IsAlwaysSpawn { get; set; } + + [JsonPropertyName("IsGroupPosition")] + public bool? IsGroupPosition { get; set; } + + [JsonPropertyName("GroupPositions")] + public List? GroupPositions { get; set; } + + [JsonPropertyName("Root")] + public string? Root { get; set; } + + [JsonPropertyName("Items")] + public List? Items { get; set; } } public class GroupPosition { - [JsonPropertyName("Name")] - public string Name { get; set; } - - [JsonPropertyName("Weight")] - public double Weight { get; set; } - - [JsonPropertyName("Position")] - public XYZ Position { get; set; } - - [JsonPropertyName("Rotation")] - public XYZ Rotation { get; set; } + [JsonPropertyName("Name")] + public string? Name { get; set; } + + [JsonPropertyName("Weight")] + public double? Weight { get; set; } + + [JsonPropertyName("Position")] + public XYZ? Position { get; set; } + + [JsonPropertyName("Rotation")] + public XYZ? Rotation { get; set; } } public class Spawnpoint { - [JsonPropertyName("locationId")] - public string LocationId { get; set; } - - [JsonPropertyName("probability")] - public double Probability { get; set; } - - [JsonPropertyName("template")] - public SpawnpointTemplate Template { get; set; } - - [JsonPropertyName("itemDistribution")] - public List ItemDistribution { get; set; } + [JsonPropertyName("locationId")] + public string? LocationId { get; set; } + + [JsonPropertyName("probability")] + public double? Probability { get; set; } + + [JsonPropertyName("template")] + public SpawnpointTemplate? Template { get; set; } + + [JsonPropertyName("itemDistribution")] + public List? ItemDistribution { get; set; } } public class LooseLootItemDistribution { - [JsonPropertyName("composedKey")] - public ComposedKey ComposedKey { get; set; } - - [JsonPropertyName("relativeProbability")] - public double RelativeProbability { get; set; } + [JsonPropertyName("composedKey")] + public ComposedKey? ComposedKey { get; set; } + + [JsonPropertyName("relativeProbability")] + public double? RelativeProbability { get; set; } } public class ComposedKey { - [JsonPropertyName("key")] - public string Key { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/PmcData.cs b/Core/Models/Eft/Common/PmcData.cs index a298617b..511f4553 100644 --- a/Core/Models/Eft/Common/PmcData.cs +++ b/Core/Models/Eft/Common/PmcData.cs @@ -5,21 +5,20 @@ namespace Core.Models.Eft.Common; public class PmcData : BotBase { - } public class PostRaidPmcData : BotBase { - [JsonPropertyName("Stats")] - public PostRaidStats Stats { get; set; } + [JsonPropertyName("Stats")] + public PostRaidStats? Stats { get; set; } } public class PostRaidStats { - [JsonPropertyName("Eft")] - public EftStats Eft { get; set; } + [JsonPropertyName("Eft")] + public EftStats? Eft { get; set; } - /** Only found in profile we get from client post raid */ - [JsonPropertyName("Arena")] - public EftStats Arena { get; set; } + /** Only found in profile we get from client post raid */ + [JsonPropertyName("Arena")] + public EftStats? Arena { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Request/BaseInteractionRequestData.cs b/Core/Models/Eft/Common/Request/BaseInteractionRequestData.cs index 203c686d..6e5d54f1 100644 --- a/Core/Models/Eft/Common/Request/BaseInteractionRequestData.cs +++ b/Core/Models/Eft/Common/Request/BaseInteractionRequestData.cs @@ -5,20 +5,20 @@ namespace Core.Models.Eft.Common.Request; public class BaseInteractionRequestData { [JsonPropertyName("Action")] - public virtual string Action { get; set; } + public virtual string? Action { get; set; } [JsonPropertyName("fromOwner")] - public OwnerInfo FromOwner { get; set; } + public OwnerInfo? FromOwner { get; set; } [JsonPropertyName("toOwner")] - public OwnerInfo ToOwner { get; set; } + public OwnerInfo? ToOwner { get; set; } } public class OwnerInfo { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("type")] - public string Type { get; set; } + public string? Type { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Request/UIDRequestData.cs b/Core/Models/Eft/Common/Request/UIDRequestData.cs index c209c9f0..a3acd166 100644 --- a/Core/Models/Eft/Common/Request/UIDRequestData.cs +++ b/Core/Models/Eft/Common/Request/UIDRequestData.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Common.Request; public class UIDRequestData { [JsonPropertyName("uid")] - public string Uid { get; set; } + public string? Uid { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/Achievement.cs b/Core/Models/Eft/Common/Tables/Achievement.cs index 167898c3..c96a9f91 100644 --- a/Core/Models/Eft/Common/Tables/Achievement.cs +++ b/Core/Models/Eft/Common/Tables/Achievement.cs @@ -5,47 +5,47 @@ namespace Core.Models.Eft.Common.Tables; public class Achievement { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("imageUrl")] - public string ImageUrl { get; set; } + public string? ImageUrl { get; set; } [JsonPropertyName("assetPath")] - public string AssetPath { get; set; } + public string? AssetPath { get; set; } [JsonPropertyName("rewards")] - public QuestRewards Rewards { get; set; } + public QuestRewards? Rewards { get; set; } [JsonPropertyName("conditions")] - public QuestConditionTypes Conditions { get; set; } + public QuestConditionTypes? Conditions { get; set; } [JsonPropertyName("instantComplete")] - public bool InstantComplete { get; set; } + public bool? InstantComplete { get; set; } [JsonPropertyName("showNotificationsInGame")] - public bool ShowNotificationsInGame { get; set; } + public bool? ShowNotificationsInGame { get; set; } [JsonPropertyName("showProgress")] - public bool ShowProgress { get; set; } + public bool? ShowProgress { get; set; } [JsonPropertyName("prefab")] - public string Prefab { get; set; } + public string? Prefab { get; set; } [JsonPropertyName("rarity")] - public string Rarity { get; set; } + public string? Rarity { get; set; } [JsonPropertyName("hidden")] - public bool Hidden { get; set; } + public bool? Hidden { get; set; } [JsonPropertyName("showConditions")] - public bool ShowConditions { get; set; } + public bool? ShowConditions { get; set; } [JsonPropertyName("progressBarEnabled")] - public bool ProgressBarEnabled { get; set; } + public bool? ProgressBarEnabled { get; set; } [JsonPropertyName("side")] - public string Side { get; set; } + public string? Side { get; set; } [JsonPropertyName("index")] - public int Index { get; set; } + public int? Index { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/BotBase.cs b/Core/Models/Eft/Common/Tables/BotBase.cs index 336ed909..c9383b8a 100644 --- a/Core/Models/Eft/Common/Tables/BotBase.cs +++ b/Core/Models/Eft/Common/Tables/BotBase.cs @@ -9,91 +9,91 @@ namespace Core.Models.Eft.Common.Tables; public class BotBase { [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("aid")] - public double Aid { get; set; } + public double? Aid { get; set; } /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ [JsonPropertyName("sessionId")] - public string SessionId { get; set; } + public string? SessionId { get; set; } [JsonPropertyName("savage")] public string? Savage { get; set; } [JsonPropertyName("karmaValue")] - public double KarmaValue { get; set; } + public double? KarmaValue { get; set; } [JsonPropertyName("Info")] - public Info Info { get; set; } + public Info? Info { get; set; } [JsonPropertyName("Customization")] - public Customization Customization { get; set; } + public Customization? Customization { get; set; } [JsonPropertyName("Health")] - public BotBaseHealth Health { get; set; } + public BotBaseHealth? Health { get; set; } [JsonPropertyName("Inventory")] - public BotBaseInventory Inventory { get; set; } + public BotBaseInventory? Inventory { get; set; } [JsonPropertyName("Skills")] - public Skills Skills { get; set; } + public Skills? Skills { get; set; } [JsonPropertyName("Stats")] - public Stats Stats { get; set; } + public Stats? Stats { get; set; } [JsonPropertyName("Encyclopedia")] - public Dictionary Encyclopedia { get; set; } + public Dictionary? Encyclopedia { get; set; } [JsonPropertyName("TaskConditionCounters")] - public Dictionary TaskConditionCounters { get; set; } + public Dictionary? TaskConditionCounters { get; set; } [JsonPropertyName("InsuredItems")] - public List InsuredItems { get; set; } + public List? InsuredItems { get; set; } [JsonPropertyName("Hideout")] - public Hideout Hideout { get; set; } + public Hideout? Hideout { get; set; } [JsonPropertyName("Quests")] - public List Quests { get; set; } + public List? Quests { get; set; } [JsonPropertyName("TradersInfo")] - public Dictionary TradersInfo { get; set; } + public Dictionary? TradersInfo { get; set; } [JsonPropertyName("UnlockedInfo")] - public UnlockedInfo UnlockedInfo { get; set; } + public UnlockedInfo? UnlockedInfo { get; set; } [JsonPropertyName("RagfairInfo")] - public RagfairInfo RagfairInfo { get; set; } + public RagfairInfo? RagfairInfo { get; set; } /** Achievement id and timestamp */ [JsonPropertyName("Achievements")] - public Dictionary Achievements { get; set; } + public Dictionary? Achievements { get; set; } [JsonPropertyName("RepeatableQuests")] - public List RepeatableQuests { get; set; } + public List? RepeatableQuests { get; set; } [JsonPropertyName("Bonuses")] - public List Bonuses { get; set; } + public List? Bonuses { get; set; } [JsonPropertyName("Notes")] - public Notes Notes { get; set; } + public Notes? Notes { get; set; } [JsonPropertyName("CarExtractCounts")] - public Dictionary CarExtractCounts { get; set; } + public Dictionary? CarExtractCounts { get; set; } [JsonPropertyName("CoopExtractCounts")] - public Dictionary CoopExtractCounts { get; set; } + public Dictionary? CoopExtractCounts { get; set; } [JsonPropertyName("SurvivorClass")] - public SurvivorClass SurvivorClass { get; set; } + public SurvivorClass? SurvivorClass { get; set; } [JsonPropertyName("WishList")] [JsonConverter(typeof(ArrayToObjectFactoryConverter))] - public Dictionary WishList { get; set; } + public Dictionary? WishList { get; set; } [JsonPropertyName("moneyTransferLimitData")] - public MoneyTransferLimits MoneyTransferLimitData { get; set; } + public MoneyTransferLimits? MoneyTransferLimitData { get; set; } /** SPT specific property used during bot generation in raid */ [JsonPropertyName("sptIsPmc")] @@ -105,7 +105,7 @@ public class MoneyTransferLimits // Resets every 24 hours in live /** TODO: Implement */ [JsonPropertyName("nextResetTime")] - public double NextResetTime { get; set; } + public double? NextResetTime { get; set; } [JsonPropertyName("remainingLimit")] public double RemainingLimit { get; set; } diff --git a/Core/Models/Eft/Common/Tables/BotCore.cs b/Core/Models/Eft/Common/Tables/BotCore.cs index 7d5cbee0..d2bbe699 100644 --- a/Core/Models/Eft/Common/Tables/BotCore.cs +++ b/Core/Models/Eft/Common/Tables/BotCore.cs @@ -2,83 +2,83 @@ namespace Core.Models.Eft.Common.Tables; -/* + public class BotCore { [JsonPropertyName("SAVAGE_KILL_DIST")] - public double SavageKillDistance { get; set; } + public double? SavageKillDistance { get; set; } [JsonPropertyName("SOUND_DOOR_BREACH_METERS")] - public double SoundDoorBreachMeters { get; set; } + public double? SoundDoorBreachMeters { get; set; } [JsonPropertyName("SOUND_DOOR_OPEN_METERS")] - public double SoundDoorOpenMeters { get; set; } + public double? SoundDoorOpenMeters { get; set; } [JsonPropertyName("STEP_NOISE_DELTA")] - public double StepNoiseDelta { get; set; } + public double? StepNoiseDelta { get; set; } [JsonPropertyName("JUMP_NOISE_DELTA")] - public double JumpNoiseDelta { get; set; } + public double? JumpNoiseDelta { get; set; } [JsonPropertyName("GUNSHOT_SPREAD")] - public double GunshotSpread { get; set; } + public double? GunshotSpread { get; set; } [JsonPropertyName("GUNSHOT_SPREAD_SILENCE")] - public double GunshotSpreadSilence { get; set; } + public double? GunshotSpreadSilence { get; set; } [JsonPropertyName("BASE_WALK_SPEREAD2")] - public double BaseWalkSpread2 { get; set; } + public double? BaseWalkSpread2 { get; set; } [JsonPropertyName("MOVE_SPEED_COEF_MAX")] - public double MoveSpeedCoefficientMax { get; set; } + public double? MoveSpeedCoefficientMax { get; set; } [JsonPropertyName("SPEED_SERV_SOUND_COEF_A")] - public double SpeedServiceSoundCoefficientA { get; set; } + public double? SpeedServiceSoundCoefficientA { get; set; } [JsonPropertyName("SPEED_SERV_SOUND_COEF_B")] - public double SpeedServiceSoundCoefficientB { get; set; } + public double? SpeedServiceSoundCoefficientB { get; set; } [JsonPropertyName("G")] - public double Gravity { get; set; } + public double? Gravity { get; set; } [JsonPropertyName("STAY_COEF")] - public double StayCoefficient { get; set; } + public double? StayCoefficient { get; set; } [JsonPropertyName("SIT_COEF")] - public double SitCoefficient { get; set; } + public double? SitCoefficient { get; set; } [JsonPropertyName("LAY_COEF")] - public double LayCoefficient { get; set; } + public double? LayCoefficient { get; set; } [JsonPropertyName("MAX_ITERATIONS")] - public double MaxIterations { get; set; } + public double? MaxIterations { get; set; } [JsonPropertyName("START_DIST_TO_COV")] - public double StartDistanceToCover { get; set; } + public double? StartDistanceToCover { get; set; } [JsonPropertyName("MAX_DIST_TO_COV")] - public double MaxDistanceToCover { get; set; } + public double? MaxDistanceToCover { get; set; } [JsonPropertyName("STAY_HEIGHT")] - public double StayHeight { get; set; } + public double? StayHeight { get; set; } [JsonPropertyName("CLOSE_POINTS")] - public double ClosePoints { get; set; } + public double? ClosePoints { get; set; } [JsonPropertyName("COUNT_TURNS")] - public double CountTurns { get; set; } + public double? CountTurns { get; set; } [JsonPropertyName("SIMPLE_POINT_LIFE_TIME_SEC")] - public double SimplePointLifetimeSeconds { get; set; } + public double? SimplePointLifetimeSeconds { get; set; } [JsonPropertyName("DANGER_POINT_LIFE_TIME_SEC")] - public double DangerPointLifetimeSeconds { get; set; } + public double? DangerPointLifetimeSeconds { get; set; } [JsonPropertyName("DANGER_POWER")] - public double DangerPower { get; set; } + public double? DangerPower { get; set; } [JsonPropertyName("COVER_DIST_CLOSE")] - public double CoverDistanceClose { get; set; } + public double? CoverDistanceClose { get; set; } [JsonPropertyName("GOOD_DIST_TO_POINT")] public double GoodDistanceToPoint { get; set; } @@ -398,4 +398,3 @@ public class BotCore [JsonPropertyName("AXE_MAN_KILLS_END")] public double AxeManKillsEnd { get; set; } } -*/ \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/BotType.cs b/Core/Models/Eft/Common/Tables/BotType.cs index 55c0829e..1c8b5a19 100644 --- a/Core/Models/Eft/Common/Tables/BotType.cs +++ b/Core/Models/Eft/Common/Tables/BotType.cs @@ -7,115 +7,115 @@ namespace Core.Models.Eft.Common.Tables; public class BotType { [JsonPropertyName("appearance")] - public Appearance BotAppearance { get; set; } + public Appearance? BotAppearance { get; set; } [JsonPropertyName("chances")] - public Chances BotChances { get; set; } + public Chances? BotChances { get; set; } [JsonPropertyName("difficulty")] - public Difficulties BotDifficulty { get; set; } + public Difficulties? BotDifficulty { get; set; } [JsonPropertyName("experience")] - public Experience BotExperience { get; set; } + public Experience? BotExperience { get; set; } [JsonPropertyName("firstName")] - public List FirstNames { get; set; } + public List? FirstNames { get; set; } [JsonPropertyName("generation")] - public Generation BotGeneration { get; set; } + public Generation? BotGeneration { get; set; } [JsonPropertyName("health")] - public BotTypeHealth BotHealth { get; set; } + public BotTypeHealth? BotHealth { get; set; } [JsonPropertyName("inventory")] - public BotTypeInventory BotInventory { get; set; } + public BotTypeInventory? BotInventory { get; set; } [JsonPropertyName("lastName")] - public List LastNames { get; set; } + public List? LastNames { get; set; } [JsonPropertyName("skills")] - public Skills BotSkills { get; set; } + public Skills? BotSkills { get; set; } } public class Appearance { [JsonPropertyName("body")] - public Dictionary Body { get; set; } + public Dictionary? Body { get; set; } [JsonPropertyName("feet")] - public Dictionary Feet { get; set; } + public Dictionary? Feet { get; set; } [JsonPropertyName("hands")] [JsonConverter(typeof(ArrayToObjectFactoryConverter))] - public Dictionary Hands { get; set; } + public Dictionary? Hands { get; set; } [JsonPropertyName("head")] [JsonConverter(typeof(ArrayToObjectFactoryConverter))] - public Dictionary Head { get; set; } + public Dictionary? Head { get; set; } [JsonPropertyName("voice")] [JsonConverter(typeof(ArrayToObjectFactoryConverter))] - public Dictionary Voice { get; set; } + public Dictionary? Voice { get; set; } } public class Chances { [JsonPropertyName("equipment")] - public EquipmentChances EquipmentChances { get; set; } + public EquipmentChances? EquipmentChances { get; set; } [JsonPropertyName("weaponMods")] - public Dictionary WeaponModsChances { get; set; } + public Dictionary? WeaponModsChances { get; set; } [JsonPropertyName("equipmentMods")] - public Dictionary EquipmentModsChances { get; set; } + public Dictionary? EquipmentModsChances { get; set; } [JsonPropertyName("mods")] - public Dictionary Mods { get; set; } + public Dictionary? Mods { get; set; } } public class EquipmentChances { [JsonPropertyName("ArmBand")] - public int ArmBand { get; set; } + public int? ArmBand { get; set; } [JsonPropertyName("ArmorVest")] - public int ArmorVest { get; set; } + public int? ArmorVest { get; set; } [JsonPropertyName("Backpack")] - public int Backpack { get; set; } + public int? Backpack { get; set; } [JsonPropertyName("Earpiece")] - public int Earpiece { get; set; } + public int? Earpiece { get; set; } [JsonPropertyName("Eyewear")] - public int Eyewear { get; set; } + public int? Eyewear { get; set; } [JsonPropertyName("FaceCover")] - public int FaceCover { get; set; } + public int? FaceCover { get; set; } [JsonPropertyName("FirstPrimaryWeapon")] - public int FirstPrimaryWeapon { get; set; } + public int? FirstPrimaryWeapon { get; set; } [JsonPropertyName("Headwear")] - public int Headwear { get; set; } + public int? Headwear { get; set; } [JsonPropertyName("Holster")] - public int Holster { get; set; } + public int? Holster { get; set; } [JsonPropertyName("Pockets")] - public int Pockets { get; set; } + public int? Pockets { get; set; } [JsonPropertyName("Scabbard")] - public int Scabbard { get; set; } + public int? Scabbard { get; set; } [JsonPropertyName("SecondPrimaryWeapon")] - public int SecondPrimaryWeapon { get; set; } + public int? SecondPrimaryWeapon { get; set; } [JsonPropertyName("SecuredContainer")] - public int SecuredContainer { get; set; } + public int? SecuredContainer { get; set; } [JsonPropertyName("TacticalVest")] - public int TacticalVest { get; set; } + public int? TacticalVest { get; set; } } /* class removed in favor of Dictionary used to be used in: @@ -285,167 +285,167 @@ public class ModsChances public class Difficulties { [JsonPropertyName("easy")] - public DifficultyCategories Easy { get; set; } + public DifficultyCategories? Easy { get; set; } [JsonPropertyName("normal")] - public DifficultyCategories Normal { get; set; } + public DifficultyCategories? Normal { get; set; } [JsonPropertyName("hard")] - public DifficultyCategories Hard { get; set; } + public DifficultyCategories? Hard { get; set; } [JsonPropertyName("impossible")] - public DifficultyCategories Impossible { get; set; } + public DifficultyCategories? Impossible { get; set; } } public class DifficultyCategories { - public Dictionary Aiming { get; set; } // TODO: string | number | boolean - public Dictionary Boss { get; set; } // TODO: string | number | boolean - public Dictionary Change { get; set; } // TODO: string | number | boolean - public Dictionary Core { get; set; } // TODO: string | number | boolean - public Dictionary Cover { get; set; } // TODO: string | number | boolean - public Dictionary Grenade { get; set; } // TODO: string | number | boolean - public Dictionary Hearing { get; set; } // TODO: string | number | boolean - public Dictionary Lay { get; set; } // TODO: string | number | boolean - public Dictionary Look { get; set; } // TODO: string | number | boolean - public Dictionary Mind { get; set; } // TODO: string | number | boolean | string[] - public Dictionary Move { get; set; } // TODO: string | number | boolean - public Dictionary Patrol { get; set; } // TODO: string | number | boolean - public Dictionary Scattering { get; set; } // TODO: string | number | boolean - public Dictionary Shoot { get; set; } // TODO: string | number | boolean + public Dictionary? Aiming { get; set; } // TODO: string | number | boolean + public Dictionary? Boss { get; set; } // TODO: string | number | boolean + public Dictionary? Change { get; set; } // TODO: string | number | boolean + public Dictionary? Core { get; set; } // TODO: string | number | boolean + public Dictionary? Cover { get; set; } // TODO: string | number | boolean + public Dictionary? Grenade { get; set; } // TODO: string | number | boolean + public Dictionary? Hearing { get; set; } // TODO: string | number | boolean + public Dictionary? Lay { get; set; } // TODO: string | number | boolean + public Dictionary? Look { get; set; } // TODO: string | number | boolean + public Dictionary? Mind { get; set; } // TODO: string | number | boolean | string[] + public Dictionary? Move { get; set; } // TODO: string | number | boolean + public Dictionary? Patrol { get; set; } // TODO: string | number | boolean + public Dictionary? Scattering { get; set; } // TODO: string | number | boolean + public Dictionary? Shoot { get; set; } // TODO: string | number | boolean } public class Experience { /** key = bot difficulty */ [JsonPropertyName("aggressorBonus")] - public Dictionary AggressorBonus { get; set; } + public Dictionary? AggressorBonus { get; set; } [JsonPropertyName("level")] - public MinMax Level { get; set; } + public MinMax? Level { get; set; } /** key = bot difficulty */ [JsonPropertyName("reward")] - public Dictionary Reward { get; set; } + public Dictionary? Reward { get; set; } /** key = bot difficulty */ [JsonPropertyName("standingForKill")] - public Dictionary StandingForKill { get; set; } + public Dictionary? StandingForKill { get; set; } [JsonPropertyName("useSimpleAnimator")] - public bool UseSimpleAnimator { get; set; } + public bool? UseSimpleAnimator { get; set; } } public class Generation { [JsonPropertyName("items")] - public GenerationWeightingItems Items { get; set; } + public GenerationWeightingItems? Items { get; set; } } public class GenerationWeightingItems { [JsonPropertyName("grenades")] - public GenerationData Grenades { get; set; } + public GenerationData? Grenades { get; set; } [JsonPropertyName("healing")] - public GenerationData Healing { get; set; } + public GenerationData? Healing { get; set; } [JsonPropertyName("drugs")] - public GenerationData Drugs { get; set; } + public GenerationData? Drugs { get; set; } [JsonPropertyName("food")] - public GenerationData Food { get; set; } + public GenerationData? Food { get; set; } [JsonPropertyName("drink")] - public GenerationData Drink { get; set; } + public GenerationData? Drink { get; set; } [JsonPropertyName("currency")] - public GenerationData Currency { get; set; } + public GenerationData? Currency { get; set; } [JsonPropertyName("stims")] - public GenerationData Stims { get; set; } + public GenerationData? Stims { get; set; } [JsonPropertyName("backpackLoot")] - public GenerationData BackpackLoot { get; set; } + public GenerationData? BackpackLoot { get; set; } [JsonPropertyName("pocketLoot")] - public GenerationData PocketLoot { get; set; } + public GenerationData? PocketLoot { get; set; } [JsonPropertyName("vestLoot")] - public GenerationData VestLoot { get; set; } + public GenerationData? VestLoot { get; set; } [JsonPropertyName("magazines")] - public GenerationData Magazines { get; set; } + public GenerationData? Magazines { get; set; } [JsonPropertyName("specialItems")] - public GenerationData SpecialItems { get; set; } + public GenerationData? SpecialItems { get; set; } } public class GenerationData { /** key: number of items, value: weighting */ [JsonPropertyName("weights")] - public Dictionary Weights { get; set; } + public Dictionary? Weights { get; set; } /** Array of item tpls */ [JsonPropertyName("whitelist")] [JsonConverter(typeof(ArrayToObjectFactoryConverter))] - public Dictionary Whitelist { get; set; } + public Dictionary? Whitelist { get; set; } } public class BotTypeHealth { - public List BodyParts { get; set; } - public MinMax Energy { get; set; } - public MinMax Hydration { get; set; } - public MinMax Temperature { get; set; } + public List? BodyParts { get; set; } + public MinMax? Energy { get; set; } + public MinMax? Hydration { get; set; } + public MinMax? Temperature { get; set; } } public class BodyPart { - public MinMax Chest { get; set; } - public MinMax Head { get; set; } - public MinMax LeftArm { get; set; } - public MinMax LeftLeg { get; set; } - public MinMax RightArm { get; set; } - public MinMax RightLeg { get; set; } - public MinMax Stomach { get; set; } + public MinMax? Chest { get; set; } + public MinMax? Head { get; set; } + public MinMax? LeftArm { get; set; } + public MinMax? LeftLeg { get; set; } + public MinMax? RightArm { get; set; } + public MinMax? RightLeg { get; set; } + public MinMax? Stomach { get; set; } } public class BotTypeInventory { [JsonPropertyName("equipment")] - public Equipment Equipment { get; set; } + public Equipment? Equipment { get; set; } - public GlobalAmmo Ammo { get; set; } + public GlobalAmmo? Ammo { get; set; } [JsonPropertyName("items")] - public ItemPools Items { get; set; } + public ItemPools? Items { get; set; } [JsonPropertyName("mods")] - public GlobalMods Mods { get; set; } + public GlobalMods? Mods { get; set; } } public class Equipment { - public Dictionary ArmBand { get; set; } - public Dictionary ArmorVest { get; set; } - public Dictionary Backpack { get; set; } - public Dictionary Earpiece { get; set; } - public Dictionary Eyewear { get; set; } - public Dictionary FaceCover { get; set; } - public Dictionary FirstPrimaryWeapon { get; set; } - public Dictionary Headwear { get; set; } - public Dictionary Holster { get; set; } - public Dictionary Pockets { get; set; } - public Dictionary Scabbard { get; set; } - public Dictionary SecondPrimaryWeapon { get; set; } - public Dictionary SecuredContainer { get; set; } - public Dictionary TacticalVest { get; set; } + public Dictionary? ArmBand { get; set; } + public Dictionary? ArmorVest { get; set; } + public Dictionary? Backpack { get; set; } + public Dictionary? Earpiece { get; set; } + public Dictionary? Eyewear { get; set; } + public Dictionary? FaceCover { get; set; } + public Dictionary? FirstPrimaryWeapon { get; set; } + public Dictionary? Headwear { get; set; } + public Dictionary? Holster { get; set; } + public Dictionary? Pockets { get; set; } + public Dictionary? Scabbard { get; set; } + public Dictionary? SecondPrimaryWeapon { get; set; } + public Dictionary? SecuredContainer { get; set; } + public Dictionary? TacticalVest { get; set; } } public class ItemPools { - public Dictionary Backpack { get; set; } - public Dictionary Pockets { get; set; } - public Dictionary SecuredContainer { get; set; } - public Dictionary SpecialLoot { get; set; } - public Dictionary TacticalVest { get; set; } + public Dictionary? Backpack { get; set; } + public Dictionary? Pockets { get; set; } + public Dictionary? SecuredContainer { get; set; } + public Dictionary? SpecialLoot { get; set; } + public Dictionary? TacticalVest { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/CustomisationStorage.cs b/Core/Models/Eft/Common/Tables/CustomisationStorage.cs index fa25245d..665a2cbc 100644 --- a/Core/Models/Eft/Common/Tables/CustomisationStorage.cs +++ b/Core/Models/Eft/Common/Tables/CustomisationStorage.cs @@ -5,11 +5,11 @@ namespace Core.Models.Eft.Common.Tables; public class CustomisationStorage { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("source")] - public string Source { get; set; } + public string? Source { get; set; } [JsonPropertyName("type")] - public string Type { get; set; } + public string? Type { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/CustomizationItem.cs b/Core/Models/Eft/Common/Tables/CustomizationItem.cs index fedb8efd..25ba8884 100644 --- a/Core/Models/Eft/Common/Tables/CustomizationItem.cs +++ b/Core/Models/Eft/Common/Tables/CustomizationItem.cs @@ -5,20 +5,20 @@ using System.Text.Json.Serialization; public class CustomizationItem { [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("_name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("_parent")] - public string Parent { get; set; } + public string? Parent { get; set; } [JsonPropertyName("_type")] - public string Type { get; set; } + public string? Type { get; set; } [JsonPropertyName("_props")] - public Props Properties { get; set; } + public Props? Properties { get; set; } [JsonPropertyName("_proto")] - public string Proto { get; set; } + public string? Proto { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/HandbookBase.cs b/Core/Models/Eft/Common/Tables/HandbookBase.cs index 6d5d22f9..d5f5a85e 100644 --- a/Core/Models/Eft/Common/Tables/HandbookBase.cs +++ b/Core/Models/Eft/Common/Tables/HandbookBase.cs @@ -5,38 +5,38 @@ namespace Core.Models.Eft.Common.Tables; public class HandbookBase { [JsonPropertyName("Categories")] - public List Categories { get; set; } + public List? Categories { get; set; } [JsonPropertyName("Items")] - public List Items { get; set; } + public List? Items { get; set; } } public class HandbookCategory { [JsonPropertyName("Id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("ParentId")] public string? ParentId { get; set; } [JsonPropertyName("Icon")] - public string Icon { get; set; } + public string? Icon { get; set; } [JsonPropertyName("Color")] - public string Color { get; set; } + public string? Color { get; set; } [JsonPropertyName("Order")] - public string Order { get; set; } + public string? Order { get; set; } } public class HandbookItem { [JsonPropertyName("Id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("ParentId")] - public string ParentId { get; set; } + public string? ParentId { get; set; } [JsonPropertyName("Price")] - public decimal Price { get; set; } + public decimal? Price { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/Item.cs b/Core/Models/Eft/Common/Tables/Item.cs index bc329258..8847cd28 100644 --- a/Core/Models/Eft/Common/Tables/Item.cs +++ b/Core/Models/Eft/Common/Tables/Item.cs @@ -6,9 +6,9 @@ namespace Core.Models.Eft.Common.Tables; public class Item { [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("_tpl")] - public string Template { get; set; } + public string? Template { get; set; } [JsonPropertyName("parentId")] public string? ParentId { get; set; } [JsonPropertyName("slotId")] @@ -21,9 +21,9 @@ public class Item public class ItemLocation { - public float X { get; set; } - public float Y { get; set; } - public object R { get; set; } // TODO: Can be string or number + public float? X { get; set; } + public float? Y { get; set; } + public object? R { get; set; } // TODO: Can be string or number public bool? IsSearched { get; set; } /** SPT property? */ public object? Rotation { get; set; } // TODO: Can be string or boolean @@ -71,13 +71,13 @@ public enum PinLockState { public class UpdBuff { [JsonPropertyName("Rarity")] - public string Rarity { get; set; } + public string? Rarity { get; set; } [JsonPropertyName("BuffType")] - public string BuffType { get; set; } + public string? BuffType { get; set; } [JsonPropertyName("Value")] - public int Value { get; set; } + public int? Value { get; set; } [JsonPropertyName("ThresholdDurability")] public int? ThresholdDurability { get; set; } @@ -86,164 +86,164 @@ public class UpdBuff public class UpdTogglable { [JsonPropertyName("On")] - public bool On { get; set; } + public bool? On { get; set; } } public class UpdMap { [JsonPropertyName("Markers")] - public List Markers { get; set; } + public List? Markers { get; set; } } public class MapMarker { [JsonPropertyName("X")] - public int X { get; set; } + public int? X { get; set; } [JsonPropertyName("Y")] - public int Y { get; set; } + public int? Y { get; set; } } public class UpdTag { [JsonPropertyName("Color")] - public int Color { get; set; } + public int? Color { get; set; } [JsonPropertyName("Name")] - public string Name { get; set; } + public string? Name { get; set; } } public class UpdFaceShield { [JsonPropertyName("Hits")] - public int Hits { get; set; } + public int? Hits { get; set; } } public class UpdRepairable { [JsonPropertyName("Durability")] - public int Durability { get; set; } + public int? Durability { get; set; } [JsonPropertyName("MaxDurability")] - public int MaxDurability { get; set; } + public int? MaxDurability { get; set; } } public class UpdRecodableComponent { [JsonPropertyName("IsEncoded")] - public bool IsEncoded { get; set; } + public bool? IsEncoded { get; set; } } public class UpdMedKit { [JsonPropertyName("HpResource")] - public int HpResource { get; set; } + public int? HpResource { get; set; } } public class UpdSight { [JsonPropertyName("ScopesCurrentCalibPointIndexes")] - public List ScopesCurrentCalibPointIndexes { get; set; } + public List? ScopesCurrentCalibPointIndexes { get; set; } [JsonPropertyName("ScopesSelectedModes")] - public List ScopesSelectedModes { get; set; } + public List? ScopesSelectedModes { get; set; } [JsonPropertyName("SelectedScope")] - public int SelectedScope { get; set; } + public int? SelectedScope { get; set; } } public class UpdFoldable { [JsonPropertyName("Folded")] - public bool Folded { get; set; } + public bool? Folded { get; set; } } public class UpdFireMode { [JsonPropertyName("FireMode")] - public string FireMode { get; set; } + public string? FireMode { get; set; } } public class UpdFoodDrink { [JsonPropertyName("HpPercent")] - public double HpPercent { get; set; } + public double? HpPercent { get; set; } } public class UpdKey { [JsonPropertyName("NumberOfUsages")] - public double NumberOfUsages { get; set; } + public double? NumberOfUsages { get; set; } } public class UpdResource { [JsonPropertyName("Value")] - public double Value { get; set; } + public double? Value { get; set; } [JsonPropertyName("UnitsConsumed")] - public double UnitsConsumed { get; set; } + public double? UnitsConsumed { get; set; } } public class UpdLight { [JsonPropertyName("IsActive")] - public bool IsActive { get; set; } + public bool? IsActive { get; set; } [JsonPropertyName("SelectedMode")] - public int SelectedMode { get; set; } + public int? SelectedMode { get; set; } } public class UpdDogtag { [JsonPropertyName("AccountId")] - public string AccountId { get; set; } + public string? AccountId { get; set; } [JsonPropertyName("ProfileId")] - public string ProfileId { get; set; } + public string? ProfileId { get; set; } [JsonPropertyName("Nickname")] - public string Nickname { get; set; } + public string? Nickname { get; set; } [JsonPropertyName("Side")] - public string Side { get; set; } + public string? Side { get; set; } [JsonPropertyName("Level")] - public double Level { get; set; } + public double? Level { get; set; } [JsonPropertyName("Time")] - public string Time { get; set; } + public string? Time { get; set; } [JsonPropertyName("Status")] - public string Status { get; set; } + public string? Status { get; set; } [JsonPropertyName("KillerAccountId")] - public string KillerAccountId { get; set; } + public string? KillerAccountId { get; set; } [JsonPropertyName("KillerProfileId")] - public string KillerProfileId { get; set; } + public string? KillerProfileId { get; set; } [JsonPropertyName("KillerName")] - public string KillerName { get; set; } + public string? KillerName { get; set; } [JsonPropertyName("WeaponName")] - public string WeaponName { get; set; } + public string? WeaponName { get; set; } } public class UpdSideEffect { [JsonPropertyName("Value")] - public double Value { get; set; } + public double? Value { get; set; } } public class UpdRepairKit { [JsonPropertyName("Resource")] - public double Resource { get; set; } + public double? Resource { get; set; } } public class UpdCultistAmulet { [JsonPropertyName("NumberOfUsages")] - public double NumberOfUsages { get; set; } + public double? NumberOfUsages { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/LocationServices.cs b/Core/Models/Eft/Common/Tables/LocationServices.cs index 2680bf42..a6099053 100644 --- a/Core/Models/Eft/Common/Tables/LocationServices.cs +++ b/Core/Models/Eft/Common/Tables/LocationServices.cs @@ -5,179 +5,179 @@ namespace Core.Models.Eft.Common.Tables; public class LocationServices { [JsonPropertyName("TraderServerSettings")] - public TraderServerSettings TraderServerSettings { get; set; } + public TraderServerSettings? TraderServerSettings { get; set; } [JsonPropertyName("BTRServerSettings")] - public BtrServerSettings BtrServerSettings { get; set; } + public BtrServerSettings? BtrServerSettings { get; set; } } public class TraderServerSettings { [JsonPropertyName("TraderServices")] - public TraderServices TraderServices { get; set; } + public TraderServices? TraderServices { get; set; } } public class TraderServices { [JsonPropertyName("ExUsecLoyalty")] - public TraderService ExUsecLoyalty { get; set; } + public TraderServices? ExUsecLoyalty { get; set; } [JsonPropertyName("ZryachiyAid")] - public TraderService ZryachiyAid { get; set; } + public TraderServices? ZryachiyAid { get; set; } [JsonPropertyName("CultistsAid")] - public TraderService CultistsAid { get; set; } + public TraderServices? CultistsAid { get; set; } [JsonPropertyName("PlayerTaxi")] - public TraderService PlayerTaxi { get; set; } + public TraderServices? PlayerTaxi { get; set; } [JsonPropertyName("BtrItemsDelivery")] - public TraderService BtrItemsDelivery { get; set; } + public TraderServices? BtrItemsDelivery { get; set; } [JsonPropertyName("BtrBotCover")] - public TraderService BtrBotCover { get; set; } + public TraderServices? BtrBotCover { get; set; } [JsonPropertyName("TransitItemsDelivery")] - public TraderService TransitItemsDelivery { get; set; } + public TraderServices? TransitItemsDelivery { get; set; } } public class TraderService { [JsonPropertyName("TraderId")] - public string TraderId { get; set; } + public string? TraderId { get; set; } [JsonPropertyName("TraderServiceType")] - public string TraderServiceType { get; set; } + public string? TraderServiceType { get; set; } [JsonPropertyName("Requirements")] - public ServiceRequirements Requirements { get; set; } + public ServiceRequirements? Requirements { get; set; } [JsonPropertyName("ServiceItemCost")] - public Dictionary ServiceItemCost { get; set; } + public Dictionary? ServiceItemCost { get; set; } [JsonPropertyName("UniqueItems")] - public List UniqueItems { get; set; } + public List? UniqueItems { get; set; } } public class ServiceRequirements { [JsonPropertyName("CompletedQuests")] - public List CompletedQuests { get; set; } + public List? CompletedQuests { get; set; } [JsonPropertyName("Standings")] - public Dictionary Standings { get; set; } + public Dictionary? Standings { get; set; } } public class CompletedQuest { [JsonPropertyName("QuestId")] - public string QuestId { get; set; } + public string? QuestId { get; set; } } public class StandingRequirement { [JsonPropertyName("Value")] - public int Value { get; set; } + public int? Value { get; set; } } public class ServiceItemCostDetails { [JsonPropertyName("Count")] - public int Count { get; set; } + public int? Count { get; set; } } public class BtrServerSettings { [JsonPropertyName("ChanceSpawn")] - public int ChanceSpawn { get; set; } + public int? ChanceSpawn { get; set; } [JsonPropertyName("SpawnPeriod")] - public XYZ SpawnPeriod { get; set; } + public XYZ? SpawnPeriod { get; set; } [JsonPropertyName("MoveSpeed")] - public float MoveSpeed { get; set; } + public float? MoveSpeed { get; set; } [JsonPropertyName("ReadyToDepartureTime")] - public float ReadyToDepartureTime { get; set; } + public float? ReadyToDepartureTime { get; set; } [JsonPropertyName("CheckTurnDistanceTime")] - public float CheckTurnDistanceTime { get; set; } + public float? CheckTurnDistanceTime { get; set; } [JsonPropertyName("TurnCheckSensitivity")] - public float TurnCheckSensitivity { get; set; } + public float? TurnCheckSensitivity { get; set; } [JsonPropertyName("DecreaseSpeedOnTurnLimit")] - public float DecreaseSpeedOnTurnLimit { get; set; } + public float? DecreaseSpeedOnTurnLimit { get; set; } [JsonPropertyName("EndSplineDecelerationDistance")] - public float EndSplineDecelerationDistance { get; set; } + public float? EndSplineDecelerationDistance { get; set; } [JsonPropertyName("AccelerationSpeed")] - public float AccelerationSpeed { get; set; } + public float? AccelerationSpeed { get; set; } [JsonPropertyName("DecelerationSpeed")] - public float DecelerationSpeed { get; set; } + public float? DecelerationSpeed { get; set; } [JsonPropertyName("PauseDurationRange")] - public XYZ PauseDurationRange { get; set; } + public XYZ? PauseDurationRange { get; set; } [JsonPropertyName("BodySwingReturnSpeed")] - public float BodySwingReturnSpeed { get; set; } + public float? BodySwingReturnSpeed { get; set; } [JsonPropertyName("BodySwingDamping")] - public float BodySwingDamping { get; set; } + public float? BodySwingDamping { get; set; } [JsonPropertyName("BodySwingIntensity")] - public float BodySwingIntensity { get; set; } + public float? BodySwingIntensity { get; set; } [JsonPropertyName("ServerMapBTRSettings")] - public Dictionary ServerMapBTRSettings { get; set; } + public Dictionary? ServerMapBTRSettings { get; set; } } public class ServerMapBtrsettings { [JsonPropertyName("MapID")] - public string MapID { get; set; } + public string? MapID { get; set; } [JsonPropertyName("ChanceSpawn")] - public int ChanceSpawn { get; set; } + public int? ChanceSpawn { get; set; } [JsonPropertyName("SpawnPeriod")] - public XYZ SpawnPeriod { get; set; } + public XYZ? SpawnPeriod { get; set; } [JsonPropertyName("MoveSpeed")] - public float MoveSpeed { get; set; } + public float? MoveSpeed { get; set; } [JsonPropertyName("ReadyToDepartureTime")] - public float ReadyToDepartureTime { get; set; } + public float? ReadyToDepartureTime { get; set; } [JsonPropertyName("CheckTurnDistanceTime")] - public float CheckTurnDistanceTime { get; set; } + public float? CheckTurnDistanceTime { get; set; } [JsonPropertyName("TurnCheckSensitivity")] - public float TurnCheckSensitivity { get; set; } + public float? TurnCheckSensitivity { get; set; } [JsonPropertyName("DecreaseSpeedOnTurnLimit")] - public float DecreaseSpeedOnTurnLimit { get; set; } + public float? DecreaseSpeedOnTurnLimit { get; set; } [JsonPropertyName("EndSplineDecelerationDistance")] - public float EndSplineDecelerationDistance { get; set; } + public float? EndSplineDecelerationDistance { get; set; } [JsonPropertyName("AccelerationSpeed")] - public float AccelerationSpeed { get; set; } + public float? AccelerationSpeed { get; set; } [JsonPropertyName("DecelerationSpeed")] - public float DecelerationSpeed { get; set; } + public float? DecelerationSpeed { get; set; } [JsonPropertyName("PauseDurationRange")] - public XYZ PauseDurationRange { get; set; } + public XYZ? PauseDurationRange { get; set; } [JsonPropertyName("BodySwingReturnSpeed")] - public float BodySwingReturnSpeed { get; set; } + public float? BodySwingReturnSpeed { get; set; } [JsonPropertyName("BodySwingDamping")] - public float BodySwingDamping { get; set; } + public float? BodySwingDamping { get; set; } [JsonPropertyName("BodySwingIntensity")] - public float BodySwingIntensity { get; set; } + public float? BodySwingIntensity { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/LocationsBase.cs b/Core/Models/Eft/Common/Tables/LocationsBase.cs index 0dc3d3a9..be707a1b 100644 --- a/Core/Models/Eft/Common/Tables/LocationsBase.cs +++ b/Core/Models/Eft/Common/Tables/LocationsBase.cs @@ -5,10 +5,10 @@ namespace Core.Models.Eft.Common.Tables; public class LocationsBase { [JsonPropertyName("locations")] - public Locations Locations { get; set; } + public Locations? Locations { get; set; } [JsonPropertyName("paths")] - public List Paths { get; set; } + public List? Paths { get; set; } } public class Locations @@ -19,10 +19,10 @@ public class Locations public class Path { [JsonPropertyName("Source")] - public string Source { get; set; } + public string? Source { get; set; } [JsonPropertyName("Destination")] - public string Destination { get; set; } + public string? Destination { get; set; } - public bool Event { get; set; } + public bool? Event { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/LocationsGenerateAllResponse.cs b/Core/Models/Eft/Common/Tables/LocationsGenerateAllResponse.cs index 2de6130b..2bb0ccc3 100644 --- a/Core/Models/Eft/Common/Tables/LocationsGenerateAllResponse.cs +++ b/Core/Models/Eft/Common/Tables/LocationsGenerateAllResponse.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Common.Tables; public class LocationsGenerateAllResponse { [JsonPropertyName("locations")] - public Locations Locations { get; set; } + public Locations? Locations { get; set; } [JsonPropertyName("paths")] - public List Paths { get; set; } + public List? Paths { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/Match.cs b/Core/Models/Eft/Common/Tables/Match.cs index 88d4bc17..d0165dda 100644 --- a/Core/Models/Eft/Common/Tables/Match.cs +++ b/Core/Models/Eft/Common/Tables/Match.cs @@ -6,26 +6,26 @@ namespace Core.Models.Eft.Common.Tables; public class Match { [JsonPropertyName("metrics")] - public Metrics Metrics { get; set; } + public Metrics? Metrics { get; set; } } public class Metrics { [JsonPropertyName("Keys")] - public List Keys { get; set; } + public List? Keys { get; set; } [JsonPropertyName("NetProcessingBins")] - public List NetProcessingBins { get; set; } + public List? NetProcessingBins { get; set; } [JsonPropertyName("RenderBins")] - public List RenderBins { get; set; } + public List? RenderBins { get; set; } [JsonPropertyName("GameUpdateBins")] - public List GameUpdateBins { get; set; } + public List? GameUpdateBins { get; set; } [JsonPropertyName("MemoryMeasureInterval")] - public int MemoryMeasureInterval { get; set; } + public int? MemoryMeasureInterval { get; set; } [JsonPropertyName("PauseReasons")] - public List PauseReasons { get; set; } + public List? PauseReasons { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/Prestige.cs b/Core/Models/Eft/Common/Tables/Prestige.cs index 411134d6..e0ea078b 100644 --- a/Core/Models/Eft/Common/Tables/Prestige.cs +++ b/Core/Models/Eft/Common/Tables/Prestige.cs @@ -5,71 +5,71 @@ using System.Text.Json.Serialization; public class Prestige { [JsonPropertyName("elements")] - public PretigeElement Elements { get; set; } + public PretigeElement? Elements { get; set; } } public class PretigeElement { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("conditions")] - public List Conditions { get; set; } + public List? Conditions { get; set; } [JsonPropertyName("rewards")] - public List Rewards { get; set; } + public List? Rewards { get; set; } [JsonPropertyName("transferConfigs")] - public TransferConfigs TransferConfigs { get; set; } + public TransferConfigs? TransferConfigs { get; set; } [JsonPropertyName("image")] - public string Image { get; set; } + public string? Image { get; set; } [JsonPropertyName("bigImage")] - public string BigImage { get; set; } + public string? BigImage { get; set; } } public class TransferConfigs { [JsonPropertyName("stashConfig")] - public StashPrestigeConfig StashConfig { get; set; } + public StashPrestigeConfig? StashConfig { get; set; } [JsonPropertyName("skillConfig")] - public PrestigeSkillConfig SkillConfig { get; set; } + public PrestigeSkillConfig? SkillConfig { get; set; } [JsonPropertyName("masteringConfig")] - public PrestigeMasteringConfig MasteringConfig { get; set; } + public PrestigeMasteringConfig? MasteringConfig { get; set; } } public class StashPrestigeConfig { [JsonPropertyName("xCellCount")] - public int XCellCount { get; set; } + public int? XCellCount { get; set; } [JsonPropertyName("yCellCount")] - public int YCellCount { get; set; } + public int? YCellCount { get; set; } [JsonPropertyName("filters")] - public StashPrestigeFilters Filters { get; set; } + public StashPrestigeFilters? Filters { get; set; } } public class StashPrestigeFilters { [JsonPropertyName("includedItems")] - public List IncludedItems { get; set; } + public List? IncludedItems { get; set; } [JsonPropertyName("excludedItems")] - public List ExcludedItems { get; set; } + public List? ExcludedItems { get; set; } } public class PrestigeSkillConfig { [JsonPropertyName("transferMultiplier")] - public int TransferMultiplier { get; set; } + public int? TransferMultiplier { get; set; } } public class PrestigeMasteringConfig { [JsonPropertyName("transferMultiplier")] - public int TransferMultiplier { get; set; } + public int? TransferMultiplier { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/ProfileTemplate.cs b/Core/Models/Eft/Common/Tables/ProfileTemplate.cs index 7aaecffc..172f2d3c 100644 --- a/Core/Models/Eft/Common/Tables/ProfileTemplate.cs +++ b/Core/Models/Eft/Common/Tables/ProfileTemplate.cs @@ -6,70 +6,70 @@ namespace Core.Models.Eft.Common.Tables; public class ProfileTemplates { [JsonPropertyName("Standard")] - public ProfileSides Standard { get; set; } + public ProfileSides? Standard { get; set; } [JsonPropertyName("Left Behind")] - public ProfileSides LeftBehind { get; set; } + public ProfileSides? LeftBehind { get; set; } [JsonPropertyName("Prepare To Escape")] - public ProfileSides PrepareToEscape { get; set; } + public ProfileSides? PrepareToEscape { get; set; } [JsonPropertyName("Edge Of Darkness")] - public ProfileSides EdgeOfDarkness { get; set; } + public ProfileSides? EdgeOfDarkness { get; set; } [JsonPropertyName("Unheard")] - public ProfileSides Unheard { get; set; } + public ProfileSides? Unheard { get; set; } [JsonPropertyName("Tournament")] - public ProfileSides Tournament { get; set; } + public ProfileSides? Tournament { get; set; } [JsonPropertyName("SPT Developer")] - public ProfileSides SPTDeveloper { get; set; } + public ProfileSides? SPTDeveloper { get; set; } [JsonPropertyName("SPT Easy start")] - public ProfileSides SPTEasyStart { get; set; } + public ProfileSides? SPTEasyStart { get; set; } [JsonPropertyName("SPT Zero to hero")] - public ProfileSides SPTZeroToHero { get; set; } + public ProfileSides? SPTZeroToHero { get; set; } } public class ProfileSides { [JsonPropertyName("descriptionLocaleKey")] - public string DescriptionLocaleKey { get; set; } + public string? DescriptionLocaleKey { get; set; } [JsonPropertyName("usec")] - public TemplateSide Usec { get; set; } + public TemplateSide? Usec { get; set; } [JsonPropertyName("bear")] - public TemplateSide Bear { get; set; } + public TemplateSide? Bear { get; set; } } public class TemplateSide { [JsonPropertyName("character")] - public PmcData Character { get; set; } + public PmcData? Character { get; set; } [JsonPropertyName("suits")] - public List Suits { get; set; } + public List? Suits { get; set; } [JsonPropertyName("dialogues")] - public Dictionary Dialogues { get; set; } + public Dictionary? Dialogues { get; set; } [JsonPropertyName("userbuilds")] - public UserBuilds UserBuilds { get; set; } + public UserBuilds? UserBuilds { get; set; } [JsonPropertyName("trader")] - public ProfileTraderTemplate Trader { get; set; } + public ProfileTraderTemplate? Trader { get; set; } } public class ProfileTraderTemplate { [JsonPropertyName("initialLoyaltyLevel")] - public Dictionary InitialLoyaltyLevel { get; set; } + public Dictionary? InitialLoyaltyLevel { get; set; } [JsonPropertyName("initialStanding")] - public Dictionary InitialStanding { get; set; } + public Dictionary? InitialStanding { get; set; } [JsonPropertyName("setQuestsAvailableForStart")] public bool? SetQuestsAvailableForStart { get; set; } @@ -78,10 +78,10 @@ public class ProfileTraderTemplate public bool? SetQuestsAvailableForFinish { get; set; } [JsonPropertyName("initialSalesSum")] - public int InitialSalesSum { get; set; } + public int? InitialSalesSum { get; set; } [JsonPropertyName("jaegerUnlocked")] - public bool JaegerUnlocked { get; set; } + public bool? JaegerUnlocked { get; set; } /** How many days is usage of the flea blocked for upon profile creation */ [JsonPropertyName("fleaBlockedDays")] @@ -89,9 +89,9 @@ public class ProfileTraderTemplate /** What traders default to being locked on profile creation */ [JsonPropertyName("lockedByDefaultOverride")] - public List LockedByDefaultOverride { get; set; } + public List? LockedByDefaultOverride { get; set; } /** What traders should have their clothing unlocked/purchased on creation */ [JsonPropertyName("purchaseAllClothingByDefaultForTrader")] - public List PurchaseAllClothingByDefaultForTrader { get; set; } + public List? PurchaseAllClothingByDefaultForTrader { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/Quest.cs b/Core/Models/Eft/Common/Tables/Quest.cs index 95fc4fa4..bc7bd8d0 100644 --- a/Core/Models/Eft/Common/Tables/Quest.cs +++ b/Core/Models/Eft/Common/Tables/Quest.cs @@ -12,61 +12,61 @@ public class Quest public string? QuestName { get; set; } [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("canShowNotificationsInGame")] - public bool CanShowNotificationsInGame { get; set; } + public bool? CanShowNotificationsInGame { get; set; } [JsonPropertyName("conditions")] - public QuestConditionTypes Conditions { get; set; } + public QuestConditionTypes? Conditions { get; set; } [JsonPropertyName("description")] - public string Description { get; set; } + public string? Description { get; set; } [JsonPropertyName("failMessageText")] - public string FailMessageText { get; set; } + public string? FailMessageText { get; set; } [JsonPropertyName("name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("note")] - public string Note { get; set; } + public string? Note { get; set; } [JsonPropertyName("traderId")] - public string TraderId { get; set; } + public string? TraderId { get; set; } [JsonPropertyName("location")] - public string Location { get; set; } + public string? Location { get; set; } [JsonPropertyName("image")] - public string Image { get; set; } + public string? Image { get; set; } [JsonPropertyName("type")] - public QuestTypeEnum Type { get; set; } + public QuestTypeEnum? Type { get; set; } [JsonPropertyName("isKey")] - public bool IsKey { get; set; } + public bool? IsKey { get; set; } [JsonPropertyName("restartable")] - public bool Restartable { get; set; } + public bool? Restartable { get; set; } [JsonPropertyName("instantComplete")] - public bool InstantComplete { get; set; } + public bool? InstantComplete { get; set; } [JsonPropertyName("secretQuest")] - public bool SecretQuest { get; set; } + public bool? SecretQuest { get; set; } [JsonPropertyName("startedMessageText")] - public string StartedMessageText { get; set; } + public string? StartedMessageText { get; set; } [JsonPropertyName("successMessageText")] - public string SuccessMessageText { get; set; } + public string? SuccessMessageText { get; set; } [JsonPropertyName("acceptPlayerMessage")] public string? AcceptPlayerMessage { get; set; } [JsonPropertyName("declinePlayerMessage")] - public string DeclinePlayerMessage { get; set; } + public string? DeclinePlayerMessage { get; set; } [JsonPropertyName("completePlayerMessage")] public string? CompletePlayerMessage { get; set; } @@ -75,7 +75,7 @@ public class Quest public string? TemplateId { get; set; } [JsonPropertyName("rewards")] - public QuestRewards Rewards { get; set; } + public QuestRewards? Rewards { get; set; } /// /// Becomes 'AppearStatus' inside client @@ -87,28 +87,28 @@ public class Quest public bool? KeyQuest { get; set; } [JsonPropertyName("changeQuestMessageText")] - public string ChangeQuestMessageText { get; set; } + public string? ChangeQuestMessageText { get; set; } /// /// "Pmc" or "Scav" /// [JsonPropertyName("side")] - public string Side { get; set; } + public string? Side { get; set; } [JsonPropertyName("acceptanceAndFinishingSource")] - public string AcceptanceAndFinishingSource { get; set; } + public string? AcceptanceAndFinishingSource { get; set; } [JsonPropertyName("progressSource")] - public string ProgressSource { get; set; } + public string? ProgressSource { get; set; } [JsonPropertyName("rankingModes")] - public List RankingModes { get; set; } + public List? RankingModes { get; set; } [JsonPropertyName("gameModes")] - public List GameModes { get; set; } + public List? GameModes { get; set; } [JsonPropertyName("arenaLocations")] - public List ArenaLocations { get; set; } + public List? ArenaLocations { get; set; } /// /// Status of quest to player @@ -123,22 +123,22 @@ public class QuestConditionTypes public List? Started { get; set; } [JsonPropertyName("AvailableForFinish")] - public List AvailableForFinish { get; set; } + public List? AvailableForFinish { get; set; } [JsonPropertyName("AvailableForStart")] - public List AvailableForStart { get; set; } + public List? AvailableForStart { get; set; } [JsonPropertyName("Success")] public List? Success { get; set; } [JsonPropertyName("Fail")] - public List Fail { get; set; } + public List? Fail { get; set; } } public class QuestCondition { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("index")] public int? Index { get; set; } @@ -147,7 +147,7 @@ public class QuestCondition public string? CompareMethod { get; set; } [JsonPropertyName("dynamicLocale")] - public bool DynamicLocale { get; set; } + public bool? DynamicLocale { get; set; } [JsonPropertyName("visibilityConditions")] public List? VisibilityConditions { get; set; } @@ -225,22 +225,22 @@ public class QuestCondition public string? ConditionType { get; set; } [JsonPropertyName("areaType")] - public HideoutAreas AreaType { get; set; } + public HideoutAreas? AreaType { get; set; } } public class QuestConditionCounter { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("conditions")] - public List Conditions { get; set; } + public List? Conditions { get; set; } } public class QuestConditionCounterCondition { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("dynamicLocale")] public bool? DynamicLocale { get; set; } @@ -318,46 +318,46 @@ public class QuestConditionCounterCondition public class EnemyHealthEffect { [JsonPropertyName("bodyParts")] - public List BodyParts { get; set; } + public List? BodyParts { get; set; } [JsonPropertyName("effects")] - public List Effects { get; set; } + public List? Effects { get; set; } } public class ValueCompare { [JsonPropertyName("compareMethod")] - public string CompareMethod { get; set; } + public string? CompareMethod { get; set; } [JsonPropertyName("value")] - public int Value { get; set; } + public int? Value { get; set; } } public class CounterConditionDistance { [JsonPropertyName("value")] - public int Value { get; set; } + public int? Value { get; set; } [JsonPropertyName("compareMethod")] - public string CompareMethod { get; set; } + public string? CompareMethod { get; set; } } public class DaytimeCounter { [JsonPropertyName("from")] - public int From { get; set; } + public int? From { get; set; } [JsonPropertyName("to")] - public int To { get; set; } + public int? To { get; set; } } public class VisibilityCondition { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("target")] - public string Target { get; set; } + public string? Target { get; set; } [JsonPropertyName("value")] public int? Value { get; set; } @@ -369,59 +369,59 @@ public class VisibilityCondition public bool? OneSessionOnly { get; set; } [JsonPropertyName("conditionType")] - public string ConditionType { get; set; } + public string? ConditionType { get; set; } } public class QuestRewards { [JsonPropertyName("AvailableForStart")] - public List AvailableForStart { get; set; } + public List? AvailableForStart { get; set; } [JsonPropertyName("AvailableForFinish")] - public List AvailableForFinish { get; set; } + public List? AvailableForFinish { get; set; } [JsonPropertyName("Started")] - public List Started { get; set; } + public List? Started { get; set; } [JsonPropertyName("Success")] - public List Success { get; set; } + public List? Success { get; set; } [JsonPropertyName("Fail")] - public List Fail { get; set; } + public List? Fail { get; set; } [JsonPropertyName("FailRestartable")] - public List FailRestartable { get; set; } + public List? FailRestartable { get; set; } [JsonPropertyName("Expired")] - public List Expired { get; set; } + public List? Expired { get; set; } } public class QuestReward { [JsonPropertyName("value")] - public object Value { get; set; } // TODO: Can be either string or number + public object? Value { get; set; } // TODO: Can be either string or number [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("type")] - public QuestRewardType Type { get; set; } + public QuestRewardType? Type { get; set; } [JsonPropertyName("index")] - public int Index { get; set; } + public int? Index { get; set; } [JsonPropertyName("target")] - public string Target { get; set; } + public string? Target { get; set; } [JsonPropertyName("items")] - public List Items { get; set; } + public List? Items { get; set; } [JsonPropertyName("loyaltyLevel")] public int? LoyaltyLevel { get; set; } /** Hideout area id */ [JsonPropertyName("traderId")] - public string TraderId { get; set; } + public string? TraderId { get; set; } [JsonPropertyName("isEncoded")] public bool? IsEncoded { get; set; } @@ -433,13 +433,13 @@ public class QuestReward public bool? FindInRaid { get; set; } [JsonPropertyName("gameMode")] - public List GameMode { get; set; } + public List? GameMode { get; set; } /** Game editions whitelisted to get reward */ [JsonPropertyName("availableInGameEditions")] - public List AvailableInGameEditions { get; set; } + public List? AvailableInGameEditions { get; set; } /** Game editions blacklisted from getting reward */ [JsonPropertyName("notAvailableInGameEditions")] - public List NotAvailableInGameEditions { get; set; } + public List? NotAvailableInGameEditions { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/RepeatableQuests.cs b/Core/Models/Eft/Common/Tables/RepeatableQuests.cs index ed1c5ae9..c8ddacc5 100644 --- a/Core/Models/Eft/Common/Tables/RepeatableQuests.cs +++ b/Core/Models/Eft/Common/Tables/RepeatableQuests.cs @@ -5,79 +5,79 @@ namespace Core.Models.Eft.Common.Tables; public class RepeatableQuest : Quest { [JsonPropertyName("changeCost")] - public List ChangeCost { get; set; } + public List? ChangeCost { get; set; } [JsonPropertyName("changeStandingCost")] - public int ChangeStandingCost { get; set; } + public int? ChangeStandingCost { get; set; } [JsonPropertyName("sptRepatableGroupName")] - public string SptRepatableGroupName { get; set; } + public string? SptRepatableGroupName { get; set; } [JsonPropertyName("acceptanceAndFinishingSource")] - public string AcceptanceAndFinishingSource { get; set; } + public string? AcceptanceAndFinishingSource { get; set; } [JsonPropertyName("progressSource")] - public string ProgressSource { get; set; } + public string? ProgressSource { get; set; } [JsonPropertyName("rankingModes")] - public List RankingModes { get; set; } + public List? RankingModes { get; set; } [JsonPropertyName("gameModes")] - public List GameModes { get; set; } + public List? GameModes { get; set; } [JsonPropertyName("arenaLocations")] - public List ArenaLocations { get; set; } + public List? ArenaLocations { get; set; } [JsonPropertyName("questStatus")] - public RepeatableQuestStatus QuestStatus { get; set; } + public RepeatableQuestStatus? QuestStatus { get; set; } } public class RepeatableQuestDatabase { [JsonPropertyName("templates")] - public RepeatableTemplates Templates { get; set; } + public RepeatableTemplates? Templates { get; set; } [JsonPropertyName("rewards")] - public RewardOptions Rewards { get; set; } + public RewardOptions? Rewards { get; set; } [JsonPropertyName("data")] - public Options Data { get; set; } + public Options? Data { get; set; } [JsonPropertyName("samples")] - public List Samples { get; set; } + public List? Samples { get; set; } } public class RepeatableQuestStatus { [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("uid")] - public string Uid { get; set; } + public string? Uid { get; set; } [JsonPropertyName("qid")] - public string Qid { get; set; } + public string? Qid { get; set; } [JsonPropertyName("startTime")] - public long StartTime { get; set; } + public long? StartTime { get; set; } [JsonPropertyName("status")] - public int Status { get; set; } + public int? Status { get; set; } [JsonPropertyName("statusTimers")] - public object StatusTimers { get; set; } // Use object for any type + public object? StatusTimers { get; set; } // Use object for any type } public class RepeatableTemplates { [JsonPropertyName("Elimination")] - public Quest Elimination { get; set; } + public Quest? Elimination { get; set; } [JsonPropertyName("Completion")] - public Quest Completion { get; set; } + public Quest? Completion { get; set; } [JsonPropertyName("Exploration")] - public Quest Exploration { get; set; } + public Quest? Exploration { get; set; } } public class PmcDataRepeatableQuest @@ -86,46 +86,46 @@ public class PmcDataRepeatableQuest public string? Id { get; set; } [JsonPropertyName("name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("unavailableTime")] public string? UnavailableTime { get; set; } [JsonPropertyName("activeQuests")] - public List ActiveQuests { get; set; } + public List? ActiveQuests { get; set; } [JsonPropertyName("inactiveQuests")] - public List InactiveQuests { get; set; } + public List? InactiveQuests { get; set; } [JsonPropertyName("endTime")] - public long EndTime { get; set; } + public long? EndTime { get; set; } [JsonPropertyName("changeRequirement")] - public Dictionary ChangeRequirement { get; set; } + public Dictionary? ChangeRequirement { get; set; } [JsonPropertyName("freeChanges")] - public int FreeChanges { get; set; } + public int? FreeChanges { get; set; } [JsonPropertyName("freeChangesAvailable")] - public int FreeChangesAvailable { get; set; } + public int? FreeChangesAvailable { get; set; } } public class ChangeRequirement { [JsonPropertyName("changeCost")] - public List ChangeCost { get; set; } + public List? ChangeCost { get; set; } [JsonPropertyName("changeStandingCost")] - public int ChangeStandingCost { get; set; } + public int? ChangeStandingCost { get; set; } } public class ChangeCost { [JsonPropertyName("templateId")] - public string TemplateId { get; set; } + public string? TemplateId { get; set; } [JsonPropertyName("count")] - public int Count { get; set; } + public int? Count { get; set; } } // Config Options @@ -133,98 +133,98 @@ public class ChangeCost public class RewardOptions { [JsonPropertyName("itemsBlacklist")] - public List ItemsBlacklist { get; set; } + public List? ItemsBlacklist { get; set; } } public class Options { [JsonPropertyName("Completion")] - public CompletionFilter Completion { get; set; } + public CompletionFilter? Completion { get; set; } } public class CompletionFilter { [JsonPropertyName("itemsBlacklist")] - public List ItemsBlacklist { get; set; } + public List? ItemsBlacklist { get; set; } [JsonPropertyName("itemsWhitelist")] - public List ItemsWhitelist { get; set; } + public List? ItemsWhitelist { get; set; } } public class ItemsBlacklist { [JsonPropertyName("minPlayerLevel")] - public int MinPlayerLevel { get; set; } + public int? MinPlayerLevel { get; set; } [JsonPropertyName("itemIds")] - public List ItemIds { get; set; } + public List? ItemIds { get; set; } } public class ItemsWhitelist { [JsonPropertyName("minPlayerLevel")] - public int MinPlayerLevel { get; set; } + public int? MinPlayerLevel { get; set; } [JsonPropertyName("itemIds")] - public List ItemIds { get; set; } + public List? ItemIds { get; set; } } public class SampleQuests { [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("traderId")] - public string TraderId { get; set; } + public string? TraderId { get; set; } [JsonPropertyName("location")] - public string Location { get; set; } + public string? Location { get; set; } [JsonPropertyName("image")] - public string Image { get; set; } + public string? Image { get; set; } [JsonPropertyName("type")] - public string Type { get; set; } + public string? Type { get; set; } [JsonPropertyName("isKey")] - public bool IsKey { get; set; } + public bool? IsKey { get; set; } [JsonPropertyName("restartable")] - public bool Restartable { get; set; } + public bool? Restartable { get; set; } [JsonPropertyName("instantComplete")] - public bool InstantComplete { get; set; } + public bool? InstantComplete { get; set; } [JsonPropertyName("secretQuest")] - public bool SecretQuest { get; set; } + public bool? SecretQuest { get; set; } [JsonPropertyName("canShowNotificationsInGame")] - public bool CanShowNotificationsInGame { get; set; } + public bool? CanShowNotificationsInGame { get; set; } [JsonPropertyName("rewards")] - public QuestRewards Rewards { get; set; } + public QuestRewards? Rewards { get; set; } [JsonPropertyName("conditions")] - public QuestConditionTypes Conditions { get; set; } + public QuestConditionTypes? Conditions { get; set; } [JsonPropertyName("name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("note")] - public string Note { get; set; } + public string? Note { get; set; } [JsonPropertyName("description")] - public string Description { get; set; } + public string? Description { get; set; } [JsonPropertyName("successMessageText")] - public string SuccessMessageText { get; set; } + public string? SuccessMessageText { get; set; } [JsonPropertyName("failMessageText")] - public string FailMessageText { get; set; } + public string? FailMessageText { get; set; } [JsonPropertyName("startedMessageText")] - public string StartedMessageText { get; set; } + public string? StartedMessageText { get; set; } [JsonPropertyName("templateId")] - public string TemplateId { get; set; } + public string? TemplateId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/Tables/TemplateItem.cs b/Core/Models/Eft/Common/Tables/TemplateItem.cs index 892c249b..e206aa26 100644 --- a/Core/Models/Eft/Common/Tables/TemplateItem.cs +++ b/Core/Models/Eft/Common/Tables/TemplateItem.cs @@ -5,19 +5,19 @@ namespace Core.Models.Eft.Common.Tables; public class TemplateItem { [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("_name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("_parent")] - public string Parent { get; set; } + public string? Parent { get; set; } [JsonPropertyName("_type")] - public ItemType Type { get; set; } + public ItemType? Type { get; set; } [JsonPropertyName("_props")] - public Props Properties { get; set; } + public Props? Properties { get; set; } [JsonPropertyName("_proto")] public string? Prototype { get; set; } @@ -26,7 +26,7 @@ public class TemplateItem public class Props { [JsonPropertyName("AllowSpawnOnLocations")] - public string[] AllowSpawnOnLocations { get; set; } + public List? AllowSpawnOnLocations { get; set; } [JsonPropertyName("BeltMagazineRefreshCount")] public int? BeltMagazineRefreshCount { get; set; } @@ -77,10 +77,10 @@ public class Props public string? ItemSound { get; set; } [JsonPropertyName("Prefab")] - public Prefab Prefab { get; set; } + public Prefab? Prefab { get; set; } [JsonPropertyName("UsePrefab")] - public Prefab UsePrefab { get; set; } + public Prefab? UsePrefab { get; set; } [JsonPropertyName("airDropTemplateId")] public string? AirDropTemplateId { get; set; } @@ -110,10 +110,10 @@ public class Props public bool? IsUngivable { get; set; } [JsonPropertyName("IsUnremovable")] - public bool? IsUnremovable { get; set; } + public bool? IsUnRemovable { get; set; } [JsonPropertyName("IsLockedafterEquip")] - public bool? IsLockedafterEquip { get; set; } + public bool? IsLockedAfterEquip { get; set; } [JsonPropertyName("IsSecretExitRequirement")] public bool? IsSecretExitRequirement { get; set; } @@ -161,7 +161,7 @@ public class Props public int? ExtraSizeUp { get; set; } [JsonPropertyName("FlareTypes")] - public List FlareTypes { get; set; } + public List? FlareTypes { get; set; } [JsonPropertyName("ExtraSizeDown")] public int? ExtraSizeDown { get; set; } @@ -173,7 +173,7 @@ public class Props public bool? MergesWithChildren { get; set; } [JsonPropertyName("MetascoreGroup")] - public string? MetascoreGroup { get; set; } + public string? MetaScoreGroup { get; set; } [JsonPropertyName("CanSellOnRagfair")] public bool? CanSellOnRagfair { get; set; } @@ -182,7 +182,7 @@ public class Props public bool? CanRequireOnRagfair { get; set; } [JsonPropertyName("ConflictingItems")] - public List ConflictingItems { get; set; } + public List? ConflictingItems { get; set; } [JsonPropertyName("Unlootable")] public bool? Unlootable { get; set; } @@ -191,7 +191,7 @@ public class Props public string? UnlootableFromSlot { get; set; } [JsonPropertyName("UnlootableFromSide")] - public List UnlootableFromSide { get; set; } + public List? UnlootableFromSide { get; set; } [JsonPropertyName("AnimationVariantsNumber")] public int? AnimationVariantsNumber { get; set; } @@ -233,10 +233,10 @@ public class Props public bool? CanPutIntoDuringTheRaid { get; set; } [JsonPropertyName("CantRemoveFromSlotsDuringRaid")] - public List CantRemoveFromSlotsDuringRaid { get; set; } + public List? CantRemoveFromSlotsDuringRaid { get; set; } [JsonPropertyName("KeyIds")] - public List KeyIds { get; set; } + public List? KeyIds { get; set; } [JsonPropertyName("TagColor")] public int? TagColor { get; set; } @@ -266,7 +266,7 @@ public class Props public int? Velocity { get; set; } [JsonPropertyName("WeaponRecoilSettings")] - public WeaponRecoilSettings WeaponRecoilSettings { get; set; } + public WeaponRecoilSettings? WeaponRecoilSettings { get; set; } [JsonPropertyName("WithAnimatorAiming")] public bool? WithAnimatorAiming { get; set; } @@ -323,7 +323,7 @@ public class Props public bool? IsAdjustableOptic { get; set; } [JsonPropertyName("MinMaxFov")] - public XYZ MinMaxFov { get; set; } + public XYZ? MinMaxFov { get; set; } [JsonPropertyName("sightModType")] public string? SightModType { get; set; } @@ -335,7 +335,7 @@ public class Props public int? SightModesCount { get; set; } [JsonPropertyName("OpticCalibrationDistances")] - public List OpticCalibrationDistances { get; set; } + public List? OpticCalibrationDistances { get; set; } [JsonPropertyName("ScopesCount")] public int? ScopesCount { get; set; } @@ -344,10 +344,10 @@ public class Props public object? AimSensitivity { get; set; } // TODO: object here [JsonPropertyName("Zooms")] - public List> Zooms { get; set; } + public List>? Zooms { get; set; } [JsonPropertyName("CalibrationDistances")] - public List> CalibrationDistances { get; set; } + public List>? CalibrationDistances { get; set; } [JsonPropertyName("Intensity")] public int? Intensity { get; set; } @@ -368,7 +368,7 @@ public class Props public int? NoiseScale { get; set; } [JsonPropertyName("Color")] - public Color Color { get; set; } + public Color? Color { get; set; } [JsonPropertyName("DiffuseIntensity")] public int? DiffuseIntensity { get; set; } @@ -431,7 +431,7 @@ public class Props public int? MagAnimationIndex { get; set; } [JsonPropertyName("Cartridges")] - public List Cartridges { get; set; } + public List? Cartridges { get; set; } [JsonPropertyName("CanFast")] public bool? CanFast { get; set; } @@ -452,10 +452,10 @@ public class Props public int? CheckOverride { get; set; } [JsonPropertyName("reloadMagType")] - public string ReloadMagType { get; set; } + public string? ReloadMagType { get; set; } [JsonPropertyName("visibleAmmoRangesString")] - public string VisibleAmmoRangesString { get; set; } + public string? VisibleAmmoRangesString { get; set; } [JsonPropertyName("malfunctionChance")] public int? MalfunctionChance { get; set; } @@ -485,7 +485,7 @@ public class Props public int? DeviationMax { get; set; } [JsonPropertyName("searchSound")] - public string SearchSound { get; set; } + public string? SearchSound { get; set; } [JsonPropertyName("blocksArmorVest")] public bool? BlocksArmorVest { get; set; } @@ -494,19 +494,19 @@ public class Props public int? SpeedPenaltyPercent { get; set; } [JsonPropertyName("gridLayoutName")] - public string GridLayoutName { get; set; } + public string? GridLayoutName { get; set; } [JsonPropertyName("containerSpawnChanceModifier")] public int? ContainerSpawnChanceModifier { get; set; } [JsonPropertyName("spawnExcludedFilter")] - public List SpawnExcludedFilter { get; set; } + public List? SpawnExcludedFilter { get; set; } [JsonPropertyName("spawnFilter")] - public List SpawnFilter { get; set; } // TODO: object here + public List? SpawnFilter { get; set; } // TODO: object here [JsonPropertyName("containType")] - public List ContainType { get; set; } // TODO: object here + public List? ContainType { get; set; } // TODO: object here [JsonPropertyName("sizeWidth")] public int? SizeWidth { get; set; } @@ -518,13 +518,13 @@ public class Props public bool? IsSecured { get; set; } [JsonPropertyName("spawnTypes")] - public string SpawnTypes { get; set; } + public string? SpawnTypes { get; set; } [JsonPropertyName("lootFilter")] - public List LootFilter { get; set; } // TODO: object here + public List? LootFilter { get; set; } // TODO: object here [JsonPropertyName("spawnRarity")] - public string SpawnRarity { get; set; } + public string? SpawnRarity { get; set; } [JsonPropertyName("minCountSpawn")] public int? MinCountSpawn { get; set; } @@ -533,25 +533,25 @@ public class Props public int? MaxCountSpawn { get; set; } [JsonPropertyName("openedByKeyID")] - public List OpenedByKeyID { get; set; } + public List? OpenedByKeyID { get; set; } [JsonPropertyName("rigLayoutName")] - public string RigLayoutName { get; set; } + public string? RigLayoutName { get; set; } [JsonPropertyName("maxDurability")] public int? MaxDurability { get; set; } [JsonPropertyName("armorZone")] - public List ArmorZone { get; set; } + public List? ArmorZone { get; set; } [JsonPropertyName("armorClass")] - public object ArmorClass { get; set; } // TODO: object here + public object? ArmorClass { get; set; } // TODO: object here [JsonPropertyName("armorColliders")] - public List ArmorColliders { get; set; } + public List? ArmorColliders { get; set; } [JsonPropertyName("armorPlateColliders")] - public List ArmorPlateColliders { get; set; } + public List? ArmorPlateColliders { get; set; } [JsonPropertyName("bluntDamageReduceFromSoftArmor")] public bool? BluntDamageReduceFromSoftArmor { get; set; } @@ -566,31 +566,31 @@ public class Props public int? BluntThroughput { get; set; } [JsonPropertyName("armorMaterial")] - public string ArmorMaterial { get; set; } + public string? ArmorMaterial { get; set; } [JsonPropertyName("armorType")] - public string ArmorType { get; set; } + public string? ArmorType { get; set; } [JsonPropertyName("weapClass")] - public string WeapClass { get; set; } + public string? WeapClass { get; set; } [JsonPropertyName("weapUseType")] - public string WeapUseType { get; set; } + public string? WeapUseType { get; set; } [JsonPropertyName("ammoCaliber")] - public string AmmoCaliber { get; set; } + public string? AmmoCaliber { get; set; } [JsonPropertyName("operatingResource")] public int? OperatingResource { get; set; } [JsonPropertyName("postRecoilHorizontalRangeHandRotation")] - public XYZ PostRecoilHorizontalRangeHandRotation { get; set; } + public XYZ? PostRecoilHorizontalRangeHandRotation { get; set; } [JsonPropertyName("postRecoilVerticalRangeHandRotation")] - public XYZ PostRecoilVerticalRangeHandRotation { get; set; } + public XYZ? PostRecoilVerticalRangeHandRotation { get; set; } [JsonPropertyName("progressRecoilAngleOnStable")] - public XYZ ProgressRecoilAngleOnStable { get; set; } + public XYZ? ProgressRecoilAngleOnStable { get; set; } [JsonPropertyName("repairComplexity")] public int? RepairComplexity { get; set; } @@ -653,10 +653,10 @@ public class Props public bool? IsBoltCatch { get; set; } [JsonPropertyName("defMagType")] - public string DefMagType { get; set; } + public string? DefMagType { get; set; } [JsonPropertyName("defAmmo")] - public string DefAmmo { get; set; } + public string? DefAmmo { get; set; } [JsonPropertyName("adjustCollimatorsToTrajectory")] public bool? AdjustCollimatorsToTrajectory { get; set; } @@ -665,43 +665,43 @@ public class Props public int? ShotgunDispersion { get; set; } [JsonPropertyName("chambers")] - public List Chambers { get; set; } + public List? Chambers { get; set; } [JsonPropertyName("cameraSnap")] public int? CameraSnap { get; set; } [JsonPropertyName("cameraToWeaponAngleSpeedRange")] - public XYZ CameraToWeaponAngleSpeedRange { get; set; } + public XYZ? CameraToWeaponAngleSpeedRange { get; set; } [JsonPropertyName("cameraToWeaponAngleStep")] public int? CameraToWeaponAngleStep { get; set; } [JsonPropertyName("reloadMode")] - public string ReloadMode { get; set; } + public string? ReloadMode { get; set; } [JsonPropertyName("aimPlane")] public int? AimPlane { get; set; } [JsonPropertyName("tacticalReloadStiffnes")] - public XYZ TacticalReloadStiffnes { get; set; } + public XYZ? TacticalReloadStiffnes { get; set; } [JsonPropertyName("tacticalReloadFixation")] public int? TacticalReloadFixation { get; set; } [JsonPropertyName("recoilCenter")] - public XYZ RecoilCenter { get; set; } + public XYZ? RecoilCenter { get; set; } [JsonPropertyName("rotationCenter")] - public XYZ RotationCenter { get; set; } + public XYZ? RotationCenter { get; set; } [JsonPropertyName("rotationCenterNoStock")] - public XYZ RotationCenterNoStock { get; set; } + public XYZ? RotationCenterNoStock { get; set; } [JsonPropertyName("shotsGroupSettings")] public List ShotsGroupSettings { get; set; } [JsonPropertyName("foldedSlot")] - public string FoldedSlot { get; set; } + public string? FoldedSlot { get; set; } [JsonPropertyName("forbidMissingVitalParts")] public bool? ForbidMissingVitalParts { get; set; } @@ -836,10 +836,10 @@ public class Props public int? MountingHorizontalOutOfBreathMultiplier { get; set; } [JsonPropertyName("mountingPosition")] - public XYZ MountingPosition { get; set; } + public XYZ? MountingPosition { get; set; } [JsonPropertyName("mountingVerticalOutOfBreathMultiplier")] - public XYZ MountingVerticalOutOfBreathMultiplier { get; set; } + public XYZ? MountingVerticalOutOfBreathMultiplier { get; set; } [JsonPropertyName("blocksEarpiece")] public bool? BlocksEarpiece { get; set; } @@ -857,22 +857,22 @@ public class Props public int? Indestructibility { get; set; } [JsonPropertyName("headSegments")] - public List HeadSegments { get; set; } + public List? HeadSegments { get; set; } [JsonPropertyName("faceShieldComponent")] public bool? FaceShieldComponent { get; set; } [JsonPropertyName("faceShieldMask")] - public string FaceShieldMask { get; set; } + public string? FaceShieldMask { get; set; } [JsonPropertyName("materialType")] - public string MaterialType { get; set; } + public string? MaterialType { get; set; } [JsonPropertyName("ricochetParams")] - public XYZ RicochetParams { get; set; } + public XYZ? RicochetParams { get; set; } [JsonPropertyName("deafStrength")] - public string DeafStrength { get; set; } + public string? DeafStrength { get; set; } [JsonPropertyName("blindnessProtection")] public int? BlindnessProtection { get; set; } @@ -920,16 +920,16 @@ public class Props public int? FoodUseTime { get; set; } [JsonPropertyName("foodEffectType")] - public string FoodEffectType { get; set; } + public string? FoodEffectType { get; set; } [JsonPropertyName("stimulatorBuffs")] - public string StimulatorBuffs { get; set; } + public string? StimulatorBuffs { get; set; } [JsonPropertyName("effects_health")] - public object EffectsHealth { get; set; } // TODO: object here + public object? EffectsHealth { get; set; } // TODO: object here [JsonPropertyName("effects_damage")] - public Dictionary EffectsDamage { get; set; } + public Dictionary? EffectsDamage { get; set; } [JsonPropertyName("maximumNumberOfUsage")] public int? MaximumNumberOfUsage { get; set; } @@ -977,10 +977,10 @@ public class Props public int? DeflectionConsumption { get; set; } [JsonPropertyName("appliedTrunkRotation")] - public XYZ AppliedTrunkRotation { get; set; } + public XYZ? AppliedTrunkRotation { get; set; } [JsonPropertyName("appliedHeadRotation")] - public XYZ AppliedHeadRotation { get; set; } + public XYZ? AppliedHeadRotation { get; set; } [JsonPropertyName("displayOnModel")] public bool? DisplayOnModel { get; set; } @@ -992,10 +992,10 @@ public class Props public int? StaminaBurnRate { get; set; } [JsonPropertyName("colliderScaleMultiplier")] - public XYZ ColliderScaleMultiplier { get; set; } + public XYZ? ColliderScaleMultiplier { get; set; } [JsonPropertyName("configPathStr")] - public string ConfigPathStr { get; set; } + public string? ConfigPathStr { get; set; } [JsonPropertyName("maxMarkersCount")] public int? MaxMarkersCount { get; set; } @@ -1010,7 +1010,7 @@ public class Props public int? MedUseTime { get; set; } [JsonPropertyName("medEffectType")] - public string MedEffectType { get; set; } + public string? MedEffectType { get; set; } [JsonPropertyName("maxHpResource")] public int? MaxHpResource { get; set; } @@ -1031,13 +1031,13 @@ public class Props public int? MaxRepairResource { get; set; } [JsonPropertyName("targetItemFilter")] - public string[] TargetItemFilter { get; set; } + public List? TargetItemFilter { get; set; } [JsonPropertyName("repairQuality")] public int? RepairQuality { get; set; } [JsonPropertyName("repairType")] - public string RepairType { get; set; } + public string? RepairType { get; set; } [JsonPropertyName("stackMinRandom")] public int? StackMinRandom { get; set; } @@ -1046,7 +1046,7 @@ public class Props public int? StackMaxRandom { get; set; } [JsonPropertyName("ammoType")] - public string AmmoType { get; set; } + public string? AmmoType { get; set; } [JsonPropertyName("initialSpeed")] public int? InitialSpeed { get; set; } @@ -1085,7 +1085,7 @@ public class Props public int? AmmoHear { get; set; } [JsonPropertyName("ammoSfx")] - public string AmmoSfx { get; set; } + public string? AmmoSfx { get; set; } [JsonPropertyName("misfireChance")] public int? MisfireChance { get; set; } @@ -1100,7 +1100,7 @@ public class Props public int? AmmoShiftChance { get; set; } [JsonPropertyName("casingName")] - public string CasingName { get; set; } + public string? CasingName { get; set; } [JsonPropertyName("casingEjectPower")] public int? CasingEjectPower { get; set; } @@ -1109,7 +1109,7 @@ public class Props public int? CasingMass { get; set; } [JsonPropertyName("casingSounds")] - public string CasingSounds { get; set; } + public string? CasingSounds { get; set; } [JsonPropertyName("projectileCount")] public int? ProjectileCount { get; set; } @@ -1136,7 +1136,7 @@ public class Props public bool? Tracer { get; set; } [JsonPropertyName("tracerColor")] - public string TracerColor { get; set; } + public string? TracerColor { get; set; } [JsonPropertyName("tracerDistance")] public int? TracerDistance { get; set; } @@ -1145,7 +1145,7 @@ public class Props public int? ArmorDamage { get; set; } [JsonPropertyName("caliber")] - public string Caliber { get; set; } + public string? Caliber { get; set; } [JsonPropertyName("staminaBurnPerDamage")] public int? StaminaBurnPerDamage { get; set; } @@ -1184,7 +1184,7 @@ public class Props public bool? ShowHitEffectOnExplode { get; set; } [JsonPropertyName("explosionType")] - public string ExplosionType { get; set; } + public string? ExplosionType { get; set; } [JsonPropertyName("ammoLifeTimeSec")] public int? AmmoLifeTimeSec { get; set; } @@ -1193,13 +1193,13 @@ public class Props public string AmmoTooltipClass { get; set; } [JsonPropertyName("contusion")] - public XYZ Contusion { get; set; } + public XYZ? Contusion { get; set; } [JsonPropertyName("armorDistanceDistanceDamage")] - public XYZ ArmorDistanceDistanceDamage { get; set; } + public XYZ? ArmorDistanceDistanceDamage { get; set; } [JsonPropertyName("blindness")] - public XYZ Blindness { get; set; } + public XYZ? Blindness { get; set; } [JsonPropertyName("isLightAndSoundShot")] public bool? IsLightAndSoundShot { get; set; } @@ -1220,10 +1220,10 @@ public class Props public int? MalfFeedChance { get; set; } [JsonPropertyName("stackSlots")] - public StackSlot[] StackSlots { get; set; } + public List? StackSlots { get; set; } [JsonPropertyName("type")] - public string Type { get; set; } + public string? Type { get; set; } [JsonPropertyName("eqMin")] public int? EqMin { get; set; } @@ -1235,7 +1235,7 @@ public class Props public int? Rate { get; set; } [JsonPropertyName("throwType")] - public string ThrowType { get; set; } + public string? ThrowType { get; set; } [JsonPropertyName("explDelay")] public int? ExplDelay { get; set; } @@ -1262,16 +1262,16 @@ public class Props public int? MinTimeToContactExplode { get; set; } [JsonPropertyName("explosionEffectType")] - public string ExplosionEffectType { get; set; } + public string? ExplosionEffectType { get; set; } [JsonPropertyName("linkedWeapon")] - public string LinkedWeapon { get; set; } + public string? LinkedWeapon { get; set; } [JsonPropertyName("useAmmoWithoutShell")] public bool? UseAmmoWithoutShell { get; set; } [JsonPropertyName("randomLootSettings")] - public RandomLootSettings RandomLootSettings { get; set; } + public RandomLootSettings? RandomLootSettings { get; set; } [JsonPropertyName("recoilDampingHandRotation")] public int? RecoilDampingHandRotation { get; set; } @@ -1283,16 +1283,16 @@ public class Props public bool? RemoveShellAfterFire { get; set; } [JsonPropertyName("repairStrategyTypes")] - public List RepairStrategyTypes { get; set; } + public List? RepairStrategyTypes { get; set; } [JsonPropertyName("isEncoded")] public bool? IsEncoded { get; set; } [JsonPropertyName("layoutName")] - public string LayoutName { get; set; } + public string? LayoutName { get; set; } [JsonPropertyName("lower75Prefab")] - public Prefab Lower75Prefab { get; set; } + public Prefab? Lower75Prefab { get; set; } [JsonPropertyName("maxUsages")] public int? MaxUsages { get; set; } @@ -1364,85 +1364,85 @@ public class WeaponRecoilTransformationCurve public class WeaponRecoilTransformationCurveKey { [JsonPropertyName("inTangent")] - public double InTangent { get; set; } + public double? InTangent { get; set; } [JsonPropertyName("outTangent")] - public double OutTangent { get; set; } + public double? OutTangent { get; set; } [JsonPropertyName("time")] - public double Time { get; set; } + public double? Time { get; set; } [JsonPropertyName("value")] - public double Value { get; set; } + public double? Value { get; set; } } public class HealthEffect { [JsonPropertyName("type")] - public string Type { get; set; } + public string? Type { get; set; } [JsonPropertyName("value")] - public double Value { get; set; } + public double? Value { get; set; } } public class Prefab { [JsonPropertyName("path")] - public string Path { get; set; } + public string? Path { get; set; } [JsonPropertyName("rcid")] - public string Rcid { get; set; } + public string? Rcid { get; set; } } public class Grid { [JsonPropertyName("_name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("_parent")] - public string Parent { get; set; } + public string? Parent { get; set; } [JsonPropertyName("_props")] - public GridProps Props { get; set; } + public GridProps? Props { get; set; } [JsonPropertyName("_proto")] - public string Proto { get; set; } + public string? Proto { get; set; } } public class GridProps { [JsonPropertyName("filters")] - public List Filters { get; set; } + public List? Filters { get; set; } [JsonPropertyName("cellsH")] - public int CellsH { get; set; } + public int? CellsH { get; set; } [JsonPropertyName("cellsV")] - public int CellsV { get; set; } + public int? CellsV { get; set; } [JsonPropertyName("minCount")] - public int MinCount { get; set; } + public int? MinCount { get; set; } [JsonPropertyName("maxCount")] - public int MaxCount { get; set; } + public int? MaxCount { get; set; } [JsonPropertyName("maxWeight")] - public int MaxWeight { get; set; } + public int? MaxWeight { get; set; } [JsonPropertyName("isSortingTable")] - public bool IsSortingTable { get; set; } + public bool? IsSortingTable { get; set; } } public class GridFilter { [JsonPropertyName("Filter")] - public List Filter { get; set; } + public List? Filter { get; set; } [JsonPropertyName("ExcludedFilter")] - public List ExcludedFilter { get; set; } + public List? ExcludedFilter { get; set; } [JsonPropertyName("locked")] public bool? Locked { get; set; } @@ -1451,16 +1451,16 @@ public class GridFilter public class Slot { [JsonPropertyName("_name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("_parent")] - public string Parent { get; set; } + public string? Parent { get; set; } [JsonPropertyName("_props")] - public SlotProps Props { get; set; } + public SlotProps? Props { get; set; } [JsonPropertyName("_max_count")] public int? MaxCount { get; set; } @@ -1472,13 +1472,13 @@ public class Slot public bool? MergeSlotWithChildren { get; set; } [JsonPropertyName("_proto")] - public string Proto { get; set; } + public string? Proto { get; set; } } public class SlotProps { [JsonPropertyName("filters")] - public List Filters { get; set; } + public List? Filters { get; set; } [JsonPropertyName("MaxStackCount")] public int? MaxStackCount { get; set; } @@ -1493,16 +1493,16 @@ public class SlotFilter public bool? Locked { get; set; } [JsonPropertyName("Plate")] - public string Plate { get; set; } + public string? Plate { get; set; } [JsonPropertyName("armorColliders")] - public List ArmorColliders { get; set; } + public List? ArmorColliders { get; set; } [JsonPropertyName("armorPlateColliders")] - public List ArmorPlateColliders { get; set; } + public List? ArmorPlateColliders { get; set; } [JsonPropertyName("Filter")] - public List Filter { get; set; } + public List? Filter { get; set; } [JsonPropertyName("AnimationIndex")] public int? AnimationIndex { get; set; } @@ -1514,19 +1514,19 @@ public class StackSlot public string? Name { get; set; } [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("_parent")] - public string Parent { get; set; } + public string? Parent { get; set; } [JsonPropertyName("_max_count")] - public int MaxCount { get; set; } + public int? MaxCount { get; set; } [JsonPropertyName("_props")] - public StackSlotProps Props { get; set; } + public StackSlotProps? Props { get; set; } [JsonPropertyName("_proto")] - public string Proto { get; set; } + public string? Proto { get; set; } [JsonPropertyName("upd")] public object? Upd { get; set; } // TODO: object here @@ -1535,91 +1535,91 @@ public class StackSlot public class StackSlotProps { [JsonPropertyName("filters")] - public List Filters { get; set; } + public List? Filters { get; set; } } public class RandomLootSettings { [JsonPropertyName("allowToSpawnIdenticalItems")] - public bool AllowToSpawnIdenticalItems { get; set; } + public bool? AllowToSpawnIdenticalItems { get; set; } [JsonPropertyName("allowToSpawnQuestItems")] - public bool AllowToSpawnQuestItems { get; set; } + public bool? AllowToSpawnQuestItems { get; set; } [JsonPropertyName("countByRarity")] - public List CountByRarity { get; set; } // TODO: object here + public List? CountByRarity { get; set; } // TODO: object here [JsonPropertyName("excluded")] - public RandomLootExcluded Excluded { get; set; } + public RandomLootExcluded? Excluded { get; set; } [JsonPropertyName("filters")] - public List Filters { get; set; } // TODO: object here + public List? Filters { get; set; } // TODO: object here [JsonPropertyName("findInRaid")] - public bool FindInRaid { get; set; } + public bool? FindInRaid { get; set; } [JsonPropertyName("maxCount")] - public int MaxCount { get; set; } + public int? MaxCount { get; set; } [JsonPropertyName("minCount")] - public int MinCount { get; set; } + public int? MinCount { get; set; } } public class RandomLootExcluded { [JsonPropertyName("categoryTemplates")] - public List CategoryTemplates { get; set; } // TODO: object here + public List? CategoryTemplates { get; set; } // TODO: object here [JsonPropertyName("rarity")] - public List Rarity { get; set; } + public List? Rarity { get; set; } [JsonPropertyName("templates")] - public List Templates { get; set; } // TODO: object here + public List? Templates { get; set; } // TODO: object here } public class EffectsHealth { [JsonPropertyName("Energy")] - public EffectsHealthProps Energy { get; set; } + public EffectsHealthProps? Energy { get; set; } [JsonPropertyName("Hydration")] - public EffectsHealthProps Hydration { get; set; } + public EffectsHealthProps? Hydration { get; set; } } public class EffectsHealthProps { [JsonPropertyName("value")] - public int Value { get; set; } + public int? Value { get; set; } } public class EffectsDamage { [JsonPropertyName("Pain")] - public EffectDamageProps Pain { get; set; } + public EffectDamageProps? Pain { get; set; } [JsonPropertyName("LightBleeding")] - public EffectDamageProps LightBleeding { get; set; } + public EffectDamageProps? LightBleeding { get; set; } [JsonPropertyName("HeavyBleeding")] - public EffectDamageProps HeavyBleeding { get; set; } + public EffectDamageProps? HeavyBleeding { get; set; } [JsonPropertyName("Contusion")] - public EffectDamageProps Contusion { get; set; } + public EffectDamageProps? Contusion { get; set; } [JsonPropertyName("RadExposure")] - public EffectDamageProps RadExposure { get; set; } + public EffectDamageProps? RadExposure { get; set; } [JsonPropertyName("Fracture")] - public EffectDamageProps Fracture { get; set; } + public EffectDamageProps? Fracture { get; set; } [JsonPropertyName("DestroyedPart")] - public EffectDamageProps DestroyedPart { get; set; } + public EffectDamageProps? DestroyedPart { get; set; } } public class EffectDamageProps { [JsonPropertyName("delay")] - public int Delay { get; set; } + public int? Delay { get; set; } [JsonPropertyName("duration")] - public int Duration { get; set; } + public int? Duration { get; set; } [JsonPropertyName("fadeOut")] - public int FadeOut { get; set; } + public int? FadeOut { get; set; } [JsonPropertyName("cost")] public int? Cost { get; set; } @@ -1633,33 +1633,33 @@ public class EffectDamageProps { public class Color { [JsonPropertyName("r")] - public int R { get; set; } + public int? R { get; set; } [JsonPropertyName("g")] - public int G { get; set; } + public int? G { get; set; } [JsonPropertyName("b")] - public int B { get; set; } + public int? B { get; set; } [JsonPropertyName("a")] - public int A { get; set; } + public int? A { get; set; } } public class ShotsGroupSettings { [JsonPropertyName("EndShotIndex")] - public int EndShotIndex { get; set; } + public int? EndShotIndex { get; set; } [JsonPropertyName("ShotRecoilPositionStrength")] - public XYZ ShotRecoilPositionStrength { get; set; } + public XYZ? ShotRecoilPositionStrength { get; set; } [JsonPropertyName("ShotRecoilRadianRange")] - public XYZ ShotRecoilRadianRange { get; set; } + public XYZ? ShotRecoilRadianRange { get; set; } [JsonPropertyName("ShotRecoilRotationStrength")] - public XYZ ShotRecoilRotationStrength { get; set; } + public XYZ? ShotRecoilRotationStrength { get; set; } [JsonPropertyName("StartShotIndex")] - public int StartShotIndex { get; set; } + public int? StartShotIndex { get; set; } } public enum ItemType { diff --git a/Core/Models/Eft/Common/Tables/Trader.cs b/Core/Models/Eft/Common/Tables/Trader.cs index a833d69e..cdb50491 100644 --- a/Core/Models/Eft/Common/Tables/Trader.cs +++ b/Core/Models/Eft/Common/Tables/Trader.cs @@ -10,10 +10,10 @@ public class Trader public TraderAssort? Assort { get; set; } [JsonPropertyName("base")] - public TraderBase Base { get; set; } + public TraderBase? Base { get; set; } [JsonPropertyName("dialogue")] - public Dictionary? Dialogue { get; set; } + public Dictionary>? Dialogue { get; set; } [JsonPropertyName("questassort")] public Dictionary>? QuestAssort { get; set; } @@ -28,55 +28,55 @@ public class Trader public class TraderBase { [JsonPropertyName("refreshTraderRagfairOffers")] - public bool RefreshTraderRagfairOffers { get; set; } + public bool? RefreshTraderRagfairOffers { get; set; } [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("availableInRaid")] - public bool AvailableInRaid { get; set; } + public bool? AvailableInRaid { get; set; } [JsonPropertyName("avatar")] - public string Avatar { get; set; } + public string? Avatar { get; set; } [JsonPropertyName("balance_dol")] - public decimal BalanceDollar { get; set; } + public decimal? BalanceDollar { get; set; } [JsonPropertyName("balance_eur")] - public decimal BalanceEuro { get; set; } + public decimal? BalanceEuro { get; set; } [JsonPropertyName("balance_rub")] - public decimal BalanceRub { get; set; } + public decimal? BalanceRub { get; set; } [JsonPropertyName("buyer_up")] - public bool BuyerUp { get; set; } + public bool? BuyerUp { get; set; } [JsonPropertyName("currency")] - public string Currency { get; set; } + public string? Currency { get; set; } [JsonPropertyName("customization_seller")] - public bool CustomizationSeller { get; set; } + public bool? CustomizationSeller { get; set; } [JsonPropertyName("discount")] - public decimal Discount { get; set; } + public decimal? Discount { get; set; } [JsonPropertyName("discount_end")] - public decimal DiscountEnd { get; set; } + public decimal? DiscountEnd { get; set; } [JsonPropertyName("gridHeight")] - public int GridHeight { get; set; } + public int? GridHeight { get; set; } [JsonPropertyName("sell_modifier_for_prohibited_items")] public decimal? SellModifierForProhibitedItems { get; set; } [JsonPropertyName("insurance")] - public TraderInsurance Insurance { get; set; } + public TraderInsurance? Insurance { get; set; } [JsonPropertyName("items_buy")] - public ItemBuyData ItemsBuy { get; set; } + public ItemBuyData? ItemsBuy { get; set; } [JsonPropertyName("items_buy_prohibited")] - public ItemBuyData ItemsBuyProhibited { get; set; } + public ItemBuyData? ItemsBuyProhibited { get; set; } [JsonPropertyName("isCanTransferItems")] public bool? IsCanTransferItems { get; set; } @@ -88,136 +88,136 @@ public class TraderBase public ItemBuyData? ProhibitedTransferableItems { get; set; } [JsonPropertyName("location")] - public string Location { get; set; } + public string? Location { get; set; } [JsonPropertyName("loyaltyLevels")] - public List LoyaltyLevels { get; set; } + public List? LoyaltyLevels { get; set; } [JsonPropertyName("medic")] - public bool Medic { get; set; } + public bool? Medic { get; set; } [JsonPropertyName("name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("nextResupply")] - public int NextResupply { get; set; } + public int? NextResupply { get; set; } [JsonPropertyName("nickname")] - public string Nickname { get; set; } + public string? Nickname { get; set; } [JsonPropertyName("repair")] - public TraderRepair Repair { get; set; } + public TraderRepair? Repair { get; set; } [JsonPropertyName("sell_category")] - public List SellCategory { get; set; } + public List? SellCategory { get; set; } [JsonPropertyName("surname")] - public string Surname { get; set; } + public string? Surname { get; set; } [JsonPropertyName("unlockedByDefault")] - public bool UnlockedByDefault { get; set; } + public bool? UnlockedByDefault { get; set; } } public class ItemBuyData { [JsonPropertyName("category")] - public List Category { get; set; } + public List? Category { get; set; } [JsonPropertyName("id_list")] - public List IdList { get; set; } + public List? IdList { get; set; } } public class TraderInsurance { [JsonPropertyName("availability")] - public bool Availability { get; set; } + public bool? Availability { get; set; } [JsonPropertyName("excluded_category")] - public List ExcludedCategory { get; set; } + public List? ExcludedCategory { get; set; } [JsonPropertyName("max_return_hour")] - public int MaxReturnHour { get; set; } + public int? MaxReturnHour { get; set; } [JsonPropertyName("max_storage_time")] - public int MaxStorageTime { get; set; } + public int? MaxStorageTime { get; set; } [JsonPropertyName("min_payment")] - public int MinPayment { get; set; } + public int? MinPayment { get; set; } [JsonPropertyName("min_return_hour")] - public int MinReturnHour { get; set; } + public int? MinReturnHour { get; set; } } public class TraderLoyaltyLevel { [JsonPropertyName("buy_price_coef")] - public int BuyPriceCoefficient { get; set; } + public int? BuyPriceCoefficient { get; set; } [JsonPropertyName("exchange_price_coef")] - public int ExchangePriceCoefficient { get; set; } + public int? ExchangePriceCoefficient { get; set; } [JsonPropertyName("heal_price_coef")] - public int HealPriceCoefficient { get; set; } + public int? HealPriceCoefficient { get; set; } [JsonPropertyName("insurance_price_coef")] - public int InsurancePriceCoefficient { get; set; } + public int? InsurancePriceCoefficient { get; set; } [JsonPropertyName("minLevel")] - public int MinLevel { get; set; } + public int? MinLevel { get; set; } [JsonPropertyName("minSalesSum")] - public int MinSalesSum { get; set; } + public int? MinSalesSum { get; set; } [JsonPropertyName("minStanding")] - public int MinStanding { get; set; } + public int? MinStanding { get; set; } [JsonPropertyName("repair_price_coef")] - public int RepairPriceCoefficient { get; set; } + public int? RepairPriceCoefficient { get; set; } } public class TraderRepair { [JsonPropertyName("availability")] - public bool Availability { get; set; } + public bool? Availability { get; set; } [JsonPropertyName("currency")] - public string Currency { get; set; } + public string? Currency { get; set; } [JsonPropertyName("currency_coefficient")] - public double CurrencyCoefficient { get; set; } + public double? CurrencyCoefficient { get; set; } [JsonPropertyName("excluded_category")] - public List ExcludedCategory { get; set; } + public List? ExcludedCategory { get; set; } [JsonPropertyName("excluded_id_list")] - public List ExcludedIdList { get; set; } // Doesn't exist in client object + public List? ExcludedIdList { get; set; } // Doesn't exist in client object [JsonPropertyName("quality")] - public int Quality { get; set; } + public int? Quality { get; set; } } public class TraderAssort { [JsonPropertyName("nextResupply")] - public int NextResupply { get; set; } + public int? NextResupply { get; set; } [JsonPropertyName("items")] - public List Items { get; set; } + public List? Items { get; set; } [JsonPropertyName("barter_scheme")] - public Dictionary>> BarterScheme { get; set; } + public Dictionary>>? BarterScheme { get; set; } [JsonPropertyName("loyal_level_items")] - public Dictionary LoyalLevelItems { get; set; } + public Dictionary? LoyalLevelItems { get; set; } } public class BarterScheme { [JsonPropertyName("count")] - public int Count { get; set; } + public int? Count { get; set; } [JsonPropertyName("_tpl")] - public string Template { get; set; } + public string? Template { get; set; } [JsonPropertyName("onlyFunctional")] public bool? OnlyFunctional { get; set; } @@ -235,71 +235,71 @@ public class BarterScheme public class Suit { [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("externalObtain")] - public bool ExternalObtain { get; set; } + public bool? ExternalObtain { get; set; } [JsonPropertyName("internalObtain")] - public bool InternalObtain { get; set; } + public bool? InternalObtain { get; set; } [JsonPropertyName("isHiddenInPVE")] - public bool IsHiddenInPVE { get; set; } + public bool? IsHiddenInPVE { get; set; } [JsonPropertyName("tid")] - public string Tid { get; set; } + public string? Tid { get; set; } [JsonPropertyName("suiteId")] - public string SuiteId { get; set; } + public string? SuiteId { get; set; } [JsonPropertyName("isActive")] - public bool IsActive { get; set; } + public bool? IsActive { get; set; } [JsonPropertyName("requirements")] - public SuitRequirements Requirements { get; set; } + public SuitRequirements? Requirements { get; set; } } public class SuitRequirements { [JsonPropertyName("achievementRequirements")] - public List AchievementRequirements { get; set; } + public List? AchievementRequirements { get; set; } [JsonPropertyName("loyaltyLevel")] - public int LoyaltyLevel { get; set; } + public int? LoyaltyLevel { get; set; } [JsonPropertyName("profileLevel")] - public int ProfileLevel { get; set; } + public int? ProfileLevel { get; set; } [JsonPropertyName("standing")] - public int Standing { get; set; } + public int? Standing { get; set; } [JsonPropertyName("skillRequirements")] - public List SkillRequirements { get; set; } + public List? SkillRequirements { get; set; } [JsonPropertyName("questRequirements")] - public List QuestRequirements { get; set; } + public List? QuestRequirements { get; set; } [JsonPropertyName("itemRequirements")] - public List ItemRequirements { get; set; } + public List? ItemRequirements { get; set; } [JsonPropertyName("requiredTid")] - public string RequiredTid { get; set; } + public string? RequiredTid { get; set; } } public class ItemRequirement { [JsonPropertyName("count")] - public int Count { get; set; } + public int? Count { get; set; } [JsonPropertyName("_tpl")] - public string Tpl { get; set; } + public string? Tpl { get; set; } [JsonPropertyName("id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("onlyFunctional")] - public bool OnlyFunctional { get; set; } + public bool ?OnlyFunctional { get; set; } [JsonPropertyName("type")] - public string Type { get; set; } + public string? Type { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/XY.cs b/Core/Models/Eft/Common/XY.cs index fdc225a2..0cadb541 100644 --- a/Core/Models/Eft/Common/XY.cs +++ b/Core/Models/Eft/Common/XY.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Common; public class XY { [JsonPropertyName("x")] - public double X { get; set; } + public double? X { get; set; } [JsonPropertyName("y")] - public double Y { get; set; } + public double? Y { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Common/XYZ.cs b/Core/Models/Eft/Common/XYZ.cs index 205b7488..34ac9b10 100644 --- a/Core/Models/Eft/Common/XYZ.cs +++ b/Core/Models/Eft/Common/XYZ.cs @@ -5,11 +5,11 @@ namespace Core.Models.Eft.Common; public class XYZ { [JsonPropertyName("x")] - public double X { get; set; } + public double? X { get; set; } [JsonPropertyName("y")] - public double Y { get; set; } + public double? Y { get; set; } [JsonPropertyName("z")] - public double Z { get; set; } + public double? Z { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Ws/WsAid.cs b/Core/Models/Eft/Ws/WsAid.cs index 67fb5539..978e2ad1 100644 --- a/Core/Models/Eft/Ws/WsAid.cs +++ b/Core/Models/Eft/Ws/WsAid.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Ws; public class WsAid : WsNotificationEvent { [JsonPropertyName("aid")] - public int Aid { get; set; } + public int? Aid { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Ws/WsAidNickname.cs b/Core/Models/Eft/Ws/WsAidNickname.cs index 3c99a904..d6aa6f70 100644 --- a/Core/Models/Eft/Ws/WsAidNickname.cs +++ b/Core/Models/Eft/Ws/WsAidNickname.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Ws; public class WsAidNickname : WsNotificationEvent { [JsonPropertyName("aid")] - public int Aid { get; set; } + public int? Aid { get; set; } [JsonPropertyName("Nickname")] - public string Nickname { get; set; } + public string? Nickname { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Ws/WsChatMessageReceived.cs b/Core/Models/Eft/Ws/WsChatMessageReceived.cs index da50426b..92d40398 100644 --- a/Core/Models/Eft/Ws/WsChatMessageReceived.cs +++ b/Core/Models/Eft/Ws/WsChatMessageReceived.cs @@ -7,10 +7,10 @@ namespace Core.Models.Eft.Ws; public class WsChatMessageReceived : WsNotificationEvent { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } [JsonPropertyName("message")] - public Message Message { get; set; } + public Message? Message { get; set; } [JsonPropertyName("profiles")] public List? Profiles { get; set; } diff --git a/Core/Models/Eft/Ws/WsFriendListAccept.cs b/Core/Models/Eft/Ws/WsFriendListAccept.cs index 9d38d90e..de62e953 100644 --- a/Core/Models/Eft/Ws/WsFriendListAccept.cs +++ b/Core/Models/Eft/Ws/WsFriendListAccept.cs @@ -6,5 +6,5 @@ namespace Core.Models.Eft.Ws; public class WsFriendsListAccept : WsNotificationEvent { [JsonPropertyName("profile")] - public SearchFriendResponse Profile { get; set; } + public SearchFriendResponse? Profile { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Ws/WsGroupId.cs b/Core/Models/Eft/Ws/WsGroupId.cs index a58c92f6..e626b7ea 100644 --- a/Core/Models/Eft/Ws/WsGroupId.cs +++ b/Core/Models/Eft/Ws/WsGroupId.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Ws; public class WsGroupId : WsNotificationEvent { [JsonPropertyName("groupId")] - public string GroupId { get; set; } + public string? GroupId { get; set; } } \ No newline at end of file From ae882e9f7d2faac42dd4e221853ef7c0db4b2970 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Wed, 8 Jan 2025 06:29:57 -0500 Subject: [PATCH 9/9] Dialogs nullable --- .../Customization/BuyClothingRequestData.cs | 24 +++---- .../Customization/CustomizationSetRequest.cs | 20 +++--- .../Eft/Customization/GetSuitsResponse.cs | 4 +- .../Eft/Dialog/AcceptFriendRequestData.cs | 2 +- .../Eft/Dialog/AddUserGroupMailRequest.cs | 4 +- .../Eft/Dialog/ChangeGroupMailOwnerRequest.cs | 4 +- Core/Models/Eft/Dialog/ChatServer.cs | 64 +++++++++---------- .../Eft/Dialog/ClearMailMessageRequest.cs | 2 +- .../Eft/Dialog/CreateGroupMailRequest.cs | 4 +- Core/Models/Eft/Dialog/DeleteFriendRequest.cs | 2 +- Core/Models/Eft/Dialog/FriendRequestData.cs | 6 +- .../Eft/Dialog/FriendRequestSendResponse.cs | 12 ++-- .../Eft/Dialog/GetAllAttachmentsResponse.cs | 12 ++-- .../Dialog/GetChatServerListRequestData.cs | 2 +- .../Eft/Dialog/GetFriendListDataResponse.cs | 12 ++-- .../Dialog/GetMailDialogInfoRequestData.cs | 2 +- .../Dialog/GetMailDialogListRequestData.cs | 4 +- .../Dialog/GetMailDialogViewRequestData.cs | 16 ++--- .../Dialog/GetMailDialogViewResponseData.cs | 12 ++-- .../Models/Eft/Dialog/PinDialogRequestData.cs | 2 +- .../Eft/Dialog/RemoveDialogRequestData.cs | 2 +- .../Eft/Dialog/RemoveMailMessageRequest.cs | 2 +- .../Eft/Dialog/RemoveUserGroupMailRequest.cs | 4 +- Core/Models/Eft/Dialog/SendMessageRequest.cs | 19 +++--- .../Eft/Dialog/SetDialogReadRequestData.cs | 2 +- 25 files changed, 120 insertions(+), 119 deletions(-) diff --git a/Core/Models/Eft/Customization/BuyClothingRequestData.cs b/Core/Models/Eft/Customization/BuyClothingRequestData.cs index 3d22dcbc..46ca767a 100644 --- a/Core/Models/Eft/Customization/BuyClothingRequestData.cs +++ b/Core/Models/Eft/Customization/BuyClothingRequestData.cs @@ -4,24 +4,24 @@ namespace Core.Models.Eft.Customization; public class BuyClothingRequestData { - [JsonPropertyName("Action")] - public string Action { get; set; } = "CustomizationBuy"; + [JsonPropertyName("Action")] + public string Action { get; set; } = "CustomizationBuy"; - [JsonPropertyName("offer")] - public string Offer { get; set; } + [JsonPropertyName("offer")] + public string? Offer { get; set; } - [JsonPropertyName("items")] - public List Items { get; set; } + [JsonPropertyName("items")] + public List? Items { get; set; } } public class PaymentItemForClothing { - [JsonPropertyName("del")] - public bool Del { get; set; } + [JsonPropertyName("del")] + public bool? Del { get; set; } - [JsonPropertyName("id")] - public string Id { get; set; } + [JsonPropertyName("id")] + public string? Id { get; set; } - [JsonPropertyName("count")] - public int Count { get; set; } + [JsonPropertyName("count")] + public int? Count { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Customization/CustomizationSetRequest.cs b/Core/Models/Eft/Customization/CustomizationSetRequest.cs index ea01a9f7..94722b70 100644 --- a/Core/Models/Eft/Customization/CustomizationSetRequest.cs +++ b/Core/Models/Eft/Customization/CustomizationSetRequest.cs @@ -4,21 +4,21 @@ namespace Core.Models.Eft.Customization; public class CustomizationSetRequest { - [JsonPropertyName("Action")] - public string Action { get; set; } = "CustomizationSet"; + [JsonPropertyName("Action")] + public string Action { get; set; } = "CustomizationSet"; - [JsonPropertyName("customizations")] - public List Customizations { get; set; } + [JsonPropertyName("customizations")] + public List? Customizations { get; set; } } public class CustomizationSetOption { - [JsonPropertyName("id")] - public string Id { get; set; } + [JsonPropertyName("id")] + public string? Id { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } + [JsonPropertyName("type")] + public string? Type { get; set; } - [JsonPropertyName("source")] - public string Source { get; set; } + [JsonPropertyName("source")] + public string? Source { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Customization/GetSuitsResponse.cs b/Core/Models/Eft/Customization/GetSuitsResponse.cs index f7efeffe..42f61197 100644 --- a/Core/Models/Eft/Customization/GetSuitsResponse.cs +++ b/Core/Models/Eft/Customization/GetSuitsResponse.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Customization; public class GetSuitsResponse { [JsonPropertyName("_id")] - public string Id { get; set; } + public string? Id { get; set; } [JsonPropertyName("suites")] - public List Suites { get; set; } + public List? Suites { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs b/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs index 880d01aa..5cd4b141 100644 --- a/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs +++ b/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs @@ -17,5 +17,5 @@ public class DeclineFriendRequestData : BaseFriendRequest public class BaseFriendRequest { [JsonPropertyName("profileId")] - public string ProfileId { get; set; } + public string? ProfileId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs b/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs index f11c58c3..4b9d1b8a 100644 --- a/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Dialog; public class AddUserGroupMailRequest { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } [JsonPropertyName("uid")] - public string Uid { get; set; } + public string? Uid { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs b/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs index 15cc6839..281b7281 100644 --- a/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs +++ b/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Dialog; public class ChangeGroupMailOwnerRequest { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } [JsonPropertyName("uid")] - public string Uid { get; set; } + public string? Uid { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/ChatServer.cs b/Core/Models/Eft/Dialog/ChatServer.cs index 27b3bb67..437de19d 100644 --- a/Core/Models/Eft/Dialog/ChatServer.cs +++ b/Core/Models/Eft/Dialog/ChatServer.cs @@ -4,40 +4,40 @@ namespace Core.Models.Eft.Dialog; public class ChatServer { - [JsonPropertyName("_id")] - public string Id { get; set; } - - [JsonPropertyName("RegistrationId")] - public int RegistrationId { get; set; } - - [JsonPropertyName("VersionId")] - public string VersionId { get; set; } - - [JsonPropertyName("Ip")] - public string Ip { get; set; } - - [JsonPropertyName("Port")] - public int Port { get; set; } - - [JsonPropertyName("DateTime")] - public long DateTime { get; set; } - - [JsonPropertyName("Chats")] - public List Chats { get; set; } - - [JsonPropertyName("Regions")] - public List Regions { get; set; } - - /** Possibly removed */ - [JsonPropertyName("IsDeveloper")] - public bool? IsDeveloper { get; set; } + [JsonPropertyName("_id")] + public string? Id { get; set; } + + [JsonPropertyName("RegistrationId")] + public int? RegistrationId { get; set; } + + [JsonPropertyName("VersionId")] + public string? VersionId { get; set; } + + [JsonPropertyName("Ip")] + public string? Ip { get; set; } + + [JsonPropertyName("Port")] + public int? Port { get; set; } + + [JsonPropertyName("DateTime")] + public long? DateTime { get; set; } + + [JsonPropertyName("Chats")] + public List? Chats { get; set; } + + [JsonPropertyName("Regions")] + public List? Regions { get; set; } + + /** Possibly removed */ + [JsonPropertyName("IsDeveloper")] + public bool? IsDeveloper { get; set; } } public class Chat { - [JsonPropertyName("_id")] - public string Id { get; set; } - - [JsonPropertyName("Members")] - public int Members { get; set; } + [JsonPropertyName("_id")] + public string? Id { get; set; } + + [JsonPropertyName("Members")] + public int? Members { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs b/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs index 58c7bd8a..69c84414 100644 --- a/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs +++ b/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class ClearMailMessageRequest { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs b/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs index d5db07c2..c012819b 100644 --- a/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Dialog; public class CreateGroupMailRequest { [JsonPropertyName("Name")] - public string Name { get; set; } + public string? Name { get; set; } [JsonPropertyName("Users")] - public List Users { get; set; } + public List? Users { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/DeleteFriendRequest.cs b/Core/Models/Eft/Dialog/DeleteFriendRequest.cs index 27fa4ae1..73628f79 100644 --- a/Core/Models/Eft/Dialog/DeleteFriendRequest.cs +++ b/Core/Models/Eft/Dialog/DeleteFriendRequest.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class DeleteFriendRequest { [JsonPropertyName("friend_id")] - public string FriendId { get; set; } + public string? FriendId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/FriendRequestData.cs b/Core/Models/Eft/Dialog/FriendRequestData.cs index 3b010663..8690f0f5 100644 --- a/Core/Models/Eft/Dialog/FriendRequestData.cs +++ b/Core/Models/Eft/Dialog/FriendRequestData.cs @@ -5,11 +5,11 @@ namespace Core.Models.Eft.Dialog; public class FriendRequestData { [JsonPropertyName("status")] - public int Status { get; set; } + public int? Status { get; set; } [JsonPropertyName("requestId")] - public string RequestId { get; set; } + public string? RequestId { get; set; } [JsonPropertyName("retryAfter")] - public int RetryAfter { get; set; } + public int? RetryAfter { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/FriendRequestSendResponse.cs b/Core/Models/Eft/Dialog/FriendRequestSendResponse.cs index 2a2fb774..e41878d2 100644 --- a/Core/Models/Eft/Dialog/FriendRequestSendResponse.cs +++ b/Core/Models/Eft/Dialog/FriendRequestSendResponse.cs @@ -4,12 +4,12 @@ namespace Core.Models.Eft.Dialog; public class FriendRequestSendResponse { - [JsonPropertyName("status")] - public int Status { get; set; } + [JsonPropertyName("status")] + public int? Status { get; set; } - [JsonPropertyName("requestId")] - public string RequestId { get; set; } + [JsonPropertyName("requestId")] + public string? RequestId { get; set; } - [JsonPropertyName("retryAfter")] - public int RetryAfter { get; set; } + [JsonPropertyName("retryAfter")] + public int? RetryAfter { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetAllAttachmentsResponse.cs b/Core/Models/Eft/Dialog/GetAllAttachmentsResponse.cs index 3a854457..0d26a1e1 100644 --- a/Core/Models/Eft/Dialog/GetAllAttachmentsResponse.cs +++ b/Core/Models/Eft/Dialog/GetAllAttachmentsResponse.cs @@ -5,12 +5,12 @@ namespace Core.Models.Eft.Dialog; public class GetAllAttachmentsResponse { - [JsonPropertyName("messages")] - public List Messages { get; set; } + [JsonPropertyName("messages")] + public List? Messages { get; set; } - [JsonPropertyName("profiles")] - public List Profiles { get; set; } // Assuming 'any' translates to 'object' + [JsonPropertyName("profiles")] + public List Profiles { get; set; } // Assuming 'any' translates to 'object' - [JsonPropertyName("hasMessagesWithRewards")] - public bool HasMessagesWithRewards { get; set; } + [JsonPropertyName("hasMessagesWithRewards")] + public bool? HasMessagesWithRewards { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs index 86265d65..5664a516 100644 --- a/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs +++ b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class GetChatServerListRequestData { [JsonPropertyName("VersionId")] - public string VersionId { get; set; } + public string? VersionId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetFriendListDataResponse.cs b/Core/Models/Eft/Dialog/GetFriendListDataResponse.cs index 8c26afa7..9fffd120 100644 --- a/Core/Models/Eft/Dialog/GetFriendListDataResponse.cs +++ b/Core/Models/Eft/Dialog/GetFriendListDataResponse.cs @@ -5,12 +5,12 @@ namespace Core.Models.Eft.Dialog; public class GetFriendListDataResponse { - [JsonPropertyName("Friends")] - public List Friends { get; set; } + [JsonPropertyName("Friends")] + public List? Friends { get; set; } - [JsonPropertyName("Ignore")] - public List Ignore { get; set; } + [JsonPropertyName("Ignore")] + public List? Ignore { get; set; } - [JsonPropertyName("InIgnoreList")] - public List InIgnoreList { get; set; } + [JsonPropertyName("InIgnoreList")] + public List? InIgnoreList { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs index a4b83c62..8aca17e2 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class GetMailDialogInfoRequestData { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs index 90084b53..a6f8eea4 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Dialog; public class GetMailDialogListRequestData { [JsonPropertyName("limit")] - public int Limit { get; set; } + public int? Limit { get; set; } [JsonPropertyName("offset")] - public int Offset { get; set; } + public int? Offset { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs index 9684be00..3ca6f9fe 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs @@ -5,15 +5,15 @@ namespace Core.Models.Eft.Dialog; public class GetMailDialogViewRequestData { - [JsonPropertyName("type")] - public MessageType Type { get; set; } + [JsonPropertyName("type")] + public MessageType? Type { get; set; } - [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + [JsonPropertyName("dialogId")] + public string? DialogId { get; set; } - [JsonPropertyName("limit")] - public int Limit { get; set; } + [JsonPropertyName("limit")] + public int? Limit { get; set; } - [JsonPropertyName("time")] - public decimal Time { get; set; } // decimal + [JsonPropertyName("time")] + public decimal Time { get; set; } // decimal } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetMailDialogViewResponseData.cs b/Core/Models/Eft/Dialog/GetMailDialogViewResponseData.cs index 379f489f..a039a288 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogViewResponseData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogViewResponseData.cs @@ -5,12 +5,12 @@ namespace Core.Models.Eft.Dialog; public class GetMailDialogViewResponseData { - [JsonPropertyName("messages")] - public List Messages { get; set; } + [JsonPropertyName("messages")] + public List? Messages { get; set; } - [JsonPropertyName("profiles")] - public List Profiles { get; set; } + [JsonPropertyName("profiles")] + public List? Profiles { get; set; } - [JsonPropertyName("hasMessagesWithRewards")] - public bool HasMessagesWithRewards { get; set; } + [JsonPropertyName("hasMessagesWithRewards")] + public bool? HasMessagesWithRewards { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/PinDialogRequestData.cs b/Core/Models/Eft/Dialog/PinDialogRequestData.cs index 1a2980e2..d98657da 100644 --- a/Core/Models/Eft/Dialog/PinDialogRequestData.cs +++ b/Core/Models/Eft/Dialog/PinDialogRequestData.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class PinDialogRequestData { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs b/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs index dacdb9d2..08c05ec2 100644 --- a/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs +++ b/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class RemoveDialogRequestData { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs b/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs index a0a42650..54d96164 100644 --- a/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs +++ b/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class RemoveMailMessageRequest { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs b/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs index 8b768067..f70adf30 100644 --- a/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs @@ -5,8 +5,8 @@ namespace Core.Models.Eft.Dialog; public class RemoveUserGroupMailRequest { [JsonPropertyName("dialogId")] - public string DialogId { get; set; } + public string? DialogId { get; set; } [JsonPropertyName("uid")] - public string Uid { get; set; } + public string? Uid { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/SendMessageRequest.cs b/Core/Models/Eft/Dialog/SendMessageRequest.cs index 1e3c0299..ffa5c2ce 100644 --- a/Core/Models/Eft/Dialog/SendMessageRequest.cs +++ b/Core/Models/Eft/Dialog/SendMessageRequest.cs @@ -3,16 +3,17 @@ using Core.Models.Enums; namespace Core.Models.Eft.Dialog; -public class SendMessageRequest { - [JsonPropertyName("dialogId")] - public string DialogId { get; set; } +public class SendMessageRequest +{ + [JsonPropertyName("dialogId")] + public string? DialogId { get; set; } - [JsonPropertyName("type")] - public MessageType Type { get; set; } + [JsonPropertyName("type")] + public MessageType? Type { get; set; } - [JsonPropertyName("text")] - public string Text { get; set; } + [JsonPropertyName("text")] + public string? Text { get; set; } - [JsonPropertyName("replyTo")] - public string ReplyTo { get; set; } + [JsonPropertyName("replyTo")] + public string? ReplyTo { get; set; } } \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs b/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs index d1192c9f..4e235250 100644 --- a/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs +++ b/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs @@ -5,5 +5,5 @@ namespace Core.Models.Eft.Dialog; public class SetDialogReadRequestData { [JsonPropertyName("dialogId")] - public List DialogId { get; set; } + public List? DialogId { get; set; } } \ No newline at end of file