From 7ed081d305bebe6c542de224d4d50d1f649ee4e8 Mon Sep 17 00:00:00 2001 From: Chris Adamson Date: Mon, 28 Apr 2025 12:07:46 -0500 Subject: [PATCH 1/9] fixed error where itemlocation can be either a string or int --- .../Helpers/InventoryHelper.cs | 11 +-- .../Helpers/ItemHelper.cs | 69 +++++++++++++++++-- .../Models/Eft/Common/Tables/Item.cs | 42 ++++++++--- 3 files changed, 101 insertions(+), 21 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index 3b6ab782..bf187523 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -842,15 +842,8 @@ public class InventoryHelper( // Check each item in container foreach (var item in containerItemHash) { - ItemLocation? itemLocation; - if (item.Location is JsonElement) - { - itemLocation = ((JsonElement) item.Location).ToObject(); - } - else - { - itemLocation = (ItemLocation) item.Location; - } + + var (itemLocation, _) = ItemHelper.TryParseItemLocation(item); if (itemLocation is null) { diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs index 97ceb6a4..e92233da 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs @@ -1,6 +1,8 @@ using System.Collections.Frozen; +using System.Text.Json; using System.Text.Json.Serialization; using SPTarkov.Common.Annotations; +using SPTarkov.Common.Extensions; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Common.Tables; using SPTarkov.Server.Core.Models.Enums; @@ -857,6 +859,65 @@ public class ItemHelper( return _dogTagTpls.Contains(tpl); } + /// + /// Given that the R field of item location can be string enum or int, provide a method to get the exact type + /// + /// + /// + + public static (ItemLocation? itemLocation, LocationInGrid? locationInGrid) TryParseItemLocation(Item item) + { + if (item.Location is not JsonElement jsonLocation) + { + return ((ItemLocation?) item.Location, null); + } + + var itemLocation = TryParseItemLocation(jsonLocation); + if (itemLocation != null) + { + return (itemLocation, null); + } + + var locationInGrid = TryParseLocationInGrid(jsonLocation); + if (locationInGrid == null) + { + return (null, null); + } + + itemLocation = new ItemLocation + { + X = locationInGrid.X, + Y = locationInGrid.Y, + IsSearched = locationInGrid.IsSearched, + R = locationInGrid.R == ItemRotation.Vertical ? 1 : 0 + }; + return (itemLocation, locationInGrid); + + ItemLocation? TryParseItemLocation(JsonElement element) + { + try + { + return element.ToObject(); + } + catch + { + return null; + } + } + + LocationInGrid? TryParseLocationInGrid(JsonElement element) + { + try + { + return element.ToObject(); + } + catch + { + return null; + } + } + } + /// /// Gets the identifier for a child using slotId, locationX and locationY. /// @@ -1356,7 +1417,7 @@ public class ItemHelper( /** * Determines if an item is an attachment that is currently attached to its parent item. - * + * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ @@ -1369,15 +1430,15 @@ public class ItemHelper( /** * Retrieves the equipment parent item for a given item. - * + * * This method traverses up the hierarchy of items starting from a given `itemId`, until it finds the equipment * parent item. In other words, if you pass it an item id of a suppressor, it will traverse up the muzzle brake, * barrel, upper receiver, gun, nested backpack, and finally return the backpack Item that is equipped. - * + * * It's important to note that traversal is expensive, so this method requires that you pass it a Dictionary of the items * to traverse, where the keys are the item IDs and the values are the corresponding Item objects. This alleviates * some of the performance concerns, as it allows for quick lookups of items by ID. - * + * * @param itemId - The unique identifier of the item for which to find the equipment parent. * @param itemsMap - A Dictionary containing item IDs mapped to their corresponding Item objects for quick lookup. * @returns The Item object representing the equipment parent of the given item, or `null` if no such parent exists. diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs index b0c8ec80..b50a6629 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs @@ -152,7 +152,7 @@ public record HideoutItem } } -public record ItemLocation +public record ItemLocationBase { [JsonPropertyName("x")] public int? X @@ -168,13 +168,6 @@ public record ItemLocation set; } - [JsonPropertyName("r")] - public int R - { - get; - set; - } - [JsonPropertyName("isSearched")] public bool? IsSearched { @@ -193,6 +186,39 @@ public record ItemLocation } } +public record ItemLocation : ItemLocationBase +{ + + + [JsonPropertyName("r")] + public int R + { + get; + set; + } +} + +public enum ItemRotation +{ + // Token: 0x0400259F RID: 9631 + Horizontal, + // Token: 0x040025A0 RID: 9632 + Vertical +} + + +public record LocationInGrid : ItemLocationBase +{ + + [JsonPropertyName("r")] + [JsonConverter(typeof(JsonStringEnumConverter))] + public ItemRotation R + { + get; + set; + } +} + public record Upd { public UpdBuff? Buff From 723e616e806e6c4e67d50702623f1d990c9c1c8c Mon Sep 17 00:00:00 2001 From: Chris Adamson Date: Mon, 28 Apr 2025 12:43:11 -0500 Subject: [PATCH 2/9] fixes based on feedback --- .../Helpers/InventoryHelper.cs | 2 +- .../Helpers/ItemHelper.cs | 117 +++++++++--------- 2 files changed, 59 insertions(+), 60 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index bf187523..2c5e6ee3 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -843,7 +843,7 @@ public class InventoryHelper( foreach (var item in containerItemHash) { - var (itemLocation, _) = ItemHelper.TryParseItemLocation(item); + var itemLocation = ItemHelper.TryParseItemLocation(item); if (itemLocation is null) { diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs index e92233da..7527b6d4 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs @@ -859,65 +859,6 @@ public class ItemHelper( return _dogTagTpls.Contains(tpl); } - /// - /// Given that the R field of item location can be string enum or int, provide a method to get the exact type - /// - /// - /// - - public static (ItemLocation? itemLocation, LocationInGrid? locationInGrid) TryParseItemLocation(Item item) - { - if (item.Location is not JsonElement jsonLocation) - { - return ((ItemLocation?) item.Location, null); - } - - var itemLocation = TryParseItemLocation(jsonLocation); - if (itemLocation != null) - { - return (itemLocation, null); - } - - var locationInGrid = TryParseLocationInGrid(jsonLocation); - if (locationInGrid == null) - { - return (null, null); - } - - itemLocation = new ItemLocation - { - X = locationInGrid.X, - Y = locationInGrid.Y, - IsSearched = locationInGrid.IsSearched, - R = locationInGrid.R == ItemRotation.Vertical ? 1 : 0 - }; - return (itemLocation, locationInGrid); - - ItemLocation? TryParseItemLocation(JsonElement element) - { - try - { - return element.ToObject(); - } - catch - { - return null; - } - } - - LocationInGrid? TryParseLocationInGrid(JsonElement element) - { - try - { - return element.ToObject(); - } - catch - { - return null; - } - } - } - /// /// Gets the identifier for a child using slotId, locationX and locationY. /// @@ -2241,6 +2182,64 @@ public class ItemHelper( } } } + + /// + /// Given that the R field of item location can be string enum or int, provide a method to get the exact type + /// + /// + /// ItemLocation possible null + public static ItemLocation? TryParseItemLocation(Item item) + { + if (item.Location is not JsonElement jsonLocation) + { + return (ItemLocation?) item.Location; + } + + var itemLocation = TryParseItemLocation(jsonLocation); + if (itemLocation != null) + { + return itemLocation; + } + + var locationInGrid = TryParseLocationInGrid(jsonLocation); + if (locationInGrid == null) + { + return null; + } + + itemLocation = new ItemLocation + { + X = locationInGrid.X, + Y = locationInGrid.Y, + IsSearched = locationInGrid.IsSearched, + R = locationInGrid.R == ItemRotation.Vertical ? 1 : 0 + }; + return itemLocation; + } + + private static ItemLocation? TryParseItemLocation(JsonElement element) + { + try + { + return element.ToObject(); + } + catch + { + return null; + } + } + + private static LocationInGrid? TryParseLocationInGrid(JsonElement element) + { + try + { + return element.ToObject(); + } + catch + { + return null; + } + } } public class ItemSize From 9357c1d2b9d9976e96344f4f19f09cf8597c63fb Mon Sep 17 00:00:00 2001 From: hulkhan22 Date: Tue, 29 Apr 2025 00:33:40 +0200 Subject: [PATCH 3/9] Fix cast & filtering --- .../Generators/RepeatableQuestGenerator.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs index c83015b9..dbdfd08d 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs @@ -279,21 +279,20 @@ public class RepeatableQuestGenerator( if (distance > 50) { List weaponTypeBlacklist = ["Shotgun", "Pistol"]; - weaponCategoryRequirementConfig = - (ProbabilityObjectArray>) weaponCategoryRequirementConfig - .Where(category => weaponTypeBlacklist - .Contains(category.Key) - ); + + // Filter out close range weapons from long distance requirement + weaponCategoryRequirementConfig + .RemoveAll(category => weaponTypeBlacklist + .Contains(category.Key)); } else if (distance < 20) { List weaponTypeBlacklist = ["MarksmanRifle", "DMR"]; + // Filter out far range weapons from close distance requirement - weaponCategoryRequirementConfig = - (ProbabilityObjectArray>) weaponCategoryRequirementConfig - .Where(category => weaponTypeBlacklist - .Contains(category.Key) - ); + weaponCategoryRequirementConfig + .RemoveAll(category => weaponTypeBlacklist + .Contains(category.Key)); } // Pick a weighted weapon category From 760f3e3c72c6867a9013b21a35eca3a589c5e762 Mon Sep 17 00:00:00 2001 From: Chomp <27521899+chompDev@users.noreply.github.com> Date: Tue, 29 Apr 2025 08:47:44 +0100 Subject: [PATCH 4/9] Revert "fixed error where itemlocation can be either a string or int" --- .../Helpers/InventoryHelper.cs | 11 ++- .../Helpers/ItemHelper.cs | 68 ++----------------- .../Models/Eft/Common/Tables/Item.cs | 42 +++--------- 3 files changed, 21 insertions(+), 100 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index 2c5e6ee3..3b6ab782 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -842,8 +842,15 @@ public class InventoryHelper( // Check each item in container foreach (var item in containerItemHash) { - - var itemLocation = ItemHelper.TryParseItemLocation(item); + ItemLocation? itemLocation; + if (item.Location is JsonElement) + { + itemLocation = ((JsonElement) item.Location).ToObject(); + } + else + { + itemLocation = (ItemLocation) item.Location; + } if (itemLocation is null) { diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs index 7527b6d4..97ceb6a4 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs @@ -1,8 +1,6 @@ using System.Collections.Frozen; -using System.Text.Json; using System.Text.Json.Serialization; using SPTarkov.Common.Annotations; -using SPTarkov.Common.Extensions; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Common.Tables; using SPTarkov.Server.Core.Models.Enums; @@ -1358,7 +1356,7 @@ public class ItemHelper( /** * Determines if an item is an attachment that is currently attached to its parent item. - * + * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ @@ -1371,15 +1369,15 @@ public class ItemHelper( /** * Retrieves the equipment parent item for a given item. - * + * * This method traverses up the hierarchy of items starting from a given `itemId`, until it finds the equipment * parent item. In other words, if you pass it an item id of a suppressor, it will traverse up the muzzle brake, * barrel, upper receiver, gun, nested backpack, and finally return the backpack Item that is equipped. - * + * * It's important to note that traversal is expensive, so this method requires that you pass it a Dictionary of the items * to traverse, where the keys are the item IDs and the values are the corresponding Item objects. This alleviates * some of the performance concerns, as it allows for quick lookups of items by ID. - * + * * @param itemId - The unique identifier of the item for which to find the equipment parent. * @param itemsMap - A Dictionary containing item IDs mapped to their corresponding Item objects for quick lookup. * @returns The Item object representing the equipment parent of the given item, or `null` if no such parent exists. @@ -2182,64 +2180,6 @@ public class ItemHelper( } } } - - /// - /// Given that the R field of item location can be string enum or int, provide a method to get the exact type - /// - /// - /// ItemLocation possible null - public static ItemLocation? TryParseItemLocation(Item item) - { - if (item.Location is not JsonElement jsonLocation) - { - return (ItemLocation?) item.Location; - } - - var itemLocation = TryParseItemLocation(jsonLocation); - if (itemLocation != null) - { - return itemLocation; - } - - var locationInGrid = TryParseLocationInGrid(jsonLocation); - if (locationInGrid == null) - { - return null; - } - - itemLocation = new ItemLocation - { - X = locationInGrid.X, - Y = locationInGrid.Y, - IsSearched = locationInGrid.IsSearched, - R = locationInGrid.R == ItemRotation.Vertical ? 1 : 0 - }; - return itemLocation; - } - - private static ItemLocation? TryParseItemLocation(JsonElement element) - { - try - { - return element.ToObject(); - } - catch - { - return null; - } - } - - private static LocationInGrid? TryParseLocationInGrid(JsonElement element) - { - try - { - return element.ToObject(); - } - catch - { - return null; - } - } } public class ItemSize diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs index b50a6629..b0c8ec80 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs @@ -152,7 +152,7 @@ public record HideoutItem } } -public record ItemLocationBase +public record ItemLocation { [JsonPropertyName("x")] public int? X @@ -168,6 +168,13 @@ public record ItemLocationBase set; } + [JsonPropertyName("r")] + public int R + { + get; + set; + } + [JsonPropertyName("isSearched")] public bool? IsSearched { @@ -186,39 +193,6 @@ public record ItemLocationBase } } -public record ItemLocation : ItemLocationBase -{ - - - [JsonPropertyName("r")] - public int R - { - get; - set; - } -} - -public enum ItemRotation -{ - // Token: 0x0400259F RID: 9631 - Horizontal, - // Token: 0x040025A0 RID: 9632 - Vertical -} - - -public record LocationInGrid : ItemLocationBase -{ - - [JsonPropertyName("r")] - [JsonConverter(typeof(JsonStringEnumConverter))] - public ItemRotation R - { - get; - set; - } -} - public record Upd { public UpdBuff? Buff From de38f1fe88a163bc5fd7691fd5a0301d19c8e41f Mon Sep 17 00:00:00 2001 From: Chris Adamson Date: Tue, 29 Apr 2025 10:57:12 -0500 Subject: [PATCH 5/9] try just the enum --- .../Generators/LocationLootGenerator.cs | 2 +- .../Helpers/BotGeneratorHelper.cs | 2 +- .../Helpers/InventoryHelper.cs | 7 +++--- .../Models/Eft/Common/Tables/Item.cs | 22 +++++++++++++------ .../SPTarkov.Server.Core/Utils/JsonUtil.cs | 1 + 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs index edf8f073..4c1b4a45 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs @@ -503,7 +503,7 @@ public class LocationLootGenerator( { X = result.X, Y = result.Y, - R = result.Rotation.GetValueOrDefault(false) ? 1 : 0 + R = result.Rotation.GetValueOrDefault(false) ? ItemRotation.Vertical : ItemRotation.Horizontal }; // Add loot to container before returning diff --git a/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs index bb25ed63..1873ea63 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs @@ -651,7 +651,7 @@ public class BotGeneratorHelper( { X = findSlotResult.X, Y = findSlotResult.Y, - R = findSlotResult.Rotation ?? false ? 1 : 0 + R = findSlotResult.Rotation ?? false ? ItemRotation.Vertical : ItemRotation.Horizontal } ; } diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index 3b6ab782..1a164b11 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -324,7 +324,7 @@ public class InventoryHelper( { X = findSlotResult.X, Y = findSlotResult.Y, - R = findSlotResult.Rotation.GetValueOrDefault(false) ? 1 : 0, + R = findSlotResult.Rotation.GetValueOrDefault(false) ? ItemRotation.Vertical : ItemRotation.Horizontal, Rotation = findSlotResult.Rotation }; @@ -382,7 +382,7 @@ public class InventoryHelper( { X = findSlotResult.X, Y = findSlotResult.Y, - R = findSlotResult.Rotation.Value ? 1 : 0, + R = findSlotResult.Rotation.Value ? ItemRotation.Vertical : ItemRotation.Horizontal, Rotation = findSlotResult.Rotation }; @@ -423,7 +423,7 @@ public class InventoryHelper( { X = findSortingSlotResult.X, Y = findSortingSlotResult.Y, - R = findSortingSlotResult.Rotation.Value ? 1 : 0, + R = findSortingSlotResult.Rotation.Value ? ItemRotation.Vertical : ItemRotation.Horizontal, Rotation = findSortingSlotResult.Rotation }; } @@ -845,6 +845,7 @@ public class InventoryHelper( ItemLocation? itemLocation; if (item.Location is JsonElement) { + Console.WriteLine(item.Location); itemLocation = ((JsonElement) item.Location).ToObject(); } else diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs index b0c8ec80..69343168 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs @@ -168,13 +168,6 @@ public record ItemLocation set; } - [JsonPropertyName("r")] - public int R - { - get; - set; - } - [JsonPropertyName("isSearched")] public bool? IsSearched { @@ -191,6 +184,21 @@ public record ItemLocation get; set; } + + [JsonPropertyName("r")] + public ItemRotation R + { + get; + set; + } +} + +public enum ItemRotation +{ + // Token: 0x0400259F RID: 9631 + Horizontal, + // Token: 0x040025A0 RID: 9632 + Vertical } public record Upd diff --git a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs index ccd1fba7..5a58360d 100644 --- a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs +++ b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs @@ -59,6 +59,7 @@ public class JsonUtil new EftEnumConverter(), new EftEnumConverter(), new EftEnumConverter(), + new EftEnumConverter(), new EftListEnumConverter(), new EftListEnumConverter(), From 8285a1e92dc960d6ea71dd01796d57534bc92a5c Mon Sep 17 00:00:00 2001 From: Chomp Date: Tue, 29 Apr 2025 17:31:31 +0100 Subject: [PATCH 6/9] Updated PMC difficulty values --- .../Assets/database/bots/types/bear.json | 18 +- .../Assets/database/bots/types/usec.json | 682 +++++++++--------- 2 files changed, 342 insertions(+), 358 deletions(-) diff --git a/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/bear.json b/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/bear.json index af528ecb..5bd485d6 100644 --- a/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/bear.json +++ b/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/bear.json @@ -269,7 +269,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 2.9, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -532,7 +532,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 9, @@ -646,7 +645,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, @@ -794,7 +792,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 1.25, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -967,8 +965,8 @@ "MAX_DISTANCE_VISIBILITY_CHANGE_SPEED_K": 0.3, "MAX_VISION_GRASS_METERS": 0.8, "MAX_VISION_GRASS_METERS_FLARE": 8, - "MAX_VISION_GRASS_METERS_FLARE_OPT": 0.125, "MAX_VISION_GRASS_METERS_OPT": 0.9090909, + "MAX_VISION_GRASS_METERS_FLARE_OPT": 0.125, "MIDDLE_DIST": 90, "MIDDLE_DIST_CAN_SHOOT_HEAD": false, "MIN_LOOK_AROUD_TIME": 20, @@ -1057,7 +1055,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 9, @@ -1171,7 +1168,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, @@ -1319,7 +1315,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 1.25, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -1581,7 +1577,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 0.5, @@ -1693,7 +1688,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, @@ -1841,7 +1835,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 2.9, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -2104,7 +2098,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 5, @@ -2218,7 +2211,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, diff --git a/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/usec.json b/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/usec.json index b73f3172..03fa2aec 100644 --- a/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/usec.json +++ b/Libraries/SPTarkov.Server.Assets/Assets/database/bots/types/usec.json @@ -259,7 +259,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 2.9, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -423,6 +423,7 @@ "FAR_DISTANCE": 160, "FarDeltaTimeSec": 3, "GOAL_TO_FULL_DISSAPEAR": 0.5, + "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "GOAL_TO_FULL_DISSAPEAR_SHOOT": 0.05, "LOOK_AROUND_DELTA": 1.1, "LOOK_LAST_POSENEMY_IF_NO_DANGER_SEC": 25, @@ -436,11 +437,10 @@ "MIDDLE_DIST_CAN_SHOOT_HEAD": false, "MIN_LOOK_AROUD_TIME": 20, "MiddleDeltaTimeSec": 1, + "NO_GRASS_DIST": 8, + "NO_GREEN_DIST": 8, "OLD_TIME_POINT": 11, "OPTIMIZE_TO_ONLY_BODY": true, - "NO_GRASS_DIST": 8, - "NO_GREEN_DIST": 8, - "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "POSIBLE_VISION_SPACE": 1.2, "VISIBLE_DISNACE_WITH_LIGHT": 100, "WAIT_NEW_SENSOR": 2.1, @@ -522,7 +522,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 9, @@ -636,7 +635,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, @@ -784,7 +782,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 1.25, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -948,6 +946,7 @@ "FAR_DISTANCE": 160, "FarDeltaTimeSec": 3, "GOAL_TO_FULL_DISSAPEAR": 0.5, + "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "GOAL_TO_FULL_DISSAPEAR_SHOOT": 0.05, "LOOK_AROUND_DELTA": 1.1, "LOOK_LAST_POSENEMY_IF_NO_DANGER_SEC": 993, @@ -962,11 +961,10 @@ "MIDDLE_DIST_CAN_SHOOT_HEAD": false, "MIN_LOOK_AROUD_TIME": 20, "MiddleDeltaTimeSec": 1, + "NO_GRASS_DIST": 8, + "NO_GREEN_DIST": 8, "OLD_TIME_POINT": 11, "OPTIMIZE_TO_ONLY_BODY": true, - "NO_GRASS_DIST": 8, - "NO_GREEN_DIST": 8, - "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "POSIBLE_VISION_SPACE": 1.2, "VISIBLE_DISNACE_WITH_LIGHT": 100, "WAIT_NEW_SENSOR": 2.1, @@ -1047,7 +1045,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 9, @@ -1161,7 +1158,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, @@ -1309,7 +1305,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 1.25, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -1473,6 +1469,7 @@ "FAR_DISTANCE": 160, "FarDeltaTimeSec": 3, "GOAL_TO_FULL_DISSAPEAR": 0.5, + "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "GOAL_TO_FULL_DISSAPEAR_SHOOT": 0.05, "LOOK_AROUND_DELTA": 1.1, "LOOK_LAST_POSENEMY_IF_NO_DANGER_SEC": 993, @@ -1486,11 +1483,10 @@ "MIDDLE_DIST_CAN_SHOOT_HEAD": true, "MIN_LOOK_AROUD_TIME": 20, "MiddleDeltaTimeSec": 1, + "NO_GRASS_DIST": 8, + "NO_GREEN_DIST": 8, "OLD_TIME_POINT": 11, "OPTIMIZE_TO_ONLY_BODY": true, - "NO_GRASS_DIST": 8, - "NO_GREEN_DIST": 8, - "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "POSIBLE_VISION_SPACE": 1.2, "VISIBLE_DISNACE_WITH_LIGHT": 100, "WAIT_NEW_SENSOR": 2.1, @@ -1571,7 +1567,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 0.5, @@ -1683,7 +1678,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, @@ -1831,7 +1825,7 @@ "CanGrenade": true, "CanRun": true, "DamageCoeff": 1, - "GainSightCoef": 1.2, + "GainSightCoef": 2, "HearingSense": 2.9, "PistolFireDistancePref": 35, "RifleFireDistancePref": 100, @@ -1995,6 +1989,7 @@ "FAR_DISTANCE": 160, "FarDeltaTimeSec": 3, "GOAL_TO_FULL_DISSAPEAR": 0.5, + "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "GOAL_TO_FULL_DISSAPEAR_SHOOT": 0.05, "LOOK_AROUND_DELTA": 1.1, "LOOK_LAST_POSENEMY_IF_NO_DANGER_SEC": 25, @@ -2008,11 +2003,10 @@ "MIDDLE_DIST_CAN_SHOOT_HEAD": false, "MIN_LOOK_AROUD_TIME": 20, "MiddleDeltaTimeSec": 1, + "NO_GRASS_DIST": 8, + "NO_GREEN_DIST": 8, "OLD_TIME_POINT": 11, "OPTIMIZE_TO_ONLY_BODY": true, - "NO_GRASS_DIST": 8, - "NO_GREEN_DIST": 8, - "GOAL_TO_FULL_DISSAPEAR_GREEN": 2, "POSIBLE_VISION_SPACE": 1.2, "VISIBLE_DISNACE_WITH_LIGHT": 100, "WAIT_NEW_SENSOR": 2.1, @@ -2094,7 +2088,6 @@ "gifter" ], "REVENGE_FOR_SAVAGE_PLAYERS": false, - "SDIST_TO_DELIVER_INFO_WHEN_ENEMY": 10000, "SEARCH_TARGET": true, "SEC_TO_MORE_DIST_TO_RUN": 10, "SHOOT_INSTEAD_DOG_FIGHT": 5, @@ -2208,7 +2201,6 @@ "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40, "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, "DELAY_BEFORE_FIX_MALFUNCTION": 0.5, - "DITANCE_TO_OFF_AUTO_FIRE": 95, "FAR_DIST_ENEMY": 20, "FAR_DIST_ENEMY_SQR": 400, "FAR_DIST_TO_CHANGE_WEAPON": 30, @@ -3295,9 +3287,7 @@ "5c0e5edb86f77461f55ed1f7": 25, "5c0e625a86f7742d77340f62": 17, "5c0e655586f774045612eeb2": 160, - "67ab2f94dafe3b22670c912c": 160, "5ca2151486f774244a3b8d30": 17, - "67ab2f5adafe3b22670c911f": 17, "5ca21c6986f77479963115a7": 17, "5df8a2ca86f7740bfe6df777": 5, "5e4abb5086f77406975c9342": 17, @@ -3310,10 +3300,12 @@ "60a283193cb70855c43a381d": 17, "62a09d79de7ac81993580530": 10, "63737f448b28897f2802b874": 50, - "67ab2eecfe82855dcc0f2af6": 50, "64abd93857958b4249003418": 100, "64be79c487d1510151095552": 50, - "64be79e2bf8412471d0d9bcc": 50 + "64be79e2bf8412471d0d9bcc": 50, + "67ab2eecfe82855dcc0f2af6": 50, + "67ab2f5adafe3b22670c911f": 17, + "67ab2f94dafe3b22670c912c": 160 }, "Backpack": { "544a5cde4bdc2d39388b456b": 5, @@ -3368,55 +3360,28 @@ "557ff21e4bdc2d89578b4586": 1, "59e770b986f7742cbd762754": 1, "5aa2b986e5b5b00014028f4c": 1, - "67af41dd1eb308667602db4a": 1, "5aa2b9aee5b5b00015693121": 1, "5b432be65acfc433000ed01f": 1, "5c0d32fcd174af02a1659c75": 1, "5c1a1cc52e221602b3136e3d": 1, - "67af42942676ade5750b50e8": 1, "5d5fca1ea4b93635fd598c07": 1, "5d6d2e22a4b9361bd5780d05": 1, "5d6d2ef3a4b93618084f58bd": 1, - "67af425c2676ade5750b50e6": 1, "603409c80ca681766b6a0fb2": 1, - "62a61c988ec41a51b34758d5": 1 + "62a61c988ec41a51b34758d5": 1, + "67af41dd1eb308667602db4a": 1, + "67af425c2676ade5750b50e6": 1, + "67af42942676ade5750b50e8": 1 }, "FaceCover": { "572b7f1624597762ae139822": 1, - "67a9cd28cade15e0f00123b6": 1, - "67a9e9e0c185de5a4d0c2a13": 1, - "67a9ea004fb4a4a8a00d2828": 1, - "67a9cc9cf05be177170bcd76": 1, - "67a9cd6ecade15e0f00123b8": 1, - "67a9cd381fb22063280728a6": 1, - "67a9e9d04fb4a4a8a00d2826": 1, - "67a9ea39de7fb0f19e077da6": 1, - "67a9ccfff05be177170bcd78": 1, - "67a9cd18f05be177170bcd7a": 1, - "67a9e9f09de6826a650ee074": 1, - "67a9ea98de7fb0f19e077da8": 1, - "67a9ea7e4fb4a4a8a00d282a": 1, - "67a9cd55c2a2d940930aec86": 1, - "67a9ea10c185de5a4d0c2a15": 1, "572b7fa524597762b747ce82": 1, - "67a5fa01fafb8efd440694ba": 1, - "67a5f989f7041a25760dda36": 1, - "67a5f968fafb8efd440694b6": 1, - "67a5f917dfdf568c9009af6b": 1, - "67a5f9a193f7b62b6b0f6576": 1, - "67a5f94e802d287c670bb966": 1, "59e7715586f7742ee5789605": 5, "5ab8f39486f7745cd93a1cca": 1, - "67a9dccf9de6826a650ee06a": 1, - "67a9dc769de6826a650ee066": 1, - "67a9dce47faa4210bb0807c8": 1, - "67a9dca99de6826a650ee068": 1, - "67a9dc997faa4210bb0807c6": 1, - "67a9dcbac185de5a4d0c2a06": 1, - "67a9dd619de6826a650ee06c": 1, "5ab8f4ff86f77431c60d91ba": 5, "5ab8f85d86f7745cd93a1cf5": 5, "5b4325355acfc40019478126": 5, + "5b4326435acfc433000ed01d": 1, "5b432f3d5acfc4704b4a1dfb": 5, "5bd0716d86f774171822ef4b": 2, "5bd073a586f7747e6f135799": 2, @@ -3427,21 +3392,48 @@ "60a7ad2a2198820d95707a2e": 2, "62a09dd4621468534a797ac7": 2, "657089638db3adca1009f4ca": 2, - "67a5c5f37f52620c5b05b4d6": 1, - "67a5c5b6dfdf568c9009af66": 1, - "67a4b71ad3228756b6088ee2": 1, - "67a5c6068fcd9fb73f0752cf": 1, - "67a5c5df782ce4655104db14": 1, - "67a5c657782ce4655104db16": 1, - "67a5c61c7f52620c5b05b4d8": 1, "675ac888803644528007b3f6": 4, - "5b4326435acfc433000ed01d": 1, - "67aaf82d508ee9b6440e9c46": 1, - "67aaf84104dca1c82c071cf6": 1, - "67aaf808bf7609058606a926": 1, - "67aaf879508ee9b6440e9c48": 1, - "67aaf863de7fb0f19e077db9": 1, - "67aaf851bf7609058606a928": 1 + "67a4b71ad3228756b6088ee2": 1, + "67a5c5b6dfdf568c9009af66": 1, + "67a5c5df782ce4655104db14": 1, + "67a5c5f37f52620c5b05b4d6": 1, + "67a5c6068fcd9fb73f0752cf": 1, + "67a5c61c7f52620c5b05b4d8": 1, + "67a5c657782ce4655104db16": 1, + "67a5f917dfdf568c9009af6b": 1, + "67a5f94e802d287c670bb966": 1, + "67a5f968fafb8efd440694b6": 1, + "67a5f989f7041a25760dda36": 1, + "67a5f9a193f7b62b6b0f6576": 1, + "67a5fa01fafb8efd440694ba": 1, + "67a9cc9cf05be177170bcd76": 1, + "67a9ccfff05be177170bcd78": 1, + "67a9cd18f05be177170bcd7a": 1, + "67a9cd28cade15e0f00123b6": 1, + "67a9cd381fb22063280728a6": 1, + "67a9cd55c2a2d940930aec86": 1, + "67a9cd6ecade15e0f00123b8": 1, + "67a9dc769de6826a650ee066": 1, + "67a9dc997faa4210bb0807c6": 1, + "67a9dca99de6826a650ee068": 1, + "67a9dcbac185de5a4d0c2a06": 1, + "67a9dccf9de6826a650ee06a": 1, + "67a9dce47faa4210bb0807c8": 1, + "67a9dd619de6826a650ee06c": 1, + "67a9e9d04fb4a4a8a00d2826": 1, + "67a9e9e0c185de5a4d0c2a13": 1, + "67a9e9f09de6826a650ee074": 1, + "67a9ea004fb4a4a8a00d2828": 1, + "67a9ea10c185de5a4d0c2a15": 1, + "67a9ea39de7fb0f19e077da6": 1, + "67a9ea7e4fb4a4a8a00d282a": 1, + "67a9ea98de7fb0f19e077da8": 1, + "67aaf808bf7609058606a926": 1, + "67aaf82d508ee9b6440e9c46": 1, + "67aaf84104dca1c82c071cf6": 1, + "67aaf851bf7609058606a928": 1, + "67aaf863de7fb0f19e077db9": 1, + "67aaf879508ee9b6440e9c48": 1 }, "FirstPrimaryWeapon": { "5447a9cd4bdc2dbd208b4567": 4, @@ -3669,19 +3661,15 @@ }, "TacticalVest": { "544a5caa4bdc2d1a388b4568": 38, - "67ab49aab9c7a1e18c095686": 38, "5648a69d4bdc2ded0b8b457b": 38, - "67ab3f146d7ece17bf0096ff": 38, "572b7adb24597762ae139821": 5, "5929a2a086f7744f4b234d43": 38, "592c2d1a86f7746dbe2af32a": 38, - "67ab3ea96d7ece17bf0096f6": 38, "59e7643b86f7742cbf2c109a": 38, "5ab8dab586f77441cd04f2a2": 38, "5ab8dced86f774646209ec87": 38, "5b44c8ea86f7742d1627baf1": 38, "5b44cad286f77402a54ae7e5": 45, - "67ab4b2d6f7ae4aa550bbcf6": 45, "5c0e3eb886f7742015526062": 3, "5c0e446786f7742013381639": 38, "5c0e6a1586f77404597b4965": 38, @@ -3726,7 +3714,11 @@ "66b6295178bbc0200425f995": 25, "66b6295a8ca68c6461709efa": 25, "66b6296d7994640992013b17": 25, - "674589d98dd67746010329e6": 15 + "674589d98dd67746010329e6": 15, + "67ab3ea96d7ece17bf0096f6": 38, + "67ab3f146d7ece17bf0096ff": 38, + "67ab49aab9c7a1e18c095686": 38, + "67ab4b2d6f7ae4aa550bbcf6": 45 } }, "items": { @@ -4020,57 +4012,6 @@ "6570e83223c1f638ef0b0ede" ] }, - "67ab49aab9c7a1e18c095686": { - "Back_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fa0fb498d1b7e3e071d9c", - "656fafe3498d1b7e3e071da4", - "656fa76500d62bcd2e024080", - "656fad8c498d1b7e3e071da0", - "656fa25e94b480b8a500c0e0", - "656fa61e94b480b8a500c0e8", - "656fac30c6baea13cd07e10c", - "656fb0bd7c2d57afe200c0dc", - "656fb21fa0dce000a2020f7c", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Front_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fa0fb498d1b7e3e071d9c", - "656fa76500d62bcd2e024080", - "656fafe3498d1b7e3e071da4", - "656fa25e94b480b8a500c0e0", - "656fad8c498d1b7e3e071da0", - "656fa61e94b480b8a500c0e8", - "656fb21fa0dce000a2020f7c", - "656fb0bd7c2d57afe200c0dc", - "656fac30c6baea13cd07e10c", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Groin": [ - "6570e90b3a5689d85f08db97" - ], - "Soft_armor_back": [ - "6570e87c23c1f638ef0b0ee2" - ], - "Soft_armor_front": [ - "6570e83223c1f638ef0b0ede" - ] - }, "545cdb794bdc2d3a198b456a": { "Back_plate": [ "656f9d5900d62bcd2e02407c", @@ -8824,54 +8765,6 @@ "6575bc88c6700bd6b40e8a57" ] }, - "67ab4b2d6f7ae4aa550bbcf6": { - "Back_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa99800d62bcd2e024088", - "656fa8d700d62bcd2e024084", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fa0fb498d1b7e3e071d9c", - "656fafe3498d1b7e3e071da4", - "656fa76500d62bcd2e024080", - "656fa25e94b480b8a500c0e0", - "656fad8c498d1b7e3e071da0", - "656fa61e94b480b8a500c0e8", - "656fac30c6baea13cd07e10c", - "656fb21fa0dce000a2020f7c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Front_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fa0fb498d1b7e3e071d9c", - "656fafe3498d1b7e3e071da4", - "656fa76500d62bcd2e024080", - "656fa25e94b480b8a500c0e0", - "656fad8c498d1b7e3e071da0", - "656fa61e94b480b8a500c0e8", - "656fb21fa0dce000a2020f7c", - "656fac30c6baea13cd07e10c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Soft_armor_back": [ - "6575bca0dc9932aed601c5d7" - ], - "Soft_armor_front": [ - "6575bc88c6700bd6b40e8a57" - ] - }, "5b44cd8b86f774503d30cba2": { "Back_plate": [ "656f9d5900d62bcd2e02407c", @@ -10755,54 +10648,6 @@ "6570e025615f54368b04fcb0" ] }, - "67ab2f94dafe3b22670c912c": { - "Back_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656faf0ca0dce000a2020f77", - "656fae5f7c2d57afe200c0d7", - "656fa0fb498d1b7e3e071d9c", - "656fafe3498d1b7e3e071da4", - "656fa76500d62bcd2e024080", - "656fa25e94b480b8a500c0e0", - "656fa61e94b480b8a500c0e8", - "656fad8c498d1b7e3e071da0", - "656fac30c6baea13cd07e10c", - "656fb21fa0dce000a2020f7c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Front_plate": [ - "656fa8d700d62bcd2e024084", - "656f9d5900d62bcd2e02407c", - "656fa99800d62bcd2e024088", - "656fa0fb498d1b7e3e071d9c", - "656faf0ca0dce000a2020f77", - "656fae5f7c2d57afe200c0d7", - "656fafe3498d1b7e3e071da4", - "656fa76500d62bcd2e024080", - "656fa25e94b480b8a500c0e0", - "656fad8c498d1b7e3e071da0", - "656fa61e94b480b8a500c0e8", - "656fb21fa0dce000a2020f7c", - "656fac30c6baea13cd07e10c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Soft_armor_back": [ - "6570e0610b57c03ec90b96ef" - ], - "Soft_armor_front": [ - "6570e025615f54368b04fcb0" - ] - }, "5c0e722886f7740458316a57": { "Back_plate": [ "656f9d5900d62bcd2e02407c", @@ -11684,83 +11529,6 @@ "6575dd6e9d3a0ddf660b9047" ] }, - "67ab2f5adafe3b22670c911f": { - "Back_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fa0fb498d1b7e3e071d9c", - "656fafe3498d1b7e3e071da4", - "656fa76500d62bcd2e024080", - "656fa25e94b480b8a500c0e0", - "656fad8c498d1b7e3e071da0", - "656fa61e94b480b8a500c0e8", - "656fb21fa0dce000a2020f7c", - "656fac30c6baea13cd07e10c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "65573fa5655447403702a816", - "64afc71497cf3a403c01ff38", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Collar": [ - "6575dd769d3a0ddf660b904b" - ], - "Front_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fa0fb498d1b7e3e071d9c", - "656fafe3498d1b7e3e071da4", - "656fa76500d62bcd2e024080", - "656fa25e94b480b8a500c0e0", - "656fad8c498d1b7e3e071da0", - "656fa61e94b480b8a500c0e8", - "656fb21fa0dce000a2020f7c", - "656fac30c6baea13cd07e10c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "65573fa5655447403702a816", - "64afc71497cf3a403c01ff38", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Groin": [ - "6575dd800546f8b1de093df6" - ], - "Groin_back": [ - "6575dd94945bf78edd04c43c" - ], - "Left_side_plate": [ - "6557458f83942d705f0c4962", - "64afdb577bb3bfe8fe03fd1d", - "64afd81707e2cf40e903a316" - ], - "Right_side_plate": [ - "6557458f83942d705f0c4962", - "64afdb577bb3bfe8fe03fd1d", - "64afd81707e2cf40e903a316" - ], - "Soft_armor_back": [ - "6575dd519e27f4a85e081146" - ], - "Soft_armor_front": [ - "6575dd3e9e27f4a85e081142" - ], - "Soft_armor_left": [ - "6575dd64945bf78edd04c438" - ], - "soft_armor_right": [ - "6575dd6e9d3a0ddf660b9047" - ] - }, "5ca21c6986f77479963115a7": { "Back_plate": [ "656f9d5900d62bcd2e02407c", @@ -18135,48 +17903,6 @@ "64afdcb83efdfea28601d041" ] }, - "67ab2eecfe82855dcc0f2af6": { - "Back_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fa0fb498d1b7e3e071d9c", - "656fafe3498d1b7e3e071da4", - "656fa25e94b480b8a500c0e0", - "656fa76500d62bcd2e024080", - "656fad8c498d1b7e3e071da0", - "656fa61e94b480b8a500c0e8", - "656fb21fa0dce000a2020f7c", - "656fac30c6baea13cd07e10c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ], - "Front_plate": [ - "656f9d5900d62bcd2e02407c", - "656fa8d700d62bcd2e024084", - "656fa99800d62bcd2e024088", - "656fae5f7c2d57afe200c0d7", - "656faf0ca0dce000a2020f77", - "656fafe3498d1b7e3e071da4", - "656fa0fb498d1b7e3e071d9c", - "656fa76500d62bcd2e024080", - "656fad8c498d1b7e3e071da0", - "656fa25e94b480b8a500c0e0", - "656fa61e94b480b8a500c0e8", - "656fb21fa0dce000a2020f7c", - "656fac30c6baea13cd07e10c", - "656fb0bd7c2d57afe200c0dc", - "656f9fa0498d1b7e3e071d98", - "656fa53d94b480b8a500c0e4", - "655746010177119f4a097ff7", - "64afdcb83efdfea28601d041" - ] - }, "637f57b78d137b27f70c496a": { "mod_foregrip": [ "58c157c886f774032749fb06" @@ -21373,6 +21099,272 @@ "57fd23e32459772d0805bcf1", "544909bb4bdc2d6f028b4577" ] + }, + "67ab2eecfe82855dcc0f2af6": { + "Back_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fa0fb498d1b7e3e071d9c", + "656fafe3498d1b7e3e071da4", + "656fa25e94b480b8a500c0e0", + "656fa76500d62bcd2e024080", + "656fad8c498d1b7e3e071da0", + "656fa61e94b480b8a500c0e8", + "656fb21fa0dce000a2020f7c", + "656fac30c6baea13cd07e10c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Front_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fafe3498d1b7e3e071da4", + "656fa0fb498d1b7e3e071d9c", + "656fa76500d62bcd2e024080", + "656fad8c498d1b7e3e071da0", + "656fa25e94b480b8a500c0e0", + "656fa61e94b480b8a500c0e8", + "656fb21fa0dce000a2020f7c", + "656fac30c6baea13cd07e10c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ] + }, + "67ab2f5adafe3b22670c911f": { + "Back_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fa0fb498d1b7e3e071d9c", + "656fafe3498d1b7e3e071da4", + "656fa76500d62bcd2e024080", + "656fa25e94b480b8a500c0e0", + "656fad8c498d1b7e3e071da0", + "656fa61e94b480b8a500c0e8", + "656fb21fa0dce000a2020f7c", + "656fac30c6baea13cd07e10c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "65573fa5655447403702a816", + "64afc71497cf3a403c01ff38", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Collar": [ + "6575dd769d3a0ddf660b904b" + ], + "Front_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fa0fb498d1b7e3e071d9c", + "656fafe3498d1b7e3e071da4", + "656fa76500d62bcd2e024080", + "656fa25e94b480b8a500c0e0", + "656fad8c498d1b7e3e071da0", + "656fa61e94b480b8a500c0e8", + "656fb21fa0dce000a2020f7c", + "656fac30c6baea13cd07e10c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "65573fa5655447403702a816", + "64afc71497cf3a403c01ff38", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Groin": [ + "6575dd800546f8b1de093df6" + ], + "Groin_back": [ + "6575dd94945bf78edd04c43c" + ], + "Left_side_plate": [ + "6557458f83942d705f0c4962", + "64afdb577bb3bfe8fe03fd1d", + "64afd81707e2cf40e903a316" + ], + "Right_side_plate": [ + "6557458f83942d705f0c4962", + "64afdb577bb3bfe8fe03fd1d", + "64afd81707e2cf40e903a316" + ], + "Soft_armor_back": [ + "6575dd519e27f4a85e081146" + ], + "Soft_armor_front": [ + "6575dd3e9e27f4a85e081142" + ], + "Soft_armor_left": [ + "6575dd64945bf78edd04c438" + ], + "soft_armor_right": [ + "6575dd6e9d3a0ddf660b9047" + ] + }, + "67ab2f94dafe3b22670c912c": { + "Back_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656faf0ca0dce000a2020f77", + "656fae5f7c2d57afe200c0d7", + "656fa0fb498d1b7e3e071d9c", + "656fafe3498d1b7e3e071da4", + "656fa76500d62bcd2e024080", + "656fa25e94b480b8a500c0e0", + "656fa61e94b480b8a500c0e8", + "656fad8c498d1b7e3e071da0", + "656fac30c6baea13cd07e10c", + "656fb21fa0dce000a2020f7c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Front_plate": [ + "656fa8d700d62bcd2e024084", + "656f9d5900d62bcd2e02407c", + "656fa99800d62bcd2e024088", + "656fa0fb498d1b7e3e071d9c", + "656faf0ca0dce000a2020f77", + "656fae5f7c2d57afe200c0d7", + "656fafe3498d1b7e3e071da4", + "656fa76500d62bcd2e024080", + "656fa25e94b480b8a500c0e0", + "656fad8c498d1b7e3e071da0", + "656fa61e94b480b8a500c0e8", + "656fb21fa0dce000a2020f7c", + "656fac30c6baea13cd07e10c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Soft_armor_back": [ + "6570e0610b57c03ec90b96ef" + ], + "Soft_armor_front": [ + "6570e025615f54368b04fcb0" + ] + }, + "67ab49aab9c7a1e18c095686": { + "Back_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fa0fb498d1b7e3e071d9c", + "656fafe3498d1b7e3e071da4", + "656fa76500d62bcd2e024080", + "656fad8c498d1b7e3e071da0", + "656fa25e94b480b8a500c0e0", + "656fa61e94b480b8a500c0e8", + "656fac30c6baea13cd07e10c", + "656fb0bd7c2d57afe200c0dc", + "656fb21fa0dce000a2020f7c", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Front_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fa0fb498d1b7e3e071d9c", + "656fa76500d62bcd2e024080", + "656fafe3498d1b7e3e071da4", + "656fa25e94b480b8a500c0e0", + "656fad8c498d1b7e3e071da0", + "656fa61e94b480b8a500c0e8", + "656fb21fa0dce000a2020f7c", + "656fb0bd7c2d57afe200c0dc", + "656fac30c6baea13cd07e10c", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Groin": [ + "6570e90b3a5689d85f08db97" + ], + "Soft_armor_back": [ + "6570e87c23c1f638ef0b0ee2" + ], + "Soft_armor_front": [ + "6570e83223c1f638ef0b0ede" + ] + }, + "67ab4b2d6f7ae4aa550bbcf6": { + "Back_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa99800d62bcd2e024088", + "656fa8d700d62bcd2e024084", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fa0fb498d1b7e3e071d9c", + "656fafe3498d1b7e3e071da4", + "656fa76500d62bcd2e024080", + "656fa25e94b480b8a500c0e0", + "656fad8c498d1b7e3e071da0", + "656fa61e94b480b8a500c0e8", + "656fac30c6baea13cd07e10c", + "656fb21fa0dce000a2020f7c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Front_plate": [ + "656f9d5900d62bcd2e02407c", + "656fa8d700d62bcd2e024084", + "656fa99800d62bcd2e024088", + "656fae5f7c2d57afe200c0d7", + "656faf0ca0dce000a2020f77", + "656fa0fb498d1b7e3e071d9c", + "656fafe3498d1b7e3e071da4", + "656fa76500d62bcd2e024080", + "656fa25e94b480b8a500c0e0", + "656fad8c498d1b7e3e071da0", + "656fa61e94b480b8a500c0e8", + "656fb21fa0dce000a2020f7c", + "656fac30c6baea13cd07e10c", + "656fb0bd7c2d57afe200c0dc", + "656f9fa0498d1b7e3e071d98", + "656fa53d94b480b8a500c0e4", + "655746010177119f4a097ff7", + "64afdcb83efdfea28601d041" + ], + "Soft_armor_back": [ + "6575bca0dc9932aed601c5d7" + ], + "Soft_armor_front": [ + "6575bc88c6700bd6b40e8a57" + ] } } }, From a446f039c9329868ba1460c7066fbded68d18c33 Mon Sep 17 00:00:00 2001 From: Chris Adamson Date: Tue, 29 Apr 2025 11:44:25 -0500 Subject: [PATCH 7/9] location enum for fresh profiles --- Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs | 1 + Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs index 69343168..962c2094 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs @@ -186,6 +186,7 @@ public record ItemLocation } [JsonPropertyName("r")] + [JsonConverter(typeof(JsonStringEnumConverter))] public ItemRotation R { get; diff --git a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs index 5a58360d..ccd1fba7 100644 --- a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs +++ b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs @@ -59,7 +59,6 @@ public class JsonUtil new EftEnumConverter(), new EftEnumConverter(), new EftEnumConverter(), - new EftEnumConverter(), new EftListEnumConverter(), new EftListEnumConverter(), From feb031bd8b7b5be8f26e8cac98973c9d78686e84 Mon Sep 17 00:00:00 2001 From: Chomp Date: Tue, 29 Apr 2025 17:59:03 +0100 Subject: [PATCH 8/9] Updated core config --- Libraries/SPTarkov.Server.Assets/Assets/configs/core.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Assets/Assets/configs/core.json b/Libraries/SPTarkov.Server.Assets/Assets/configs/core.json index d6fc93ce..e9c78216 100644 --- a/Libraries/SPTarkov.Server.Assets/Assets/configs/core.json +++ b/Libraries/SPTarkov.Server.Assets/Assets/configs/core.json @@ -1,7 +1,7 @@ { "sptVersion": "4.0.0", "projectName": "SPT", - "compatibleTarkovVersion": "0.16.0.36217", + "compatibleTarkovVersion": "0.16.0.36625", "serverName": "SPT Server", "profileSaveIntervalSeconds": 15, "sptFriendNickname": "SPT", From 9fb8b62630d72cc85a1c3f9554ae1c3bbe48e7dd Mon Sep 17 00:00:00 2001 From: Chris Adamson Date: Tue, 29 Apr 2025 12:45:36 -0500 Subject: [PATCH 9/9] remove logs --- Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index 1a164b11..64063bc1 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -845,7 +845,6 @@ public class InventoryHelper( ItemLocation? itemLocation; if (item.Location is JsonElement) { - Console.WriteLine(item.Location); itemLocation = ((JsonElement) item.Location).ToObject(); } else