diff --git a/.gitignore b/.gitignore index 746a776..d21dd9c 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,12 @@ !user/ !user/mods/ -!user/mods/** \ No newline at end of file +!user/mods/** + +# user/mods/DanW-LateToTheParty/src/**.js +# user/mods/AlgorithmicLevelProgression/src/*/*.js +# user/mods/AlgorithmicLevelProgression/src/*/*.js.map +# user/mods/DanW-SPTQuestingBots/src/**.js +# user/mods/DewardianDev-MOAR/src/**/*.js +# user/mods/fika-server/src/*/*.js +# user/mods/zSolarint-SAIN-ServerMod/src/*.js diff --git a/BepInEx/config/BepInEx.cfg b/BepInEx/config/BepInEx.cfg index 98ee2fa..388f654 100644 --- a/BepInEx/config/BepInEx.cfg +++ b/BepInEx/config/BepInEx.cfg @@ -8,6 +8,12 @@ EnableAssemblyCache = true [Chainloader] +## If enabled, hides BepInEx Manager GameObject from Unity. +## This can fix loading issues in some games that attempt to prevent BepInEx from being loaded. +## Use this only if you know what this option means, as it can affect functionality of some older plugins. +## +# Setting type: Boolean +# Default value: false HideManagerGameObject = false [Harmony.Logger] @@ -22,8 +28,16 @@ LogChannels = Warn, Error [Logging] +## Enables showing unity log messages in the BepInEx logging system. +# Setting type: Boolean +# Default value: true UnityLogListening = true +## If enabled, writes Standard Output messages to Unity log +## NOTE: By default, Unity does so automatically. Only use this option if no console messages are visible in Unity log +## +# Setting type: Boolean +# Default value: false LogConsoleToUnityLog = false [Logging.Console] @@ -62,12 +76,26 @@ LogLevels = Fatal, Error, Warning, Message, Info [Logging.Disk] +## Include unity log messages in log file output. +# Setting type: Boolean +# Default value: false WriteUnityLog = false +## Appends to the log file instead of overwriting, on game startup. +# Setting type: Boolean +# Default value: false AppendLog = false +## Enables writing log messages to disk. +# Setting type: Boolean +# Default value: true Enabled = true +## Which log leves are saved to the disk log output. +# Setting type: LogLevel +# Default value: Fatal, Error, Warning, Message, Info +# Acceptable values: None, Fatal, Error, Warning, Message, Info, Debug, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) LogLevels = Fatal, Error, Warning, Message, Info [Preloader] diff --git a/BepInEx/config/MOAR.settings.cfg b/BepInEx/config/MOAR.settings.cfg new file mode 100644 index 0000000..a9ea003 --- /dev/null +++ b/BepInEx/config/MOAR.settings.cfg @@ -0,0 +1,273 @@ +## Settings file was created by plugin MOAR v3.1.2 +## Plugin GUID: MOAR.settings + +[1. Main Settings] + +## Enabling this feature makes it so that AI PMCs from the same faction will not engage in combat with one another. You know, like actual military contractors. (This is client side only) +# Setting type: Boolean +# Default value: false +Faction Based Aggression On/Off = false + +## This turns off the new cascading spawn system, and makes scavs/pmcs spawn at random across the map. +# Setting type: Boolean +# Default value: false +randomSpawns On/Off = false + +## Improves performance: Ensures spawn spacing between waves. (doesn't change quantity, or change overall timing, just prevents bursts of spawns close together) +# Setting type: Boolean +# Default value: true +spawnSmoothing On/Off = true + +## Performance Hit: Causes all PMCs to spawn in the first few minutes of the game (performance intensive) +# Setting type: Boolean +# Default value: false +Starting PMCS On/Off = false + +## Works with SAIN or SPT to decide the bot's 'difficulty' preset (EASY: 0, easy-MEDIUM: 0.4, easy-MEDIUM-hard: 0.6, medium-hard: 0.85, HARD-impossible: 1, etc..) +# Setting type: Double +# Default value: 0.6 +# Acceptable value range: From 0 to 1.5 +Pmc difficulty = 0.6 + +## Works with SAIN or SPT to decide the bot's 'difficulty' preset (EASY: 0, easy-MEDIUM: 0.4, easy-MEDIUM-hard: 0.6, medium-hard: 0.85, HARD-impossible: 1, etc..) +# Setting type: Double +# Default value: 0.4 +# Acceptable value range: From 0 to 1.5 +Scav difficulty = 0.4 + +## Preset to be used, random pulls a random weighted preset from the PresetWeights.json every time a raid ends +# Setting type: String +# Default value: Random +# Acceptable values: Live Like, Quiet Raids, More Scavs, More Pmcs, More Scavs And Pmcs, Delayed Scavs, Delayed Pmcs, Arrived Early, Rogue Invasion, Raider Invasion, Insanity, Minor Boss Invasion, Less Pmcs Less Scavs Boss Invasion, Low Pmcs Low Scavs Major Boss Invasion, Main Boss Guaranteed, Main Boss Guaranteed Roaming, Sniper Buddies, Random, Custom +Moar Preset = Random + +## Enable/Disable preset announce preset on raid start +# Setting type: Boolean +# Default value: true +Preset Announce On/Off = true + +## Announces preset +# Setting type: KeyboardShortcut +# Default value: End +Announce Key = End + +## Pulls all server settings from server +# Setting type: String +# Default value: +FIKA DETECTED: ALWAYS PRESS THIS FIRST BEFORE MAKING CHANGES!! = + +[2. Custom game Settings] + +## Pushes settings to server +# Setting type: String +# Default value: +Save the above changes = + +## Resets all settings to defaults +# Setting type: String +# Default value: +Reset = + +## Makes it so invading bosses do not spawn all at the beginning (recommend for performance) +# Setting type: Boolean +# Default value: true +gradualBossInvasion On/Off = true + +## Percentage chance of each invading boss spawning. +# Setting type: Int32 +# Default value: 5 +# Acceptable value range: From 0 to 100 +bossInvasionSpawnChance = 5 + +## Allows the main bosses (not knight,rogues,raiders) to invade other maps with a reduced retinue, by default they will spawn in native boss locations +# Setting type: Boolean +# Default value: false +bossInvasion On/Off = false + +## Increases the spawn chance of the single 'main' boss on each map by this percentage +# Setting type: Int32 +# Default value: 0 +# Acceptable value range: From 0 to 100 +mainBossChanceBuff = 0 + +## Disables all bosses, good for debugging. +# Setting type: Boolean +# Default value: false +disableBosses On/Off = false + +## Chance of a rogue group spawning +# Setting type: Int32 +# Default value: 10 +# Acceptable value range: From 0 to 100 +randomRogueGroupChance = 10 + +## Experimental: Makes it so a randomRogueGroup can spawn anywhere +# Setting type: Boolean +# Default value: false +randomRogueGroup On/Off = false + +## Chance of a raider group spawning +# Setting type: Int32 +# Default value: 10 +# Acceptable value range: From 0 to 100 +randomRaiderGroupChance = 10 + +## Experimental: Makes it so a randomRaiderGroup can spawn anywhere +# Setting type: Boolean +# Default value: false +randomRaiderGroup On/Off = false + +## Experimental: Makes it so the main bosses can spawn anywhere +# Setting type: Boolean +# Default value: false +bossOpenZones On/Off = false + +## Sniper Max group size +# Setting type: Double +# Default value: 1 +# Acceptable value range: From 0 to 5 +sniperMaxGroupSize = 1 + +## Max scav group size +# Setting type: Int32 +# Default value: 3 +# Acceptable value range: From 0 to 10 +scavMaxGroupSize = 3 + +## Max pmc group size +# Setting type: Int32 +# Default value: 4 +# Acceptable value range: From 0 to 10 +pmcMaxGroupSize = 4 + +## Controls the chance of group vs solo spawning, max amount configured by maxGroup +# Setting type: Double +# Default value: 0.2 +# Acceptable value range: From 0 to 1 +pmcGroupChance Percentage = 0.2 + +## Controls the chance of group vs solo spawning, max amount configured by maxGroup +# Setting type: Double +# Default value: 0.2 +# Acceptable value range: From 0 to 1 +scavGroupChance Percentage = 0.2 + +## Controls the chance of group vs solo spawning, max amount configured by maxGroup +# Setting type: Double +# Default value: 0.2 +# Acceptable value range: From 0 to 1 +sniperGroupChance Percentage = 0.2 + +## Max bots permitted in any particular spawn zone, recommend not to touch this. +# Setting type: Int32 +# Default value: 7 +# Acceptable value range: From 0 to 15 +MaxBotPerZone = 7 + +## Max bots alive at one time +# Setting type: Int32 +# Default value: 28 +# Acceptable value range: From 0 to 50 +MaxBotCap = 28 + +## This controls the health of zombies +# Setting type: Double +# Default value: 1 +# Acceptable value range: From 0 to 3 +ZombieHealth = 1 + +## Multiplies wave counts seen in the server's mapConfig.json by this number +# Setting type: Double +# Default value: 1 +# Acceptable value range: From 0 to 10 +ZombieWaveQuantity = 1 + +## Determines the weighting of spawns, (0.1) waves will spawn mostly at the beginning, (1) Default: waves are spread evenly, or (1.9) spawns will appear near the end of the raid of the raid +# Setting type: Double +# Default value: 0.8 +# Acceptable value range: From 0.1 to 1.9 +ZombieWaveDistribution = 0.8 + +## Enables zombies to spawn +# Setting type: Boolean +# Default value: false +zombiesEnabled On/Off = false + +## Determines the weighting of spawns, (0.1) waves will spawn mostly at the beginning, (1) Default: waves are spread evenly, or (1.9) spawns will appear near the end of the raid of the raid +# Setting type: Double +# Default value: 0.6 +# Acceptable value range: From 0.1 to 1.9 +ScavWaveDistribution = 0.6 + +## Determines the weighting of spawns, (0.1) waves will spawn mostly at the beginning, (1) Default: waves are spread evenly, or (1.9) spawns will appear near the end of the raid of the raid +# Setting type: Double +# Default value: 0.3 +# Acceptable value range: From 0.1 to 1.9 +PmcWaveDistribution = 0.3 + +## Multiplies wave counts seen in the server's mapConfig.json by this number +# Setting type: Double +# Default value: 1 +# Acceptable value range: From 0 to 10 +ScavWaveQuantity = 1 + +## Multiplies wave counts seen in the server's mapConfig.json by this number +# Setting type: Double +# Default value: 1 +# Acceptable value range: From 0 to 10 +PmcWaveQuantity = 1 + +[3.Debug] + +## This is for debugging server output, leave off if you don't know what you're doing +# Setting type: Boolean +# Default value: false +debug On/Off = false + +[4. Advanced] + +## Hotkey to delete the nearest sniper spawn +# Setting type: KeyboardShortcut +# Default value: +Delete a sniper spawn = + +## Hotkey to delete the nearest player starting spawn +# Setting type: KeyboardShortcut +# Default value: +Delete a player spawn = + +## Hotkey to delete the nearest pmc spawn +# Setting type: KeyboardShortcut +# Default value: +Delete a pmc spawn = + +## Hotkey to delete the nearest scav spawn +# Setting type: KeyboardShortcut +# Default value: +Delete a scav spawn = + +## Hotkey to add a sniper spawn +# Setting type: KeyboardShortcut +# Default value: +Add a sniper spawn = + +## Hotkey to add a player starting spawn +# Setting type: KeyboardShortcut +# Default value: +Add a player spawn = + +## Hotkey to add a pmc spawn +# Setting type: KeyboardShortcut +# Default value: +Add a pmc spawn = + +## Hotkey to add a scav spawn +# Setting type: KeyboardShortcut +# Default value: +Add a scav spawn = + +## Dev value - Turn on and off pointOverlay dev tool (Requires restart) +# Setting type: Boolean +# Default value: false +Spawnpoint overlay On/Off = false + diff --git a/BepInEx/config/com.DanW.QuestingBots.cfg b/BepInEx/config/com.DanW.QuestingBots.cfg new file mode 100644 index 0000000..bb94ea3 --- /dev/null +++ b/BepInEx/config/com.DanW.QuestingBots.cfg @@ -0,0 +1,209 @@ +## Settings file was created by plugin DanW-QuestingBots v0.10.2 +## Plugin GUID: com.DanW.QuestingBots + +[AI Limiter] + +## Improve FPS by minimizing CPU load for AI out of certain ranges +# Setting type: Boolean +# Default value: false +Enable AI Limiting = false + +## Allow AI to be disabled for bots that are questing +# Setting type: Boolean +# Default value: true +Enable AI Limiting for Bots That Are Questing = true + +## Only allow AI to be disabled for bots that are questing on the selected maps +# Setting type: TarkovMaps +# Default value: Streets +# Acceptable values: Customs, Factory, Interchange, Labs, Lighthouse, Reserve, Shoreline, Streets, Woods, GroundZero, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Maps to Allow AI Limiting for Bots That Are Questing = Streets + +## These bot types will never be disabled by the AI limiter +# Setting type: BotTypeException +# Default value: SniperScavs, Rogues +# Acceptable values: SniperScavs, Rogues, Raiders, BossesAndFollowers, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Bot Types that Cannot be Disabled = SniperScavs, Rogues + +## AI will only be disabled if there are at least this number of bots on the map +# Setting type: Int32 +# Default value: 15 +# Acceptable value range: From 1 to 30 +Min Bots to Enable AI Limiting = 15 + +## AI will only be disabled if it's more than this distance from other questing bots (typically PMC's and player Scavs) +# Setting type: Int32 +# Default value: 75 +# Acceptable value range: From 25 to 1000 +Distance from Bots That Are Questing (m) = 75 + +## AI will only be disabled if it's more than this distance from a human player. This takes priority over the map-specific advanced settings. +# Setting type: Int32 +# Default value: 200 +# Acceptable value range: From 50 to 1000 +Distance from Human Players (m) = 200 + +## AI will only be disabled if it's more than this distance from a human player on Customs +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Customs (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Factory +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Factory (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Interchange +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Interchange (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Labs +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Labs (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Lighthouse +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Lighthouse (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Reserve +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Reserve (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Shoreline +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Shoreline (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Streets +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Streets (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on Woods +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on Woods (m) = 1000 + +## AI will only be disabled if it's more than this distance from a human player on GroundZero +# Setting type: Int32 +# Default value: 1000 +# Acceptable value range: From 50 to 1000 +Distance from Human Players on GroundZero (m) = 1000 + +[Custom Quest Locations] + +## Allow custom quest locations to be saved +# Setting type: Boolean +# Default value: false +Enable Quest Location Saving = false + +## Display your current (x,y,z) coordinates on the screen +# Setting type: Boolean +# Default value: false +Display Current Location = false + +## Name of the next quest location that will be stored +# Setting type: String +# Default value: Custom Quest Location +Quest Location Name = Custom Quest Location + +## Store your current location as a quest location +# Setting type: KeyboardShortcut +# Default value: KeypadEnter +Store New Quest Location = KeypadEnter + +[Debug] + +## Show information about what each bot is doing +# Setting type: QuestingBotType +# Default value: 0 +# Acceptable values: QuestingLeaders, QuestingFollowers, AllQuestingBots, NonQuestingBots, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Show Bot Info Overlays = 0 + +## Create markers for Bot Path Overlay Types that bots of each selected type are following +# Setting type: QuestingBotType +# Default value: 0 +# Acceptable values: QuestingLeaders, QuestingFollowers, AllQuestingBots, NonQuestingBots, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Show Bot Path Overlays = 0 + +## Draw the path that bots of each selected type are following +# Setting type: QuestingBotType +# Default value: 0 +# Acceptable values: QuestingLeaders, QuestingFollowers, AllQuestingBots, NonQuestingBots, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Show Bot Path Visualizations = 0 + +## The types of positions that will be shown for each bot that has path overlays enabled +# Setting type: BotPathOverlayType +# Default value: QuestTarget +# Acceptable values: QuestTarget, EFTTarget, EFTCurrentCorner, AllEFT, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Bot Path Overlay Types = QuestTarget + +## Show information about every nearby quest objective location +# Setting type: Boolean +# Default value: false +Show Quest Info Overlays = false + +## Include quest markers and information for spawn-search quests like 'Spawn Point Wander' and 'Boss Hunter' quests +# Setting type: Boolean +# Default value: false +Show Quest Info for Spawn-Search Quests = false + +## Quest markers and info overlays will only be shown if the objective location is within this distance from you +# Setting type: Int32 +# Default value: 100 +# Acceptable value range: From 10 to 300 +Max Distance (m) to Show Quest Info = 100 + +## Font Size for Quest Overlays +# Setting type: Int32 +# Default value: 16 +# Acceptable value range: From 12 to 36 +Font Size for Quest Info = 16 + +## Show debug info only for bots listed e.g 2,4 +# Setting type: String +# Default value: +Bot Filter = + +[Main] + +## Allow bots to quest +# Setting type: Boolean +# Default value: true +Enable Questing = true + +## Show additional debug messages to troubleshoot spawning issues +# Setting type: Boolean +# Default value: false +Show Debug Messages for Spawning = false + +## Allow bots to sprint while questing. This does not affect their ability to sprint when they're not questing. +# Setting type: Boolean +# Default value: true +Allow Bots to Sprint while Questing = true + +## Bots will not be allowed to sprint if they are within this distance from their objective +# Setting type: Int32 +# Default value: 3 +# Acceptable value range: From 0 to 75 +Sprinting Distance Limit from Objectives (m) = 3 + diff --git a/BepInEx/config/com.fika.core.cfg b/BepInEx/config/com.fika.core.cfg index 6c579e9..86a4c0a 100644 --- a/BepInEx/config/com.fika.core.cfg +++ b/BepInEx/config/com.fika.core.cfg @@ -307,7 +307,7 @@ Force IP = ## Forces the server when hosting to use this local adapter when starting the server. Useful if you are hosting on a VPN. # Setting type: String # Default value: 0.0.0.0 -# Acceptable values: Disabled, 0.0.0.0, 23.137.105.10 +# Acceptable values: Disabled, 0.0.0.0, 100.91.145.41, 172.31.160.1, 192.168.1.134, 192.168.81.1, 192.168.5.1 Force Bind IP = 0.0.0.0 ## Port to use for UDP gameplay packets. diff --git a/BepInEx/config/me.skwizzy.lootingbots.cfg b/BepInEx/config/me.skwizzy.lootingbots.cfg new file mode 100644 index 0000000..e6a463a --- /dev/null +++ b/BepInEx/config/me.skwizzy.lootingbots.cfg @@ -0,0 +1,191 @@ +## Settings file was created by plugin LootingBots v1.5.2 +## Plugin GUID: me.skwizzy.lootingbots + +[Loot Finder] + +## Enables corpse looting for the selected bot types +# Setting type: BotType +# Default value: Scav, Pmc, PlayerScav, Raider +# Acceptable values: Scav, Pmc, PlayerScav, Raider, Cultist, Boss, Follower, Bloodhound, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Enable corpse looting = Scav, Pmc, PlayerScav, Raider + +## When scanning for loot, corpses will be ignored if they are not visible by the bot +# Setting type: Boolean +# Default value: false +Enable corpse line of sight check = false + +## Distance (in meters) a bot is able to detect a corpse +# Setting type: Single +# Default value: 80 +Detect corpse distance = 80 + +## Enables container looting for the selected bot types +# Setting type: BotType +# Default value: Scav, Pmc, PlayerScav, Raider +# Acceptable values: Scav, Pmc, PlayerScav, Raider, Cultist, Boss, Follower, Bloodhound, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Enable container looting = Scav, Pmc, PlayerScav, Raider + +## When scanning for loot, containers will be ignored if they are not visible by the bot +# Setting type: Boolean +# Default value: false +Enable container line of sight check = false + +## Distance (in meters) a bot is able to detect a container +# Setting type: Single +# Default value: 80 +Detect container distance = 80 + +## Enables loose item looting for the selected bot types +# Setting type: BotType +# Default value: Scav, Pmc, PlayerScav, Raider +# Acceptable values: Scav, Pmc, PlayerScav, Raider, Cultist, Boss, Follower, Bloodhound, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Enable loose item looting = Scav, Pmc, PlayerScav, Raider + +## When scanning for loot, loose items will be ignored if they are not visible by the bot +# Setting type: Boolean +# Default value: false +Enable item line of sight check = false + +## Distance (in meters) a bot is able to detect an item +# Setting type: Single +# Default value: 80 +Detect item distance = 80 + +## Enable different levels of log messages to show in the logs +# Setting type: LogLevel +# Default value: Error +# Acceptable values: None, Error, Warning, Info, Debug, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Debug: Log Levels = Error + +## Enable different levels of log messages specific to the mod interop methods +# Setting type: LogLevel +# Default value: Error +# Acceptable values: None, Error, Warning, Info, Debug, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Debug: Interop Log Levels = Error + +## Filters new log entries only showing logs for the number of the bot specified. A value of 0 denotes no filter +# Setting type: Int32 +# Default value: 0 +Debug: Filter logs on bot = 0 + +## Renders shperes where bots are trying to navigate when container looting. (Red): Container position. (Black): 'Optimized' container position. (Green): Calculated bot destination. (Blue): NavMesh corrected destination (where the bot will move). +# Setting type: Boolean +# Default value: false +Debug: Show navigation points = false + +[Loot Finder (Timing)] + +## Amount of seconds a bot will wait to start their first loot scan after spawning into raid. +# Setting type: Single +# Default value: 6 +Delay after spawn = 6 + +## The amount of seconds the bot will wait until triggering another loot scan +# Setting type: Single +# Default value: 10 +Loot scan interval = 10 + +## Amount of milliseconds a bot will wait after taking an item into their inventory before attempting to loot another item. Simulates the amount of time it takes for a player to look through loot decide to take something. +# Setting type: Int32 +# Default value: 500 +Delay after taking item (ms) = 500 + +## Adds a delay before looting an item to simulate the time it takes for a bot to "uncover (examine)" an item when searching containers, items and corpses. The delay is calculated using the ExamineTime of an object and the AttentionExamineTime of the bot. +# Setting type: Boolean +# Default value: true +Enable examine time = true + +[Loot Settings] + +## When enabled, bots will always try to close a container after they have finished looting. If the bot is inturrupted while looting, the container may remain open. +# Setting type: Boolean +# Default value: true +Bots always close containers = true + +## Bots will query more accurate ragfair prices to do item value checks. Will make a query to get ragfair prices when the client is first started +# Setting type: Boolean +# Default value: false +Use flea market prices = false + +## Calculate weapon value by looking up each attachement. More accurate than just looking at the base weapon template but a slightly more expensive check +# Setting type: Boolean +# Default value: true +Calculate weapon value from attachments = true + +## Allows bots to take the attachments off of a weapon if they are not able to pick the weapon up into their inventory +# Setting type: Boolean +# Default value: true +Allow weapon attachment stripping = true + +## PMC bots will only loot items that exceed the specified value in roubles. When set to 0, bots will ignore the minimum value threshold +# Setting type: Single +# Default value: 12000 +PMC: Min loot value threshold = 12000 + +## PMC bots will NOT loot items that exceed the specified value in roubles. When set to 0, bots will ignore the maximum value threshold +# Setting type: Single +# Default value: 0 +PMC: Max loot value threshold = 0 + +## The equipment a PMC bot is able to equip during raid +# Setting type: CanEquipEquipmentType +# Default value: All +# Acceptable values: Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +PMC: Allowed gear to equip = All + +## The equipment a PMC bot is able to place in their backpack/rig +# Setting type: EquipmentType +# Default value: Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, Dogtag +# Acceptable values: Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, Dogtag, ArmorPlate, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +PMC: Allowed gear in bags = Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, Dogtag + +## All non-PMC bots will only loot items that exceed the specified value in roubles. When set to 0, bots will ignore the minimum value threshold +# Setting type: Single +# Default value: 5000 +Scav: Min loot value threshold = 5000 + +## All non-PMC bots will NOT loot items that exceed the specified value in roubles. When set to 0, bots will ignore the maximum value threshold +# Setting type: Single +# Default value: 0 +Scav: Max loot value threshold = 0 + +## The equipment a non-PMC bot is able to equip during raid +# Setting type: CanEquipEquipmentType +# Default value: All +# Acceptable values: Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Scav: Allowed gear to equip = All + +## The equipment a non-PMC bot is able to place in their backpack/rig +# Setting type: EquipmentType +# Default value: Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, Dogtag +# Acceptable values: Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, Dogtag, ArmorPlate, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Scav: Allowed gear in bags = Backpack, TacticalRig, ArmoredRig, ArmorVest, Weapon, Grenade, Helmet, Dogtag + +## Enables logs for the item apprasier that calcualtes the weapon values +# Setting type: LogLevel +# Default value: Error +# Acceptable values: None, Error, Warning, Info, Debug, All +# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning) +Debug: Item Appraiser Log Levels = Error + +[Performance] + +## Limits the amount of bots that are able to simultaneously run looting logic. A value of 0 represents no limit +# Setting type: Int32 +# Default value: 20 +Maximum looting bots = 20 + +## Any bot farther than the specified distance in meters will not run any looting logic. A value of 0 represents no limit +# Setting type: Int32 +# Default value: 0 +Limit looting by distance to player = 0 + diff --git a/BepInEx/config/me.sol.sain.cfg b/BepInEx/config/me.sol.sain.cfg new file mode 100644 index 0000000..e19c1ab --- /dev/null +++ b/BepInEx/config/me.sol.sain.cfg @@ -0,0 +1,15 @@ +## Settings file was created by plugin SAIN v4.0.3 +## Plugin GUID: me.sol.sain + +[SAIN Editor] + +## Opens the Editor on press +# Setting type: Boolean +# Default value: false +Open Editor = false + +## The keyboard shortcut that toggles editor +# Setting type: KeyboardShortcut +# Default value: F6 +Open Editor Shortcut = F6 + diff --git a/BepInEx/config/xyz.drakia.waypoints.cfg b/BepInEx/config/xyz.drakia.waypoints.cfg new file mode 100644 index 0000000..30fd6ba --- /dev/null +++ b/BepInEx/config/xyz.drakia.waypoints.cfg @@ -0,0 +1,35 @@ +## Settings file was created by plugin DrakiaXYZ-Waypoints v1.7.1 +## Plugin GUID: xyz.drakia.waypoints + +[Debug] + +## Whether to draw debug objects in-world +# Setting type: Boolean +# Default value: false +Debug = false + +## Whether to show the navigation mesh +# Setting type: Boolean +# Default value: false +ShowNavMesh = false + +## The amount to offset the nav mesh so it's more visible over the terrain +# Setting type: Single +# Default value: 0.02 +# Acceptable value range: From 0 to 2 +NavMeshOffset = 0.02 + +[Export (Requires Debug)] + +## Whether to export the nav mesh on map load +# Setting type: Boolean +# Default value: false +ExportNavMesh = false + +[General] + +## Whether to use custom nav meshes when available +# Setting type: Boolean +# Default value: true +EnableCustomNavmesh = true + diff --git a/BepInEx/plugins/SAIN/NicknamePersonalities.json b/BepInEx/plugins/SAIN/NicknamePersonalities.json new file mode 100644 index 0000000..90ddab4 --- /dev/null +++ b/BepInEx/plugins/SAIN/NicknamePersonalities.json @@ -0,0 +1,14 @@ +{ + "Description": "Names are not case sensitive. Any bot nick name that contains one of the entries here will be forced to use the matching personality.", + "NicknamePersonalityMatches": { + "steve": "Wreckless", + "solarint": "GigaChad", + "lvndmark": "SnappingTurtle", + "chomp": "Chad", + "senko": "Chad", + "kaeno": "Timmy", + "justnu": "Timmy", + "ratthew": "Rat", + "choccy": "Rat" + } +} \ No newline at end of file diff --git a/BepInEx/plugins/SAIN/Presets/ConfigSettings.json b/BepInEx/plugins/SAIN/Presets/ConfigSettings.json new file mode 100644 index 0000000..a55fde9 --- /dev/null +++ b/BepInEx/plugins/SAIN/Presets/ConfigSettings.json @@ -0,0 +1,15 @@ +{ + "AdvancedBotConfigs": false, + "DevBotConfigs": false, + "SelectedDefaultPreset": "hard", + "SelectedCustomPreset": "", + "DefaultPreset": "3. Default", + "ConfigScaling": 1.0, + "SliderToggle": true, + "ConfigEntryHeight": 20.0, + "ConfigSliderWidth": 0.59, + "ConfigResultsWidth": 0.045, + "ConfigResetWidth": 0.024, + "SubList_Indent_Vertical": 2.0, + "SubList_Indent_Horizontal": 25.0 +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js b/user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js new file mode 100644 index 0000000..5401363 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js @@ -0,0 +1,211 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = { + Scabbard: [ + "54491bb74bdc2d09088b4567", + "57cd379a24597778e7682ecf", + "57e26ea924597715ca604a09", + "57e26fc7245977162a14b800", + "5bc9c1e2d4351e00367fbcf0", + "5c010e350db83400232feec7", + "5c07df7f0db834001b73588a", + "5fc64ea372b0dd78d51159dc", + "601948682627df266209af05", + "63495c500c297e20065a08b1", + ], + Backpack: [ + "56e335e4d2720b6c058b456d", + "56e33634d2720bd8058b456b", + "59e763f286f7742ee57895da", + "5e997f0b86f7741ac73993e2", + "5f5e45cc5021ce62144be7aa", + "6034d103ca006d2dca39b3f0", + "61b9e1aaef9a1b5d6a79899a", + "628bc7fb408e2b2e9c0801b1", + "628e1ffc83ec92260c0f437f", + ], + Headwear: [ + "572b7d8524597762b472f9d1", + "572b7fa124597762b472f9d2", + "59e7708286f7742cbd762753", + "59e770f986f7742cbe3164ef", + "59ef13ca86f77445fd0e2483", + "5a43943586f77416ad2f06e2", + "5a43957686f7742a2c2f11b0", + "5aa2b89be5b5b0001569311f", + "5aa2b8d7e5b5b00014028f4a", + "5aa7e276e5b5b000171d0647", + "5ab8f20c86f7745cdb629fb2", + "5b4329075acfc400153b78ff", + "5bd073c986f7747f627e796c", + "5c08f87c0db8340019124324", + "5c0d2727d174af02a012cf58", + "5c0e874186f7745dc7616606", + "5ca20ee186f774799474abc2", + "5d96141523f0ea1b7f2aacab", + "5df8a58286f77412631087ed", + "5e4bfc1586f774264f7582d3", + "5ea05cf85ad9772e6624305d", + "5ea17ca01412a1425304d1c0", + "5f60b34a41e30a4ab12a6947", + "5f60c74e3b85f6263c145586", + "5f99418230835532b445e954", + "5f994730c91ed922dd355de3", + "603618feffd42c541047f771", + "603619720ca681766b6a0fc4", + "60361a7497633951dc245eb4", + "60361b0b5a45383c122086a1", + "60361b5a9a15b10d96792291", + "6040de02647ad86262233012", + "60a7acf20c5cb24b01346648", + "60bf74184a63fc79b60c57f6", + "618aef6d0a5a59657e5f55ee", + "61bca7cda0eae612383adf57", + "61c18db6dfd64163ea78fbb4", + "628e4dd1f477aa12234918aa", + "636270263f2495c26f00b007", + ], + FaceCover: [ + "572b7fa524597762b747ce82", + "59e7715586f7742ee5789605", + "5b4326435acfc433000ed01d", + "5b432c305acfc40019478128", + "5bd06f5d86f77427101ad47c", + "5bd0716d86f774171822ef4b", + "5bd071d786f7747e707b93a3", + "5bd073a586f7747e6f135799", + "5c1a1e3f2e221602b66cc4c2", + "5e54f76986f7740366043752", + "5e54f79686f7744022011103", + "5e71f6be86f77429f2683c44", + "5e71fad086f77422443d4604", + "5fd8d28367cb5e077335170f", + "60363c0c92ec1c31037959f5", + "607f201b3c672b3b3a24a800", + "60a7ad2a2198820d95707a2e", + "60a7ad3a0c5cb24b0134664a", + "6176a40f0b8c0312ac75a3d3", + "6176a48d732a664031271438", + "62963c18dbc8ab5f0d382d0b", + "62a09dd4621468534a797ac7", + "62a09e08de7ac81993580532", + "62a5c2c98ec41a51b34739c0", + "62a5c333ec21e50cad3b5dc6", + "62a5c41e8ec41a51b34739c3", + "62a61bbf8ec41a51b34758d2", + "635267ab3c89e2112001f826", + "63626d904aa74b8fe30ab426", + ], + Eyewear: [ + "59e770b986f7742cbd762754", + "5aa2b923e5b5b000137b7589", + "5aa2b9aee5b5b00015693121", + "5e71f70186f77429ee09f183", + "61c18d83b00456371a66814b", + "62a09e410b9d3c46de5b6e78", + ], + Holster: ["5b3b713c5acfc4330140bd8d"], + ArmorVest: [ + "5b44cf1486f77431723e3d05", + "5c0e541586f7747fa54205c9", + "5c0e625a86f7742d77340f62", + "5c0e655586f774045612eeb2", + "5fd4c474dd870108a754b241", + "6038b4b292ec1c3103795a0b", + "6038b4ca92ec1c3103795a0d", + "607f20859ee58b18e41ecd90", + "62a09d79de7ac81993580530", + ], + FirstPrimaryWeapon: [ + "6275303a9f372d6ea97f9ec7", + "5bf3e0490db83400196199af", + "5de7bd7bfd6b4e6e2276dc25", + "639af924d0446708ee62294e", + "639c3fbbd0446708ee622ee9", + "64637076203536ad5600c990", + "64ca3d3954fc657e230529cc", + ], + ammo: [ + "5c0d56a986f774449d5de529", + "5c0d591486f7744c505b416f", + "5c0d5ae286f7741e46554302", + "5d70e500a4b9364de70d38ce", + "5ede4739e0350d05467f73e8", + "5ede47405b097655935d7d16", + "5ede474b0c226a66f5402622", + "5ede475339ee016e8c534742", + "5f0c892565703e5c461894e9", + "64b8ee384b75259c590fa89b", + "5d6e68a8a4b9360b6c0d54e2", + "5efb0cabfb3e451d70735af5", + "5a26ac0ec4a28200741e1e18", + "5cc80f38e4a949001152b560", + "61962d879bb3d20b0946d385", + "5c0d688c86f77413ae3407b2", + "56dff026d2720bb8668b4567", + "5c0d5e4486f77478390952fe", + "59e690b686f7746c9f75e848", + "5fd20ff893a8961fc660a954", + "5a6086ea4f39f99cd479502f", + "560d61e84bdc2da74d8b4571", + "5cadf6eeae921500134b2799", + "5fc382a9d724d907e2077dab", + ], + TacticalVest: [ + "5c0e9f2c86f77432297fe0a3", + "5f5f41f56760b4138443b352", + "5fd4c4fa16cac650092f6771", + "5fd4c5477a8d854fa0105061", + "6040dd4ddcf9592f401632d2", + "609e860ebd219504d8507525", + "628b9784bcf6e2659e09b8a2", + "628b9c7d45122232a872358f", + "628baf0b967de16aab5a4f36", + "63611865ba5b90db0c0399d1", + "64a536392d2c4e6e970f4121", + "64a5366719bab53bd203bf33", + ], + Earpiece: [ + "5e4d34ca86f774264f758330", + "5f60cd6cf2bcbb675b00dac6", + "628e4e576d783146b124c64d", + ], + ArmBand: [ + "5f9949d869e2777a0e779ba5", + "60b0f988c4449e4cb624c1da", + "619bc61e86e01e16f839a999", + "619bdd8886e01e16f839a99c", + "619bddc6c9546643a67df6ee", + "619bddffc9546643a67df6f0", + "619bde3dc9546643a67df6f2", + "619bde7fc9546643a67df6f4", + "619bdeb986e01e16f839a99e", + "619bdef8c9546643a67df6f6", + "619bdf9cc9546643a67df6f8", + "619bdfd4c9546643a67df6fa", + ], + StimsMeds: [ + "5751a89d24597722aa0e8db0", + "5755383e24597772cb798966", + "5ed515c8d380ab312177c0fa", + "5ed515e03a40a50460332579", + "5ed515ece452db0eb56fc028", + "5ed515f6915ec335206e4152", + "5ed5160a87bb8443d10680b5", + "5ed51652f6c34d2cc26336a1", + "5ed5166ad380ab312177c100", + "5fca138c2a7b221b2852a5c6", + "5fca13ca637ee0341a484f46", + "637b60c3b7afa97bfc3d7001", + "637b612fb7afa97bfc3d7005", + "637b6179104668754b72f8f5", + "637b620db7afa97bfc3d7009", + "637b6251104668754b72f8f9", + ], + Grenades: [ + "5e340dcdcb6d5863cc5e5efb", + "617fd91e5539a84ec44ce155", + "618a431df1eb8e24b8741deb", + ], +}; +//# sourceMappingURL=Tier5.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js.map b/user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js.map new file mode 100644 index 0000000..21dac61 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "Tier5.js", + "sourceRoot": "", + "sources": [ + "Tier5.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js b/user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js new file mode 100644 index 0000000..50ee3e8 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js @@ -0,0 +1,49 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = BotLevelChanges; +const config_json_1 = require("../../config/config.json"); +const utils_1 = require("../LoadoutChanges/utils"); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const config_json_2 = __importDefault(require("../../config/config.json")); +function BotLevelChanges(container) { + const profileHelper = container.resolve("ProfileHelper"); + const botLevelGenerator = container.resolve("BotLevelGenerator"); + const configServer = container.resolve("ConfigServer"); + const pmcConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.PMC); + pmcConfig.botRelativeLevelDeltaMax = 1; + container.afterResolution("BotLevelGenerator", (_t, result) => { + result.generateBotLevel = (levelDetails, botGenerationDetails, bot) => { + if (!botGenerationDetails.isPmc) + return botLevelGenerator.generateBotLevel(levelDetails, botGenerationDetails, bot); + const { playerLevel } = botGenerationDetails; + const currentLevelRange = (0, utils_1.getCurrentLevelRange)(playerLevel); + const currentRangeArray = config_json_1.botRangeAtLevel[currentLevelRange]; + const test = currentRangeArray.map((val, k) => ({ + levelRange: k + 1, + val: Math.random() * val, + })); + const randomizedRange = test.sort((a, b) => b.val - a.val)[0] + .levelRange; + const range = { ...config_json_1.levelRange[randomizedRange] }; + if (range.max > 79) { + range.max = 79; + } + if (range.min > 70) { + range.min = 50; + } + const level = Math.round((range.max - range.min) * Math.random()) + range.min; + const final = { + level, + exp: profileHelper.getExperience(level), + }; + // debug && console.log(final) + return final; + }; + }, { frequency: "Always" }); + config_json_2.default.debug && + console.log("Algorthimic Progression: BotLevelGenerator registered"); +} +//# sourceMappingURL=BotLevelChanges.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js.map b/user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js.map new file mode 100644 index 0000000..bb6ea2b --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "BotLevelChanges.js", + "sourceRoot": "", + "sources": [ + "BotLevelChanges.ts" + ], + "names": [], + "mappings": ";;;;;AAcA,kCA+DC;AAxED,0DAAuE;AACvE,mDAA+D;AAC/D,kFAA+E;AAI/E,2EAA8C;AAG9C,SAAwB,eAAe,CACrC,SAA8B;IAE9B,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;IACxE,MAAM,iBAAiB,GACrB,SAAS,CAAC,OAAO,CAAoB,mBAAmB,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;IAEtE,SAAS,CAAC,wBAAwB,GAAG,CAAC,CAAC;IAEvC,SAAS,CAAC,eAAe,CACvB,mBAAmB,EACnB,CAAC,EAAE,EAAE,MAAyB,EAAE,EAAE;QAChC,MAAM,CAAC,gBAAgB,GAAG,CACxB,YAAoB,EACpB,oBAA2C,EAC3C,GAAa,EACc,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC,KAAK;gBAC7B,OAAO,iBAAiB,CAAC,gBAAgB,CACvC,YAAY,EACZ,oBAAoB,EACpB,GAAG,CACJ,CAAC;YAEJ,MAAM,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC;YAE7C,MAAM,iBAAiB,GAAG,IAAA,4BAAoB,EAAC,WAAW,CAAC,CAAC;YAC5D,MAAM,iBAAiB,GAAG,6BAAe,CAAC,iBAAiB,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9C,UAAU,EAAE,CAAC,GAAG,CAAC;gBACjB,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;aACzB,CAAC,CAAC,CAAC;YAEJ,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC1D,UAAU,CAAC;YACd,MAAM,KAAK,GAAG,EAAE,GAAG,wBAAU,CAAC,eAAe,CAAC,EAAY,CAAC;YAC3D,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;gBACnB,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;gBACnB,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;YACjB,CAAC;YAED,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;YAElE,MAAM,KAAK,GAAG;gBACZ,KAAK;gBACL,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;aACxC,CAAC;YAEF,8BAA8B;YAE9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC,EACD,EAAE,SAAS,EAAE,QAAQ,EAAE,CACxB,CAAC;IAEF,qBAAM,CAAC,KAAK;QACV,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;AACzE,CAAC" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js new file mode 100644 index 0000000..b07f9ba --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = ClothingChanges; +const utils_1 = require("./utils"); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const GlobalValues_1 = require("./GlobalValues"); +function ClothingChanges(container) { + const databaseServer = container.resolve("DatabaseServer"); + const tables = databaseServer.getTables(); + const configServer = container.resolve("ConfigServer"); + const botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const usecAppearance = tables.bots.types.usec.appearance; + const bearAppearance = tables.bots.types.bear.appearance; + const traders = tables.traders; + const customization = tables.templates.customization; + let allTradersSuits = Object.values(traders) + .filter(({ suits }) => !!suits?.length) + .map(({ suits }) => suits) + .flat(1); + (0, utils_1.buildClothingWeighting)(allTradersSuits, customization, botConfig, usecAppearance, bearAppearance); + GlobalValues_1.globalValues.originalBotTypes = (0, utils_1.cloneDeep)(tables.bots.types); + GlobalValues_1.globalValues.originalWeighting = (0, utils_1.cloneDeep)(botConfig.equipment.pmc); +} +//# sourceMappingURL=ClothingChanges.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js.map new file mode 100644 index 0000000..a43bb78 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "ClothingChanges.js", + "sourceRoot": "", + "sources": [ + "ClothingChanges.ts" + ], + "names": [], + "mappings": ";;AAQA,kCA4BC;AAnCD,mCAA4D;AAI5D,kFAA+E;AAC/E,iDAA8C;AAE9C,SAAwB,eAAe,CACrC,SAA8B;IAE9B,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAiB,gBAAgB,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;IAE1C,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;IAEtE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;IAErD,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;SACzC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;SACtC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,CAAC;IAEX,IAAA,8BAAsB,EACpB,eAAe,EACf,aAAa,EACb,SAAS,EACT,cAAc,EACd,cAAc,CACf,CAAC;IACF,2BAAY,CAAC,gBAAgB,GAAG,IAAA,iBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,2BAAY,CAAC,iBAAiB,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js new file mode 100644 index 0000000..f811261 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fixSpecificItemIssues = void 0; +const fixSpecificItemIssues = (inventory) => { + const removeAccentScopeList = new Set([ + "6171407e50224f204c1da3c5", // Recknagel Era-Tac 30mm ring scope mount + "61713cc4d8e3106d9806c109", // Recknagel Era-Tac 34mm ring scope mount + "5b2389515acfc4771e1be0c0", // Burris AR-P.E.P.R. 30mm ring scope mount + "5addc00b5acfc4001669f144", // M14 Vltor CASV-14 rail system + "5a37ca54c4a282000d72296a", // JP Enterprises Flat-Top 30mm ring scope mount + "5aa66c72e5b5b00016327c93", // Nightforce Magmount 34mm ring scope mount with Ruggedized Accessory Platform + ]); + removeAccentScopeList.forEach((id) => { + if (inventory.mods?.[id]?.mod_scope_001) { + inventory.mods[id].mod_scope_001 = []; + } + if (inventory.mods?.[id]?.mod_scope_002) { + inventory.mods[id].mod_scope_002 = []; + } + if (inventory.mods?.[id]?.mod_scope_003) { + inventory.mods[id].mod_scope_003 = []; + } + }); +}; +exports.fixSpecificItemIssues = fixSpecificItemIssues; +//# sourceMappingURL=FixSpecificScopeIssues.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js.map new file mode 100644 index 0000000..1f62874 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "FixSpecificScopeIssues.js", + "sourceRoot": "", + "sources": [ + "FixSpecificScopeIssues.ts" + ], + "names": [], + "mappings": ";;;AAEO,MAAM,qBAAqB,GAAG,CAAC,SAAqB,EAAE,EAAE;IAC7D,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;QACpC,0BAA0B,EAAE,0CAA0C;QACtE,0BAA0B,EAAE,0CAA0C;QACtE,0BAA0B,EAAE,2CAA2C;QACvE,0BAA0B,EAAE,gCAAgC;QAC5D,0BAA0B,EAAE,gDAAgD;QAC5E,0BAA0B,EAAE,+EAA+E;KAC5G,CAAC,CAAC;IAEH,qBAAqB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACnC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,GAAG,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,GAAG,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,GAAG,EAAE,CAAC;QACxC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AArBW,QAAA,qBAAqB,yBAqBhC" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js new file mode 100644 index 0000000..68e7292 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js @@ -0,0 +1,143 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.globalValues = void 0; +const utils_1 = require("./utils"); +const config_json_1 = __importDefault(require("../../config/config.json")); +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const OnGameStartUtils_1 = require("./OnGameStartUtils"); +const NonPmcUtils_1 = require("../NonPmcBotChanges/NonPmcUtils"); +class globalValues { + static Logger; + static profileHelper; + static storedEquipmentValues = {}; + static tables; + static originalBotTypes; + static config = config_json_1.default; + static advancedConfig = advancedConfig_json_1.default; + static originalWeighting; + static configServer; + static updateInventory(currentLevel, location) { + const items = this.tables.templates.items; + const nameList = Object.keys(this.storedEquipmentValues); + if (!nameList.length || !currentLevel) + return; + const botConfig = this.configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const firstPrimaryWeaponMultiplier = advancedConfig_json_1.default.locations[location].weightingAdjustments + .FirstPrimaryWeapon; + nameList.forEach((botName) => { + const copiedInventory = (0, utils_1.cloneDeep)(this.originalBotTypes[botName].inventory); + const currentLevelIndex = this.storedEquipmentValues[botName].findIndex(({ levelRange: { min, max } }) => currentLevel <= max && currentLevel >= min); + const weightingToUpdate = this.storedEquipmentValues[botName][currentLevelIndex]; + if (!weightingToUpdate) + return; + if (weightingToUpdate?.ammo) { + for (const caliber in weightingToUpdate.ammo) { + copiedInventory.Ammo[caliber] = { + ...copiedInventory.Ammo[caliber], + ...weightingToUpdate.ammo[caliber], + }; + } + } + if (weightingToUpdate?.equipment) { + for (const equipmentType in weightingToUpdate.equipment) { + copiedInventory.equipment[equipmentType] = { + ...copiedInventory.equipment[equipmentType], + ...weightingToUpdate.equipment[equipmentType], + }; + try { + //update weapon type weightings per map here + if (equipmentType === "FirstPrimaryWeapon" && + botName !== "marksman") { + // console.log("Updating", botName, " weapons for map", location); + const firstPrimary = (0, utils_1.cloneDeep)(copiedInventory.equipment[equipmentType]); + const firstPrimaryKeys = Object.keys(firstPrimary); + firstPrimaryKeys?.forEach((weaponId) => { + const parentId = items[weaponId]?._parent; + const parent = items?.[parentId]?._name; + if (parent && firstPrimaryWeaponMultiplier[parent]) { + const multiplier = (firstPrimaryWeaponMultiplier[parent] - 1) / 2 + 1; + copiedInventory.equipment[equipmentType][weaponId] = + Math.round(multiplier * firstPrimary[weaponId]); + // if (botName === "assault") { + // console.log( + // multiplier, + // location, + // botName, + // firstPrimary[weaponId], + // " to ", + // copiedInventory.equipment[equipmentType][weaponId], + // parent, + // items[weaponId]._name + // ); + // } + } + else { + console.log(`[AlgorithmicLevelProgression]: Unable to set map settings for bot ${botName}'s item ${items[weaponId]._name} - ${weaponId} `); + } + }); + } + } + catch (error) { + `[AlgorithmicLevelProgression]: Failed to update bot ${botName}'s ${equipmentType}`; + } + } + if (botName === "assault") { + //adjust randomization + (0, NonPmcUtils_1.buffScavGearAsLevel)(botConfig.equipment[botName], currentLevelIndex); + } + (0, NonPmcUtils_1.setPlateWeightings)(botName, botConfig.equipment[botName], currentLevelIndex); + // if (botName === "assault") { + // saveToFile(this.tables.bots.types[botName], `refDBS/assault.json`); + // } + } + this.tables.bots.types[botName].inventory = copiedInventory; + }); + } + static setValuesForLocation(location, hours) { + if (location === "factory4_day") + hours = 12; + if (location === "factory4_night") + hours = 1; + if (location === "laboratory") + hours = 12; + this.config.debug && + this.Logger.info(`Algorthimic LevelProgression: Setting up values for map ${location}`); + const botConfig = this.configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const mapWeightings = advancedConfig_json_1.default.locations?.[location]?.weightingAdjustments; + const items = this.tables.templates.items; + if (!mapWeightings) { + return this.Logger.warning(`Algorthimic LevelProgression: did not recognize 'location': ${location}, using defaults`); + } + if (!this.originalWeighting) { + return this.Logger.error(`Algorthimic LevelProgression: 'originalWeighting' was not set correctly`); + } + if (!items) { + return this.Logger.error(`Algorthimic LevelProgression: 'items' was not set correctly`); + } + const finalEquipment = (0, utils_1.cloneDeep)(this.originalWeighting); + const isNight = hours < 7 || hours >= 19; + config_json_1.default.debug && + console.log("The server thinks it is ", isNight ? "NIGHT" : "DAY", hours, " do appropriate things."); + const randomisation = finalEquipment.randomisation; + (0, OnGameStartUtils_1.makeRandomisationAdjustments)(isNight, this.originalWeighting, randomisation, location); + const originalBotTypesCopy = (0, utils_1.cloneDeep)(this.originalBotTypes); + (0, OnGameStartUtils_1.cullModItems)(originalBotTypesCopy.usec.inventory.mods, isNight, items, location); + (0, OnGameStartUtils_1.updateScopes)(originalBotTypesCopy.usec.inventory.mods, isNight, items, location); + originalBotTypesCopy.bear.inventory.mods = + originalBotTypesCopy.usec.inventory.mods; + const pmcWeighting = finalEquipment.weightingAdjustmentsByBotLevel; + (0, OnGameStartUtils_1.makeMapSpecificWeaponWeightings)(location, items, this.originalWeighting, pmcWeighting); + // saveToFile(originalBotTypesCopy.usec.inventory.mods, "updated.json") + // saveToFile(originalBotTypesCopy.usec.inventory, "refDBS/usecInventoryRef.json") + // saveToFile(finalEquipment, "finalEquipment.json"); + // saveToFile(this.originalWeighting, "originalWeighting.json") + botConfig.equipment.pmc = finalEquipment; + this.tables.bots.types = originalBotTypesCopy; + } +} +exports.globalValues = globalValues; +//# sourceMappingURL=GlobalValues.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js.map new file mode 100644 index 0000000..4c6bf9a --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "GlobalValues.js", + "sourceRoot": "", + "sources": [ + "GlobalValues.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js new file mode 100644 index 0000000..7537300 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js @@ -0,0 +1,270 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = [ + "544a3f024bdc2d1d388b4568", //ELCAN Specter OS4x assault scope + /// + "5af99e9186f7747c447120b8", // Bad pockets + "60c7272c204bc17802313365", + "627a4e6b255f7527fb05a0f6", + "64cbd95a29b9b4283e216ff5", + /// + "622b4f54dc8dcc0ba8742f85", //HK G36 Hensoldt HKV ZF 1.5x carry handle + "622b4d7df9cfc87d675d2ded", //HK G36 Hensoldt HKV 3x carry handle + // armasight vulcan universal base + // Geissele Super Precision 30mm + "5aa66a9be5b5b0214e506e89", // Nightforce Magmount 34mm ring scope mount > stupid long scope mount + "5a1ead28fcdbcb001912fa9f", // Reap-ir Mount + "5c86592b2e2216000e69e77c", // IEA Mil-Optics KH/F 34mm one-piece magmount + "5c11046cd174af02a012e42b", // Wilcox Interface for PVS-7 > Thermal night vision connector + "5ea058e01dbce517f324b3e2", // Tac-Kek Heavy Trooper mask for Ops-Core-type helmets + "5c0558060db834001b735271", // GPNVG-18 Night Vision goggles + "5648b62b4bdc2d9d488b4585", // gp-34 + "5e99711486f7744bfc4af328", // Sanitarsmedkit + "5d52cc5ba4b9367408500062", + "6087e570b998180e9f76dc24", + "58ac60eb86f77401897560ff", // golden balaclava! + "6241c316234b593b5676b637", // bb ammo + "5cdeb229d7f00c000e7ce174", // stationary gun + "5943d9c186f7745a13413ac9", // shrapnel bullets? + "5996f6cb86f774678763a6ca", // shrapnel bullets? + "5996f6fc86f7745e585b4de3", // shrapnel bullets? + "63b35f281745dd52341e5da7", // shrapnel bullets? + "5d2f2ab648f03550091993ca", // shrapnel bullets? + "5cde8864d7f00c0010373be1", + "64b9cf0ac12b9c38db26923a", // << no idea + "627a137bf21bc425b06ab944", + "610720f290b75a49ff2e5e25", + "5996f6d686f77467977ba6cc", // shrapnel bullets? + "5ae083b25acfc4001a5fc702", // Master hand ? + "544a3d0a4bdc2d1b388b4567", + "5a16bb52fcdbcb001a3b00dc", // skull lock + "5a1eaa87fcdbcb001865f75e", // reap-ir + "5d1b5e94d7ad1a2b865a96b0", // flir + "5c066ef40db834001966a595", // helmet_armasight_nvg_googles_mask + "5a0c59791526d8dba737bba7", // butt pad + "57371aab2459775a77142f22", + //small mags + "57838f0b2459774a256959b2", + "5aaa5e60e5b5b000140293d6", + "5b1fd4e35acfc40018633c39", + "59e5d83b86f7745aed03d262", + "5b7bef1e5acfc43d82528402", + "617130016c780c1e710c9a24", + "55d4837c4bdc2d1d4e8b456c", + "5c503ac82e221602b21d6e9a", + "6241c2c2117ad530666a5108", + //large mags + // "55d485804bdc2d8c2f8b456b", shotgun 153/155 extended /7/8 + // "56deeefcd2720bc8328b4568", shotgun 153/155 extended /7/8 + // "5882163224597757561aa920", shotgun 153/155 extended /7/8 + "5a78832ec5856700155a6ca3", + "5a966f51a2750c00156aacf6", + "5cf8f3b0d7f00c00217872ef", + "625ff2eb9f5537057932257d", + "625ff3046d721f05d93bf2ee", + "625ff31daaaa8c1130599f64", + "627bce33f21bc425b06ab967", + "564ca9df4bdc2d35148b4569", + // '55d481904bdc2d8c2f8b456a', //45 round ak + "55d482194bdc2d1d4e8b456b", + "5bed625c0db834001c062946", + "55d485be4bdc2d962f8b456f", + "5cbdc23eae9215001136a407", + "5c6175362e221600133e3b94", + "5cfe8010d7ad1a59283b14c6", + "61695095d92c473c7702147a", + "61695095d92c473c7702147a", + "59c1383d86f774290a37e0ca", + "5c6592372e221600133e47d7", + "544a37c44bdc2d25388b4567", + "5a718f958dc32e00094b97e7", + "5c5db6742e2216000f1b2852", + "5a351711c4a282000b1521a4", + "5addccf45acfc400185c2989", + "5b7bef9c5acfc43d102852ec", + // "5b1fb3e15acfc4001637f068", 40 round ak + // "59e5f5a486f7746c530b3ce2", 40 round + // "544a378f4bdc2d30388b4567", 40 round + // "5d1340bdd7ad1a0e8d245aab", 40-round 556 45 + // "630e295c984633f1fb0e7c30", + // "5ba26586d4351e44f824b340", MP7 40 + "5c5db6652e221600113fba51", + "5cffa483d7ad1a049e54ef1c", + "5d52d479a4b936793d58c76b", + // stm-9 + // stocks + "5c0faeddd174af02a962601f", + "5d120a10d7ad1a4e1026ba85", + "5b0800175acfc400153aebd4", + "5947e98b86f774778f1448bc", + "5947eab886f77475961d96c5", + // "602e3f1254072b51b239f713", + "5c793fb92e221644f31bfb64", + "5c793fc42e221600114ca25d", + "591aef7986f774139d495f03", + "591af10186f774139d495f0e", + "627254cc9c563e6e442c398f", + "638de3603a1a4031d8260b8c", + "5a33ca0fc4a282000d72292f", + // Saiga-9 9x19 carbine + // stocks + "5cf50fc5d7f00c056c53f83c", //AK-74M CAA AKTS AK74 buffer tube > 25 + "5ac78eaf5acfc4001926317a", //AK-74M/AK-100 Zenit PT Lock >2 + //Full Size AK mods + // stocks + // "628a6678ccaab13006640e49", //AKM/AK-74 RD AK to M4 buffer tube adapter > 17 + "5b222d335acfc4771e1be099", //AKM/AK-74 Zenit PT Lock > 1 + "59ecc28286f7746d7a68aa8c", // AK-74U Zenit PT Lock > 1 + "5839a40f24597726f856b511", // bufferTubes > 21 + "5cf518cfd7f00c065b422214", + "5649b2314bdc2d79388b4576", + "5b04473a5acfc40018632f70", //beefy Stock + "5e217ba4c1434648c13568cd", //Red funky stock + "5b0e794b5acfc47a877359b2", // Zhokov black + "6087e2a5232e5a31c233d552", //Archangel + //DustCovers + "59d6507c86f7741b846413a2", // AKM dust cover (6P1 0-1) allowing one + "59e6449086f7746c9f75e822", + "628a665a86cbd9750d2ff5e5", + "5649af094bdc2df8348b4586", + "5ac50da15acfc4001718d287", + //bullets that think they are guns + "624c0b3340357b5f566e8766", + "624c0b3340357b5f566e8766", + "6217726288ed9f0845317459", + "62178be9d0050232da3485d9", + //Mosin shorty, + "5bfd36ad0db834001c38ef66", + "5bfd36290db834001966869a", + "5a16b9fffcdbcb0176308b34", + "5c07c9660db834001a66b588", + "5d2f25bc48f03502573e5d85", + "5a7c74b3e899ef0014332c29", + //Waffle 545 + "615d8f8567085e45ef1409ca", + //Mosin stocks + "5bbdb870d4351e00367fb67d", + "5bae13bad4351e00320204af", + //IR lasers + "57fd23e32459772d0805bcf1", + "544909bb4bdc2d6f028b4577", + "5d10b49bd7ad1a1a560708b0", + "5c06595c0db834001a66af6c", + "5c5952732e2216398b5abda2", + "5a5f1ce64f39f90b401987bc", + "61605d88ffa6e502ac5e7eeb", + //pistolGrips + "5b07db875acfc40dc528a5f6", + "615d8faecabb9b7ad90f4d5d", + "59db3acc86f7742a2c4ab912", + "59db3b0886f77429d72fb895", + "59db3a1d86f77429e05b4e92", + "5d025cc1d7ad1a53845279ef", + "5f6341043ada5942720e2dc5", + "6087e663132d4d12c81fd96b", + "5e2192a498a36665e8337386", + "5cf54404d7f00c108840b2ef", + "5b30ac585acfc433000eb79c", + "628a664bccaab13006640e47", + "628c9ab845c59e5b80768a81", + "5c6bf4aa2e2216001219b0ae", + "5649ae4a4bdc2d1b2b8b4588", + "6113c3586c780c1e710c90bc", + "6113cce3d92c473c770200c7", + "6113cc78d3a39d50044c065a", + "5b7d679f5acfc4001a5c4024", + //Handguards + "595cfa8b86f77427437e845b", + "595cf16b86f77427440c32e2", + "55f84c3c4bdc2d5f408b4576", + "619b5db699fb192e7430664f", + "5b2cfa535acfc432ff4db7a0", + "5c9a25172e2216000f20314e", + "55f84c3c4bdc2d5f408b4576", + "588b56d02459771481110ae2", + "5c9a26332e2216001219ea70", + "5ea16ada09aa976f2e7a51be", + "5ea16acdfadf1d18c87b0784", + "5d4405f0a4b9361e6a4e6bd9", + "5c78f2492e221600114c9f04", + "5c78f2612e221600114c9f0d", + "6034e3e20ddce744014cb878", + "6034e3d953a60014f970617b", + "6034e3cb0ddce744014cb870", + "5c6d5d8b2e221644fc630b39", + "5d00e0cbd7ad1a6c6566a42d", + "5d00f63bd7ad1a59283b1c1e", + "6087e0336d0bd7580617bb7a", + "63888bbd28e5cc32cc09d2b6", + //Foregrips + "5fc0f9b5d724d907e2077d82", + "5cda9bcfd7f00c0c0b53e900", + "59f8a37386f7747af3328f06", + "5a7dbfc1159bd40016548fde", + "619386379fb0c665d5490dbe", + "5de8fbad2fbe23140d3ee9c4", + "5b057b4f5acfc4771e1bd3e9", + "5c791e872e2216001219c40a", + "5f6340d3ca442212f4047eb2", + "591af28e86f77414a27a9e1d", + "5c1bc5612e221602b5429350", + "5c1cd46f2e22164bef5cfedb", + "5c1bc5af2e221602b412949b", + "648c1a965043c4052a4f8505", // Ebudal (bad stim) + "5d02778e86f774203e7dedbe", // CMS surgical kit + "5d02797c86f774203f38e30a", // Surv kit + "590c657e86f77412b013051d", //grizzly + "5d1c702ad7ad1a632267f429", //long handgun stock + "620109578d82e67e7911abf2", // signal pistol + "62178c4d4ecf221597654e3d", + "624c0570c9b794431568f5d5", + "624c09da2cec124eb67c1046", + "624c09e49b98e019a3315b66", + "624c09cfbc2e27219346d955", + "62389aaba63f32501b1b444f", // signal ammo + "62389ba9a63f32501b1b4451", + "62389bc9423ed1685422dc57", + "62389be94d5d474bf712e709", + "635267f063651329f75a4ee8", + "633a98eab8b0506e48497c1a", // sr-2m 20 round mag + "5caf1041ae92157c28402e3f", // ash12 10 round + "5d0a29fed7ad1a002769ad08", + "62811f461d5df4475f46a332", + "6275303a9f372d6ea97f9ec7", //revolver grenadeLauncher + "6422e1ea3c0f06190302161a", //SVT-40 7.62x54R 10-round magazine + "5c471c442e221602b542a6f8", //SVD 7.62x54R 10-round magazine + "57d14e1724597714010c3f4b", //PP-91 "Kedr" 9x18PM 20-round magazine + "5d2f213448f0355009199284", //HK MP5 9x19 20-round magazine + "5a43957686f7742a2c2f11b0", //Santahat + "639af924d0446708ee62294e", // FN40GL Mk2 + "639c3fbbd0446708ee622ee9", // FN40GL Mk25e81ebcd8e146c7080625e15 + "5e81ebcd8e146c7080625e15", // FN40GL Mk2 40mm grenade launcher + "59f32c3b86f77472a31742f0", // dogtags + "59f32bb586f774757e1e8442", // dogtags + "6662e9f37fa79a6d83730fa0", // dogtags + "6662ea05f6259762c56f3189", // dogtags + "6662e9aca7e0b43baa3d5f74", // dogtags + "6662e9cda7e0b43baa3d5f76", // dogtags + "5b9b9020e7ef6f5716480215", // dogtags + "65392f611406374f82152ba5", // mount_all_gbrs_hydra_micro_kit + "653931da5db71d30ab1d6296", // GBRS Aimpoint Hydra Mount Kit (FDE) + "618b9682a3884f56c957ca78", //Reptilia ROF-90 RMR mount for Geissele scope mounts + "618ba92152ecee1505530bd3", //Reptilia ROF-90 RMR mount for Geissele scope mounts ddc + "6601546f86889319850bd566", + "66015072e9f84d5680039678", + "66015dc4aaad2f54cb04c56a", + "5d70e500a4b9364de70d38ce", + "670e8eab8c1bb0e5a7075acf", //mag_pm_izhmeh_9x18pm_999_infectedMagazin + "671d85439ae8365d69117ba6", //mag_tt_toz_std_762x25tt_999_infectedMagazin + "671d8617a3e45c1f5908278c", //mag_mp443_izhmeh_std_9x19_999_infectedMagazin + "671d8ac8a3e45c1f59082799", //mag_glock_glock_w_pad_9x19_999_fde_Infected + "671d8b38b769f0d88c0950f8", //mag_m1911_colt_m45a1_std_1143x23_999_infected + "671d8b8c0959c721a50ca838", //mag_usp_hk_usp_tactical_1143x23_999_infected + "628120f210e26c1f344e6558", // mxc broken mod + "66d98233302686954b0c6f81", // RSP-30 reactive signal cartridge (Blue) +]; +//5d0a29fed7ad1a002769ad08 +//62811f461d5df4475f46a332 +//56ea70acd2720b844b8b4594 optic +// 6275303a9f372d6ea97f9ec7 +//# sourceMappingURL=InternalBlacklist.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js.map new file mode 100644 index 0000000..0ac5213 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "InternalBlacklist.js", + "sourceRoot": "", + "sources": [ + "InternalBlacklist.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js new file mode 100644 index 0000000..1ce9e17 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LocationUpdater = void 0; +const GlobalValues_1 = require("./GlobalValues"); +const config_json_1 = require("../../config/config.json"); +const LocationUpdater = (container) => { + const staticRouterModService = container.resolve("StaticRouterModService"); + const weatherController = container.resolve("WeatherController"); + staticRouterModService.registerStaticRouter(`AlgorithmicLevelProgressionMapUpdater`, [ + { + url: "/client/match/local/start", + action: async (_url, info, sessionId, output) => { + const time = weatherController.generate().time; + const hours = getTime(time, info.timeVariant === "PAST" ? 12 : 0); + // console.log("hours", hours); + try { + GlobalValues_1.globalValues.setValuesForLocation(info.location.toLowerCase(), hours); + if (config_json_1.enableNonPMCBotChanges) { + const pmcData = GlobalValues_1.globalValues.profileHelper.getPmcProfile(sessionId); + GlobalValues_1.globalValues.updateInventory(pmcData?.Info?.Level || 1, info.location.toLowerCase()); + } + console.log("Algorthimic LevelProgression: Loaded"); + } + catch (error) { + console.log(`"Algorthimic LevelProgression: failed to make equipment changes. + ` + error?.message); + } + return output; + }, + }, + ], "aki"); + GlobalValues_1.globalValues.config.debug && + console.log("Algorthimic LevelProgression: Custom router AlgorithmicLevelProgressionMapUpdater Registered"); +}; +exports.LocationUpdater = LocationUpdater; +function getTime(time, hourDiff) { + let [hours, minutes] = time.split(":"); + if (hourDiff == 12 && parseInt(hours) >= 12) { + return Math.abs(parseInt(hours) - hourDiff); + } + return Math.abs(parseInt(hours) + hourDiff); +} +//# sourceMappingURL=LocationUpdater.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js.map new file mode 100644 index 0000000..2ce8cbd --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "LocationUpdater.js", + "sourceRoot": "", + "sources": [ + "LocationUpdater.ts" + ], + "names": [], + "mappings": ";;;AAEA,iDAA8C;AAK9C,0DAAkE;AAE3D,MAAM,eAAe,GAAG,CAAC,SAA8B,EAAa,EAAE;IAC3E,MAAM,sBAAsB,GAAG,SAAS,CAAC,OAAO,CAC9C,wBAAwB,CACzB,CAAC;IAEF,MAAM,iBAAiB,GACrB,SAAS,CAAC,OAAO,CAAoB,mBAAmB,CAAC,CAAC;IAE5D,sBAAsB,CAAC,oBAAoB,CACzC,uCAAuC,EACvC;QACE;YACE,GAAG,EAAE,2BAA2B;YAChC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;gBAC9C,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAE/C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClE,+BAA+B;gBAC/B,IAAI,CAAC;oBACH,2BAAY,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAC3B,KAAK,CACN,CAAC;oBACF,IAAI,oCAAsB,EAAE,CAAC;wBAC3B,MAAM,OAAO,GACX,2BAAY,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;wBACtD,2BAAY,CAAC,eAAe,CAC1B,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAC5B,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CACT;iBACG,GAAG,KAAK,EAAE,OAAO,CACrB,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACF;KACF,EACD,KAAK,CACN,CAAC;IAEF,2BAAY,CAAC,MAAM,CAAC,KAAK;QACvB,OAAO,CAAC,GAAG,CACT,8FAA8F,CAC/F,CAAC;AACN,CAAC,CAAC;AAlDW,QAAA,eAAe,mBAkD1B;AAEF,SAAS,OAAO,CAAC,IAAY,EAAE,QAAgB;IAC7C,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC9C,CAAC" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js new file mode 100644 index 0000000..4ddfdc2 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js @@ -0,0 +1,137 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.buildLootChanges = void 0; +const utils_1 = require("./utils"); +const nonPmcBotConfig_json_1 = __importDefault(require("../../config/nonPmcBotConfig.json")); +const BaseClasses_1 = require("C:/snapshot/project/obj/models/enums/BaseClasses"); +const buildLootChanges = (items, handbook, prices, _, botConfig, types) => { + const assaultInventory = types.assault.inventory; + const handbookMapper = {}; + // Zero out all current items + for (const key in assaultInventory.items.Backpack) { + assaultInventory.items.Backpack[key] = 1; + } + for (const key in assaultInventory.items.Pockets) { + assaultInventory.items.Pockets[key] = 1; + } + for (const key in assaultInventory.items.TacticalVest) { + assaultInventory.items.TacticalVest[key] = 1; + } + handbook.Items.forEach(({ Id, Price }) => { + handbookMapper[Id] = Price; + }); + const getFleaPrice = (itemID) => { + if (typeof prices[itemID] != "undefined") { + return prices[itemID]; + } + else { + return handbookMapper[itemID]; + } + }; + const newToAdd = { + [BaseClasses_1.BaseClasses.BARTER_ITEM]: 50, + [BaseClasses_1.BaseClasses.HOUSEHOLD_GOODS]: 50, + [BaseClasses_1.BaseClasses.FOOD_DRINK]: 50, + [BaseClasses_1.BaseClasses.ELECTRONICS]: 1, + [BaseClasses_1.BaseClasses.JEWELRY]: 2, + [BaseClasses_1.BaseClasses.OTHER]: 1, + [BaseClasses_1.BaseClasses.TOOL]: 5, + [BaseClasses_1.BaseClasses.REPAIR_KITS]: 1, + [BaseClasses_1.BaseClasses.MONEY]: 1, + "60b0f6c058e0b0481a09ad11": 1, //gingy + "62a09d3bcf4a99369e262447": 1, //wallet + "5783c43d2459774bbe137486": 1, //walletz + }; + if (nonPmcBotConfig_json_1.default.addRandomizedKeysToScavs) { + newToAdd[BaseClasses_1.BaseClasses.KEY_MECHANICAL] = 1; + } + const itemsToRemove = new Set([ + BaseClasses_1.BaseClasses.AMMO_BOX, + BaseClasses_1.BaseClasses.GEAR_MOD, + BaseClasses_1.BaseClasses.SILENCER, + BaseClasses_1.BaseClasses.KNIFE, + BaseClasses_1.BaseClasses.ASSAULT_SCOPE, + BaseClasses_1.BaseClasses.COLLIMATOR, + BaseClasses_1.BaseClasses.SPECIAL_SCOPE, + BaseClasses_1.BaseClasses.OPTIC_SCOPE, + BaseClasses_1.BaseClasses.FOREGRIP, + BaseClasses_1.BaseClasses.ARMOR, + BaseClasses_1.BaseClasses.VEST, + BaseClasses_1.BaseClasses.TACTICAL_COMBO, + ]); + const addList = Object.keys(newToAdd); + const removeList = [...itemsToRemove]; + //limit keys on scavs + botConfig.itemSpawnLimits.assault[BaseClasses_1.BaseClasses.KEY_MECHANICAL] = 1; + const randomlyAllowKey = (id) => { + if ((0, utils_1.checkParentRecursive)(id, items, [BaseClasses_1.BaseClasses.KEY_MECHANICAL]) && + Math.random() > nonPmcBotConfig_json_1.default.percentageOfKeysInSpawnPool) { + // console.log(items[id]._name); + return false; + } + return true; + }; + const scavLootBlacklist = new Set(nonPmcBotConfig_json_1.default.scavLootBlacklist); + const loot = Object.keys(items).filter((id) => !scavLootBlacklist.has(id) && + !utils_1.blacklistedItems.has(id) && + randomlyAllowKey(id) && + (0, utils_1.checkParentRecursive)(id, items, addList) && + !(0, utils_1.checkParentRecursive)(id, items, [BaseClasses_1.BaseClasses.MONEY, ...removeList]) && + !items[id]?._props?.QuestItem && + !!getFleaPrice(id)); + const importedCustomLoot = nonPmcBotConfig_json_1.default?.additionalScavLoot.filter((id) => !!items[id] && !!getFleaPrice(id)); + const configmultiplier = 100 / nonPmcBotConfig_json_1.default.lootDisparityMultiplier; + const allLoot = [...loot, ...importedCustomLoot] + .map((id) => ({ + id, + value: Math.round(getFleaPrice(id) / configmultiplier) || 1, + name: items[id]._name, + })) + .sort(({ value: b }, { value: a }) => b - a); + const reverseLoot = [...allLoot].reverse().map(({ value }) => value); + const top = reverseLoot[Math.round(reverseLoot.length * 0.15)]; + const bottom = reverseLoot[Math.round(allLoot.length * 0.7)]; + const finalValues = {}; + allLoot.forEach(({ value, id, name }, index) => { + let rarity = reverseLoot[index]; + switch (true) { + case reverseLoot[index] > top: + rarity = top; + break; + case reverseLoot[index] < bottom: + rarity = Math.round(rarity * (0.3 / nonPmcBotConfig_json_1.default.lootDisparityMultiplier)); + break; + default: + } + if ((0, utils_1.checkParentRecursive)(id, items, [utils_1.keyMechanical])) { + rarity = Math.round(rarity * (Math.random() * Math.random())) || 1; + } + finalValues[id] = rarity; + }); + // saveToFile(finalValues, "refDBS/allLoot.json"); + assaultInventory.items.Backpack = finalValues; + assaultInventory.items.Pockets = finalValues; + assaultInventory.items.TacticalVest = finalValues; + // botConfig.walletLoot.chancePercent = 35; + // botConfig.walletLoot.walletTplPool = []; + itemsToRemove.forEach((id) => { + if (botConfig.itemSpawnLimits.assault[id]) + delete botConfig.itemSpawnLimits.assault[id]; + if (assaultInventory.items.Backpack[id]) + delete assaultInventory.items.Backpack[id]; + if (assaultInventory.items.TacticalVest[id]) + delete assaultInventory.items.TacticalVest[id]; + if (assaultInventory.items.Pockets[id]) + delete assaultInventory.items.Pockets[id]; + }); + Object.keys(newToAdd).forEach((id) => { + botConfig.itemSpawnLimits.assault[id] = newToAdd[id]; + botConfig.itemSpawnLimits.assaultgroup[id] = newToAdd[id]; + }); + return finalValues; +}; +exports.buildLootChanges = buildLootChanges; +//# sourceMappingURL=LootChanges.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js.map new file mode 100644 index 0000000..89e1665 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "LootChanges.js", + "sourceRoot": "", + "sources": [ + "LootChanges.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js new file mode 100644 index 0000000..735be8b --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js @@ -0,0 +1,262 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateScopes = exports.cullModItems = exports.makeMapSpecificWeaponWeightings = exports.makeRandomisationAdjustments = void 0; +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const utils_1 = require("./utils"); +const InternalBlacklist_1 = __importDefault(require("./InternalBlacklist")); +const GlobalValues_1 = require("./GlobalValues"); +const makeRandomisationAdjustments = (isNight, originalWeight, randomisation, location) => { + const noNvgNeeded = ["factory4_day", "factory4_night", "laboratory"].includes(location); + // levelRange: MinMax; + // generation?: Record; + // /** Mod slots that should be fully randomised -ignores mods from bottype.json and instaed creates a pool using items.json */ + // randomisedWeaponModSlots?: string[]; + // /** Armor slots that should be randomised e.g. 'Headwear, Armband' */ + // randomisedArmorSlots?: string[]; + // /** Equipment chances */ + // equipment?: Record; + // /** Weapon mod chances */ + // weaponMods?: Record; + // /** Equipment mod chances */ + // equipmentMods?: Record; + originalWeight.randomisation.forEach((_, index) => { + // NVG's + if (!noNvgNeeded && + randomisation?.[index]?.equipmentMods?.mod_nvg !== undefined) { + randomisation[index].equipmentMods.mod_nvg = isNight + ? (index + 1) * 18 + : 0; + if (randomisation[index].equipmentMods.mod_nvg > 100) + randomisation[index].equipmentMods.mod_nvg = 100; + } + // Silencers?? + if (randomisation?.[index]?.weaponMods?.mod_muzzle !== undefined) { + randomisation[index].weaponMods.mod_muzzle += isNight ? 18 : 0; + if (randomisation[index].weaponMods.mod_muzzle > 100) + randomisation[index].weaponMods.mod_muzzle = 100; + } + // Flashlights + if (location === "laboratory" || + randomisation?.[index]?.weaponMods?.mod_flashlight !== undefined) { + randomisation[index].weaponMods.mod_flashlight += isNight ? 45 : 0; + if (randomisation[index].weaponMods.mod_flashlight > 100) + randomisation[index].weaponMods.mod_flashlight = 100; + } + if (location === "laboratory") { + [ + "mod_equipment", + "mod_equipment_000", + "mod_equipment_001", + "mod_equipment_002", //TODO: check if this is still needed + "mod_pistol_grip_akms", + "mod_tactical", + "mod_tactical_2", + "mod_tactical001", + "mod_tactical002", + "mod_tactical_000", + "mod_tactical_001", + "mod_tactical_002", + "mod_tactical_003", + ].forEach((modName) => { + if (randomisation?.[index]?.weaponMods?.[modName] !== undefined) { + randomisation[index].weaponMods[modName] += 30; + if (randomisation[index].weaponMods[modName] > 100) + randomisation[index].weaponMods[modName] = 100; + } + }); + } + }); +}; +exports.makeRandomisationAdjustments = makeRandomisationAdjustments; +const makeMapSpecificWeaponWeightings = (location, items, originalWeight, pmcWeighting) => { + const firstPrimaryWeaponTypes = advancedConfig_json_1.default.locations[location].weightingAdjustments.FirstPrimaryWeapon; + originalWeight.weightingAdjustmentsByBotLevel.forEach((weightTier, index) => { + const firstPrimary = weightTier.equipment.edit.FirstPrimaryWeapon; + const firstPrimaryKeys = Object.keys(firstPrimary); + firstPrimaryKeys?.forEach((weaponId) => { + const parentId = items[weaponId]?._parent; + const parent = items?.[parentId]?._name; + if (parent && firstPrimaryWeaponTypes[parent]) { + const multiplier = firstPrimaryWeaponTypes[parent]; + pmcWeighting[index].equipment.edit.FirstPrimaryWeapon[weaponId] = + Math.round(multiplier * firstPrimary[weaponId]); + // console.log(firstPrimary[weaponId], " to ", pmcWeighting[index].equipment.edit.FirstPrimaryWeapon[weaponId], parent, items[weaponId]._name) + } + else { + console.log(`Algorthimic LevelProgression: Unable to set map settings for ${items[weaponId]._name} - ${weaponId} `); + } + }); + }); +}; +exports.makeMapSpecificWeaponWeightings = makeMapSpecificWeaponWeightings; +const cullModItems = (mods, isNight, items, location) => { + const cullList = new Set([ + ...(isNight ? nightTimeCullList : dayTimeCullList), + ...InternalBlacklist_1.default, + ]); + if (location === "laboratory") { + cullList.delete("5a1ead28fcdbcb001912fa9f"); + cullList.delete("5c11046cd174af02a012e42b"); + cullList.delete("5a1eaa87fcdbcb001865f75e"); + cullList.delete("5d1b5e94d7ad1a2b865a96b0"); + cullList.delete("5ea058e01dbce517f324b3e2"); + } + for (let key in mods) { + if (cullList.has(key) || + !checkDaytimeSilencer(key, isNight, items, cullList)) { + delete mods[key]; + } + else { + for (const modType in mods[key]) { + if (mods?.[key]?.[modType].length) { + mods[key][modType] = mods[key][modType].filter((id) => !cullList.has(id) && + checkDaytimeSilencer(id, isNight, items, cullList)); + if (mods[key][modType].length === 0 && + Object.keys(mods[key]).length === 1) { + delete mods[key]; + } + } + } + } + } +}; +exports.cullModItems = cullModItems; +const checkDaytimeSilencer = (id, isNight, items, cullList) => { + const item = items[id]; + if (!item?._props) + return false; + switch (true) { + case !isNight && + (0, utils_1.checkParentRecursive)(id, items, [utils_1.muzzleParent]) && + item._props.Loudness < GlobalValues_1.globalValues.advancedConfig.daytimeSilencerCutoff: + // console.log(item._name); + cullList.add(id); + return false; + default: + break; + } + return true; +}; +const nightTimeCullList = [ + "5cc9c20cd7f00c001336c65d", // tactical_all_ncstar_tactical_blue_laser + "560d657b4bdc2da74d8b4572", // tactical_all_zenit_2p_kleh_vis_laser +]; +const dayTimeCullList = [ + "5b3b6dc75acfc47a8773fb1e", + "644a3df63b0b6f03e101e065", // tactical_all_bemeyers_mawl_c1_plus + "5b3a337e5acfc4704b4a19a0", // tactical_all_zenit_2u_kleh + "626becf9582c3e319310b837", // tactical_all_insight_wmx200 + "57fd23e32459772d0805bcf1", // tactical_all_holosun_ls321 + "544909bb4bdc2d6f028b4577", // tactical_all_insight_anpeq15 +]; +const smgUpperRails = new Set([ + "5926dad986f7741f82604363", + "5a966ec8a2750c00171b3f36", + "602e63fb6335467b0c5ac94d", + "5894a5b586f77426d2590767", + "5de8e67c4a9f347bc92edbd7", +]); +const marksmanUpperRails = new Set([ + "5df8e4080b92095fd441e594", + "5dfcd0e547101c39625f66f9", +]); +const updateScopes = (mods, isNight, items, location) => { + const weaponTypeMapper = buildOutWeaponTypeMapper(location, isNight); + for (let key in mods) { + if (smgUpperRails.has(key) || + marksmanUpperRails.has(key) || + (0, utils_1.checkParentRecursive)(key, items, [utils_1.weaponParent])) { + const parent = items[key]._parent; + let scopeTypes = weaponTypeMapper[parent]; + if (smgUpperRails.has(key)) { + scopeTypes = weaponTypeMapper[utils_1.weaponTypeNameToId.Smg]; + } + if (marksmanUpperRails.has(key)) { + scopeTypes = weaponTypeMapper[utils_1.weaponTypeNameToId.MarksmanRifle]; + } + if (!scopeTypes) { + // console.log("UNABLE TO FIND PARENT FOR", key, items[key]._name) + break; + } + if (!!mods[key]?.mod_scope?.length) { + const result = mods[key].mod_scope.filter((id) => scopeTypes.has(items[id]?._parent) || + checkIfChildHasScopes(id, items, scopeTypes, mods)); + if (result.length) + mods[key].mod_scope = result; + } + if (!!mods[key]?.mod_mount) { + const mountResult = mods[key].mod_mount.filter((id) => scopeTypes.has(items[id]?._parent) || + checkIfChildHasScopes(id, items, scopeTypes, mods, true)); + // console.log(key, items[key]._name, mods[key].mod_mount.length, mountResult.length) + if (mountResult.length) + mods[key].mod_mount = mountResult; + mods[key]?.mod_mount; + } + [ + "mod_mount_001", + "mod_mount_002", + "mod_mount_003", + "mod_mount_004", + ].forEach((mountType) => { + if (!!mods[key]?.[mountType]) { + const mountResult = mods[key][mountType].filter((id) => !(0, utils_1.checkParentRecursive)(id, items, [utils_1.mountParent, utils_1.sightParent]) || + (items[id]?._parent === utils_1.mountParent && !mods[id]?.mod_scope) || + scopeTypes.has(items[id]?._parent) || + checkIfChildHasScopes(id, items, scopeTypes, mods, true)); + // console.log(mountType, key, items[key]._name, mods[key][mountType].length, mountResult.length) + if (mountResult.length) + mods[key][mountType] = mountResult; + mods[key]?.[mountType]; + } + }); + if (!!mods[key]?.mod_reciever) { + const receiverScopetypes = checkAssaultScopeTypes(items, key, scopeTypes, weaponTypeMapper); + const receiverResult = mods[key].mod_reciever.filter((id) => scopeTypes.has(items[id]?._parent) || + checkIfChildHasScopes(id, items, receiverScopetypes, mods, true)); + // console.log(key, items[key]._name, mods[key].mod_reciever.length, receiverResult.length) + if (receiverResult?.length) + mods[key].mod_reciever = receiverResult; + mods[key]?.mod_reciever; + } + } + } +}; +exports.updateScopes = updateScopes; +const akType = "reciever_ak"; +const checkAssaultScopeTypes = (items, id, originalScopeType, weaponTypeMapper) => { + if (items[id]?._name?.includes(akType)) + return weaponTypeMapper["5447b5f14bdc2d61278b4567"]; //assault rifle type + return originalScopeType; +}; +const checkIfChildHasScopes = (id, items, scopeTypes, mods, clean) => { + const result = !!mods[id]?.mod_scope?.find((scopeId) => scopeTypes.has(items[scopeId]?._parent)); + if (result && clean) { + const filtered = mods[id]?.mod_scope.filter((id) => scopeTypes.has(items[id]?._parent) || + checkIfChildHasScopes(id, items, scopeTypes, mods)); + if (filtered?.length) + mods[id].mod_scope = filtered; + } + return result; +}; +const buildOutWeaponTypeMapper = (location, isNight) => { + const mapper = {}; + const sightConfiguration = (0, utils_1.cloneDeep)(advancedConfig_json_1.default.locations[location].sightConfiguration); + if (isNight) { + ["SniperRifle", "MarksmanRifle", "AssaultCarbine", "AssaultRifle"].forEach((type) => { + sightConfiguration[type].push("NightVision"); + }); + } + for (const weaponType in sightConfiguration) { + const weaponTypeUUID = utils_1.weaponTypeNameToId[weaponType]; + mapper[weaponTypeUUID] = new Set(sightConfiguration[weaponType].map((name) => utils_1.SightType[name])); + } + return mapper; +}; +// check if item is scope, if so ignore (allow for child scopes) +// check if item is weapon, if so, filter mod_scope +// if scope, check +// if "55818b224bdc2dde698b456f" Mount, check if any mod_scope within contain correct scopes, if not remove +//# sourceMappingURL=OnGameStartUtils.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js.map new file mode 100644 index 0000000..1beb9dc --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "OnGameStartUtils.js", + "sourceRoot": "", + "sources": [ + "OnGameStartUtils.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js new file mode 100644 index 0000000..f180c98 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js @@ -0,0 +1,470 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = ProgressionChanges; +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const config_json_1 = __importDefault(require("../../config/config.json")); +const utils_1 = require("./utils"); +const Tier5_1 = __importDefault(require("../Constants/Tier5")); +const botConfigequipmentpmc_json_1 = __importDefault(require("../Cache/botConfigequipmentpmc.json")); +const tablesbotstypesusec_json_1 = __importDefault(require("../Cache/tablesbotstypesusec.json")); +const LootChanges_1 = require("./LootChanges"); +const FixSpecificScopeIssues_1 = require("./FixSpecificScopeIssues"); +function ProgressionChanges(container) { + const databaseServer = container.resolve("DatabaseServer"); + const tables = databaseServer.getTables(); + const configServer = container.resolve("ConfigServer"); + // const presets = tables.globals.ItemPresets; + // let mappedPresets = {}; + // Object.values(presets).forEach((preset) => { + // if (preset._encyclopedia) { + // const newPreset = {}; + // let mainId = ""; + // const otherPresets = {}; + // const mapper = {}; + // preset._items.forEach((item) => { + // if (item._tpl === preset._encyclopedia) { + // mainId = item._id; + // } + // if (item.parentId && item.slotId) { + // mapper[item._id] = item._tpl; + // if (item.parentId === mainId) { + // if (!newPreset[item.slotId]) newPreset[item.slotId] = []; + // newPreset[item.slotId].push(item._tpl); + // } else { + // if (!otherPresets[mapper[item.parentId]]) + // otherPresets[mapper[item.parentId]] = {}; + // if (!otherPresets[mapper[item.parentId]][item.slotId]) { + // otherPresets[mapper[item.parentId]][item.slotId] = [item._tpl]; + // } else { + // otherPresets[mapper[item.parentId]][item.slotId].push(item._tpl); + // } + // } + // } + // }); + // mappedPresets[preset._encyclopedia] = newPreset; + // if (Object.keys(otherPresets)) + // mappedPresets = { ...mappedPresets, ...otherPresets }; + // } + // }); + // saveToFile(mappedPresets, "Constants/mappedPresets.json"); + const botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const pmcConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.PMC); + const Logger = container.resolve("WinstonLogger"); + const items = tables.templates.items; + const traders = tables.traders; + const usecInventory = tables.bots.types.usec.inventory; + const bearInventory = tables.bots.types.bear.inventory; + const prices = tables.templates.prices; + const handbook = tables.templates.handbook; + let loot = {}; + if (config_json_1.default.enableLootChanges && !config_json_1.default.forceCached) { + try { + loot = (0, LootChanges_1.buildLootChanges)(items, handbook, prices, pmcConfig, botConfig, tables.bots.types); + } + catch (error) { + Logger.error("Algorthimic Progression: buildLootChanges failed, maybe try turning off 'enableLootChanges', \nError: " + + error); + } + } + if (botConfig.secureContainerAmmoStackCount < 80) + botConfig.secureContainerAmmoStackCount = 80; + if (!pmcConfig.forceHealingItemsIntoSecure) + pmcConfig.forceHealingItemsIntoSecure = true; + pmcConfig.looseWeaponInBackpackChancePercent = 2; + pmcConfig.looseWeaponInBackpackLootMinMax = { min: 0, max: 1 }; + if (config_json_1.default?.forceCached !== true) { + try { + const tradersToInclude = [ + "Prapor", + "Therapist", + "Skier", + "Peacekeeper", + "Mechanic", + "Ragman", + "Jaeger", + "Arena", + ]; + const tradersToExclude = [ + "Unknown", + "caretaker", + "Fence", + "БТР", + ...config_json_1.default.customTradersToExclude, + ]; + const traderList = Object.values(traders).filter(({ base }) => { + if (config_json_1.default.addCustomTraderItems) { + return !tradersToExclude.includes(base.nickname); + } + return tradersToInclude.includes(base.nickname); + }); + botConfig.equipment.pmc.nvgIsActiveChanceNightPercent = 85; + botConfig.equipment.pmc.lightIsActiveNightChancePercent = 45; + botConfig.equipment.pmc.lightIsActiveDayChancePercent = 25; + botConfig.equipment.pmc.laserIsActiveChancePercent = 90; + botConfig.equipment.pmc.armorPlateWeighting = [ + { + levelRange: { + min: 1, + max: 99, + }, + front_plate: { + "1": 1, + "2": 3, + "3": 15, + "4": 35, + "5": 15, + "6": 5, + }, + back_plate: { + "1": 1, + "2": 3, + "3": 15, + "4": 35, + "5": 15, + "6": 5, + }, + side_plate: { + "1": 1, + "2": 3, + "3": 15, + "4": 35, + "5": 15, + "6": 5, + }, + left_side_plate: { + "1": 1, + "2": 3, + "3": 15, + "4": 35, + "5": 15, + "6": 5, + }, + right_side_plate: { + "1": 1, + "2": 3, + "3": 15, + "4": 35, + "5": 15, + "6": 5, + }, + }, + ]; + // botConfig.equipment.pmc.forceOnlyArmoredRigWhenNoArmor = false; + botConfig.equipment.pmc.faceShieldIsActiveChancePercent = 100; + botConfig.equipment.pmc.weightingAdjustmentsByBotLevel = + (0, utils_1.buildEmptyWeightAdjustments)(); + // >>>>>>>>>>>>>>> Working tradersMasterList <<<<<<<<<<<<<<<<<< + const tradersMasterList = { + 1: new Set(["572b7adb24597762ae139821", "5fd4c4fa16cac650092f6771"]), + 2: new Set(), + 3: new Set(), + 4: new Set(), + 5: new Set(Object.values(Tier5_1.default).flat(1)), + }; + const mods = { "1": {}, "2": {}, "3": {}, "4": {}, "5": {} }; + // SetBaseWhitelist + botConfig.equipment.pmc.whitelist = (0, utils_1.setupBaseWhiteList)(); + traderList.forEach(({ base: { nickname }, questassort, assort: { items: tradeItems, loyal_level_items, barter_scheme, } = {}, }, index) => { + if (!tradeItems || !nickname) + return; + if (config_json_1.default.addCustomTraderItems && + ![...tradersToExclude, ...tradersToInclude].includes(nickname)) { + console.log(`[AlgorithmicLevelProgression]: Attempting to add items for custom trader > ${nickname}!`); + } + tradeItems.forEach(({ _tpl, _id, parentId, slotId }) => { + if (utils_1.blacklistedItems.has(_tpl) || + (0, utils_1.checkParentRecursive)(_tpl, items, [utils_1.armorPlateParent])) + return; //Remove blacklisted items and bullets + const item = items[_tpl]; + if (!item) + return console.log("[AlgorithmicLevelProgression]: Skipping custom item: ", _tpl, " for trader: ", nickname); + const parent = item._parent; + if (!parent || !items[parent]) + return console.log("[AlgorithmicLevelProgression]: Skipping custom item: ", _tpl, " for trader: ", nickname); + const equipmentType = (0, utils_1.getEquipmentType)(parent, items); + switch (true) { + //Add Ammo + case (0, utils_1.checkParentRecursive)(parent, items, [utils_1.AmmoParent]): + const calibre = item._props.Caliber || item._props.ammoCaliber; + if (calibre) { + usecInventory.Ammo[calibre] = { + ...(usecInventory.Ammo[calibre] || {}), + [_tpl]: 1, + }; + bearInventory.Ammo[calibre] = { + ...(bearInventory.Ammo[calibre] || {}), + [_tpl]: 1, + }; + // usecInventory.items.SecuredContainer[_tpl] = 1; + // bearInventory.items.SecuredContainer[_tpl] = 1; + } + else { + console.log(item._name, " likely has the incorrect calibre: ", calibre); + } + break; + case (0, utils_1.checkParentRecursive)(parent, items, [utils_1.magParent]): + // usecInventory.items.SecuredContainer[_tpl] = 1; + // bearInventory.items.SecuredContainer[_tpl] = 1; + break; + // case equipmentType === "mod_scope": + // break; + // Check if revolver shotgun + case _tpl === "60db29ce99594040e04c4a27": + if (!usecInventory.equipment["FirstPrimaryWeapon"]) + usecInventory.equipment["FirstPrimaryWeapon"] = {}; + if (!bearInventory.equipment["FirstPrimaryWeapon"]) + bearInventory.equipment["FirstPrimaryWeapon"] = {}; + usecInventory.equipment["FirstPrimaryWeapon"][_tpl] = 1; + bearInventory.equipment["FirstPrimaryWeapon"][_tpl] = 1; + break; + // Check if sawed-off shotgun + case _tpl === "64748cb8de82c85eaf0a273a": + if (!usecInventory.equipment["Holster"]) + usecInventory.equipment["Holster"] = {}; + if (!bearInventory.equipment["Holster"]) + bearInventory.equipment["Holster"] = {}; + usecInventory.equipment["Holster"][_tpl] = 1; + bearInventory.equipment["Holster"][_tpl] = 1; + break; + // Add matching equipment + case !!equipmentType: + if (!usecInventory.equipment[equipmentType]) + usecInventory.equipment[equipmentType] = {}; + if (!bearInventory.equipment[equipmentType]) + bearInventory.equipment[equipmentType] = {}; + usecInventory.equipment[equipmentType][_tpl] = 1; + bearInventory.equipment[equipmentType][_tpl] = 1; + break; + default: + break; + } + const loyaltyLevel = loyal_level_items[_id] || loyal_level_items[parentId]; + //Set trader list for levels + if (loyaltyLevel) { + const barterSchemeRef = barter_scheme[_id] || barter_scheme[parentId]; + switch (true) { + // If large magazine + case (0, utils_1.checkParentRecursive)(_tpl, items, [utils_1.magParent]) && + item?._props?.Cartridges?.[0]?._max_count > 39: + // if (item?._props?.Cartridges?.[0]?._max_count > 39) { + // tradersMasterList[5].add(_tpl) + // return + // } + // tradersMasterList[loyaltyLevel].add(_tpl) + // addToModsObject(mods, _tpl, items, loyaltyLevel, slotId) + break; + // Check if its a quest unlocked trade + case !!questassort.success[_id]: + if (!config_json_1.default?.questUnlockedItemsShifted) { + tradersMasterList[loyaltyLevel].add(_tpl); + (0, utils_1.addToModsObject)(mods, _tpl, items, loyaltyLevel, slotId); + } + else { + if (loyaltyLevel === 4) { + tradersMasterList[4].add(_tpl); + (0, utils_1.addToModsObject)(mods, _tpl, items, 4, slotId); + } + else { + tradersMasterList[loyaltyLevel + 1].add(_tpl); + (0, utils_1.addToModsObject)(mods, _tpl, items, loyaltyLevel + 1, slotId); + } + } + break; + // Only add the item if it's a cash trade or if tradeItems are not shifted + case items[barterSchemeRef?.[0]?.[0]?._tpl]?._parent === + utils_1.moneyParent || !config_json_1.default?.tradedItemsShifted: + tradersMasterList[loyaltyLevel].add(_tpl); + (0, utils_1.addToModsObject)(mods, _tpl, items, loyaltyLevel, slotId); + break; + // Then it's a tradeItem + default: + if (loyaltyLevel + 2 > 4) { + tradersMasterList[4].add(_tpl); + (0, utils_1.addToModsObject)(mods, _tpl, items, 4, slotId); + } + else { + tradersMasterList[loyaltyLevel + 2].add(_tpl); + (0, utils_1.addToModsObject)(mods, _tpl, items, loyaltyLevel + 2, slotId); + } + break; + } + } + }); + }); + //Setup beast mod level 5 + tradersMasterList[5].forEach((id) => { + if (utils_1.blacklistedItems.has(id)) { + tradersMasterList[5].delete(id); + } + else { + const item = items[id]; + const parent = items[id]?._parent; + if (!item || !parent) + return; + const equipmentType = (0, utils_1.getEquipmentType)(parent, items); + switch (true) { + case (0, utils_1.checkParentRecursive)(parent, items, [utils_1.AmmoParent]): + const calibre = item._props.Caliber || item._props.ammoCaliber; + if (calibre) { + usecInventory.Ammo[calibre] = { + ...(usecInventory.Ammo[calibre] || {}), + [id]: 1, + }; + bearInventory.Ammo[calibre] = { + ...(bearInventory.Ammo[calibre] || {}), + [id]: 1, + }; + } + break; + case !!equipmentType: + if (!usecInventory.equipment[equipmentType]) + usecInventory.equipment[equipmentType] = {}; + if (!bearInventory.equipment[equipmentType]) + bearInventory.equipment[equipmentType] = {}; + usecInventory.equipment[equipmentType][id] = 1; + bearInventory.equipment[equipmentType][id] = 1; + break; + default: + break; + } + } + }); + const combinedNumList = new Set([ + ...tradersMasterList[1], + ...tradersMasterList[2], + ...tradersMasterList[3], + ...tradersMasterList[4], + ]); + //TODO: keep an eye on this.. this might be a bad idea. + const combinedNumWith5List = new Set([ + ...combinedNumList, + ...tradersMasterList[5], + ]); + (0, utils_1.buildWeaponSightWhitelist)(items, botConfig, tradersMasterList); + (0, utils_1.buildOutModsObject)(combinedNumWith5List, items, usecInventory, botConfig); + bearInventory.mods = (0, utils_1.cloneDeep)(usecInventory.mods); + (0, utils_1.setupMods)(mods); + // lets disable this for now + // addKeysToPockets(combinedNumList, items, tables.bots.types.assault.inventory); + //Make everything level 1 in equipment + (0, utils_1.reduceEquipmentChancesTo1)(usecInventory); + (0, utils_1.reduceEquipmentChancesTo1)(bearInventory); + (0, utils_1.reduceAmmoChancesTo1)(usecInventory); + (0, utils_1.reduceAmmoChancesTo1)(bearInventory); + // Eliminates duplicate id's in later levels + utils_1.numList.forEach((num) => { + tradersMasterList[num].forEach((id) => { + utils_1.numList.slice(num, 5).forEach((numListNum) => { + tradersMasterList[numListNum].delete(id); + }); + }); + }); + if (botConfig.equipment.pmc.blacklist?.[0]?.equipment) { + if (!botConfig.equipment.pmc.blacklist?.[0]?.equipment?.FirstPrimaryWeapon) + botConfig.equipment.pmc.blacklist[0].equipment.FirstPrimaryWeapon = + []; + if (!botConfig.equipment.pmc.blacklist?.[0]?.equipment?.mod_scope) + botConfig.equipment.pmc.blacklist[0].equipment.mod_scope = []; + if (!botConfig.equipment.pmc.blacklist?.[0]?.equipment?.mod_handguard) + botConfig.equipment.pmc.blacklist[0].equipment.mod_handguard = []; + if (!botConfig.equipment.pmc.blacklist?.[0]?.equipment?.Headwear) + botConfig.equipment.pmc.blacklist[0].equipment.Headwear = []; + botConfig.equipment.pmc.blacklist[0].equipment.FirstPrimaryWeapon.push("624c0b3340357b5f566e8766", "624c0b3340357b5f566e8766", "6217726288ed9f0845317459", "62389be94d5d474bf712e709"); + botConfig.equipment.pmc.blacklist[0].equipment.mod_scope.push("544a3d0a4bdc2d1b388b4567"); + botConfig.equipment.pmc.blacklist[0].equipment.mod_stock.push("5a0c59791526d8dba737bba7"); + botConfig.equipment.pmc.blacklist[0].equipment.Headwear.push("5c066ef40db834001966a595"); + } + (0, utils_1.setWhitelists)(items, botConfig, tradersMasterList, mods); + (0, utils_1.setWeightingAdjustments)(items, botConfig, tradersMasterList, mods); + let lootingBotsDetected = false; + if (tables?.bots?.types?.bear?.generation?.items?.backpackLoot?.weights && + new Set(Object.values(tables?.bots?.types?.bear?.generation?.items?.backpackLoot.weights)).size === 1) { + console.log("[AlgorithmicLevelProgression] Looting bots detected, removing pmc loot"); + lootingBotsDetected = true; + } + (0, utils_1.buildInitialRandomization)(items, botConfig, tradersMasterList, lootingBotsDetected); + (0, utils_1.deleteBlacklistedItemsFromInventory)(usecInventory, utils_1.blacklistedItems); + (0, utils_1.deleteBlacklistedItemsFromInventory)(bearInventory, utils_1.blacklistedItems); + // add ai2 and surv to bot containerq + // cms + usecInventory.items.SecuredContainer["5d02778e86f774203e7dedbe"] = 1; + bearInventory.items.SecuredContainer["5d02778e86f774203e7dedbe"] = 1; + // ai2 + usecInventory.items.SecuredContainer["5755356824597772cb798962"] = 1; + bearInventory.items.SecuredContainer["5755356824597772cb798962"] = 1; + // Splint + usecInventory.items.SecuredContainer["5af0454c86f7746bf20992e8"] = 1; + bearInventory.items.SecuredContainer["5af0454c86f7746bf20992e8"] = 1; + // Esmarch5e831507ea0a7c419c2f9bd9 + usecInventory.items.SecuredContainer["5e831507ea0a7c419c2f9bd9"] = 1; + bearInventory.items.SecuredContainer["5e831507ea0a7c419c2f9bd9"] = 1; + // ensureAllAmmoInSecuredContainer(usecInventory); + // ensureAllAmmoInSecuredContainer(bearInventory); + (0, utils_1.addBossSecuredContainer)(usecInventory); + (0, utils_1.addBossSecuredContainer)(bearInventory); + // addAllMedsToInventory(combinedNumWith5List, usecInventory, items); + (0, utils_1.fixEmptyChancePlates)(botConfig); + (0, FixSpecificScopeIssues_1.fixSpecificItemIssues)(usecInventory); + (0, FixSpecificScopeIssues_1.fixSpecificItemIssues)(bearInventory); + tables.bots.types.usec.inventory = usecInventory; + tables.bots.types.bear.inventory = bearInventory; + tables.bots.types.bear.inventory = tables.bots.types.usec.inventory; // TESTING << REMOVE IF SLOWER + } + catch (error) { + config_json_1.default.forceCached = true; + throw Error("Failed to dynamically update items, likely a mod conflict, turning on forceCached and will try again! \nError: " + + error); + } + } + else { + botConfig.equipment.pmc = botConfigequipmentpmc_json_1.default; + tables.bots.types.usec = tablesbotstypesusec_json_1.default; + tables.bots.types.bear = tablesbotstypesusec_json_1.default; + } + if (config_json_1.default.strictEquipmentTiering === false) { + (0, utils_1.combineWhitelist)(botConfig.equipment.pmc); + } + Object.keys(advancedConfig_json_1.default.otherBotTypes).forEach((botType) => { + botConfig.equipment[botType] = { + ...botConfig.equipment[botType], + ...advancedConfig_json_1.default.otherBotTypes[botType], + }; + }); + if (tables?.bots?.types?.assault?.generation?.items?.backpackLoot?.weights && + new Set(Object.values(tables.bots.types.assault.generation.items.backpackLoot.weights)).size === 1) { + console.log("[AlgorithmicLevelProgression] Looting bots detected, removing scav loot"); + const generation = botConfig.equipment.assault.randomisation[0] + .generation; + generation.backpackLoot = { + ...(generation.looseLoot || {}), + weights: { "0": 1 }, + whitelist: {}, + }; + generation.pocketLoot = { + ...(generation.looseLoot || {}), + weights: { "0": 1 }, + whitelist: {}, + }; + generation.vestLoot = { + ...(generation.looseLoot || {}), + weights: { "0": 1 }, + whitelist: {}, + }; + } + // saveToFile(botConfig, "botConfig.json"); + // saveToFile(pmcConfig, "pmcConfig.json"); + // tables.bots.types.usec + // botConfig.equipment.pmc + // saveToFile(tables.bots.types.usec, `Cache/tablesbotstypesusec.json`); + // saveToFile(botConfig.equipment.pmc, `Cache/botConfigequipmentpmc.json`); + config_json_1.default.debug || + (config_json_1.default.forceCached && + console.log("Algorthimic Progression: Progression Changes completed")); +} +//59ef13ca86f77445fd0e2483 +//5b4329f05acfc47a86086aa1 +//# sourceMappingURL=ProgressionChanges.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js.map new file mode 100644 index 0000000..43d3025 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "ProgressionChanges.js", + "sourceRoot": "", + "sources": [ + "ProgressionChanges.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js new file mode 100644 index 0000000..0d1ce92 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SetupLocationGlobals = void 0; +const GlobalValues_1 = require("./GlobalValues"); +const utils_1 = require("./utils"); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const SetupLocationGlobals = (container) => { + const configServer = container.resolve("ConfigServer"); + const botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const databaseServer = container.resolve("DatabaseServer"); + const profileHelper = container.resolve("ProfileHelper"); + const tables = databaseServer.getTables(); + GlobalValues_1.globalValues.Logger = container.resolve("WinstonLogger"); + GlobalValues_1.globalValues.tables = tables; + GlobalValues_1.globalValues.profileHelper = profileHelper; + GlobalValues_1.globalValues.originalBotTypes = (0, utils_1.cloneDeep)(tables.bots.types); + GlobalValues_1.globalValues.configServer = configServer; + GlobalValues_1.globalValues.originalWeighting = (0, utils_1.cloneDeep)(botConfig.equipment.pmc); + // globalValues.setValuesForLocation("woods", 1); +}; +exports.SetupLocationGlobals = SetupLocationGlobals; +//# sourceMappingURL=SetupLocationGlobals.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js.map new file mode 100644 index 0000000..78ba82a --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "SetupLocationGlobals.js", + "sourceRoot": "", + "sources": [ + "SetupLocationGlobals.ts" + ], + "names": [], + "mappings": ";;;AACA,iDAA8C;AAE9C,mCAAoC;AAEpC,kFAA+E;AAIxE,MAAM,oBAAoB,GAAG,CAClC,SAA8B,EACnB,EAAE;IACb,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAiB,gBAAgB,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;IAC1C,2BAAY,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACzD,2BAAY,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,2BAAY,CAAC,aAAa,GAAG,aAAa,CAAC;IAC3C,2BAAY,CAAC,gBAAgB,GAAG,IAAA,iBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,2BAAY,CAAC,YAAY,GAAG,YAAY,CAAC;IACzC,2BAAY,CAAC,iBAAiB,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpE,iDAAiD;AACnD,CAAC,CAAC;AAfW,QAAA,oBAAoB,wBAe/B" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js new file mode 100644 index 0000000..5352f20 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js @@ -0,0 +1,1706 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.equipmentIdMapper = exports.getTacticalVestValue = exports.getBackPackInternalGridValue = exports.getWeaponWeighting = exports.getHighestScoringAmmoValue = exports.getEquipmentType = exports.getHeadwearRating = exports.getAmmoWeighting = exports.getArmorRating = exports.mergeDeep = exports.isObject = exports.cloneDeep = exports.checkParentRecursive = exports.deDupeArr = exports.reduceAmmoChancesTo1 = exports.reduceEquipmentChancesTo1 = exports.setupMods = exports.addKeysToPockets = exports.addToModsObject = exports.weaponTypeNameToId = exports.SightType = exports.armorPlateParent = exports.rigParent = exports.armorParent = exports.weaponParent = exports.mountParent = exports.chargeParent = exports.handguardParent = exports.barrelParent = exports.gasblockParent = exports.receiverParent = exports.muzzleParent = exports.pistolGripParent = exports.stockParent = exports.sightParent = exports.moneyParent = exports.masterMod = exports.modParent = exports.medsParent = exports.FoodDrinkParent = exports.medKitParent = exports.medicalParent = exports.painKillerParent = exports.stimParent = exports.keyMechanical = exports.barterParent = exports.magParent = exports.AmmoParent = exports.headwearParent = exports.saveToFile = void 0; +exports.blacklistedItems = exports.combinedForbiddenBullets = exports.addBossSecuredContainer = exports.fixEmptyChancePlates = exports.ensureAllAmmoInSecuredContainer = exports.deleteBlacklistedItemsFromInventory = exports.buildBlacklist = exports.buildWeaponSightWhitelist = exports.weaponTypes = exports.buildClothingWeighting = exports.buildInitialBearAppearance = exports.buildInitialUsecAppearance = exports.buildInitialRandomization = exports.buildOutModsObject = exports.combineWhitelist = exports.addAllMedsToInventory = exports.setWeightingAdjustments = exports.buildEmptyWeightAdjustments = exports.setWhitelists = exports.setupBaseWhiteList = exports.arrSum = exports.numList = exports.getCurrentLevelRange = void 0; +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const config_json_1 = __importStar(require("../../config/config.json")); +const InternalBlacklist_1 = __importDefault(require("./InternalBlacklist")); +const mappedPresets_json_1 = __importDefault(require("../Constants/mappedPresets.json")); +const saveToFile = (data, filePath) => { + var fs = require("fs"); + let dir = __dirname; + let dirArray = dir.split("\\"); + const directory = `${dirArray[dirArray.length - 5]}/${dirArray[dirArray.length - 4]}/${dirArray[dirArray.length - 3]}/${dirArray[dirArray.length - 2]}/`; + fs.writeFile(directory + filePath, JSON.stringify(data, null, 4), function (err) { + if (err) + throw err; + }); +}; +exports.saveToFile = saveToFile; +exports.headwearParent = "5a341c4086f77401f2541505"; +exports.AmmoParent = "5485a8684bdc2da71d8b4567"; +exports.magParent = "5448bc234bdc2d3c308b4569"; +exports.barterParent = "5448eb774bdc2d0a728b4567"; +exports.keyMechanical = "5c99f98d86f7745c314214b3"; +exports.stimParent = "5448f3a64bdc2d60728b456a"; +exports.painKillerParent = "5448f3a14bdc2d27728b4569"; +exports.medicalParent = "5448f3ac4bdc2dce718b4569"; +exports.medKitParent = "5448f39d4bdc2d0a728b4568"; +exports.FoodDrinkParent = "543be6674bdc2df1348b4569"; +exports.medsParent = "543be5664bdc2dd4348b4569"; +exports.modParent = "5448fe124bdc2da5018b4567"; +exports.masterMod = "55802f4a4bdc2ddb688b4569"; +exports.moneyParent = "543be5dd4bdc2deb348b4569"; +exports.sightParent = "5448fe7a4bdc2d6f028b456b"; +exports.stockParent = "55818a594bdc2db9688b456a"; +exports.pistolGripParent = "55818a684bdc2ddd698b456d"; +exports.muzzleParent = "5448fe394bdc2d0d028b456c"; +exports.receiverParent = "55818a304bdc2db5418b457d"; +exports.gasblockParent = "56ea9461d2720b67698b456f"; +exports.barrelParent = "555ef6e44bdc2de9068b457e"; +exports.handguardParent = "55818a104bdc2db9688b4569"; +exports.chargeParent = "55818a104bdc2db9688b4569"; +exports.mountParent = "55818b224bdc2dde698b456f"; +exports.weaponParent = "5422acb9af1c889c16000029"; +exports.armorParent = "57bef4c42459772e8d35a53b"; +exports.rigParent = "5448e5284bdc2dcb718b4567"; +exports.armorPlateParent = "644120aa86ffbe10ee032b6f"; +var SightType; +(function (SightType) { + SightType["AssaultScope"] = "55818add4bdc2d5b648b456f"; + SightType["Collimator"] = "55818ad54bdc2ddc698b4569"; + SightType["CompactCollimator"] = "55818acf4bdc2dde698b456b"; + SightType["OpticScope"] = "55818ae44bdc2dde698b456c"; + SightType["SpecialScope"] = "55818aeb4bdc2ddc698b456a"; + SightType["ThermalVision"] = "5d21f59b6dbe99052b54ef83"; + SightType["NightVision"] = "5a2c3a9486f774688b05e574"; +})(SightType || (exports.SightType = SightType = {})); +exports.weaponTypeNameToId = { + SniperRifle: "5447b6254bdc2dc3278b4568", + MarksmanRifle: "5447b6194bdc2d67278b4567", + AssaultCarbine: "5447b5fc4bdc2d87278b4567", + AssaultRifle: "5447b5f14bdc2d61278b4567", + MachineGun: "5447bed64bdc2d97278b4568", + Smg: "5447b5e04bdc2d62278b4567", + SpecialWeapon: "5447bee84bdc2dc3278b4569", + Shotgun: "5447b6094bdc2dc3278b4567", + Pistol: "5447b5cf4bdc2d65278b4567", + Revolver: "617f1ef5e8b54b0998387733", + GrenadeLauncher: "5447bedf4bdc2d87278b4568", +}; +const addToModsObject = (mods, _tpl, items, loyaltyLevel, slotId = "") => { + switch (true) { + case (0, exports.checkParentRecursive)(_tpl, items, [exports.magParent]): + if (!mods[loyaltyLevel]?.["mod_magazine"]) + mods[loyaltyLevel]["mod_magazine"] = []; + mods[loyaltyLevel]["mod_magazine"].push(_tpl); + break; + case slotId !== "hideout": + if (!mods[loyaltyLevel]?.[slotId]) + mods[loyaltyLevel][slotId] = []; + mods[loyaltyLevel][slotId].push(_tpl); + break; + // case checkParentRecursive(_tpl, items, Object.values(SightType)): + // if (!mods[loyaltyLevel]?.["mod_scope"]) mods[loyaltyLevel]["mod_scope"] = [] + // mods[loyaltyLevel]["mod_scope"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [pistolGripParent]): + // if (!mods[loyaltyLevel]?.["mod_pistol_grip"]) mods[loyaltyLevel]["mod_pistol_grip"] = [] + // mods[loyaltyLevel]["mod_pistol_grip"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [stockParent]): + // if (!mods[loyaltyLevel]?.["mod_stock"]) mods[loyaltyLevel]["mod_stock"] = [] + // mods[loyaltyLevel]["mod_stock"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [muzzleParent]): + // if (!mods[loyaltyLevel]?.["mod_muzzle"]) mods[loyaltyLevel]["mod_muzzle"] = [] + // mods[loyaltyLevel]["mod_muzzle"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [receiverParent]): + // if (!mods[loyaltyLevel]?.["mod_reciever"]) mods[loyaltyLevel]["mod_reciever"] = [] + // mods[loyaltyLevel]["mod_reciever"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [gasblockParent]): + // if (!mods[loyaltyLevel]?.["mod_gas_block"]) mods[loyaltyLevel]["mod_gas_block"] = [] + // mods[loyaltyLevel]["mod_gas_block"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [barrelParent]): + // if (!mods[loyaltyLevel]?.["mod_barrel"]) mods[loyaltyLevel]["mod_barrel"] = [] + // mods[loyaltyLevel]["mod_barrel"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [handguardParent]): + // if (!mods[loyaltyLevel]?.["mod_handguard"]) mods[loyaltyLevel]["mod_handguard"] = [] + // mods[loyaltyLevel]["mod_handguard"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [chargeParent]): + // if (!mods[loyaltyLevel]?.["mod_charge"]) mods[loyaltyLevel]["mod_charge"] = [] + // mods[loyaltyLevel]["mod_charge"].push(_tpl) + // break; + // case checkParentRecursive(_tpl, items, [mountParent]): + // if (!mods[loyaltyLevel]?.["mod_mount"]) mods[loyaltyLevel]["mod_mount"] = [] + // mods[loyaltyLevel]["mod_mount"].push(_tpl) + // break; + default: + break; + } +}; +exports.addToModsObject = addToModsObject; +const addKeysToPockets = (traderItems, items, inventory) => { + traderItems.forEach((id) => { + if (id && + items[id]?._parent && + (0, exports.checkParentRecursive)(id, items, [exports.keyMechanical])) { + inventory.items.Pockets[id] = 1; + inventory.items.Backpack[id] = 1; + inventory.items.TacticalVest[id] = 1; + } + }); + // inventory.items.Pockets = deDupeArr(inventory.items.Pockets); + // inventory.items.Backpack = deDupeArr(inventory.items.Backpack); + // inventory.items.TacticalVest = deDupeArr(inventory.items.TacticalVest); +}; +exports.addKeysToPockets = addKeysToPockets; +const setupMods = (mods) => { + Object.keys(mods).forEach((numstr) => { + const num = Number(numstr); + Object.keys(mods[num]).forEach((mod) => { + mods[num][mod] = (0, exports.deDupeArr)(mods[num][mod]); + if (mods[num + 1]) { + if (!mods[num + 1]?.[mod]) + mods[num + 1][mod] = mods[num][mod]; + else { + mods[num + 1][mod].push(...mods[num][mod]); + } + } + }); + }); +}; +exports.setupMods = setupMods; +const reduceEquipmentChancesTo1 = (inventory) => { + Object.keys(inventory.equipment).forEach((equipType) => { + Object.keys(inventory.equipment[equipType]).forEach((id) => { + if (inventory.equipment[equipType][id] !== 0) { + inventory.equipment[equipType][id] = 1; + } + }); + }); +}; +exports.reduceEquipmentChancesTo1 = reduceEquipmentChancesTo1; +const reduceAmmoChancesTo1 = (inventory) => { + Object.keys(inventory.Ammo).forEach((caliber) => { + Object.keys(inventory.Ammo[caliber]).forEach((id) => { + if (inventory.Ammo[caliber][id] !== 0) { + inventory.Ammo[caliber][id] = 1; + } + }); + }); +}; +exports.reduceAmmoChancesTo1 = reduceAmmoChancesTo1; +const deDupeArr = (arr) => [...new Set(arr)]; +exports.deDupeArr = deDupeArr; +const checkParentRecursive = (parentId, items, queryIds) => { + if (queryIds.includes(parentId)) + return true; + if (!items?.[parentId]?._parent) + return false; + return (0, exports.checkParentRecursive)(items[parentId]._parent, items, queryIds); +}; +exports.checkParentRecursive = checkParentRecursive; +const cloneDeep = (objectToClone) => JSON.parse(JSON.stringify(objectToClone)); +exports.cloneDeep = cloneDeep; +const isObject = (item) => { + return item && typeof item === "object" && !Array.isArray(item); +}; +exports.isObject = isObject; +const mergeDeep = (target, ...sources) => { + if (!sources.length) + return target; + const source = sources.shift(); + if ((0, exports.isObject)(target) && (0, exports.isObject)(source)) { + for (const key in source) { + if ((0, exports.isObject)(source[key])) { + if (!target[key]) + Object.assign(target, { [key]: {} }); + (0, exports.mergeDeep)(target[key], source[key]); + } + else { + Object.assign(target, { [key]: source[key] }); + } + } + } + return (0, exports.mergeDeep)(target, ...sources); +}; +exports.mergeDeep = mergeDeep; +const getArmorRating = ({ _props: { Slots, Weight }, _name, _id }, items) => { + let armorClassWithCoverage = 1; + if (Slots?.length > 0) { + Slots.forEach((mod) => { + const multiplier = (mod._props.filters[0]?.armorColliders?.length || + mod._props.filters[0]?.armorPlateColliders?.length) * 3; + if (mod._props.filters[0]?.Plate !== undefined) { + const plateId = mod._props.filters[0].Plate === "" + ? mod._props.filters[0].Filter[0] + : mod._props.filters[0].Plate; + if (plateId) { + const armorClass = Number(items[plateId]?._props?.armorClass || 0); + if (armorClass > 0) { + armorClassWithCoverage += armorClass * multiplier; + if (armorClass >= 3) + armorClassWithCoverage += multiplier; + } + } + } + }); + } + // console.log(armorClassWithCoverage, _name, _id); + return armorClassWithCoverage; +}; +exports.getArmorRating = getArmorRating; +const getAmmoWeighting = ({ _props: { PenetrationPower, Damage, InitialSpeed, ProjectileCount }, _id, _name, }) => { + let penBonus = (PenetrationPower - 20) * 10; + if (penBonus < 0) + penBonus = 0; + const damBonus = ProjectileCount > 1 ? Damage * ProjectileCount * 0.1 : Damage; + let speedBonus = InitialSpeed > 600 ? 10 : 0; + const rating = Math.round(penBonus + speedBonus + damBonus); + // if (rating > 20) console.log(rating || 3, _name) + return rating || 3; +}; +exports.getAmmoWeighting = getAmmoWeighting; +const getHeadwearRating = (item, items) => { + let rating = (0, exports.getArmorRating)(item, items); + const hasNvg = !!item._props.Slots.find((slot) => slot._name === "mod_nvg"); + if (hasNvg) + rating += 2; + if (item._props?.BlocksEarpiece) + rating *= 0.2; + // console.log( + // Math.round(rating * 1.5 - item._props.Weight), + // "-", + // item._name, + // rating, + // item._props.Weight, + // item._props?.BlocksEarpiece, + // hasNvg, + // item._id + // ); + return Math.round(rating * 1.5 - item._props.Weight) || 1; +}; +exports.getHeadwearRating = getHeadwearRating; +const getEquipmentType = (id, items) => { + const equipmentKeys = Object.keys(exports.equipmentIdMapper); + for (let index = 0; index < equipmentKeys.length; index++) { + const key = equipmentKeys[index]; + if ((0, exports.checkParentRecursive)(id, items, exports.equipmentIdMapper[key])) { + return key; + } + } +}; +exports.getEquipmentType = getEquipmentType; +const getHighestScoringAmmoValue = (ammoWeight) => { + let highestValue = 1; + let highestKey = ""; + for (const key in ammoWeight) { + const value = ammoWeight[key]; + if (value > highestValue) { + highestValue = value; + highestKey = key; + } + } + // console.log(highestKey, highestValue) + return highestValue; +}; +exports.getHighestScoringAmmoValue = getHighestScoringAmmoValue; +const getWeaponWeighting = ({ _props: { Ergonomics, BoltAction, weapClass, weapFireType, RecoilForceUp, ReloadMode, } = {}, _name, _id, }, highestScoringAmmo) => { + let ammo = highestScoringAmmo; + let gun = Ergonomics; + if (_id === "5bfd297f0db834001a669119") + ammo * 0.7; //Make mosin infantry less desirable + if (weapFireType.length === 1 && weapFireType.includes("single")) + ammo = ammo * 0.8; + if (ReloadMode.includes("OnlyBarrel")) + ammo = ammo / 4; + if (RecoilForceUp > 200) + ammo = ammo * 0.8; + if (BoltAction) + ammo = ammo / 2; + if (weapFireType.includes("fullauto")) + ammo = ammo * 1.2; + if (weapClass !== "pistol" && RecoilForceUp < 100) + ammo * 1.2; + if (new Set(["64ca3d3954fc657e230529cc", "64637076203536ad5600c990"]).has(_id)) { + gun *= 0.5; + } + const finalValue = Math.round(gun + ammo); + // if (finalValue > 5) console.log(finalValue > 0 ? finalValue : 1, Math.round(ammo), Math.round(gun), _name, weapClass) + return finalValue > 1 ? finalValue : 1; +}; +exports.getWeaponWeighting = getWeaponWeighting; +const getBackPackInternalGridValue = ({ _props: { Grids, Weight } = {}, _name, _id, }) => { + let total = 0; + Grids.forEach(({ _props }) => { + total += _props?.cellsH * _props?.cellsV; + // if the backpack can't hold "Items" give it a severe lower ranking + if (_props.filters?.[0]?.Filter?.length && + !_props.filters?.[0]?.Filter?.includes("54009119af1c881c07000029")) { + total = total / 6; + } + }); + // if (total > 20) total += 20; + total = Math.round(total - Weight) * 5; + if (total < 0) + total = 1; + // console.log(total, _name, Weight); + if (["6034d103ca006d2dca39b3f0", "6038d614d10cbf667352dd44"].includes(_id)) { + total = Math.round(total * 0.7); + } + return total > 1 ? total : 1; +}; +exports.getBackPackInternalGridValue = getBackPackInternalGridValue; +const getTacticalVestValue = (item, items) => { + const { Grids } = item._props; + let spaceTotal = 0; + Grids.forEach(({ _props }) => { + spaceTotal += _props?.cellsH * _props?.cellsV; + }); + if (spaceTotal > 12) + spaceTotal += 20; + spaceTotal = Math.round(spaceTotal - item._props.Weight); + const armorRating = (0, exports.getArmorRating)(item, items) * 0.8; + // console.log( + // Math.round( + // armorRating > spaceTotal ? armorRating + spaceTotal : spaceTotal * 2 + // ), + // armorRating > spaceTotal ? "armor" : "vest", + // item._name, + // item._id + // ); + return Math.round(armorRating > spaceTotal ? armorRating + spaceTotal : spaceTotal * 2); +}; +exports.getTacticalVestValue = getTacticalVestValue; +exports.equipmentIdMapper = { + Headwear: [exports.headwearParent], + Earpiece: ["5645bcb74bdc2ded0b8b4578"], + FaceCover: ["5a341c4686f77469e155819e"], + Eyewear: ["5448e5724bdc2ddf718b4568"], + ArmBand: ["5b3f15d486f77432d0509248"], + ArmorVest: ["5448e54d4bdc2dcc718b4568"], + TacticalVest: ["5448e5284bdc2dcb718b4567"], + Pockets: ["557596e64bdc2dc2118b4571"], + Backpack: ["5448e53e4bdc2d60728b4567"], + FirstPrimaryWeapon: [ + "5447b5fc4bdc2d87278b4567", + "5447b5f14bdc2d61278b4567", + "5447bedf4bdc2d87278b4568", + "5447bed64bdc2d97278b4568", + "5447b6194bdc2d67278b4567", + "5447b6094bdc2dc3278b4567", + "5447b5e04bdc2d62278b4567", + "5447b6254bdc2dc3278b4568", + "5447bee84bdc2dc3278b4569", + ], + // SecondPrimaryWeapon: [], + Holster: ["617f1ef5e8b54b0998387733", "5447b5cf4bdc2d65278b4567"], + Scabbard: ["5447e1d04bdc2dff2f8b4567"], + // mod_magazine: [ + // "5448bc234bdc2d3c308b4569", + // "610720f290b75a49ff2e5e25" + // ], + // // Stock: ["55818a594bdc2db9688b456a"], + // mod_scope: [...Object.values(SightType)], +}; +const getCurrentLevelRange = (currentLevel) => { + for (const key in config_json_1.levelRange) { + const { min, max } = config_json_1.levelRange[key]; + if (currentLevel >= min && currentLevel <= max) + return key; + } +}; +exports.getCurrentLevelRange = getCurrentLevelRange; +exports.numList = [1, 2, 3, 4, 5]; +const arrSum = (arr) => arr.reduce((a, b) => a + b, 0); +exports.arrSum = arrSum; +const setupBaseWhiteList = () => { + return exports.numList.map((num) => ({ + levelRange: config_json_1.levelRange[num], + equipment: {}, + cartridge: {}, + })); +}; +exports.setupBaseWhiteList = setupBaseWhiteList; +const setWhitelists = (items, botConfig, tradersMasterList, mods) => { + exports.numList.forEach((num, index) => { + const loyalty = num; + const whitelist = botConfig.equipment.pmc.whitelist; + const itemList = [...tradersMasterList[loyalty]]; + whitelist[index].equipment = { + ...whitelist[index].equipment, + ...mods[num], + }; + itemList.forEach((id) => { + const item = items[id]; + const parent = item._parent; + const equipmentType = (0, exports.getEquipmentType)(parent, items); + switch (true) { + // Check if revolver shotgun + case id === "60db29ce99594040e04c4a27": + whitelist[index].equipment["FirstPrimaryWeapon"] = [ + ...(whitelist[index].equipment["FirstPrimaryWeapon"] + ? whitelist[index].equipment["FirstPrimaryWeapon"] + : []), + id, + ]; + break; + // Check if sawed-off shotgun + case id === "64748cb8de82c85eaf0a273a": + whitelist[index].equipment["Holster"] = [ + ...(whitelist[index].equipment["Holster"] + ? whitelist[index].equipment["Holster"] + : []), + id, + ]; + break; + case !!equipmentType: + whitelist[index].equipment[equipmentType] = [ + ...(whitelist[index].equipment[equipmentType] + ? whitelist[index].equipment[equipmentType] + : []), + id, + ]; + break; + default: + break; + } + }); + if (!!whitelist[index + 1]) { + whitelist[index + 1].equipment = (0, exports.cloneDeep)(whitelist[index].equipment); + } + }); + // console.log(JSON.stringify(botConfig.equipment.pmc.whitelist)) +}; +exports.setWhitelists = setWhitelists; +const buildEmptyWeightAdjustments = () => { + return exports.numList.map((num) => ({ + levelRange: config_json_1.levelRange[num], + ammo: { + add: {}, + edit: {}, + }, + equipment: { + add: {}, + edit: {}, + }, + clothing: { + add: {}, + edit: {}, + }, + })); +}; +exports.buildEmptyWeightAdjustments = buildEmptyWeightAdjustments; +const multiplyAndRound = (num1, num2) => Math.round(num1 * num2); +const setWeightItem = (weight, equipmentType, id, rating, tierMultiplier) => { + // if (add) { + // weight.equipment.add[equipmentType] = { + // ...weight.equipment.add[equipmentType] || {}, + // [id]: rating + // } + // } else { + weight.equipment.edit[equipmentType] = { + ...(weight.equipment.edit[equipmentType] || {}), + [id]: multiplyAndRound(rating, tierMultiplier) || 1, + }; + // } +}; +const setWeightingAdjustments = (items, botConfig, tradersMasterList, mods) => { + const weight = botConfig.equipment.pmc.weightingAdjustmentsByBotLevel; + const itemsForNextLevel = {}; + exports.numList.forEach((num, index) => { + const loyalty = num; + const itemList = [...tradersMasterList[loyalty]]; + const finalList = [ + ...new Set([ + ...(advancedConfig_json_1.default.forbiddenBullets[num] || []), + ...(itemsForNextLevel[num] || []), + ...itemList, + ]), + ]; + // First edit ammo + finalList.forEach((id) => { + if (num < 4 && exports.combinedForbiddenBullets.has(id)) + return; //console.log(num, items[id]._name, id) + const item = items[id]; + const parent = item._parent; + // Ammo Parent + if ((0, exports.checkParentRecursive)(parent, items, [exports.AmmoParent])) { + const calibre = item._props.Caliber || item._props.ammoCaliber; + if (num + 1 < 6) { + if (!itemsForNextLevel[num + 1]) + itemsForNextLevel[num + 1] = new Set([]); + itemsForNextLevel[num + 1].add(id); + } + if (!weight[index]?.ammo.edit?.[calibre]) { + weight[index].ammo.edit = { + ...weight[index].ammo.edit, + [calibre]: {}, + }; + } + const ammoWeight = (0, exports.getAmmoWeighting)(item); + weight[index].ammo.edit[calibre] = { + ...(weight[index].ammo.edit[calibre] || {}), + [id]: ammoWeight, + }; + } + }); + }); + //Make bad ammos worse, better ones better + exports.numList.forEach((num, index) => { + Object.keys(weight[index].ammo.edit).forEach((caliber) => { + const caliberList = Object.keys(weight[index].ammo.edit[caliber]).sort((a, b) => weight[index].ammo.edit[caliber][b] - + weight[index].ammo.edit[caliber][a]); + caliberList.forEach((id, rank) => { + if (caliberList.length > 1 && rank > 0) { + if (rank > 3) + weight[index].ammo.edit[caliber][id] = 5; + const modifier = (caliberList.length - rank) / caliberList.length; + weight[index].ammo.edit[caliber][id] = + Math.round(weight[index].ammo.edit[caliber][id] * modifier) || 5; + if (weight[index].ammo.edit[caliber][id] === 1) + weight[index].ammo.edit[caliber][id] = 5; + } + }); + }); + // console.log(JSON.stringify(weight[index].ammo.edit)) + }); + //Make best ammos have a chance of use at lower level + weight.reverse().forEach((currentItem, index) => { + const nextItem = weight?.[index + 1]; + if (nextItem) { + Object.keys(nextItem.ammo.edit).forEach((caliber) => { + if (currentItem.ammo.edit[caliber]) { + const max = Math.max(...Object.values(nextItem.ammo.edit[caliber])); + const maxValueForHighTier = Math.round(config_json_1.default.higherTierAmmoChance * max); + const nextAmmoIdList = new Set(Object.keys(nextItem.ammo.edit[caliber] || {})); + const currentTierItemList = Object.keys(currentItem.ammo.edit[caliber]) + .filter((id) => !nextAmmoIdList.has(id) && + currentItem.ammo.edit[caliber][id] > maxValueForHighTier) + .sort((a, b) => currentItem.ammo.edit[caliber][b] - + currentItem.ammo.edit[caliber][a]); + currentTierItemList.forEach((id, rank) => { + weight[index + 1].ammo.edit[caliber][id] = Math.round(maxValueForHighTier / (currentTierItemList.length - rank)); + }); + } + }); + } + }); + weight.reverse(); + // Apply randomness + weight.forEach(({ ammo }, index) => { + Object.keys(ammo.edit).forEach((calbr) => { + const list = weight[index].ammo.edit[calbr]; + const keys = Object.keys(list); + const sortedValues = Object.values(list).sort((a, b) => a - b); + const middleIndex = 0 + Math.round((sortedValues.length - 1) / 2); + const medianValue = sortedValues[middleIndex]; + const highestValue = sortedValues[sortedValues.length - 1]; + const lowestValue = sortedValues[0]; + const betterValue = Math.round((medianValue + highestValue + lowestValue) / 3); + if (betterValue >= 1) { + keys.forEach((key) => { + const valToAdjust = list[key]; + if (valToAdjust > 5) { + const adjustedAmountMax = betterValue - valToAdjust; + const amountAfterAdjustment = Math.round(valToAdjust + adjustedAmountMax * config_json_1.default.randomness.Ammo); + if (weight[index].ammo.edit[calbr][key]) { + weight[index].ammo.edit[calbr][key] = Math.abs(amountAfterAdjustment); + } + } + }); + } + }); + }); + // saveToFile(weight, "refDBS/weight1.json"); //------------------------------------------------------------------------------ + // for (const category in weight.ammo.edit) { + // const randomnessMultiplier = config?.randomness?.[category]; + // if (!randomnessMultiplier) return; + // const list = weight[index].equipment.edit[category]; + // const keys = Object.keys(list); + // const sortedValues = Object.values(list).sort((a, b) => a - b); + // const middleIndex = 0 + Math.round((sortedValues.length - 1) / 2); + // const medianValue = sortedValues[middleIndex]; + // const highestValue = sortedValues[sortedValues.length - 1]; + // const lowestValue = sortedValues[0]; + // const betterValue = Math.round( + // (medianValue + highestValue + lowestValue) / 3 + // ); + // if (betterValue > 1) { + // keys.forEach((key) => { + // const valToAdjust = list[key]; + // if (valToAdjust > 5) { + // const adjustedAmountMax = betterValue - valToAdjust; + // const amountAfterAdjustment = Math.round( + // valToAdjust + adjustedAmountMax * randomnessMultiplier + // ); + // if (weight[index].equipment.edit[category][key]) { + // weight[index].equipment.edit[category][key] = Math.abs( + // amountAfterAdjustment + // ); + // } + // } + // }); + // } + // } + // saveToFile(weight, "refDBS/weight1.json"); + //------------------------------------------------------------------------------ + exports.numList.forEach((actualNum, index) => { + exports.numList.forEach((num) => { + if (num > actualNum) + return; + const itemList = [...tradersMasterList[num]]; + itemList.forEach((id) => { + const item = items[id]; + const parent = item._parent; + const equipmentType = (0, exports.getEquipmentType)(parent, items); + const itemIsArmor = Number(item._props.armorClass) > 0; + const isLowList = actualNum - num >= (itemIsArmor ? 1 : 3); + const tierMultiplier = isLowList ? 0 : num / actualNum; + if (equipmentType) { + if (!weight[index]?.equipment?.edit?.[equipmentType]) { + weight[index].equipment.edit = { + ...weight[index].equipment.edit, + [equipmentType]: {}, + }; + } + } + switch (equipmentType) { + case "FirstPrimaryWeapon": + case "Holster": + if (num + 1 < 6) { + if (!itemsForNextLevel[num + 1]) + itemsForNextLevel[num + 1] = new Set([]); + itemsForNextLevel[num + 1].add(id); + } + const calibre = item._props.Caliber || item._props.ammoCaliber; + const highestScoringAmmo = (0, exports.getHighestScoringAmmoValue)(weight[index].ammo.edit[calibre]); + const weaponRating = (0, exports.getWeaponWeighting)(item, highestScoringAmmo); + switch (id) { + // Check if revolver shotgun + case "60db29ce99594040e04c4a27": + setWeightItem(weight[index], "FirstPrimaryWeapon", id, weaponRating, tierMultiplier); + break; + // Check if sawed-off shotgun + case "64748cb8de82c85eaf0a273a": + setWeightItem(weight[index], "Holster", id, weaponRating, tierMultiplier); + break; + default: + setWeightItem(weight[index], equipmentType, id, weaponRating, tierMultiplier); + break; + } + break; + case "Headwear": + const rating = (0, exports.getHeadwearRating)(item, items); + setWeightItem(weight[index], equipmentType, id, Math.round(rating), tierMultiplier); + break; + case "Earpiece": + const ambientVolumeBonus = item?._props?.AmbientVolume * -1; + const compressorBonus = item?._props?.CompressorVolume * -0.5; + setWeightItem(weight[index], equipmentType, id, Math.round(compressorBonus + ambientVolumeBonus), tierMultiplier); + break; + case "FaceCover": + setWeightItem(weight[index], equipmentType, id, Math.round((item._props.BlocksHeadwear ? 0.1 : 1) * + (item._props.ExamineExperience || 0) + + (item._props.LootExperience || 0)), tierMultiplier); + break; + case "ArmorVest": + const armorRating = (0, exports.getArmorRating)(item, items); + setWeightItem(weight[index], equipmentType, id, armorRating, tierMultiplier); + break; + case "ArmBand": + setWeightItem(weight[index], equipmentType, id, 20, tierMultiplier); + break; + case "Scabbard": + setWeightItem(weight[index], equipmentType, id, Math.round((item._props.StabPenetration || 0) + + (item._props.SlashPenetration || 0) + + (item._props.ExamineExperience || 0) + + (item._props.LootExperience || 0)), tierMultiplier); + break; + case "Eyewear": + setWeightItem(weight[index], equipmentType, id, Math.round(item._props.LootExperience + item._props.BlindnessProtection * 5) || 3, tierMultiplier); + break; + case "Backpack": + const backpackInternalGridValue = (0, exports.getBackPackInternalGridValue)(item); + setWeightItem(weight[index], equipmentType, id, backpackInternalGridValue, tierMultiplier); + break; + case "TacticalVest": + const tacticalVestWeighting = (0, exports.getTacticalVestValue)(item, items); + setWeightItem(weight[index], equipmentType, id, tacticalVestWeighting, tierMultiplier); + break; + default: + // switch (true) { + // case checkParentRecursive(id, items, [medsParent]): + // setWeightItem( + // weight[index], + // "SecuredContainer", + // id, + // num * 10, + // tierMultiplier + // ); + // break; + // default: + // break; + // } + break; + } + }); + }); + for (const category in weight[index].equipment.edit) { + const randomnessMultiplier = config_json_1.default?.randomness?.[category]; + if (!randomnessMultiplier) + return; + const list = weight[index].equipment.edit[category]; + const keys = Object.keys(list); + const sortedValues = Object.values(list).sort((a, b) => a - b); + const middleIndex = 0 + Math.round((sortedValues.length - 1) / 2); + const medianValue = sortedValues[middleIndex]; + const highestValue = sortedValues[sortedValues.length - 1]; + const lowestValue = sortedValues[0]; + const betterValue = Math.round((medianValue + highestValue + lowestValue) / 3); + if (betterValue > 1) { + keys.forEach((key) => { + const valToAdjust = list[key]; + if (valToAdjust > 5) { + const adjustedAmountMax = betterValue - valToAdjust; + const amountAfterAdjustment = Math.round(valToAdjust + adjustedAmountMax * randomnessMultiplier); + if (weight[index].equipment.edit[category][key]) { + weight[index].equipment.edit[category][key] = Math.abs(amountAfterAdjustment); + } + } + }); + } + } + }); + // const list: { [key: string]: string[] } = {} + // tradersMasterList[5].forEach(id => { + // const parent = items[id]?._parent + // if (!parent) return + // const equipmentType = getEquipmentType(parent, items) + // if (equipmentType) { + // if (!list?.[equipmentType]) list[equipmentType] = [] + // list[equipmentType].push(id) + // } else if (checkParentRecursive(parent, items, [AmmoParent])) { + // if (!list?.["ammo"]) list["ammo"] = [] + // list.ammo.push(id) + // } + // }) + // saveToFile({ list }, "refDBS/tier5.json") +}; +exports.setWeightingAdjustments = setWeightingAdjustments; +const addAllMedsToInventory = (traderList, inventory, items) => { + traderList.forEach((id) => { + if ((0, exports.checkParentRecursive)(id, items, [exports.medsParent])) { + if (inventory.equipment.SecuredContainer?.[id] || + inventory.equipment.SecuredContainer[id] !== 1) { + // console.log(items[id]._name); + inventory.equipment.SecuredContainer[id] = 1; + } + } + }); +}; +exports.addAllMedsToInventory = addAllMedsToInventory; +const combineWhitelist = (equipmentFilters) => { + const combinedWhitelist = { + levelRange: { + min: 1, + max: 99, + }, + equipment: {}, + cartridge: {}, + }; + equipmentFilters.whitelist.forEach((list, index) => { + for (const key in list) { + if (key !== "levelRange") { + for (const subKey in list[key]) { + const value = equipmentFilters.whitelist[index]?.[key]?.[subKey]; + if (value) { + combinedWhitelist[key][subKey] = (0, exports.deDupeArr)([ + ...(!!combinedWhitelist[key][subKey] + ? combinedWhitelist[key][subKey] + : []), + ...value, + ]); + } + } + } + } + }); + equipmentFilters.whitelist = [combinedWhitelist]; + // saveToFile(equipmentFilters.whitelist, "refDBS/equipmentFilters.json"); +}; +exports.combineWhitelist = combineWhitelist; +const addRecursive = (modId, items, weaponId, mods, count = 0) => { + if (count > 115) + return false; + const newModObject = {}; + let pass = false; + if (items[modId]?._props?.Slots?.length > 0) { + items[modId]._props.Slots.forEach((mod) => { + if (mod._props?.filters?.[0]?.Filter?.length) { + newModObject[mod._name] = mod._props.filters[0].Filter.filter((id) => { + if (exports.blacklistedItems.has(id)) + return false; + count += 1; + addRecursive(id, items, weaponId, mods, count); + return true; + }); + pass = true; + } + }); + } + if (pass && Object.keys(newModObject).length) { + mods[modId] = newModObject; + } +}; +const buildOutModsObject = (traderList, items, inventory, botConfig) => { + traderList.forEach((id) => { + const item = items[id]; + const newModObject = {}; + if (!exports.blacklistedItems.has(id) && + (0, exports.checkParentRecursive)(item._parent, items, [ + exports.magParent, + exports.weaponParent, + exports.headwearParent, + exports.armorParent, + exports.rigParent, + ])) { + switch (true) { + case (0, exports.checkParentRecursive)(item._parent, items, [exports.magParent]): + // if (item?._props?.Height * item?._props?.Width < 3) { + const bulletList = item?._props?.Cartridges?.[0]?._props?.filters?.[0]?.Filter.filter((_tpl) => !!_tpl && !exports.blacklistedItems.has(_tpl)); + if (bulletList) { + newModObject["cartridges"] = bulletList; + inventory.mods[id] = newModObject; + } + // } else { + // config.debug && + // console.warn( + // id, + // item._name, + // item?._props?.Cartridges?.[0]?._max_count + // ); + // } + break; + case (0, exports.checkParentRecursive)(item._parent, items, [exports.weaponParent]): //Weapon + if (item?._props?.Slots?.length > 0) { + item._props.Slots.forEach((mod) => { + // newModObject[mod._name] = mod._props?.filters[0].Filter.filter((_tpl) => !!_tpl && !blacklistedItems.has(_tpl) && checkForScopeTypeRecursive(_tpl, items, id, inventory.mods)) + // } else + if (mod._props?.filters?.[0]?.Filter?.length) { + newModObject[mod._name] = mod._props.filters[0].Filter.filter((_tpl) => { + if (!!_tpl && !exports.blacklistedItems.has(_tpl)) { + addRecursive(_tpl, items, id, inventory.mods); + return true; + } + return false; + }); + } + }); + } + if (item._props?.Chambers?.[0]?._name === "patron_in_weapon" && + item._props?.Chambers?.[0]?._props?.filters?.[0]?.Filter?.length) { + newModObject["patron_in_weapon"] = + item._props.Chambers[0]._props?.filters[0].Filter.filter((_tpl) => !!_tpl && !exports.blacklistedItems.has(_tpl)); + } + if (Object.keys(newModObject)) { + inventory.mods[id] = newModObject; + } + break; + case (0, exports.checkParentRecursive)(item._parent, items, [ + exports.armorParent, + exports.rigParent, + exports.headwearParent, + ]): //armor/vest + if (item?._props?.Slots?.length > 0) { + const newModObject = {}; + item._props.Slots.forEach((mod) => { + newModObject[mod._name] = mod._props.filters[0].Filter.filter((_tpl) => { + addRecursive(_tpl, items, id, inventory.mods); + return !!_tpl && !exports.blacklistedItems.has(_tpl); + }); + // } + }); + inventory.mods[id] = newModObject; + } + break; + default: + // console.log(items[item._parent]._name, id) + break; + } + } + }); + traderList.forEach((id) => { + const item = items[id]; + const newModObject = mappedPresets_json_1.default[id] + ? mappedPresets_json_1.default[id] + : {}; + if (!inventory.mods[id] && + !exports.blacklistedItems.has(id) && + (0, exports.checkParentRecursive)(item._parent, items, [exports.modParent])) { + if (item?._props?.Slots?.length > 0) { + item._props.Slots.forEach((mod) => { + if (mod._props?.filters?.[0]?.Filter?.length) { + switch (true) { + case mod._name?.includes("scope") && + (0, exports.checkParentRecursive)(item._parent, items, [ + exports.handguardParent, + exports.gasblockParent, + ]) /*gasblockParent,*/: + if (!newModObject[mod._name]) + newModObject[mod._name] = []; + break; + // case mod._name?.includes("scope"): + // newModObject[mod._name] = mod._props?.filters[0].Filter.filter((_tpl) => siteWhiteList["5447bedf4bdc2d87278b4568"].includes(_tpl)) + // console.log(item._name, newModObject[mod._name]) + default: + newModObject[mod._name] = (0, exports.deDupeArr)([ + ...(newModObject[mod._name] ? newModObject[mod._name] : []), + ...mod._props?.filters[0].Filter.filter((_tpl) => !exports.blacklistedItems.has(_tpl)), + ]); + break; + } + } + }); + if (Object.keys(newModObject)) { + inventory.mods[id] = newModObject; + } + } + } + }); + // console.log(JSON.stringify(inventory.mods)) +}; +exports.buildOutModsObject = buildOutModsObject; +const buildInitialRandomization = (items, botConfig, traderList, lootingBotsDetected) => { + const randomizationItems = []; + exports.numList.forEach((num, index) => { + const range = config_json_1.levelRange[num]; + const newItem = { + levelRange: range, + randomisedArmorSlots: ["TacticalVest", "ArmorVest"], + randomisedWeaponModSlots: [], + equipment: { + Headwear: [75, 85, 99, 99, 99][index], + Earpiece: [55, 75, 95, 100, 100][index], + FaceCover: [25, 35, 65, 75, 90][index], + ArmorVest: index < 2 ? 100 : 70, // [99, 99, 99, 99, 99][index], + ArmBand: [25, 45, 59, 69, 80][index], + // TacticalVest: [96, 96, 99, 99, 99][index], + Pockets: [25, 45, 59, 69, 80][index], + SecondPrimaryWeapon: [0, 0, 0, 0, 5][index], + SecuredContainer: 100, + Scabbard: [1, 5, 5, 10, 40][index], + FirstPrimaryWeapon: [85, 98, 99, 99, 99][index], + Holster: [1, 5, 10, 10, 25][index], + Eyewear: [15, 25, 40, 60, 75][index], + Backpack: [70, 85, 90, 99, 99][index], + }, + generation: { + stims: { + weights: [ + { + "0": 5, + "1": 1, + }, + { + "0": 3, + "1": 1, + }, + { + "0": 2, + "1": 1, + }, + { + "0": 6, + "1": 5, + "2": 1, + }, + { + "0": 5, + "1": 5, + "2": 1, + }, + ][index], + whitelist: { + ...(randomizationItems[index - 1]?.generation.stims.whitelist || + {}), + }, + }, + drugs: { + weights: [ + { + "0": 1, + "1": 3, + }, + { + "0": 1, + "1": 4, + }, + { + "0": 1, + "1": 5, + }, + { + "0": 0, + "1": 5, + "2": 1, + }, + { + "0": 0, + "1": 3, + "2": 1, + }, + ][index], + whitelist: { + ...(randomizationItems[index - 1]?.generation.drugs.whitelist || + {}), + }, + }, + healing: { + weights: [ + { + "0": 1, + "1": 6, + }, + { + "0": 1, + "1": 8, + }, + { + "0": 1, + "1": 12, + }, + { + "0": 1, + "1": 25, + "2": 5, + }, + { + "0": 0, + "1": 3, + "2": 1, + }, + ][index], + whitelist: { + ...(randomizationItems[index - 1]?.generation.healing.whitelist || + {}), + }, + }, + grenades: { + weights: [ + { + "0": 1, + "1": 1, + }, + { + "0": 2, + "1": 2, + "2": 1, + }, + { + "0": 1, + "1": 2, + "2": 1, + }, + { + "0": 1, + "1": 2, + "2": 2, + }, + { + "0": 0, + "1": 2, + "2": 2, + "3": 1, + }, + ][index], + whitelist: { + ...(randomizationItems[index - 1]?.generation.grenades.whitelist || + {}), + }, + }, + backpackLoot: { + weights: lootingBotsDetected + ? { + "0": 1, + } + : [ + { + "0": 1, + "1": 2, + "2": 2, + "3": 1, + "4": 1, + }, + { + "0": 1, + "1": 1, + "2": 2, + "3": 2, + "4": 2, + "5": 1, + }, + { + "0": 0, + "1": 1, + "2": 1, + "3": 1, + "4": 2, + "5": 2, + "6": 1, + "7": 1, + }, + { + "0": 0, + "1": 0, + "2": 1, + "3": 1, + "4": 3, + "5": 2, + "6": 2, + "7": 1, + }, + { + "0": 0, + "1": 0, + "2": 0, + "3": 0, + "4": 1, + "5": 1, + "6": 3, + "7": 2, + "8": 2, + }, + ][index], + whitelist: {}, + }, + pocketLoot: { + weights: lootingBotsDetected + ? { + "0": 1, + } + : [ + { + "0": 4, + "1": 1, + "2": 1, + }, + { + "0": 3, + "1": 2, + "2": 1, + }, + { + "0": 2, + "1": 2, + "2": 1, + "3": 1, + }, + { + "0": 1, + "1": 2, + "2": 1, + "3": 1, + }, + { + "0": 1, + "1": 1, + "2": 2, + "3": 1, + }, + ][index], + whitelist: {}, + }, + vestLoot: { + weights: lootingBotsDetected + ? { + "0": 1, + } + : [ + { + "0": 3, + "1": 1, + "2": 1, + }, + { + "0": 2, + "1": 2, + "2": 1, + "4": 1, + }, + { + "0": 1, + "1": 1, + "2": 2, + "3": 2, + "5": 2, + }, + { + "0": 1, + "1": 1, + "2": 1, + "3": 2, + "4": 2, + "5": 2, + }, + { + "0": 0, + "1": 2, + "3": 2, + "4": 1, + "5": 1, + }, + ][index], + whitelist: {}, + }, + magazines: { + weights: [ + { + "0": 0, + "1": 1, + "2": 1, + }, + { + "0": 0, + "1": 1, + "2": 1, + }, + { + "0": 0, + "1": 0, + "2": 1, + "3": 1, + }, + { + "0": 0, + "1": 0, + "2": 1, + "3": 1, + }, + { + "0": 0, + "1": 0, + "2": 1, + "3": 1, + }, + ][index], + whitelist: botConfig.equipment.pmc?.whitelist[index]?.equipment + ?.mod_magazine + ? (() => { + const result = {}; + botConfig.equipment.pmc.whitelist[index]?.equipment?.mod_magazine.forEach((item) => { + result[item] = 1; + }); + return result; + })() + : {}, + }, + }, + weaponMods: { + mod_barrel: [5, 20, 35, 55, 65][index], + mod_bipod: [1, 10, 5, 11, 50][index], + mod_flashlight: [5, 35, 65, 80, 90][index], + mod_foregrip: [10, 40, 70, 90, 95][index], + mod_handguard: [5, 40, 70, 90, 95][index], + mod_launcher: [0, 0, 5, 15, 50][index], + mod_magazine: [50, 60, 80, 90, 95][index], + mod_magazine_000: [0, 0, 25, 75, 90][index], + mod_mount: [75, 95, 100, 100, 100][index], + mod_mount_000: [20, 45, 75, 90, 95][index], + mod_mount_001: [20, 45, 75, 90, 95][index], + mod_mount_002: [20, 45, 75, 90, 95][index], + mod_mount_003: [20, 45, 75, 90, 95][index], + mod_mount_004: [20, 45, 75, 90, 95][index], + mod_mount_005: [20, 45, 75, 90, 95][index], + mod_mount_006: [20, 45, 75, 90, 95][index], + mod_muzzle: [5, 15, 35, 70, 100][index], + mod_muzzle_000: [5, 15, 55, 100, 100][index], + mod_muzzle_001: [5, 15, 80, 100, 100][index], + mod_equipment: [15, 25, 45, 75, 90][index], + mod_equipment_000: [0, 0, 10, 35, 45][index], + mod_equipment_001: [0, 0, 10, 35, 45][index], + mod_equipment_002: [0, 0, 10, 35, 45][index], + mod_pistol_grip_akms: [1, 25, 45, 55, 80][index], + mod_pistol_grip: [1, 25, 45, 65, 80][index], + mod_scope: [30, 70, 100, 100, 100][index], + mod_scope_000: [30, 80, 100, 100, 100][index], + mod_scope_001: [30, 80, 100, 100, 100][index], + mod_scope_002: [30, 80, 100, 100, 100][index], + mod_scope_003: [30, 80, 100, 100, 100][index], + mod_tactical: [15, 30, 65, 70, 95][index], + mod_tactical_2: 0, + mod_tactical001: [5, 25, 45, 70, 85][index], + mod_tactical002: [5, 25, 45, 70, 85][index], + mod_tactical_000: [1, 5, 10, 45, 65][index], + mod_tactical_001: [1, 5, 10, 45, 65][index], + mod_tactical_002: [15, 30, 55, 70, 95][index], + mod_tactical_003: [15, 30, 55, 70, 95][index], + mod_charge: [10, 20, 55, 70, 95][index], + mod_stock: [5, 15, 55, 70, 95][index], + mod_stock_000: 99, + // "mod_stock_001": [1, 10, 15, 20][index], + mod_stock_akms: 100, + mod_sight_front: [90, 40, 5, 0, 0][index], + mod_sight_rear: [90, 40, 5, 0, 0][index], + // "mod_reciever": 100, + // "mod_gas_block": [1, 10, 15, 20][index], + mod_pistolgrip: [1, 15, 45, 55, 90][index], + // "mod_trigger": 1, + // "mod_hammer": 1, + // "mod_catch": 1 + }, + equipmentMods: { + mod_nvg: 0, + back_plate: [80, 90, 100, 100, 100][index], + front_plate: [80, 90, 100, 100, 100][index], + left_side_plate: [50, 80, 90, 90, 100][index], + right_side_plate: [50, 80, 90, 90, 100][index], + mod_flashlight: [5, 25, 35, 45, 70][index], + mod_equipment: [15, 25, 25, 35, 70][index], + mod_equipment_000: [0, 0, 0, 5, 20][index], + mod_equipment_001: [0, 0, 5, 15, 25][index], + mod_equipment_002: [0, 0, 5, 15, 25][index], + }, + }; + traderList[num].forEach((id) => { + const item = items[id]; + const parent = item._parent; + switch (true) { + case (0, exports.checkParentRecursive)(parent, items, num >= 3 ? [exports.painKillerParent, exports.stimParent] : [exports.painKillerParent]): //stims + // console.log(id, item._name, 5 - index); + newItem.generation.stims.whitelist[id] = num * num * 5; + break; + case (0, exports.checkParentRecursive)(parent, items, [exports.medicalParent]): //drugs + newItem.generation.drugs.whitelist[id] = num * num * 5; + break; + case (0, exports.checkParentRecursive)(parent, items, [exports.medKitParent]): //meds + newItem.generation.healing.whitelist[id] = num * num * 5; + // medkitsAdd[num].forEach((addId: string) => { + // newItem.generation.healing.whitelist[addId] = num * num * 5; + // }); + // medkitsRemove[num].forEach((removeId: string) => { + // delete newItem.generation.healing.whitelist[removeId]; + // }); + break; + case (0, exports.checkParentRecursive)(parent, items, ["543be6564bdc2df4348b4568"]): //ThrowWeap + if (items[id]._props.ThrowType !== "smoke_grenade") { + newItem.generation.grenades.whitelist[id] = num * num * 5; + } + break; + default: + break; + } + }); + randomizationItems.push(newItem); + }); + botConfig.lootItemResourceRandomization["pmc"] = { + food: { + resourcePercent: 50, + chanceMaxResourcePercent: 90, + }, + meds: { + resourcePercent: 50, + chanceMaxResourcePercent: 70, + }, + }; + botConfig.equipment.pmc["forceStock"] = advancedConfig_json_1.default.forceStock; + botConfig.equipment.pmc.randomisation = randomizationItems; + // console.log(JSON.stringify(randomizationItems)); +}; +exports.buildInitialRandomization = buildInitialRandomization; +const buildInitialUsecAppearance = (appearance, items) => { + appearance.feet = { + "5cde95ef7d6c8b04713c4f2d": 15, + }; + appearance.body = { + "5cde95d97d6c8b647a3769b0": 15, + }; + Object.keys(items).forEach((itemId) => { + const item = items[itemId]; + if (item?._props?.Side?.includes("Usec")) + switch (true) { + case item._props.BodyPart === "Head": + if (!appearance.head[itemId]) + appearance.head[itemId] = 10; + break; + case item._props.BodyPart === "Hands": + if (!appearance.hands[itemId]) + appearance.hands[itemId] = 10; + break; + default: + break; + } + }); +}; +exports.buildInitialUsecAppearance = buildInitialUsecAppearance; +const buildInitialBearAppearance = (appearance, items) => { + appearance.feet = { + "5cc085bb14c02e000e67a5c5": 10, + }; + appearance.body = { + "5cc0858d14c02e000c6bea66": 10, + }; + Object.keys(items).forEach((itemId) => { + const item = items[itemId]; + if (item?._props?.Side?.includes("Bear")) + switch (true) { + case item._props.BodyPart === "Head": + if (!appearance.head[itemId]) + appearance.head[itemId] = 10; + break; + case item._props.BodyPart === "Hands": + if (!appearance.hands[itemId]) + appearance.hands[itemId] = 10; + break; + // case item._parent === "5fc100cf95572123ae738483": + // if (!appearance.voice.includes(item._name)) appearance.voice.push(item._name) + // break; + default: + break; + } + }); +}; +exports.buildInitialBearAppearance = buildInitialBearAppearance; +const buildClothingWeighting = (suit, items, botConfig, usecAppearance, bearAppearance) => { + (0, exports.buildInitialUsecAppearance)(usecAppearance, items); + (0, exports.buildInitialBearAppearance)(bearAppearance, items); + const levels = Object.values(config_json_1.levelRange); + suit.forEach(({ suiteId, requirements: { profileLevel, loyaltyLevel } = {} }) => { + if (!profileLevel || !suiteId || loyaltyLevel === undefined) + return; + if (profileLevel === 0) + profileLevel = 1; + const index = levels.findIndex(({ min, max }) => { + if (profileLevel >= min && profileLevel <= max) { + return true; + } + }); + if (index === -1) + return console.log("Unable to find index for clothing item", items[suiteId]?._name); + const clothingAdjust = botConfig.equipment.pmc.weightingAdjustmentsByBotLevel[index].clothing; + if (index === undefined) + return console.log("Empty index for: ", suiteId); + if (items[suiteId]?._props?.Body) { + switch (true) { + case !!items[suiteId]?._name?.toLowerCase().includes("bear"): + bearAppearance.body[items[suiteId]._props.Body] = 1; + break; + case !!items[suiteId]?._name?.toLowerCase().includes("usec"): + usecAppearance.body[items[suiteId]._props.Body] = 1; + break; + default: + bearAppearance.body[items[suiteId]._props.Body] = 1; + usecAppearance.body[items[suiteId]._props.Body] = 1; + break; + } + if (!clothingAdjust?.edit["body"]) + clothingAdjust.edit["body"] = {}; + clothingAdjust.edit["body"][items[suiteId]._props.Body] = + 10 + index * 30; + } + if (items[suiteId]?._props?.Feet) { + switch (true) { + case !!items[suiteId]?._name?.toLowerCase().includes("bear"): + bearAppearance.feet[items[suiteId]._props.Feet] = 1; + break; + case !!items[suiteId]?._name?.toLowerCase().includes("usec"): + usecAppearance.feet[items[suiteId]._props.Feet] = 1; + break; + default: + bearAppearance.feet[items[suiteId]._props.Feet] = 1; + usecAppearance.feet[items[suiteId]._props.Feet] = 1; + break; + } + if (!clothingAdjust?.edit["feet"]) + clothingAdjust.edit["feet"] = {}; + clothingAdjust.edit["feet"][items[suiteId]._props.Feet] = + 10 + index * 30; + } + }); + // console.log(JSON.stringify(clothingAdjust)) + // saveToFile(items, "/customization.json") + // saveToFile(bearAppearance, "/bear.json") + // saveToFile(usecAppearance, "/usec.json") + // saveToFile(clothingAdjust, "/clothingWeighting.json") +}; +exports.buildClothingWeighting = buildClothingWeighting; +exports.weaponTypes = { + "5447b6254bdc2dc3278b4568": [SightType.AssaultScope, SightType.OpticScope], // SniperRifle + "5447b6194bdc2d67278b4567": [SightType.AssaultScope, SightType.OpticScope], // MarksmanRifle + "5447b5fc4bdc2d87278b4567": [SightType.Collimator, SightType.AssaultScope], // AssaultCarbine + "5447b5f14bdc2d61278b4567": [ + SightType.CompactCollimator, + SightType.Collimator, + SightType.AssaultScope, + ], // AssaultRifle + "5447bed64bdc2d97278b4568": [ + SightType.CompactCollimator, + SightType.Collimator, + ], // MachineGun + "5447b5e04bdc2d62278b4567": [ + SightType.CompactCollimator, + SightType.Collimator, + ], // Smg + "5447bee84bdc2dc3278b4569": [ + SightType.CompactCollimator, + SightType.Collimator, + ], // SpecialWeapon + "5447b6094bdc2dc3278b4567": [ + SightType.CompactCollimator, + SightType.Collimator, + ], // Shotgun + "5447b5cf4bdc2d65278b4567": [ + SightType.CompactCollimator, + SightType.Collimator, + ], // Pistol + "617f1ef5e8b54b0998387733": [ + SightType.CompactCollimator, + SightType.Collimator, + ], // Revolver + "5447bedf4bdc2d87278b4568": [ + SightType.CompactCollimator, + SightType.Collimator, + ], // GrenadeLauncher +}; +const buildWeaponSightWhitelist = (items, botConfig, { 1: a, 2: b, 3: c, 4: d, 5: e }) => { + delete botConfig.equipment.pmc.weaponSightWhitelist; + // botConfig.equipment.pmc.weaponSightWhitelist = {}; + return; + const sightWhitelist = botConfig.equipment.pmc.weaponSightWhitelist; + const traderItems = [...new Set([...a, ...b, ...c, ...d, ...e])]; //, ...d + const blacklist = new Set(InternalBlacklist_1.default); + traderItems.forEach((id) => { + if (blacklist.has(id)) + return; + if ((0, exports.checkParentRecursive)(id, items, Object.values(SightType))) { + for (const key in exports.weaponTypes) { + const sightsToCheck = exports.weaponTypes[key]; + if ((0, exports.checkParentRecursive)(id, items, sightsToCheck)) { + if (!sightWhitelist[key]) + sightWhitelist[key] = []; + sightWhitelist[key].push(id); + } + } + } + }); + // console.log(JSON.stringify(sightWhitelist)) +}; +exports.buildWeaponSightWhitelist = buildWeaponSightWhitelist; +const buildBlacklist = (items, botConfig, mods) => { + delete botConfig.equipment.pmc.blacklist[0].equipment.mod_magazine; + const currentBlacklist = (0, exports.cloneDeep)(botConfig.equipment.pmc.blacklist[0]); + botConfig.equipment.pmc.blacklist = []; + const blacklist = botConfig.equipment.pmc.blacklist; + // const itemsToAddToBlacklist = ["mod_scope", "mod_magazine"] + exports.numList.forEach((num, index) => { + const modList = mods[num]; + const range = config_json_1.levelRange[num]; + const loyalty = num; + const base = { ...(0, exports.cloneDeep)(currentBlacklist), levelRange: range }; + if (index < 2) { + exports.numList.splice(0, index + 2).forEach((numInner) => { + Object.keys(mods[numInner]).forEach((key) => { + if (!base.equipment[key]) + base.equipment[key] = []; + base.equipment[key].push(...mods[numInner][key]); + }); + }); + } + blacklist.push(base); + }); +}; +exports.buildBlacklist = buildBlacklist; +const deleteBlacklistedItemsFromInventory = (inventory, blacklist) => { + Object.keys(inventory.items).forEach((key) => { + Object.keys(inventory.items[key]).forEach((id) => { + if (blacklist.has(id)) + delete inventory.items[key][id]; + }); + }); + Object.keys(inventory.Ammo).forEach((calibre) => { + Object.keys(inventory.Ammo[calibre]).forEach((ammoKey) => { + if (blacklist.has(ammoKey)) { + delete inventory.Ammo[calibre][ammoKey]; + // console.log(calibre, ammoKey, inventory.Ammo[calibre][ammoKey]); + } + }); + }); + Object.keys(inventory.mods).forEach((key) => { + if (blacklist.has(key)) { + delete inventory.mods[key]; + } + else { + Object.keys(inventory.mods?.[key]).forEach((modtype) => { + if (inventory.mods[key][modtype]?.length) { + inventory.mods[key][modtype].filter((id) => !blacklist.has(id)); + } + }); + } + }); +}; +exports.deleteBlacklistedItemsFromInventory = deleteBlacklistedItemsFromInventory; +const ensureAllAmmoInSecuredContainer = (inventory) => { + const ammo = Object.keys(inventory.Ammo) + .map((calbr) => Object.keys(inventory.Ammo[calbr])) + .flat(); + inventory?.items?.SecuredContainer || {}; + ammo.forEach((id) => { + if (!inventory?.items?.SecuredContainer?.[id]) { + inventory.items.SecuredContainer[id] = 1; + } + }); + // const sortedAmmo = ammo.sort( + // (a, b) => getAmmoWeighting(items[a]) - getAmmoWeighting(items[b]) + // ); + // saveToFile({ sortedAmmo }, "refDBS/ammoList.json"); +}; +exports.ensureAllAmmoInSecuredContainer = ensureAllAmmoInSecuredContainer; +const fixEmptyChancePlates = (botConfig) => { + const armorPlateWeighting = botConfig.equipment.pmc.armorPlateWeighting; + for (const key in armorPlateWeighting) { + for (const subKey in armorPlateWeighting[key]) { + if (!armorPlateWeighting[key][subKey]?.min) { + for (const num in armorPlateWeighting[key][subKey]) { + if (armorPlateWeighting[key][subKey][num] === 0) { + armorPlateWeighting[key][subKey][num] = 1; + } + } + } + } + } +}; +exports.fixEmptyChancePlates = fixEmptyChancePlates; +const addBossSecuredContainer = (inventory) => { + inventory.equipment.SecuredContainer = { + "5c0a794586f77461c458f892": 1, + }; +}; +exports.addBossSecuredContainer = addBossSecuredContainer; +exports.combinedForbiddenBullets = new Set(Object.values(advancedConfig_json_1.default.forbiddenBullets).flat(1)); +exports.blacklistedItems = new Set([ + ...config_json_1.default.customBlacklist, + ...InternalBlacklist_1.default, +]); +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js.map b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js.map new file mode 100644 index 0000000..f22b7f4 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "utils.js", + "sourceRoot": "", + "sources": [ + "utils.ts" + ], + "names": [], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,2FAA8D;AAC9D,wEAA8D;AAO9D,4EAAoD;AACpD,yFAA4D;AAErD,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;IAC3C,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAChD,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAC9B,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;IACtE,EAAE,CAAC,SAAS,CACV,SAAS,GAAG,QAAQ,EACpB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAC7B,UAAU,GAAG;QACX,IAAI,GAAG;YAAE,MAAM,GAAG,CAAC;IACrB,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,UAAU,cAcrB;AAEW,QAAA,cAAc,GAAG,0BAA0B,CAAC;AAC5C,QAAA,UAAU,GAAG,0BAA0B,CAAC;AACxC,QAAA,SAAS,GAAG,0BAA0B,CAAC;AACvC,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAC1C,QAAA,aAAa,GAAG,0BAA0B,CAAC;AAC3C,QAAA,UAAU,GAAG,0BAA0B,CAAC;AACxC,QAAA,gBAAgB,GAAG,0BAA0B,CAAC;AAC9C,QAAA,aAAa,GAAG,0BAA0B,CAAC;AAC3C,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAC1C,QAAA,eAAe,GAAG,0BAA0B,CAAC;AAC7C,QAAA,UAAU,GAAG,0BAA0B,CAAC;AACxC,QAAA,SAAS,GAAG,0BAA0B,CAAC;AACvC,QAAA,SAAS,GAAG,0BAA0B,CAAC;AACvC,QAAA,WAAW,GAAG,0BAA0B,CAAC;AACzC,QAAA,WAAW,GAAG,0BAA0B,CAAC;AACzC,QAAA,WAAW,GAAG,0BAA0B,CAAC;AACzC,QAAA,gBAAgB,GAAG,0BAA0B,CAAC;AAC9C,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAC1C,QAAA,cAAc,GAAG,0BAA0B,CAAC;AAC5C,QAAA,cAAc,GAAG,0BAA0B,CAAC;AAC5C,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAC1C,QAAA,eAAe,GAAG,0BAA0B,CAAC;AAC7C,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAC1C,QAAA,WAAW,GAAG,0BAA0B,CAAC;AACzC,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAC1C,QAAA,WAAW,GAAG,0BAA0B,CAAC;AACzC,QAAA,SAAS,GAAG,0BAA0B,CAAC;AACvC,QAAA,gBAAgB,GAAG,0BAA0B,CAAC;AAE3D,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,sDAAyC,CAAA;IACzC,oDAAuC,CAAA;IACvC,2DAA8C,CAAA;IAC9C,oDAAuC,CAAA;IACvC,sDAAyC,CAAA;IACzC,uDAA0C,CAAA;IAC1C,qDAAwC,CAAA;AAC1C,CAAC,EARW,SAAS,yBAAT,SAAS,QAQpB;AAEY,QAAA,kBAAkB,GAAG;IAChC,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,0BAA0B;IACzC,cAAc,EAAE,0BAA0B;IAC1C,YAAY,EAAE,0BAA0B;IACxC,UAAU,EAAE,0BAA0B;IACtC,GAAG,EAAE,0BAA0B;IAC/B,aAAa,EAAE,0BAA0B;IACzC,OAAO,EAAE,0BAA0B;IACnC,MAAM,EAAE,0BAA0B;IAClC,QAAQ,EAAE,0BAA0B;IACpC,eAAe,EAAE,0BAA0B;CAC5C,CAAC;AAEK,MAAM,eAAe,GAAG,CAC7B,IAA4C,EAC5C,IAAY,EACZ,KAAoC,EACpC,YAAoB,EACpB,SAAiB,EAAE,EACnB,EAAE;IACF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAA,4BAAoB,EAAC,IAAI,EAAE,KAAK,EAAE,CAAC,iBAAS,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,CAAC;gBACvC,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM;QACR,KAAK,MAAM,KAAK,SAAS;YACvB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnE,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM;QACR,oEAAoE;QACpE,mFAAmF;QACnF,iDAAiD;QACjD,aAAa;QACb,8DAA8D;QAC9D,+FAA+F;QAC/F,uDAAuD;QACvD,aAAa;QACb,yDAAyD;QACzD,mFAAmF;QACnF,iDAAiD;QACjD,aAAa;QACb,0DAA0D;QAC1D,qFAAqF;QACrF,kDAAkD;QAClD,aAAa;QACb,4DAA4D;QAC5D,yFAAyF;QACzF,oDAAoD;QACpD,aAAa;QACb,4DAA4D;QAC5D,2FAA2F;QAC3F,qDAAqD;QACrD,aAAa;QACb,0DAA0D;QAC1D,qFAAqF;QACrF,kDAAkD;QAClD,aAAa;QACb,6DAA6D;QAC7D,2FAA2F;QAC3F,qDAAqD;QACrD,aAAa;QACb,0DAA0D;QAC1D,qFAAqF;QACrF,kDAAkD;QAClD,aAAa;QACb,yDAAyD;QACzD,mFAAmF;QACnF,iDAAiD;QACjD,aAAa;QAEb;YACE,MAAM;IACV,CAAC;AACH,CAAC,CAAC;AA7DW,QAAA,eAAe,mBA6D1B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,WAAwB,EACxB,KAAoC,EACpC,SAAqB,EACrB,EAAE;IACF,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACzB,IACE,EAAE;YACF,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO;YAClB,IAAA,4BAAoB,EAAC,EAAE,EAAE,KAAK,EAAE,CAAC,qBAAa,CAAC,CAAC,EAChD,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAChC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACjC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,gEAAgE;IAChE,kEAAkE;IAClE,0EAA0E;AAC5E,CAAC,CAAC;AAnBW,QAAA,gBAAgB,oBAmB3B;AAEK,MAAM,SAAS,GAAG,CAAC,IAA8C,EAAE,EAAE;IAC1E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;qBAC1D,CAAC;oBACJ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAbW,QAAA,SAAS,aAapB;AAEK,MAAM,yBAAyB,GAAG,CAAC,SAAqB,EAAE,EAAE;IACjE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACrD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACzD,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AARW,QAAA,yBAAyB,6BAQpC;AAEK,MAAM,oBAAoB,GAAG,CAAC,SAAqB,EAAE,EAAE;IAC5D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAClD,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AARW,QAAA,oBAAoB,wBAQ/B;AAEK,MAAM,SAAS,GAAG,CAAC,GAAU,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAA9C,QAAA,SAAS,aAAqC;AAEpD,MAAM,oBAAoB,GAAG,CAClC,QAAgB,EAChB,KAAoC,EACpC,QAAkB,EACT,EAAE;IACX,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO;QAAE,OAAO,KAAK,CAAC;IAE9C,OAAO,IAAA,4BAAoB,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B;AAEK,MAAM,SAAS,GAAG,CAAC,aAAkB,EAAE,EAAE,CAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;AAD/B,QAAA,SAAS,aACsB;AAErC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;IAC/B,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEK,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE;IAC9C,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAE,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;oBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvD,IAAA,iBAAS,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAA,iBAAS,EAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAhBW,QAAA,SAAS,aAgBpB;AAEK,MAAM,cAAc,GAAG,CAC5B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAiB,EACxD,KAAoC,EAC5B,EAAE;IACV,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACpB,MAAM,UAAU,GACd,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM;gBAC5C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAE5D,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/C,MAAM,OAAO,GACX,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;oBAChC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBACjC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAClC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;oBACnE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;wBACnB,sBAAsB,IAAI,UAAU,GAAG,UAAU,CAAC;wBAClD,IAAI,UAAU,IAAI,CAAC;4BAAE,sBAAsB,IAAI,UAAU,CAAC;oBAC5D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mDAAmD;IACnD,OAAO,sBAAsB,CAAC;AAChC,CAAC,CAAC;AA7BW,QAAA,cAAc,kBA6BzB;AAEK,MAAM,gBAAgB,GAAG,CAAC,EAC/B,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,EACnE,GAAG,EACH,KAAK,GACS,EAAU,EAAE;IAC1B,IAAI,QAAQ,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAC5C,IAAI,QAAQ,GAAG,CAAC;QAAE,QAAQ,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GACZ,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,IAAI,UAAU,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;IAC5D,mDAAmD;IAEnD,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC;AAdW,QAAA,gBAAgB,oBAc3B;AAEK,MAAM,iBAAiB,GAAG,CAC/B,IAAmB,EACnB,KAAoC,EACpC,EAAE;IACF,IAAI,MAAM,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAE5E,IAAI,MAAM;QAAE,MAAM,IAAI,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,EAAE,cAAc;QAAE,MAAM,IAAI,GAAG,CAAC;IAC/C,eAAe;IACf,mDAAmD;IACnD,SAAS;IACT,gBAAgB;IAChB,YAAY;IACZ,wBAAwB;IACxB,iCAAiC;IACjC,YAAY;IACZ,aAAa;IACb,KAAK;IACL,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC,CAAC;AApBW,QAAA,iBAAiB,qBAoB5B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,EAAU,EACV,KAAoC,EACpC,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAC;IACrD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAElB,CAAC;QACd,IAAI,IAAA,4BAAoB,EAAC,EAAE,EAAE,KAAK,EAAE,yBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B;AAEK,MAAM,0BAA0B,GAAG,CACxC,UAAkC,EAC1B,EAAE;IACV,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;YACzB,YAAY,GAAG,KAAK,CAAC;YACrB,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC;IACH,CAAC;IACD,wCAAwC;IACxC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAdW,QAAA,0BAA0B,8BAcrC;AAEK,MAAM,kBAAkB,GAAG,CAChC,EACE,MAAM,EAAE,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,GACX,GAAG,EAAE,EACN,KAAK,EACL,GAAG,GACW,EAChB,kBAA0B,EAClB,EAAE;IACV,IAAI,IAAI,GAAG,kBAAkB,CAAC;IAC9B,IAAI,GAAG,GAAG,UAAU,CAAC;IACrB,IAAI,GAAG,KAAK,0BAA0B;QAAE,IAAI,GAAG,GAAG,CAAC,CAAC,oCAAoC;IACxF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC9D,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;IACpB,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IACvD,IAAI,aAAa,GAAG,GAAG;QAAE,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;IAC3C,IAAI,UAAU;QAAE,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IAChC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;IACzD,IAAI,SAAS,KAAK,QAAQ,IAAI,aAAa,GAAG,GAAG;QAAE,IAAI,GAAG,GAAG,CAAC;IAC9D,IACE,IAAI,GAAG,CAAC,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAC1E,CAAC;QACD,GAAG,IAAI,GAAG,CAAC;IACb,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAC1C,wHAAwH;IACxH,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAjCW,QAAA,kBAAkB,sBAiC7B;AAEK,MAAM,4BAA4B,GAAG,CAAC,EAC3C,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAC9B,KAAK,EACL,GAAG,GACW,EAAU,EAAE;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3B,KAAK,IAAI,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;QACzC,oEAAoE;QACpE,IACE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM;YACnC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EAClE,CAAC;YACD,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,+BAA+B;IAE/B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC;QAAE,KAAK,GAAG,CAAC,CAAC;IACzB,qCAAqC;IAErC,IAAI,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AA1BW,QAAA,4BAA4B,gCA0BvC;AAEK,MAAM,oBAAoB,GAAG,CAClC,IAAmB,EACnB,KAAoC,EAC5B,EAAE;IACV,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3B,UAAU,IAAI,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,IAAI,UAAU,GAAG,EAAE;QAAE,UAAU,IAAI,EAAE,CAAC;IACtC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;IACtD,eAAe;IACf,gBAAgB;IAChB,2EAA2E;IAC3E,OAAO;IACP,iDAAiD;IACjD,gBAAgB;IAChB,aAAa;IACb,KAAK;IACL,OAAO,IAAI,CAAC,KAAK,CACf,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CACrE,CAAC;AACJ,CAAC,CAAC;AAvBW,QAAA,oBAAoB,wBAuB/B;AAEW,QAAA,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,CAAC,sBAAc,CAAC;IAC1B,QAAQ,EAAE,CAAC,0BAA0B,CAAC;IACtC,SAAS,EAAE,CAAC,0BAA0B,CAAC;IACvC,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,SAAS,EAAE,CAAC,0BAA0B,CAAC;IACvC,YAAY,EAAE,CAAC,0BAA0B,CAAC;IAC1C,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,QAAQ,EAAE,CAAC,0BAA0B,CAAC;IACtC,kBAAkB,EAAE;QAClB,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;KAC3B;IACD,2BAA2B;IAC3B,OAAO,EAAE,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IACjE,QAAQ,EAAE,CAAC,0BAA0B,CAAC;IACtC,kBAAkB;IAClB,kCAAkC;IAClC,iCAAiC;IACjC,KAAK;IACL,0CAA0C;IAC1C,4CAA4C;CAC7C,CAAC;AAIK,MAAM,oBAAoB,GAAG,CAClC,YAAoB,EACG,EAAE;IACzB,KAAK,MAAM,GAAG,IAAI,wBAAU,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,wBAAU,CAAC,GAAG,CAAW,CAAC;QAC/C,IAAI,YAAY,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG;YAAE,OAAO,GAAgB,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,oBAAoB,wBAO/B;AAEW,QAAA,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhC,MAAM,MAAM,GAAG,CAAC,GAAa,EAAU,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAAnE,QAAA,MAAM,UAA6D;AAEzE,MAAM,kBAAkB,GAAG,GAA8B,EAAE;IAChE,OAAO,eAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3B,UAAU,EAAE,wBAAU,CAAC,GAAG,CAAC;QAC3B,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;KACd,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B;AAUK,MAAM,aAAa,GAAG,CAC3B,KAAoC,EACpC,SAAqB,EACrB,iBAAoC,EACpC,IAA8C,EAC9C,EAAE;IACF,eAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC;QACpB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QACpD,MAAM,QAAQ,GAAG,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjD,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG;YAC3B,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS;YAC7B,GAAG,IAAI,CAAC,GAAG,CAAC;SACb,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEtD,QAAQ,IAAI,EAAE,CAAC;gBACb,4BAA4B;gBAC5B,KAAK,EAAE,KAAK,0BAA0B;oBACpC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG;wBACjD,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC;4BAClD,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC;4BAClD,CAAC,CAAC,EAAE,CAAC;wBACP,EAAE;qBACH,CAAC;oBACF,MAAM;gBACR,6BAA6B;gBAC7B,KAAK,EAAE,KAAK,0BAA0B;oBACpC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;wBACtC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;4BACvC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;4BACvC,CAAC,CAAC,EAAE,CAAC;wBACP,EAAE;qBACH,CAAC;oBACF,MAAM;gBACR,KAAK,CAAC,CAAC,aAAa;oBAClB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG;wBAC1C,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;4BAC3C,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;4BAC3C,CAAC,CAAC,EAAE,CAAC;wBACP,EAAE;qBACH,CAAC;oBACF,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,iEAAiE;AACnE,CAAC,CAAC;AA1DW,QAAA,aAAa,iBA0DxB;AAEK,MAAM,2BAA2B,GACtC,GAAkC,EAAE;IAClC,OAAO,eAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3B,UAAU,EAAE,wBAAU,CAAC,GAAG,CAAC;QAC3B,IAAI,EAAE;YACJ,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;SACT;QACD,SAAS,EAAE;YACT,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;SACT;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;SACT;KACF,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAjBS,QAAA,2BAA2B,+BAiBpC;AAEJ,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE,CAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAE1B,MAAM,aAAa,GAAG,CACpB,MAAmC,EACnC,aAAqB,EACrB,EAAU,EACV,MAAc,EACd,cAAsB,EACtB,EAAE;IACF,aAAa;IACb,8CAA8C;IAC9C,wDAAwD;IACxD,uBAAuB;IACvB,QAAQ;IACR,WAAW;IACX,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG;QACrC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;KACpD,CAAC;IACF,IAAI;AACN,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CACrC,KAAoC,EACpC,SAAqB,EACrB,iBAAoC,EACpC,IAA8C,EAC9C,EAAE;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC;IAEtE,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAE7B,eAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC;QACpB,MAAM,QAAQ,GAAG,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG;YAChB,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,CAAC,6BAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC/C,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjC,GAAG,QAAQ;aACZ,CAAC;SACH,CAAC;QAEF,kBAAkB;QAClB,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACvB,IAAI,GAAG,GAAG,CAAC,IAAI,gCAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO,CAAC,uCAAuC;YAChG,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,cAAc;YACd,IAAI,IAAA,4BAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,CAAC,kBAAU,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC/D,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC;wBAC7B,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC3C,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG;wBACxB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI;wBAC1B,CAAC,OAAO,CAAC,EAAE,EAAE;qBACd,CAAC;gBACJ,CAAC;gBAED,MAAM,UAAU,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;gBAE1C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;oBACjC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC3C,CAAC,EAAE,CAAC,EAAE,UAAU;iBACjB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,eAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACpE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACtC,CAAC;YACF,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;gBAC/B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;oBACvC,IAAI,IAAI,GAAG,CAAC;wBAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACvD,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;oBAClE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;wBAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACnE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;wBAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,uDAAuD;IACzD,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAClD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACpE,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CACpC,qBAAM,CAAC,oBAAoB,GAAG,GAAG,CAClC,CAAC;oBAEF,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAC/C,CAAC;oBAEF,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CACrC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAC/B;yBACE,MAAM,CACL,CAAC,EAAE,EAAE,EAAE,CACL,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;wBACvB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAC3D;yBACA,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBACjC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACpC,CAAC;oBAEJ,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;wBACvC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CACnD,mBAAmB,GAAG,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,CAC1D,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,EAAE,CAAC;IAEjB,mBAAmB;IACnB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,CAAC,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAC/C,CAAC;YAEF,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,iBAAiB,GAAG,WAAW,GAAG,WAAW,CAAC;wBACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CACtC,WAAW,GAAG,iBAAiB,GAAG,qBAAM,CAAC,UAAU,CAAC,IAAI,CACzD,CAAC;wBACF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;4BACxC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAC5C,qBAAqB,CACtB,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8HAA8H;IAE9H,6CAA6C;IAC7C,iEAAiE;IACjE,uCAAuC;IACvC,yDAAyD;IACzD,oCAAoC;IACpC,oEAAoE;IACpE,uEAAuE;IACvE,mDAAmD;IACnD,gEAAgE;IAChE,yCAAyC;IACzC,oCAAoC;IACpC,qDAAqD;IACrD,OAAO;IAEP,2BAA2B;IAC3B,8BAA8B;IAC9B,uCAAuC;IACvC,+BAA+B;IAC/B,+DAA+D;IAC/D,oDAAoD;IACpD,mEAAmE;IACnE,aAAa;IACb,6DAA6D;IAC7D,oEAAoE;IACpE,oCAAoC;IACpC,eAAe;IACf,YAAY;IACZ,UAAU;IACV,UAAU;IACV,MAAM;IACN,IAAI;IAEJ,6CAA6C;IAC7C,gFAAgF;IAEhF,eAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACnC,eAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,GAAG,GAAG,SAAS;gBAAE,OAAO;YAC5B,MAAM,QAAQ,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAE7C,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACtB,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC5B,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAEtD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAEvD,MAAM,SAAS,GAAG,SAAS,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC;gBAEvD,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;wBACrD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG;4BAC7B,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI;4BAC/B,CAAC,aAAa,CAAC,EAAE,EAAE;yBACpB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,QAAQ,aAAa,EAAE,CAAC;oBACtB,KAAK,oBAAoB,CAAC;oBAC1B,KAAK,SAAS;wBACZ,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BAChB,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC;gCAC7B,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;4BAC3C,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACrC,CAAC;wBAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;wBAC/D,MAAM,kBAAkB,GAAG,IAAA,kCAA0B,EACnD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CACjC,CAAC;wBACF,MAAM,YAAY,GAAG,IAAA,0BAAkB,EAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;wBAElE,QAAQ,EAAE,EAAE,CAAC;4BACX,4BAA4B;4BAC5B,KAAK,0BAA0B;gCAC7B,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,oBAAoB,EACpB,EAAE,EACF,YAAY,EACZ,cAAc,CACf,CAAC;gCACF,MAAM;4BACR,6BAA6B;4BAC7B,KAAK,0BAA0B;gCAC7B,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,SAAS,EACT,EAAE,EACF,YAAY,EACZ,cAAc,CACf,CAAC;gCACF,MAAM;4BACR;gCACE,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,YAAY,EACZ,cAAc,CACf,CAAC;gCACF,MAAM;wBACV,CAAC;wBACD,MAAM;oBACR,KAAK,UAAU;wBACb,MAAM,MAAM,GAAG,IAAA,yBAAiB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC9C,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAClB,cAAc,CACf,CAAC;wBACF,MAAM;oBACR,KAAK,UAAU;wBACb,MAAM,kBAAkB,GAAG,IAAI,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;wBAC5D,MAAM,eAAe,GAAG,IAAI,EAAE,MAAM,EAAE,gBAAgB,GAAG,CAAC,GAAG,CAAC;wBAC9D,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,kBAAkB,CAAC,EAChD,cAAc,CACf,CAAC;wBACF,MAAM;oBACR,KAAK,WAAW;wBACd,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,IAAI,CAAC,KAAK,CACR,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BACpC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;4BACpC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,CACpC,EACD,cAAc,CACf,CAAC;wBACF,MAAM;oBACR,KAAK,WAAW;wBACd,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAChD,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,WAAW,EACX,cAAc,CACf,CAAC;wBACF,MAAM;oBACR,KAAK,SAAS;wBACZ,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;wBACpE,MAAM;oBACR,KAAK,UAAU;wBACb,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,IAAI,CAAC,KAAK,CACR,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;4BAChC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;4BACnC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;4BACpC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,CACpC,EACD,cAAc,CACf,CAAC;wBACF,MAAM;oBACR,KAAK,SAAS;wBACZ,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,CAAC,CACjE,IAAI,CAAC,EACN,cAAc,CACf,CAAC;wBACF,MAAM;oBACR,KAAK,UAAU;wBACb,MAAM,yBAAyB,GAC7B,IAAA,oCAA4B,EAAC,IAAI,CAAC,CAAC;wBACrC,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,yBAAyB,EACzB,cAAc,CACf,CAAC;wBACF,MAAM;oBACR,KAAK,cAAc;wBACjB,MAAM,qBAAqB,GAAG,IAAA,4BAAoB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAEhE,aAAa,CACX,MAAM,CAAC,KAAK,CAAC,EACb,aAAa,EACb,EAAE,EACF,qBAAqB,EACrB,cAAc,CACf,CAAC;wBACF,MAAM;oBACR;wBACE,kBAAkB;wBAClB,wDAAwD;wBACxD,qBAAqB;wBACrB,uBAAuB;wBACvB,4BAA4B;wBAC5B,YAAY;wBACZ,kBAAkB;wBAClB,uBAAuB;wBACvB,SAAS;wBACT,aAAa;wBAEb,aAAa;wBACb,aAAa;wBACb,IAAI;wBACJ,MAAM;gBACV,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,GAAG,qBAAM,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,oBAAoB;gBAAE,OAAO;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,CAAC,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAC/C,CAAC;YAEF,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,iBAAiB,GAAG,WAAW,GAAG,WAAW,CAAC;wBACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CACtC,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CACvD,CAAC;wBACF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;4BAChD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CACpD,qBAAqB,CACtB,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,uCAAuC;IACvC,wCAAwC;IACxC,0BAA0B;IAC1B,4DAA4D;IAC5D,2BAA2B;IAC3B,+DAA+D;IAC/D,uCAAuC;IACvC,sEAAsE;IACtE,iDAAiD;IACjD,6BAA6B;IAC7B,QAAQ;IACR,KAAK;IACL,4CAA4C;AAC9C,CAAC,CAAC;AAhaW,QAAA,uBAAuB,2BAgalC;AAEK,MAAM,qBAAqB,GAAG,CACnC,UAAuB,EACvB,SAAqB,EACrB,KAAoC,EACpC,EAAE;IACF,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACxB,IAAI,IAAA,4BAAoB,EAAC,EAAE,EAAE,KAAK,EAAE,CAAC,kBAAU,CAAC,CAAC,EAAE,CAAC;YAClD,IACE,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;gBAC1C,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,EAC9C,CAAC;gBACD,gCAAgC;gBAChC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,qBAAqB,yBAgBhC;AAEK,MAAM,gBAAgB,GAAG,CAAC,gBAAkC,EAAE,EAAE;IACrE,MAAM,iBAAiB,GAAG;QACxB,UAAU,EAAE;YACV,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR;QACD,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACjE,IAAI,KAAK,EAAE,CAAC;wBACV,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAA,iBAAS,EAAC;4BACzC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gCAClC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gCAChC,CAAC,CAAC,EAAE,CAAC;4BACP,GAAG,KAAK;yBACT,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjD,0EAA0E;AAC5E,CAAC,CAAC;AA7BW,QAAA,gBAAgB,oBA6B3B;AAEF,MAAM,YAAY,GAAG,CACnB,KAAa,EACb,KAAoC,EACpC,QAAgB,EAChB,IAAW,EACX,KAAK,GAAG,CAAC,EACT,EAAE;IACF,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC7C,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;oBACnE,IAAI,wBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,OAAO,KAAK,CAAC;oBAC3C,KAAK,IAAI,CAAC,CAAC;oBACX,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC/C,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAChC,UAAuB,EACvB,KAAoC,EACpC,SAAqB,EACrB,SAAqB,EACrB,EAAE;IACF,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,YAAY,GAAG,EAA8B,CAAC;QACpD,IACE,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAA,4BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;gBACxC,iBAAS;gBACT,oBAAY;gBACZ,sBAAc;gBACd,mBAAW;gBACX,iBAAS;aACV,CAAC,EACF,CAAC;YACD,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,IAAA,4BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,iBAAS,CAAC,CAAC;oBACzD,wDAAwD;oBACxD,MAAM,UAAU,GACd,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAChE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAChD,CAAC;oBACJ,IAAI,UAAU,EAAE,CAAC;wBACf,YAAY,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;wBACxC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;oBACpC,CAAC;oBACD,WAAW;oBACX,kBAAkB;oBAClB,gBAAgB;oBAChB,QAAQ;oBACR,gBAAgB;oBAChB,8CAA8C;oBAC9C,KAAK;oBACL,IAAI;oBACJ,MAAM;gBACR,KAAK,IAAA,4BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,oBAAY,CAAC,CAAC,EAAE,QAAQ;oBACtE,IAAI,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;4BAChC,qLAAqL;4BACrL,SAAS;4BACT,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gCAC7C,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAC3D,CAAC,IAAI,EAAE,EAAE;oCACP,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wCAC1C,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;wCAC9C,OAAO,IAAI,CAAC;oCACd,CAAC;oCACD,OAAO,KAAK,CAAC;gCACf,CAAC,CACF,CAAC;4BACJ,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;oBACD,IACE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,kBAAkB;wBACxD,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAChE,CAAC;wBACD,YAAY,CAAC,kBAAkB,CAAC;4BAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CACtD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAChD,CAAC;oBACN,CAAC;oBACD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;oBACpC,CAAC;oBACD,MAAM;gBACR,KAAK,IAAA,4BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;oBAC7C,mBAAW;oBACX,iBAAS;oBACT,sBAAc;iBACf,CAAC,EAAE,YAAY;oBACd,IAAI,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpC,MAAM,YAAY,GAAG,EAAE,CAAC;wBACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;4BAChC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAC3D,CAAC,IAAI,EAAE,EAAE;gCACP,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gCAC9C,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BAC/C,CAAC,CACF,CAAC;4BACF,IAAI;wBACN,CAAC,CAAC,CAAC;wBACH,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;oBACpC,CAAC;oBACD,MAAM;gBACR;oBACE,6CAA6C;oBAC7C,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvB,MAAM,YAAY,GAAG,4BAAa,CAAC,EAAE,CAAC;YACpC,CAAC,CAAC,4BAAa,CAAC,EAAE,CAAC;YACnB,CAAC,CAAE,EAA+B,CAAC;QAErC,IACE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAA,4BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,iBAAS,CAAC,CAAC,EACtD,CAAC;YACD,IAAI,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAChC,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;wBAC7C,QAAQ,IAAI,EAAE,CAAC;4BACb,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;gCAC/B,IAAA,4BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;oCACxC,uBAAe;oCACf,sBAAc;iCACf,CAAC,CAAC,mBAAmB;gCACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;oCAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gCAC3D,MAAM;4BACR,qCAAqC;4BACrC,yIAAyI;4BACzI,mDAAmD;4BACnD;gCACE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAS,EAAC;oCAClC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oCAC3D,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CACtC;iCACF,CAAC,CAAC;gCACH,MAAM;wBACV,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,8CAA8C;AAChD,CAAC,CAAC;AA7IW,QAAA,kBAAkB,sBA6I7B;AAEK,MAAM,yBAAyB,GAAG,CACvC,KAAoC,EACpC,SAAqB,EACrB,UAA6B,EAC7B,mBAA4B,EAC5B,EAAE;IACF,MAAM,kBAAkB,GAA4B,EAAE,CAAC;IAEvD,eAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,wBAAU,CAAC,GAAG,CAAC,CAAC;QAE9B,MAAM,OAAO,GAA0B;YACrC,UAAU,EAAE,KAAK;YACjB,oBAAoB,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;YACnD,wBAAwB,EAAE,EAAE;YAC5B,SAAS,EAAE;gBACT,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACrC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACtC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,+BAA+B;gBAChE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACpC,6CAA6C;gBAC7C,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACpC,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3C,gBAAgB,EAAE,GAAG;gBACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAClC,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC/C,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAClC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACpC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;aACtC;YACD,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;qBACF,CAAC,KAAK,CAAC;oBACR,SAAS,EAAE;wBACT,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS;4BAC3D,EAAE,CAAC;qBACN;iBACF;gBACD,KAAK,EAAE;oBACL,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;qBACF,CAAC,KAAK,CAAC;oBACR,SAAS,EAAE;wBACT,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS;4BAC3D,EAAE,CAAC;qBACN;iBACF;gBACD,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,EAAE;yBACR;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,EAAE;4BACP,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;qBACF,CAAC,KAAK,CAAC;oBACR,SAAS,EAAE;wBACT,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS;4BAC7D,EAAE,CAAC;qBACN;iBACF;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;qBACF,CAAC,KAAK,CAAC;oBACR,SAAS,EAAE;wBACT,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS;4BAC9D,EAAE,CAAC;qBACN;iBACF;gBACD,YAAY,EAAE;oBACZ,OAAO,EAAE,mBAAmB;wBAC1B,CAAC,CAAC;4BACE,GAAG,EAAE,CAAC;yBACP;wBACH,CAAC,CAAC;4BACE;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;yBACF,CAAC,KAAK,CAAC;oBACZ,SAAS,EAAE,EAAE;iBACd;gBACD,UAAU,EAAE;oBACV,OAAO,EAAE,mBAAmB;wBAC1B,CAAC,CAAC;4BACE,GAAG,EAAE,CAAC;yBACP;wBACH,CAAC,CAAC;4BACE;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;yBACF,CAAC,KAAK,CAAC;oBACZ,SAAS,EAAE,EAAE;iBACd;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,mBAAmB;wBAC1B,CAAC,CAAC;4BACE,GAAG,EAAE,CAAC;yBACP;wBACH,CAAC,CAAC;4BACE;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;4BACD;gCACE,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;6BACP;yBACF,CAAC,KAAK,CAAC;oBACZ,SAAS,EAAE,EAAE;iBACd;gBACD,SAAS,EAAE;oBACT,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;wBACD;4BACE,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,CAAC;yBACP;qBACF,CAAC,KAAK,CAAC;oBACR,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS;wBAC7D,EAAE,YAAY;wBACd,CAAC,CAAC,CAAC,GAAG,EAAE;4BACJ,MAAM,MAAM,GAAG,EAAE,CAAC;4BAClB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAC/B,KAAK,CACN,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gCAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACnB,CAAC,CAAC,CAAC;4BACH,OAAO,MAAM,CAAC;wBAChB,CAAC,CAAC,EAAE;wBACN,CAAC,CAAC,EAAE;iBACP;aACF;YACD,UAAU,EAAE;gBACV,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACtC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACpC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACzC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACzC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACtC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACzC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3C,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBACzC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC5C,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC5C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC5C,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC5C,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC5C,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAChD,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3C,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBACzC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC7C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC7C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC7C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC7C,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACzC,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3C,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3C,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3C,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3C,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC7C,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC7C,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACvC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBACrC,aAAa,EAAE,EAAE;gBACjB,2CAA2C;gBAC3C,cAAc,EAAE,GAAG;gBACnB,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACxC,uBAAuB;gBACvB,2CAA2C;gBAC3C,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,oBAAoB;gBACpB,mBAAmB;gBACnB,iBAAiB;aAClB;YACD,aAAa,EAAE;gBACb,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC1C,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC3C,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC7C,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC9C,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC1C,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;gBAC3C,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;aAC5C;SACF,CAAC;QAEF,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,IAAA,4BAAoB,EACvB,MAAM,EACN,KAAK,EACL,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAgB,EAAE,kBAAU,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAgB,CAAC,CAC/D,EAAE,OAAO;oBACR,0CAA0C;oBAC1C,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;oBACvD,MAAM;gBACR,KAAK,IAAA,4BAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,CAAC,qBAAa,CAAC,CAAC,EAAE,OAAO;oBAChE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;oBACvD,MAAM;gBACR,KAAK,IAAA,4BAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,CAAC,oBAAY,CAAC,CAAC,EAAE,MAAM;oBAC9D,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;oBACzD,+CAA+C;oBAC/C,iEAAiE;oBACjE,MAAM;oBACN,qDAAqD;oBACrD,2DAA2D;oBAC3D,MAAM;oBAEN,MAAM;gBACR,KAAK,IAAA,4BAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,CAAC,0BAA0B,CAAC,CAAC,EAAE,WAAW;oBACjF,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,eAAe,EAAE,CAAC;wBACnD,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;oBAC5D,CAAC;oBACD,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,6BAA6B,CAAC,KAAK,CAAC,GAAG;QAC/C,IAAI,EAAE;YACJ,eAAe,EAAE,EAAE;YACnB,wBAAwB,EAAE,EAAE;SAC7B;QACD,IAAI,EAAE;YACJ,eAAe,EAAE,EAAE;YACnB,wBAAwB,EAAE,EAAE;SAC7B;KACF,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,6BAAc,CAAC,UAAU,CAAC;IAClE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,GAAG,kBAAkB,CAAC;IAC3D,mDAAmD;AACrD,CAAC,CAAC;AApcW,QAAA,yBAAyB,6BAocpC;AAEK,MAAM,0BAA0B,GAAG,CACxC,UAAuB,EACvB,KAAyC,EACzC,EAAE;IACF,UAAU,CAAC,IAAI,GAAG;QAChB,0BAA0B,EAAE,EAAE;KAC/B,CAAC;IACF,UAAU,CAAC,IAAI,GAAG;QAChB,0BAA0B,EAAE,EAAE;KAC/B,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;YACtC,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM;oBAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC3D,MAAM;gBACR,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO;oBACnC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;wBAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC7D,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAxBW,QAAA,0BAA0B,8BAwBrC;AAEK,MAAM,0BAA0B,GAAG,CACxC,UAAuB,EACvB,KAAyC,EACzC,EAAE;IACF,UAAU,CAAC,IAAI,GAAG;QAChB,0BAA0B,EAAE,EAAE;KAC/B,CAAC;IACF,UAAU,CAAC,IAAI,GAAG;QAChB,0BAA0B,EAAE,EAAE;KAC/B,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;YACtC,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM;oBAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC3D,MAAM;gBACR,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO;oBACnC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;wBAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC7D,MAAM;gBACR,oDAAoD;gBACpD,oFAAoF;gBACpF,aAAa;gBACb;oBACE,MAAM;YACV,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA3BW,QAAA,0BAA0B,8BA2BrC;AAEK,MAAM,sBAAsB,GAAG,CACpC,IAAa,EACb,KAAyC,EACzC,SAAqB,EACrB,cAA2B,EAC3B,cAA2B,EAC3B,EAAE;IACF,IAAA,kCAA0B,EAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,IAAA,kCAA0B,EAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,wBAAU,CAAC,CAAC;IAEzC,IAAI,CAAC,OAAO,CACV,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;QACjE,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO;QACpE,IAAI,YAAY,KAAK,CAAC;YAAE,YAAY,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;YAC9C,IAAI,YAAY,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,CAAC,CAAC;YACd,OAAO,OAAO,CAAC,GAAG,CAChB,wCAAwC,EACxC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CACtB,CAAC;QACJ,MAAM,cAAc,GAClB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAEzE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC1D,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC1D,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM;gBACR;oBACE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM;YACV,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;gBAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACpE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBACrD,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC1D,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC1D,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM;gBACR;oBACE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM;YACV,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;gBAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACpE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBACrD,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8CAA8C;IAC9C,2CAA2C;IAC3C,2CAA2C;IAC3C,2CAA2C;IAC3C,wDAAwD;AAC1D,CAAC,CAAC;AAzEW,QAAA,sBAAsB,0BAyEjC;AAEW,QAAA,WAAW,GAAG;IACzB,0BAA0B,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,cAAc;IAC1F,0BAA0B,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,gBAAgB;IAC5F,0BAA0B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,iBAAiB;IAC7F,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;QACpB,SAAS,CAAC,YAAY;KACvB,EAAE,eAAe;IAClB,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;KACrB,EAAE,aAAa;IAChB,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;KACrB,EAAE,MAAM;IACT,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;KACrB,EAAE,gBAAgB;IACnB,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;KACrB,EAAE,UAAU;IACb,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;KACrB,EAAE,SAAS;IACZ,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;KACrB,EAAE,WAAW;IACd,0BAA0B,EAAE;QAC1B,SAAS,CAAC,iBAAiB;QAC3B,SAAS,CAAC,UAAU;KACrB,EAAE,kBAAkB;CACtB,CAAC;AAEK,MAAM,yBAAyB,GAAG,CACvC,KAAoC,EACpC,SAAqB,EACrB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAqB,EACnD,EAAE;IACF,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpD,qDAAqD;IACrD,OAAO;IACP,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpE,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;IAC1E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,2BAAiB,CAAC,CAAC;IAC7C,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACzB,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO;QAC9B,IAAI,IAAA,4BAAoB,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC9D,KAAK,MAAM,GAAG,IAAI,mBAAW,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,mBAAW,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,IAAA,4BAAoB,EAAC,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;oBACnD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;wBAAE,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACnD,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,8CAA8C;AAChD,CAAC,CAAC;AAxBW,QAAA,yBAAyB,6BAwBpC;AAEK,MAAM,cAAc,GAAG,CAC5B,KAAoC,EACpC,SAAqB,EACrB,IAAqD,EACrD,EAAE;IACF,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;IAEpD,8DAA8D;IAC9D,eAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,wBAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC;QACpB,MAAM,IAAI,GAAG,EAAE,GAAG,IAAA,iBAAS,EAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACnE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,eAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;wBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA1BW,QAAA,cAAc,kBA0BzB;AAEK,MAAM,mCAAmC,GAAG,CACjD,SAAqB,EACrB,SAAsB,EACtB,EAAE;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACvD,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;gBACxC,mEAAmE;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrD,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;oBACzC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA9BW,QAAA,mCAAmC,uCA8B9C;AAEK,MAAM,+BAA+B,GAAG,CAAC,SAAqB,EAAE,EAAE;IACvE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACrC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAClD,IAAI,EAAE,CAAC;IAEV,SAAS,EAAE,KAAK,EAAE,gBAAgB,IAAI,EAAE,CAAC;IAEzC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QAClB,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IACH,kCAAkC;IAClC,wEAAwE;IACxE,OAAO;IACP,wDAAwD;AAC1D,CAAC,CAAC;AAhBW,QAAA,+BAA+B,mCAgB1C;AAEK,MAAM,oBAAoB,GAAG,CAAC,SAAqB,EAAE,EAAE;IAC5D,MAAM,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;gBAC3C,KAAK,MAAM,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnD,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAChD,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,oBAAoB,wBAa/B;AAEK,MAAM,uBAAuB,GAAG,CAAC,SAAqB,EAAE,EAAE;IAC/D,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG;QACrC,0BAA0B,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,uBAAuB,2BAIlC;AAEW,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAC7C,MAAM,CAAC,MAAM,CAAC,6BAAc,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACvD,CAAC;AAEW,QAAA,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,GAAG,qBAAM,CAAC,eAAe;IACzB,GAAG,2BAAiB;CACrB,CAAC,CAAC" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js new file mode 100644 index 0000000..32af52a --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js @@ -0,0 +1,603 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.applyValuesToStoredEquipment = exports.buildEmptyWeightAdjustmentsByDevision = exports.buffScavGearAsLevel = exports.setPlateWeightings = exports.addItemsToBotInventory = exports.normalizeMedianInventoryValues = exports.buldTieredItemTypes = void 0; +const utils_1 = require("../LoadoutChanges/utils"); +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const nonPmcBotConfig_json_1 = __importDefault(require("../../config/nonPmcBotConfig.json")); +const tablesbotstypesusec_json_1 = require("../Cache/tablesbotstypesusec.json"); +const botConfigequipmentpmc_json_1 = require("../Cache/botConfigequipmentpmc.json"); +const tieredItems_json_1 = __importDefault(require("../Constants/tieredItems.json")); +const mappedPresets_json_1 = __importDefault(require("../Constants/mappedPresets.json")); +const objectToOrderedList = (equipment, items) => Object.keys(equipment) + .sort((a, b) => equipment[a] - equipment[b]) + .map((id) => ({ id, value: equipment[id], name: items[id]._name })); +const blackList = new Set([ + "5e4abc6786f77406812bd572", + "628bc7fb408e2b2e9c0801b1", + "5b3b713c5acfc4330140bd8d", + "5e997f0b86f7741ac73993e2", + "5c0126f40db834002a125382", + "601948682627df266209af05", + "63495c500c297e20065a08b1", + "59ef13ca86f77445fd0e2483", + "670e8eab8c1bb0e5a7075acf", //mag_pm_izhmeh_9x18pm_999_infectedMagazin + "671d85439ae8365d69117ba6", //mag_tt_toz_std_762x25tt_999_infectedMagazin + "671d8617a3e45c1f5908278c", //mag_mp443_izhmeh_std_9x19_999_infectedMagazin + "671d8ac8a3e45c1f59082799", //mag_glock_glock_w_pad_9x19_999_fde_Infected + "671d8b38b769f0d88c0950f8", //mag_m1911_colt_m45a1_std_1143x23_999_infected + "671d8b8c0959c721a50ca838", //mag_usp_hk_usp_tactical_1143x23_999_infected + "628120f210e26c1f344e6558", // mxc broken mag +]); +const makeRare = new Set([ + "6038b4ca92ec1c3103795a0d", + "6038b4b292ec1c3103795a0b", + "5fd4c474dd870108a754b241", + "628b9c7d45122232a872358f", + "628baf0b967de16aab5a4f36", + "628b9784bcf6e2659e09b8a2", + "628baf0b967de16aab5a4f36", + "5c0e541586f7747fa54205c9", + "5bffdd7e0db834001b734a1a", +]); +const buldTieredItemTypes = (items) => { + const result = {}; + botConfigequipmentpmc_json_1.weightingAdjustmentsByBotLevel.forEach((weight, index) => { + if (index < 4) + // Prevents boss related gear appearing on normal bots + for (const key in weight.equipment.edit) { + Object.keys(weight.equipment.edit[key]).forEach((id) => { + if (blackList.has(id)) + return; + if (!result[key]) + result[key] = {}; + result[key][id] = Math.max(result[key][id] || 1, weight.equipment.edit[key][id]); + }); + } + }); + for (const key in result) { + for (const id in result[key]) { + if (makeRare.has(id)) { + result[key][id] = result[key][id] * 3; + } + } + } + for (const key in result) { + const equipmentSet = result[key]; + result[key] = objectToOrderedList(equipmentSet, items); + } + // AMMO + const ammo = {}; + for (const caliber in tablesbotstypesusec_json_1.inventory.Ammo) { + for (const ammoId in tablesbotstypesusec_json_1.inventory.Ammo[caliber]) { + if (items[ammoId]) { + ammo[ammoId] = (0, utils_1.getAmmoWeighting)(items[ammoId]); + } + } + } + result["Ammo"] = objectToOrderedList(ammo, items); + const map = {}; + for (const key in result) { + result[key].forEach(({ id, value }) => { + map[id] = value; + }); + } + result["mapper"] = map; + return result; +}; +exports.buldTieredItemTypes = buldTieredItemTypes; +const equipmentTypesTochange = new Set([ + "TacticalVest", + "ArmorVest", + "Backpack", + "Earpiece", + "Eyewear", + "Headwear", + "FaceCover", + // "Scabbard", + "FirstPrimaryWeapon", + "Holster", +]); +const getRating = (id, dflt = 10) => tieredItems_json_1.default.mapper[id] || dflt; +const normalizeMedianInventoryValues = (inventory) => { + for (const caliber in inventory.Ammo) { + let highest = 0; + Object.values(inventory.Ammo[caliber]).forEach((value) => { + if (value > highest) + highest = value; + }); + const multiplier = 100 / highest; + Object.keys(inventory.Ammo[caliber]).forEach((id) => { + inventory.Ammo[caliber][id] = + Math.round(inventory.Ammo[caliber][id] * multiplier) || 10; + }); + } + for (const equipmentType in inventory.equipment) { + if (equipmentTypesTochange.has(equipmentType)) { + let highest = 0; + Object.values(inventory.equipment[equipmentType]).forEach((value) => { + if (value > highest) + highest = value; + }); + const multiplier = 200 / highest; + Object.keys(inventory.equipment[equipmentType]).forEach((id) => { + inventory.equipment[equipmentType][id] = + Math.round(inventory.equipment[equipmentType][id] * multiplier) || 10; + }); + } + } +}; +exports.normalizeMedianInventoryValues = normalizeMedianInventoryValues; +const addItemsToBotInventory = (inventory, botToUpdate, items, isMarksman = false) => { + const { Ammo: botToUpdateAmmo, BasePlateChance, ...equipment } = botToUpdate; + const ammoToAdd = new Set([]); + Object.keys(tieredItems_json_1.default).forEach((key) => { + if (equipment[key]) { + const equipmentStart = equipment[key][0]; + const equipmentEnd = equipment[key][1]; + if (equipmentStart || equipmentEnd) { + const startIndex = Math.floor(tieredItems_json_1.default[key].length * equipmentStart); + const endIndex = Math.floor(tieredItems_json_1.default[key].length * equipmentEnd); + tieredItems_json_1.default[key] + .slice(startIndex, endIndex) + .forEach(({ id, value }) => { + if ((!botToUpdate.AllowSniperRifles && + (0, utils_1.checkParentRecursive)(id, items, [ + utils_1.weaponTypeNameToId.SniperRifle, + utils_1.weaponTypeNameToId.MarksmanRifle, + ])) || + (isMarksman && + key === "FirstPrimaryWeapon" && + !(0, utils_1.checkParentRecursive)(id, items, [ + utils_1.weaponTypeNameToId.SniperRifle, + utils_1.weaponTypeNameToId.MarksmanRifle, + utils_1.weaponTypeNameToId.AssaultCarbine, + ]))) { + // if (isMarksman && key === "FirstPrimaryWeapon") + // console.log(items[id]._name); + return; + } + if (utils_1.blacklistedItems.has(id) || blackList.has(id)) + return; + if (!inventory.equipment[key][id]) { + inventory.equipment[key][id] = value; + } + const item = items[id]; + if (inventory.mods[id]) + return; + switch (key) { + case "Headwear": + case "ArmorVest": + case "TacticalVest": + if (!inventory.mods[id]) { + const newModObject = {}; + item._props.Slots.forEach((mod) => { + if (mod._props.filters[0].Plate) { + newModObject[mod._name] = newModObject[mod._name] = [ + mod._props.filters[0].Plate, + ]; + } + }); + inventory.mods[id] = newModObject; + } + break; + case "FirstPrimaryWeapon": + case "Holster": + if (!tablesbotstypesusec_json_1.inventory.mods[id] || !mappedPresets_json_1.default[id]) { + break; + } + inventory.mods[id] = mappedPresets_json_1.default[id]; + // if (isMarksman) console.log(items[id]._name); + if (tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon"]) { + mappedPresets_json_1.default[id]["patron_in_weapon"] = + tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon"]; + } + if (tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_000"]) { + mappedPresets_json_1.default[id]["patron_in_weapon_000"] = + tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_000"]; + } + if (tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_001"]) { + mappedPresets_json_1.default[id]["patron_in_weapon_001"] = + tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_001"]; + } + const ammo = [ + ...(tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon"] + ? tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon"] + : []), + ...(tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_000"] + ? tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_000"] + : []), + ...(tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_001"] + ? tablesbotstypesusec_json_1.inventory.mods[id]["patron_in_weapon_001"] + : []), + ]; + ammo.forEach((id) => { + ammoToAdd.add(id); + }); + break; + default: + break; + } + }); + } + } + }); + if (botToUpdate?.Ammo?.[1] > 0) { + const Ammo = tieredItems_json_1.default.Ammo; + const ammoStart = botToUpdateAmmo[0]; + const ammoEnd = botToUpdateAmmo[1]; + if (ammoStart || ammoEnd) { + const startIndex = Math.floor(Ammo.length * ammoStart); + const endIndex = Math.floor(Ammo.length * ammoEnd); + const toAddAmmo = [...ammoToAdd] + .map((id) => ({ + id, + value: tieredItems_json_1.default.mapper[id], + })) + .sort((a, b) => a.value - b.value); + const toAddAmmoStartIndex = Math.floor(toAddAmmo.length * ammoStart); + const toAddAmmoEndIndex = Math.floor(toAddAmmo.length * ammoEnd); + [ + ...toAddAmmo.slice(toAddAmmoStartIndex, toAddAmmoEndIndex), + ...Ammo.slice(startIndex, endIndex), + ].forEach(({ id, value }) => { + const calibre = items[id]?._props?.Caliber || items[id]?._props?.ammoCaliber; + if (calibre && + inventory.Ammo[calibre] && + !inventory.Ammo?.[calibre]?.[id]) { + inventory.Ammo[calibre][id] = value; + } + }); + } + } + // Add all plates to all equipment for all bots <> + Object.keys(inventory.mods).forEach((id) => { + if (!(0, utils_1.checkParentRecursive)(id, items, [utils_1.headwearParent]) && + (0, utils_1.checkParentRecursive)(id, items, [utils_1.armorParent, utils_1.rigParent])) { + const item = items[id]; + if (item?._props?.Slots?.length > 0) { + // if (!inventory.mods[id]) { + const newModObject = {}; + item._props.Slots.forEach((mod) => { + if (mod._props.filters[0].Plate) { + newModObject[mod._name] = mod._props.filters[0].Filter; + } + }); + if (Object.keys(newModObject).length) + inventory.mods[id] = newModObject; + } + } + }); + const itemsToAdd = new Set([]); + Object.keys(inventory.mods).forEach((id) => { + Object.values(inventory.mods[id]) + .flat(1) + .forEach((item) => { + if (!inventory.mods[item]) + itemsToAdd.add(item); + }); + }); + while (itemsToAdd.size) { + const [id] = itemsToAdd; + if (!inventory.mods[id]) { + if (mappedPresets_json_1.default[id]) { + inventory.mods[id] = mappedPresets_json_1.default[id]; + } + else if (tablesbotstypesusec_json_1.inventory.mods[id]) { + inventory.mods[id] = tablesbotstypesusec_json_1.inventory.mods[id]; + } + } + itemsToAdd.delete(id); + } + (0, utils_1.deleteBlacklistedItemsFromInventory)(inventory, blackList); +}; +exports.addItemsToBotInventory = addItemsToBotInventory; +const defaultRandomisation = [ + { + levelRange: { + min: 1, + max: 100, + }, + equipmentMods: { mod_nvg: 0 }, + }, +]; +const setPlateWeightings = (name, equipmentFilters, index) => { + equipmentFilters.armorPlateWeighting = [ + { + levelRange: { + min: 1, + max: 100, + }, + front_plate: { + "1": 1, + "2": 3, + "3": 20, + "4": 20, + "5": 4, + "6": 1, + }, + back_plate: { + "1": 1, + "2": 3, + "3": 20, + "4": 20, + "5": 4, + "6": 1, + }, + side_plate: { + "1": 1, + "2": 3, + "3": 20, + "4": 20, + "5": 4, + "6": 1, + }, + left_side_plate: { + "1": 1, + "2": 3, + "3": 20, + "4": 20, + "5": 4, + "6": 1, + }, + right_side_plate: { + "1": 1, + "2": 3, + "3": 20, + "4": 20, + "5": 4, + "6": 1, + }, + }, + ]; + if (!nonPmcBotConfig_json_1.default.nonPmcBots?.[name]?.BasePlateChance) { + return; + } + //========================================= + // UPDATE PLATE SPAWN CHANCE + if (!equipmentFilters?.randomisation) { + equipmentFilters.randomisation = defaultRandomisation; + } + const randomizationToUpdate = (0, utils_1.cloneDeep)(equipmentFilters.randomisation[0]); + if (nonPmcBotConfig_json_1.default.nonPmcBots[name].BasePlateChance < 101) { + let front = nonPmcBotConfig_json_1.default.nonPmcBots[name].BasePlateChance + index * 15; + if (front > 100) + front = 100; + randomizationToUpdate.equipmentMods["front_plate"] = front; + let back = nonPmcBotConfig_json_1.default.nonPmcBots[name].BasePlateChance - 20 + index * 15; + if (back > 100) + back = 100; + randomizationToUpdate.equipmentMods["back_plate"] = back; + } + if (nonPmcBotConfig_json_1.default.nonPmcBots?.[name]?.SidePlateChance) { + ["left_side_plate", "right_side_plate"].forEach((key) => { + let value = nonPmcBotConfig_json_1.default.nonPmcBots[name].SidePlateChance + index * 10; + if (value > 100) + value = 100; + if (value < 0) + value = 0; + randomizationToUpdate.equipmentMods[key] = value; + }); + } + else { + ["left_side_plate", "right_side_plate"].forEach((key) => { + let value = nonPmcBotConfig_json_1.default.nonPmcBots[name].BasePlateChance - 30 + index * 10; + if (value > 100) + value = 100; + if (value < 0) + value = 0; + randomizationToUpdate.equipmentMods[key] = value; + }); + } + // console.log(name, randomizationToUpdate.equipmentMods); + equipmentFilters.randomisation[0] = randomizationToUpdate; + //========================================= +}; +exports.setPlateWeightings = setPlateWeightings; +const buffScavGearAsLevel = (equipmentFilters, index) => { + equipmentFilters.weightingAdjustmentsByPlayerLevel = [ + { + levelRange: { + min: 1, + max: 99, + }, + }, + ]; + if (!index) + return; + const randomizationToUpdate = (0, utils_1.cloneDeep)(advancedConfig_json_1.default.otherBotTypes.assault.randomisation[0]); + [ + "Headwear", + "Earpiece", + "ArmorVest", + "FaceCover", + // "Scabbard", + "Eyewear", + "Backpack", + ].forEach((key) => { + randomizationToUpdate.equipment[key] += index * 15; + if (randomizationToUpdate.equipment[key] > 99) + randomizationToUpdate.equipment[key] = 99; + }); + equipmentFilters.randomisation[0] = randomizationToUpdate; + equipmentFilters.blacklist = advancedConfig_json_1.default.otherBotTypes.assault.blacklist; + equipmentFilters.whitelist = advancedConfig_json_1.default.otherBotTypes.assault.whitelist; +}; +exports.buffScavGearAsLevel = buffScavGearAsLevel; +const buildEmptyWeightAdjustmentsByDevision = (botToUpdate) => { + const { tiers } = botToUpdate; + const result = []; + tiers.forEach((tier) => { + result.push({ + levelRange: { + min: tier[0], + max: tier[1], + }, + ammo: {}, + equipment: {}, + }); + }); + return result; +}; +exports.buildEmptyWeightAdjustmentsByDevision = buildEmptyWeightAdjustmentsByDevision; +const applyValuesToStoredEquipment = (inventory, items, storedWeightingAdjustmentDetails) => { + const ammoList = {}; + Object.keys(inventory.Ammo).forEach((key) => { + ammoList[key] = []; + Object.keys(inventory.Ammo[key]).forEach((id) => { + //Zero out ammo + ammoList[key].push({ + id, + rating: (0, utils_1.getAmmoWeighting)(items[id]), // + inventory.Ammo[key][id], + }); + }); + }); + Object.keys(ammoList).forEach((key) => { + ammoList[key] = ammoList[key].sort((a, b) => a.rating - b.rating); + }); + const equipmentList = {}; + Object.keys(inventory.equipment).forEach((key) => { + if (equipmentTypesTochange.has(key)) { + equipmentList[key] = []; + Object.keys(inventory.equipment[key]).forEach((id) => { + //Zero out equipment + if (key === "FirstPrimaryWeapon" || key === "Holster") { + const defAmmoWeight = (0, utils_1.getAmmoWeighting)(items[items[id]._props.defAmmo]); + equipmentList[key].push({ + id, + rating: getRating(id), + // + inventory.equipment[key][id], + }); + } + else { + equipmentList[key].push({ + id, + rating: getRating(id), //+ inventory.equipment[key][id], + }); + } + }); + } + }); + Object.keys(equipmentList).forEach((key) => { + equipmentList[key] = equipmentList[key].sort((a, b) => a.rating - b.rating); + }); + const division = storedWeightingAdjustmentDetails.length; + for (let index = 0; index < division; index++) { + const currentLevelRange = storedWeightingAdjustmentDetails[index]; + Object.keys(ammoList).forEach((key) => { + const listPortion = ammoList[key]; + const quantityPerLevel = Math.round(listPortion.length / division); + const resultingList = listPortion.slice(0, index === division - 1 + ? listPortion.length + : index * quantityPerLevel + quantityPerLevel); + resultingList.forEach(({ id, rating }) => { + if (!currentLevelRange.ammo[key]) + currentLevelRange.ammo[key] = {}; + currentLevelRange.ammo[key][id] = + Math.round(rating + rating * (index * 0.4)) + inventory.Ammo[key][id]; + }); + }); + Object.keys(equipmentList).forEach((key) => { + const listPortion = equipmentList[key]; + const quantityPerLevel = Math.round(listPortion.length / division); + const resultingList = listPortion.slice(0, index === division - 1 + ? listPortion.length + : index * quantityPerLevel + quantityPerLevel); + resultingList.forEach(({ id, rating }) => { + if (!currentLevelRange.equipment[key]) + currentLevelRange.equipment[key] = {}; + currentLevelRange.equipment[key][id] = + Math.round(rating + rating * (index * 0.4)) + + inventory.equipment[key][id]; + }); + }); + } + storedWeightingAdjustmentDetails.forEach((_, index) => { + const weight = storedWeightingAdjustmentDetails[index]; + Object.keys(weight.ammo).forEach((caliber) => { + const caliberList = Object.keys(weight.ammo[caliber]).sort((a, b) => weight.ammo[caliber][b] - weight.ammo[caliber][a]); + caliberList.forEach((id, rank) => { + if (caliberList.length > 1 && rank > 0) { + if (rank > 3) { + weight.ammo[caliber][id] = Math.round(weight.ammo[caliber][id] * 0.5); + } + else { + const modifier = (caliberList.length - rank) / caliberList.length; + weight.ammo[caliber][id] = + Math.round(weight.ammo[caliber][id] * modifier) || 1; + } + } + }); + }); + // Apply randomness + for (const category in weight.ammo) { + const randomnessMultiplier = nonPmcBotConfig_json_1.default.botAmmoRandomness; + if (!randomnessMultiplier) + return; + const list = weight.ammo[category]; + const keys = Object.keys(list); + const sortedValues = Object.values(list).sort((a, b) => a - b); + const middleIndex = 0 + Math.round((sortedValues.length - 1) / 2); + const medianValue = sortedValues[middleIndex]; + const highestValue = sortedValues[sortedValues.length - 1]; + const lowestValue = sortedValues[0]; + const betterValue = Math.round((medianValue + highestValue + lowestValue) / 3); + if (betterValue > 1) { + keys.forEach((key) => { + const valToAdjust = list[key]; + if (valToAdjust > 5) { + const adjustedAmountMax = betterValue - valToAdjust; + const amountAfterAdjustment = Math.round(valToAdjust + adjustedAmountMax * randomnessMultiplier); + if (weight.ammo[category][key]) { + weight.ammo[category][key] = Math.abs(amountAfterAdjustment); + } + } + }); + } + } + // Fix weapon weightings + Object.keys(weight.equipment?.FirstPrimaryWeapon || []).forEach((id) => { + const calibre = items[id]?._props?.Caliber || items[id]?._props?.ammoCaliber; + if (calibre && weight.ammo[calibre]) { + let highestRating = 0; + Object.keys(weight.ammo[calibre]).forEach((key) => { + if (weight.ammo[calibre][key] > highestRating) { + highestRating = weight.ammo[calibre][key]; + } + }); + if (highestRating) { + weight.equipment.FirstPrimaryWeapon[id] = (0, utils_1.getWeaponWeighting)(items[id], highestRating); + } + } + }); + for (const category in weight.equipment) { + const randomnessMultiplier = nonPmcBotConfig_json_1.default.botEquipmentRandomness; + if (!randomnessMultiplier) + return; + const list = weight.equipment[category]; + const keys = Object.keys(list); + const sortedValues = Object.values(list).sort((a, b) => a - b); + const middleIndex = 0 + Math.round((sortedValues.length - 1) / 2); + const medianValue = sortedValues[middleIndex]; + const highestValue = sortedValues[sortedValues.length - 1]; + const lowestValue = sortedValues[0]; + const betterValue = Math.round((medianValue + highestValue + lowestValue) / 3); + if (betterValue > 1) { + keys.forEach((key) => { + const valToAdjust = list[key]; + if (valToAdjust > 5) { + const adjustedAmountMax = betterValue - valToAdjust; + const amountAfterAdjustment = Math.round(valToAdjust + adjustedAmountMax * randomnessMultiplier); + if (weight.equipment[category][key]) { + weight.equipment[category][key] = Math.abs(amountAfterAdjustment); + } + } + }); + } + } + }); +}; +exports.applyValuesToStoredEquipment = applyValuesToStoredEquipment; +//# sourceMappingURL=NonPmcUtils.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js.map b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js.map new file mode 100644 index 0000000..8ec1582 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "NonPmcUtils.js", + "sourceRoot": "", + "sources": [ + "NonPmcUtils.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js new file mode 100644 index 0000000..a414714 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js @@ -0,0 +1,98 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = SetupNonPMCBotChanges; +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const config_json_1 = __importDefault(require("../../config/config.json")); +const nonPmcBotConfig_json_1 = __importDefault(require("../../config/nonPmcBotConfig.json")); +const NonPmcUtils_1 = require("./NonPmcUtils"); +const GlobalValues_1 = require("../LoadoutChanges/GlobalValues"); +function SetupNonPMCBotChanges(container) { + const databaseServer = container.resolve("DatabaseServer"); + const tables = databaseServer.getTables(); + const items = tables.templates.items; + const botsForUpdate = nonPmcBotConfig_json_1.default?.nonPmcBots; + const configServer = container.resolve("ConfigServer"); + // const tieredItemTypes = buldTieredItemTypes(items); + // saveToFile(tieredItemTypes, "Constants/tieredItems.json"); + const botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + Object.keys(botsForUpdate).forEach((name) => { + if (nonPmcBotConfig_json_1.default.ignoreList.includes(name)) + return; + if (botConfig.equipment?.[name]?.weightingAdjustmentsByPlayerLevel) { + botConfig.equipment[name].weightingAdjustmentsByPlayerLevel = []; + } + if (botConfig.equipment[name] && + !botConfig.equipment[name]?.forceOnlyArmoredRigWhenNoArmor && + nonPmcBotConfig_json_1.default.nonPmcBots[name].forceOnlyArmoredRigWhenNoArmor) { + botConfig.equipment[name]["forceOnlyArmoredRigWhenNoArmor"] = true; + } + if (!tables.bots.types[name]?.inventory?.Ammo) + return; + const inventory = tables.bots.types[name].inventory; + const chances = tables.bots.types[name].chances; + if (name !== "assault") { + Object.keys(nonPmcBotConfig_json_1.default.nonPmcBots[name]).forEach((key) => { + if (chances.equipment[key] !== undefined && + chances.equipment[key] < 30 && + nonPmcBotConfig_json_1.default.nonPmcBots[name][key][1] > 0) { + switch (key) { + case "Scabbard": + break; + case "Backpack": + case "Holster": + case "Eyewear": + case "FaceCover": + case "Earpiece": + chances.equipment[key] = 30; + break; + default: + if (name.includes("infected")) { + chances.equipment[key] = 50; + break; + } + chances.equipment[key] = 70; + break; + } + } + }); + if (chances.equipment.SecondPrimaryWeapon) { + chances.equipment.SecondPrimaryWeapon = 10; + } + else { + chances.equipment.SecondPrimaryWeapon = 0; + } + // console.log("\n"); + } + // if (name === "marksman") { + // saveToFile(tables.bots.types[name].inventory, `refDBS/marksman.json`); + // } + // console.log("\n", name); + (0, NonPmcUtils_1.addItemsToBotInventory)(inventory, nonPmcBotConfig_json_1.default.nonPmcBots[name], items, name === "marksman"); + if (nonPmcBotConfig_json_1.default.nonPmcBots[name].HasModdedWeapons) { + inventory.mods = tables.bots.types.usec.inventory.mods; + } + (0, NonPmcUtils_1.normalizeMedianInventoryValues)(inventory); + const storedEquipmentValues = (0, NonPmcUtils_1.buildEmptyWeightAdjustmentsByDevision)(nonPmcBotConfig_json_1.default.nonPmcBots[name]); + (0, NonPmcUtils_1.applyValuesToStoredEquipment)(inventory, items, storedEquipmentValues); + // if (name === "marksman") { + // saveToFile(tables.bots.types[name].inventory, `refDBS/marksman2.json`); + // } + GlobalValues_1.globalValues.storedEquipmentValues[name] = storedEquipmentValues; + }); + // console.log(bots); + // saveToFile( + // globalValues.storedEquipmentValues, + // `refDBS/storedEquipmentValues.json` + // ); + // saveToFile(botConfig.equipment.assault, "refDBS/equipmentAssault.json"); + // saveToFile( + // globalValues.tables.bots.types["assault"]?.inventory, + // `NonPmcBotChanges/botsRef/storedAssault.json` + // ); + config_json_1.default.debug && + console.log("Algorthimic Progression: nonPmcBots equipment stored!"); +} +//# sourceMappingURL=SetupNonPMCBotChanges.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js.map b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js.map new file mode 100644 index 0000000..04cbcb6 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "SetupNonPMCBotChanges.js", + "sourceRoot": "", + "sources": [ + "SetupNonPMCBotChanges.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/mod.js b/user/mods/AlgorithmicLevelProgression/src/mod.js new file mode 100644 index 0000000..a724d82 --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/mod.js @@ -0,0 +1,66 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const BotLevelChanges_1 = __importDefault(require("./LevelChanges/BotLevelChanges")); +const config_json_1 = require("../config/config.json"); +const ProgressionChanges_1 = __importDefault(require("./LoadoutChanges/ProgressionChanges")); +const SetupLocationGlobals_1 = require("./LoadoutChanges/SetupLocationGlobals"); +const LocationUpdater_1 = require("./LoadoutChanges/LocationUpdater"); +const SetupNonPMCBotChanges_1 = __importDefault(require("./NonPmcBotChanges/SetupNonPMCBotChanges")); +const ClothingChanges_1 = __importDefault(require("./LoadoutChanges/ClothingChanges")); +const GlobalValues_1 = require("./LoadoutChanges/GlobalValues"); +const utils_1 = require("./LoadoutChanges/utils"); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +class AlgorithmicLevelProgression { + preSptLoad(container) { + config_json_1.enableLevelChanges && (0, BotLevelChanges_1.default)(container); + config_json_1.enableProgressionChanges && (0, LocationUpdater_1.LocationUpdater)(container); + } + postDBLoad(container) { + if (config_json_1.enableProgressionChanges) { + try { + (0, ProgressionChanges_1.default)(container); + } + catch (error) { + const Logger = container.resolve("WinstonLogger"); + const hasForceCachedChanged = !!error?.message?.includes("forceCached"); + if (hasForceCachedChanged) { + Logger.error(`Algorithmic Level Progression failed to make progression changes. + Trying again using "forceCached" enabled. + Try changing your mod loader so ALP is earlier than mods that add custom items to avoid this message in the future. + Error: ` + error?.message); + (0, ProgressionChanges_1.default)(container); + } + else { + Logger.error(`Algorithmic Level Progression failed to make progression changes. + Try changing your mod loader so ALP is earlier than mods that add custom items + Error: ` + error?.message); + } + } + (0, SetupLocationGlobals_1.SetupLocationGlobals)(container); + } + config_json_1.enableNonPMCBotChanges && (0, SetupNonPMCBotChanges_1.default)(container); + const databaseServer = container.resolve("DatabaseServer"); + const tables = databaseServer.getTables(); + const configServer = container.resolve("ConfigServer"); + const botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + GlobalValues_1.globalValues.originalBotTypes = (0, utils_1.cloneDeep)(tables.bots.types); + GlobalValues_1.globalValues.originalWeighting = (0, utils_1.cloneDeep)(botConfig.equipment.pmc); + // globalValues.updateInventory(1, "woods"); // REMOVE + } + postSptLoad(container) { + try { + config_json_1.leveledClothing && (0, ClothingChanges_1.default)(container); + } + catch (error) { + const Logger = container.resolve("WinstonLogger"); + Logger.error(`Algorithmic Level Progression failed to makeclothing changes. + Try turning off custom clothing in the config! + Error: ` + error?.message); + } + } +} +module.exports = { mod: new AlgorithmicLevelProgression() }; +//# sourceMappingURL=mod.js.map \ No newline at end of file diff --git a/user/mods/AlgorithmicLevelProgression/src/mod.js.map b/user/mods/AlgorithmicLevelProgression/src/mod.js.map new file mode 100644 index 0000000..95b719f --- /dev/null +++ b/user/mods/AlgorithmicLevelProgression/src/mod.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "mod.js", + "sourceRoot": "", + "sources": [ + "mod.ts" + ], + "names": [], + "mappings": ";;;;;AAKA,qFAA6D;AAC7D,uDAK+B;AAC/B,6FAAqE;AACrE,gFAA6E;AAC7E,sEAAmE;AACnE,qGAA6E;AAC7E,uFAA+D;AAE/D,gEAA6D;AAC7D,kDAAmD;AAInD,kFAA+E;AAE/E,MAAM,2BAA2B;IAG/B,UAAU,CAAC,SAA8B;QACvC,gCAAkB,IAAI,IAAA,yBAAe,EAAC,SAAS,CAAC,CAAC;QACjD,sCAAwB,IAAI,IAAA,iCAAe,EAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,SAA8B;QACvC,IAAI,sCAAwB,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAA,4BAAkB,EAAC,SAAS,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAU,eAAe,CAAC,CAAC;gBAC3D,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACxE,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,MAAM,CAAC,KAAK,CACV;;;oBAGQ,GAAG,KAAK,EAAE,OAAO,CAC1B,CAAC;oBACF,IAAA,4BAAkB,EAAC,SAAS,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CACV;;oBAEQ,GAAG,KAAK,EAAE,OAAO,CAC1B,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAA,2CAAoB,EAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QACD,oCAAsB,IAAI,IAAA,+BAAqB,EAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAiB,gBAAgB,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;QACtE,2BAAY,CAAC,gBAAgB,GAAG,IAAA,iBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,2BAAY,CAAC,iBAAiB,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACpE,sDAAsD;IACxD,CAAC;IAED,WAAW,CAAC,SAA8B;QACxC,IAAI,CAAC;YACH,6BAAe,IAAI,IAAA,yBAAe,EAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAU,eAAe,CAAC,CAAC;YAC3D,MAAM,CAAC,KAAK,CACV;;gBAEQ,GAAG,KAAK,EAAE,OAAO,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,2BAA2B,EAAE,EAAE,CAAC" +} \ No newline at end of file diff --git a/user/mods/DanW-LateToTheParty/config/config.json b/user/mods/DanW-LateToTheParty/config/config.json index 6521b5b..a95476f 100644 --- a/user/mods/DanW-LateToTheParty/config/config.json +++ b/user/mods/DanW-LateToTheParty/config/config.json @@ -39,7 +39,7 @@ "excluded_bosses": [ "sptBear", "sptUsec" ] }, "only_make_changes_just_after_spawning": { - "enabled": false, + "enabled": true, "time_limit": 5, "affected_systems" : { "loot_destruction": true, diff --git a/user/mods/DanW-LateToTheParty/db/lootRanking.json b/user/mods/DanW-LateToTheParty/db/lootRanking.json new file mode 100644 index 0000000..ea9073a --- /dev/null +++ b/user/mods/DanW-LateToTheParty/db/lootRanking.json @@ -0,0 +1 @@ +{"costPerSlot":0.001,"weight":-0.5,"size":-1,"gridSize":1.3,"maxDim":-1,"armorClass":10,"parentWeighting":{"543be6674bdc2df1348b4569":{"name":"FoodDrink","value":5},"5422acb9af1c889c16000029":{"name":"Weapon","value":3},"5485a8684bdc2da71d8b4567":{"name":"Ammo","value":10},"543be6564bdc2df4348b4568":{"name":"ThrowWeap","value":10},"5447e1d04bdc2dff2f8b4567":{"name":"Knife","value":3},"543be5664bdc2dd4348b4569":{"name":"Meds","value":8},"5448e5284bdc2dcb718b4567":{"name":"Vest","value":1},"5448e53e4bdc2d60728b4567":{"name":"Backpack","value":2},"5645bcb74bdc2ded0b8b4578":{"name":"Headphones","value":5},"5448e5724bdc2ddf718b4568":{"name":"Visors","value":5},"5a341c4686f77469e155819e":{"name":"FaceCover","value":5},"5a341c4086f77401f2541505":{"name":"Headwear","value":5},"543be5e94bdc2df1348b4568":{"name":"Keys","value":0}},"items":{"5447a9cd4bdc2dbd208b4567":{"id":"5447a9cd4bdc2dbd208b4567","name":"Colt M4A1 5.56x45 assault rifle","value":64.716,"costPerSlot":86910,"weight":2.3880000000000003,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5447ac644bdc2d6c208b4567":{"id":"5447ac644bdc2d6c208b4567","name":"5.56x45mm M855 ammo pack (50 pcs)","value":20.195,"costPerSlot":22200,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5448ba0b4bdc2d02308b456c":{"id":"5448ba0b4bdc2d02308b456c","name":"Factory emergency exit key","value":101.46400000000001,"costPerSlot":103469,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5448bd6b4bdc2dfc2f8b4569":{"id":"5448bd6b4bdc2dfc2f8b4569","name":"Makarov PM 9x18PM pistol","value":20.171000000000003,"costPerSlot":21536,"weight":0.73,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5448be9a4bdc2dfd2f8b456a":{"id":"5448be9a4bdc2dfd2f8b456a","name":"RGD-5 hand grenade","value":25.654999999999998,"costPerSlot":17810,"weight":0.31,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5448c12b4bdc2d02308b456f":{"id":"5448c12b4bdc2d02308b456f","name":"PM 9x18PM 90-93 8-round magazine","value":-0.7224999999999999,"costPerSlot":1300,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5448c1d04bdc2dff2f8b4569":{"id":"5448c1d04bdc2dff2f8b4569","name":"AR-15 5.56x45 Magpul PMAG 20 GEN M3 STANAG 20-round magazine","value":5.7735,"costPerSlot":7836,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5448fee04bdc2dbc018b4567":{"id":"5448fee04bdc2dbc018b4567","name":"Bottle of water (0.6L)","value":8.1155,"costPerSlot":7440.5,"weight":0.65,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5448ff904bdc2d6f028b456e":{"id":"5448ff904bdc2d6f028b456e","name":"Army crackers","value":17.778,"costPerSlot":14878,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5449016a4bdc2d6f028b456f":{"id":"5449016a4bdc2d6f028b456f","name":"Roubles","value":-1.999,"costPerSlot":1,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"544909bb4bdc2d6f028b4577":{"id":"544909bb4bdc2d6f028b4577","name":"L3Harris AN/PEQ-15 tactical device","value":17.032,"costPerSlot":19137,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"54490a4d4bdc2dbc018b4573":{"id":"54490a4d4bdc2dbc018b4573","name":"SilencerCo Sparrow 22 sound suppressor","value":21.925,"costPerSlot":26017,"weight":0.184,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"54491bb74bdc2d09088b4567":{"id":"54491bb74bdc2d09088b4567","name":"ER FULCRUM BAYONET","value":15.875,"costPerSlot":17100,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"54491c4f4bdc2db1078b4568":{"id":"54491c4f4bdc2db1078b4568","name":"MP-133 12ga pump-action shotgun","value":-4.037833333333333,"costPerSlot":6732.166666666667,"weight":3.5400000000000005,"size":6,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"544a11ac4bdc2d470e8b456a":{"id":"544a11ac4bdc2d470e8b456a","name":"Secure container Alpha","value":358.9,"costPerSlot":360000,"weight":0.6,"size":4,"gridSize":4,"maxDim":2,"armorClass":0,"parentWeighting":0},"544a378f4bdc2d30388b4567":{"id":"544a378f4bdc2d30388b4567","name":"AR-15 5.56x45 Magpul PMAG 40 GEN M3 STANAG 40-round magazine","value":-1.2169999999999996,"costPerSlot":4883,"weight":0.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"544a37c44bdc2d25388b4567":{"id":"544a37c44bdc2d25388b4567","name":"AR-15 5.56x45 SureFire MAG5-60 STANAG 60-round magazine","value":7.2875,"costPerSlot":11377.5,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"544a38634bdc2d58388b4568":{"id":"544a38634bdc2d58388b4568","name":"AR-15 Colt USGI A2 5.56x45 flash hider","value":-0.538,"costPerSlot":1494,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"544a3a774bdc2d3a388b4567":{"id":"544a3a774bdc2d3a388b4567","name":"Leupold Mark 4 HAMR 4x24 DeltaPoint hybrid assault scope","value":17.2455,"costPerSlot":21451,"weight":0.411,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"544a3d0a4bdc2d1b388b4567":{"id":"544a3d0a4bdc2d1b388b4567","name":"Nightforce NXS 2.5-10x24 scope","value":-3.9505,"costPerSlot":304.5,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"544a3f024bdc2d1d388b4568":{"id":"544a3f024bdc2d1d388b4568","name":"ELCAN Specter OS4x assault scope","value":6.796000000000001,"costPerSlot":11060,"weight":0.528,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"544a5caa4bdc2d1a388b4568":{"id":"544a5caa4bdc2d1a388b4568","name":"Crye Precision AVS plate carrier (Ranger Green)","value":112.35600000000001,"costPerSlot":98896,"weight":2.88,"size":12,"gridSize":23,"maxDim":4,"armorClass":0,"parentWeighting":1},"544a5cde4bdc2d39388b456b":{"id":"544a5cde4bdc2d39388b456b","name":"Flyye MBSS backpack (UCP)","value":23.588,"costPerSlot":21338,"weight":1.1,"size":16,"gridSize":16,"maxDim":4,"armorClass":0,"parentWeighting":2},"544fb25a4bdc2dfb738b4567":{"id":"544fb25a4bdc2dfb738b4567","name":"Aseptic bandage","value":8.163,"costPerSlot":2183,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"544fb3364bdc2d34748b456a":{"id":"544fb3364bdc2d34748b456a","name":"Immobilizing splint","value":10.221,"costPerSlot":4306,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"544fb37f4bdc2dee738b4567":{"id":"544fb37f4bdc2dee738b4567","name":"Analgin painkillers","value":14.460999999999999,"costPerSlot":8466,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"544fb3f34bdc2d03748b456a":{"id":"544fb3f34bdc2d03748b456a","name":"Morphine injector","value":31.28,"costPerSlot":25305,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"544fb45d4bdc2dee738b4568":{"id":"544fb45d4bdc2dee738b4568","name":"Salewa first aid kit","value":23.014499999999998,"costPerSlot":19314.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":8},"544fb5454bdc2df8738b456a":{"id":"544fb5454bdc2df8738b456a","name":"Leatherman Multitool","value":18.961,"costPerSlot":21032,"weight":0.142,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"544fb62a4bdc2dfb738b4568":{"id":"544fb62a4bdc2dfb738b4568","name":"Pack of Russian Army pineapple juice","value":10.0405,"costPerSlot":9540.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"544fb6cc4bdc2d34748b456e":{"id":"544fb6cc4bdc2d34748b456e","name":"Slickers chocolate bar","value":14.753000000000002,"costPerSlot":11777,"weight":0.048,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"54527a984bdc2d4e668b4567":{"id":"54527a984bdc2d4e668b4567","name":"5.56x45mm M855","value":8.438,"costPerSlot":444,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"54527ac44bdc2d36668b4567":{"id":"54527ac44bdc2d36668b4567","name":"5.56x45mm M855A1","value":8.704,"costPerSlot":710,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"545cdae64bdc2d39198b4568":{"id":"545cdae64bdc2d39198b4568","name":"Camelbak Tri-Zip assault backpack (Foliage)","value":95.46600000000001,"costPerSlot":91566,"weight":2.2,"size":30,"gridSize":30,"maxDim":6,"armorClass":0,"parentWeighting":2},"545cdb794bdc2d3a198b456a":{"id":"545cdb794bdc2d3a198b456a","name":"6B43 Zabralo-Sh body armor (EMR)","value":-12.548,"costPerSlot":12852,"weight":10.8,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"557ff21e4bdc2d89578b4586":{"id":"557ff21e4bdc2d89578b4586","name":"Tactical glasses","value":3.948,"costPerSlot":2973,"weight":0.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"557ffd194bdc2d28148b457f":{"id":"557ffd194bdc2d28148b457f","name":"Pockets","value":-414.8,"costPerSlot":0,"weight":0,"size":400,"gridSize":4,"maxDim":20,"armorClass":0,"parentWeighting":0},"5580169d4bdc2d9d138b4585":{"id":"5580169d4bdc2d9d138b4585","name":"MP-43-1C 12ga 510mm barrel","value":-5.766666666666667,"costPerSlot":933.3333333333334,"weight":1.4,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"55801eed4bdc2d89578b4588":{"id":"55801eed4bdc2d89578b4588","name":"SV-98 7.62x54R bolt-action sniper rifle","value":50.532,"costPerSlot":67512,"weight":3.9599999999999995,"size":12,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5580223e4bdc2d1c128b457f":{"id":"5580223e4bdc2d1c128b457f","name":"MP-43-1C 12ga double-barrel shotgun","value":-6.0855,"costPerSlot":4714.5,"weight":3.6,"size":6,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"558022b54bdc2dac148b458d":{"id":"558022b54bdc2dac148b458d","name":"EOTech EXPS3-0 holographic sight (Tan)","value":33.920500000000004,"costPerSlot":36079,"weight":0.317,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5580239d4bdc2de7118b4583":{"id":"5580239d4bdc2de7118b4583","name":"GK-01 12ga compensator","value":-0.0754999999999999,"costPerSlot":2000,"weight":0.151,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55802d5f4bdc2dac148b458e":{"id":"55802d5f4bdc2dac148b458e","name":"AR-15 5.56x45 Magpul PMAG 30 GEN M3 W STANAG 30-round magazine","value":0.8695000000000004,"costPerSlot":4938.5,"weight":0.138,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55802f5d4bdc2dac148b458f":{"id":"55802f5d4bdc2dac148b458f","name":"AR-15 Magpul MOE pistol grip (Black)","value":15.674000000000003,"costPerSlot":17699,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"558032614bdc2de7118b4585":{"id":"558032614bdc2de7118b4585","name":"TangoDown Stubby BGV-MK46K foregrip (Black)","value":7.134,"costPerSlot":9170,"weight":0.072,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"559ba5b34bdc2d1f1a8b4582":{"id":"559ba5b34bdc2d1f1a8b4582","name":"SV-98 7.62x54R 10-round magazine","value":8.3635,"costPerSlot":10421,"weight":0.115,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d355e64bdc2d962f8b4569":{"id":"55d355e64bdc2d962f8b4569","name":"M4A1 5.56x45 upper receiver","value":3.7485,"costPerSlot":7883.5,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d35ee94bdc2d61338b4568":{"id":"55d35ee94bdc2d61338b4568","name":"AR-15 5.56x45 10.3 inch barrel","value":12.589000000000002,"costPerSlot":16793.5,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d3632e4bdc2d972f8b4569":{"id":"55d3632e4bdc2d972f8b4569","name":"AR-15 5.56x45 14.5 inch barrel","value":3.802833333333334,"costPerSlot":10057.333333333334,"weight":0.509,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"55d447bb4bdc2d892f8b456f":{"id":"55d447bb4bdc2d892f8b456f","name":"MP-43-1C 12ga 725mm barrel","value":-9.8,"costPerSlot":1000,"weight":1.6,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"55d448594bdc2d8c2f8b4569":{"id":"55d448594bdc2d8c2f8b4569","name":"MP-133 12ga 610mm barrel","value":-7.374499999999999,"costPerSlot":1225.5,"weight":1.2,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"55d4491a4bdc2d882f8b456e":{"id":"55d4491a4bdc2d882f8b456e","name":"MP-133 12ga 510mm barrel","value":9.911,"costPerSlot":16311,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"55d449444bdc2d962f8b456d":{"id":"55d449444bdc2d962f8b456d","name":"MP-133 12ga 610mm barrel with rib","value":-7.34925,"costPerSlot":1275.75,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"55d44fd14bdc2d962f8b456e":{"id":"55d44fd14bdc2d962f8b456e","name":"AR-15 Colt charging handle","value":3.2325,"costPerSlot":5250,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d459824bdc2d892f8b4573":{"id":"55d459824bdc2d892f8b4573","name":"AR-15 KAC RIS handguard","value":1.5659999999999998,"costPerSlot":5679,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d45d3f4bdc2d972f8b456c":{"id":"55d45d3f4bdc2d972f8b456c","name":"MP-133 beechwood forestock","value":-3.6355,"costPerSlot":764.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d45f484bdc2d972f8b456d":{"id":"55d45f484bdc2d972f8b456d","name":"MP-133 custom plastic forestock with rails","value":24.009,"costPerSlot":28259,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d480c04bdc2d1d4e8b456a":{"id":"55d480c04bdc2d1d4e8b456a","name":"AK-74 5.45x39 6L23 30-round magazine","value":-0.879,"costPerSlot":3228.5,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d481904bdc2d8c2f8b456a":{"id":"55d481904bdc2d8c2f8b456a","name":"AK-74 5.45x39 6L26 45-round magazine","value":-2.679333333333333,"costPerSlot":3470.6666666666665,"weight":0.3,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"55d482194bdc2d1d4e8b456b":{"id":"55d482194bdc2d1d4e8b456b","name":"AK-74 5.45x39 6L31 60-round magazine","value":8.8355,"costPerSlot":12985.5,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d4837c4bdc2d1d4e8b456c":{"id":"55d4837c4bdc2d1d4e8b456c","name":"AK-74 \"Saiga 545\" 5.45x39 10-round magazine","value":-0.44500000000000006,"costPerSlot":1611,"weight":0.112,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d484b44bdc2d1d4e8b456d":{"id":"55d484b44bdc2d1d4e8b456d","name":"MP-133 12ga 6-shell magazine","value":-3.4725,"costPerSlot":627.5,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d485804bdc2d8c2f8b456b":{"id":"55d485804bdc2d8c2f8b456b","name":"MP-133 12ga 8-shell magazine","value":2.317,"costPerSlot":8467,"weight":0.3,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"55d485be4bdc2d962f8b456f":{"id":"55d485be4bdc2d962f8b456f","name":"PM 9x18PM 84-round makeshift drum magazine","value":5.989749999999999,"costPerSlot":12171.75,"weight":0.364,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d4887d4bdc2d962f8b4570":{"id":"55d4887d4bdc2d962f8b4570","name":"AR-15 5.56x45 Colt STANAG 30-round magazine","value":1.5894999999999992,"costPerSlot":5648,"weight":0.117,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d48a634bdc2d8b2f8b456a":{"id":"55d48a634bdc2d8b2f8b456a","name":"Kiba Arms SPRM rail mount for pump-action shotguns","value":12.309,"costPerSlot":14369,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d48ebc4bdc2d8c2f8b456c":{"id":"55d48ebc4bdc2d8c2f8b456c","name":"Delta-Tek Sprut mount for pump-action shotguns","value":12.091000000000001,"costPerSlot":14139,"weight":0.096,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d4ae6c4bdc2d8b2f8b456e":{"id":"55d4ae6c4bdc2d8b2f8b456e","name":"AR-15 High Standard M4SS Stock","value":0.04699999999999971,"costPerSlot":4394.5,"weight":0.695,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d4af3a4bdc2d972f8b456f":{"id":"55d4af3a4bdc2d972f8b456f","name":"AR-15 Leapers UTG Low Profile A2 front sight","value":3.3739999999999997,"costPerSlot":5462,"weight":0.176,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d4b9964bdc2d1d4e8b456e":{"id":"55d4b9964bdc2d1d4e8b456e","name":"AR-15 Colt A2 pistol grip","value":-0.827,"costPerSlot":1213,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d5f46a4bdc2d1b198b4567":{"id":"55d5f46a4bdc2d1b198b4567","name":"AR-15 Colt A2 rear sight","value":2.29,"costPerSlot":4365,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55d614004bdc2d86028b4568":{"id":"55d614004bdc2d86028b4568","name":"SureFire SOCOM556-MONSTER 5.56x45 sound suppressor","value":17.252,"costPerSlot":21500,"weight":0.496,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d617094bdc2d89028b4568":{"id":"55d617094bdc2d89028b4568","name":"KAC QDC 6.5x35 sound suppressor","value":18.745,"costPerSlot":23000,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d6190f4bdc2d87028b4567":{"id":"55d6190f4bdc2d87028b4567","name":"SureFire SOCOM556-MINI MONSTER 5.56x45 sound suppressor","value":24.7935,"costPerSlot":29000,"weight":0.413,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"55d7217a4bdc2d86028b456d":{"id":"55d7217a4bdc2d86028b456d","name":"Default Inventory","value":-2,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"55f84c3c4bdc2d5f408b4576":{"id":"55f84c3c4bdc2d5f408b4576","name":"AR-15 Daniel Defense RIS II 9.5 handguard (Coyote Brown)","value":16.604499999999998,"costPerSlot":20744,"weight":0.279,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"560835c74bdc2dc8488b456f":{"id":"560835c74bdc2dc8488b456f","name":"MP-133 12ga 510mm barrel with rib","value":26.799333333333337,"costPerSlot":33224.333333333336,"weight":0.85,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"560836484bdc2d20478b456e":{"id":"560836484bdc2d20478b456e","name":"MP-133 12ga 540mm barrel","value":-5.1,"costPerSlot":1300,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"560836b64bdc2d57468b4567":{"id":"560836b64bdc2d57468b4567","name":"MP-133 12ga 540mm barrel with rib","value":-5.025,"costPerSlot":1400,"weight":0.85,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"560836fb4bdc2d773f8b4569":{"id":"560836fb4bdc2d773f8b4569","name":"MP-133 12ga 660mm barrel","value":-7.34875,"costPerSlot":1251.25,"weight":1.2,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"560837154bdc2da74d8b4568":{"id":"560837154bdc2da74d8b4568","name":"MP-133 12ga 660mm barrel with rib","value":-7.24975,"costPerSlot":1375.25,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5608373c4bdc2dc8488b4570":{"id":"5608373c4bdc2dc8488b4570","name":"MP-133 12ga 710mm barrel","value":-9.4254,"costPerSlot":1224.6,"weight":1.3,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"560837544bdc2de22e8b456e":{"id":"560837544bdc2de22e8b456e","name":"MP-133 12ga 710mm barrel with rib","value":-9.2834,"costPerSlot":1391.6,"weight":1.35,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"560837824bdc2d57468b4568":{"id":"560837824bdc2d57468b4568","name":"MP-133 12ga 750mm barrel","value":-9.3376,"costPerSlot":1412.4,"weight":1.5,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"5608379a4bdc2d26448b4569":{"id":"5608379a4bdc2d26448b4569","name":"MP-133 12ga 750mm barrel with rib","value":-9.239,"costPerSlot":1536,"weight":1.55,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"560838c94bdc2d77798b4569":{"id":"560838c94bdc2d77798b4569","name":"Remington Tactical Choke 12ga","value":7.6645,"costPerSlot":9715,"weight":0.101,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56083a334bdc2dc8488b4571":{"id":"56083a334bdc2dc8488b4571","name":"MP-133/153 plastic pistol grip","value":30.573,"costPerSlot":32623,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56083be64bdc2d20478b456f":{"id":"56083be64bdc2d20478b456f","name":"MP-133/153 plastic stock","value":27.09,"costPerSlot":31320,"weight":0.46,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"56083cba4bdc2de22e8b456f":{"id":"56083cba4bdc2de22e8b456f","name":"MP-133/153 wooden stock","value":-3.5705,"costPerSlot":749.5,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"56083e1b4bdc2dc8488b4572":{"id":"56083e1b4bdc2dc8488b4572","name":"SV-98 rear sight","value":-1.016,"costPerSlot":999,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56083eab4bdc2d26448b456a":{"id":"56083eab4bdc2d26448b456a","name":"SV-98 anti-heat ribbon","value":0.3155000000000001,"costPerSlot":2342,"weight":0.053,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"560d5e524bdc2d25448b4571":{"id":"560d5e524bdc2d25448b4571","name":"12/70 7mm buckshot","value":8.039,"costPerSlot":64,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"560d61e84bdc2da74d8b4571":{"id":"560d61e84bdc2da74d8b4571","name":"7.62x54mm R SNB gzh","value":9.352,"costPerSlot":1364,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"560d657b4bdc2da74d8b4572":{"id":"560d657b4bdc2da74d8b4572","name":"Zenit Klesch-2P flashlight with laser","value":16.128,"costPerSlot":18213,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"560d75f54bdc2da74d8b4573":{"id":"560d75f54bdc2da74d8b4573","name":"7.62x54mm R SNB gzh ammo pack (20 pcs)","value":25.2725,"costPerSlot":27280,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"560e620e4bdc2d724b8b456b":{"id":"560e620e4bdc2d724b8b456b","name":"SV-98 7.62x54R muzzle device","value":7.9055,"costPerSlot":9958,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5644bd2b4bdc2d3b4c8b4572":{"id":"5644bd2b4bdc2d3b4c8b4572","name":"Kalashnikov AK-74N 5.45x39 assault rifle","value":22.903,"costPerSlot":41613,"weight":3.4200000000000004,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5645bc214bdc2d363b8b4571":{"id":"5645bc214bdc2d363b8b4571","name":"FORT Kiver-M bulletproof helmet","value":33.884,"costPerSlot":35484,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5645bcc04bdc2d363b8b4572":{"id":"5645bcc04bdc2d363b8b4572","name":"Peltor ComTac II headset (OD Green)","value":9.01,"costPerSlot":10360,"weight":0.7,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5648a69d4bdc2ded0b8b457b":{"id":"5648a69d4bdc2ded0b8b457b","name":"BlackRock chest rig (Gray)","value":57.484,"costPerSlot":47384,"weight":1.8,"size":12,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":1},"5648a7494bdc2d9d488b4583":{"id":"5648a7494bdc2d9d488b4583","name":"PACA Soft Armor","value":15.651,"costPerSlot":29401,"weight":3.5,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5648ac824bdc2ded0b8b457d":{"id":"5648ac824bdc2ded0b8b457d","name":"AK Zenit RP-1 charging handle","value":4.5135000000000005,"costPerSlot":6522,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5648ae314bdc2d3d1c8b457f":{"id":"5648ae314bdc2d3d1c8b457f","name":"AK CAA RS47 handguard","value":14.371000000000002,"costPerSlot":16481,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5648b0744bdc2d363b8b4578":{"id":"5648b0744bdc2d363b8b4578","name":"AK-74 wooden handguard","value":-1.329,"costPerSlot":801,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5648b1504bdc2d9d488b4584":{"id":"5648b1504bdc2d9d488b4584","name":"AK-74M polymer handguard","value":-1.103,"costPerSlot":1022,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5648b4534bdc2d3d1c8b4580":{"id":"5648b4534bdc2d3d1c8b4580","name":"AK Zenit B-10M handguard with B-19 upper mount","value":33.946999999999996,"costPerSlot":36077,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5648b62b4bdc2d9d488b4585":{"id":"5648b62b4bdc2d9d488b4585","name":"GP-34 40mm underbarrel grenade launcher","value":20.75,"costPerSlot":25450,"weight":1.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5649a2464bdc2d91118b45a8":{"id":"5649a2464bdc2d91118b45a8","name":"NcSTAR MPR45 Backup mount","value":19.276,"costPerSlot":21296,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649aa744bdc2ded0b8b457e":{"id":"5649aa744bdc2ded0b8b457e","name":"AK-74 5.45x39 muzzle brake-compensator","value":-1.3559999999999999,"costPerSlot":694,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649ab884bdc2ded0b8b457f":{"id":"5649ab884bdc2ded0b8b457f","name":"AK Zenit DTK-1 7.62x39/5.45x39 muzzle brake-compensator","value":11.226,"costPerSlot":13290,"weight":0.128,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649ad3f4bdc2df8348b4585":{"id":"5649ad3f4bdc2df8348b4585","name":"AK-74 bakelite pistol grip","value":-1.271,"costPerSlot":764,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649ade84bdc2d1b2b8b4587":{"id":"5649ade84bdc2d1b2b8b4587","name":"AK-74 polymer pistol grip","value":6.265499999999999,"costPerSlot":8298,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649ae4a4bdc2d1b2b8b4588":{"id":"5649ae4a4bdc2d1b2b8b4588","name":"AK Zenit RK-3 pistol grip","value":17.7095,"costPerSlot":19822,"weight":0.225,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649af094bdc2df8348b4586":{"id":"5649af094bdc2df8348b4586","name":"AK-74 dust cover","value":1.7785000000000002,"costPerSlot":5822.5,"weight":0.088,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5649af884bdc2d1b2b8b4589":{"id":"5649af884bdc2d1b2b8b4589","name":"AK Zenit B-33 dust cover","value":10.743500000000001,"costPerSlot":14851,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5649b0544bdc2d1b2b8b458a":{"id":"5649b0544bdc2d1b2b8b458a","name":"AK-74 rear sight","value":-1.5135,"costPerSlot":499,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649b0fc4bdc2d17108b4588":{"id":"5649b0fc4bdc2d17108b4588","name":"AK-74 polymer stock","value":15.428999999999998,"costPerSlot":19604,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5649b1c04bdc2d16268b457c":{"id":"5649b1c04bdc2d16268b457c","name":"AK-74 wooden stock","value":-1.725,"costPerSlot":2500,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5649b2314bdc2d79388b4576":{"id":"5649b2314bdc2d79388b4576","name":"AKM/AK-74 ME4 buffer tube adapter","value":13.1585,"costPerSlot":15291,"weight":0.265,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649be884bdc2d79388b4577":{"id":"5649be884bdc2d79388b4577","name":"AR-15 Colt Carbine buffer tube","value":0.6825000000000001,"costPerSlot":4763.5,"weight":0.162,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5649d9a14bdc2d79388b4580":{"id":"5649d9a14bdc2d79388b4580","name":"AK Taktika Tula TT01 rear sight rail","value":13.964500000000001,"costPerSlot":16007,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5649ed104bdc2d3d1c8b458b":{"id":"5649ed104bdc2d3d1c8b458b","name":"7.62x39mm PS gzh ammo pack (20 pcs)","value":5.055000000000001,"costPerSlot":7060,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"564ca99c4bdc2d16268b4589":{"id":"564ca99c4bdc2d16268b4589","name":"AK-74 5.45x39 6L20 30-round magazine","value":-2.1965,"costPerSlot":1911,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"564ca9df4bdc2d35148b4569":{"id":"564ca9df4bdc2d35148b4569","name":"AK-74 5.45x39 6L18 45-round magazine","value":-1.1466666666666674,"costPerSlot":5003.333333333333,"weight":0.3,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"564caa3d4bdc2d17108b458e":{"id":"564caa3d4bdc2d17108b458e","name":"AK-74 TGP-A 5.45x39 sound suppressor","value":16.5945,"costPerSlot":20944.5,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5656d7c34bdc2d9d198b4587":{"id":"5656d7c34bdc2d9d198b4587","name":"7.62x39mm PS gzh","value":8.345,"costPerSlot":353,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5656eb674bdc2d35148b457c":{"id":"5656eb674bdc2d35148b457c","name":"40mm VOG-25 grenade","value":33.6105,"costPerSlot":25738,"weight":0.255,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"566966cd4bdc2d0c4c8b4578":{"id":"566966cd4bdc2d0c4c8b4578","name":"Box full of junk","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"566abbc34bdc2d92178b4576":{"id":"566abbc34bdc2d92178b4576","name":"Stash","value":387.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":300,"maxDim":1,"armorClass":0,"parentWeighting":0},"567143bf4bdc2d1a0f8b4567":{"id":"567143bf4bdc2d1a0f8b4567","name":"Pistol case","value":65.33225,"costPerSlot":55982.25,"weight":0.5,"size":4,"gridSize":12,"maxDim":2,"armorClass":0,"parentWeighting":0},"5671446a4bdc2d97058b4569":{"id":"5671446a4bdc2d97058b4569","name":"Pistol case key","value":-1.905,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5672c92d4bdc2d180f8b4567":{"id":"5672c92d4bdc2d180f8b4567","name":"Dorm room 118 key","value":18.470000000000002,"costPerSlot":20475,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5672cb124bdc2d1a0f8b4568":{"id":"5672cb124bdc2d1a0f8b4568","name":"AA Battery","value":8.34,"costPerSlot":10345,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5672cb304bdc2dc2088b456a":{"id":"5672cb304bdc2dc2088b456a","name":"D Size battery","value":15.138000000000002,"costPerSlot":17178,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5672cb724bdc2dc2088b456b":{"id":"5672cb724bdc2dc2088b456b","name":"Geiger-Muller counter","value":24.6915,"costPerSlot":28891.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5673de654bdc2d180f8b456d":{"id":"5673de654bdc2d180f8b456d","name":"Can of pacific saury","value":29.896,"costPerSlot":27036,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"56742c284bdc2d98058b456d":{"id":"56742c284bdc2d98058b456d","name":"Crickent lighter","value":2.537,"costPerSlot":4562,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56742c2e4bdc2d95058b456d":{"id":"56742c2e4bdc2d95058b456d","name":"Zibbo lighter","value":13.879999999999999,"costPerSlot":15930,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56742c324bdc2d150f8b456d":{"id":"56742c324bdc2d150f8b456d","name":"Broken GPhone smartphone","value":17.504,"costPerSlot":19654,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5675838d4bdc2d95058b456e":{"id":"5675838d4bdc2d95058b456e","name":"Drawer","value":13.100000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":12,"maxDim":1,"armorClass":0,"parentWeighting":0},"5696686a4bdc2da3298b456a":{"id":"5696686a4bdc2da3298b456a","name":"Dollars","value":-1.875,"costPerSlot":125,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"569668774bdc2da2298b4568":{"id":"569668774bdc2da2298b4568","name":"Euros","value":-1.867,"costPerSlot":133,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56d59856d2720bd8418b456a":{"id":"56d59856d2720bd8418b456a","name":"SIG P226R 9x19 pistol","value":22.493000000000002,"costPerSlot":23894,"weight":0.802,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"56d59948d2720bb7418b4582":{"id":"56d59948d2720bb7418b4582","name":"P226 9x19 15-round magazine","value":0.04800000000000004,"costPerSlot":2096,"weight":0.096,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56d59d3ad2720bdb418b4577":{"id":"56d59d3ad2720bdb418b4577","name":"9x19mm Pst gzh","value":8.0935,"costPerSlot":96,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56d5a1f7d2720bb3418b456a":{"id":"56d5a1f7d2720bb3418b456a","name":"P226 9x19 112mm barrel","value":11.826,"costPerSlot":13916,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56d5a2bbd2720bb8418b456a":{"id":"56d5a2bbd2720bb8418b456a","name":"P226 polymer pistol grip (Black)","value":-1.044,"costPerSlot":1001,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56d5a407d2720bb3418b456b":{"id":"56d5a407d2720bb3418b456b","name":"P226R MK25 pistol slide","value":0.8010000000000002,"costPerSlot":4896,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"56d5a661d2720bd8418b456b":{"id":"56d5a661d2720bd8418b456b","name":"P226 front sight","value":-1.5035,"costPerSlot":500,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56d5a77ed2720b90418b4568":{"id":"56d5a77ed2720b90418b4568","name":"P226 rear sight","value":-1.399,"costPerSlot":605,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56dee2bdd2720bc8328b4567":{"id":"56dee2bdd2720bc8328b4567","name":"MP-153 12ga semi-automatic shotgun","value":-4.67,"costPerSlot":8140,"weight":3.62,"size":7,"gridSize":0,"maxDim":7,"armorClass":0,"parentWeighting":3},"56deec93d2720bec348b4568":{"id":"56deec93d2720bec348b4568","name":"MP-153 12ga 750mm barrel","value":-8.9868,"costPerSlot":1788.2,"weight":1.55,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"56deed6ed2720b4c698b4583":{"id":"56deed6ed2720b4c698b4583","name":"MP-153 polymer forestock","value":34.289,"costPerSlot":38444,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"56deee15d2720bee328b4567":{"id":"56deee15d2720bee328b4567","name":"MP-153 12ga 4-shell magazine cap","value":-1.55,"costPerSlot":500,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56deeefcd2720bc8328b4568":{"id":"56deeefcd2720bc8328b4568","name":"MP-153 12ga 8-shell magazine","value":-0.958333333333333,"costPerSlot":5191.666666666667,"weight":0.3,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"56def37dd2720bec348b456a":{"id":"56def37dd2720bec348b456a","name":"SureFire X400 Ultra tactical flashlight with laser","value":15.599,"costPerSlot":17668,"weight":0.138,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56dfef82d2720bbd668b4567":{"id":"56dfef82d2720bbd668b4567","name":"5.45x39mm BP gs","value":8.625,"costPerSlot":630,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff026d2720bb8668b4567":{"id":"56dff026d2720bb8668b4567","name":"5.45x39mm BS gs","value":8.775,"costPerSlot":780,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff061d2720bb5668b4567":{"id":"56dff061d2720bb5668b4567","name":"5.45x39mm BT gs","value":8.611,"costPerSlot":616,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff0bed2720bb0668b4567":{"id":"56dff0bed2720bb0668b4567","name":"5.45x39mm FMJ","value":8.122,"costPerSlot":127,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff216d2720bbd668b4568":{"id":"56dff216d2720bbd668b4568","name":"5.45x39mm HP","value":8.082,"costPerSlot":87,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff2ced2720bb4668b4567":{"id":"56dff2ced2720bb4668b4567","name":"5.45x39mm PP gs","value":8.355,"costPerSlot":360,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff338d2720bbd668b4569":{"id":"56dff338d2720bbd668b4569","name":"5.45x39mm PRS gs","value":8.088000000000001,"costPerSlot":93,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff3afd2720bba668b4567":{"id":"56dff3afd2720bba668b4567","name":"5.45x39mm PS gs","value":8.254,"costPerSlot":259,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff421d2720b5f5a8b4567":{"id":"56dff421d2720b5f5a8b4567","name":"5.45x39mm SP","value":8.073,"costPerSlot":78,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff4a2d2720bbd668b456a":{"id":"56dff4a2d2720bbd668b456a","name":"5.45x39mm T gs","value":8.093,"costPerSlot":98,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56dff4ecd2720b5f5a8b4568":{"id":"56dff4ecd2720b5f5a8b4568","name":"5.45x39mm US gs","value":8.091,"costPerSlot":96,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"56e0598dd2720bb5668b45a6":{"id":"56e0598dd2720bb5668b45a6","name":"PB 9x18PM silenced pistol","value":16.435000000000002,"costPerSlot":19911,"weight":0.9520000000000001,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"56e05a6ed2720bd0748b4567":{"id":"56e05a6ed2720bd0748b4567","name":"PB bakelite side grips","value":2.949,"costPerSlot":5000,"weight":0.102,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56e05b06d2720bb2668b4586":{"id":"56e05b06d2720bb2668b4586","name":"PB 9x18PM sound suppressor","value":0.7995000000000001,"costPerSlot":4865,"weight":0.131,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"56e294cdd2720b603a8b4575":{"id":"56e294cdd2720b603a8b4575","name":"Mystery Ranch Terraplane backpack","value":371.4,"costPerSlot":0,"weight":1.2,"size":16,"gridSize":300,"maxDim":4,"armorClass":0,"parentWeighting":2},"56e335e4d2720b6c058b456d":{"id":"56e335e4d2720b6c058b456d","name":"Scav backpack","value":24.301000000000002,"costPerSlot":22408,"weight":2.214,"size":20,"gridSize":20,"maxDim":5,"armorClass":0,"parentWeighting":2},"56e33634d2720bd8058b456b":{"id":"56e33634d2720bd8058b456b","name":"Duffle bag","value":28.926000000000002,"costPerSlot":27866,"weight":1.08,"size":12,"gridSize":12,"maxDim":4,"armorClass":0,"parentWeighting":2},"56e33680d2720be2748b4576":{"id":"56e33680d2720be2748b4576","name":"Transformer Bag","value":21.220999999999997,"costPerSlot":19941,"weight":0.84,"size":9,"gridSize":9,"maxDim":3,"armorClass":0,"parentWeighting":2},"56ea6fafd2720b844b8b4593":{"id":"56ea6fafd2720b844b8b4593","name":"AR-15 Noveske KX3 5.56x45 flash hider","value":10.611,"costPerSlot":12713,"weight":0.204,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56ea70acd2720b844b8b4594":{"id":"56ea70acd2720b844b8b4594","name":"Hensoldt FF 4-16x56 34mm riflescope","value":23.442,"costPerSlot":27892,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"56ea7165d2720b6e518b4583":{"id":"56ea7165d2720b6e518b4583","name":"AR-15 Badger Ordnance Tactical Charging Handle Latch","value":7.465,"costPerSlot":9497,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56ea7293d2720b8d4b8b45ba":{"id":"56ea7293d2720b8d4b8b45ba","name":"P226 Sight Mount 220-239 rear sight bearing","value":3.41,"costPerSlot":5424,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56ea8180d2720bf2698b456a":{"id":"56ea8180d2720bf2698b456a","name":"AR-15 KAC QDC 5.56x45 Flash Suppressor Kit","value":16.9745,"costPerSlot":19006,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56ea8222d2720b69698b4567":{"id":"56ea8222d2720b69698b4567","name":"SV-98 bipod","value":1.189,"costPerSlot":5425,"weight":0.472,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"56ea8d2fd2720b7c698b4570":{"id":"56ea8d2fd2720b7c698b4570","name":"AR-15 Windham Weaponry Rail Gas Block","value":11.913,"costPerSlot":13973,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56eabcd4d2720b66698b4574":{"id":"56eabcd4d2720b66698b4574","name":"AR-15 Daniel Defense MK12 Low Profile Gas Block","value":8.7865,"costPerSlot":10813,"weight":0.053,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"56eabf3bd2720b75698b4569":{"id":"56eabf3bd2720b75698b4569","name":"AR-15 Magpul MOE Carbine stock (Black)","value":11.355500000000001,"costPerSlot":15468.5,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"570fd6c2d2720bc6458b457f":{"id":"570fd6c2d2720bc6458b457f","name":"EOTech 553 holographic sight","value":32.8075,"costPerSlot":34982,"weight":0.349,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"570fd721d2720bc5458b4596":{"id":"570fd721d2720bc5458b4596","name":"Walther MRS reflex sight","value":11.9425,"costPerSlot":13999,"weight":0.113,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"570fd79bd2720bc7458b4583":{"id":"570fd79bd2720bc7458b4583","name":"OKP-7 reflex sight","value":11.182500000000001,"costPerSlot":13310,"weight":0.255,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5710c24ad2720bc3458b45a3":{"id":"5710c24ad2720bc3458b45a3","name":"F-1 hand grenade","value":23.378999999999998,"costPerSlot":15679,"weight":0.6,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"571659bb2459771fb2755a12":{"id":"571659bb2459771fb2755a12","name":"AR-15 Damage Industries ECS pistol grip (FDE)","value":5.657,"costPerSlot":7697,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"571a12c42459771f627b58a0":{"id":"571a12c42459771f627b58a0","name":"TT-33 7.62x25 TT pistol","value":7.7440000000000015,"costPerSlot":9181,"weight":0.874,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"571a26d524597720680fbe8a":{"id":"571a26d524597720680fbe8a","name":"TT 7.62x25 116mm barrel","value":17.72,"costPerSlot":19750,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"571a279b24597720b4066566":{"id":"571a279b24597720b4066566","name":"TT 7.62x25 121mm makeshift threaded barrel","value":7.968999999999999,"costPerSlot":10000,"weight":0.062,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"571a282c2459771fb2755a69":{"id":"571a282c2459771fb2755a69","name":"TT side grips","value":-1.029,"costPerSlot":1006,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"571a28e524597720b4066567":{"id":"571a28e524597720b4066567","name":"TT 7.62x25 makeshift sound suppressor","value":3.2859999999999996,"costPerSlot":7452,"weight":0.332,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"571a29dc2459771fb2755a6a":{"id":"571a29dc2459771fb2755a6a","name":"TT 7.62x25 tt-105 8-round magazine","value":-0.883,"costPerSlot":1157,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57235b6f24597759bf5a30f1":{"id":"57235b6f24597759bf5a30f1","name":"L3Harris AN/PVS-14 night vision monocular","value":89.626,"costPerSlot":91951,"weight":0.65,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"572b7adb24597762ae139821":{"id":"572b7adb24597762ae139821","name":"Scav Vest","value":17.150000000000002,"costPerSlot":17550,"weight":0.4,"size":6,"gridSize":6,"maxDim":3,"armorClass":0,"parentWeighting":1},"572b7d8524597762b472f9d1":{"id":"572b7d8524597762b472f9d1","name":"Baseball cap","value":24.208,"costPerSlot":21258,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"572b7f1624597762ae139822":{"id":"572b7f1624597762ae139822","name":"Balaclava","value":8.367,"costPerSlot":5417,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"572b7fa124597762b472f9d2":{"id":"572b7fa124597762b472f9d2","name":"Beanie","value":14.123,"costPerSlot":11173,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"572b7fa524597762b747ce82":{"id":"572b7fa524597762b747ce82","name":"Lower half-mask","value":11.865,"costPerSlot":8915,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5732ee6a24597719ae0c0281":{"id":"5732ee6a24597719ae0c0281","name":"Waist pouch","value":14,"costPerSlot":15000,"weight":0.4,"size":4,"gridSize":4,"maxDim":2,"armorClass":0,"parentWeighting":0},"5733279d245977289b77ec24":{"id":"5733279d245977289b77ec24","name":"Car battery","value":-4.7395,"costPerSlot":10260.5,"weight":12,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"573474f924597738002c6174":{"id":"573474f924597738002c6174","name":"Chainlet","value":5.1850000000000005,"costPerSlot":7235,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5734758f24597738025ee253":{"id":"5734758f24597738025ee253","name":"Golden neck chain","value":72.327,"costPerSlot":74377,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573475fb24597737fb1379e1":{"id":"573475fb24597737fb1379e1","name":"Apollo Soyuz cigarettes","value":14.619999999999997,"costPerSlot":16630,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573476d324597737da2adc13":{"id":"573476d324597737da2adc13","name":"Malboro Cigarettes","value":3.5230000000000006,"costPerSlot":5533,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573476f124597737e04bf328":{"id":"573476f124597737e04bf328","name":"Wilston cigarettes","value":5.974,"costPerSlot":7984,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5734770f24597738025ee254":{"id":"5734770f24597738025ee254","name":"Strike Cigarettes","value":7.690000000000001,"costPerSlot":9700,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5734773724597737fd047c14":{"id":"5734773724597737fd047c14","name":"Can of condensed milk","value":46.467,"costPerSlot":43687,"weight":0.44,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5734779624597737e04bf329":{"id":"5734779624597737e04bf329","name":"CPU fan","value":2.62,"costPerSlot":4670,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573477e124597737dd42e191":{"id":"573477e124597737dd42e191","name":"PC CPU","value":12.095,"costPerSlot":14135,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5734781f24597737e04bf32a":{"id":"5734781f24597737e04bf32a","name":"DVD drive","value":4.2265,"costPerSlot":8526.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"573478bc24597738002c6175":{"id":"573478bc24597738002c6175","name":"Horse figurine","value":3.2800000000000002,"costPerSlot":7530,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5734795124597738002c6176":{"id":"5734795124597738002c6176","name":"Insulating tape","value":18.832,"costPerSlot":20857,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347b8b24597737dd42e192":{"id":"57347b8b24597737dd42e192","name":"Classic matches","value":19.528499999999998,"costPerSlot":21531,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347baf24597738002c6178":{"id":"57347baf24597738002c6178","name":"RAM stick","value":19.28,"costPerSlot":21320,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347c1124597737fb1379e3":{"id":"57347c1124597737fb1379e3","name":"Duct tape","value":8.398,"costPerSlot":10448,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347c2e24597744902c94a1":{"id":"57347c2e24597744902c94a1","name":"Power supply unit","value":-3.98975,"costPerSlot":2760.25,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57347c5b245977448d35f6e1":{"id":"57347c5b245977448d35f6e1","name":"Bolts","value":16.079,"costPerSlot":18279,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347c77245977448d35f6e2":{"id":"57347c77245977448d35f6e2","name":"Screw nuts","value":14.106000000000002,"costPerSlot":16306,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347c93245977448d35f6e3":{"id":"57347c93245977448d35f6e3","name":"Toothpaste","value":14.491,"costPerSlot":16591,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347ca924597744596b4e71":{"id":"57347ca924597744596b4e71","name":"Graphics card","value":94.7,"costPerSlot":99000,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57347cd0245977445a2d6ff1":{"id":"57347cd0245977445a2d6ff1","name":"T-Shaped plug","value":13.632000000000001,"costPerSlot":15697,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57347d3d245977448f7b7f61":{"id":"57347d3d245977448f7b7f61","name":"Rye croutons","value":24.225,"costPerSlot":21245,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57347d5f245977448b40fa81":{"id":"57347d5f245977448b40fa81","name":"Can of humpback salmon","value":30.999,"costPerSlot":28139,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57347d692459774491567cf1":{"id":"57347d692459774491567cf1","name":"Can of green peas","value":30.151999999999997,"costPerSlot":27383,"weight":0.462,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57347d7224597744596b4e72":{"id":"57347d7224597744596b4e72","name":"Can of beef stew (Small)","value":22.461,"costPerSlot":19631,"weight":0.34,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57347d8724597744596b4e76":{"id":"57347d8724597744596b4e76","name":"Can of squash spread","value":28.69,"costPerSlot":25905,"weight":0.43,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57347d90245977448f7b7f65":{"id":"57347d90245977448f7b7f65","name":"Pack of oat flakes","value":15.682,"costPerSlot":14882,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"57347d9c245977448b40fa85":{"id":"57347d9c245977448b40fa85","name":"Can of herring","value":24.8,"costPerSlot":21940,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57347da92459774491567cf5":{"id":"57347da92459774491567cf5","name":"Can of beef stew (Large)","value":23.775000000000002,"costPerSlot":20964,"weight":0.378,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5735fdcd2459776445391d61":{"id":"5735fdcd2459776445391d61","name":"7.62x25mm TT AKBS","value":8.049,"costPerSlot":54,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5735ff5c245977640e39ba7e":{"id":"5735ff5c245977640e39ba7e","name":"7.62x25mm TT FMJ43","value":8.066,"costPerSlot":71,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573601b42459776410737435":{"id":"573601b42459776410737435","name":"7.62x25mm TT LRN","value":8.043,"costPerSlot":48,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573602322459776445391df1":{"id":"573602322459776445391df1","name":"7.62x25mm TT LRNPC","value":8.063,"costPerSlot":68,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5736026a245977644601dc61":{"id":"5736026a245977644601dc61","name":"7.62x25mm TT P gl","value":8.048,"costPerSlot":53,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573603562459776430731618":{"id":"573603562459776430731618","name":"7.62x25mm TT Pst gzh","value":8.151,"costPerSlot":156,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573603c924597764442bd9cb":{"id":"573603c924597764442bd9cb","name":"7.62x25mm TT PT gzh","value":8.058,"costPerSlot":63,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573718ba2459775a75491131":{"id":"573718ba2459775a75491131","name":"9x18mm PM BZhT gzh","value":8.065,"costPerSlot":70,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573719762459775a626ccbc1":{"id":"573719762459775a626ccbc1","name":"9x18mm PM P gzh","value":8.0465,"costPerSlot":52,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573719df2459775a626ccbc2":{"id":"573719df2459775a626ccbc2","name":"9x18mm PM PBM gzh","value":8.2685,"costPerSlot":272,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57371aab2459775a77142f22":{"id":"57371aab2459775a77142f22","name":"9x18mm PMM PstM gzh","value":8.1205,"costPerSlot":125,"weight":0.009,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57371b192459775a9f58a5e0":{"id":"57371b192459775a9f58a5e0","name":"9x18mm PM PPe gzh","value":8.0465,"costPerSlot":51,"weight":0.009,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57371e4124597760ff7b25f1":{"id":"57371e4124597760ff7b25f1","name":"9x18mm PM PPT gzh","value":8.097999999999999,"costPerSlot":103,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57371eb62459776125652ac1":{"id":"57371eb62459776125652ac1","name":"9x18mm PM PRS gs","value":8.0335,"costPerSlot":39,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57371f2b24597761224311f1":{"id":"57371f2b24597761224311f1","name":"9x18mm PM PS gs PPO","value":8.036999999999999,"costPerSlot":42,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57371f8d24597761006c6a81":{"id":"57371f8d24597761006c6a81","name":"9x18mm PM PSO gzh","value":8.018,"costPerSlot":22,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5737201124597760fc4431f1":{"id":"5737201124597760fc4431f1","name":"9x18mm PM Pst gzh","value":8.04,"costPerSlot":45,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5737207f24597760ff7b25f2":{"id":"5737207f24597760ff7b25f2","name":"9x18mm PM PSV","value":8.067,"costPerSlot":73,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573720e02459776143012541":{"id":"573720e02459776143012541","name":"9x18mm PM RG028 gzh","value":8.0925,"costPerSlot":98,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57372140245977611f70ee91":{"id":"57372140245977611f70ee91","name":"9x18mm PM SP7 gzh","value":8.3195,"costPerSlot":325,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5737218f245977612125ba51":{"id":"5737218f245977612125ba51","name":"9x18mm PM SP8 gzh","value":8.1935,"costPerSlot":198,"weight":0.009,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"573722e82459776104581c21":{"id":"573722e82459776104581c21","name":"9x18mm PM BZhT gzh ammo pack (16 pcs)","value":-0.8875,"costPerSlot":1120,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573724b42459776125652ac2":{"id":"573724b42459776125652ac2","name":"9x18mm PM P gzh ammo pack (16 pcs)","value":-1.0074999999999998,"costPerSlot":1000,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737250c2459776125652acc":{"id":"5737250c2459776125652acc","name":"9x18mm PM PBM gzh ammo pack (16 pcs)","value":2.3445,"costPerSlot":4352,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737256c2459776125652acd":{"id":"5737256c2459776125652acd","name":"9x18mm PMM PstM gzh ammo pack (16 pcs)","value":-0.007500000000000062,"costPerSlot":2000,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573725b0245977612125bae2":{"id":"573725b0245977612125bae2","name":"9x18mm PM PPe gzh ammo pack (16 pcs)","value":-1.0074999999999998,"costPerSlot":1000,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737260b24597761224311f2":{"id":"5737260b24597761224311f2","name":"9x18mm PM PPT gzh ammo pack (16 pcs)","value":-0.35949999999999993,"costPerSlot":1648,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737266524597761006c6a8c":{"id":"5737266524597761006c6a8c","name":"9x18mm PM PRS gs ammo pack (16 pcs)","value":-1.0074999999999998,"costPerSlot":1000,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573726d824597765d96be361":{"id":"573726d824597765d96be361","name":"9x18mm PM PS gs PPO ammo pack (16 pcs)","value":-1.0074999999999998,"costPerSlot":1000,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737273924597765dd374461":{"id":"5737273924597765dd374461","name":"9x18mm PM PSO gzh ammo pack (16 pcs)","value":-1.0074999999999998,"costPerSlot":1000,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573727c624597765cc785b5b":{"id":"573727c624597765cc785b5b","name":"9x18mm PM Pst gzh ammo pack (16 pcs)","value":-1.0074999999999998,"costPerSlot":1000,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737280e24597765cc785b5c":{"id":"5737280e24597765cc785b5c","name":"9x18mm PM PSV ammo pack (16 pcs)","value":-0.8395000000000001,"costPerSlot":1168,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737287724597765e1625ae2":{"id":"5737287724597765e1625ae2","name":"9x18mm PM RG028 gzh ammo pack (16 pcs)","value":-0.4395,"costPerSlot":1568,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573728cc24597765cc785b5d":{"id":"573728cc24597765cc785b5d","name":"9x18mm PM SP7 gzh ammo pack (16 pcs)","value":3.1925,"costPerSlot":5200,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573728f324597765e5728561":{"id":"573728f324597765e5728561","name":"9x18mm PM SP8 gzh ammo pack (16 pcs)","value":1.1605000000000003,"costPerSlot":3168,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737292724597765e5728562":{"id":"5737292724597765e5728562","name":"5.45x39mm BP gs ammo pack (120 pcs)","value":33.75000000000001,"costPerSlot":37800,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372a7f24597766fe0de0c1":{"id":"57372a7f24597766fe0de0c1","name":"5.45x39mm BP gs ammo pack (120 pcs)","value":33.75000000000001,"costPerSlot":37800,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372ac324597767001bc261":{"id":"57372ac324597767001bc261","name":"5.45x39mm BP gs ammo pack (30 pcs)","value":16.892500000000002,"costPerSlot":18900,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57372b832459776701014e41":{"id":"57372b832459776701014e41","name":"5.45x39mm BS gs ammo pack (120 pcs)","value":42.75000000000001,"costPerSlot":46800,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372bad245977670b7cd242":{"id":"57372bad245977670b7cd242","name":"5.45x39mm BS gs ammo pack (120 pcs)","value":42.75000000000001,"costPerSlot":46800,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372bd3245977670b7cd243":{"id":"57372bd3245977670b7cd243","name":"5.45x39mm BS gs ammo pack (30 pcs)","value":21.392500000000002,"costPerSlot":23400,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57372c21245977670937c6c2":{"id":"57372c21245977670937c6c2","name":"5.45x39mm BT gs ammo pack (120 pcs)","value":32.910000000000004,"costPerSlot":36960,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372c56245977685e584582":{"id":"57372c56245977685e584582","name":"5.45x39mm BT gs ammo pack (120 pcs)","value":32.910000000000004,"costPerSlot":36960,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372c89245977685d4159b1":{"id":"57372c89245977685d4159b1","name":"5.45x39mm BT gs ammo pack (30 pcs)","value":16.4725,"costPerSlot":18480,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57372d1b2459776862260581":{"id":"57372d1b2459776862260581","name":"5.45x39mm PP gs ammo pack (120 pcs)","value":17.55,"costPerSlot":21600,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372d4c245977685a3da2a1":{"id":"57372d4c245977685a3da2a1","name":"5.45x39mm PP gs ammo pack (120 pcs)","value":17.55,"costPerSlot":21600,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372db0245977685d4159b2":{"id":"57372db0245977685d4159b2","name":"5.45x39mm PP gs ammo pack (30 pcs)","value":8.7925,"costPerSlot":10800,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57372deb245977685d4159b3":{"id":"57372deb245977685d4159b3","name":"5.45x39mm PRS gs ammo pack (120 pcs)","value":1.5300000000000002,"costPerSlot":5580,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372e1924597768553071c1":{"id":"57372e1924597768553071c1","name":"5.45x39mm PRS gs ammo pack (120 pcs)","value":1.5300000000000002,"costPerSlot":5580,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372e4a24597768553071c2":{"id":"57372e4a24597768553071c2","name":"5.45x39mm PRS gs ammo pack (30 pcs)","value":0.7825000000000002,"costPerSlot":2790,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57372e73245977685d4159b4":{"id":"57372e73245977685d4159b4","name":"5.45x39mm PS gs ammo pack (120 pcs)","value":11.49,"costPerSlot":15540,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372e94245977685648d3e1":{"id":"57372e94245977685648d3e1","name":"5.45x39mm PS gs ammo pack (120 pcs)","value":11.49,"costPerSlot":15540,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372ebf2459776862260582":{"id":"57372ebf2459776862260582","name":"5.45x39mm PS gs ammo pack (30 pcs)","value":5.7625,"costPerSlot":7770,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57372ee1245977685d4159b5":{"id":"57372ee1245977685d4159b5","name":"5.45x39mm T gs ammo pack (120 pcs)","value":1.83,"costPerSlot":5880,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372f2824597769a270a191":{"id":"57372f2824597769a270a191","name":"5.45x39mm T gs ammo pack (120 pcs)","value":1.83,"costPerSlot":5880,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372f5c24597769917c0131":{"id":"57372f5c24597769917c0131","name":"5.45x39mm T gs ammo pack (30 pcs)","value":0.9325000000000001,"costPerSlot":2940,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57372f7d245977699b53e301":{"id":"57372f7d245977699b53e301","name":"5.45x39mm US gs ammo pack (120 pcs)","value":1.71,"costPerSlot":5760,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57372fc52459776998772ca1":{"id":"57372fc52459776998772ca1","name":"5.45x39mm US gs ammo pack (120 pcs)","value":1.71,"costPerSlot":5760,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5737300424597769942d5a01":{"id":"5737300424597769942d5a01","name":"5.45x39mm US gs ammo pack (30 pcs)","value":0.8725,"costPerSlot":2880,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737330a2459776af32363a1":{"id":"5737330a2459776af32363a1","name":"5.45x39mm FMJ ammo pack (30 pcs)","value":1.8050000000000002,"costPerSlot":3810,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5737339e2459776af261abeb":{"id":"5737339e2459776af261abeb","name":"5.45x39mm HP ammo pack (30 pcs)","value":0.605,"costPerSlot":2610,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"573733c72459776b0b7b51b0":{"id":"573733c72459776b0b7b51b0","name":"5.45x39mm SP ammo pack (30 pcs)","value":0.33499999999999996,"costPerSlot":2340,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5739d41224597779c3645501":{"id":"5739d41224597779c3645501","name":"9x19mm Pst gzh ammo pack (16 pcs)","value":-0.47150000000000003,"costPerSlot":1536,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57486e672459770abd687134":{"id":"57486e672459770abd687134","name":"OKP-7 reflex sight (Dovetail)","value":28.2445,"costPerSlot":30392,"weight":0.295,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"574d967124597745970e7c94":{"id":"574d967124597745970e7c94","name":"TOZ Simonov SKS 7.62x39 carbine","value":30.0225,"costPerSlot":38919,"weight":3.7929999999999997,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"574dad8024597745964bf05c":{"id":"574dad8024597745964bf05c","name":"SKS TOZ wooden stock (56-A-231 Sb.5)","value":-3.80875,"costPerSlot":4542.75,"weight":0.703,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"574db213245977459a2f3f5d":{"id":"574db213245977459a2f3f5d","name":"SKS rear sight","value":-1.7125,"costPerSlot":300,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"574eb85c245977648157eec3":{"id":"574eb85c245977648157eec3","name":"Factory plan map","value":16.7775,"costPerSlot":18800,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57505f6224597709a92585a9":{"id":"57505f6224597709a92585a9","name":"Alyonka chocolate bar","value":31.298,"costPerSlot":28348,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"575062b524597720a31c09a1":{"id":"575062b524597720a31c09a1","name":"Can of Ice Green tea","value":13.122,"costPerSlot":10272,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57513f07245977207e26a311":{"id":"57513f07245977207e26a311","name":"Pack of apple juice","value":7.1065000000000005,"costPerSlot":6606.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"57513f9324597720a7128161":{"id":"57513f9324597720a7128161","name":"Pack of Grand juice","value":8.914,"costPerSlot":8414,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"57513fcc24597720a31c09a6":{"id":"57513fcc24597720a31c09a6","name":"Pack of Vita juice","value":10.3025,"costPerSlot":9802.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5751435d24597720a27126d1":{"id":"5751435d24597720a27126d1","name":"Can of Max Energy energy drink","value":23.133,"costPerSlot":20313,"weight":0.36,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57514643245977207f2c2d09":{"id":"57514643245977207f2c2d09","name":"Can of TarCola soda","value":23.197,"costPerSlot":20377,"weight":0.36,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"575146b724597720a27126d5":{"id":"575146b724597720a27126d5","name":"Pack of milk","value":24.533,"costPerSlot":24033,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5751487e245977207e26a315":{"id":"5751487e245977207e26a315","name":"Emelya rye croutons","value":16.22,"costPerSlot":13240,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5751496424597720a27126da":{"id":"5751496424597720a27126da","name":"Can of Hot Rod energy drink","value":18.894000000000002,"costPerSlot":16164,"weight":0.54,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"57518f7724597720a31c09ab":{"id":"57518f7724597720a31c09ab","name":"Key 3","value":-1.905,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57518fd424597720c85dbaaa":{"id":"57518fd424597720c85dbaaa","name":"Key 5","value":-1.905,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5751916f24597720a27126df":{"id":"5751916f24597720a27126df","name":"Key 2","value":-1.905,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5751961824597720a31c09ac":{"id":"5751961824597720a31c09ac","name":"(off)Black Keycard","value":-1.905,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5751a25924597722c463c472":{"id":"5751a25924597722c463c472","name":"Army bandage","value":9.7055,"costPerSlot":3727,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5751a89d24597722aa0e8db0":{"id":"5751a89d24597722aa0e8db0","name":"Golden Star balm","value":106.40700000000001,"costPerSlot":100415,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5755356824597772cb798962":{"id":"5755356824597772cb798962","name":"AI-2 medkit","value":12.6065,"costPerSlot":6674,"weight":0.135,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5755383e24597772cb798966":{"id":"5755383e24597772cb798966","name":"Vaseline balm","value":46.205,"costPerSlot":40213,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"576165642459773c7a400233":{"id":"576165642459773c7a400233","name":"Saiga-12K ver.10 12ga semi-automatic shotgun","value":-10.567333333333334,"costPerSlot":4232.666666666667,"weight":3.6,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"576167ab2459773cad038c43":{"id":"576167ab2459773cad038c43","name":"SOK-12 thread protector","value":-1.334,"costPerSlot":701,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"576169e62459773c69055191":{"id":"576169e62459773c69055191","name":"SOK-12 polymer handguard","value":-0.6930000000000001,"costPerSlot":1397,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57616a9e2459773c7a400234":{"id":"57616a9e2459773c7a400234","name":"SOK-12 12ga Sb.5 5-round magazine","value":-2.9275,"costPerSlot":1167.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57616c112459773cce774d66":{"id":"57616c112459773cce774d66","name":"SOK-12 dust cover ","value":-3.4625,"costPerSlot":597.5,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57616ca52459773c69055192":{"id":"57616ca52459773c69055192","name":"SOK-12 AK-style stock","value":-3.3445,"costPerSlot":830.5,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"576a581d2459771e7b1bc4f1":{"id":"576a581d2459771e7b1bc4f1","name":"Yarygin MP-443 Grach 9x19 pistol","value":14.766,"costPerSlot":16241,"weight":0.9500000000000001,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"576a5ed62459771e9c2096cb":{"id":"576a5ed62459771e9c2096cb","name":"MP-443 Grach 9x19 18-round magazine","value":4.1985,"costPerSlot":6251,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"576a63cd2459771e796e0e11":{"id":"576a63cd2459771e796e0e11","name":"MP-443 Grach polymer pistol grip","value":-1.3245,"costPerSlot":703,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"576a7c512459771e796e0e17":{"id":"576a7c512459771e796e0e17","name":"MP-443 Grach Zenit B-8 mount","value":1.0300000000000002,"costPerSlot":3050,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"576fd4ec2459777f0b518431":{"id":"576fd4ec2459777f0b518431","name":"BelOMO PSO-1M2-1 4x24 scope","value":5.591999999999999,"costPerSlot":9892,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"577d128124597739d65d0e56":{"id":"577d128124597739d65d0e56","name":"Burris FastFire Weaver Base","value":7.153500000000001,"costPerSlot":9162,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"577d141e24597739c5255e01":{"id":"577d141e24597739c5255e01","name":"Burris FastFire 3 reflex sight","value":17.0165,"costPerSlot":19029,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"577e1c9d2459773cd707c525":{"id":"577e1c9d2459773cd707c525","name":"Printer paper","value":5.507,"costPerSlot":9857,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5780cda02459777b272ede61":{"id":"5780cda02459777b272ede61","name":"Dorm room 306 key","value":10.280999999999999,"costPerSlot":12286,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780cf692459777de4559321":{"id":"5780cf692459777de4559321","name":"Dorm room 315 key","value":0.5210000000000004,"costPerSlot":2526,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780cf722459777a5108b9a1":{"id":"5780cf722459777a5108b9a1","name":"Dorm room 308 key","value":1.495,"costPerSlot":3500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780cf7f2459777de4559322":{"id":"5780cf7f2459777de4559322","name":"Dorm room 314 marked key","value":1497.995,"costPerSlot":1500000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780cf942459777df90dcb72":{"id":"5780cf942459777df90dcb72","name":"Dorm room 214 key","value":24.656000000000002,"costPerSlot":26661,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780cf9e2459777df90dcb73":{"id":"5780cf9e2459777df90dcb73","name":"Dorm room 218 key","value":17.224,"costPerSlot":19229,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780cfa52459777dfb276eb1":{"id":"5780cfa52459777dfb276eb1","name":"Dorm room 220 key","value":21.455000000000002,"costPerSlot":23460,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780d0532459777a5108b9a2":{"id":"5780d0532459777a5108b9a2","name":"Tarcone Director's office key","value":22.244,"costPerSlot":24249,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780d0652459777df90dcb74":{"id":"5780d0652459777df90dcb74","name":"Gas station office key","value":45.015,"costPerSlot":47020,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5780d07a2459777de4559324":{"id":"5780d07a2459777de4559324","name":"Portable cabin key","value":30.272999999999996,"costPerSlot":32278,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57838ad32459774a17445cd2":{"id":"57838ad32459774a17445cd2","name":"VSS Vintorez 9x39 special sniper rifle","value":46.903000000000006,"costPerSlot":65203,"weight":2.5999999999999996,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"57838c962459774a1651ec63":{"id":"57838c962459774a1651ec63","name":"VSS 9x39 integral barrel-suppressor","value":7.005500000000001,"costPerSlot":11253.5,"weight":0.496,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57838e1b2459774a256959b1":{"id":"57838e1b2459774a256959b1","name":"VSS rear sight","value":-1.0165,"costPerSlot":996,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57838f0b2459774a256959b2":{"id":"57838f0b2459774a256959b2","name":"VSS/VAL 9x39 6L24 10-round magazine","value":2.5715000000000003,"costPerSlot":4637,"weight":0.131,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57838f9f2459774a150289a0":{"id":"57838f9f2459774a150289a0","name":"VSS/VAL 9x39 6L25 20-round magazine (Plum)","value":3.5740000000000007,"costPerSlot":7664.5,"weight":0.181,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"578395402459774a256959b5":{"id":"578395402459774a256959b5","name":"VSS dust cover","value":-3.29,"costPerSlot":810,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"578395e82459774a0e553c7b":{"id":"578395e82459774a0e553c7b","name":"VSS wooden stock","value":5.1419999999999995,"costPerSlot":9437,"weight":0.59,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5783c43d2459774bbe137486":{"id":"5783c43d2459774bbe137486","name":"Simple wallet","value":13.667000000000002,"costPerSlot":10542,"weight":0.15,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"578f8778245977358849a9b5":{"id":"578f8778245977358849a9b5","name":"Jacket","value":2.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"578f8782245977354405a1e3":{"id":"578f8782245977354405a1e3","name":"Safe","value":9.200000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":9,"maxDim":1,"armorClass":0,"parentWeighting":0},"578f879c24597735401e6bc6":{"id":"578f879c24597735401e6bc6","name":"Cash register","value":0.10000000000000009,"costPerSlot":0,"weight":1,"size":1,"gridSize":2,"maxDim":1,"armorClass":0,"parentWeighting":0},"578f87a3245977356274f2cb":{"id":"578f87a3245977356274f2cb","name":"Duffle bag","value":13.100000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":12,"maxDim":1,"armorClass":0,"parentWeighting":0},"578f87ad245977356274f2cc":{"id":"578f87ad245977356274f2cc","name":"Wooden crate","value":10.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":10,"maxDim":1,"armorClass":0,"parentWeighting":0},"578f87b7245977356274f2cd":{"id":"578f87b7245977356274f2cd","name":"Drawer","value":2.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"579204f224597773d619e051":{"id":"579204f224597773d619e051","name":"Makarov PM (t) 9x18PM pistol","value":44.8605,"costPerSlot":46229,"weight":0.7370000000000001,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5798a2832459774b53341029":{"id":"5798a2832459774b53341029","name":"Customs plan map","value":35.5455,"costPerSlot":37568,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57a0dfb82459774d3078b56c":{"id":"57a0dfb82459774d3078b56c","name":"9x39mm SP-5 gs","value":8.2615,"costPerSlot":273,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57a0e5022459774d1673f889":{"id":"57a0e5022459774d1673f889","name":"9x39mm SP-6 gs","value":8.9085,"costPerSlot":920,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"57a3459f245977764a01f703":{"id":"57a3459f245977764a01f703","name":"VSS/VAL Zenit B-3 ring mount","value":20.039,"costPerSlot":22059,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57a349b2245977762b199ec7":{"id":"57a349b2245977762b199ec7","name":"Pumping station front door key","value":3.266,"costPerSlot":5271,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57a9b9ce2459770ee926038d":{"id":"57a9b9ce2459770ee926038d","name":"SOK-12 rear sight","value":-1.6015,"costPerSlot":400,"weight":0.003,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57ac965c24597706be5f975c":{"id":"57ac965c24597706be5f975c","name":"ELCAN SpecterDR 1x/4x scope","value":15.979500000000002,"costPerSlot":20299.5,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57aca93d2459771f2c7e26db":{"id":"57aca93d2459771f2c7e26db","name":"ELCAN SpecterDR 1x/4x scope (FDE)","value":18.7005,"costPerSlot":23020.5,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57acb6222459771ec34b5cb0":{"id":"57acb6222459771ec34b5cb0","name":"VOMZ Pilad 043-02 dovetail mount","value":8.804,"costPerSlot":10824,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57ade1442459771557167e15":{"id":"57ade1442459771557167e15","name":"Armacon Baskak stock","value":-0.11099999999999977,"costPerSlot":4024,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57adff4f24597737f373b6e6":{"id":"57adff4f24597737f373b6e6","name":"SIG Sauer BRAVO4 4x30 scope","value":17.8825,"costPerSlot":22092,"weight":0.419,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57ae0171245977343c27bfcf":{"id":"57ae0171245977343c27bfcf","name":"BelOMO PK-06 reflex sight","value":7.609999999999999,"costPerSlot":9655,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57af48872459771f0b2ebf11":{"id":"57af48872459771f0b2ebf11","name":"Hogue OverMolded Rubber Grip (FDE)","value":19.184,"costPerSlot":21224,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57c44b372459772d2b39b8ce":{"id":"57c44b372459772d2b39b8ce","name":"AS VAL 9x39 special assault rifle","value":115.59200000000001,"costPerSlot":129842,"weight":2.5,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"57c44dd02459772d2e0ae249":{"id":"57c44dd02459772d2e0ae249","name":"AS VAL 9x39 integral barrel-suppressor","value":8.472000000000001,"costPerSlot":12720,"weight":0.496,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57c44e7b2459772d28133248":{"id":"57c44e7b2459772d28133248","name":"AS VAL rear sight","value":-1.0165,"costPerSlot":996,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57c44f4f2459772d2c627113":{"id":"57c44f4f2459772d2c627113","name":"AS VAL dust cover","value":9.708,"costPerSlot":13808,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57c44fa82459772d2d75e415":{"id":"57c44fa82459772d2d75e415","name":"AS VAL pistol grip (Plum)","value":19.106,"costPerSlot":21179,"weight":0.146,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57c450252459772d28133253":{"id":"57c450252459772d28133253","name":"AS VAL skeleton stock","value":5.8445,"costPerSlot":9989.5,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57c55efc2459772d2c6271e7":{"id":"57c55efc2459772d2c6271e7","name":"Hogue OverMolded Rubber Grip (Black)","value":18.708000000000002,"costPerSlot":20748,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57c55f092459772d291a8463":{"id":"57c55f092459772d291a8463","name":"Hogue OverMolded Rubber Grip (Ghillie Earth)","value":20.96,"costPerSlot":23000,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57c55f112459772d28133310":{"id":"57c55f112459772d28133310","name":"Hogue OverMolded Rubber Grip (Ghillie Green)","value":19.605,"costPerSlot":21645,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57c55f172459772d27602381":{"id":"57c55f172459772d27602381","name":"Hogue OverMolded Rubber Grip (Olive Drab)","value":10.370000000000001,"costPerSlot":12410,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57c5ac0824597754771e88a9":{"id":"57c5ac0824597754771e88a9","name":"March Tactical 3-24x42 FFP 30mm riflescope","value":16.488,"costPerSlot":20808,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57c69dd424597774c03b7bbc":{"id":"57c69dd424597774c03b7bbc","name":"Lobaev Arms 30mm scope mount","value":2.9795,"costPerSlot":7104.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57c9a89124597704ee6faec1":{"id":"57c9a89124597704ee6faec1","name":"P226 Combat pistol grip (FDE)","value":-0.7979999999999998,"costPerSlot":1247,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cd379a24597778e7682ecf":{"id":"57cd379a24597778e7682ecf","name":"Kiba Arms Tactical Tomahawk","value":12.8695,"costPerSlot":16800,"weight":1.861,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"57cff947245977638e6f2a19":{"id":"57cff947245977638e6f2a19","name":"AK Magpul MOE AKM handguard (Black)","value":38.274499999999996,"costPerSlot":40385,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffb66245977632f391a99":{"id":"57cffb66245977632f391a99","name":"Magpul M-LOK AFG tactical foregrip (Black)","value":13.068999999999999,"costPerSlot":15090,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffcd624597763133760c5":{"id":"57cffcd624597763133760c5","name":"Magpul M-LOK AFG tactical foregrip (FDE)","value":16.887999999999998,"costPerSlot":18909,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffcdd24597763f5110006":{"id":"57cffcdd24597763f5110006","name":"Magpul M-LOK AFG tactical foregrip (Olive Drab)","value":20.288,"costPerSlot":22309,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffce524597763b31685d8":{"id":"57cffce524597763b31685d8","name":"Magpul M-LOK AFG tactical foregrip (Stealth Grey)","value":16.214,"costPerSlot":18235,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffd8224597763b03fc609":{"id":"57cffd8224597763b03fc609","name":"AK Magpul MOE AKM handguard (FDE)","value":20.966500000000003,"costPerSlot":23077,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffddc24597763133760c6":{"id":"57cffddc24597763133760c6","name":"AK Magpul MOE AKM handguard (Olive Drab)","value":19.3545,"costPerSlot":21465,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffe0024597763b03fc60b":{"id":"57cffe0024597763b03fc60b","name":"AK Magpul MOE AKM handguard (Plum)","value":22.3195,"costPerSlot":24430,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57cffe20245977632f391a9d":{"id":"57cffe20245977632f391a9d","name":"AK Magpul MOE AKM handguard (Stealth Grey)","value":20.4235,"costPerSlot":22534,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57d14d2524597714373db789":{"id":"57d14d2524597714373db789","name":"PP-91 Kedr 9x18PM submachine gun","value":11.146500000000003,"costPerSlot":20911,"weight":1.529,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"57d14e1724597714010c3f4b":{"id":"57d14e1724597714010c3f4b","name":"PP-91 Kedr 9x18PM 20-round magazine","value":-0.5495000000000001,"costPerSlot":1502,"weight":0.103,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57d1519e24597714373db79d":{"id":"57d1519e24597714373db79d","name":"PP-91 Kedr 9x18PM 30-round magazine","value":3.623,"costPerSlot":7687,"weight":0.128,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57d152ec245977144076ccdf":{"id":"57d152ec245977144076ccdf","name":"PP-91 Kedr polymer pistol grip","value":-0.7165000000000001,"costPerSlot":1319,"weight":0.071,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57d17c5e2459775a5c57d17d":{"id":"57d17c5e2459775a5c57d17d","name":"Ultrafire WF-501B flashlight","value":2.9990000000000006,"costPerSlot":5059,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57d17e212459775a1179a0f5":{"id":"57d17e212459775a1179a0f5","name":"Kiba Arms 25mm accessory ring mount","value":2.4704999999999995,"costPerSlot":4513,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57da93632459771cb65bf83f":{"id":"57da93632459771cb65bf83f","name":"KAC QDSS NT4 5.56x45 sound suppressor (Black)","value":19.516000000000002,"costPerSlot":23856,"weight":0.68,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57dbb57e2459774673234890":{"id":"57dbb57e2459774673234890","name":"KAC QDSS NT4 5.56x45 sound suppressor (FDE)","value":18.2835,"costPerSlot":22623.5,"weight":0.68,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57dc2fa62459775949412633":{"id":"57dc2fa62459775949412633","name":"Kalashnikov AKS-74U 5.45x39 assault rifle","value":26.528999999999996,"costPerSlot":36876,"weight":2.694,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"57dc324a24597759501edc20":{"id":"57dc324a24597759501edc20","name":"AKS-74U 5.45x39 muzzle brake","value":-1.331,"costPerSlot":719,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57dc32dc245977596d4ef3d3":{"id":"57dc32dc245977596d4ef3d3","name":"AKS-74U wooden handguard","value":-1.3599999999999999,"costPerSlot":698,"weight":0.116,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57dc334d245977597164366f":{"id":"57dc334d245977597164366f","name":"AKS-74U dust cover","value":-2.157,"costPerSlot":1911,"weight":0.136,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57dc347d245977596754e7a1":{"id":"57dc347d245977596754e7a1","name":"AKS-74U skeletonized stock","value":-3.3369999999999997,"costPerSlot":772,"weight":0.218,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57e26ea924597715ca604a09":{"id":"57e26ea924597715ca604a09","name":"Bars A-2607 Damascus knife","value":6.323,"costPerSlot":7463,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"57e26fc7245977162a14b800":{"id":"57e26fc7245977162a14b800","name":"Bars A-2607 95Kh18 knife","value":6.183000000000001,"costPerSlot":7323,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"57e3dba62459770f0c32322b":{"id":"57e3dba62459770f0c32322b","name":"AKS-74U bakelite pistol grip","value":-1.135,"costPerSlot":900,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57ee59b42459771c7b045da5":{"id":"57ee59b42459771c7b045da5","name":"PP-91 Kedr Rotor 43 RIS mount","value":1.803,"costPerSlot":3823,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57f3a5ae2459772b0e0bf19e":{"id":"57f3a5ae2459772b0e0bf19e","name":"PSO scope eyecup","value":-1.7265,"costPerSlot":276,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57f3c6bd24597738e730fa2f":{"id":"57f3c6bd24597738e730fa2f","name":"PP-91-01 Kedr-B 9x18PM submachine gun","value":25.735500000000002,"costPerSlot":39600,"weight":1.729,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"57f3c7e024597738ea4ba286":{"id":"57f3c7e024597738ea4ba286","name":"PP-91-01 Kedr-B threaded suppressor adapter","value":3.075,"costPerSlot":5110,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57f3c8cc2459773ec4480328":{"id":"57f3c8cc2459773ec4480328","name":"PP-91-01 Kedr-B 9x18PM sound suppressor","value":3.3804999999999996,"costPerSlot":7445.5,"weight":0.13,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"57f4c844245977379d5c14d1":{"id":"57f4c844245977379d5c14d1","name":"PP-9 Klin 9x18PMM submachine gun","value":14.695500000000003,"costPerSlot":24460,"weight":1.529,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"57fd23e32459772d0805bcf1":{"id":"57fd23e32459772d0805bcf1","name":"Holosun LS321 Tactical device","value":14.71,"costPerSlot":16805,"weight":0.19,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57ffa9f4245977728561e844":{"id":"57ffa9f4245977728561e844","name":"AKS-74U Zenit B-11 handguard","value":7.385000000000002,"costPerSlot":9460,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57ffaea724597779f52b3a4d":{"id":"57ffaea724597779f52b3a4d","name":"AK Zenit B-12 Mount","value":2.9535,"costPerSlot":4997,"weight":0.087,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57ffb0062459777a045af529":{"id":"57ffb0062459777a045af529","name":"AKS-74U Zenit B-18 Mount","value":5.3095,"costPerSlot":7336,"weight":0.053,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"57ffb0e42459777d047111c5":{"id":"57ffb0e42459777d047111c5","name":"AKS-74U PBS-4 5.45x39 sound suppressor","value":12.145499999999998,"costPerSlot":16495.5,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5811ce572459770cba1a34ea":{"id":"5811ce572459770cba1a34ea","name":"Stash","value":517.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":400,"maxDim":1,"armorClass":0,"parentWeighting":0},"5811ce662459770f6f490f32":{"id":"5811ce662459770f6f490f32","name":"Stash","value":647.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":500,"maxDim":1,"armorClass":0,"parentWeighting":0},"5811ce772459770e9e5f9532":{"id":"5811ce772459770e9e5f9532","name":"Stash","value":881.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":680,"maxDim":1,"armorClass":0,"parentWeighting":0},"5827272a24597748c74bdeea":{"id":"5827272a24597748c74bdeea","name":"SOK-12 Leapers UTG PRO MTU002 Long Top aluminum handguard","value":1.4609999999999994,"costPerSlot":5675,"weight":0.428,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58272b392459774b4c7b3ccd":{"id":"58272b392459774b4c7b3ccd","name":"SOK-12 Leapers UTG PRO MTU002 Short Top aluminum handguard","value":2.0385,"costPerSlot":6242.5,"weight":0.408,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58272b842459774abc128d50":{"id":"58272b842459774abc128d50","name":"SOK-12 CSS rear sight rail mount","value":0.3849999999999998,"costPerSlot":2400,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58272d7f2459774f6311ddfd":{"id":"58272d7f2459774f6311ddfd","name":"GK-02 12ga muzzle brake","value":14.553500000000003,"costPerSlot":16670,"weight":0.233,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"583990e32459771419544dd2":{"id":"583990e32459771419544dd2","name":"Kalashnikov AKS-74UN 5.45x39 assault rifle","value":22.6815,"costPerSlot":33049,"weight":2.7350000000000003,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5839a40f24597726f856b511":{"id":"5839a40f24597726f856b511","name":"Kalashnikov AKS-74UB 5.45x39 assault rifle","value":58.00749999999999,"costPerSlot":72678,"weight":3.3409999999999997,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5839a7742459773cf9693481":{"id":"5839a7742459773cf9693481","name":"AKS-74UB dust cover","value":48.9285,"costPerSlot":52999.5,"weight":0.142,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58491f3324597764bc48fa02":{"id":"58491f3324597764bc48fa02","name":"EOTech XPS3-0 holographic sight","value":33.3305,"costPerSlot":35458,"weight":0.255,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"584924ec24597768f12ae244":{"id":"584924ec24597768f12ae244","name":"EOTech XPS3-2 holographic sight","value":22.0245,"costPerSlot":24152,"weight":0.255,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"584984812459776a704a82a6":{"id":"584984812459776a704a82a6","name":"VOMZ Pilad P1x42 Weaver reflex sight","value":13.674,"costPerSlot":15754,"weight":0.16,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5857a8b324597729ab0a0e7d":{"id":"5857a8b324597729ab0a0e7d","name":"Secure container Beta","value":748.4,"costPerSlot":750000,"weight":0.8,"size":6,"gridSize":6,"maxDim":3,"armorClass":0,"parentWeighting":0},"5857a8bc2459772bad15db29":{"id":"5857a8bc2459772bad15db29","name":"Secure container Gamma","value":1849.1000000000001,"costPerSlot":1850000,"weight":1.2,"size":9,"gridSize":9,"maxDim":3,"armorClass":0,"parentWeighting":0},"587de4282459771bca0ec90b":{"id":"587de4282459771bca0ec90b","name":"P226 9x19 112mm threaded barrel","value":11.904,"costPerSlot":13994,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"587de5ba2459771c0f1e8a58":{"id":"587de5ba2459771c0f1e8a58","name":"P226 thread protector","value":-1.605,"costPerSlot":400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"587df3a12459772c28142567":{"id":"587df3a12459772c28142567","name":"SKS 7.62x39 10-round internal box magazine","value":-0.49249999999999994,"costPerSlot":1600,"weight":0.185,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"587df583245977373c4f1129":{"id":"587df583245977373c4f1129","name":"SKS 7.62x39 TAPCO 6610 20-round magazine","value":4.557,"costPerSlot":8613,"weight":0.112,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"587e02ff24597743df3deaeb":{"id":"587e02ff24597743df3deaeb","name":"Molot Arms Simonov OP-SKS 7.62x39 carbine","value":35.7945,"costPerSlot":44691,"weight":3.7929999999999997,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"587e0531245977466077a0f7":{"id":"587e0531245977466077a0f7","name":"OP-SKS wooden stock","value":-7.88025,"costPerSlot":471.25,"weight":0.703,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"587e08ee245977446b4410cf":{"id":"587e08ee245977446b4410cf","name":"OP-SKS dovetail mount","value":7.315000000000001,"costPerSlot":9325,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"588200af24597742fa221dfb":{"id":"588200af24597742fa221dfb","name":"MP-153 12ga 610mm barrel","value":6.362,"costPerSlot":14987,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"588200c224597743990da9ed":{"id":"588200c224597743990da9ed","name":"MP-153 12ga 660mm barrel","value":-6.8302499999999995,"costPerSlot":1794.75,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"588200cf2459774414733d55":{"id":"588200cf2459774414733d55","name":"MP-153 12ga 710mm barrel","value":-6.675,"costPerSlot":4000,"weight":1.35,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"58820d1224597753c90aeb13":{"id":"58820d1224597753c90aeb13","name":"12/70 lead slug","value":8.139,"costPerSlot":164,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5882163224597757561aa920":{"id":"5882163224597757561aa920","name":"MP-153 12ga 7-shell magazine","value":0.07966666666666722,"costPerSlot":6157.666666666667,"weight":0.156,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5882163824597757561aa922":{"id":"5882163824597757561aa922","name":"MP-153 12ga 6-shell magazine","value":-3.4515000000000002,"costPerSlot":610.5,"weight":0.124,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5882163e24597758206fee8c":{"id":"5882163e24597758206fee8c","name":"MP-153 12ga 5-shell magazine","value":7.535,"costPerSlot":10000,"weight":0.93,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"588226d124597767ad33f787":{"id":"588226d124597767ad33f787","name":"Magpul AFG tactical foregrip (Black)","value":15.901,"costPerSlot":17942,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"588226dd24597767ad33f789":{"id":"588226dd24597767ad33f789","name":"Magpul AFG tactical foregrip (FDE)","value":10.18,"costPerSlot":12221,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"588226e62459776e3e094af7":{"id":"588226e62459776e3e094af7","name":"Magpul AFG tactical foregrip (Forest Green)","value":14.350000000000001,"costPerSlot":16391,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"588226ef24597767af46e39c":{"id":"588226ef24597767af46e39c","name":"Magpul AFG tactical foregrip (Olive Drab)","value":9.939,"costPerSlot":11980,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58864a4f2459770fcc257101":{"id":"58864a4f2459770fcc257101","name":"9x19mm PSO gzh","value":8.094,"costPerSlot":99,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5887431f2459777e1612938f":{"id":"5887431f2459777e1612938f","name":"7.62x54mm R LPS gzh","value":9.367,"costPerSlot":1379,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"588892092459774ac91d4b11":{"id":"588892092459774ac91d4b11","name":"Lobaev Arms DVL-10 7.62x51 bolt-action sniper rifle","value":85.2965,"costPerSlot":96871,"weight":5.149,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5888945a2459774bf43ba385":{"id":"5888945a2459774bf43ba385","name":"DVL-10 7.62x51 500mm suppressed barrel","value":8.424000000000001,"costPerSlot":15874,"weight":2.9,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5888956924597752983e182d":{"id":"5888956924597752983e182d","name":"DVL-10 M2 7.62x51 660mm barrel","value":-0.03999999999999915,"costPerSlot":9400,"weight":2.88,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5888961624597754281f93f3":{"id":"5888961624597754281f93f3","name":"Harris S-BRM 6-9\" Bipod","value":3.812500000000001,"costPerSlot":7951,"weight":0.277,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5888976c24597754281f93f5":{"id":"5888976c24597754281f93f5","name":"DVL-10 M2 handguard","value":3.7524999999999995,"costPerSlot":7864,"weight":0.223,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5888988e24597752fe43a6fa":{"id":"5888988e24597752fe43a6fa","name":"DVL-10 7.62x51 10-round magazine","value":7.93,"costPerSlot":10180,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5888996c24597754281f9419":{"id":"5888996c24597754281f9419","name":"DVL-10 M2 7.62x51 muzzle brake","value":28.355,"costPerSlot":30404,"weight":0.098,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58889c7324597754281f9439":{"id":"58889c7324597754281f9439","name":"DVL-10 7.62x51 muzzle device","value":12.8335,"costPerSlot":14886,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58889d0c2459775bc215d981":{"id":"58889d0c2459775bc215d981","name":"DVL-10 Lobaev Arms stock","value":8.918999999999999,"costPerSlot":13002.5,"weight":0.167,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"588b56d02459771481110ae2":{"id":"588b56d02459771481110ae2","name":"AR-15 Daniel Defense RIS II 9.5 handguard (Black)","value":3.4560000000000004,"costPerSlot":7595.5,"weight":0.279,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58948c8e86f77409493f7266":{"id":"58948c8e86f77409493f7266","name":"SIG MPX 9x19 submachine gun","value":33.195,"costPerSlot":51549,"weight":2.708,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"58949dea86f77409483e16a8":{"id":"58949dea86f77409483e16a8","name":"MPX A2 9x19 flash hider","value":-1.1284999999999998,"costPerSlot":903,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58949edd86f77409483e16a9":{"id":"58949edd86f77409483e16a9","name":"MPX ambidextrous charging handle","value":13.1135,"costPerSlot":15130,"weight":0.033,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58949fac86f77409483e16aa":{"id":"58949fac86f77409483e16aa","name":"MPX single latch charging handle","value":-1.3159999999999998,"costPerSlot":700,"weight":0.032,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5894a05586f774094708ef75":{"id":"5894a05586f774094708ef75","name":"MPX 9x19 30-round magazine","value":1.0265000000000004,"costPerSlot":5111.5,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5894a13e86f7742405482982":{"id":"5894a13e86f7742405482982","name":"SIG Sauer Collapsing/Telescoping Stock","value":2.2944999999999993,"costPerSlot":6492.5,"weight":0.396,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5894a2c386f77427140b8342":{"id":"5894a2c386f77427140b8342","name":"MPX 9x19 8 inch barrel","value":1.9405000000000001,"costPerSlot":6065.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5894a42086f77426d2590762":{"id":"5894a42086f77426d2590762","name":"MPX GEN1 6 inch handguard","value":0.8485000000000005,"costPerSlot":4999.5,"weight":0.302,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5894a51286f77426d13baf02":{"id":"5894a51286f77426d13baf02","name":"MPX pistol grip","value":10.994,"costPerSlot":13029,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5894a5b586f77426d2590767":{"id":"5894a5b586f77426d2590767","name":"MPX GEN1 9x19 upper receiver","value":0.7555000000000005,"costPerSlot":4999.5,"weight":0.488,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5894a73486f77426d259076c":{"id":"5894a73486f77426d259076c","name":"MPX flip-up front sight","value":-1.465,"costPerSlot":600,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5894a81786f77427140b8347":{"id":"5894a81786f77427140b8347","name":"MPX flip-up rear sight","value":-1.268,"costPerSlot":802,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58a56f8d86f774651579314c":{"id":"58a56f8d86f774651579314c","name":"MPX GEN1 handguard 2 inch rail","value":-0.17699999999999982,"costPerSlot":1858,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58a5c12e86f7745d585a2b9e":{"id":"58a5c12e86f7745d585a2b9e","name":"MPX GEN1 handguard 4 inch rail","value":7.975,"costPerSlot":10000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58ac1bf086f77420ed183f9f":{"id":"58ac1bf086f77420ed183f9f","name":"SIG Sauer Folding Knuckle Stock Adapter","value":14.617999999999999,"costPerSlot":16718,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58ac60eb86f77401897560ff":{"id":"58ac60eb86f77401897560ff","name":"Balaclava_dev","value":100.55,"costPerSlot":1600,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":10,"parentWeighting":5},"58aeaaa886f7744fc1560f81":{"id":"58aeaaa886f7744fc1560f81","name":"MPX-SD 9x19 6.5 inch ported barrel","value":6.319000000000001,"costPerSlot":10409,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58aeac1b86f77457c419f475":{"id":"58aeac1b86f77457c419f475","name":"MPX-SD 9x19 integrated sound suppressor","value":6.451499999999999,"costPerSlot":10751.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58c157be86f77403c74b2bb6":{"id":"58c157be86f77403c74b2bb6","name":"TangoDown Stubby BGV-MK46K foregrip (FDE)","value":3.4970000000000008,"costPerSlot":5533,"weight":0.072,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58c157c886f774032749fb06":{"id":"58c157c886f774032749fb06","name":"TangoDown Stubby BGV-MK46K foregrip (Stealth Grey)","value":8.984,"costPerSlot":11020,"weight":0.072,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58d2664f86f7747fec5834f6":{"id":"58d2664f86f7747fec5834f6","name":"DeltaPoint Cross Slot Mount base","value":10.516499999999999,"costPerSlot":12539,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58d268fc86f774111273f8c2":{"id":"58d268fc86f774111273f8c2","name":"Leupold DeltaPoint Reflex Sight","value":21.4795,"costPerSlot":23506,"weight":0.053,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58d2912286f7744e27117493":{"id":"58d2912286f7744e27117493","name":"Magpul MOE Carbine rubber buttpad","value":21.677500000000002,"costPerSlot":23705,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58d2946386f774496974c37e":{"id":"58d2946386f774496974c37e","name":"AR-15 Magpul MOE Carbine stock (FDE)","value":1.9969999999999999,"costPerSlot":6110,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58d2946c86f7744e271174b5":{"id":"58d2946c86f7744e271174b5","name":"AR-15 Magpul MOE Carbine stock (Foliage Green)","value":10.8405,"costPerSlot":14953.5,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58d2947686f774485c6a1ee5":{"id":"58d2947686f774485c6a1ee5","name":"AR-15 Magpul MOE Carbine stock (Olive Drab)","value":3.0469999999999997,"costPerSlot":7160,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58d2947e86f77447aa070d53":{"id":"58d2947e86f77447aa070d53","name":"AR-15 Magpul MOE Carbine stock (Stealth Grey)","value":6.143000000000001,"costPerSlot":10256,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"58d399e486f77442e0016fe7":{"id":"58d399e486f77442e0016fe7","name":"Aimpoint Micro T-1 reflex sight","value":26.302,"costPerSlot":28344,"weight":0.084,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58d39b0386f77443380bf13c":{"id":"58d39b0386f77443380bf13c","name":"Aimpoint Micro Spacer High","value":0.1955,"costPerSlot":2203,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58d39d3d86f77445bb794ae7":{"id":"58d39d3d86f77445bb794ae7","name":"Aimpoint Micro Standard Mount","value":10.3485,"costPerSlot":12356,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"58d3db5386f77426186285a0":{"id":"58d3db5386f77426186285a0","name":"M67 hand grenade","value":24.508,"costPerSlot":16706,"weight":0.396,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"58dd3ad986f77403051cba8f":{"id":"58dd3ad986f77403051cba8f","name":"7.62x51mm M80","value":8.408,"costPerSlot":420,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5900b89686f7744e704a8747":{"id":"5900b89686f7744e704a8747","name":"Woods plan map","value":17.7945,"costPerSlot":19817,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d24f86f77466f56e6855":{"id":"5909d24f86f77466f56e6855","name":"Medbag SMU06","value":13.100000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":12,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d36d86f774660f0bb900":{"id":"5909d36d86f774660f0bb900","name":"Grenade box","value":5.300000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":6,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d45286f77465a8136dc6":{"id":"5909d45286f77465a8136dc6","name":"Wooden ammo box","value":9.200000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":9,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d4c186f7746ad34e805a":{"id":"5909d4c186f7746ad34e805a","name":"Medcase","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d50c86f774659e6aaebe":{"id":"5909d50c86f774659e6aaebe","name":"Toolbox","value":13.100000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":12,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d5ef86f77467974efbd8":{"id":"5909d5ef86f77467974efbd8","name":"Weapon box","value":10.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":10,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d76c86f77471e53d2adf":{"id":"5909d76c86f77471e53d2adf","name":"Weapon box","value":20.900000000000002,"costPerSlot":0,"weight":1,"size":1,"gridSize":18,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d7cf86f77470ee57d75a":{"id":"5909d7cf86f77470ee57d75a","name":"Weapon box","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909d89086f77472591234a0":{"id":"5909d89086f77472591234a0","name":"Weapon box","value":30,"costPerSlot":0,"weight":1,"size":1,"gridSize":25,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909e4b686f7747f5b744fa4":{"id":"5909e4b686f7747f5b744fa4","name":"Dead Scav","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"5909e99886f7740c983b9984":{"id":"5909e99886f7740c983b9984","name":"USB Adapter","value":15.551000000000002,"costPerSlot":17751,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a358486f77429692b2790":{"id":"590a358486f77429692b2790","name":"Rechargeable battery","value":14.985,"costPerSlot":17035,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a373286f774287540368b":{"id":"590a373286f774287540368b","name":"Dry fuel","value":40.12500000000001,"costPerSlot":42175,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a386e86f77429692b27ab":{"id":"590a386e86f77429692b27ab","name":"Damaged hard drive","value":5.593,"costPerSlot":9718,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590a391c86f774385a33c404":{"id":"590a391c86f774385a33c404","name":"Magnet","value":25.457,"costPerSlot":27657,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a3b0486f7743954552bdb":{"id":"590a3b0486f7743954552bdb","name":"Printed circuit board","value":20.234,"costPerSlot":22384,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a3c0a86f774385a33c450":{"id":"590a3c0a86f774385a33c450","name":"Spark plug","value":8.949000000000002,"costPerSlot":10989,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a3cd386f77436f20848cb":{"id":"590a3cd386f77436f20848cb","name":"Energy-saving lamp","value":8.722000000000001,"costPerSlot":10822,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a3d9c86f774385926e510":{"id":"590a3d9c86f774385926e510","name":"Ultraviolet lamp","value":17.439,"costPerSlot":19539,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590a3efd86f77437d351a25b":{"id":"590a3efd86f77437d351a25b","name":"Gas analyzer","value":10.334000000000001,"costPerSlot":14534,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c2b4386f77425357b6123":{"id":"590c2b4386f77425357b6123","name":"Pliers","value":16.988,"costPerSlot":19238,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c2c9c86f774245b1f03f2":{"id":"590c2c9c86f774245b1f03f2","name":"Construction measuring tape","value":9.091000000000001,"costPerSlot":11166,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c2d8786f774245b1f03f3":{"id":"590c2d8786f774245b1f03f3","name":"Screwdriver","value":22.164,"costPerSlot":24239,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c2e1186f77425357b6124":{"id":"590c2e1186f77425357b6124","name":"Toolset","value":1.2999999999999998,"costPerSlot":7750,"weight":0.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c311186f77424d1667482":{"id":"590c311186f77424d1667482","name":"Wrench","value":6.958,"costPerSlot":9208,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c31c586f774245e3141b2":{"id":"590c31c586f774245e3141b2","name":"Pack of nails","value":8.546999999999999,"costPerSlot":10847,"weight":0.6,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c346786f77423e50ed342":{"id":"590c346786f77423e50ed342","name":"Xenomorph sealing foam","value":4.859333333333334,"costPerSlot":11259.333333333334,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"590c35a486f774273531c822":{"id":"590c35a486f774273531c822","name":"Shustrilo sealing foam","value":5.334,"costPerSlot":11834,"weight":1,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"590c37d286f77443be3d7827":{"id":"590c37d286f77443be3d7827","name":"SAS drive","value":89.885,"costPerSlot":92000,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c392f86f77444754deb29":{"id":"590c392f86f77444754deb29","name":"SSD drive","value":77.98,"costPerSlot":80000,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c595c86f7747884343ad7":{"id":"590c595c86f7747884343ad7","name":"Gas mask air filter","value":16.259,"costPerSlot":20509,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c5a7286f7747884343aea":{"id":"590c5a7286f7747884343aea","name":"Gunpowder \"Kite\"","value":6.997,"costPerSlot":11297,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c5bbd86f774785762df04":{"id":"590c5bbd86f774785762df04","name":"WD-40 (100ml)","value":4.8580000000000005,"costPerSlot":6958,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c5c9f86f77477c91c36e7":{"id":"590c5c9f86f77477c91c36e7","name":"WD-40 (400ml)","value":4.330499999999999,"costPerSlot":8630.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c5d4b86f774784e1b9c45":{"id":"590c5d4b86f774784e1b9c45","name":"Iskra ration pack","value":18.42,"costPerSlot":18295,"weight":1.75,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"590c5f0d86f77413997acfab":{"id":"590c5f0d86f77413997acfab","name":"MRE ration pack","value":18.671,"costPerSlot":18041,"weight":0.74,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"590c60fc86f77412b13fddcf":{"id":"590c60fc86f77412b13fddcf","name":"Documents case","value":100.1245,"costPerSlot":83734.5,"weight":0.82,"size":2,"gridSize":16,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c621186f774138d11ea29":{"id":"590c621186f774138d11ea29","name":"Secure Flash drive","value":38.112,"costPerSlot":40152,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c639286f774151567fa95":{"id":"590c639286f774151567fa95","name":"Tech manual","value":2.7190000000000003,"costPerSlot":6819,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c645c86f77412b01304d9":{"id":"590c645c86f77412b01304d9","name":"Diary","value":24.9,"costPerSlot":29000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590c651286f7741e566b6461":{"id":"590c651286f7741e566b6461","name":"Slim diary","value":68.95,"costPerSlot":71000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590c657e86f77412b013051d":{"id":"590c657e86f77412b013051d","name":"Grizzly medical kit","value":20.72375,"costPerSlot":19523.75,"weight":1.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":8},"590c661e86f7741e566b646a":{"id":"590c661e86f7741e566b646a","name":"Car first aid kit","value":11.2705,"costPerSlot":7770.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":8},"590c678286f77426c9660122":{"id":"590c678286f77426c9660122","name":"IFAK individual first aid kit","value":34.418,"costPerSlot":28668,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"590c695186f7741e566b64a2":{"id":"590c695186f7741e566b64a2","name":"Augmentin antibiotic pills","value":51.38,"costPerSlot":45415,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"590de4a286f77423d9312a32":{"id":"590de4a286f77423d9312a32","name":"Folding car key","value":-1.905,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590de52486f774226a0c24c2":{"id":"590de52486f774226a0c24c2","name":"Machinery key","value":-1.905,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"590de71386f774347051a052":{"id":"590de71386f774347051a052","name":"Antique teapot","value":18.9,"costPerSlot":23450,"weight":1.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"590de7e986f7741b096e5f32":{"id":"590de7e986f7741b096e5f32","name":"Antique vase","value":9.95,"costPerSlot":16950,"weight":2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"591094e086f7747caa7bb2ef":{"id":"591094e086f7747caa7bb2ef","name":"Body armor repair kit","value":142.3165,"costPerSlot":161316.5,"weight":20,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5910968f86f77425cf569c32":{"id":"5910968f86f77425cf569c32","name":"Weapon repair kit","value":13.7285,"costPerSlot":26228.5,"weight":7,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5913611c86f77479e0084092":{"id":"5913611c86f77479e0084092","name":"Trailer park portable cabin key","value":6.687999999999999,"costPerSlot":8693,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5913651986f774432f15d132":{"id":"5913651986f774432f15d132","name":"VAZ car key","value":7.193,"costPerSlot":9198,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59136a4486f774447a1ed172":{"id":"59136a4486f774447a1ed172","name":"Dorm guard desk key","value":13.437999999999999,"costPerSlot":15443,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59136e1e86f774432f15d133":{"id":"59136e1e86f774432f15d133","name":"Dorm room 110 key","value":45.221,"costPerSlot":47226,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59136f6f86f774447a1ed173":{"id":"59136f6f86f774447a1ed173","name":"Folding car key","value":9.962,"costPerSlot":11967,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"591382d986f774465a6413a7":{"id":"591382d986f774465a6413a7","name":"Dorm room 105 key","value":39.57,"costPerSlot":41575,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"591383f186f7744a4c5edcf3":{"id":"591383f186f7744a4c5edcf3","name":"Dorm room 104 key","value":12.007,"costPerSlot":14012,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5913877a86f774432f15d444":{"id":"5913877a86f774432f15d444","name":"Gas station storage room key","value":133.083,"costPerSlot":135088,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5913915886f774123603c392":{"id":"5913915886f774123603c392","name":"Military checkpoint key","value":28.289,"costPerSlot":30294,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59139c2186f77411564f8e42":{"id":"59139c2186f77411564f8e42","name":"PC block","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"5914578086f774123569ffa4":{"id":"5914578086f774123569ffa4","name":"Dorm room 108 key","value":7.273999999999999,"costPerSlot":9279,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59148c8a86f774197930e983":{"id":"59148c8a86f774197930e983","name":"Dorm room 204 key","value":26.376,"costPerSlot":28381,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59148f8286f7741b951ea113":{"id":"59148f8286f7741b951ea113","name":"Weapon safe key","value":-0.843,"costPerSlot":1162,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5914944186f774189e5e76c2":{"id":"5914944186f774189e5e76c2","name":"Jacket","value":2.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"591ae8f986f77406f854be45":{"id":"591ae8f986f77406f854be45","name":"Yotota car key","value":7.439,"costPerSlot":9444,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"591aef7986f774139d495f03":{"id":"591aef7986f774139d495f03","name":"AR-15 TROY M7A1 PDW stock (Black)","value":2.33,"costPerSlot":6530,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"591af10186f774139d495f0e":{"id":"591af10186f774139d495f0e","name":"AR-15 TROY M7A1 PDW stock (FDE)","value":4.3245000000000005,"costPerSlot":8524.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"591af28e86f77414a27a9e1d":{"id":"591af28e86f77414a27a9e1d","name":"Viking Tactics UVG tactical foregrip","value":10.887500000000001,"costPerSlot":12941,"weight":0.107,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"591afe0186f77431bd616a11":{"id":"591afe0186f77431bd616a11","name":"ZB-014 key","value":22.07,"costPerSlot":24075,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"591c4e1186f77410354b316e":{"id":"591c4e1186f77410354b316e","name":"Axion Kobra sight shade","value":-0.5025,"costPerSlot":1500,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"591c4efa86f7741030027726":{"id":"591c4efa86f7741030027726","name":"Axion Kobra EKP-8-18 reflex sight","value":12.605500000000001,"costPerSlot":14742,"weight":0.273,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"591ee00d86f774592f7b841e":{"id":"591ee00d86f774592f7b841e","name":"Axion Kobra dovetail mount","value":8.0195,"costPerSlot":10041,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5926bb2186f7744b1c6c6e60":{"id":"5926bb2186f7744b1c6c6e60","name":"HK MP5 9x19 submachine gun (Navy 3 Round Burst)","value":42.804500000000004,"costPerSlot":50045,"weight":2.481,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5926c0df86f77462f647f764":{"id":"5926c0df86f77462f647f764","name":"HK MP5 9x19 upper receiver","value":0.2940000000000005,"costPerSlot":4588,"weight":0.588,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5926c32286f774616e42de99":{"id":"5926c32286f774616e42de99","name":"HK MP5 cocking handle","value":-0.4129999999999998,"costPerSlot":1650,"weight":0.126,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5926c36d86f77467a92a8629":{"id":"5926c36d86f77467a92a8629","name":"HK MP5 Wide Tropical polymer handguard","value":-2.6,"costPerSlot":1520.5,"weight":0.241,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5926c3b286f774640d189b6b":{"id":"5926c3b286f774640d189b6b","name":"HK MP5 9x19 30-round magazine","value":1.532,"costPerSlot":5617,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5926d2be86f774134d668e4e":{"id":"5926d2be86f774134d668e4e","name":"HK MP5 Drum rear sight","value":7.93,"costPerSlot":10000,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5926d33d86f77410de68ebc0":{"id":"5926d33d86f77410de68ebc0","name":"HK MP5SD 9x19 sound suppressor","value":13.348499999999998,"costPerSlot":17596.5,"weight":0.496,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5926d3c686f77410de68ebc8":{"id":"5926d3c686f77410de68ebc8","name":"HK MP5 A2 stock","value":22.385,"costPerSlot":26583,"weight":0.396,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5926d40686f7740f152b6b7e":{"id":"5926d40686f7740f152b6b7e","name":"HK MP5 A3 old model stock","value":2.6465000000000005,"costPerSlot":6861.5,"weight":0.43,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5926dad986f7741f82604363":{"id":"5926dad986f7741f82604363","name":"HK MP5 MFI HK universal low profile scope mount","value":15.683500000000002,"costPerSlot":17719,"weight":0.071,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5926e16e86f7742f5a0f7ecb":{"id":"5926e16e86f7742f5a0f7ecb","name":"HK MP5 3-lug muzzle adapter","value":0.726,"costPerSlot":2766,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5926f2e086f7745aae644231":{"id":"5926f2e086f7745aae644231","name":"HK MP5SD 9x19 upper receiver","value":6.215999999999999,"costPerSlot":10526,"weight":0.62,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5926f34786f77469195bfe92":{"id":"5926f34786f77469195bfe92","name":"HK MP5SD polymer handguard","value":12.402999999999999,"costPerSlot":16468,"weight":0.13,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5929a2a086f7744f4b234d43":{"id":"5929a2a086f7744f4b234d43","name":"UMTBS 6Sh112 Scout-Sniper chest rig (EMR)","value":22.461000000000002,"costPerSlot":22711,"weight":1.7,"size":12,"gridSize":12,"maxDim":4,"armorClass":0,"parentWeighting":1},"592c2d1a86f7746dbe2af32a":{"id":"592c2d1a86f7746dbe2af32a","name":"ANA Tactical Alpha chest rig (Olive Drab)","value":56.239,"costPerSlot":50089,"weight":1.7,"size":16,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":1},"5937ee6486f77408994ba448":{"id":"5937ee6486f77408994ba448","name":"Machinery key","value":0.009000000000000341,"costPerSlot":2014,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5937ef2b86f77408a47244b3":{"id":"5937ef2b86f77408a47244b3","name":"Jacket","value":2.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"5938144586f77473c2087145":{"id":"5938144586f77473c2087145","name":"Portable bunkhouse key","value":52.303,"costPerSlot":54308,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5938504186f7740991483f30":{"id":"5938504186f7740991483f30","name":"Dorm room 203 key","value":25.129,"costPerSlot":27134,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"593858c486f774253a24cb52":{"id":"593858c486f774253a24cb52","name":"Pumping station back door key","value":3.123,"costPerSlot":5128,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5938603e86f77435642354f4":{"id":"5938603e86f77435642354f4","name":"Dorm room 206 key","value":8.731,"costPerSlot":10736,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59387a4986f77401cc236e62":{"id":"59387a4986f77401cc236e62","name":"Dorm room 114 key","value":141.33,"costPerSlot":143335,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59387ac686f77401442ddd61":{"id":"59387ac686f77401442ddd61","name":"Jacket","value":2.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"5938994586f774523a425196":{"id":"5938994586f774523a425196","name":"Dorm room 103 key","value":4.009,"costPerSlot":6014,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"593962ca86f774068014d9af":{"id":"593962ca86f774068014d9af","name":"Unknown key","value":-0.4009999999999998,"costPerSlot":1604,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"593aa4be86f77457f56379f8":{"id":"593aa4be86f77457f56379f8","name":"Dorm room 303 key","value":23.995,"costPerSlot":26000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"593d1fa786f7746da62d61ac":{"id":"593d1fa786f7746da62d61ac","name":"SKS Leapers UTG SOCOM rail mount","value":1.9494999999999996,"costPerSlot":5984.5,"weight":0.07,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"593d489686f7745c6255d58a":{"id":"593d489686f7745c6255d58a","name":"AKM Hexagon 7.62x39 sound suppressor","value":17.125999999999998,"costPerSlot":21357,"weight":0.462,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"593d490386f7745ee97a1555":{"id":"593d490386f7745ee97a1555","name":"SKS Hexagon 7.62x39 sound suppressor","value":17.706,"costPerSlot":21937,"weight":0.462,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"593d493f86f7745e6b2ceb22":{"id":"593d493f86f7745e6b2ceb22","name":"AK-74 Hexagon 5.45x39 sound suppressor","value":15.454999999999998,"costPerSlot":19686,"weight":0.462,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5943d9c186f7745a13413ac9":{"id":"5943d9c186f7745a13413ac9","name":"Shrapnel","value":8.095,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5943ee5a86f77413872d25ec":{"id":"5943ee5a86f77413872d25ec","name":"AR-15 PWS CQB 5.56x45 muzzle brake","value":20.316,"costPerSlot":22416,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5943eeeb86f77412d6384f6b":{"id":"5943eeeb86f77412d6384f6b","name":"AK-74 PWS CQB 74 5.45x39 muzzle brake","value":19.691000000000003,"costPerSlot":21786,"weight":0.19,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5947c73886f7747701588af5":{"id":"5947c73886f7747701588af5","name":"AR-15 MFT BUS stock","value":4.975000000000001,"costPerSlot":9102.5,"weight":0.255,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5947db3f86f77447880cf76f":{"id":"5947db3f86f77447880cf76f","name":"Axion Kobra EKP-8-02 reflex sight (Dovetail)","value":10.1635,"costPerSlot":12300,"weight":0.273,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5947e98b86f774778f1448bc":{"id":"5947e98b86f774778f1448bc","name":"AR-15 Magpul UBR GEN2 stock (Black)","value":13.107,"costPerSlot":17412,"weight":0.61,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5947eab886f77475961d96c5":{"id":"5947eab886f77475961d96c5","name":"AR-15 Magpul UBR GEN2 stock (FDE)","value":14.4345,"costPerSlot":18739.5,"weight":0.61,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5947f92f86f77427344a76b1":{"id":"5947f92f86f77427344a76b1","name":"AK TAPCO SAW-Style pistol grip (Black)","value":2.4349999999999996,"costPerSlot":4500,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5947fa2486f77425b47c1a9b":{"id":"5947fa2486f77425b47c1a9b","name":"AK TAPCO SAW-Style pistol grip (FDE)","value":15.556999999999999,"costPerSlot":17622,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"595cf16b86f77427440c32e2":{"id":"595cf16b86f77427440c32e2","name":"AR-15 War Sport LVOA-S handguard (Black)","value":8.5345,"costPerSlot":12784.5,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"595cfa8b86f77427437e845b":{"id":"595cfa8b86f77427437e845b","name":"AR-15 War Sport LVOA-C handguard (Black)","value":13.312333333333335,"costPerSlot":19602.333333333332,"weight":0.58,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5963866286f7747bf429b572":{"id":"5963866286f7747bf429b572","name":"Stash","value":122.30000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":96,"maxDim":1,"armorClass":0,"parentWeighting":0},"5963866b86f7747bfa1c4462":{"id":"5963866b86f7747bfa1c4462","name":"Stash","value":413.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":320,"maxDim":1,"armorClass":0,"parentWeighting":0},"5991b51486f77447b112d44f":{"id":"5991b51486f77447b112d44f","name":"MS2000 Marker","value":14.405000000000001,"costPerSlot":16480,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5996f6cb86f774678763a6ca":{"id":"5996f6cb86f774678763a6ca","name":"RGD-5 Shrapnel","value":8.095,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5996f6d686f77467977ba6cc":{"id":"5996f6d686f77467977ba6cc","name":"MON-50 Shrapnel","value":8.095,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5996f6fc86f7745e585b4de3":{"id":"5996f6fc86f7745e585b4de3","name":"M67 Shrapnel","value":8.095,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59984ab886f7743e98271174":{"id":"59984ab886f7743e98271174","name":"PP-19-01 Vityaz 9x19 submachine gun","value":14.744000000000003,"costPerSlot":22173,"weight":2.8579999999999997,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5998517986f7746017232f7e":{"id":"5998517986f7746017232f7e","name":"PP-19-01 Vityaz pistol grip","value":-1.1360000000000001,"costPerSlot":899,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"599851db86f77467372f0a18":{"id":"599851db86f77467372f0a18","name":"PP-19-01 Vityaz metal skeleton stock","value":-3.355,"costPerSlot":754,"weight":0.218,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5998529a86f774647f44f421":{"id":"5998529a86f774647f44f421","name":"Saiga-9 9x19 sb.7 10-round magazine","value":0.3254999999999999,"costPerSlot":4410.5,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5998597786f77414ea6da093":{"id":"5998597786f77414ea6da093","name":"PP-19-01 Vityaz 9x19 muzzle brake-compensator","value":-1.3719999999999999,"costPerSlot":663,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5998598e86f7740b3f498a86":{"id":"5998598e86f7740b3f498a86","name":"Saiga-9 9x19 muzzle brake-compensator","value":-1.5350000000000001,"costPerSlot":500,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59985a6c86f77414ec448d17":{"id":"59985a6c86f77414ec448d17","name":"PP-19-01 Vityaz-SN dust cover","value":0.10550000000000015,"costPerSlot":4173.5,"weight":0.136,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59985a8086f77414ec448d1a":{"id":"59985a8086f77414ec448d1a","name":"PP-19-01 Vityaz dust cover","value":-3.4684999999999997,"costPerSlot":599.5,"weight":0.136,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"599860ac86f77436b225ed1a":{"id":"599860ac86f77436b225ed1a","name":"PP-19-01 Vityaz 9x19 30-round magazine","value":1.6814999999999998,"costPerSlot":5766.5,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"599860e986f7743bb57573a6":{"id":"599860e986f7743bb57573a6","name":"PP-19-01 Vityaz rear sight","value":-1.5985,"costPerSlot":414,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59bfc5c886f7743bf6794e62":{"id":"59bfc5c886f7743bf6794e62","name":"PP-19-01 Vityaz 9x19 sound suppressor","value":8.427999999999999,"costPerSlot":12693,"weight":0.53,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59bfe68886f7746004266202":{"id":"59bfe68886f7746004266202","name":"AR-15 Vltor MUR-1S 5.56x45 upper receiver","value":23.246,"costPerSlot":27369,"weight":0.246,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59bffbb386f77435b379b9c2":{"id":"59bffbb386f77435b379b9c2","name":"SilencerCo Hybrid 46 multi-caliber sound suppressor","value":30.555000000000007,"costPerSlot":34800,"weight":0.49,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59bffc1f86f77435b128b872":{"id":"59bffc1f86f77435b128b872","name":"SilencerCo Hybrid 46 Direct Thread Mount adapter","value":10.223,"costPerSlot":12293,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59c0ec5b86f77435b128bfca":{"id":"59c0ec5b86f77435b128bfca","name":"Hexagon 12K 12ga sound suppressor","value":9.297500000000001,"costPerSlot":13544,"weight":0.493,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59c1383d86f774290a37e0ca":{"id":"59c1383d86f774290a37e0ca","name":"AR-15 5.56x45 Magpul PMAG D-60 STANAG 60-round magazine","value":3.4165,"costPerSlot":7706.5,"weight":0.58,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59c63b4486f7747afb151c1c":{"id":"59c63b4486f7747afb151c1c","name":"HK MP5SD B&T tri-rail ring mount","value":19.352,"costPerSlot":21393,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59c6633186f7740cf0493bb9":{"id":"59c6633186f7740cf0493bb9","name":"AK-74 gas tube","value":0.6419999999999999,"costPerSlot":2702,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59ccd11386f77428f24a488f":{"id":"59ccd11386f77428f24a488f","name":"PP-19-01 Vityaz gas tube","value":-0.262,"costPerSlot":1793,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59ccfdba86f7747f2109a587":{"id":"59ccfdba86f7747f2109a587","name":"AK UltiMAK M1-B handguard with gas tube","value":0.18100000000000005,"costPerSlot":2241,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59d36a0086f7747e673f3946":{"id":"59d36a0086f7747e673f3946","name":"AKS-74U gas tube","value":-0.014000000000000012,"costPerSlot":2001,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59d6088586f774275f37482f":{"id":"59d6088586f774275f37482f","name":"Kalashnikov AKM 7.62x39 assault rifle","value":67.36900000000001,"costPerSlot":86064,"weight":3.39,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"59d625f086f774661516605d":{"id":"59d625f086f774661516605d","name":"AK 7.62x39 30-round magazine (issued '55 or later)","value":-0.23150000000000004,"costPerSlot":3953.5,"weight":0.37,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59d6272486f77466146386ff":{"id":"59d6272486f77466146386ff","name":"AK 7.62x39 Magpul PMAG 30 GEN M3 30-round magazine","value":1.4475000000000007,"costPerSlot":5547.5,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59d64ec286f774171d1e0a42":{"id":"59d64ec286f774171d1e0a42","name":"AKM gas tube","value":-0.004999999999999893,"costPerSlot":2055,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59d64f2f86f77417193ef8b3":{"id":"59d64f2f86f77417193ef8b3","name":"AKM wooden handguard","value":-1.278,"costPerSlot":852,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59d64fc686f774171b243fe2":{"id":"59d64fc686f774171b243fe2","name":"AKM 7.62x39 muzzle brake-compensator","value":-1.4020000000000001,"costPerSlot":608,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59d6507c86f7741b846413a2":{"id":"59d6507c86f7741b846413a2","name":"AKM dust cover","value":-3.493,"costPerSlot":551,"weight":0.088,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59d650cf86f7741b846413a4":{"id":"59d650cf86f7741b846413a4","name":"AKM rear sight","value":-1.5305,"costPerSlot":482,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59d6514b86f774171a068a08":{"id":"59d6514b86f774171a068a08","name":"AKM wooden stock","value":15.721999999999998,"costPerSlot":19947,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59d790f486f77403cb06aec6":{"id":"59d790f486f77403cb06aec6","name":"Armytek Predator Pro v3 XHP35 HI flashlight","value":9.946,"costPerSlot":12006,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59db3a1d86f77429e05b4e92":{"id":"59db3a1d86f77429e05b4e92","name":"AR-15 Naroh Arms GRAL-S pistol grip","value":36.693000000000005,"costPerSlot":38739,"weight":0.092,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59db3acc86f7742a2c4ab912":{"id":"59db3acc86f7742a2c4ab912","name":"AR-15 Stark AR Rifle Grip (Black)","value":24.494,"costPerSlot":26539,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59db3b0886f77429d72fb895":{"id":"59db3b0886f77429d72fb895","name":"AR-15 Stark AR Rifle Grip (FDE)","value":15.642999999999997,"costPerSlot":17688,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59db794186f77448bc595262":{"id":"59db794186f77448bc595262","name":"Secure container Epsilon","value":1097.8500000000001,"costPerSlot":1100000,"weight":1.1,"size":8,"gridSize":8,"maxDim":4,"armorClass":0,"parentWeighting":0},"59db7e1086f77448be30ddf3":{"id":"59db7e1086f77448be30ddf3","name":"Trijicon ACOG TA11D 3.5x35 scope","value":8.9635,"costPerSlot":13161.5,"weight":0.396,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59db7eed86f77461f8380365":{"id":"59db7eed86f77461f8380365","name":"Trijicon TA51 sight mount","value":10.7405,"costPerSlot":12797,"weight":0.113,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e0bdb186f774156f04ce82":{"id":"59e0bdb186f774156f04ce82","name":"Vltor CASV KeyMod 2 inch rail","value":17.6445,"costPerSlot":19677,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e0be5d86f7742d48765bd2":{"id":"59e0be5d86f7742d48765bd2","name":"Vltor CASV KeyMod 4 inch rail","value":12.932,"costPerSlot":14967,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e0bed186f774156f04ce84":{"id":"59e0bed186f774156f04ce84","name":"Vltor CASV KeyMod 6 inch rail","value":13.8025,"costPerSlot":15840,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e0d99486f7744a32234762":{"id":"59e0d99486f7744a32234762","name":"7.62x39mm BP gzh","value":9.103,"costPerSlot":1111,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e3556c86f7741776641ac2":{"id":"59e3556c86f7741776641ac2","name":"Ox bleach","value":0.7915000000000001,"costPerSlot":5391.5,"weight":1.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e3577886f774176a362503":{"id":"59e3577886f774176a362503","name":"Pack of sugar","value":51.854,"costPerSlot":49104,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"59e358a886f7741776641ac3":{"id":"59e358a886f7741776641ac3","name":"Clin window cleaner","value":5.606,"costPerSlot":9856,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e3596386f774176c10a2a2":{"id":"59e3596386f774176c10a2a2","name":"PAID AntiRoach spray","value":12.055,"costPerSlot":16305,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e35abd86f7741778269d82":{"id":"59e35abd86f7741778269d82","name":"Pack of sodium bicarbonate","value":20.490000000000002,"costPerSlot":22740,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e35cbb86f7741778269d83":{"id":"59e35cbb86f7741778269d83","name":"Corrugated hose","value":1.8005000000000004,"costPerSlot":6100.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e35de086f7741778269d84":{"id":"59e35de086f7741778269d84","name":"Electric drill","value":3.3260000000000005,"costPerSlot":9926,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e35ef086f7741777737012":{"id":"59e35ef086f7741777737012","name":"Pack of screws","value":5.305,"costPerSlot":7455,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e3606886f77417674759a5":{"id":"59e3606886f77417674759a5","name":"Bottle of saline solution","value":43.230000000000004,"costPerSlot":45480,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e361e886f774176c10a2a5":{"id":"59e361e886f774176c10a2a5","name":"Bottle of hydrogen peroxide","value":14.724999999999998,"costPerSlot":16775,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e3639286f7741777737013":{"id":"59e3639286f7741777737013","name":"Bronze lion figurine","value":14.555833333333332,"costPerSlot":27155.833333333332,"weight":7.2,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"59e3647686f774176a362507":{"id":"59e3647686f774176a362507","name":"Wooden clock","value":13.329,"costPerSlot":20829,"weight":3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e3658a86f7741776641ac4":{"id":"59e3658a86f7741776641ac4","name":"Cat figurine","value":13.219333333333331,"costPerSlot":20769.333333333332,"weight":3.1,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"59e366c186f7741778269d85":{"id":"59e366c186f7741778269d85","name":"Piece of plexiglass","value":18.052,"costPerSlot":20402,"weight":0.7,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e36c6f86f774176c10a2a7":{"id":"59e36c6f86f774176c10a2a7","name":"Power cord","value":4.824,"costPerSlot":9124,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e4cf5286f7741778269d8a":{"id":"59e4cf5286f7741778269d8a","name":"7.62x39mm T-45M1 gzh","value":8.264,"costPerSlot":272,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e4d24686f7741776641ac7":{"id":"59e4d24686f7741776641ac7","name":"7.62x39mm US gzh","value":8.217,"costPerSlot":227,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e4d3d286f774176a36250a":{"id":"59e4d3d286f774176a36250a","name":"7.62x39mm HP","value":8.068999999999999,"costPerSlot":75,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e5d83b86f7745aed03d262":{"id":"59e5d83b86f7745aed03d262","name":"AK 7.62x39 ribbed metal 10-round magazine","value":1.282,"costPerSlot":3382,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e5f5a486f7746c530b3ce2":{"id":"59e5f5a486f7746c530b3ce2","name":"AK 7.62x39 Molot Arms 6P2.Sb-11 40-round magazine","value":-3.531,"costPerSlot":2699,"weight":0.46,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"59e6152586f77473dc057aa1":{"id":"59e6152586f77473dc057aa1","name":"Molot Arms VPO-136 Vepr-KM 7.62x39 carbine","value":10.425500000000003,"costPerSlot":29048,"weight":3.2450000000000006,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"59e61eb386f77440d64f5daf":{"id":"59e61eb386f77440d64f5daf","name":"VPO-136 Vepr-KM 7.62x39 muzzle brake-compensator","value":-1.4100000000000001,"costPerSlot":600,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e6227d86f77440d64f5dc2":{"id":"59e6227d86f77440d64f5dc2","name":"VPO-136 Vepr-KM wooden stock","value":-3.3129999999999997,"costPerSlot":912,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e6284f86f77440d569536f":{"id":"59e6284f86f77440d569536f","name":"VPO-136 Vepr-KM wooden handguard","value":-1.329,"costPerSlot":801,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e62cc886f77440d40b52a1":{"id":"59e62cc886f77440d40b52a1","name":"AKM bakelite pistol grip","value":-1.334,"costPerSlot":701,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e6318286f77444dd62c4cc":{"id":"59e6318286f77444dd62c4cc","name":"AK Molot bakelite pistol grip","value":-1.267,"costPerSlot":768,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e6449086f7746c9f75e822":{"id":"59e6449086f7746c9f75e822","name":"Molot Arms AKM-type dust cover","value":-3.545,"costPerSlot":499,"weight":0.088,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e649f986f77411d949b246":{"id":"59e649f986f77411d949b246","name":"Molot Arms AKM-type gas tube","value":9.748,"costPerSlot":11808,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e6542b86f77411dc52a77a":{"id":"59e6542b86f77411dc52a77a","name":".366 TKM FMJ","value":8.108,"costPerSlot":116,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e655cb86f77411dc52a77b":{"id":"59e655cb86f77411dc52a77b","name":".366 TKM EKO","value":8.179,"costPerSlot":184,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e6658b86f77411d949b250":{"id":"59e6658b86f77411d949b250","name":".366 TKM Geksa","value":8.067,"costPerSlot":75,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e6687d86f77411d949b251":{"id":"59e6687d86f77411d949b251","name":"Molot Arms VPO-209 .366 TKM carbine","value":13.261500000000002,"costPerSlot":31879,"weight":3.2350000000000003,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"59e68f6f86f7746c9f75e846":{"id":"59e68f6f86f7746c9f75e846","name":"5.56x45mm M856","value":8.171,"costPerSlot":177,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e6906286f7746c9f75e847":{"id":"59e6906286f7746c9f75e847","name":"5.56x45mm M856A1","value":8.985,"costPerSlot":991,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e690b686f7746c9f75e848":{"id":"59e690b686f7746c9f75e848","name":"5.56x45mm M995","value":9.224,"costPerSlot":1230,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e6918f86f7746c9f75e849":{"id":"59e6918f86f7746c9f75e849","name":"5.56x45mm MK 255 Mod 0 (RRLP)","value":8.099,"costPerSlot":105,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e6920f86f77411d82aa167":{"id":"59e6920f86f77411d82aa167","name":"5.56x45mm FMJ","value":8.199,"costPerSlot":205,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e6927d86f77411da468256":{"id":"59e6927d86f77411da468256","name":"5.56x45mm HP","value":8.044,"costPerSlot":50,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e7635f86f7742cbf2c1095":{"id":"59e7635f86f7742cbf2c1095","name":"BNTI Module-3M body armor","value":5.5120000000000005,"costPerSlot":20512,"weight":6,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"59e763f286f7742ee57895da":{"id":"59e763f286f7742ee57895da","name":"Pilgrim tourist backpack","value":82.759,"costPerSlot":78999,"weight":3.48,"size":35,"gridSize":35,"maxDim":7,"armorClass":0,"parentWeighting":2},"59e7643b86f7742cbf2c109a":{"id":"59e7643b86f7742cbf2c109a","name":"WARTECH TV-109 + TV-106 chest rig (A-TACS FG)","value":18.437,"costPerSlot":17337,"weight":1.8,"size":9,"gridSize":10,"maxDim":3,"armorClass":0,"parentWeighting":1},"59e7708286f7742cbd762753":{"id":"59e7708286f7742cbd762753","name":"Ushanka ear flap hat","value":13.841999999999999,"costPerSlot":14892,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"59e770b986f7742cbd762754":{"id":"59e770b986f7742cbd762754","name":"Anti-fragmentation glasses","value":11.21,"costPerSlot":10265,"weight":0.11,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"59e770f986f7742cbe3164ef":{"id":"59e770f986f7742cbe3164ef","name":"Army cap","value":4.95,"costPerSlot":2000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"59e7711e86f7746cae05fbe1":{"id":"59e7711e86f7746cae05fbe1","name":"Kolpak-1S riot helmet","value":17.671,"costPerSlot":19621,"weight":1.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"59e7715586f7742ee5789605":{"id":"59e7715586f7742ee5789605","name":"Respirator","value":8.213,"costPerSlot":9263,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"59e77a2386f7742ee578960a":{"id":"59e77a2386f7742ee578960a","name":"7.62x54mm R PS gzh","value":8.908,"costPerSlot":920,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"59e8936686f77467ce798647":{"id":"59e8936686f77467ce798647","name":"Balaclava_test","value":100.55,"costPerSlot":1600,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":10,"parentWeighting":5},"59e8977386f77415a553c453":{"id":"59e8977386f77415a553c453","name":"VPO-209 rear sight","value":-1.5425,"costPerSlot":470,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e898ee86f77427614bd225":{"id":"59e898ee86f77427614bd225","name":"VPO-209 wooden handguard","value":-1.318,"costPerSlot":812,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59e89d0986f77427600d226e":{"id":"59e89d0986f77427600d226e","name":"VPO-209 wooden stock","value":-3.315,"costPerSlot":910,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59e8a00d86f7742ad93b569c":{"id":"59e8a00d86f7742ad93b569c","name":"VPO-209 thread protector","value":-1.405,"costPerSlot":600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59eb7ebe86f7740b373438ce":{"id":"59eb7ebe86f7740b373438ce","name":"VSS/VAL TOZ 6P29M mount","value":22.7365,"costPerSlot":24784,"weight":0.095,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59ecc28286f7746d7a68aa8c":{"id":"59ecc28286f7746d7a68aa8c","name":"AKS-74/AKS-74U Zenit PT Lock","value":12.917,"costPerSlot":14932,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59ecc3dd86f7746dc827481c":{"id":"59ecc3dd86f7746dc827481c","name":"AK Zenit PT-3 \"Klassika\" stock","value":10.923,"costPerSlot":15032,"weight":0.218,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59ef13ca86f77445fd0e2483":{"id":"59ef13ca86f77445fd0e2483","name":"Jack-o'-lantern tactical pumpkin helmet","value":28.4,"costPerSlot":10000,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":5},"59f32bb586f774757e1e8442":{"id":"59f32bb586f774757e1e8442","name":"Dogtag BEAR","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59f32c3b86f77472a31742f0":{"id":"59f32c3b86f77472a31742f0","name":"Dogtag USEC","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59f8a37386f7747af3328f06":{"id":"59f8a37386f7747af3328f06","name":"Fortis Shift tactical foregrip","value":28.509999999999998,"costPerSlot":30555,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59f98b4986f7746f546d2cef":{"id":"59f98b4986f7746f546d2cef","name":"Serdyukov SR-1MP Gyurza 9x21 pistol","value":24.3705,"costPerSlot":25818,"weight":0.895,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"59f99a7d86f7745b134aa97b":{"id":"59f99a7d86f7745b134aa97b","name":"SR-1MP 9x21 18-round magazine","value":8.0975,"costPerSlot":10150,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59f9cabd86f7743a10721f46":{"id":"59f9cabd86f7743a10721f46","name":"Saiga-9 9x19 carbine","value":8.4605,"costPerSlot":18966,"weight":3.0109999999999997,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"59f9d81586f7744c7506ee62":{"id":"59f9d81586f7744c7506ee62","name":"Vortex Razor AMG UH-1 holographic sight","value":34.442,"costPerSlot":36609,"weight":0.334,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59faf7ca86f7740dbe19f6c2":{"id":"59faf7ca86f7740dbe19f6c2","name":"Roler Submariner gold wrist watch","value":68.959,"costPerSlot":71049,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59faf98186f774067b6be103":{"id":"59faf98186f774067b6be103","name":"Alkaline cleaner for heat exchangers","value":1.1625000000000005,"costPerSlot":5662.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59fafb5d86f774067a6f2084":{"id":"59fafb5d86f774067a6f2084","name":"Propane tank (5L)","value":2.5307499999999994,"costPerSlot":11180.75,"weight":5.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59fafc5086f7740dbe19f6c3":{"id":"59fafc5086f7740dbe19f6c3","name":"AK 7.62x39 US Palm \"AK30\" 30-round magazine (Black)","value":3.1640000000000006,"costPerSlot":7264,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59fafc9386f774067d462453":{"id":"59fafc9386f774067d462453","name":"AK 7.62x39 US Palm \"AK30\" 30-round magazine (FDE)","value":3.1740000000000004,"costPerSlot":7274,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59fafd4b86f7745ca07e1232":{"id":"59fafd4b86f7745ca07e1232","name":"Key tool","value":767.1529999999999,"costPerSlot":748453,"weight":0.2,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"59faff1d86f7746c51718c9c":{"id":"59faff1d86f7746c51718c9c","name":"Physical Bitcoin","value":1150.072,"costPerSlot":1152097,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59fb016586f7746d0d4b423a":{"id":"59fb016586f7746d0d4b423a","name":"Money case","value":173.6525,"costPerSlot":121452.5,"weight":5,"size":6,"gridSize":49,"maxDim":3,"armorClass":0,"parentWeighting":0},"59fb023c86f7746d0d4b423c":{"id":"59fb023c86f7746d0d4b423c","name":"Weapon case","value":187.6855,"costPerSlot":142185.5,"weight":9,"size":10,"gridSize":50,"maxDim":5,"armorClass":0,"parentWeighting":0},"59fb042886f7746c5005a7b2":{"id":"59fb042886f7746c5005a7b2","name":"Item case","value":175.3891875,"costPerSlot":115689.1875,"weight":7,"size":16,"gridSize":64,"maxDim":4,"armorClass":0,"parentWeighting":0},"59fb137a86f7740adb646af1":{"id":"59fb137a86f7740adb646af1","name":"Tromix Monster Claw 12ga muzzle brake","value":16.34,"costPerSlot":18510,"weight":0.34,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59fb257e86f7742981561852":{"id":"59fb257e86f7742981561852","name":"AKM Zenit DTK-4M 7.62x39 sound suppressor","value":20.029500000000002,"costPerSlot":24206.5,"weight":0.354,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59fb375986f7741b681b81a6":{"id":"59fb375986f7741b681b81a6","name":"AK Krebs Custom UFM KeyMod handguard","value":6.047499999999999,"costPerSlot":10177.5,"weight":0.26,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"59fc48e086f77463b1118392":{"id":"59fc48e086f77463b1118392","name":"Magpul RVG foregrip (Black)","value":15.260000000000002,"costPerSlot":17301,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"59ff346386f77477562ff5e2":{"id":"59ff346386f77477562ff5e2","name":"Kalashnikov AKMS 7.62x39 assault rifle","value":26.106499999999997,"costPerSlot":40829,"weight":3.4450000000000003,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"59ff3b6a86f77477562ff5ed":{"id":"59ff3b6a86f77477562ff5ed","name":"AKMS folding stock","value":-3.5215,"costPerSlot":778.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a0060fc86f7745793204432":{"id":"5a0060fc86f7745793204432","name":"AKMS 7.62x39 aluminium 30-round magazine","value":1.0274999999999999,"costPerSlot":5112.5,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a0071d486f77404e23a12b2":{"id":"5a0071d486f77404e23a12b2","name":"AKM wooden pistol grip","value":13.965,"costPerSlot":16000,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a01ad4786f77450561fda02":{"id":"5a01ad4786f77450561fda02","name":"AK Kiba Arms VDM CS gas tube","value":12.94,"costPerSlot":15000,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a01c29586f77474660c694c":{"id":"5a01c29586f77474660c694c","name":"AK 7.62x39 6L10 bakelite 30-round magazine","value":-3.198,"costPerSlot":987,"weight":0.37,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a0abb6e1526d8000a025282":{"id":"5a0abb6e1526d8000a025282","name":"AK 7.62x39 Taktika Tula muzzle adapter","value":2.122,"costPerSlot":4172,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0c27731526d80618476ac4":{"id":"5a0c27731526d80618476ac4","name":"Zarya stun grenade","value":16.9075,"costPerSlot":8995,"weight":0.175,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a0c59791526d8dba737bba7":{"id":"5a0c59791526d8dba737bba7","name":"AK GP-25 accessory kit recoil pad","value":15.8615,"costPerSlot":17939,"weight":0.155,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0d63621526d8dba31fe3bf":{"id":"5a0d63621526d8dba31fe3bf","name":"AKM PBS-1 7.62x39 sound suppressor","value":19.8705,"costPerSlot":24088,"weight":0.435,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a0d716f1526d8000d26b1e2":{"id":"5a0d716f1526d8000d26b1e2","name":"AKML system 7.62x39 flash hider","value":7.975,"costPerSlot":10000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0dc45586f7742f6b0b73e3":{"id":"5a0dc45586f7742f6b0b73e3","name":"Health Resort west wing office room 104 key","value":92.995,"costPerSlot":95000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0dc95c86f77452440fc675":{"id":"5a0dc95c86f77452440fc675","name":"Health Resort west wing office room 112 key","value":73.016,"costPerSlot":75021,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ea64786f7741707720468":{"id":"5a0ea64786f7741707720468","name":"Health Resort east wing office room 107 key","value":103.492,"costPerSlot":105497,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ea69f86f7741cd5406619":{"id":"5a0ea69f86f7741cd5406619","name":"Health Resort east wing office room 108 key","value":13.479,"costPerSlot":15484,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ea79b86f7741d4a35298e":{"id":"5a0ea79b86f7741d4a35298e","name":"Health Resort universal utility room key","value":31.205,"costPerSlot":33210,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eb38b86f774153b320eb0":{"id":"5a0eb38b86f774153b320eb0","name":"SMW car key","value":10.825,"costPerSlot":12830,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eb6ac86f7743124037a28":{"id":"5a0eb6ac86f7743124037a28","name":"Cottage back door key","value":366.572,"costPerSlot":368577,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eb980fcdbcb001a3b00a6":{"id":"5a0eb980fcdbcb001a3b00a6","name":"AKMB system rear sight","value":-1.5465,"costPerSlot":471,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ec13bfcdbcb00165aa685":{"id":"5a0ec13bfcdbcb00165aa685","name":"Kalashnikov AKMN 7.62x39 assault rifle","value":67.4165,"costPerSlot":86194,"weight":3.555,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5a0ec6d286f7742c0b518fb5":{"id":"5a0ec6d286f7742c0b518fb5","name":"Health Resort west wing room 205 key","value":320.125,"costPerSlot":322130,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ec70e86f7742c0b518fba":{"id":"5a0ec70e86f7742c0b518fba","name":"Health Resort west wing room 207 key","value":8.545,"costPerSlot":10550,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ed824fcdbcb0176308b0d":{"id":"5a0ed824fcdbcb0176308b0d","name":"AKMP system rear sight device","value":-1.535,"costPerSlot":470,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ee30786f774023b6ee08f":{"id":"5a0ee30786f774023b6ee08f","name":"Health Resort west wing room 216 key","value":105.79400000000001,"costPerSlot":107799,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ee34586f774023b6ee092":{"id":"5a0ee34586f774023b6ee092","name":"Health Resort west wing room 220 key","value":59.414,"costPerSlot":61419,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ee37f86f774023657a86f":{"id":"5a0ee37f86f774023657a86f","name":"Health Resort west wing room 221 key","value":87.995,"costPerSlot":90000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ee4b586f7743698200d22":{"id":"5a0ee4b586f7743698200d22","name":"Health Resort east wing room 206 key","value":62.260000000000005,"costPerSlot":64265,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ee62286f774369454a7ac":{"id":"5a0ee62286f774369454a7ac","name":"Health Resort east wing room 209 key","value":22.595000000000002,"costPerSlot":24600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ee72c86f77436955d3435":{"id":"5a0ee72c86f77436955d3435","name":"Health Resort east wing room 213 key","value":3.995,"costPerSlot":6000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0ee76686f7743698200d5c":{"id":"5a0ee76686f7743698200d5c","name":"Health Resort east wing room 216 key","value":11.328,"costPerSlot":13333,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eeb1a86f774688b70aa5c":{"id":"5a0eeb1a86f774688b70aa5c","name":"Health Resort west wing room 303 key","value":25.810000000000002,"costPerSlot":27815,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eeb8e86f77461257ed71a":{"id":"5a0eeb8e86f77461257ed71a","name":"Health Resort west wing room 309 key","value":8.189,"costPerSlot":10194,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eebed86f77461230ddb3d":{"id":"5a0eebed86f77461230ddb3d","name":"Health Resort west wing room 325 key","value":11.003,"costPerSlot":13008,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eec9686f77402ac5c39f2":{"id":"5a0eec9686f77402ac5c39f2","name":"Health Resort east wing room 310 key","value":66.995,"costPerSlot":69000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eecf686f7740350630097":{"id":"5a0eecf686f7740350630097","name":"Health Resort east wing room 313 key","value":63.331,"costPerSlot":65336,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eed4386f77405112912aa":{"id":"5a0eed4386f77405112912aa","name":"Health Resort east wing room 314 key","value":48.335,"costPerSlot":50340,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eedb386f77403506300be":{"id":"5a0eedb386f77403506300be","name":"Health Resort east wing room 322 key","value":5.595000000000001,"costPerSlot":7600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eee1486f77402aa773226":{"id":"5a0eee1486f77402aa773226","name":"Health Resort east wing room 328 key","value":245.074,"costPerSlot":247079,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0eff2986f7741fd654e684":{"id":"5a0eff2986f7741fd654e684","name":"Health Resort west wing room 321 safe key","value":40.44,"costPerSlot":42445,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0f006986f7741ffd2fe484":{"id":"5a0f006986f7741ffd2fe484","name":"Weather station safe key","value":17.097,"costPerSlot":19102,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0f045e86f7745b0f0d0e42":{"id":"5a0f045e86f7745b0f0d0e42","name":"Gas station safe key","value":22.470000000000002,"costPerSlot":24475,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0f068686f7745b0d4ea242":{"id":"5a0f068686f7745b0d4ea242","name":"Cottage safe key","value":20.145000000000003,"costPerSlot":22150,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0f075686f7745bcc42ee12":{"id":"5a0f075686f7745bcc42ee12","name":"Store safe key","value":5.035,"costPerSlot":7040,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0f08bc86f77478f33b84c2":{"id":"5a0f08bc86f77478f33b84c2","name":"Health Resort management office safe key","value":33.272,"costPerSlot":35277,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0f096dfcdbcb0176308b15":{"id":"5a0f096dfcdbcb0176308b15","name":"AKMP system front sight device","value":-1.535,"costPerSlot":470,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a0f0f5886f7741c4e32a472":{"id":"5a0f0f5886f7741c4e32a472","name":"Health Resort management warehouse safe key","value":36.997,"costPerSlot":39002,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a13ee1986f774794d4c14cd":{"id":"5a13ee1986f774794d4c14cd","name":"Health Resort west wing room 323 key","value":5.595000000000001,"costPerSlot":7600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a13eebd86f7746fd639aa93":{"id":"5a13eebd86f7746fd639aa93","name":"Health Resort west wing room 218 key","value":165.883,"costPerSlot":167888,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a13ef0686f7746e5a411744":{"id":"5a13ef0686f7746e5a411744","name":"Health Resort west wing room 219 key","value":71.82300000000001,"costPerSlot":73828,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a13ef7e86f7741290491063":{"id":"5a13ef7e86f7741290491063","name":"Health Resort west wing room 301 key","value":272.168,"costPerSlot":274173,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a13f24186f77410e57c5626":{"id":"5a13f24186f77410e57c5626","name":"Health Resort east wing room 222 key","value":444.653,"costPerSlot":446658,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a13f35286f77413ef1436b0":{"id":"5a13f35286f77413ef1436b0","name":"Health Resort east wing room 226 key","value":536.301,"costPerSlot":538306,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a13f46386f7741dd7384b04":{"id":"5a13f46386f7741dd7384b04","name":"Health Resort west wing room 306 key","value":42.001,"costPerSlot":44006,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a144bdb86f7741d374bbde0":{"id":"5a144bdb86f7741d374bbde0","name":"Health Resort east wing room 205 key","value":79.72500000000001,"costPerSlot":81730,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a144dfd86f77445cb5a0982":{"id":"5a144dfd86f77445cb5a0982","name":"Health Resort west wing room 203 key","value":146.354,"costPerSlot":148359,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a1452ee86f7746f33111763":{"id":"5a1452ee86f7746f33111763","name":"Health Resort west wing room 222 key","value":87.995,"costPerSlot":90000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a145d4786f7744cbb6f4a12":{"id":"5a145d4786f7744cbb6f4a12","name":"Health Resort east wing room 306 key","value":61.224,"costPerSlot":63229,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a145d7b86f7744cbb6f4a13":{"id":"5a145d7b86f7744cbb6f4a13","name":"Health Resort east wing room 308 key","value":72.686,"costPerSlot":74691,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a145ebb86f77458f1796f05":{"id":"5a145ebb86f77458f1796f05","name":"Health Resort east wing room 316 key","value":27.62,"costPerSlot":29625,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a154d5cfcdbcb001a3b00da":{"id":"5a154d5cfcdbcb001a3b00da","name":"Ops-Core FAST MT Super High Cut helmet (Black)","value":13.609000000000002,"costPerSlot":15059,"weight":0.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5a16b672fcdbcb001912fa83":{"id":"5a16b672fcdbcb001912fa83","name":"Ops-Core FAST Visor","value":26.0105,"costPerSlot":10170.5,"weight":0.32,"size":2,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":0},"5a16b7e1fcdbcb00165aa6c9":{"id":"5a16b7e1fcdbcb00165aa6c9","name":"Ops-Core FAST multi-hit ballistic face shield","value":33.39025,"costPerSlot":9990.25,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5a16b8a9fcdbcb00165aa6ca":{"id":"5a16b8a9fcdbcb00165aa6ca","name":"Norotos Titanium Advanced Tactical Mount","value":36.043000000000006,"costPerSlot":38078,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a16b93dfcdbcbcae6687261":{"id":"5a16b93dfcdbcbcae6687261","name":"AN/PVS-14 Norotos Dual Dovetail Mount","value":25.883,"costPerSlot":27918,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a16b9fffcdbcb0176308b34":{"id":"5a16b9fffcdbcb0176308b34","name":"Ops-Core FAST RAC Headset","value":35.160000000000004,"costPerSlot":34460,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5a16ba61fcdbcb098008728a":{"id":"5a16ba61fcdbcb098008728a","name":"Ops-Core FAST Gunsight Mandible","value":20.06875,"costPerSlot":6668.75,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":0},"5a16badafcdbcb001865f72d":{"id":"5a16badafcdbcb001865f72d","name":"Ops-Core FAST Side Armor","value":32.017250000000004,"costPerSlot":8617.25,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5a16bb52fcdbcb001a3b00dc":{"id":"5a16bb52fcdbcb001a3b00dc","name":"Wilcox Skull Lock head mount","value":18.474,"costPerSlot":19724,"weight":0.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5a17f98cfcdbcb0980087290":{"id":"5a17f98cfcdbcb0980087290","name":"Stechkin APS 9x18PM machine pistol","value":21.0035,"costPerSlot":22514,"weight":1.021,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5a17fb03fcdbcbcae668728f":{"id":"5a17fb03fcdbcbcae668728f","name":"APS 9x18PM 20-round magazine","value":-1.173,"costPerSlot":849,"weight":0.044,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a17fb9dfcdbcbcae6687291":{"id":"5a17fb9dfcdbcbcae6687291","name":"APB detachable wire stock","value":4.719,"costPerSlot":6794,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a17fc70fcdbcb0176308b3d":{"id":"5a17fc70fcdbcb0176308b3d","name":"APS bakelite side-pieces","value":-1.0470000000000002,"costPerSlot":1004,"weight":0.102,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a1eaa87fcdbcb001865f75e":{"id":"5a1eaa87fcdbcb001865f75e","name":"Trijicon REAP-IR thermal scope","value":173.607,"costPerSlot":177897,"weight":0.58,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a1eacb3fcdbcb09800872be":{"id":"5a1eacb3fcdbcb09800872be","name":"Trijicon REAP-IR scope eyecup","value":-1.6465,"costPerSlot":356,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a1ead28fcdbcb001912fa9f":{"id":"5a1ead28fcdbcb001912fa9f","name":"UNV DLOC-IRD sight mount","value":82.7125,"costPerSlot":84769,"weight":0.113,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a269f97c4a282000b151807":{"id":"5a269f97c4a282000b151807","name":"9x21mm PS gzh","value":8.3295,"costPerSlot":335,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a26abfac4a28232980eabff":{"id":"5a26abfac4a28232980eabff","name":"9x21mm P gzh","value":8.17505,"costPerSlot":181,"weight":0.0119,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a26ac06c4a282000c5a90a8":{"id":"5a26ac06c4a282000c5a90a8","name":"9x21mm PE gzh","value":8.091,"costPerSlot":96,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a26ac0ec4a28200741e1e18":{"id":"5a26ac0ec4a28200741e1e18","name":"9x21mm BT gzh","value":8.776250000000001,"costPerSlot":782,"weight":0.0115,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a27b281c4a28200741e1e52":{"id":"5a27b281c4a28200741e1e52","name":"SR-1MP single rail mount","value":0.6670000000000003,"costPerSlot":2687,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a27b3d0c4a282000d721ec1":{"id":"5a27b3d0c4a282000d721ec1","name":"SR-1MP sound suppressor mount","value":0.746,"costPerSlot":2766,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a27b6bec4a282000e496f78":{"id":"5a27b6bec4a282000e496f78","name":"SR-1MP 9x21 sound suppressor","value":11.099000000000002,"costPerSlot":15344,"weight":0.49,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a27bad7c4a282000b15184b":{"id":"5a27bad7c4a282000b15184b","name":"SR-1MP quad rail mount","value":10.346,"costPerSlot":12366,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a2a57cfc4a2826c6e06d44a":{"id":"5a2a57cfc4a2826c6e06d44a","name":"RDG-2B smoke grenade","value":10.318999999999999,"costPerSlot":4619,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":10},"5a329052c4a28200741e22d3":{"id":"5a329052c4a28200741e22d3","name":"R11 RSASS handguard","value":16.032999999999998,"costPerSlot":20188,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a32a064c4a28200741e22de":{"id":"5a32a064c4a28200741e22de","name":"SilencerCo Osprey 9 9x19 sound suppressor","value":15.735999999999997,"costPerSlot":19871,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a32aa0cc4a28232996e405f":{"id":"5a32aa0cc4a28232996e405f","name":"P226 Trijicon RMR mount","value":2.4705000000000004,"costPerSlot":4479,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a32aa8bc4a2826c6e06d737":{"id":"5a32aa8bc4a2826c6e06d737","name":"Trijicon RMR reflex sight","value":25.753500000000003,"costPerSlot":27766,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a339805c4a2826c6e06d73d":{"id":"5a339805c4a2826c6e06d73d","name":"AR-15 Magpul MIAD pistol grip (FDE)","value":3.8629999999999995,"costPerSlot":5888,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a33a8ebc4a282000c5a950d":{"id":"5a33a8ebc4a282000c5a950d","name":"Alpha Dog Alpha 9 9x19 sound suppressor","value":14.1845,"costPerSlot":18329.5,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a33b2c9c4a282000c5a9511":{"id":"5a33b2c9c4a282000c5a9511","name":"Trijicon RMR low profile mount","value":10.8155,"costPerSlot":12824,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a33b652c4a28232996e407c":{"id":"5a33b652c4a28232996e407c","name":"Trijicon RMR high profile mount","value":-0.4155,"costPerSlot":1593,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a33bab6c4a28200741e22f8":{"id":"5a33bab6c4a28200741e22f8","name":"Trijicon RMR mount for ACOG scopes","value":17.173,"costPerSlot":19183,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a33ca0fc4a282000d72292f":{"id":"5a33ca0fc4a282000d72292f","name":"AR-15 Colt A2 buffer tube","value":-0.03400000000000025,"costPerSlot":4047,"weight":0.162,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a33cae9c4a28232980eb086":{"id":"5a33cae9c4a28232980eb086","name":"AR-15 Magpul PRS GEN2 stock (FDE)","value":4.152000000000001,"costPerSlot":8547,"weight":0.79,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a33e75ac4a2826c6e06d759":{"id":"5a33e75ac4a2826c6e06d759","name":"AR-15 Hera Arms CQR pistol grip/buttstock","value":14.881999999999998,"costPerSlot":19131.5,"weight":0.499,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a34f7f1c4a2826c6e06d75d":{"id":"5a34f7f1c4a2826c6e06d75d","name":"AR-10 7.62x51 18 inch barrel","value":10.545000000000002,"costPerSlot":19105,"weight":1.12,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5a34fae7c4a2826c6e06d760":{"id":"5a34fae7c4a2826c6e06d760","name":"AR-10 7.62x51 22 inch barrel","value":-1.0332000000000008,"costPerSlot":9566.8,"weight":1.2,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"5a34fbadc4a28200741e230a":{"id":"5a34fbadc4a28200741e230a","name":"AR-10 JP Enterprises Gas System-6","value":14.770999999999997,"costPerSlot":16880,"weight":0.218,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a34fd2bc4a282329a73b4c5":{"id":"5a34fd2bc4a282329a73b4c5","name":"AR-10 AAC Blackout 51T 7.62x51 flash hider","value":14.129999999999999,"costPerSlot":16191,"weight":0.122,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a34fe59c4a282000b1521a2":{"id":"5a34fe59c4a282000b1521a2","name":"AAC 762-SDN-6 multi-caliber sound suppressor","value":29.379000000000005,"costPerSlot":33662.5,"weight":0.567,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a3501acc4a282000d72293a":{"id":"5a3501acc4a282000d72293a","name":"AR-10 7.62x51 Magpul PMAG 20 SR-LR GEN M3 20-round magazine","value":9.5465,"costPerSlot":13721.5,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a351711c4a282000b1521a4":{"id":"5a351711c4a282000b1521a4","name":"HK MP5 9x19 X Products X-5 50-round drum magazine","value":22.341,"costPerSlot":26661,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a367e5dc4a282000e49738f":{"id":"5a367e5dc4a282000e49738f","name":"Remington R11 RSASS 7.62x51 marksman rifle","value":71.384,"costPerSlot":102845,"weight":4.922,"size":24,"gridSize":0,"maxDim":8,"armorClass":0,"parentWeighting":3},"5a37ca54c4a282000d72296a":{"id":"5a37ca54c4a282000d72296a","name":"JP Enterprises Flat-Top 30mm ring scope mount","value":6.5815,"costPerSlot":10678.5,"weight":0.194,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a37cb10c4a282329a73b4e7":{"id":"5a37cb10c4a282329a73b4e7","name":"Leupold Mark 4 LR 6.5-20x50 30mm riflescope","value":24.98,"costPerSlot":29290,"weight":0.62,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a38e6bac4a2826c6e06d79b":{"id":"5a38e6bac4a2826c6e06d79b","name":"TOZ-106 20ga bolt-action shotgun","value":-5.475999999999999,"costPerSlot":881.5,"weight":2.715,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5a38ebd9c4a282000d722a5b":{"id":"5a38ebd9c4a282000d722a5b","name":"20/70 7.5mm buckshot","value":8.004,"costPerSlot":24,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a38ed75c4a28232996e40c6":{"id":"5a38ed75c4a28232996e40c6","name":"TOZ-106 20ga MTs 20-01 Sb.3 4-shot magazine","value":-0.98,"costPerSlot":1075,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a38ee51c4a282000c5a955c":{"id":"5a38ee51c4a282000c5a955c","name":"TOZ-106 20ga MTs 20-01 Sb.3 2-shot magazine","value":-1.2625,"costPerSlot":785,"weight":0.095,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a38eecdc4a282329a73b512":{"id":"5a38eecdc4a282329a73b512","name":"TOZ-106 002 pistol grip","value":-1.306,"costPerSlot":729,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a38ef1fc4a282000b1521f6":{"id":"5a38ef1fc4a282000b1521f6","name":"TOZ-106 stock","value":-8.1995,"costPerSlot":425.5,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5a398ab9c4a282000c5a9842":{"id":"5a398ab9c4a282000c5a9842","name":"Ops-Core Single Clamp Rail Adapter mount","value":13.42,"costPerSlot":15430,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a398b75c4a282000a51a266":{"id":"5a398b75c4a282000a51a266","name":"Ops-Core Picatinny Rail Adapter mount","value":5.99,"costPerSlot":8000,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a3c16fe86f77452b62de32a":{"id":"5a3c16fe86f77452b62de32a","name":"9x19mm Luger CCI","value":8.2595,"costPerSlot":267,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a43943586f77416ad2f06e2":{"id":"5a43943586f77416ad2f06e2","name":"Ded Moroz hat","value":37.067,"costPerSlot":34117,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5a43957686f7742a2c2f11b0":{"id":"5a43957686f7742a2c2f11b0","name":"Santa hat","value":68.943,"costPerSlot":65993,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5a5f1ce64f39f90b401987bc":{"id":"5a5f1ce64f39f90b401987bc","name":"Zenit Klesch-2IKS IR illuminator with laser","value":20.771,"costPerSlot":22856,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6086ea4f39f99cd479502f":{"id":"5a6086ea4f39f99cd479502f","name":"7.62x51mm M61","value":9.228,"costPerSlot":1240,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a608bf24f39f98ffc77720e":{"id":"5a608bf24f39f98ffc77720e","name":"7.62x51mm M62 Tracer","value":8.5885,"costPerSlot":600,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5a69a2ed8dc32e000d46d1f1":{"id":"5a69a2ed8dc32e000d46d1f1","name":"AS VAL Rotor 43 pistol grip with buffer tube","value":35.536,"costPerSlot":39568.5,"weight":0.065,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a6b585a8dc32e5a9c28b4f1":{"id":"5a6b585a8dc32e5a9c28b4f1","name":"Glock 9x19 Lone Wolf AlphaWolf thread protector","value":-1.302,"costPerSlot":703,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6b592c8dc32e00094b97bf":{"id":"5a6b592c8dc32e00094b97bf","name":"Glock 9x19 Double Diamond thread protector","value":-1.3010000000000002,"costPerSlot":704,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6b59a08dc32e000b452fb7":{"id":"5a6b59a08dc32e000b452fb7","name":"Glock SAI 9x19 thread protector","value":-0.9979999999999998,"costPerSlot":1007,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6b5b8a8dc32e001207faf3":{"id":"5a6b5b8a8dc32e001207faf3","name":"Glock 9x19 Lone Wolf AlphaWolf 114mm threaded barrel","value":10.761000000000001,"costPerSlot":12851,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6b5e468dc32e001207faf5":{"id":"5a6b5e468dc32e001207faf5","name":"Glock 9x19 Double Diamond 114mm threaded barrel","value":27.677,"costPerSlot":29767,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6b5ed88dc32e000c52ec86":{"id":"5a6b5ed88dc32e000c52ec86","name":"Glock 9x19 SAI 114mm threaded barrel","value":17.856,"costPerSlot":19946,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6b5f868dc32e000a311389":{"id":"5a6b5f868dc32e000a311389","name":"Glock 17 9x19 114mm barrel","value":-0.5270000000000001,"costPerSlot":1563,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6b60158dc32e000a31138b":{"id":"5a6b60158dc32e000a31138b","name":"Glock 17 9x19 114mm compensated barrel","value":-0.20199999999999996,"costPerSlot":1888,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6f58f68dc32e000a311390":{"id":"5a6f58f68dc32e000a311390","name":"Glock front sight","value":44.3025,"costPerSlot":46306,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6f5d528dc32e00094b97d9":{"id":"5a6f5d528dc32e00094b97d9","name":"Glock rear sight","value":42.878,"costPerSlot":44882,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a6f5e048dc32e00094b97da":{"id":"5a6f5e048dc32e00094b97da","name":"Glock 17 pistol slide","value":-2.623,"costPerSlot":1554.5,"weight":0.355,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a6f5f078dc32e00094b97dd":{"id":"5a6f5f078dc32e00094b97dd","name":"Glock Viper Cut pistol slide","value":3.8825000000000003,"costPerSlot":8007.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a702d198dc32e000b452fc3":{"id":"5a702d198dc32e000b452fc3","name":"Glock Lone Wolf AlphaWolf pistol slide","value":-0.08700000000000019,"costPerSlot":4008,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7033908dc32e000a311392":{"id":"5a7033908dc32e000a311392","name":"Glock Lone Wolf AlphaWolf Custom pistol slide","value":3.2264999999999997,"costPerSlot":7376.5,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a70366c8dc32e001207fb06":{"id":"5a70366c8dc32e001207fb06","name":"Glock 9x19 Double Diamond flash hider","value":5.9685,"costPerSlot":8000,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7037338dc32e000d46d257":{"id":"5a7037338dc32e000d46d257","name":"Glock 9x19 CARVER Custom Decelerator 3 Port compensator","value":3.0225,"costPerSlot":5054,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a705e128dc32e000d46d258":{"id":"5a705e128dc32e000d46d258","name":"Glock 9x19 Lone Wolf AlphaWolf Bullnose compensator","value":0.7820000000000005,"costPerSlot":2800,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a718b548dc32e000d46d262":{"id":"5a718b548dc32e000d46d262","name":"Glock 9x19 17-round magazine","value":4.235,"costPerSlot":6283,"weight":0.096,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a718da68dc32e000d46d264":{"id":"5a718da68dc32e000d46d264","name":"Glock 9x19 Magpul PMAG GL9 21-round magazine","value":9.860999999999999,"costPerSlot":11911,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a718f958dc32e00094b97e7":{"id":"5a718f958dc32e00094b97e7","name":"Glock 9x19 SGM Tactical 50-round drum magazine","value":7.997,"costPerSlot":12297,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a71e0048dc32e000c52ecc8":{"id":"5a71e0048dc32e000c52ecc8","name":"Glock ZEV Tech front sight","value":-0.7035,"costPerSlot":1300,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a71e0fb8dc32e00094b97f2":{"id":"5a71e0fb8dc32e00094b97f2","name":"Glock ZEV Tech rear sight","value":-0.0040000000000000036,"costPerSlot":2000,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a71e1868dc32e00094b97f3":{"id":"5a71e1868dc32e00094b97f3","name":"Glock ZEV Tech sight mount cap","value":-1.9024999999999999,"costPerSlot":100,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a71e22f8dc32e00094b97f4":{"id":"5a71e22f8dc32e00094b97f4","name":"Glock ZEV Tech HEX Gen3 RMR pistol slide","value":5.964499999999999,"costPerSlot":10059.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a71e4f48dc32e001207fb26":{"id":"5a71e4f48dc32e001207fb26","name":"Glock ZEV Tech HEX Spartan RMR pistol slide","value":7.394499999999999,"costPerSlot":11489.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7828548dc32e5a9c28b516":{"id":"5a7828548dc32e5a9c28b516","name":"Remington Model 870 12ga pump-action shotgun","value":0.835799999999999,"costPerSlot":9405.8,"weight":3.1400000000000006,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5a787ebcc5856700142fdd98":{"id":"5a787ebcc5856700142fdd98","name":"M870 12ga 508mm barrel with a fixed sight","value":-1.200333333333333,"costPerSlot":5299.666666666667,"weight":1,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5a787f25c5856700186c4ab9":{"id":"5a787f25c5856700186c4ab9","name":"M870 12ga 355mm barrel","value":7.5975,"costPerSlot":11997.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a787f7ac5856700177af660":{"id":"5a787f7ac5856700177af660","name":"M870 12ga 508mm barrel","value":15.48866666666667,"costPerSlot":21888.666666666668,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5a787fadc5856700155a6ca1":{"id":"5a787fadc5856700155a6ca1","name":"M870 12ga 660mm vent rib barrel","value":-4.99625,"costPerSlot":3553.75,"weight":1.1,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5a787fdfc5856700142fdd9a":{"id":"5a787fdfc5856700142fdd9a","name":"M870 12ga sawed-off 325mm barrel","value":-1.6035,"costPerSlot":2796.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a788031c585673f2b5c1c79":{"id":"5a788031c585673f2b5c1c79","name":"M870 FAB Defense PR-870 forestock","value":-3.3745,"costPerSlot":1025.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a788068c5856700137e4c8f":{"id":"5a788068c5856700137e4c8f","name":"M870 Magpul MOE handguard","value":7.629999999999999,"costPerSlot":11930,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a788089c5856700142fdd9c":{"id":"5a788089c5856700142fdd9c","name":"M870 SpeedFeed Short handguard","value":-2.7245,"costPerSlot":1525.5,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7880d0c5856700142fdd9d":{"id":"5a7880d0c5856700142fdd9d","name":"M870 SPS polymer stock","value":0.2320000000000002,"costPerSlot":4552,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a78813bc5856700186c4abe":{"id":"5a78813bc5856700186c4abe","name":"M870 Magpul SGA polymer stock","value":22.557000000000002,"costPerSlot":26807,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a788169c5856700142fdd9e":{"id":"5a788169c5856700142fdd9e","name":"M870 Shockwave Raptor grip","value":10.714,"costPerSlot":12914,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7882dcc5856700177af662":{"id":"5a7882dcc5856700177af662","name":"M870 12ga 4-shell magazine cap","value":-1.02,"costPerSlot":1030,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a78830bc5856700137e4c90":{"id":"5a78830bc5856700137e4c90","name":"M870 12ga 7-shell magazine","value":-3.3105,"costPerSlot":839.5,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a78832ec5856700155a6ca3":{"id":"5a78832ec5856700155a6ca3","name":"M870 12ga 10-shell magazine","value":-0.6036666666666672,"costPerSlot":5596.333333333333,"weight":0.4,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5a789261c5856700186c65d3":{"id":"5a789261c5856700186c65d3","name":"M870 Mesa Tactical magazine clamp","value":23.397499999999997,"costPerSlot":25441,"weight":0.087,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7893c1c585673f2b5c374d":{"id":"5a7893c1c585673f2b5c374d","name":"M870 Leapers UTG PRO MTU-028SG rail","value":1.782,"costPerSlot":5832,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a78948ec5856700177b1124":{"id":"5a78948ec5856700177b1124","name":"M870 XS SHOTRAIL rail with Ghost Ring rear sight","value":-1.112,"costPerSlot":2963,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7ad0c451dfba0013379712":{"id":"5a7ad0c451dfba0013379712","name":"Glock 9x19 CARVER Custom 4 Port compensator","value":4.134,"costPerSlot":6152,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7ad1fb51dfba0013379715":{"id":"5a7ad1fb51dfba0013379715","name":"Glock 9x19 Lone Wolf LWD-COMP9 compensator","value":8.846,"costPerSlot":10864,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7ad2e851dfba0016153692":{"id":"5a7ad2e851dfba0016153692","name":"Glock 9x19 \"Big Stick\" 33-round magazine","value":2.7104999999999997,"costPerSlot":6785.5,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7ad4af51dfba0013379717":{"id":"5a7ad4af51dfba0013379717","name":"Glock Aimtech mount base","value":9.737,"costPerSlot":11797,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7ad55551dfba0015068f42":{"id":"5a7ad55551dfba0015068f42","name":"Glock Aimtech Tiger Shark sight mount","value":7.571999999999999,"costPerSlot":9632,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7ad74e51dfba0015068f45":{"id":"5a7ad74e51dfba0015068f45","name":"Glock 9x19 Fischer Development FD917 sound suppressor","value":17.852999999999998,"costPerSlot":22028,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7ae0c351dfba0017554310":{"id":"5a7ae0c351dfba0017554310","name":"Glock 17 9x19 pistol","value":13.0175,"costPerSlot":14456,"weight":0.877,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5a7afa25e899ef00135e31b0":{"id":"5a7afa25e899ef00135e31b0","name":"Glock Polymer80 PS9 pistol slide","value":3.375,"costPerSlot":7552.5,"weight":0.355,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7b32a2e899ef00135e345a":{"id":"5a7b32a2e899ef00135e345a","name":"Glock 9x19 Strike Industries G4 SlideComp compensator","value":4.4235,"costPerSlot":6476,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7b483fe899ef0016170d15":{"id":"5a7b483fe899ef0016170d15","name":"SureFire XC1 tactical flashlight","value":14.819000000000003,"costPerSlot":16844,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7b4900e899ef197b331a2a":{"id":"5a7b4900e899ef197b331a2a","name":"UM Tactical UM3 pistol sight mount","value":16.738000000000003,"costPerSlot":18798,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7b4960e899ef197b331a2d":{"id":"5a7b4960e899ef197b331a2d","name":"Glock Pachmayr Tactical Grip Glove","value":-1.031,"costPerSlot":1009,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7c147ce899ef00150bd8b8":{"id":"5a7c147ce899ef00150bd8b8","name":"AR-15 Vendetta Precision VP-09 Interceptor 5.56x45 muzzle brake","value":9.215,"costPerSlot":11315,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7c4850e899ef00150be885":{"id":"5a7c4850e899ef00150be885","name":"6B47 Ratnik-BSh helmet (Olive Drab)","value":38.244,"costPerSlot":39894,"weight":1.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5a7c74b3e899ef0014332c29":{"id":"5a7c74b3e899ef0014332c29","name":"NSPU-M 3.5x dovetail night vision scope","value":2.476,"costPerSlot":7426,"weight":1.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a7d90eb159bd400165484f1":{"id":"5a7d90eb159bd400165484f1","name":"Glock Dead Ringer Snake Eye front sight","value":-0.10050000000000003,"costPerSlot":1903,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7d9104159bd400134c8c21":{"id":"5a7d9104159bd400134c8c21","name":"Glock TruGlo TFX front sight","value":-0.9935,"costPerSlot":1010,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7d9122159bd4001438dbf4":{"id":"5a7d9122159bd4001438dbf4","name":"Glock Dead Ringer Snake Eye rear sight","value":27.945999999999998,"costPerSlot":29950,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7d912f159bd400165484f3":{"id":"5a7d912f159bd400165484f3","name":"Glock TruGlo TFX rear sight","value":-0.18599999999999994,"costPerSlot":1818,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a7dbfc1159bd40016548fde":{"id":"5a7dbfc1159bd40016548fde","name":"Hera Arms CQR tactical foregrip","value":32.1325,"costPerSlot":34216,"weight":0.167,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a800961159bd4315e3a1657":{"id":"5a800961159bd4315e3a1657","name":"Glock GTL 21 tactical flashlight with laser","value":13.055000000000001,"costPerSlot":15098,"weight":0.086,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a8036fb86f77407252ddc02":{"id":"5a8036fb86f77407252ddc02","name":"Shoreline plan map","value":26.8245,"costPerSlot":28847,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a80a29286f7742b25692012":{"id":"5a80a29286f7742b25692012","name":"Shoreline Health Resort plan map","value":7.353499999999999,"costPerSlot":9376,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a9548c9159bd400133e97b3":{"id":"5a9548c9159bd400133e97b3","name":"HK MP5 B&T TL-99 aluminum handguard","value":9.038,"costPerSlot":13177,"weight":0.278,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a957c3fa2750c00137fa5f7":{"id":"5a957c3fa2750c00137fa5f7","name":"AKS-74U CAA XRSU47SU tactical handguard","value":7.174000000000001,"costPerSlot":11434,"weight":0.52,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a966ec8a2750c00171b3f36":{"id":"5a966ec8a2750c00171b3f36","name":"HK MP5 B&T tri-rail receiver mount","value":5.322000000000001,"costPerSlot":9433.5,"weight":0.223,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a966f51a2750c00156aacf6":{"id":"5a966f51a2750c00156aacf6","name":"SOK-12 12ga SAI-02 10-round magazine","value":-2.4053333333333335,"costPerSlot":3699.6666666666665,"weight":0.21,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5a9685b1a2750c0032157104":{"id":"5a9685b1a2750c0032157104","name":"Glock Moto Cut pistol slide","value":5.903500000000001,"costPerSlot":10028.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9d56c8a2750c0032157146":{"id":"5a9d56c8a2750c0032157146","name":"AK Strike Industries TRAX 1 handguard","value":19.528000000000002,"costPerSlot":21658,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a9d6d00a2750c5c985b5305":{"id":"5a9d6d00a2750c5c985b5305","name":"Strike Industries KeyMod 4 inch rail","value":2.4400000000000004,"costPerSlot":4475,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a9d6d13a2750c00164f6b03":{"id":"5a9d6d13a2750c00164f6b03","name":"Strike Industries KeyMod 6 inch rail","value":-0.6855,"costPerSlot":1352,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a9d6d21a2750c00137fa649":{"id":"5a9d6d21a2750c00137fa649","name":"Strike Industries TRAX bridge rail","value":1.2515,"costPerSlot":5289,"weight":0.075,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9d6d34a2750c00141e07da":{"id":"5a9d6d34a2750c00141e07da","name":"AK Strike Industries TRAX 2 handguard extension","value":8.043999999999999,"costPerSlot":10174,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a9e81fba2750c00164f6b11":{"id":"5a9e81fba2750c00164f6b11","name":"VSS/VAL 9x39 SR3M.130 30-round magazine","value":19.593500000000002,"costPerSlot":23792,"weight":0.397,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9ea27ca2750c00137fa672":{"id":"5a9ea27ca2750c00137fa672","name":"AK Spikes Tactical Dynacomp 7.62x39 muzzle brake-compensator","value":11.89,"costPerSlot":13928,"weight":0.076,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5a9eb32da2750c00171b3f9c":{"id":"5a9eb32da2750c00171b3f9c","name":"AR-15 FAB Defense GL-SHOCK buttstock","value":8.553,"costPerSlot":12707,"weight":0.308,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9fb739a2750c003215717f":{"id":"5a9fb739a2750c003215717f","name":"Rotor 43 9x19 sound suppressor","value":6.6515,"costPerSlot":10896.5,"weight":0.49,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9fbacda2750c00141e080f":{"id":"5a9fbacda2750c00141e080f","name":"Rotor 43 7.62x39 sound suppressor","value":17.765,"costPerSlot":22050,"weight":0.57,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9fbb74a2750c0032157181":{"id":"5a9fbb74a2750c0032157181","name":"Rotor 43 .366 TKM sound suppressor","value":8.276,"costPerSlot":12561,"weight":0.57,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9fbb84a2750c00137fa685":{"id":"5a9fbb84a2750c00137fa685","name":"Rotor 43 5.56x45 sound suppressor","value":21.7465,"costPerSlot":26031.5,"weight":0.57,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5a9fc7e6a2750c0032157184":{"id":"5a9fc7e6a2750c0032157184","name":"VSS/VAL Zenit B-3 mount combo","value":10.221000000000002,"costPerSlot":12261,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5aa2a7e8e5b5b00016327c16":{"id":"5aa2a7e8e5b5b00016327c16","name":"USEC baseball cap (Coyote)","value":4.5920000000000005,"costPerSlot":1642,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5aa2b87de5b5b00016327c25":{"id":"5aa2b87de5b5b00016327c25","name":"BEAR baseball cap (Olive Drab)","value":4.676,"costPerSlot":1726,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5aa2b89be5b5b0001569311f":{"id":"5aa2b89be5b5b0001569311f","name":"EMERCOM cap","value":11.408,"costPerSlot":8458,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5aa2b8d7e5b5b00014028f4a":{"id":"5aa2b8d7e5b5b00014028f4a","name":"Police cap","value":4.455,"costPerSlot":1505,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5aa2b923e5b5b000137b7589":{"id":"5aa2b923e5b5b000137b7589","name":"Round frame sunglasses","value":14.467,"costPerSlot":13487,"weight":0.04,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa2b986e5b5b00014028f4c":{"id":"5aa2b986e5b5b00014028f4c","name":"Dundukk sport sunglasses","value":9.693,"costPerSlot":8718,"weight":0.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa2b9aee5b5b00015693121":{"id":"5aa2b9aee5b5b00015693121","name":"RayBench Hipster Reserve sunglasses","value":11.436000000000002,"costPerSlot":10476,"weight":0.08,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa2b9ede5b5b000137b758b":{"id":"5aa2b9ede5b5b000137b758b","name":"Kinda cowboy hat","value":24.846,"costPerSlot":25946,"weight":0.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa2ba19e5b5b00014028f4e":{"id":"5aa2ba19e5b5b00014028f4e","name":"Tactical fleece beanie (Tan)","value":7.46,"costPerSlot":4510,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5aa2ba46e5b5b000137b758d":{"id":"5aa2ba46e5b5b000137b758d","name":"UX PRO beanie","value":15.154,"costPerSlot":12204,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5aa2ba71e5b5b000137b758f":{"id":"5aa2ba71e5b5b000137b758f","name":"MSA Sordin Supreme PRO-X/L headset","value":11.2065,"costPerSlot":12531.5,"weight":0.65,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa66a9be5b5b0214e506e89":{"id":"5aa66a9be5b5b0214e506e89","name":"Nightforce Magmount 34mm ring scope mount","value":12.552,"costPerSlot":16665,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5aa66be6e5b5b0214e506e97":{"id":"5aa66be6e5b5b0214e506e97","name":"Nightforce ATACR 7-35x56 34mm riflescope","value":39.342,"costPerSlot":43898.5,"weight":1.113,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5aa66c72e5b5b00016327c93":{"id":"5aa66c72e5b5b00016327c93","name":"Nightforce Magmount 34mm ring scope mount with Ruggedized Accessory Platform","value":3.7025000000000006,"costPerSlot":7827.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5aa7cfc0e5b5b00015693143":{"id":"5aa7cfc0e5b5b00015693143","name":"6B47 Ratnik-BSh helmet (EMR cover)","value":34.431000000000004,"costPerSlot":36081,"weight":1.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa7d03ae5b5b00016327db5":{"id":"5aa7d03ae5b5b00016327db5","name":"UNTAR helmet","value":25.291,"costPerSlot":27391,"weight":2.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa7d193e5b5b000171d063f":{"id":"5aa7d193e5b5b000171d063f","name":"SSSh-94 SFERA-S helmet","value":27.765,"costPerSlot":30515,"weight":3.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa7e276e5b5b000171d0647":{"id":"5aa7e276e5b5b000171d0647","name":"Altyn bulletproof helmet (Olive Drab)","value":6.15,"costPerSlot":8400,"weight":2.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa7e373e5b5b000137b76f0":{"id":"5aa7e373e5b5b000137b76f0","name":"Altyn helmet face shield","value":79.0535,"costPerSlot":33753.5,"weight":1.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"5aa7e3abe5b5b000171d064d":{"id":"5aa7e3abe5b5b000171d064d","name":"ZSh-1-2M face shield","value":39.4895,"costPerSlot":13989.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5aa7e454e5b5b0214e506fa2":{"id":"5aa7e454e5b5b0214e506fa2","name":"ZSh-1-2M helmet (Olive Drab)","value":45.838,"costPerSlot":48688,"weight":3.7,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aa7e4a4e5b5b000137b76f2":{"id":"5aa7e4a4e5b5b000137b76f2","name":"ZSh-1-2M helmet (Black cover)","value":36.109,"costPerSlot":38959,"weight":3.7,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5aaa4194e5b5b055d06310a5":{"id":"5aaa4194e5b5b055d06310a5","name":"AK-74 5.45x39 Magpul PMAG 30 GEN M3 30-round magazine","value":0.9605000000000006,"costPerSlot":5060.5,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5aaa5dfee5b5b000140293d3":{"id":"5aaa5dfee5b5b000140293d3","name":"AR-15 5.56x45 Magpul PMAG 30 GEN M3 STANAG 30-round magazine","value":1.8020000000000005,"costPerSlot":5871,"weight":0.138,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5aaa5e60e5b5b000140293d6":{"id":"5aaa5e60e5b5b000140293d6","name":"AR-15 5.56x45 Magpul PMAG 10 GEN M3 STANAG 10-round magazine","value":0.476,"costPerSlot":2536,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5aaf8a0be5b5b00015693243":{"id":"5aaf8a0be5b5b00015693243","name":"M1A 7.62x51 20-round magazine","value":1.9219999999999997,"costPerSlot":6035,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5aaf8e43e5b5b00015693246":{"id":"5aaf8e43e5b5b00015693246","name":"M1A SOCOM 16 stock","value":-2.1499999999999995,"costPerSlot":4352,"weight":1.004,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5aaf9d53e5b5b00015042a52":{"id":"5aaf9d53e5b5b00015042a52","name":"M1A 7.62x51 16 inch barrel","value":-4.304499999999999,"costPerSlot":4215.5,"weight":1.04,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5aafa1c2e5b5b00015042a56":{"id":"5aafa1c2e5b5b00015042a56","name":"M1A SOCOM 16 7.62x51 muzzle brake-compensator","value":10.161000000000001,"costPerSlot":12226,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5aafa49ae5b5b00015042a58":{"id":"5aafa49ae5b5b00015042a58","name":"M1A SA XS Post .125 Blade front sight","value":-0.3949999999999998,"costPerSlot":1624,"weight":0.038,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5aafa857e5b5b00018480968":{"id":"5aafa857e5b5b00018480968","name":"Springfield Armory M1A 7.62x51 rifle","value":89.9485,"costPerSlot":106910,"weight":3.9229999999999996,"size":12,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5aafbcd986f7745e590fff23":{"id":"5aafbcd986f7745e590fff23","name":"Medicine case","value":84.37844444444445,"costPerSlot":40678.444444444445,"weight":16,"size":9,"gridSize":49,"maxDim":3,"armorClass":0,"parentWeighting":0},"5aafbde786f774389d0cbc0f":{"id":"5aafbde786f774389d0cbc0f","name":"Ammunition case","value":102.51075,"costPerSlot":46310.75,"weight":3,"size":4,"gridSize":49,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ab24ef9e5b5b00fe93c9209":{"id":"5ab24ef9e5b5b00fe93c9209","name":"M1A SOCOM 16 upper part","value":1.3594999999999997,"costPerSlot":5407.5,"weight":0.096,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ab372a310e891001717f0d8":{"id":"5ab372a310e891001717f0d8","name":"M14 TROY S.A.S.S. Chassis stock","value":5.817333333333334,"costPerSlot":12867.333333333334,"weight":2.1,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5ab3afb2d8ce87001660304d":{"id":"5ab3afb2d8ce87001660304d","name":"M1A Smith Enterprise SOCOM 16 7.62x51 threaded muzzle brake & gas block","value":19.279,"costPerSlot":21334,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ab626e4d8ce87272e4c6e43":{"id":"5ab626e4d8ce87272e4c6e43","name":"AKS-74 skeletonized stock","value":-3.3525,"costPerSlot":779.5,"weight":0.264,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ab8dab586f77441cd04f2a2":{"id":"5ab8dab586f77441cd04f2a2","name":"WARTECH MK3 TV-104 chest rig (MultiCam)","value":47.132999999999996,"costPerSlot":36958,"weight":1.65,"size":12,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":1},"5ab8dced86f774646209ec87":{"id":"5ab8dced86f774646209ec87","name":"ANA Tactical M2 plate carrier (EMR)","value":54.13000000000001,"costPerSlot":50855,"weight":2.25,"size":16,"gridSize":18,"maxDim":4,"armorClass":0,"parentWeighting":1},"5ab8e4ed86f7742d8e50c7fa":{"id":"5ab8e4ed86f7742d8e50c7fa","name":"MF-UNTAR body armor","value":31.22,"costPerSlot":47470,"weight":8.5,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5ab8e79e86f7742d8b372e78":{"id":"5ab8e79e86f7742d8b372e78","name":"BNTI Gzhel-K body armor","value":128.733,"costPerSlot":142208,"weight":2.95,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5ab8e9fcd8ce870019439434":{"id":"5ab8e9fcd8ce870019439434","name":"Kalashnikov AKS-74N 5.45x39 assault rifle","value":36.397000000000006,"costPerSlot":51014,"weight":3.234,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5ab8ebf186f7742d8b372e80":{"id":"5ab8ebf186f7742d8b372e80","name":"SSO Attack 2 raid backpack (Khaki)","value":91.551,"costPerSlot":87451,"weight":2.8,"size":35,"gridSize":35,"maxDim":7,"armorClass":0,"parentWeighting":2},"5ab8ee7786f7742d8f33f0b9":{"id":"5ab8ee7786f7742d8f33f0b9","name":"VKBO army bag","value":13.645999999999999,"costPerSlot":17726,"weight":0.96,"size":12,"gridSize":8,"maxDim":4,"armorClass":0,"parentWeighting":2},"5ab8f04f86f774585f4237d8":{"id":"5ab8f04f86f774585f4237d8","name":"Tactical sling bag (Khaki)","value":14.572000000000003,"costPerSlot":17012,"weight":0.48,"size":9,"gridSize":6,"maxDim":3,"armorClass":0,"parentWeighting":2},"5ab8f20c86f7745cdb629fb2":{"id":"5ab8f20c86f7745cdb629fb2","name":"Ski hat with holes for eyes","value":11.593,"costPerSlot":8643,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5ab8f39486f7745cd93a1cca":{"id":"5ab8f39486f7745cd93a1cca","name":"Cold Fear infrared balaclava","value":14.603,"costPerSlot":11653,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5ab8f4ff86f77431c60d91ba":{"id":"5ab8f4ff86f77431c60d91ba","name":"Ghost balaclava","value":22.869,"costPerSlot":19919,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5ab8f85d86f7745cd93a1cf5":{"id":"5ab8f85d86f7745cd93a1cf5","name":"Shemagh (Green)","value":14.587,"costPerSlot":11637,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5aba62f8d8ce87001943946b":{"id":"5aba62f8d8ce87001943946b","name":"APS front sight","value":-1.5025,"costPerSlot":501,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5aba637ad8ce87001773e17f":{"id":"5aba637ad8ce87001773e17f","name":"APS rear sight","value":-1.404,"costPerSlot":600,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5aba639ed8ce8700182ece67":{"id":"5aba639ed8ce8700182ece67","name":"APB rear sight","value":-1.403,"costPerSlot":601,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5abcbb20d8ce87001773e258":{"id":"5abcbb20d8ce87001773e258","name":"M14 SA Enlarged Military Aperture rear sight","value":-1.544,"costPerSlot":471,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5abcbc27d8ce8700182eceeb":{"id":"5abcbc27d8ce8700182eceeb","name":"Kalashnikov AKMSN 7.62x39 assault rifle","value":22.372500000000002,"costPerSlot":37095,"weight":3.4450000000000003,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5abcc328d8ce8700194394f3":{"id":"5abcc328d8ce8700194394f3","name":"APB 9x18PM sound suppressor","value":-1.0335,"costPerSlot":3211.5,"weight":0.49,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5abccb7dd8ce87001773e277":{"id":"5abccb7dd8ce87001773e277","name":"Stechkin APB 9x18PM silenced machine pistol","value":28.066499999999998,"costPerSlot":33872,"weight":1.611,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5abcd472d8ce8700166032ae":{"id":"5abcd472d8ce8700166032ae","name":"AKMSN folding stock","value":-3.5220000000000002,"costPerSlot":778,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ac4c50d5acfc40019262e87":{"id":"5ac4c50d5acfc40019262e87","name":"Kolpak-1S face shield","value":18.4995,"costPerSlot":2999.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":0},"5ac4cd105acfc40016339859":{"id":"5ac4cd105acfc40016339859","name":"Kalashnikov AK-74M 5.45x39 assault rifle","value":41.077000000000005,"costPerSlot":51892,"weight":3.63,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5ac50c185acfc400163398d4":{"id":"5ac50c185acfc400163398d4","name":"AK-74M polymer stock","value":-3.362,"costPerSlot":813,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ac50da15acfc4001718d287":{"id":"5ac50da15acfc4001718d287","name":"AK-74M dust cover","value":-1.1225,"costPerSlot":2921.5,"weight":0.088,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ac66bea5acfc43b321d4aec":{"id":"5ac66bea5acfc43b321d4aec","name":"AK-103 7.62x39 30-round magazine","value":1.2555000000000005,"costPerSlot":5363,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ac66c5d5acfc4001718d314":{"id":"5ac66c5d5acfc4001718d314","name":"AK-101 5.56x45 6L29 30-round magazine","value":0.5960000000000001,"costPerSlot":4703.5,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ac66cb05acfc40198510a10":{"id":"5ac66cb05acfc40198510a10","name":"Kalashnikov AK-101 5.56x45 assault rifle","value":30.6355,"costPerSlot":45438,"weight":3.605,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5ac66d015acfc400180ae6e4":{"id":"5ac66d015acfc400180ae6e4","name":"Kalashnikov AK-102 5.56x45 assault rifle","value":41.045500000000004,"costPerSlot":51648,"weight":3.205,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5ac66d2e5acfc43b321d4b53":{"id":"5ac66d2e5acfc43b321d4b53","name":"Kalashnikov AK-103 7.62x39 assault rifle","value":42.155499999999996,"costPerSlot":56958,"weight":3.605,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5ac66d725acfc43b321d4b60":{"id":"5ac66d725acfc43b321d4b60","name":"Kalashnikov AK-104 7.62x39 assault rifle","value":29.3095,"costPerSlot":39912,"weight":3.205,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5ac66d9b5acfc4001633997a":{"id":"5ac66d9b5acfc4001633997a","name":"Kalashnikov AK-105 5.45x39 assault rifle","value":48.072500000000005,"costPerSlot":58675,"weight":3.205,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5ac72e475acfc400180ae6fe":{"id":"5ac72e475acfc400180ae6fe","name":"AK-74M rear sight","value":-1.5005,"costPerSlot":512,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac72e615acfc43f67248aa0":{"id":"5ac72e615acfc43f67248aa0","name":"AK-101 5.56x45 muzzle brake-compensator","value":-1.4500000000000002,"costPerSlot":600,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac72e725acfc400180ae701":{"id":"5ac72e725acfc400180ae701","name":"AK-102 5.56x45 muzzle brake-compensator","value":-1.448,"costPerSlot":602,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac72e7d5acfc40016339a02":{"id":"5ac72e7d5acfc40016339a02","name":"AK-103 7.62x39 muzzle brake-compensator","value":-1.4500000000000002,"costPerSlot":600,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac72e895acfc43b321d4bd5":{"id":"5ac72e895acfc43b321d4bd5","name":"AK-104 7.62x39 muzzle brake-compensator","value":-1.05,"costPerSlot":1000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac72e945acfc43f3b691116":{"id":"5ac72e945acfc43f3b691116","name":"AK-105 5.45x39 muzzle brake-compensator","value":15.171,"costPerSlot":17221,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac733a45acfc400192630e2":{"id":"5ac733a45acfc400192630e2","name":"AK-105 rear sight","value":-1.5405,"costPerSlot":472,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac7655e5acfc40016339a19":{"id":"5ac7655e5acfc40016339a19","name":"AK-74M 5.45x39 muzzle brake-compensator","value":5.45,"costPerSlot":7500,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac78a9b86f7741cca0bbd8d":{"id":"5ac78a9b86f7741cca0bbd8d","name":"Signal Jammer","value":24.667,"costPerSlot":26817,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac78eaf5acfc4001926317a":{"id":"5ac78eaf5acfc4001926317a","name":"AK-74M/AK-100 Zenit PT Lock","value":12.148,"costPerSlot":14163,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ac8d6885acfc400180ae7b0":{"id":"5ac8d6885acfc400180ae7b0","name":"Ops-Core FAST MT Super High Cut helmet (Urban Tan)","value":3.3049999999999997,"costPerSlot":4755,"weight":0.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5ad5ccd186f774446d5706e9":{"id":"5ad5ccd186f774446d5706e9","name":"OLI administration office key","value":14.055,"costPerSlot":16060,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad5cfbd86f7742c825d6104":{"id":"5ad5cfbd86f7742c825d6104","name":"OLI logistics department office key","value":75.01700000000001,"costPerSlot":77022,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad5d20586f77449be26d877":{"id":"5ad5d20586f77449be26d877","name":"OLI outlet utility room key","value":12.503,"costPerSlot":14508,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad5d49886f77455f9731921":{"id":"5ad5d49886f77455f9731921","name":"Power substation utility cabin key","value":3.9940000000000007,"costPerSlot":5999,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad5d64486f774079b080af8":{"id":"5ad5d64486f774079b080af8","name":"NecrusPharm pharmacy key","value":79.397,"costPerSlot":81402,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad5d7d286f77450166e0a89":{"id":"5ad5d7d286f77450166e0a89","name":"Kiba Arms outer door key","value":319.408,"costPerSlot":321413,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad5db3786f7743568421cce":{"id":"5ad5db3786f7743568421cce","name":"EMERCOM medical unit key","value":70.007,"costPerSlot":72012,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad7217186f7746744498875":{"id":"5ad7217186f7746744498875","name":"OLI cash register key","value":72.5,"costPerSlot":74505,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad7242b86f7740a6a3abd43":{"id":"5ad7242b86f7740a6a3abd43","name":"IDEA cash register key","value":82.887,"costPerSlot":84892,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad7247386f7747487619dc3":{"id":"5ad7247386f7747487619dc3","name":"Goshan cash register key","value":391.841,"costPerSlot":393846,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ad74cf586f774391278f6f0":{"id":"5ad74cf586f774391278f6f0","name":"Cash register TAR2-2","value":2.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addaffe86f77470b455f900":{"id":"5addaffe86f77470b455f900","name":"Kiba Arms inner grate door key","value":165.39700000000002,"costPerSlot":167402,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addba3e5acfc4001669f0ab":{"id":"5addba3e5acfc4001669f0ab","name":"M1A SA National Match .062 Blade front sight","value":-0.3909999999999998,"costPerSlot":1628,"weight":0.038,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbac75acfc400194dbc56":{"id":"5addbac75acfc400194dbc56","name":"M1A 7.62x51 22 inch barrel","value":-3.483199999999999,"costPerSlot":7071.8,"weight":1.11,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"5addbb6e5acfc408fb1393fd":{"id":"5addbb6e5acfc408fb1393fd","name":"M1A National Match 7.62x51 flash suppressor","value":13.995999999999999,"costPerSlot":16066,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbb825acfc408fb139400":{"id":"5addbb825acfc408fb139400","name":"M14 JP Enterprises 7.62x51 Tactical Compensator","value":7.377000000000001,"costPerSlot":9442,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbb945acfc4001a5fc44e":{"id":"5addbb945acfc4001a5fc44e","name":"M14 Smith Enterprise Good Iron 7.62x51 muzzle brake","value":10.69,"costPerSlot":12760,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbba15acfc400185c2854":{"id":"5addbba15acfc400185c2854","name":"M14 Smith Enterprise Vortex 7.62x51 muzzle brake","value":3.373,"costPerSlot":5403,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbbb25acfc40015621bd9":{"id":"5addbbb25acfc40015621bd9","name":"M14 Yankee Hill Phantom 7.62x51 flash hider","value":4.453,"costPerSlot":6488,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbf175acfc408fb13965b":{"id":"5addbf175acfc408fb13965b","name":"M1A ProMag Archangel chassis","value":2.2650000000000006,"costPerSlot":9215,"weight":1.9,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5addbfbb5acfc400194dbcf7":{"id":"5addbfbb5acfc400194dbcf7","name":"M14 UltiMAK M8 Forward Optic mount","value":42.523,"costPerSlot":46618,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5addbfd15acfc40015621bde":{"id":"5addbfd15acfc40015621bde","name":"M14 Amega Mini Scout Mount system","value":2.0025000000000004,"costPerSlot":6092.5,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5addbfe15acfc4001a5fc58b":{"id":"5addbfe15acfc4001a5fc58b","name":"M14 A.R.M.S. #18 scope mount","value":34.909,"costPerSlot":37019,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbfef5acfc400185c2857":{"id":"5addbfef5acfc400185c2857","name":"M14 Leapers UTG 4-Point Locking Deluxe mount","value":18.482,"costPerSlot":20607,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addbffe5acfc4001714dfac":{"id":"5addbffe5acfc4001714dfac","name":"M14 SAGE International DCSB mount","value":0.7969999999999997,"costPerSlot":4907,"weight":0.22,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5addc00b5acfc4001669f144":{"id":"5addc00b5acfc4001669f144","name":"M14 Vltor CASV-14 rail system","value":3.186,"costPerSlot":7234,"weight":0.096,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5addc7005acfc4001669f275":{"id":"5addc7005acfc4001669f275","name":"M14 SAGE International M14ALCS chassis","value":-0.9593333333333334,"costPerSlot":5990.666666666667,"weight":1.9,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5addc7ac5acfc400194dbd90":{"id":"5addc7ac5acfc400194dbd90","name":"M14 SAGE International M14ALCS (MOD-0) stock","value":3.4815000000000005,"costPerSlot":7983.5,"weight":1.004,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5addc7db5acfc4001669f279":{"id":"5addc7db5acfc4001669f279","name":"M14 SAGE International M14ALCS (MOD-0) pistol grip","value":5.46,"costPerSlot":7500,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5addcce35acfc4001a5fc635":{"id":"5addcce35acfc4001a5fc635","name":"M14 7.62x51 30-round magazine","value":4.9465,"costPerSlot":9116.5,"weight":0.34,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5addccf45acfc400185c2989":{"id":"5addccf45acfc400185c2989","name":"M14 7.62x51 X Products X-14 50-round drum magazine","value":9.4465,"costPerSlot":13796.5,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5adf23995acfc400185c2aeb":{"id":"5adf23995acfc400185c2aeb","name":"MTs 20-01 stock","value":-8.01175,"costPerSlot":613.25,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5ae083b25acfc4001a5fc702":{"id":"5ae083b25acfc4001a5fc702","name":"Master Hand","value":2.237,"costPerSlot":3580,"weight":0.686,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5ae089fb5acfc408fb13989b":{"id":"5ae089fb5acfc408fb13989b","name":"Trophy","value":-1.7445,"costPerSlot":258,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ae08f0a5acfc408fb1398a1":{"id":"5ae08f0a5acfc408fb1398a1","name":"Mosin 7.62x54R bolt-action rifle (Sniper)","value":67.309,"costPerSlot":73874,"weight":3.1300000000000003,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5ae096d95acfc400185c2c81":{"id":"5ae096d95acfc400185c2c81","name":"Mosin Rifle standard stock","value":-8.2595,"costPerSlot":615.5,"weight":1.75,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5ae0973a5acfc4001562206c":{"id":"5ae0973a5acfc4001562206c","name":"Mosin Rifle 7.62x54R 5-round magazine","value":-0.22999999999999998,"costPerSlot":1970,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ae099875acfc4001714e593":{"id":"5ae099875acfc4001714e593","name":"Mosin Rifle front sight","value":-1.516,"costPerSlot":524,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ae099925acfc4001a5fc7b3":{"id":"5ae099925acfc4001a5fc7b3","name":"Mosin Rifle rear sight","value":-1.197,"costPerSlot":878,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ae09bff5acfc4001562219d":{"id":"5ae09bff5acfc4001562219d","name":"Mosin Rifle 7.62x54R 730mm regular barrel","value":0.8020000000000014,"costPerSlot":9652,"weight":1.7,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5ae30bad5acfc400185c2dc4":{"id":"5ae30bad5acfc400185c2dc4","name":"AR-15 rear sight carry handle","value":-1.2519999999999998,"costPerSlot":823,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ae30c9a5acfc408fb139a03":{"id":"5ae30c9a5acfc408fb139a03","name":"AR-15 LMT SOPMOD stock","value":1.8820000000000006,"costPerSlot":5956,"weight":0.148,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ae30db85acfc408fb139a05":{"id":"5ae30db85acfc408fb139a05","name":"AR-15 Colt M4 Carbine Length handguard","value":-3.3845,"costPerSlot":712,"weight":0.193,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ae30e795acfc408fb139a0b":{"id":"5ae30e795acfc408fb139a0b","name":"M4A1 front sight with gas block","value":0.49499999999999966,"costPerSlot":2570,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ae35b315acfc4001714e8b0":{"id":"5ae35b315acfc4001714e8b0","name":"M870 Mesa Tactical LEO stock adapter","value":-1.028,"costPerSlot":3172,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5af0454c86f7746bf20992e8":{"id":"5af0454c86f7746bf20992e8","name":"Aluminum splint","value":31.839000000000002,"costPerSlot":25949,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5af0484c86f7740f02001f7f":{"id":"5af0484c86f7740f02001f7f","name":"Can of Majaica coffee beans","value":13.201,"costPerSlot":15451,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5af04b6486f774195a3ebb49":{"id":"5af04b6486f774195a3ebb49","name":"Pliers Elite","value":26.875,"costPerSlot":29000,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5af0534a86f7743b6f354284":{"id":"5af0534a86f7743b6f354284","name":"Ophthalmoscope","value":82.8785,"costPerSlot":84912,"weight":0.067,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5af0548586f7743a532b7e99":{"id":"5af0548586f7743a532b7e99","name":"Ibuprofen painkillers","value":71.936,"costPerSlot":65971,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5af0561e86f7745f5f3ad6ac":{"id":"5af0561e86f7745f5f3ad6ac","name":"Portable Powerbank","value":23.296000000000003,"costPerSlot":25446,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5af056f186f7746da511291f":{"id":"5af056f186f7746da511291f","name":"IMP mine detector","value":-3.833333333333334,"costPerSlot":11166.666666666666,"weight":12,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5af99e9186f7747c447120b8":{"id":"5af99e9186f7747c447120b8","name":"Pockets Large","value":-407,"costPerSlot":0,"weight":0,"size":400,"gridSize":10,"maxDim":20,"armorClass":0,"parentWeighting":0},"5afd7ded5acfc40017541f5e":{"id":"5afd7ded5acfc40017541f5e","name":"SKS TAPCO Intrafuse chassis","value":-2.214666666666667,"costPerSlot":4160.333333333333,"weight":0.75,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5afd7e095acfc40017541f61":{"id":"5afd7e095acfc40017541f61","name":"SKS TAPCO Intrafuse buffer tube","value":-1.605,"costPerSlot":2490,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5afd7e445acfc4001637e35a":{"id":"5afd7e445acfc4001637e35a","name":"SKS TAPCO Intrafuse SAW-Style pistol grip","value":7.452999999999999,"costPerSlot":9498,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b04473a5acfc40018632f70":{"id":"5b04473a5acfc40018632f70","name":"AKM/AK-74 FAB Defense UAS stock","value":7.804500000000001,"costPerSlot":12029.5,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b057b4f5acfc4771e1bd3e9":{"id":"5b057b4f5acfc4771e1bd3e9","name":"Stark SE-5 Express Forward foregrip","value":41.489,"costPerSlot":43534,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b07db875acfc40dc528a5f6":{"id":"5b07db875acfc40dc528a5f6","name":"AR-15 Tactical Dynamics Skeletonized pistol grip","value":78.678,"costPerSlot":80697,"weight":0.038,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b07dd285acfc4001754240d":{"id":"5b07dd285acfc4001754240d","name":"Steiner LAS/TAC 2 tactical flashlight","value":34.341,"costPerSlot":36384,"weight":0.086,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b0800175acfc400153aebd4":{"id":"5b0800175acfc400153aebd4","name":"AR-15 ERGO F93 PRO stock","value":7.6465,"costPerSlot":11941.5,"weight":0.59,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b099a765acfc47a8607efe3":{"id":"5b099a765acfc47a8607efe3","name":"SA58 7.62x51 11 inch barrel","value":22.455000000000002,"costPerSlot":26659.5,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b099a9d5acfc47a8607efe7":{"id":"5b099a9d5acfc47a8607efe7","name":"SA58 quad rail handguard","value":4.0535,"costPerSlot":8293.5,"weight":0.48,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b099ac65acfc400186331e1":{"id":"5b099ac65acfc400186331e1","name":"SA58/FAL 7.62x51 20-round magazine","value":0.3615000000000004,"costPerSlot":4536.5,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b099b7d5acfc400186331e4":{"id":"5b099b7d5acfc400186331e4","name":"SA58 3-Prong Trident 7.62x51 flash hider","value":6.3629999999999995,"costPerSlot":8395,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b099b965acfc400186331e6":{"id":"5b099b965acfc400186331e6","name":"SA58 SAW-style pistol grip (Black)","value":10.152000000000001,"costPerSlot":12217,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b099bb25acfc400186331e8":{"id":"5b099bb25acfc400186331e8","name":"SA58 Extreme Duty dust cover","value":13.921,"costPerSlot":18028.5,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b099bf25acfc4001637e683":{"id":"5b099bf25acfc4001637e683","name":"SA58 buffer tube adapter","value":15.445999999999998,"costPerSlot":17601,"weight":0.31,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b0bbe4e5acfc40dc528a72d":{"id":"5b0bbe4e5acfc40dc528a72d","name":"DS Arms SA58 7.62x51 assault rifle","value":108.54849999999999,"costPerSlot":131524,"weight":3.9509999999999996,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5b0bc22d5acfc47a8607f085":{"id":"5b0bc22d5acfc47a8607f085","name":"SA58 Holland Type rear sight","value":-1.575,"costPerSlot":470,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b0e794b5acfc47a877359b2":{"id":"5b0e794b5acfc47a877359b2","name":"AKM/AK-74 Magpul Zhukov-S stock","value":13.668000000000003,"costPerSlot":17880.5,"weight":0.425,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b1fa9b25acfc40018633c01":{"id":"5b1fa9b25acfc40018633c01","name":"Glock 18C 9x19 machine pistol","value":38.373000000000005,"costPerSlot":39794,"weight":0.8420000000000001,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5b1fa9ea5acfc40018633c0a":{"id":"5b1fa9ea5acfc40018633c0a","name":"Glock 18C 9x19 114mm compensated barrel","value":27.909000000000002,"costPerSlot":29999,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b1faa0f5acfc40dc528aeb5":{"id":"5b1faa0f5acfc40dc528aeb5","name":"Glock 18C pistol slide","value":35.8395,"costPerSlot":39999.5,"weight":0.32,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b1fb3e15acfc4001637f068":{"id":"5b1fb3e15acfc4001637f068","name":"AK 7.62x39 6P2 bakelite 40-round magazine","value":-2.727,"costPerSlot":3433,"weight":0.32,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5b1fd4e35acfc40018633c39":{"id":"5b1fd4e35acfc40018633c39","name":"AK 7.62x39 aluminium 10-round magazine","value":-2.7430000000000003,"costPerSlot":1317,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b222d335acfc4771e1be099":{"id":"5b222d335acfc4771e1be099","name":"AKM/AK-74 Zenit PT Lock","value":8.708,"costPerSlot":10723,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b222d405acfc400153af4fe":{"id":"5b222d405acfc400153af4fe","name":"AK Zenit PT-1 \"Klassika\" stock","value":6.206000000000001,"costPerSlot":10351,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b2240bf5acfc40dc528af69":{"id":"5b2240bf5acfc40dc528af69","name":"AR-15 Radian Weapons Raptor charging handle (FDE)","value":15.113,"costPerSlot":17133,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b237e425acfc4771e1be0b6":{"id":"5b237e425acfc4771e1be0b6","name":"AK TROY Full Length Rail handguard with gas tube","value":11.6545,"costPerSlot":15929.5,"weight":0.55,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b2388675acfc4771e1be0be":{"id":"5b2388675acfc4771e1be0be","name":"Burris FullField TAC30 1-4x24 30mm riflescope","value":15.2955,"costPerSlot":19535.5,"weight":0.48,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b2389515acfc4771e1be0c0":{"id":"5b2389515acfc4771e1be0c0","name":"Burris AR-P.E.P.R. 30mm ring scope mount","value":7.250500000000001,"costPerSlot":11373.5,"weight":0.246,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b2cfa535acfc432ff4db7a0":{"id":"5b2cfa535acfc432ff4db7a0","name":"AR-15 Alexander Arms MK10 rifle length handguard","value":10.944500000000001,"costPerSlot":15134.5,"weight":0.38,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b30ac585acfc433000eb79c":{"id":"5b30ac585acfc433000eb79c","name":"AK Magpul MOE pistol grip (Black)","value":13.447000000000001,"costPerSlot":15487,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b30b0dc5acfc400153b7124":{"id":"5b30b0dc5acfc400153b7124","name":"Holosun HS401G5 reflex sight","value":12.716000000000001,"costPerSlot":14896,"weight":0.36,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b30bc165acfc40016387293":{"id":"5b30bc165acfc40016387293","name":"Alexander Arms 3 inch rail","value":27.213,"costPerSlot":29224,"weight":0.022,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b30bc285acfc47a8608615d":{"id":"5b30bc285acfc47a8608615d","name":"Alexander Arms 10 inch rail","value":18.362,"costPerSlot":20407,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b31163c5acfc400153b71cb":{"id":"5b31163c5acfc400153b71cb","name":"SIG Sauer ROMEO sight mount","value":11.4455,"costPerSlot":13453,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3116595acfc40019476364":{"id":"5b3116595acfc40019476364","name":"SIG Sauer ROMEO4 reflex sight","value":19.2605,"costPerSlot":21305,"weight":0.089,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b363dd25acfc4001a598fd2":{"id":"5b363dd25acfc4001a598fd2","name":"SilencerCo Salvo 12 12ga sound suppressor","value":13.34,"costPerSlot":17825,"weight":0.97,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b363dea5acfc4771e1c5e7e":{"id":"5b363dea5acfc4771e1c5e7e","name":"SilencerCo Salvo 12 choke adapter","value":15.608999999999998,"costPerSlot":17674,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b363e1b5acfc4771e1c5e80":{"id":"5b363e1b5acfc4771e1c5e80","name":"SilencerCo Salvo 12 thread adapter","value":15.815999999999999,"costPerSlot":17871,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b39f8db5acfc40016387a1b":{"id":"5b39f8db5acfc40016387a1b","name":"AR-15 Vltor EMOD stock","value":4.1525,"costPerSlot":8347.5,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b39ffbd5acfc47a8773fb06":{"id":"5b39ffbd5acfc47a8773fb06","name":"P226 Hogue Rubberized pistol grip","value":6.965,"costPerSlot":9000,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3a08b25acfc4001754880c":{"id":"5b3a08b25acfc4001754880c","name":"P226 Bridge sight mount","value":6.9399999999999995,"costPerSlot":9000,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3a16655acfc40016387a2a":{"id":"5b3a16655acfc40016387a2a","name":"Yankee Hill Annihilator multi-caliber flash hider","value":60.976,"costPerSlot":63040,"weight":0.128,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3a337e5acfc4704b4a19a0":{"id":"5b3a337e5acfc4704b4a19a0","name":"Zenit Klesch-2U tactical flashlight","value":15.9545,"costPerSlot":18084,"weight":0.259,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3b6dc75acfc47a8773fb1e":{"id":"5b3b6dc75acfc47a8773fb1e","name":"Armasight Vulcan universal base","value":10.355500000000001,"costPerSlot":12364,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3b6e495acfc4330140bd88":{"id":"5b3b6e495acfc4330140bd88","name":"Armasight Vulcan MG 3.5x Bravo night vision scope","value":19.025000000000002,"costPerSlot":23475,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b3b713c5acfc4330140bd8d":{"id":"5b3b713c5acfc4330140bd8d","name":"TT-33 7.62x25 TT pistol (Golden)","value":44.062000000000005,"costPerSlot":45499,"weight":0.874,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5b3b99265acfc4704b4a1afb":{"id":"5b3b99265acfc4704b4a1afb","name":"Nightforce Magmount 30mm ring scope mount","value":7.2105,"costPerSlot":11305.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b3b99475acfc432ff4dcbee":{"id":"5b3b99475acfc432ff4dcbee","name":"EOTech Vudu 1-6x24 30mm riflescope","value":36.9095,"costPerSlot":41194.5,"weight":0.57,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b3baf8f5acfc40dc5296692":{"id":"5b3baf8f5acfc40dc5296692","name":"TT 7.62x25 116mm gilded barrel","value":7.356000000000002,"costPerSlot":9386,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3cadf35acfc400194776a0":{"id":"5b3cadf35acfc400194776a0","name":"TT ornated side grips","value":12.124,"costPerSlot":14159,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3cbc235acfc4001863ac44":{"id":"5b3cbc235acfc4001863ac44","name":"Armasight Vulcan MG scope eyecup","value":-1.2985,"costPerSlot":704,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f16c486f7747c327f55f7":{"id":"5b3f16c486f7747c327f55f7","name":"Armband (White)","value":-1.296,"costPerSlot":729,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f3ade86f7746b6b790d8e":{"id":"5b3f3ade86f7746b6b790d8e","name":"Armband (Red)","value":-1.131,"costPerSlot":894,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f3af486f774679e752c1f":{"id":"5b3f3af486f774679e752c1f","name":"Armband (Blue)","value":-1.452,"costPerSlot":573,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f3b0186f774021a2afef7":{"id":"5b3f3b0186f774021a2afef7","name":"Armband (Green)","value":-1.498,"costPerSlot":527,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f3b0e86f7746752107cda":{"id":"5b3f3b0e86f7746752107cda","name":"Armband (Yellow)","value":13.53,"costPerSlot":15555,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f7bf05acfc433000ecf6b":{"id":"5b3f7bf05acfc433000ecf6b","name":"Mosin Rifle Kochetov mount","value":15.529999999999998,"costPerSlot":17540,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f7c005acfc4704b4a1de8":{"id":"5b3f7c005acfc4704b4a1de8","name":"PU 3.5x ring scope mount","value":0.007000000000000117,"costPerSlot":2017,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b3f7c1c5acfc40dc5296b1d":{"id":"5b3f7c1c5acfc40dc5296b1d","name":"PU 3.5x riflescope","value":11.3,"costPerSlot":13500,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b40e1525acfc4771e1c6611":{"id":"5b40e1525acfc4771e1c6611","name":"HighCom Striker ULACH IIIA helmet (Black)","value":107.777,"costPerSlot":109727,"weight":1.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b40e2bc5acfc40016388216":{"id":"5b40e2bc5acfc40016388216","name":"HighCom Striker ULACH IIIA helmet (Desert Tan)","value":85.214,"costPerSlot":87164,"weight":1.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b40e3f35acfc40016388218":{"id":"5b40e3f35acfc40016388218","name":"HighCom Striker ACHHC IIIA helmet (Black)","value":65.36600000000001,"costPerSlot":66966,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b40e4035acfc47a87740943":{"id":"5b40e4035acfc47a87740943","name":"HighCom Striker ACHHC IIIA helmet (Olive Drab)","value":58.798,"costPerSlot":60398,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b40e5e25acfc4001a599bea":{"id":"5b40e5e25acfc4001a599bea","name":"BEAR baseball cap (Black)","value":4.777,"costPerSlot":1827,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5b40e61f5acfc4001a599bec":{"id":"5b40e61f5acfc4001a599bec","name":"USEC baseball cap (Black)","value":9.845,"costPerSlot":6895,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5b4325355acfc40019478126":{"id":"5b4325355acfc40019478126","name":"Shemagh (Tan)","value":10.655000000000001,"costPerSlot":7705,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5b4326435acfc433000ed01d":{"id":"5b4326435acfc433000ed01d","name":"Neoprene mask","value":12.736,"costPerSlot":9861,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5b43271c5acfc432ff4dce65":{"id":"5b43271c5acfc432ff4dce65","name":"Bandana","value":4.945,"costPerSlot":1995,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5b4327aa5acfc400175496e0":{"id":"5b4327aa5acfc400175496e0","name":"MIL-TEC boonie hat","value":6.555000000000001,"costPerSlot":7605,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b4329075acfc400153b78ff":{"id":"5b4329075acfc400153b78ff","name":"Pompon hat","value":19.793,"costPerSlot":16843,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5b4329f05acfc47a86086aa1":{"id":"5b4329f05acfc47a86086aa1","name":"DevTac Ronin Respirator","value":1.2720000000000002,"costPerSlot":3472,"weight":2.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b432b2f5acfc4771e1c6622":{"id":"5b432b2f5acfc4771e1c6622","name":"Shattered lightweight armored mask","value":30.393,"costPerSlot":21543,"weight":0.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":1,"parentWeighting":5},"5b432b6c5acfc4001a599bf0":{"id":"5b432b6c5acfc4001a599bf0","name":"Deadly Skull mask","value":9.178,"costPerSlot":10278,"weight":0.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b432b965acfc47a8774094e":{"id":"5b432b965acfc47a8774094e","name":"GSSh-01 active headset","value":3.11925,"costPerSlot":4369.25,"weight":0.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b432be65acfc433000ed01f":{"id":"5b432be65acfc433000ed01f","name":"6B34 anti-fragmentation glasses","value":7.290000000000001,"costPerSlot":6350,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b432c305acfc40019478128":{"id":"5b432c305acfc40019478128","name":"GP-5 gas mask","value":11.545,"costPerSlot":12770,"weight":0.45,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b432d215acfc4771e1c6624":{"id":"5b432d215acfc4771e1c6624","name":"LShZ lightweight helmet (Olive Drab)","value":33.147,"costPerSlot":34622,"weight":0.95,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5b432f3d5acfc4704b4a1dfb":{"id":"5b432f3d5acfc4704b4a1dfb","name":"Momex balaclava","value":6.161,"costPerSlot":3211,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5b4335ba86f7744d2837a264":{"id":"5b4335ba86f7744d2837a264","name":"Medical bloodset","value":10.517000000000001,"costPerSlot":12617,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b43575a86f77424f443fe62":{"id":"5b43575a86f77424f443fe62","name":"Fuel conditioner","value":25.402,"costPerSlot":30302,"weight":1.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b4391a586f7745321235ab2":{"id":"5b4391a586f7745321235ab2","name":"WI-FI Camera","value":69.491,"costPerSlot":71741,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b44c6ae86f7742d1627baea":{"id":"5b44c6ae86f7742d1627baea","name":"ANA Tactical Beta 2 Battle backpack (Olive Drab)","value":100.676,"costPerSlot":90676,"weight":2,"size":25,"gridSize":30,"maxDim":5,"armorClass":0,"parentWeighting":2},"5b44c8ea86f7742d1627baf1":{"id":"5b44c8ea86f7742d1627baf1","name":"BlackHawk! Commando chest harness (Desert Tan)","value":33.743,"costPerSlot":28618,"weight":1.35,"size":12,"gridSize":16,"maxDim":4,"armorClass":0,"parentWeighting":1},"5b44cad286f77402a54ae7e5":{"id":"5b44cad286f77402a54ae7e5","name":"5.11 Tactical TacTec plate carrier (Ranger Green)","value":93.477,"costPerSlot":90252,"weight":2.35,"size":16,"gridSize":18,"maxDim":4,"armorClass":0,"parentWeighting":1},"5b44cd8b86f774503d30cba2":{"id":"5b44cd8b86f774503d30cba2","name":"IOTV Gen4 body armor (Full Protection Kit, MultiCam)","value":131.54000000000002,"costPerSlot":156080,"weight":9.08,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5b44cf1486f77431723e3d05":{"id":"5b44cf1486f77431723e3d05","name":"IOTV Gen4 body armor (Assault Kit, MultiCam)","value":110.017,"costPerSlot":130107,"weight":8.18,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5b44d0de86f774503d30cba8":{"id":"5b44d0de86f774503d30cba8","name":"IOTV Gen4 body armor (High Mobility Kit, MultiCam)","value":74.313,"costPerSlot":94253,"weight":7.88,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5b44d22286f774172b0c9de8":{"id":"5b44d22286f774172b0c9de8","name":"BNTI Kirasa-N body armor","value":37.675000000000004,"costPerSlot":51175,"weight":3,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5b46238386f7741a693bcf9c":{"id":"5b46238386f7741a693bcf9c","name":"Kiver-M face shield","value":39.312,"costPerSlot":13912,"weight":1.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5b4736a986f774040571e998":{"id":"5b4736a986f774040571e998","name":"TROY QARS 3.2 inch rail","value":10.654499999999999,"costPerSlot":12677,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b4736b986f77405cb415c10":{"id":"5b4736b986f77405cb415c10","name":"TROY QARS 4.2 inch rail","value":17.8075,"costPerSlot":19840,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b6d9ce188a4501afc1b2b25":{"id":"5b6d9ce188a4501afc1b2b25","name":"T H I C C Weapon case","value":228,"costPerSlot":135000,"weight":18,"size":10,"gridSize":90,"maxDim":5,"armorClass":0,"parentWeighting":0},"5b7be1125acfc4001876c0e5":{"id":"5b7be1125acfc4001876c0e5","name":"SA58 7.62x51 16 inch barrel","value":22.928166666666666,"costPerSlot":29232.666666666668,"weight":0.609,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5b7be1265acfc400161d0798":{"id":"5b7be1265acfc400161d0798","name":"SA58 7.62x51 21 inch barrel","value":0.9312500000000004,"costPerSlot":9323.25,"weight":0.784,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5b7be1ca5acfc400170e2d2f":{"id":"5b7be1ca5acfc400170e2d2f","name":"SA58 quad rail full length handguard","value":6.231,"costPerSlot":10536,"weight":0.61,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7be2345acfc400196d524a":{"id":"5b7be2345acfc400196d524a","name":"SA58/FAL AIM Sports Universal KeyMod handguard","value":6.16,"costPerSlot":10265.5,"weight":0.211,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7be4575acfc400161d0832":{"id":"5b7be4575acfc400161d0832","name":"Vltor CASV 2 inch rail","value":14.844000000000001,"costPerSlot":16869,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7be4645acfc400170e2dcc":{"id":"5b7be4645acfc400170e2dcc","name":"Vltor CASV 4 inch rail","value":14.280999999999999,"costPerSlot":16311,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7be46e5acfc400170e2dcf":{"id":"5b7be46e5acfc400170e2dcf","name":"Vltor CASV 5 inch rail","value":16.904,"costPerSlot":18939,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7be47f5acfc400170e2dd2":{"id":"5b7be47f5acfc400170e2dd2","name":"Magpul M-LOK 2.5 inch rail","value":1.7990000000000004,"costPerSlot":3824,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7be4895acfc400170e2dd5":{"id":"5b7be4895acfc400170e2dd5","name":"Magpul M-LOK 4.1 inch rail","value":2.888,"costPerSlot":4923,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7bebc85acfc43bca706666":{"id":"5b7bebc85acfc43bca706666","name":"SA58/FAL AIM Sports Universal M-LOK handguard","value":7.575000000000001,"costPerSlot":11709.5,"weight":0.269,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7bed205acfc400161d08cc":{"id":"5b7bed205acfc400161d08cc","name":"FAL original handguard","value":-3.105,"costPerSlot":1200,"weight":0.61,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7bedd75acfc43d825283f9":{"id":"5b7bedd75acfc43d825283f9","name":"SA58/FAL Vltor CASV-FAL handguard","value":15.372500000000002,"costPerSlot":19484.5,"weight":0.224,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7bee755acfc400196d5383":{"id":"5b7bee755acfc400196d5383","name":"SA58/FAL Vltor CASV-FAS handguard","value":13.4585,"costPerSlot":17574.5,"weight":0.232,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7bef1e5acfc43d82528402":{"id":"5b7bef1e5acfc43d82528402","name":"SA58/FAL 7.62x51 10-round magazine","value":-0.135,"costPerSlot":2000,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7bef5d5acfc43bca7067a3":{"id":"5b7bef5d5acfc43bca7067a3","name":"SA58/FAL 7.62x51 30-round magazine","value":3.8890000000000002,"costPerSlot":8134,"weight":0.49,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7bef9c5acfc43d102852ec":{"id":"5b7bef9c5acfc43d102852ec","name":"SA58/FAL 7.62x51 X Products X-FAL 50-round drum magazine","value":23.705,"costPerSlot":28055,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7c2d1d5acfc43d1028532a":{"id":"5b7c2d1d5acfc43d1028532a","name":"SA58/FAL 7.62x51 MMW polymer 20-round magazine","value":0.7750000000000004,"costPerSlot":4920,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7c710788a4506dec015957":{"id":"5b7c710788a4506dec015957","name":"Lucky Scav Junk box","value":303.2543125,"costPerSlot":75954.3125,"weight":15,"size":16,"gridSize":196,"maxDim":4,"armorClass":0,"parentWeighting":0},"5b7d37845acfc400170e2f87":{"id":"5b7d37845acfc400170e2f87","name":"SA58/FAL/SLR 7.62x51 30-round magazine","value":8.773000000000001,"costPerSlot":13018,"weight":0.49,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7d63b75acfc400170e2f8a":{"id":"5b7d63b75acfc400170e2f8a","name":"SA58/FAL Magpul PRS 2 polymer stock","value":7.3835,"costPerSlot":11813.5,"weight":0.86,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7d63cf5acfc4001876c8df":{"id":"5b7d63cf5acfc4001876c8df","name":"SA58 folding stock","value":2.6075,"costPerSlot":7007.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7d63de5acfc400170e2f8d":{"id":"5b7d63de5acfc400170e2f8d","name":"SA58 SPR stock","value":7.230500000000001,"costPerSlot":11705.5,"weight":0.95,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7d64555acfc4001876c8e2":{"id":"5b7d64555acfc4001876c8e2","name":"SA58 BRS stock","value":4.749500000000001,"costPerSlot":9154.5,"weight":0.81,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7d645e5acfc400170e2f90":{"id":"5b7d645e5acfc400170e2f90","name":"SA58 humpback polymer stock","value":-2.7,"costPerSlot":1700,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7d671b5acfc43d82528ddd":{"id":"5b7d671b5acfc43d82528ddd","name":"SA58/FAL Belgian Style handguard","value":-2.754,"costPerSlot":1501,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b7d678a5acfc4001a5c4022":{"id":"5b7d678a5acfc4001a5c4022","name":"SA58 pistol grip","value":5.401000000000001,"costPerSlot":7456,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7d679f5acfc4001a5c4024":{"id":"5b7d679f5acfc4001a5c4024","name":"SA58 FAB Defense AG-FAL pistol grip","value":54.232000000000006,"costPerSlot":56276,"weight":0.088,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7d68af5acfc400170e30c3":{"id":"5b7d68af5acfc400170e30c3","name":"SA58 Austrian Style 7.62x51 muzzle brake","value":2.6060000000000008,"costPerSlot":4661,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7d693d5acfc43bca706a3d":{"id":"5b7d693d5acfc43bca706a3d","name":"AR-10 2A Armanent X3 7.62x51 compensator","value":7.714,"costPerSlot":9744,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b7d6c105acfc40015109a5f":{"id":"5b7d6c105acfc40015109a5f","name":"FAL standard dust cover","value":-2.8369999999999997,"costPerSlot":1250.5,"weight":0.175,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b800e9286f7747a8b04f3ff":{"id":"5b800e9286f7747a8b04f3ff","name":"AK Hexagon tubular handguard","value":10.8365,"costPerSlot":14920,"weight":0.167,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b800ebc86f774394e230a90":{"id":"5b800ebc86f774394e230a90","name":"Hexagon medium length rail","value":17.406499999999998,"costPerSlot":19444,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b800ed086f7747baf6e2f9e":{"id":"5b800ed086f7747baf6e2f9e","name":"Hexagon short length rail","value":24.907,"costPerSlot":26942,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b80242286f77429445e0b47":{"id":"5b80242286f77429445e0b47","name":"AK Hexagon tubular handguard (Anodized Red)","value":17.919,"costPerSlot":22002.5,"weight":0.167,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b84038986f774774913b0c1":{"id":"5b84038986f774774913b0c1","name":"Hexagon short length rail (Anodized Red)","value":43.379000000000005,"costPerSlot":45414,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b8403a086f7747ff856f4e2":{"id":"5b8403a086f7747ff856f4e2","name":"Hexagon medium length rail (Anodized Red)","value":23.903499999999998,"costPerSlot":25941,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5b86a0e586f7745b600ccb23":{"id":"5b86a0e586f7745b600ccb23","name":"Mosin Rifle Bramit 7.62x54R sound suppressor","value":16.0765,"costPerSlot":20626.5,"weight":1.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5b9b9020e7ef6f5716480215":{"id":"5b9b9020e7ef6f5716480215","name":"dogtagt","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ba26383d4351e00334c93d9":{"id":"5ba26383d4351e00334c93d9","name":"HK MP7A1 4.6x30 submachine gun","value":78.884,"costPerSlot":81019,"weight":2.2700000000000005,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5ba264f6d4351e0034777d52":{"id":"5ba264f6d4351e0034777d52","name":"HK MP7 4.6x30 20-round magazine","value":1.976,"costPerSlot":4026,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ba2657ed4351e0035628ff2":{"id":"5ba2657ed4351e0035628ff2","name":"HK MP7 4.6x30 30-round magazine","value":4.766,"costPerSlot":8841,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ba26586d4351e44f824b340":{"id":"5ba26586d4351e44f824b340","name":"HK MP7 4.6x30 40-round magazine","value":6.17,"costPerSlot":10270,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ba2678ad4351e44f824b344":{"id":"5ba2678ad4351e44f824b344","name":"4.6x30mm FMJ SX","value":8.9205,"costPerSlot":924,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ba26812d4351e003201fef1":{"id":"5ba26812d4351e003201fef1","name":"4.6x30mm Action SX","value":8.0715,"costPerSlot":75,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ba26835d4351e0035628ff5":{"id":"5ba26835d4351e0035628ff5","name":"4.6x30mm AP SX","value":8.7415,"costPerSlot":745,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ba26844d4351e00334c9475":{"id":"5ba26844d4351e00334c9475","name":"4.6x30mm Subsonic SX","value":8.16,"costPerSlot":165,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ba26acdd4351e003562908e":{"id":"5ba26acdd4351e003562908e","name":"HK MP7A1 4.6x30 flash hider","value":25.792,"costPerSlot":27832,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ba26ae8d4351e00367f9bdb":{"id":"5ba26ae8d4351e00367f9bdb","name":"HK MP7 B&T Rotex 2 4.6x30 sound suppressor","value":26.509500000000003,"costPerSlot":30813,"weight":0.607,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ba26b01d4351e0085325a51":{"id":"5ba26b01d4351e0085325a51","name":"HK MP7 flip-up front sight","value":22.413,"costPerSlot":24478,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ba26b17d4351e00367f9bdd":{"id":"5ba26b17d4351e00367f9bdd","name":"HK MP7 flip-up rear sight","value":21.243,"costPerSlot":23313,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ba36f85d4351e0085325c81":{"id":"5ba36f85d4351e0085325c81","name":"NSPU-M scope eyecup","value":-1.7415,"costPerSlot":261,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bae13bad4351e00320204af":{"id":"5bae13bad4351e00320204af","name":"Mosin Rifle ProMag Archangel OPFOR PRS chassis","value":-2.325,"costPerSlot":6675,"weight":2,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5bae13ded4351e44f824bf38":{"id":"5bae13ded4351e44f824bf38","name":"Mosin Rifle 7.62x54R ProMag Archangel OPFOR 10-round magazine","value":31.5865,"costPerSlot":33700,"weight":0.227,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bb20d53d4351e4502010a69":{"id":"5bb20d53d4351e4502010a69","name":"HK 416A5 5.56x45 upper receiver","value":23.249499999999998,"costPerSlot":27384.5,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bb20d92d4351e00853263eb":{"id":"5bb20d92d4351e00853263eb","name":"HK 416 5.56x45 11 inch barrel","value":10.483500000000001,"costPerSlot":14791,"weight":0.615,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bb20d9cd4351e00334c9d8a":{"id":"5bb20d9cd4351e00334c9d8a","name":"HK 416 5.56x45 14.5 inch barrel with flip-up front sight","value":2.640833333333335,"costPerSlot":9133.333333333334,"weight":0.985,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bb20da5d4351e0035629dbf":{"id":"5bb20da5d4351e0035629dbf","name":"HK 416 5.56x45 16.5 inch barrel with flip-up front sight","value":5.606999999999999,"costPerSlot":12132,"weight":1.05,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bb20dadd4351e00367faeff":{"id":"5bb20dadd4351e00367faeff","name":"HK 416 5.56x45 20 inch barrel with flip-up front sight","value":9.835749999999997,"costPerSlot":18435.75,"weight":1.2,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5bb20dbcd4351e44f824c04e":{"id":"5bb20dbcd4351e44f824c04e","name":"AR-15 HK Extended Latch charging handle","value":9.014,"costPerSlot":11046,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bb20dcad4351e3bac1212da":{"id":"5bb20dcad4351e3bac1212da","name":"HK 416A5 low profile gas block","value":0.54,"costPerSlot":2600,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bb20de5d4351e0035629e59":{"id":"5bb20de5d4351e0035629e59","name":"HK 416 Quad Rail handguard","value":0.657,"costPerSlot":4856.5,"weight":0.399,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bb20df1d4351e00347787d5":{"id":"5bb20df1d4351e00347787d5","name":"HK 416 Quad Rail handguard with flip-up front sight","value":0.5600000000000005,"costPerSlot":4775,"weight":0.43,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bb20dfcd4351e00334c9e24":{"id":"5bb20dfcd4351e00334c9e24","name":"HK 416 Quad Rail Extended handguard","value":-1.658666666666667,"costPerSlot":4611.333333333333,"weight":0.54,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bb20e0ed4351e3bac1212dc":{"id":"5bb20e0ed4351e3bac1212dc","name":"AR-15 HK Battle Grip Beavertail pistol grip","value":7.046000000000001,"costPerSlot":9086,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bb20e18d4351e00320205d5":{"id":"5bb20e18d4351e00320205d5","name":"AR-15 HK Battle Grip pistol grip","value":10.870000000000001,"costPerSlot":12910,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bb20e49d4351e3bac1212de":{"id":"5bb20e49d4351e3bac1212de","name":"HK 416A5 flip-up rear sight","value":5.93,"costPerSlot":8000,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bb20e58d4351e00320205d7":{"id":"5bb20e58d4351e00320205d7","name":"HK 416 Enhanced Buffer Tube","value":2.6155,"costPerSlot":6696.5,"weight":0.162,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bb20e70d4351e0035629f8f":{"id":"5bb20e70d4351e0035629f8f","name":"AR-15 HK Slim Line buttstock","value":-0.0019999999999997797,"costPerSlot":4345.5,"weight":0.695,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bb2475ed4351e00853264e3":{"id":"5bb2475ed4351e00853264e3","name":"HK 416A5 5.56x45 assault rifle","value":79.55050000000001,"costPerSlot":102460,"weight":3.819,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5bbdb811d4351e45020113c7":{"id":"5bbdb811d4351e45020113c7","name":"Mosin Rifle AIM Sports Tri-Rail mount","value":4.996,"costPerSlot":9086,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bbdb83fd4351e44f824c44b":{"id":"5bbdb83fd4351e44f824c44b","name":"Mosin Rifle Tacfire Tanker Style 7.62x54R muzzle brake","value":9.705,"costPerSlot":11830,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bbdb870d4351e00367fb67d":{"id":"5bbdb870d4351e00367fb67d","name":"Mosin Rifle ATI Monte Carlo stock","value":-1.7304999999999993,"costPerSlot":6869.5,"weight":1.2,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5bbdb8bdd4351e4502011460":{"id":"5bbdb8bdd4351e4502011460","name":"AR-10 Odin Works ATLAS-7 7.62x51 muzzle brake","value":27.538,"costPerSlot":29598,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bbde409d4351e003562b036":{"id":"5bbde409d4351e003562b036","name":"Mosin Rifle AIM Sports Recoil Pad","value":14.087999999999997,"costPerSlot":16188,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bbde41ed4351e003562b038":{"id":"5bbde41ed4351e003562b038","name":"Mosin Rifle Tacfire pistol grip","value":10.63,"costPerSlot":12710,"weight":0.16,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc09a18d4351e003562b68e":{"id":"5bc09a18d4351e003562b68e","name":"Magpul MBUS Gen2 flip-up rear sight","value":7.494999999999999,"costPerSlot":9513,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc09a30d4351e00367fb7c8":{"id":"5bc09a30d4351e00367fb7c8","name":"Magpul MBUS Gen2 flip-up front sight","value":10.363000000000001,"costPerSlot":12380,"weight":0.034,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc5a351d4351e003477a414":{"id":"5bc5a351d4351e003477a414","name":"Mosin Rifle Texas Precision Products 7.62x54R muzzle brake","value":15.381,"costPerSlot":17476,"weight":0.19,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc5a35cd4351e450201232f":{"id":"5bc5a35cd4351e450201232f","name":"Mosin Rifle Witt Machine 7.62x54R muzzle brake","value":18.008,"costPerSlot":20093,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc5a372d4351e44f824d17f":{"id":"5bc5a372d4351e44f824d17f","name":"Mosin Rifle AIM Sports MNG rail mount","value":1.7110000000000003,"costPerSlot":3748,"weight":0.074,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc9b156d4351e00367fbce9":{"id":"5bc9b156d4351e00367fbce9","name":"Jar of DevilDog mayo","value":17.295,"costPerSlot":14720,"weight":0.85,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5bc9b355d4351e6d1509862a":{"id":"5bc9b355d4351e6d1509862a","name":"#FireKlean gun lube","value":34.327999999999996,"costPerSlot":36428,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc9b720d4351e450201234b":{"id":"5bc9b720d4351e450201234b","name":"Golden 1GPhone smartphone","value":42.489000000000004,"costPerSlot":44639,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc9b9ecd4351e3bac122519":{"id":"5bc9b9ecd4351e3bac122519","name":"Deadlyslob's beard oil","value":53.419,"costPerSlot":55449,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc9bc53d4351e00367fbcee":{"id":"5bc9bc53d4351e00367fbcee","name":"Golden rooster figurine","value":14.741500000000002,"costPerSlot":22641.5,"weight":3.8,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bc9bdb8d4351e003562b8a1":{"id":"5bc9bdb8d4351e003562b8a1","name":"Silver Badge","value":58.24,"costPerSlot":60290,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc9be8fd4351e00334cae6e":{"id":"5bc9be8fd4351e00334cae6e","name":"42 Signature Blend English Tea","value":25.644000000000002,"costPerSlot":27754,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bc9c049d4351e44f824d360":{"id":"5bc9c049d4351e44f824d360","name":"Battered antique book","value":27.314500000000002,"costPerSlot":31514.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bc9c1e2d4351e00367fbcf0":{"id":"5bc9c1e2d4351e00367fbcf0","name":"Antique axe","value":93.05000000000001,"costPerSlot":94600,"weight":1.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5bc9c29cd4351e003562b8a3":{"id":"5bc9c29cd4351e003562b8a3","name":"Can of sprats","value":26.825,"costPerSlot":23965,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5bc9c377d4351e3bac12251b":{"id":"5bc9c377d4351e3bac12251b","name":"Old firesteel","value":61.152,"costPerSlot":63402,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bcf0213d4351e0085327c17":{"id":"5bcf0213d4351e0085327c17","name":"HK MP7A1 stock","value":-3.0444999999999998,"costPerSlot":1055.5,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bd06f5d86f77427101ad47c":{"id":"5bd06f5d86f77427101ad47c","name":"Slender mask","value":18.965,"costPerSlot":20015,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5bd0716d86f774171822ef4b":{"id":"5bd0716d86f774171822ef4b","name":"Misha Mayorov mask","value":13.95,"costPerSlot":15000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5bd071d786f7747e707b93a3":{"id":"5bd071d786f7747e707b93a3","name":"Jason mask","value":23.376,"costPerSlot":24426,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5bd073a586f7747e6f135799":{"id":"5bd073a586f7747e6f135799","name":"Fake mustache","value":25.654,"costPerSlot":22689,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5bd073c986f7747f627e796c":{"id":"5bd073c986f7747f627e796c","name":"Kotton beanie","value":26.906,"costPerSlot":24006,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5bd70322209c4d00d7167b8f":{"id":"5bd70322209c4d00d7167b8f","name":"HK MP7A2 4.6x30 submachine gun","value":98.525,"costPerSlot":100640,"weight":2.2300000000000004,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5bd704e7209c4d00d7167c31":{"id":"5bd704e7209c4d00d7167c31","name":"HK MP7A2 stock","value":-3.045,"costPerSlot":1055,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5be4038986f774527d3fae60":{"id":"5be4038986f774527d3fae60","name":"Interchange plan map","value":10.7195,"costPerSlot":12742,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bead2e00db834001c062938":{"id":"5bead2e00db834001c062938","name":"MPL-50 entrenching tool","value":1.7389999999999999,"costPerSlot":5139,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5bed61680db834001d2c45ab":{"id":"5bed61680db834001d2c45ab","name":"AK-12 5.45x39 30-round magazine","value":1.5735000000000001,"costPerSlot":5668.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bed625c0db834001c062946":{"id":"5bed625c0db834001c062946","name":"RPK-16 5.45x39 95-round drum magazine","value":3.228250000000001,"costPerSlot":9568.25,"weight":0.68,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5beec1bd0db834001e6006f3":{"id":"5beec1bd0db834001e6006f3","name":"RPK-16 5.45x39 15 inch barrel","value":1.83,"costPerSlot":6100,"weight":0.54,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5beec2820db834001b095426":{"id":"5beec2820db834001b095426","name":"RPK-16 5.45x39 22 inch barrel","value":10.370000000000001,"costPerSlot":16695,"weight":0.65,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5beec3420db834001b095429":{"id":"5beec3420db834001b095429","name":"RPK-16 5.45x39 muzzle brake-compensator","value":4.597,"costPerSlot":6642,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5beec3e30db8340019619424":{"id":"5beec3e30db8340019619424","name":"RPK-16 handguard","value":-0.2084999999999999,"costPerSlot":3875,"weight":0.167,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5beec8b20db834001961942a":{"id":"5beec8b20db834001961942a","name":"RPK-16 buffer tube","value":6.981,"costPerSlot":11052,"weight":0.142,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5beec8c20db834001d2c465c":{"id":"5beec8c20db834001d2c465c","name":"AK-12 stock","value":0.9245000000000001,"costPerSlot":4998.5,"weight":0.148,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5beec8ea0db834001a6f9dbf":{"id":"5beec8ea0db834001a6f9dbf","name":"AK-12 pistol grip","value":9.917,"costPerSlot":11942,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5beec91a0db834001961942d":{"id":"5beec91a0db834001961942d","name":"RPK-16 dust cover","value":-0.5074999999999998,"costPerSlot":3600,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5beec9450db83400970084fd":{"id":"5beec9450db83400970084fd","name":"RPK-16 rear sight base","value":-1.225,"costPerSlot":800,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5beecbb80db834001d2c465e":{"id":"5beecbb80db834001d2c465e","name":"RPK-16 handguard rail","value":11.8315,"costPerSlot":13854,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5beed0f50db834001c062b12":{"id":"5beed0f50db834001c062b12","name":"RPK-16 5.45x39 light machine gun","value":59.3575,"costPerSlot":69866,"weight":3.0169999999999995,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5bf3e03b0db834001d2c4a9c":{"id":"5bf3e03b0db834001d2c4a9c","name":"Kalashnikov AK-74 5.45x39 assault rifle","value":18.78,"costPerSlot":37385,"weight":3.21,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5bf3e0490db83400196199af":{"id":"5bf3e0490db83400196199af","name":"Kalashnikov AKS-74 5.45x39 assault rifle","value":21.427,"costPerSlot":35994,"weight":3.1339999999999995,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5bf3f59f0db834001a6fa060":{"id":"5bf3f59f0db834001a6fa060","name":"RPK-16 rear sight","value":-1.2125,"costPerSlot":800,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bfd297f0db834001a669119":{"id":"5bfd297f0db834001a669119","name":"Mosin 7.62x54R bolt-action rifle (Infantry)","value":26.82,"costPerSlot":40065,"weight":4.49,"size":7,"gridSize":0,"maxDim":7,"armorClass":0,"parentWeighting":3},"5bfd35380db83400232fe5cc":{"id":"5bfd35380db83400232fe5cc","name":"Mosin Rifle Infantry stock","value":-8.36,"costPerSlot":540,"weight":1.8,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5bfd36290db834001966869a":{"id":"5bfd36290db834001966869a","name":"Mosin Rifle sawed-off sniper stock","value":42.2415,"costPerSlot":46666.5,"weight":0.85,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfd36ad0db834001c38ef66":{"id":"5bfd36ad0db834001c38ef66","name":"Mosin Rifle sawed-off stock","value":6.3134999999999994,"costPerSlot":10713.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfd37c80db834001d23e842":{"id":"5bfd37c80db834001d23e842","name":"Mosin Rifle sniper carbine stock","value":-5.581666666666667,"costPerSlot":1193.3333333333333,"weight":1.55,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bfd384c0db834001a6691d3":{"id":"5bfd384c0db834001a6691d3","name":"Mosin Rifle carbine stock","value":-5.693333333333333,"costPerSlot":1106.6666666666667,"weight":1.6,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bfd4c980db834001b73449d":{"id":"5bfd4c980db834001b73449d","name":"Mosin Rifle carbine rear sight","value":-1.275,"costPerSlot":800,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bfd4cbe0db834001b73449f":{"id":"5bfd4cbe0db834001b73449f","name":"Mosin Carbine 7.62x54R 514mm barrel","value":-3.417,"costPerSlot":3333,"weight":1.5,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bfd4cc90db834001d23e846":{"id":"5bfd4cc90db834001d23e846","name":"Mosin Rifle 7.62x54R sawed-off 200mm barrel","value":-3.3,"costPerSlot":1050,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfd4cd60db834001c38f095":{"id":"5bfd4cd60db834001c38f095","name":"Mosin Rifle 7.62x54R sawed-off 220mm threaded barrel","value":2.1064999999999996,"costPerSlot":6556.5,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfe7fb30db8340018089fed":{"id":"5bfe7fb30db8340018089fed","name":"MP-133/153 Taktika Tula 12003 stock adapter","value":0.18000000000000016,"costPerSlot":2200,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bfe86a20db834001d23e8f7":{"id":"5bfe86a20db834001d23e8f7","name":"M870 FAB Defense AGR-870 pistol grip","value":10.200000000000001,"costPerSlot":12265,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bfe86bd0db83400232fe959":{"id":"5bfe86bd0db83400232fe959","name":"FAB Defense protection cap for AGR-870","value":-1.7445,"costPerSlot":258,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bfe86df0db834001b734685":{"id":"5bfe86df0db834001b734685","name":"AR-15 FAB Defense GLR-16-S stock","value":3.5105000000000004,"costPerSlot":7648.5,"weight":0.276,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfe89510db834001808a127":{"id":"5bfe89510db834001808a127","name":"FAB Defense buffer tube for AGR-870","value":-3.5460000000000003,"costPerSlot":535,"weight":0.162,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfea6e90db834001b7347f3":{"id":"5bfea6e90db834001b7347f3","name":"Remington Model 700 7.62x51 bolt-action sniper rifle","value":42.735,"costPerSlot":55765,"weight":4.06,"size":7,"gridSize":0,"maxDim":7,"armorClass":0,"parentWeighting":3},"5bfea7ad0db834001c38f1ee":{"id":"5bfea7ad0db834001c38f1ee","name":"M700 7.62x51 Wyatt's Outdoor 5-round magazine","value":5.807,"costPerSlot":8057,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bfeaa0f0db834001b734927":{"id":"5bfeaa0f0db834001b734927","name":"M700 7.62x51 Wyatt's Outdoor 10-round magazine","value":1.6180000000000003,"costPerSlot":5868,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfeb32b0db834001a6694d9":{"id":"5bfeb32b0db834001a6694d9","name":"M700 Hogue Overmolded Ghillie stock","value":2.181333333333333,"costPerSlot":9081.333333333334,"weight":1.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bfebc250db834001a6694e1":{"id":"5bfebc250db834001a6694e1","name":"M700 7.62x51 26 inch barrel","value":4.318750000000001,"costPerSlot":13043.75,"weight":1.45,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5bfebc320db8340019668d79":{"id":"5bfebc320db8340019668d79","name":"M700 7.62x51 20 inch threaded barrel","value":5.111666666666666,"costPerSlot":11711.666666666666,"weight":1.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5bfebc530db834001d23eb65":{"id":"5bfebc530db834001d23eb65","name":"M700 extended multi-slot Weaver rail base","value":1.0099999999999998,"costPerSlot":5055,"weight":0.09,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bfebc5e0db834001a6694e5":{"id":"5bfebc5e0db834001a6694e5","name":"M700 30mm integral ring scope mount","value":2.9479999999999995,"costPerSlot":7071,"weight":0.246,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bffcf7a0db83400232fea79":{"id":"5bffcf7a0db83400232fea79","name":"TT PM-Laser TT-206 side grips with laser sight","value":1.4450000000000003,"costPerSlot":3490,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bffd7ed0db834001d23ebf9":{"id":"5bffd7ed0db834001d23ebf9","name":"TT PM-Laser DTK-TT muzzle brake-compensator","value":7.529999999999999,"costPerSlot":9548,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bffdc370db834001d23eca8":{"id":"5bffdc370db834001d23eca8","name":"6Kh5 Bayonet","value":26.9285,"costPerSlot":28040,"weight":0.223,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5bffdd7e0db834001b734a1a":{"id":"5bffdd7e0db834001b734a1a","name":"Miller Bros. Blades M-2 Tactical Sword","value":950.3570000000001,"costPerSlot":954007,"weight":1.3,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5bffe7930db834001b734a39":{"id":"5bffe7930db834001b734a39","name":"Crash Axe","value":1547.304,"costPerSlot":1551004,"weight":1.4,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5bffe7c50db834001d23ece1":{"id":"5bffe7c50db834001d23ece1","name":"P226 Axelson Tactical MK25 pistol slide","value":9.118,"costPerSlot":13238,"weight":0.24,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5bffec120db834001c38f5fa":{"id":"5bffec120db834001c38f5fa","name":"P226 Axelson Tactical MK25 pistol grip","value":2.9539999999999997,"costPerSlot":4999,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5bffef760db8340019668fe4":{"id":"5bffef760db8340019668fe4","name":"P226 Hogue G10 Chain Link pistol grip","value":6.255000000000001,"costPerSlot":8300,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0000c00db834001a6697fc":{"id":"5c0000c00db834001a6697fc","name":"HK MP5 Navy Style 3-lug suppressor adapter","value":15.499500000000001,"costPerSlot":17545,"weight":0.091,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0006470db834001a6697fe":{"id":"5c0006470db834001a6697fe","name":"P226 Emperor Scorpion pistol grip","value":0.40500000000000025,"costPerSlot":2450,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c00076d0db834001d23ee1f":{"id":"5c00076d0db834001d23ee1f","name":"P226 Stainless Elite Wooden pistol grip","value":18.746000000000002,"costPerSlot":20786,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0009510db834001966907f":{"id":"5c0009510db834001966907f","name":"P226 Stainless Elite pistol slide","value":5.115500000000001,"costPerSlot":9225.5,"weight":0.22,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0102aa0db834001b734ba1":{"id":"5c0102aa0db834001b734ba1","name":"Remington RAHG 2 inch rail","value":14.236,"costPerSlot":16261,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0102b20db834001d23eebc":{"id":"5c0102b20db834001d23eebc","name":"Remington RAHG 4 inch rail","value":23.6,"costPerSlot":25635,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c010a700db834001d23ef5d":{"id":"5c010a700db834001d23ef5d","name":"P226 Emperor Scorpion pistol slide","value":0.13999999999999968,"costPerSlot":4250,"weight":0.22,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c010e350db83400232feec7":{"id":"5c010e350db83400232feec7","name":"SP-8 Survival Machete","value":74.1825,"costPerSlot":77500,"weight":0.635,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5c0111ab0db834001966914d":{"id":"5c0111ab0db834001966914d","name":"ME Cylinder 12ga muzzle adapter","value":7.0969999999999995,"costPerSlot":9157,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0125fc0db834001a669aa3":{"id":"5c0125fc0db834001a669aa3","name":"P226 Legion full size pistol slide","value":3.2135000000000007,"costPerSlot":7313.5,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0126f40db834002a125382":{"id":"5c0126f40db834002a125382","name":"Red Rebel ice pick","value":1900.942,"costPerSlot":1904267,"weight":0.65,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5c012ffc0db834001d23f03f":{"id":"5c012ffc0db834001d23f03f","name":"Camper axe","value":37.88,"costPerSlot":41200,"weight":0.64,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5c0505e00db834001b735073":{"id":"5c0505e00db834001b735073","name":"Valday PK-120 (1P87) holographic sight","value":17.076500000000003,"costPerSlot":19225,"weight":0.297,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0517910db83400232ffee5":{"id":"5c0517910db83400232ffee5","name":"Valday PS-320 1/6x scope","value":20.963,"costPerSlot":25248,"weight":0.57,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c05293e0db83400232fff80":{"id":"5c05293e0db83400232fff80","name":"Trijicon ACOG TA01NSN 4x32 scope (Black)","value":9.6335,"costPerSlot":13831.5,"weight":0.396,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c05295e0db834001a66acbb":{"id":"5c05295e0db834001a66acbb","name":"Trijicon ACOG backup rear sight","value":0.383,"costPerSlot":2400,"weight":0.034,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c052a900db834001a66acbd":{"id":"5c052a900db834001a66acbd","name":"Trijicon ACOG TA01NSN 4x32 scope (Tan)","value":9.2445,"costPerSlot":13442.5,"weight":0.396,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c052cea86f7746b2101e8d8":{"id":"5c052cea86f7746b2101e8d8","name":"Plastic suitcase","value":9.200000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":9,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c052e6986f7746b207bc3c9":{"id":"5c052e6986f7746b207bc3c9","name":"Portable defibrillator","value":221.85,"costPerSlot":224600,"weight":1.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c052f6886f7746b1e3db148":{"id":"5c052f6886f7746b1e3db148","name":"Military COFDM Wireless Signal Transmitter","value":67.75,"costPerSlot":72750,"weight":2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c052fb986f7746b2101e909":{"id":"5c052fb986f7746b2101e909","name":"UHF RFID Reader","value":81.461,"costPerSlot":83711,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c05300686f7746dce784e5d":{"id":"5c05300686f7746dce784e5d","name":"VPX Flash Storage Module","value":150,"costPerSlot":152400,"weight":0.8,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c05308086f7746b2101e90b":{"id":"5c05308086f7746b2101e90b","name":"Virtex programmable processor","value":117.85,"costPerSlot":120000,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0530ee86f774697952d952":{"id":"5c0530ee86f774697952d952","name":"LEDX Skin Transilluminator","value":967.9585,"costPerSlot":970000,"weight":0.083,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c05413a0db834001c390617":{"id":"5c05413a0db834001c390617","name":"AR-15 5.56x45 HK Steel Maritime STANAG 30-round magazine","value":-2.3499999999999996,"costPerSlot":1810,"weight":0.32,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0548ae0db834001966a3c2":{"id":"5c0548ae0db834001966a3c2","name":"SLR-106/AK 5.56x45 Circle 10 30-round magazine","value":6.317500000000001,"costPerSlot":10542.5,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0558060db834001b735271":{"id":"5c0558060db834001b735271","name":"L3Harris GPNVG-18 night vision goggles","value":68.062,"costPerSlot":72502,"weight":0.88,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c064c400db834001d23f468":{"id":"5c064c400db834001d23f468","name":"LaRue LT101 QD Tactical Picatinny Riser mount","value":9.15,"costPerSlot":11205,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c06595c0db834001a66af6c":{"id":"5c06595c0db834001a66af6c","name":"L3Harris LA-5B/PEQ tactical device","value":17.614,"costPerSlot":19719,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c066e3a0db834001b7353f0":{"id":"5c066e3a0db834001b7353f0","name":"Armasight N-15 night vision goggles","value":33.0225,"costPerSlot":37400,"weight":0.755,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c066ef40db834001966a595":{"id":"5c066ef40db834001966a595","name":"Armasight NVG head strap","value":56.492999999999995,"costPerSlot":57693,"weight":0.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c0672ed0db834001b7353f3":{"id":"5c0672ed0db834001b7353f3","name":"PP-19-01 Vityaz 9x19 PUFGUN SG-919 30 30-round magazine","value":-2.3795,"costPerSlot":1675,"weight":0.109,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0673fb0db8340023300271":{"id":"5c0673fb0db8340023300271","name":"PP-19-01 Vityaz 9x19 PUFGUN SG-919 20 20-round magazine","value":-3.0075000000000003,"costPerSlot":1035,"weight":0.085,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c06779c86f77426e00dd782":{"id":"5c06779c86f77426e00dd782","name":"Bundle of wires","value":9.854000000000001,"costPerSlot":11979,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c06782b86f77426df5407d2":{"id":"5c06782b86f77426df5407d2","name":"Capacitors","value":6.975,"costPerSlot":9025,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0684e50db834002a12585a":{"id":"5c0684e50db834002a12585a","name":"TT Hogue-like rubber grip","value":0.665,"costPerSlot":2700,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0695860db834001b735461":{"id":"5c0695860db834001b735461","name":"PNV-10T dovetail adapter","value":13.155000000000001,"costPerSlot":15195,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0696830db834001d23f5da":{"id":"5c0696830db834001d23f5da","name":"PNV-10T night vision goggles","value":14.223000000000003,"costPerSlot":18623,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c06c6a80db834001b735491":{"id":"5c06c6a80db834001b735491","name":"SSh-68 steel helmet (Olive Drab)","value":19.706,"costPerSlot":21456,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c079ec50db834001966a706":{"id":"5c079ec50db834001966a706","name":"TT Razor Arms rubber grip","value":2.87,"costPerSlot":4900,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c079ed60db834001a66b372":{"id":"5c079ed60db834001a66b372","name":"TT DLP Tactical Precision Laser Sight","value":2.5570000000000004,"costPerSlot":4600,"weight":0.086,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c07a8770db8340023300450":{"id":"5c07a8770db8340023300450","name":"AR-15 Noveske Gen.3 5.56x45 upper receiver","value":17.631999999999998,"costPerSlot":21738,"weight":0.212,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c07b36c0db834002a1259e9":{"id":"5c07b36c0db834002a1259e9","name":"P226 Meprolight TRU-DOT Night front sight","value":-0.5349999999999999,"costPerSlot":1500,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c07b3850db834002330045b":{"id":"5c07b3850db834002330045b","name":"P226 Meprolight TRU-DOT Night rear sight","value":-0.6399999999999999,"costPerSlot":1400,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c07c5ed0db834001b73571c":{"id":"5c07c5ed0db834001b73571c","name":"HK MP5 Noveske-style 9x19 muzzle brake-compensator","value":33.058,"costPerSlot":35248,"weight":0.38,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c07c60e0db834002330051f":{"id":"5c07c60e0db834002330051f","name":"ADAR 2-15 5.56x45 carbine","value":28.1055,"costPerSlot":44559,"weight":2.907,"size":12,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5c07c9660db834001a66b588":{"id":"5c07c9660db834001a66b588","name":"HK MP5 End Cap stock","value":0.5300000000000002,"costPerSlot":2620,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c07dd120db834001c39092d":{"id":"5c07dd120db834001c39092d","name":"EOTech HHS-1 hybrid sight","value":21.282500000000002,"costPerSlot":25600,"weight":0.635,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c07df7f0db834001b73588a":{"id":"5c07df7f0db834001b73588a","name":"Freeman crowbar","value":14.25,"costPerSlot":18200,"weight":1.9,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5c08f87c0db8340019124324":{"id":"5c08f87c0db8340019124324","name":"ShPM Firefighter helmet","value":9.756,"costPerSlot":11506,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c0919b50db834001b7ce3b9":{"id":"5c0919b50db834001b7ce3b9","name":"Maska-1SCh face shield (Olive Drab)","value":91.575,"costPerSlot":36125,"weight":1.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"5c091a4e0db834001d5addc8":{"id":"5c091a4e0db834001d5addc8","name":"Maska-1SCh bulletproof helmet (Olive Drab)","value":64.86500000000001,"costPerSlot":67165,"weight":2.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c093ca986f7740a1867ab12":{"id":"5c093ca986f7740a1867ab12","name":"Secure container Kappa","value":4902.6,"costPerSlot":4900000,"weight":2,"size":9,"gridSize":12,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c093db286f7740a1b2617e3":{"id":"5c093db286f7740a1b2617e3","name":"Mr. Holodilnick thermal bag","value":143.17222222222222,"costPerSlot":77972.22222222222,"weight":12,"size":9,"gridSize":64,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c093e3486f77430cb02e593":{"id":"5c093e3486f77430cb02e593","name":"Dogtag case","value":437.9,"costPerSlot":310000,"weight":0.2,"size":1,"gridSize":100,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0a2cec0db834001b7ce47d":{"id":"5c0a2cec0db834001b7ce47d","name":"EOTech HHS-1 hybrid sight (Tan)","value":26.282500000000002,"costPerSlot":30600,"weight":0.635,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0a596086f7747bef5731c2":{"id":"5c0a596086f7747bef5731c2","name":"Stash","value":3897.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":3000,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0a5a5986f77476aa30ae64":{"id":"5c0a5a5986f77476aa30ae64","name":"DEVELOPER secure container","value":767.5,"costPerSlot":0,"weight":1,"size":9,"gridSize":600,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c0a5f6c86f774753654890e":{"id":"5c0a5f6c86f774753654890e","name":"Lucky DEVELOPER junkbox","value":284.5,"costPerSlot":0,"weight":15,"size":16,"gridSize":240,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c0a794586f77461c458f892":{"id":"5c0a794586f77461c458f892","name":"Secure container Boss","value":455.5,"costPerSlot":0,"weight":1,"size":9,"gridSize":360,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c0a840b86f7742ffa4f2482":{"id":"5c0a840b86f7742ffa4f2482","name":"T H I C C item case","value":429.9666666666667,"costPerSlot":206666.66666666666,"weight":23,"size":15,"gridSize":196,"maxDim":5,"armorClass":0,"parentWeighting":0},"5c0d2727d174af02a012cf58":{"id":"5c0d2727d174af02a012cf58","name":"PSh-97 DJETA riot helmet","value":10.9,"costPerSlot":12550,"weight":1.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c0d32fcd174af02a1659c75":{"id":"5c0d32fcd174af02a1659c75","name":"Pyramex Proximity safety glasses","value":13.095,"costPerSlot":12108,"weight":0.026,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c0d56a986f774449d5de529":{"id":"5c0d56a986f774449d5de529","name":"9x19mm RIP","value":8.6385,"costPerSlot":645,"weight":0.013,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c0d591486f7744c505b416f":{"id":"5c0d591486f7744c505b416f","name":"12/70 RIP","value":8.738,"costPerSlot":758,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c0d5ae286f7741e46554302":{"id":"5c0d5ae286f7741e46554302","name":"5.56x45mm Warmageddon","value":8.1765,"costPerSlot":182,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c0d5e4486f77478390952fe":{"id":"5c0d5e4486f77478390952fe","name":"5.45x39mm PPBS gs Igolnik","value":9.2345,"costPerSlot":1240,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c0d668f86f7747ccb7f13b2":{"id":"5c0d668f86f7747ccb7f13b2","name":"9x39mm SPP gs","value":8.5755,"costPerSlot":587,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c0d688c86f77413ae3407b2":{"id":"5c0d688c86f77413ae3407b2","name":"9x39mm BP gs","value":9.288499999999999,"costPerSlot":1300,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c0e2f26d174af02a9625114":{"id":"5c0e2f26d174af02a9625114","name":"AR-15 ADAR 2-15 5.56x45 upper receiver","value":2.3525,"costPerSlot":6487.5,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0e2f5cd174af02a012cfc9":{"id":"5c0e2f5cd174af02a012cfc9","name":"AR-15 ADAR 2-15 wooden handguard","value":-3.3925,"costPerSlot":800,"weight":0.385,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0e2f94d174af029f650d56":{"id":"5c0e2f94d174af029f650d56","name":"AR-15 5.56x45 Molot Arms 16 inch barrel","value":1.012666666666667,"costPerSlot":7309.666666666667,"weight":0.594,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c0e2ff6d174af02a1659d4a":{"id":"5c0e2ff6d174af02a1659d4a","name":"AR-15 ADAR 2-15 wooden stock","value":-1.7880000000000003,"costPerSlot":2559.5,"weight":0.695,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0e3eb886f7742015526062":{"id":"5c0e3eb886f7742015526062","name":"6B5-16 Zh-86 Uley armored rig (Khaki)","value":51.88,"costPerSlot":57430,"weight":7.1,"size":12,"gridSize":10,"maxDim":4,"armorClass":0,"parentWeighting":1},"5c0e446786f7742013381639":{"id":"5c0e446786f7742013381639","name":"6B5-15 Zh-86 Uley armored rig (Flora)","value":83.25000000000001,"costPerSlot":91350,"weight":12.2,"size":12,"gridSize":10,"maxDim":4,"armorClass":0,"parentWeighting":1},"5c0e51be86f774598e797894":{"id":"5c0e51be86f774598e797894","name":"6B13 assault armor (Flora)","value":28.635000000000005,"costPerSlot":46035,"weight":2.8,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c0e530286f7747fa1419862":{"id":"5c0e530286f7747fa1419862","name":"Propital regenerative stimulant injector","value":45.078,"costPerSlot":39103,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5c0e531286f7747fa54205c2":{"id":"5c0e531286f7747fa54205c2","name":"SJ1 TGLabs combat stimulant injector","value":56.171,"costPerSlot":50196,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5c0e531d86f7747fa23f4d42":{"id":"5c0e531d86f7747fa23f4d42","name":"SJ6 TGLabs combat stimulant injector","value":142.597,"costPerSlot":136622,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5c0e533786f7747fa23f4d47":{"id":"5c0e533786f7747fa23f4d47","name":"Zagustin hemostatic drug injector","value":48.911,"costPerSlot":42936,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5c0e534186f7747fa1419867":{"id":"5c0e534186f7747fa1419867","name":"eTG-change regenerative stimulant injector","value":107.917,"costPerSlot":101942,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5c0e53c886f7747fa54205c7":{"id":"5c0e53c886f7747fa54205c7","name":"6B13 assault armor (EMR)","value":31.803000000000004,"costPerSlot":49203,"weight":2.8,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c0e541586f7747fa54205c9":{"id":"5c0e541586f7747fa54205c9","name":"6B13 M assault armor (Killa Edition)","value":130.567,"costPerSlot":147967,"weight":2.8,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c0e57ba86f7747fa141986d":{"id":"5c0e57ba86f7747fa141986d","name":"6B23-2 body armor (Mountain Flora)","value":47.245,"costPerSlot":64895,"weight":3.3,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c0e5bab86f77461f55ed1f3":{"id":"5c0e5bab86f77461f55ed1f3","name":"6B23-1 body armor (EMR)","value":30.118000000000002,"costPerSlot":47768,"weight":3.3,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c0e5edb86f77461f55ed1f7":{"id":"5c0e5edb86f77461f55ed1f7","name":"BNTI Zhuk body armor (Press)","value":30.433,"costPerSlot":43618,"weight":2.37,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c0e625a86f7742d77340f62":{"id":"5c0e625a86f7742d77340f62","name":"BNTI Zhuk body armor (EMR)","value":101.17,"costPerSlot":114655,"weight":2.97,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c0e655586f774045612eeb2":{"id":"5c0e655586f774045612eeb2","name":"HighCom Trooper TFO body armor (MultiCam)","value":39.721000000000004,"costPerSlot":53771,"weight":4.1,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c0e66e2d174af02a96252f4":{"id":"5c0e66e2d174af02a96252f4","name":"Ops-Core SLAAP armor helmet plate (Tan)","value":101.1625,"costPerSlot":55812.5,"weight":1.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"5c0e6a1586f77404597b4965":{"id":"5c0e6a1586f77404597b4965","name":"Poyas-A + Poyas-B gear rig","value":53.975,"costPerSlot":41325,"weight":1.7,"size":16,"gridSize":25,"maxDim":4,"armorClass":0,"parentWeighting":1},"5c0e722886f7740458316a57":{"id":"5c0e722886f7740458316a57","name":"ANA Tactical M1 plate carrier (Olive Drab)","value":80.605,"costPerSlot":75080,"weight":2.95,"size":16,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":1},"5c0e746986f7741453628fe5":{"id":"5c0e746986f7741453628fe5","name":"WARTECH TV-110 plate carrier (Coyote)","value":125.453,"costPerSlot":112303,"weight":3.5,"size":12,"gridSize":23,"maxDim":4,"armorClass":0,"parentWeighting":1},"5c0e774286f77468413cc5b2":{"id":"5c0e774286f77468413cc5b2","name":"Mystery Ranch Blackjack 50 backpack (MultiCam)","value":139.66750000000002,"costPerSlot":126700,"weight":3.265,"size":35,"gridSize":42,"maxDim":7,"armorClass":0,"parentWeighting":2},"5c0e805e86f774683f3dd637":{"id":"5c0e805e86f774683f3dd637","name":"3V Gear Paratus 3-Day Operator's Tactical backpack (Foliage Grey)","value":63.394999999999996,"costPerSlot":58900,"weight":2.01,"size":35,"gridSize":35,"maxDim":7,"armorClass":0,"parentWeighting":2},"5c0e842486f77443a74d2976":{"id":"5c0e842486f77443a74d2976","name":"Maska-1SCh face shield (Killa Edition)","value":101.545,"costPerSlot":46095,"weight":1.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"5c0e874186f7745dc7616606":{"id":"5c0e874186f7745dc7616606","name":"Maska-1SCh bulletproof helmet (Killa Edition)","value":71.376,"costPerSlot":73676,"weight":2.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c0e9f2c86f77432297fe0a3":{"id":"5c0e9f2c86f77432297fe0a3","name":"BlackHawk! Commando chest harness (Black)","value":33.979,"costPerSlot":28854,"weight":1.35,"size":12,"gridSize":16,"maxDim":4,"armorClass":0,"parentWeighting":1},"5c0fa877d174af02a012e1cf":{"id":"5c0fa877d174af02a012e1cf","name":"Aquamari water bottle with filter","value":23.1765,"costPerSlot":22476.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c0faeddd174af02a962601f":{"id":"5c0faeddd174af02a962601f","name":"AR-15 ADAR 2-15 buffer tube","value":-2.0955,"costPerSlot":1999.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c0faf68d174af02a96260b8":{"id":"5c0faf68d174af02a96260b8","name":"AR-15 ADAR 2-15 charging handle","value":-1.4165,"costPerSlot":603,"weight":0.039,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c0fafb6d174af02a96260ba":{"id":"5c0fafb6d174af02a96260ba","name":"AR-15 ADAR 2-15 5.56x45 flash hider","value":5.468,"costPerSlot":7500,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c10c8fd86f7743d7d706df3":{"id":"5c10c8fd86f7743d7d706df3","name":"Adrenaline injector","value":37.435,"costPerSlot":31460,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5c11046cd174af02a012e42b":{"id":"5c11046cd174af02a012e42b","name":"PVS-7 Wilcox Adapter","value":22.767,"costPerSlot":24802,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c110624d174af029e69734c":{"id":"5c110624d174af029e69734c","name":"T-7 Thermal Goggles with a Night Vision mount","value":6131.4555,"costPerSlot":6135915.5,"weight":0.92,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c11279ad174af029d64592b":{"id":"5c11279ad174af029d64592b","name":"5.56x45mm Warmageddon ammo pack (20 pcs)","value":1.6350000000000002,"costPerSlot":3640,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1127bdd174af44217ab8b9":{"id":"5c1127bdd174af44217ab8b9","name":"9x19mm RIP ammo pack (20 pcs)","value":10.895,"costPerSlot":12900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1127d0d174af29be75cf68":{"id":"5c1127d0d174af29be75cf68","name":"12/70 RIP ammo pack (5 pcs)","value":1.7850000000000001,"costPerSlot":3790,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1260dc86f7746b106e8748":{"id":"5c1260dc86f7746b106e8748","name":"9x39mm BP gs ammo pack (8 pcs)","value":8.39,"costPerSlot":10400,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c12613b86f7743bbe2c3f76":{"id":"5c12613b86f7743bbe2c3f76","name":"Intelligence folder","value":121.46700000000001,"costPerSlot":125582,"weight":0.23,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c12619186f7743f871c8a32":{"id":"5c12619186f7743f871c8a32","name":"9x39mm SPP gs ammo pack (8 pcs)","value":2.686,"costPerSlot":4696,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c12620d86f7743f8b198b72":{"id":"5c12620d86f7743f8b198b72","name":"Tetriz portable game console","value":113.745,"costPerSlot":117810,"weight":0.13,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c1262a286f7743f8a69aab2":{"id":"5c1262a286f7743f8a69aab2","name":"5.45x39mm PPBS gs Igolnik ammo pack (30 pcs)","value":35.1925,"costPerSlot":37200,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1265fc86f7743f896a21c2":{"id":"5c1265fc86f7743f896a21c2","name":"Broken GPhone X smartphone","value":29.85,"costPerSlot":32000,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1267ee86f77416ec610f72":{"id":"5c1267ee86f77416ec610f72","name":"Chain with Prokill medallion","value":91.534,"costPerSlot":93584,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c12688486f77426843c7d32":{"id":"5c12688486f77426843c7d32","name":"Paracord","value":29.521,"costPerSlot":33696,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c127c4486f7745625356c13":{"id":"5c127c4486f7745625356c13","name":"Magazine case","value":91.61666666666667,"costPerSlot":39916.666666666664,"weight":6,"size":6,"gridSize":49,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c13cd2486f774072c757944":{"id":"5c13cd2486f774072c757944","name":"Soap","value":10.827000000000002,"costPerSlot":12867,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c13cef886f774072e618e82":{"id":"5c13cef886f774072e618e82","name":"Toilet paper","value":11.018,"costPerSlot":13053,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c165d832e2216398b5a7e36":{"id":"5c165d832e2216398b5a7e36","name":"Peltor Tactical Sport headset","value":9.825,"costPerSlot":11125,"weight":0.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c17664f2e2216398b5a7e3c":{"id":"5c17664f2e2216398b5a7e3c","name":"AK Vltor CMRD KeyMod handguard","value":16.2195,"costPerSlot":20418,"weight":0.397,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c1780312e221602b66cc189":{"id":"5c1780312e221602b66cc189","name":"KAC Folding rear sight","value":22.418000000000003,"costPerSlot":24458,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c17804b2e2216152006c02f":{"id":"5c17804b2e2216152006c02f","name":"KAC Folding front sight","value":6.920999999999999,"costPerSlot":8956,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c178a942e22164bef5ceca3":{"id":"5c178a942e22164bef5ceca3","name":"Crye Precision AirFrame Chops","value":47.817750000000004,"costPerSlot":24542.75,"weight":1.45,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5c1793902e221602b21d3de2":{"id":"5c1793902e221602b21d3de2","name":"Crye Precision AirFrame Ears","value":35.43125,"costPerSlot":12031.25,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5c17a7ed2e2216152142459c":{"id":"5c17a7ed2e2216152142459c","name":"Crye Precision AirFrame helmet (Tan)","value":2.9330000000000003,"costPerSlot":4373,"weight":0.88,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c18b90d2e2216152142466b":{"id":"5c18b90d2e2216152142466b","name":"Magpul MBUS Gen2 flip-up front sight (FDE)","value":10.959000000000001,"costPerSlot":12976,"weight":0.034,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c18b9192e2216398b5a8104":{"id":"5c18b9192e2216398b5a8104","name":"Magpul MBUS Gen2 flip-up rear sight (FDE)","value":12.137,"costPerSlot":14155,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1a1cc52e221602b3136e3d":{"id":"5c1a1cc52e221602b3136e3d","name":"Oakley SI M Frame safety glasses","value":19.482000000000003,"costPerSlot":18498,"weight":0.032,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c1a1e3f2e221602b66cc4c2":{"id":"5c1a1e3f2e221602b66cc4c2","name":"Fake white beard","value":42.645,"costPerSlot":41695,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5c1bc4812e22164bef5cfde7":{"id":"5c1bc4812e22164bef5cfde7","name":"Zenit RK-0 tactical foregrip","value":11.908,"costPerSlot":13977,"weight":0.138,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1bc5612e221602b5429350":{"id":"5c1bc5612e221602b5429350","name":"Zenit RK-1 tactical foregrip","value":29.347,"costPerSlot":31432,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1bc5af2e221602b412949b":{"id":"5c1bc5af2e221602b412949b","name":"Zenit RK-2 tactical foregrip","value":25.875999999999998,"costPerSlot":27976,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1bc5fb2e221602b1779b32":{"id":"5c1bc5fb2e221602b1779b32","name":"Zenit RK-4 tactical foregrip","value":12.2575,"costPerSlot":14321,"weight":0.127,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1bc7432e221602b412949d":{"id":"5c1bc7432e221602b412949d","name":"Zenit RK-5 tactical foregrip","value":12.441500000000001,"costPerSlot":14505,"weight":0.127,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1bc7752e221602b1779b34":{"id":"5c1bc7752e221602b1779b34","name":"Zenit RK-6 tactical foregrip","value":6.125,"costPerSlot":8175,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1cd46f2e22164bef5cfedb":{"id":"5c1cd46f2e22164bef5cfedb","name":"Zenit RK-1 tactical foregrip on B-25U mount","value":67.973,"costPerSlot":70063,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1cdd302e221602b3137250":{"id":"5c1cdd302e221602b3137250","name":"Kiba Arms Short Mount sight adapter","value":11.327,"costPerSlot":13382,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1cdd512e22161b267d91ae":{"id":"5c1cdd512e22161b267d91ae","name":"Kiba Arms Short Prism 2.5x scope","value":4.724500000000001,"costPerSlot":8885.5,"weight":0.322,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c1d0c5f86f7744bb2683cf0":{"id":"5c1d0c5f86f7744bb2683cf0","name":"TerraGroup Labs keycard (Blue)","value":897.995,"costPerSlot":900000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1d0d6d86f7744bb2683e1f":{"id":"5c1d0d6d86f7744bb2683e1f","name":"TerraGroup Labs keycard (Yellow)","value":347.995,"costPerSlot":350000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1d0dc586f7744baf2e7b79":{"id":"5c1d0dc586f7744baf2e7b79","name":"TerraGroup Labs keycard (Green)","value":1697.995,"costPerSlot":1700000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1d0efb86f7744baf2e7b7b":{"id":"5c1d0efb86f7744baf2e7b7b","name":"TerraGroup Labs keycard (Red)","value":1647.995,"costPerSlot":1650000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1d0f4986f7744bb01837fa":{"id":"5c1d0f4986f7744bb01837fa","name":"TerraGroup Labs keycard (Black)","value":747.995,"costPerSlot":750000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1e2a1e86f77431ea0ea84c":{"id":"5c1e2a1e86f77431ea0ea84c","name":"TerraGroup Labs manager's office room key","value":54.172,"costPerSlot":56177,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1e2d1f86f77431e9280bee":{"id":"5c1e2d1f86f77431e9280bee","name":"TerraGroup Labs weapon testing area key","value":66.665,"costPerSlot":68670,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1e495a86f7743109743dfb":{"id":"5c1e495a86f7743109743dfb","name":"TerraGroup Labs keycard (Violet)","value":621.407,"costPerSlot":623412,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c1f79a086f7746ed066fb8f":{"id":"5c1f79a086f7746ed066fb8f","name":"TerraGroup Labs arsenal storage room key","value":123.09200000000001,"costPerSlot":125097,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c3df7d588a4501f290594e5":{"id":"5c3df7d588a4501f290594e5","name":"9x19mm Green Tracer","value":8.068999999999999,"costPerSlot":72,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c46fbd72e2216398b5a8c9c":{"id":"5c46fbd72e2216398b5a8c9c","name":"SVDS 7.62x54R sniper rifle","value":76.289,"costPerSlot":95482,"weight":4.386000000000001,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5c471b5d2e221602b21d4e14":{"id":"5c471b5d2e221602b21d4e14","name":"SVDS polymer stock","value":7.404499999999999,"costPerSlot":11579.5,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c471b7e2e2216152006e46c":{"id":"5c471b7e2e2216152006e46c","name":"SVDS rear sight","value":-1.197,"costPerSlot":878,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471ba12e221602b3137d76":{"id":"5c471ba12e221602b3137d76","name":"SVDS front sight","value":-1.516,"costPerSlot":524,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471bd12e221602b4129c3a":{"id":"5c471bd12e221602b4129c3a","name":"SVDS dust cover","value":9.4055,"costPerSlot":13449.5,"weight":0.088,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c471be12e221602b66cd9ac":{"id":"5c471be12e221602b66cd9ac","name":"SVDS pistol grip","value":70.965,"costPerSlot":73000,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471bfc2e221602b21d4e17":{"id":"5c471bfc2e221602b21d4e17","name":"SVDS 7.62x54R muzzle brake-compensator","value":2.96,"costPerSlot":5000,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471c2d2e22164bef5d077f":{"id":"5c471c2d2e22164bef5d077f","name":"SVDS upper band","value":19.865,"costPerSlot":21988,"weight":0.246,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471c442e221602b542a6f8":{"id":"5c471c442e221602b542a6f8","name":"SVD 7.62x54R 10-round magazine","value":5.718,"costPerSlot":7774,"weight":0.112,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471c6c2e221602b66cd9ae":{"id":"5c471c6c2e221602b66cd9ae","name":"SVDS polymer handguard","value":11.208,"costPerSlot":13333,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471c842e221615214259b5":{"id":"5c471c842e221615214259b5","name":"SVDS gas tube","value":0.45999999999999996,"costPerSlot":2520,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c471cb32e221602b177afaa":{"id":"5c471cb32e221602b177afaa","name":"SVD 7.62x54R 565mm barrel","value":16.297250000000002,"costPerSlot":24857.25,"weight":1.12,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c488a752e221602b412af63":{"id":"5c488a752e221602b412af63","name":"Desert Tech MDR 5.56x45 assault rifle","value":81.008,"costPerSlot":104006,"weight":3.996,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5c48a14f2e2216152006edd7":{"id":"5c48a14f2e2216152006edd7","name":"MDR handguard (FDE)","value":25.3095,"costPerSlot":29444,"weight":0.269,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c48a2852e221602b21d5923":{"id":"5c48a2852e221602b21d5923","name":"MDR 5.56x45 16 inch barrel","value":6.167833333333334,"costPerSlot":12422.333333333334,"weight":0.509,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c48a2a42e221602b66d1e07":{"id":"5c48a2a42e221602b66d1e07","name":"AR-15 Desert Tech 5.56x45 flash hider","value":6.204000000000001,"costPerSlot":8304,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c48a2c22e221602b313fb6c":{"id":"5c48a2c22e221602b313fb6c","name":"MDR pistol grip (FDE)","value":0.2799999999999998,"costPerSlot":2320,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c4ee3d62e2216152006f302":{"id":"5c4ee3d62e2216152006f302","name":"SV-98 SRVV Mk.2.0 7.62x54R muzzle brake-compensator","value":8.459,"costPerSlot":10689,"weight":0.46,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c4eec9b2e2216398b5aaba2":{"id":"5c4eec9b2e2216398b5aaba2","name":"SV-98 7.62x54R thread adapter","value":17.753,"costPerSlot":19783,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c4eecc32e221602b412b440":{"id":"5c4eecc32e221602b412b440","name":"SV-98 7.62x54R sound suppressor","value":14.235999999999997,"costPerSlot":18371,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c4eecde2e221602b3140418":{"id":"5c4eecde2e221602b3140418","name":"SV-98 sound suppressor heat shield","value":-1.6025,"costPerSlot":400,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c501a4d2e221602b412b540":{"id":"5c501a4d2e221602b412b540","name":"Molot Arms VPO-101 Vepr-Hunter 7.62x51 carbine","value":35.4625,"costPerSlot":49366,"weight":3.8070000000000004,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5c5039be2e221602b177c9ff":{"id":"5c5039be2e221602b177c9ff","name":"VPO-101 gas tube","value":-0.31000000000000005,"costPerSlot":1750,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c503ac82e221602b21d6e9a":{"id":"5c503ac82e221602b21d6e9a","name":"VPO-101 7.62x51 5-round magazine","value":-1,"costPerSlot":1100,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c503ad32e2216398b5aada2":{"id":"5c503ad32e2216398b5aada2","name":"VPO-101 7.62x51 10-round magazine","value":14.265,"costPerSlot":16365,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c503af12e221602b177ca02":{"id":"5c503af12e221602b177ca02","name":"VPO-101 wooden stock","value":-7.91175,"costPerSlot":713.25,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c503b1c2e221602b21d6e9d":{"id":"5c503b1c2e221602b21d6e9d","name":"VPO-101 rear sight","value":-1.7125,"costPerSlot":300,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c503d0a2e221602b542b7ef":{"id":"5c503d0a2e221602b542b7ef","name":"VPO-101 dust cover","value":-3.55,"costPerSlot":510,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5952732e2216398b5abda2":{"id":"5c5952732e2216398b5abda2","name":"Zenit Perst-3 tactical device","value":14.900000000000002,"costPerSlot":17050,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c59529a2e221602b177d160":{"id":"5c59529a2e221602b177d160","name":"MPX Lancer OEM 14 inch M-LOK handguard","value":15.237000000000002,"costPerSlot":19309,"weight":0.144,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5970672e221602b21d7855":{"id":"5c5970672e221602b21d7855","name":"SKS 7.62x39 ProMag AALVX 35-round magazine","value":13.517499999999998,"costPerSlot":17616,"weight":0.197,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db5852e2216003a0fe71a":{"id":"5c5db5852e2216003a0fe71a","name":"MPX 9x19 4.5 inch barrel","value":1.7200000000000002,"costPerSlot":3800,"weight":0.16,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c5db5962e2216000e5e46eb":{"id":"5c5db5962e2216000e5e46eb","name":"MPX 9x19 6.5 inch barrel","value":-1.508,"costPerSlot":2587,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db5b82e2216003a0fe71d":{"id":"5c5db5b82e2216003a0fe71d","name":"MPX 9x19 10.5 inch barrel","value":-3.4153333333333333,"costPerSlot":2724.6666666666665,"weight":0.28,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c5db5c62e22160012542255":{"id":"5c5db5c62e22160012542255","name":"MPX 9x19 14 inch barrel","value":6.3759999999999994,"costPerSlot":12551,"weight":0.35,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c5db5f22e2216000e5e47e8":{"id":"5c5db5f22e2216000e5e47e8","name":"MPX Midwest Industries 4.5 inch M-LOK handguard","value":21.067,"costPerSlot":23107,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c5db5fc2e2216000f1b2842":{"id":"5c5db5fc2e2216000f1b2842","name":"MPX Midwest Industries 6.5 inch M-LOK handguard","value":0.5800000000000001,"costPerSlot":4650,"weight":0.14,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db6302e2216000e5e47f0":{"id":"5c5db6302e2216000e5e47f0","name":"MPX Midwest Industries 10.5 inch M-LOK handguard","value":4.551500000000001,"costPerSlot":8664.5,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db63a2e2216000f1b284a":{"id":"5c5db63a2e2216000f1b284a","name":"MPX Midwest Industries 14 inch M-LOK handguard","value":4.177000000000001,"costPerSlot":8311.5,"weight":0.269,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db6552e2216001026119d":{"id":"5c5db6552e2216001026119d","name":"MPX 9x19 20-round magazine","value":2.9289999999999994,"costPerSlot":4999,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c5db6652e221600113fba51":{"id":"5c5db6652e221600113fba51","name":"MPX 9x19 TTI \"Base Pad +11\" 41-round magazine","value":4.949,"costPerSlot":9099,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db6742e2216000f1b2852":{"id":"5c5db6742e2216000f1b2852","name":"MPX 9x19 F5 MFG 50-round drum magazine","value":10.1255,"costPerSlot":14450.5,"weight":0.65,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db6b32e221600102611a0":{"id":"5c5db6b32e221600102611a0","name":"MPX Geissele SCH charging handle","value":14.675999999999998,"costPerSlot":16691,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c5db6ee2e221600113fba54":{"id":"5c5db6ee2e221600113fba54","name":"MPX/MCX Maxim Defense CQB stock","value":7.323,"costPerSlot":11573.5,"weight":0.501,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c5db6f82e2216003a0fe914":{"id":"5c5db6f82e2216003a0fe914","name":"MPX/MCX PMM ULSS foldable stock","value":7.540000000000001,"costPerSlot":11771,"weight":0.462,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c6161fb2e221600113fbde5":{"id":"5c6161fb2e221600113fbde5","name":"TOZ-106 20ga MTs 20-01 Sb.3 5-shot magazine","value":-0.655,"costPerSlot":1410,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c6162682e22160010261a2b":{"id":"5c6162682e22160010261a2b","name":"TOZ-106 dovetail mount","value":2.9749999999999996,"costPerSlot":5000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c61627a2e22160012542c55":{"id":"5c61627a2e22160012542c55","name":"TOZ-106 rail scope mount","value":10.881,"costPerSlot":12916,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c6165902e22160010261b28":{"id":"5c6165902e22160010261b28","name":"SIG Sauer SRD9 9x19 sound suppressor","value":11.853000000000002,"costPerSlot":15980.5,"weight":0.255,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c6175362e221600133e3b94":{"id":"5c6175362e221600133e3b94","name":"AK 7.62x39 ProMag AK-A-16 73-round drum magazine","value":4.040000000000001,"costPerSlot":10400,"weight":0.72,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c617a5f2e2216000f1e81b3":{"id":"5c617a5f2e2216000f1e81b3","name":"AK Zenit B-10 Handguard","value":25.831,"costPerSlot":27906,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c61a40d2e2216001403158d":{"id":"5c61a40d2e2216001403158d","name":"Zenit B-13 \"Klassika\" dovetail rail platform","value":15.096500000000002,"costPerSlot":17184,"weight":0.175,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c6592372e221600133e47d7":{"id":"5c6592372e221600133e47d7","name":"AR-15 5.56x45 SureFire MAG5-100 STANAG 100-round magazine","value":12.384999999999998,"costPerSlot":18520,"weight":0.27,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c6beec32e221601da3578f2":{"id":"5c6beec32e221601da3578f2","name":"P226 TJ's Custom 9x19 compensator","value":0.7820000000000005,"costPerSlot":2800,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c6bf4aa2e2216001219b0ae":{"id":"5c6bf4aa2e2216001219b0ae","name":"AK US Palm pistol grip","value":22.035,"costPerSlot":24080,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c6c2c9c2e2216000f2002e4":{"id":"5c6c2c9c2e2216000f2002e4","name":"HK 416 TROY M-LOK 13 inch handguard","value":1.069,"costPerSlot":7194,"weight":0.25,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c6d10e82e221601da357b07":{"id":"5c6d10e82e221601da357b07","name":"HK 416 MRS KeyMod 14 inch handguard","value":0.5899999999999999,"costPerSlot":6785,"weight":0.39,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c6d10fa2e221600106f3f23":{"id":"5c6d10fa2e221600106f3f23","name":"HK 416 Midwest Industries 9 inch M-LOK handguard","value":26.5165,"costPerSlot":30656.5,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c6d11072e2216000e69d2e4":{"id":"5c6d11072e2216000e69d2e4","name":"HK 416 Midwest Industries 13.5 inch M-LOK handguard","value":-0.5083333333333329,"costPerSlot":5676.666666666667,"weight":0.37,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c6d11152e2216000f2003e7":{"id":"5c6d11152e2216000f2003e7","name":"HK 416 Strike Industries CRUX 15 inch M-LOK handguard","value":9.144,"costPerSlot":15364,"weight":0.44,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c6d42cb2e2216000e69d7d1":{"id":"5c6d42cb2e2216000e69d7d1","name":"AR-15 5.56x45 HK 30 STANAG polymer 30-round magazine","value":1.242,"costPerSlot":5327,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c6d450c2e221600114c997d":{"id":"5c6d450c2e221600114c997d","name":"AR-15 5.56x45 HK PM Gen.2 STANAG 30-round magazine","value":1.2320000000000002,"costPerSlot":5312,"weight":0.16,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c6d46132e221601da357d56":{"id":"5c6d46132e221601da357d56","name":"AR-15 5.56x45 TROY BattleMag STANAG 30-round magazine","value":3.2730000000000006,"costPerSlot":7342,"weight":0.138,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c6d5d8b2e221644fc630b39":{"id":"5c6d5d8b2e221644fc630b39","name":"AR-15 STNGR VYPR 10 inch M-LOK handguard","value":7.003500000000001,"costPerSlot":11108,"weight":0.209,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c6d710d2e22165df16b81e7":{"id":"5c6d710d2e22165df16b81e7","name":"AR-15 SureFire WarComp 5.56x45 flash hider","value":17.886,"costPerSlot":19918,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c6d7b3d2e221600114c9b7d":{"id":"5c6d7b3d2e221600114c9b7d","name":"AR-15 HK V2 pistol grip","value":20.387,"costPerSlot":22427,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c6d85e02e22165df16b81f4":{"id":"5c6d85e02e22165df16b81f4","name":"HK 416 5.56x45 10.6 inch barrel","value":6.279,"costPerSlot":10565,"weight":0.572,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c78f2492e221600114c9f04":{"id":"5c78f2492e221600114c9f04","name":"AR-15 SAI 14.5 inch QD Rail handguard","value":25.17916666666667,"costPerSlot":31356.666666666668,"weight":0.355,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5c78f2612e221600114c9f0d":{"id":"5c78f2612e221600114c9f0d","name":"AR-15 SAI 10 inch QD Rail handguard","value":30.466499999999996,"costPerSlot":34619,"weight":0.305,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c78f26f2e221601da3581d1":{"id":"5c78f26f2e221601da3581d1","name":"AR-15 Magpul MOE SL medium length M-LOK handguard","value":8.352,"costPerSlot":12467,"weight":0.23,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c78f2792e221600106f4683":{"id":"5c78f2792e221600106f4683","name":"AR-15 Magpul MOE SL carbine length M-LOK handguard","value":1.1550000000000002,"costPerSlot":5250,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c78f2882e22165df16b832e":{"id":"5c78f2882e22165df16b832e","name":"AR-15 SAI JailBrake 5.56x45 muzzle device","value":14.146,"costPerSlot":16178,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c791e872e2216001219c40a":{"id":"5c791e872e2216001219c40a","name":"Strike Industries Cobra Tactical foregrip","value":16.836000000000002,"costPerSlot":18876,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c793fb92e221644f31bfb64":{"id":"5c793fb92e221644f31bfb64","name":"AR-15 Strike Industries Advanced Receiver Extension buffer tube","value":9.890500000000001,"costPerSlot":13945.5,"weight":0.11,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c793fc42e221600114ca25d":{"id":"5c793fc42e221600114ca25d","name":"AR-15 Strike Industries Advanced Receiver Extension buffer tube (Anodized Red)","value":39.154,"costPerSlot":43209,"weight":0.11,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c793fde2e221601da358614":{"id":"5c793fde2e221601da358614","name":"AR-15 Strike Industries Viper Mod 1 stock","value":12.5685,"costPerSlot":16662.5,"weight":0.188,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c7951452e221644f31bfd5c":{"id":"5c7951452e221644f31bfd5c","name":"AK Venom Tactical Antidote 7.62x39 muzzle brake-compensator","value":14.631000000000004,"costPerSlot":16679,"weight":0.096,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c7954d52e221600106f4cc7":{"id":"5c7954d52e221600106f4cc7","name":"Gemtech ONE Direct Thread Mount adapter","value":20.817,"costPerSlot":22872,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c7955c22e221644f31bfd5e":{"id":"5c7955c22e221644f31bfd5e","name":"Gemtech ONE multi-caliber sound suppressor","value":20.03,"costPerSlot":24260,"weight":0.46,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c7d55de2e221644f31bff68":{"id":"5c7d55de2e221644f31bff68","name":"Aimpoint CompM4 reflex sight","value":27.415000000000003,"costPerSlot":29600,"weight":0.37,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c7d55f52e221644f31bff6a":{"id":"5c7d55f52e221644f31bff6a","name":"Aimpoint CompM4/PRO LRP mount","value":9.2855,"costPerSlot":11323,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c7d560b2e22160bc12c6139":{"id":"5c7d560b2e22160bc12c6139","name":"Aimpoint Standard Spacer","value":5.8255,"costPerSlot":7838,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c7e5f112e221600106f4ede":{"id":"5c7e5f112e221600106f4ede","name":"AR-15 AAC Blackout 51T 5.56x45 flash hider","value":30.911,"costPerSlot":32972,"weight":0.122,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c7e8fab2e22165df16b889b":{"id":"5c7e8fab2e22165df16b889b","name":"AAC Illusion 9 9x19 sound suppressor","value":12.323,"costPerSlot":16470,"weight":0.294,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c7fb51d2e2216001219ce11":{"id":"5c7fb51d2e2216001219ce11","name":"AR-15 SureFire SF3P 5.56x45 Flash hider","value":17.674,"costPerSlot":19706,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c7fc87d2e221644f31c0298":{"id":"5c7fc87d2e221644f31c0298","name":"BCM GUNFIGHTER MOD 3 vertical foregrip","value":10.6425,"costPerSlot":12669,"weight":0.053,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c82342f2e221644f31c060e":{"id":"5c82342f2e221644f31c060e","name":"BelOMO PSO-1 4x24 scope","value":4.591999999999999,"costPerSlot":8892,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c82343a2e221644f31c0611":{"id":"5c82343a2e221644f31c0611","name":"BelOMO PSO-1M2 4x24 scope","value":5.091999999999999,"costPerSlot":9392,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c86592b2e2216000e69e77c":{"id":"5c86592b2e2216000e69e77c","name":"IEA Mil-Optics KH/F 34mm one-piece magmount","value":6.968,"costPerSlot":11067.5,"weight":0.199,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c878e9d2e2216000f201903":{"id":"5c878e9d2e2216000f201903","name":"AR-10 Lantac Dragon 7.62x51 muzzle brake-compensator","value":43.335,"costPerSlot":45380,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c878ebb2e2216001219d48a":{"id":"5c878ebb2e2216001219d48a","name":"AK Lantac Drakon 7.62x39 muzzle brake","value":18.336,"costPerSlot":20381,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c87a07c2e2216001219d4a2":{"id":"5c87a07c2e2216001219d4a2","name":"AR-15 HK E1 buttstock","value":12.5215,"costPerSlot":16716.5,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c87ca002e221600114cb150":{"id":"5c87ca002e221600114cb150","name":"KAC vertical foregrip","value":11.933,"costPerSlot":13969,"weight":0.072,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c88f24b2e22160bc12c69a6":{"id":"5c88f24b2e22160bc12c69a6","name":"SVD 7.62x54R 20-round magazine","value":4.1240000000000006,"costPerSlot":8180,"weight":0.112,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c90c3622e221601da359851":{"id":"5c90c3622e221601da359851","name":"Zenit B-13V \"Klassika\" dovetail rail platform","value":23.951,"costPerSlot":26030,"weight":0.158,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c920e902e221644f31c3c99":{"id":"5c920e902e221644f31c3c99","name":"P226 9x19 20-round extended magazine","value":18.052,"costPerSlot":20107,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c925fa22e221601da359b7b":{"id":"5c925fa22e221601da359b7b","name":"9x19mm AP 6.3","value":8.4985,"costPerSlot":503,"weight":0.009,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5c94bbff86f7747ee735c08f":{"id":"5c94bbff86f7747ee735c08f","name":"TerraGroup Labs access keycard","value":135.455,"costPerSlot":137460,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5c99f3592e221644fc633070":{"id":"5c99f3592e221644fc633070","name":"TOZ-106 custom cut Mosin stock","value":-7.4325,"costPerSlot":1212.5,"weight":1.29,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5c9a07572e221644f31c4b32":{"id":"5c9a07572e221644f31c4b32","name":"AK Magpul Zhukov-U handguard (Black)","value":21.483999999999998,"costPerSlot":25639,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c9a1c3a2e2216000e69fb6a":{"id":"5c9a1c3a2e2216000e69fb6a","name":"AK Magpul Zhukov-U handguard (FDE)","value":9.493500000000001,"costPerSlot":13648.5,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c9a1c422e221600106f69f0":{"id":"5c9a1c422e221600106f69f0","name":"AK Magpul Zhukov-U handguard (Plum)","value":9.236500000000001,"costPerSlot":13391.5,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c9a25172e2216000f20314e":{"id":"5c9a25172e2216000f20314e","name":"AR-15 Daniel Defense RIS II 12.25 handguard (Coyote Brown)","value":5.712999999999999,"costPerSlot":9889,"weight":0.352,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5c9a26332e2216001219ea70":{"id":"5c9a26332e2216001219ea70","name":"AR-15 Daniel Defense RIS II FSP 9.5 handguard (Coyote Brown)","value":7.4725,"costPerSlot":11622.5,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ca20abf86f77418567a43f2":{"id":"5ca20abf86f77418567a43f2","name":"Dynaforce Triton M43-A chest harness (Black)","value":31.345,"costPerSlot":26195,"weight":1.3,"size":12,"gridSize":16,"maxDim":4,"armorClass":0,"parentWeighting":1},"5ca20d5986f774331e7c9602":{"id":"5ca20d5986f774331e7c9602","name":"WARTECH Berkut BB-102 backpack (A-TACS FG)","value":28.03,"costPerSlot":25530,"weight":1,"size":20,"gridSize":20,"maxDim":5,"armorClass":0,"parentWeighting":2},"5ca20ee186f774799474abc2":{"id":"5ca20ee186f774799474abc2","name":"Vulkan-5 LShZ-5 bulletproof helmet (Black)","value":5.025,"costPerSlot":8275,"weight":4.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5ca2113f86f7740b2547e1d2":{"id":"5ca2113f86f7740b2547e1d2","name":"Vulkan-5 helmet face shield","value":66.334,"costPerSlot":31234,"weight":1.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"5ca2151486f774244a3b8d30":{"id":"5ca2151486f774244a3b8d30","name":"FORT Redut-M body armor","value":60.32700000000001,"costPerSlot":80177,"weight":7.7,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5ca21c6986f77479963115a7":{"id":"5ca21c6986f77479963115a7","name":"FORT Redut-T5 body armor (Smog)","value":-16.707,"costPerSlot":7343,"weight":8.1,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5cadc190ae921500103bb3b6":{"id":"5cadc190ae921500103bb3b6","name":"Beretta M9A3 9x19 pistol","value":21.129,"costPerSlot":22538,"weight":0.8180000000000001,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5cadc1c6ae9215000f2775a4":{"id":"5cadc1c6ae9215000f2775a4","name":"M9A3 9x19 127mm threaded barrel","value":-0.43999999999999995,"costPerSlot":1660,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cadc2e0ae9215051e1c21e7":{"id":"5cadc2e0ae9215051e1c21e7","name":"M9A3 9x19 17-round magazine","value":6.959,"costPerSlot":9000,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cadc390ae921500126a77f1":{"id":"5cadc390ae921500126a77f1","name":"M9A3 thread protector","value":-1.705,"costPerSlot":300,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cadc431ae921500113bb8d5":{"id":"5cadc431ae921500113bb8d5","name":"M9A3 polymer side grips","value":-1.245,"costPerSlot":800,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cadc55cae921500103bb3be":{"id":"5cadc55cae921500103bb3be","name":"M9A3 pistol slide","value":-2.92,"costPerSlot":1175,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cadd919ae921500126a77f3":{"id":"5cadd919ae921500126a77f3","name":"M9A3 front sight","value":-1.5434999999999999,"costPerSlot":460,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cadd940ae9215051e1c2316":{"id":"5cadd940ae9215051e1c2316","name":"M9A3 rear sight","value":-1.499,"costPerSlot":505,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cadd954ae921500103bb3c2":{"id":"5cadd954ae921500103bb3c2","name":"M9A3 Sight Mount rear sight rail","value":6.281000000000001,"costPerSlot":8295,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cadf6ddae9215051e1c23b2":{"id":"5cadf6ddae9215051e1c23b2","name":"12.7x55mm PS12","value":8.464,"costPerSlot":499,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cadf6e5ae921500113bb973":{"id":"5cadf6e5ae921500113bb973","name":"12.7x55mm PS12A","value":8.384,"costPerSlot":406,"weight":0.044,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cadf6eeae921500134b2799":{"id":"5cadf6eeae921500134b2799","name":"12.7x55mm PS12B","value":8.8725,"costPerSlot":900,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cadfbf7ae92152ac412eeef":{"id":"5cadfbf7ae92152ac412eeef","name":"ASh-12 12.7x55 assault rifle","value":81.715,"costPerSlot":93800,"weight":6.17,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5caf1041ae92157c28402e3f":{"id":"5caf1041ae92157c28402e3f","name":"ASh-12 12.7x55 10-round magazine","value":2.7270000000000003,"costPerSlot":6902,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5caf1109ae9215753c44119f":{"id":"5caf1109ae9215753c44119f","name":"ASh-12 12.7x55 20-round magazine","value":12.197500000000002,"costPerSlot":16447.5,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5caf1691ae92152ac412efb9":{"id":"5caf1691ae92152ac412efb9","name":"ASh-12 rear sight carry handle","value":12.491000000000001,"costPerSlot":14566,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5caf16a2ae92152ac412efbc":{"id":"5caf16a2ae92152ac412efbc","name":"ASh-12 folding front sight","value":0.19799999999999995,"costPerSlot":2233,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5caf17c9ae92150b30006be1":{"id":"5caf17c9ae92150b30006be1","name":"ASh-12 12.7x55 muzzle brake-compensator","value":8.564,"costPerSlot":10639,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5caf187cae92157c28402e43":{"id":"5caf187cae92157c28402e43","name":"ASh-12 12.7x55 sound suppressor","value":13.5945,"costPerSlot":17944.5,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cbda392ae92155f3c17c39f":{"id":"5cbda392ae92155f3c17c39f","name":"AK 100-series polymer handguard","value":-0.813,"costPerSlot":1322,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cbda9f4ae9215000e5b9bfc":{"id":"5cbda9f4ae9215000e5b9bfc","name":"AK-74 polymer handguard (Plum)","value":15.490000000000002,"costPerSlot":17615,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cbdaf89ae9215000e5b9c94":{"id":"5cbdaf89ae9215000e5b9c94","name":"AK-74 5.45x39 6L23 30-round magazine (Plum)","value":-1.6109999999999998,"costPerSlot":2496.5,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cbdb1b0ae9215000d50e105":{"id":"5cbdb1b0ae9215000d50e105","name":"AK-74 polymer stock (Plum)","value":18.95,"costPerSlot":23125,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cbdc23eae9215001136a407":{"id":"5cbdc23eae9215001136a407","name":"AK 7.62x39 Molot Arms 75-round drum magazine","value":3.248750000000001,"costPerSlot":9698.75,"weight":0.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cc6ea78e4a949000e1ea3c1":{"id":"5cc6ea78e4a949000e1ea3c1","name":"FN P90 charging handle","value":-0.40849999999999986,"costPerSlot":1600,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc6ea85e4a949000e1ea3c3":{"id":"5cc6ea85e4a949000e1ea3c3","name":"FN P90 K&M The Handler charging handle","value":23.0145,"costPerSlot":25024,"weight":0.019,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc70093e4a949033c734312":{"id":"5cc70093e4a949033c734312","name":"FN P90 5.7x28 50-round magazine","value":6.968500000000001,"costPerSlot":11193.5,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cc700b9e4a949000f0f0f25":{"id":"5cc700b9e4a949000f0f0f25","name":"FN P90 stock","value":-5.033333333333333,"costPerSlot":1166.6666666666667,"weight":0.4,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5cc700cae4a949035e43ba72":{"id":"5cc700cae4a949035e43ba72","name":"FN P90 buttpad","value":15.858,"costPerSlot":17888,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc700d4e4a949000f0f0f28":{"id":"5cc700d4e4a949000f0f0f28","name":"FN P90 Damage Industries buttpad","value":19.816,"costPerSlot":21861,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc700ede4a949033c734315":{"id":"5cc700ede4a949033c734315","name":"FN P90 EFFEN 90 5.7x28 upper receiver","value":7.7615,"costPerSlot":11886.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cc70102e4a949035e43ba74":{"id":"5cc70102e4a949035e43ba74","name":"FN P90 5.7x28 upper receiver","value":-0.6014999999999997,"costPerSlot":3553.5,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cc7012ae4a949001252b43e":{"id":"5cc7012ae4a949001252b43e","name":"FN P90 EFFEN 90 receiver rail","value":24.454,"costPerSlot":26479,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc70146e4a949000d73bf6b":{"id":"5cc70146e4a949000d73bf6b","name":"FN P90 upper receiver side rail","value":9.272,"costPerSlot":11307,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc7015ae4a949001152b4c6":{"id":"5cc7015ae4a949001152b4c6","name":"FN P90 upper receiver top rail","value":17.639,"costPerSlot":19774,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc701aae4a949000e1ea45c":{"id":"5cc701aae4a949000e1ea45c","name":"FN P90 5.7x28 10.5 inch barrel","value":5.550000000000001,"costPerSlot":9800,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cc701d7e4a94900100ac4e7":{"id":"5cc701d7e4a94900100ac4e7","name":"FN P90 5.7x28 16 inch barrel","value":1.0333333333333332,"costPerSlot":7433.333333333333,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5cc80f38e4a949001152b560":{"id":"5cc80f38e4a949001152b560","name":"5.7x28mm SS190","value":8.918,"costPerSlot":921,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cc80f53e4a949000e1ea4f8":{"id":"5cc80f53e4a949000e1ea4f8","name":"5.7x28mm L191","value":8.518,"costPerSlot":521,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cc80f67e4a949035e43bbba":{"id":"5cc80f67e4a949035e43bbba","name":"5.7x28mm SB193","value":8.2665,"costPerSlot":270,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cc80f79e4a949033c7343b2":{"id":"5cc80f79e4a949033c7343b2","name":"5.7x28mm SS198LF","value":8.222,"costPerSlot":225,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cc80f8fe4a949033b0224a2":{"id":"5cc80f8fe4a949033b0224a2","name":"5.7x28mm SS197SR","value":8.3405,"costPerSlot":344,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cc82796e24e8d000f5859a8":{"id":"5cc82796e24e8d000f5859a8","name":"FN P90 5.7x28 flash hider","value":24.477,"costPerSlot":26527,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc82d76e24e8d00134b4b83":{"id":"5cc82d76e24e8d00134b4b83","name":"FN P90 5.7x28 submachine gun","value":70.95200000000001,"costPerSlot":78439,"weight":2.9739999999999998,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5cc86832d7f00c000d3a6e6c":{"id":"5cc86832d7f00c000d3a6e6c","name":"5.7x28mm R37.F","value":8.421,"costPerSlot":424,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cc86840d7f00c002412c56c":{"id":"5cc86840d7f00c002412c56c","name":"5.7x28mm R37.X","value":8.333,"costPerSlot":336,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cc9a96cd7f00c011c04e04a":{"id":"5cc9a96cd7f00c011c04e04a","name":"AK-74 SRVV MBR Jet 5.45x39 muzzle brake","value":18.013,"costPerSlot":20068,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc9ad73d7f00c000e2579d4":{"id":"5cc9ad73d7f00c000e2579d4","name":"AK SRVV 7.62x39 muzzle brake-compensator","value":21.903000000000002,"costPerSlot":23958,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc9b815d7f00c000e2579d6":{"id":"5cc9b815d7f00c000e2579d6","name":"AR-15 TROY Claymore 5.56x45 muzzle brake","value":11.014000000000001,"costPerSlot":13046,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc9bcaed7f00c011c04e179":{"id":"5cc9bcaed7f00c011c04e179","name":"AR-15 Hera Arms HG-15 pistol grip","value":9.724000000000002,"costPerSlot":11764,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cc9c20cd7f00c001336c65d":{"id":"5cc9c20cd7f00c001336c65d","name":"NcSTAR Tactical Blue Laser","value":7.9399999999999995,"costPerSlot":9965,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cda9bcfd7f00c0c0b53e900":{"id":"5cda9bcfd7f00c0c0b53e900","name":"ASh-12 vertical foregrip","value":0.10999999999999988,"costPerSlot":2150,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cdaa99dd7f00c002412d0b2":{"id":"5cdaa99dd7f00c002412d0b2","name":"ASh-12 polymer handguard","value":7.030000000000001,"costPerSlot":9165,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cdd7685d7f00c000f260ed2":{"id":"5cdd7685d7f00c000f260ed2","name":"AR-10 Keeno Arms SHREWD 7.62x51 muzzle brake","value":20.8,"costPerSlot":22860,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cdd7693d7f00c0010373aa5":{"id":"5cdd7693d7f00c0010373aa5","name":"AR-10 Precision Armanent M11 Severe-Duty 7.62x51 muzzle brake","value":13.754,"costPerSlot":15814,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cde739cd7f00c0010373bd3":{"id":"5cde739cd7f00c0010373bd3","name":"M700 AB Arms MOD*X GEN 3 chassis","value":12.8905,"costPerSlot":17340.5,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cde77a9d7f00c000f261009":{"id":"5cde77a9d7f00c000f261009","name":"M700 AB Arms MOD*X buffer tube side folder adapter","value":20.897000000000002,"costPerSlot":22957,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cde7afdd7f00c000d36b89d":{"id":"5cde7afdd7f00c000d36b89d","name":"M700 AB Arms MOD*X GEN 3 KeyMod handguard","value":4.532666666666666,"costPerSlot":10727.666666666666,"weight":0.39,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5cde7b43d7f00c000d36b93e":{"id":"5cde7b43d7f00c000d36b93e","name":"M700 AB Arms MOD*X rail mount","value":7.509500000000001,"costPerSlot":11554.5,"weight":0.09,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cde8864d7f00c0010373be1":{"id":"5cde8864d7f00c0010373be1","name":"12.7x108mm B-32","value":8.7535,"costPerSlot":820,"weight":0.133,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5cdeac22d7f00c000f26168f":{"id":"5cdeac22d7f00c000f26168f","name":"M700 Magpul Pro 700 chassis","value":2.280333333333335,"costPerSlot":9140.333333333334,"weight":1.72,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5cdeac42d7f00c000d36ba73":{"id":"5cdeac42d7f00c000d36ba73","name":"M700 Magpul Pro 700 folding stock","value":-1.8505000000000003,"costPerSlot":2349.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cdeac5cd7f00c000f261694":{"id":"5cdeac5cd7f00c000f261694","name":"M700 Magpul Pro 700 pistol grip","value":13.637,"costPerSlot":15677,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cdeaca5d7f00c00b61c4b70":{"id":"5cdeaca5d7f00c00b61c4b70","name":"M700 Magpul Pro 700 chassis inline mount","value":-1.104,"costPerSlot":3036,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cdeb229d7f00c000e7ce174":{"id":"5cdeb229d7f00c000e7ce174","name":"NSV Utyos 12.7x108 heavy machine gun","value":-1.0499999999999998,"costPerSlot":0,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5ce69cbad7f00c00b61c5098":{"id":"5ce69cbad7f00c00b61c5098","name":"M700 7.62x51 Magpul PMAG AC 5-round magazine","value":6.276,"costPerSlot":8321,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cebec00d7f00c065c53522a":{"id":"5cebec00d7f00c065c53522a","name":"FN P90 Attenuator 5.7x28 sound suppressor","value":27.3865,"costPerSlot":31725,"weight":0.677,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cebec10d7f00c065703d185":{"id":"5cebec10d7f00c065703d185","name":"FN PS90 stock","value":-5.083333333333333,"costPerSlot":1116.6666666666667,"weight":0.4,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5cebec38d7f00c00110a652a":{"id":"5cebec38d7f00c00110a652a","name":"FN P90 Ring Sight reflex sight","value":13.3515,"costPerSlot":15500,"weight":0.297,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf12a15d7f00c05464b293f":{"id":"5cf12a15d7f00c05464b293f","name":"M700 7.62x51 ProMag AA-70 20-round magazine","value":3.5380000000000003,"costPerSlot":7788,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cf13123d7f00c1085616a50":{"id":"5cf13123d7f00c1085616a50","name":"M700 ProMag Archangel chassis","value":2.7043333333333344,"costPerSlot":9804.333333333334,"weight":2.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5cf4e3f3d7f00c06595bc7f0":{"id":"5cf4e3f3d7f00c06595bc7f0","name":"AK 5.45 Design Aggressor handguard","value":35.707,"costPerSlot":37837,"weight":0.26,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf4fb76d7f00c065703d3ac":{"id":"5cf4fb76d7f00c065703d3ac","name":"RTM Pillau tactical foregrip","value":7.656499999999999,"costPerSlot":9689,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf50850d7f00c056e24104c":{"id":"5cf50850d7f00c056e24104c","name":"AK Strike Industries Enhanced Pistol Grip (Black)","value":13.4245,"costPerSlot":15470,"weight":0.091,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf508bfd7f00c056e24104e":{"id":"5cf508bfd7f00c056e24104e","name":"AK Strike Industries Enhanced Pistol Grip (FDE)","value":11.0555,"costPerSlot":13101,"weight":0.091,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf50fc5d7f00c056c53f83c":{"id":"5cf50fc5d7f00c056c53f83c","name":"AK-74M CAA AKTS AK74 buffer tube","value":8.9925,"costPerSlot":13117.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cf518cfd7f00c065b422214":{"id":"5cf518cfd7f00c065b422214","name":"AKM/AK-74 CAA AKTS buffer tube","value":8.7125,"costPerSlot":12832.5,"weight":0.24,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cf54404d7f00c108840b2ef":{"id":"5cf54404d7f00c108840b2ef","name":"AK KGB MG-47 pistol grip","value":16.9315,"costPerSlot":19008,"weight":0.153,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf638cbd7f00c06595bc936":{"id":"5cf638cbd7f00c06595bc936","name":"NPZ USP-1 Tyulpan 4x scope","value":13.5975,"costPerSlot":15995,"weight":0.795,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf639aad7f00c065703d455":{"id":"5cf639aad7f00c065703d455","name":"NPZ USP-1 scope eyecup","value":-1.7265,"costPerSlot":276,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf656f2d7f00c06585fb6eb":{"id":"5cf656f2d7f00c06585fb6eb","name":"AK Vezhlivyy Strelok VS-24 + VS-33c handguard with gas tube","value":14.689500000000002,"costPerSlot":18882,"weight":0.385,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cf67a1bd7f00c06585fb6f3":{"id":"5cf67a1bd7f00c06585fb6f3","name":"Mosin Rifle Weapon Tuning 7.62x39 thread adapter","value":8.896,"costPerSlot":10926,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf67cadd7f00c065a5abab7":{"id":"5cf67cadd7f00c065a5abab7","name":"SKS Weapon Tuning 7.62x39 thread adapter","value":17.0775,"costPerSlot":19105,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf6935bd7f00c06585fb791":{"id":"5cf6935bd7f00c06585fb791","name":"TACCOM Carbine Brake 9x19 muzzle brake","value":8.8105,"costPerSlot":10850,"weight":0.079,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf6937cd7f00c056c53fb39":{"id":"5cf6937cd7f00c056c53fb39","name":"AR-15 Bulletec ST-6012 5.56x45 muzzle brake","value":24.3425,"costPerSlot":26405,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf78496d7f00c065703d6ca":{"id":"5cf78496d7f00c065703d6ca","name":"Lantac BMD Blast Mitigation Device A3 direct thread adapter","value":25.432,"costPerSlot":27447,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf78720d7f00c06595bc93e":{"id":"5cf78720d7f00c06595bc93e","name":"Lantac BMD 7.62x51 Blast Mitigation Device","value":31.319000000000003,"costPerSlot":33407,"weight":0.176,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf79389d7f00c10941a0c4d":{"id":"5cf79389d7f00c10941a0c4d","name":"Mosin Rifle Kiba Arms 7.62x54R custom thread adapter","value":3.0140000000000002,"costPerSlot":5059,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf79599d7f00c10875d9212":{"id":"5cf79599d7f00c10875d9212","name":"Mosin Rifle Tiger Rock 7.62x51 thread adapter","value":14.644000000000002,"costPerSlot":16679,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cf7acfcd7f00c1084477cf2":{"id":"5cf7acfcd7f00c1084477cf2","name":"FN PS90 5.7x28 upper receiver","value":-3.0549999999999997,"costPerSlot":1100,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cf8f3b0d7f00c00217872ef":{"id":"5cf8f3b0d7f00c00217872ef","name":"SOK-12 12ga MaxRounds Powermag 20-round drum magazine","value":2.6265,"costPerSlot":8956.5,"weight":0.66,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cfe8010d7ad1a59283b14c6":{"id":"5cfe8010d7ad1a59283b14c6","name":"AK 7.62x39 X Products X-47 50-round drum magazine","value":10.5,"costPerSlot":14850,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cff9e5ed7ad1a09407397d4":{"id":"5cff9e5ed7ad1a09407397d4","name":"AR-15 Daniel Defense WAVE 5.56x45 muzzle brake","value":17.8635,"costPerSlot":19918,"weight":0.109,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5cff9e84d7ad1a049e54ed55":{"id":"5cff9e84d7ad1a049e54ed55","name":"Daniel Defense WAVE QD sound suppressor","value":21.256,"costPerSlot":25500,"weight":0.488,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5cffa483d7ad1a049e54ef1c":{"id":"5cffa483d7ad1a049e54ef1c","name":"100 rounds belt","value":-2.05,"costPerSlot":0,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d00e0cbd7ad1a6c6566a42d":{"id":"5d00e0cbd7ad1a6c6566a42d","name":"AR-15 Strike Industries Viper carbine length M-LOK handguard","value":3.8155,"costPerSlot":7854,"weight":0.077,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d00ec68d7ad1a04a067e5be":{"id":"5d00ec68d7ad1a04a067e5be","name":"AR-15 JP Enterprises Gas System-5B","value":17.344,"costPerSlot":19376,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d00ede1d7ad1a0940739a76":{"id":"5d00ede1d7ad1a0940739a76","name":"AR-10 Noveske SWS N6 10.5 inch handguard","value":6.261000000000001,"costPerSlot":10512,"weight":0.502,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d00ef6dd7ad1a0940739b16":{"id":"5d00ef6dd7ad1a0940739b16","name":"AR-10 Noveske SWS N6 Split handguard","value":9.9595,"costPerSlot":14210.5,"weight":0.502,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d00f63bd7ad1a59283b1c1e":{"id":"5d00f63bd7ad1a59283b1c1e","name":"AR-15 Strike Industries Viper carbine length M-LOK handguard (FDE)","value":2.338,"costPerSlot":6376.5,"weight":0.077,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d010d1cd7ad1a59283b1ce7":{"id":"5d010d1cd7ad1a59283b1ce7","name":"HK MP5 CAA HX-5 handguard","value":8.7585,"costPerSlot":12912.5,"weight":0.308,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d0236dad7ad1a0940739d29":{"id":"5d0236dad7ad1a0940739d29","name":"SKS FAB Defense UAS chassis","value":12.717333333333332,"costPerSlot":19017.333333333332,"weight":0.6,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d023784d7ad1a049d4aa7f2":{"id":"5d023784d7ad1a049d4aa7f2","name":"SKS/VZ-58 FAB Defense AG-58 pistol grip","value":14.371500000000001,"costPerSlot":16428,"weight":0.113,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d024f5cd7ad1a04a067e91a":{"id":"5d024f5cd7ad1a04a067e91a","name":"Mosin Rifle Arbalet Patriot K+W rail mount","value":9.64,"costPerSlot":11740,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d025cc1d7ad1a53845279ef":{"id":"5d025cc1d7ad1a53845279ef","name":"AR-15 HK Ergo PSG-1 style pistol grip","value":40.535000000000004,"costPerSlot":42590,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d02676dd7ad1a049e54f6dc":{"id":"5d02676dd7ad1a049e54f6dc","name":"AR-15 Nordic Components Corvette 5.56x45 compensator","value":19.6015,"costPerSlot":21664,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d02677ad7ad1a04a15c0f95":{"id":"5d02677ad7ad1a04a15c0f95","name":"AR-10 Nordic Components Corvette 7.62x51 compensator","value":10.2385,"costPerSlot":12301,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d026791d7ad1a04a067ea63":{"id":"5d026791d7ad1a04a067ea63","name":"AR-10 Fortis RED Brake 7.62x51 muzzle brake","value":35.256,"costPerSlot":37310,"weight":0.108,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d02778e86f774203e7dedbe":{"id":"5d02778e86f774203e7dedbe","name":"CMS surgical kit","value":30.080000000000002,"costPerSlot":26280,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":8},"5d02797c86f774203f38e30a":{"id":"5d02797c86f774203f38e30a","name":"Surv12 field surgical kit","value":25.4,"costPerSlot":24000,"weight":1.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":8},"5d0375ff86f774186372f685":{"id":"5d0375ff86f774186372f685","name":"Military cable","value":16.275000000000002,"costPerSlot":20600,"weight":0.65,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d0376a486f7747d8050965c":{"id":"5d0376a486f7747d8050965c","name":"Military circuit board","value":37.74,"costPerSlot":40000,"weight":0.52,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d03775b86f774203e7e0c4b":{"id":"5d03775b86f774203e7e0c4b","name":"Phased array element","value":34.65,"costPerSlot":41500,"weight":1.7,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d0377ce86f774186372f689":{"id":"5d0377ce86f774186372f689","name":"Iridium military thermal vision module","value":79.095,"costPerSlot":81200,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d03784a86f774203e7e0c4d":{"id":"5d03784a86f774203e7e0c4d","name":"Military gyrotachometer","value":38.1035,"costPerSlot":42553.5,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d0378d486f77420421a5ff4":{"id":"5d0378d486f77420421a5ff4","name":"Military power filter","value":52.9,"costPerSlot":55000,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d03794386f77420415576f5":{"id":"5d03794386f77420415576f5","name":"6-STEN-140-M military battery","value":7.649999999999999,"costPerSlot":41250,"weight":43.2,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5d0379a886f77420407aa271":{"id":"5d0379a886f77420407aa271","name":"OFZ 30x165mm shell","value":23.5805,"costPerSlot":28000,"weight":0.839,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d07b91b86f7745a077a9432":{"id":"5d07b91b86f7745a077a9432","name":"Common fund stash","value":30,"costPerSlot":0,"weight":1,"size":1,"gridSize":25,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d08d21286f774736e7c94c3":{"id":"5d08d21286f774736e7c94c3","name":"Shturman's stash key","value":149.42700000000002,"costPerSlot":151432,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d0a29ead7ad1a0026013f27":{"id":"5d0a29ead7ad1a0026013f27","name":"KMZ 1P59 dovetail mount","value":6.638,"costPerSlot":8843,"weight":0.41,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d0a29fed7ad1a002769ad08":{"id":"5d0a29fed7ad1a002769ad08","name":"KMZ 1P69 Weaver mount","value":3.3369999999999997,"costPerSlot":7587,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d0a3a58d7ad1a669c15ca14":{"id":"5d0a3a58d7ad1a669c15ca14","name":"KMZ 1P59 3-10x riflescope","value":6.629999999999999,"costPerSlot":11100,"weight":0.94,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d0a3e8cd7ad1a6f6a3d35bd":{"id":"5d0a3e8cd7ad1a6f6a3d35bd","name":"KMZ 1P69 3-10x riflescope","value":8.129999999999999,"costPerSlot":12600,"weight":0.94,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d0b5cd3d7ad1a3fe32ad263":{"id":"5d0b5cd3d7ad1a3fe32ad263","name":"KMZ 1P59 scope eyecup","value":-1.4264999999999999,"costPerSlot":576,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d10b49bd7ad1a1a560708b0":{"id":"5d10b49bd7ad1a1a560708b0","name":"Insight AN/PEQ-2 tactical device","value":10.144,"costPerSlot":12249,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d120a10d7ad1a4e1026ba85":{"id":"5d120a10d7ad1a4e1026ba85","name":"AR-15 DoubleStar ACE SOCOM Gen.4 stock","value":3.1689999999999996,"costPerSlot":7404,"weight":0.47,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d120a28d7ad1a1c8962e295":{"id":"5d120a28d7ad1a1c8962e295","name":"DoubleStar ACE recoil pad","value":10.235000000000001,"costPerSlot":12345,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d122e7bd7ad1a07102d6d7f":{"id":"5d122e7bd7ad1a07102d6d7f","name":"AR-15 KAC URX 3.1 10.75 inch handguard","value":6.836500000000001,"costPerSlot":10948.5,"weight":0.224,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d123102d7ad1a004e475fe5":{"id":"5d123102d7ad1a004e475fe5","name":"AR-15 KAC URX 3 8 inch handguard","value":8.583,"costPerSlot":12667,"weight":0.168,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d123a3cd7ad1a004e476058":{"id":"5d123a3cd7ad1a004e476058","name":"KAC URX 3/3.1 short panel","value":-0.8025,"costPerSlot":1200,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d123b70d7ad1a0ee35e0754":{"id":"5d123b70d7ad1a0ee35e0754","name":"KAC URX 3/3.1 long panel","value":23.7475,"costPerSlot":25750,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d123b7dd7ad1a004f01b262":{"id":"5d123b7dd7ad1a004f01b262","name":"KAC URX 3/3.1 stopper panel","value":0.8475000000000001,"costPerSlot":2850,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d124c01d7ad1a115c7d59fb":{"id":"5d124c01d7ad1a115c7d59fb","name":"KAC URX 3/3.1 short panel (FDE)","value":-0.8025,"costPerSlot":1200,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d124c0ed7ad1a10d168dd9b":{"id":"5d124c0ed7ad1a10d168dd9b","name":"KAC URX 3/3.1 long panel (FDE)","value":4.8115,"costPerSlot":6814,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d124c1ad7ad1a12227c53a7":{"id":"5d124c1ad7ad1a12227c53a7","name":"KAC URX 3/3.1 stopper panel (FDE)","value":0.8475000000000001,"costPerSlot":2850,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d133067d7ad1a33013f95b4":{"id":"5d133067d7ad1a33013f95b4","name":"KAC URX 3 3 inch rail","value":32.522000000000006,"costPerSlot":34557,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1340b3d7ad1a0b52682ed7":{"id":"5d1340b3d7ad1a0b52682ed7","name":"AR-15 5.56x45 Magpul PMAG 30 GEN M3 STANAG 30-round magazine (FDE)","value":1.3094999999999999,"costPerSlot":5378.5,"weight":0.138,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1340bdd7ad1a0e8d245aab":{"id":"5d1340bdd7ad1a0e8d245aab","name":"AR-15 5.56x45 Magpul PMAG 40 GEN M3 STANAG 40-round magazine (FDE)","value":0.6036666666666672,"costPerSlot":6703.666666666667,"weight":0.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d1340cad7ad1a0b0b249869":{"id":"5d1340cad7ad1a0b0b249869","name":"AR-15 5.56x45 Magpul PMAG 30 GEN M3 W STANAG 30-round magazine (FDE)","value":2.5825000000000005,"costPerSlot":6651.5,"weight":0.138,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d135e83d7ad1a21b83f42d8":{"id":"5d135e83d7ad1a21b83f42d8","name":"AR-15 Magpul CTR Carbine stock (Black)","value":27.141000000000002,"costPerSlot":31254,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d135ecbd7ad1a21c176542e":{"id":"5d135ecbd7ad1a21c176542e","name":"AR-15 Magpul CTR Carbine stock (FDE)","value":10.630500000000001,"costPerSlot":14743.5,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d15ce51d7ad1a1eff619092":{"id":"5d15ce51d7ad1a1eff619092","name":"AKS-74U Alfa Arms Goliaf handguard","value":5.8,"costPerSlot":7875,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d15cf3bd7ad1a67e71518b2":{"id":"5d15cf3bd7ad1a67e71518b2","name":"AR-15 Magpul MOE pistol grip (FDE)","value":35.693000000000005,"costPerSlot":37718,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d19cd96d7ad1a4a992c9f52":{"id":"5d19cd96d7ad1a4a992c9f52","name":"HK MP5 PTR Tri-Rail handguard","value":4.926,"costPerSlot":9080,"weight":0.308,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b198cd7ad1a604869ad72":{"id":"5d1b198cd7ad1a604869ad72","name":"AK TDI AKM-L handguard","value":16.289500000000004,"costPerSlot":18400,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b2f3f86f774252167a52c":{"id":"5d1b2f3f86f774252167a52c","name":"FP-100 filter absorber","value":-5.808777777777777,"costPerSlot":12691.222222222223,"weight":13,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d1b2fa286f77425227d1674":{"id":"5d1b2fa286f77425227d1674","name":"Electric motor","value":9.683,"costPerSlot":16383,"weight":1.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b2ffd86f77425243e8d17":{"id":"5d1b2ffd86f77425243e8d17","name":"NIXXOR lens","value":23.225,"costPerSlot":25300,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b304286f774253763a528":{"id":"5d1b304286f774253763a528","name":"Working LCD","value":14.975000000000001,"costPerSlot":19000,"weight":0.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b309586f77425227d1676":{"id":"5d1b309586f77425227d1676","name":"Broken LCD","value":13.414000000000001,"costPerSlot":17439,"weight":0.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b313086f77425227d1678":{"id":"5d1b313086f77425227d1678","name":"Phase control relay","value":7.460000000000001,"costPerSlot":9500,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b317c86f7742523398392":{"id":"5d1b317c86f7742523398392","name":"Hand drill","value":-0.15000000000000036,"costPerSlot":10000,"weight":2.3,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d1b31ce86f7742523398394":{"id":"5d1b31ce86f7742523398394","name":"Round pliers","value":24.875,"costPerSlot":27000,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b327086f7742525194449":{"id":"5d1b327086f7742525194449","name":"Pressure gauge","value":26.200000000000003,"costPerSlot":30600,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b32c186f774252167a530":{"id":"5d1b32c186f774252167a530","name":"Analog thermometer","value":18.650000000000002,"costPerSlot":22800,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b33a686f7742523398398":{"id":"5d1b33a686f7742523398398","name":"Canister with purified water","value":14.81075,"costPerSlot":17460.75,"weight":3.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d1b36a186f7742523398433":{"id":"5d1b36a186f7742523398433","name":"Metal fuel tank","value":17.94783333333333,"costPerSlot":31572.833333333332,"weight":9.25,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d1b371186f774253763a656":{"id":"5d1b371186f774253763a656","name":"Expeditionary fuel tank","value":7.4594999999999985,"costPerSlot":16259.5,"weight":5.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b376e86f774252519444e":{"id":"5d1b376e86f774252519444e","name":"Bottle of Fierce Hatchling moonshine","value":100.4,"costPerSlot":100000,"weight":1.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d1b385e86f774252167b98a":{"id":"5d1b385e86f774252167b98a","name":"Water filter","value":19.834500000000002,"costPerSlot":24034.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1b392c86f77425243e98fe":{"id":"5d1b392c86f77425243e98fe","name":"Light bulb","value":7.455,"costPerSlot":9500,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b39a386f774252339976f":{"id":"5d1b39a386f774252339976f","name":"Silicone tube","value":16.790000000000003,"costPerSlot":18900,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b3a5d86f774252167ba22":{"id":"5d1b3a5d86f774252167ba22","name":"Pile of meds","value":27.291,"costPerSlot":29391,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b3f2d86f774253763b735":{"id":"5d1b3f2d86f774253763b735","name":"Disposable syringe","value":20.623,"costPerSlot":22653,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1b5e94d7ad1a2b865a96b0":{"id":"5d1b5e94d7ad1a2b865a96b0","name":"FLIR RS-32 2.25-9x 35mm 60Hz thermal riflescope","value":68.17200000000001,"costPerSlot":72397,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1c702ad7ad1a632267f429":{"id":"5d1c702ad7ad1a632267f429","name":"Glock FAB Defense GLR-17 stock","value":27.0155,"costPerSlot":31210.5,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1c774f86f7746d6620f8db":{"id":"5d1c774f86f7746d6620f8db","name":"Radiator helix","value":50.585,"costPerSlot":52795,"weight":0.42,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d1c819a86f774771b0acd6c":{"id":"5d1c819a86f774771b0acd6c","name":"Weapon parts","value":5.193000000000001,"costPerSlot":9473,"weight":0.56,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d1f819086f7744b355c219b":{"id":"5d1f819086f7744b355c219b","name":"AR-10 Daniel Defense WAVE 7.62x51 muzzle brake","value":15.246500000000001,"costPerSlot":17301,"weight":0.109,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d235a5986f77443f6329bc6":{"id":"5d235a5986f77443f6329bc6","name":"Gold skull ring","value":52.997,"costPerSlot":55000,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d235b4d86f7742e017bc88a":{"id":"5d235b4d86f7742e017bc88a","name":"GP coin","value":5.495,"costPerSlot":7500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d235bb686f77443f4331278":{"id":"5d235bb686f77443f4331278","name":"S I C C organizational pouch","value":849.1030000000001,"costPerSlot":820696.5,"weight":0.187,"size":2,"gridSize":25,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d2369418abbc306c62e0c80":{"id":"5d2369418abbc306c62e0c80","name":"Steiner DBAL-PL tactical device","value":22.4175,"costPerSlot":24494,"weight":0.153,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d25a4a98abbc30b917421a4":{"id":"5d25a4a98abbc30b917421a4","name":"M700 7.62x51 AI AICS 5-round magazine","value":-0.04999999999999982,"costPerSlot":2100,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d25a6538abbc306c62e630d":{"id":"5d25a6538abbc306c62e630d","name":"M700 7.62x51 AI AICS 10-round magazine","value":5.490500000000001,"costPerSlot":9740.5,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d25a6a48abbc306c62e6310":{"id":"5d25a6a48abbc306c62e6310","name":"M700 7.62x51 MDT AICS 12-round magazine","value":2.6420000000000003,"costPerSlot":6942,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d25a7b88abbc3054f3e60bc":{"id":"5d25a7b88abbc3054f3e60bc","name":"M700 7.62x51 Magpul PMAG AC 10-round magazine","value":4.971,"costPerSlot":9031,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d25af8f8abbc3055079fec5":{"id":"5d25af8f8abbc3055079fec5","name":"M700 7.62x51 ProMag AA-70 10-round magazine","value":12.746,"costPerSlot":14996,"weight":0.5,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d25d0ac8abbc3054f3e61f7":{"id":"5d25d0ac8abbc3054f3e61f7","name":"M700 AI AT AICS polymer chassis","value":1.1757500000000007,"costPerSlot":9495.75,"weight":0.64,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5d2702e88abbc31ed91efc44":{"id":"5d2702e88abbc31ed91efc44","name":"M700 7.62x51 26 inch stainless steel barrel","value":-2.249999999999999,"costPerSlot":6475,"weight":1.45,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5d2703038abbc3105103d94c":{"id":"5d2703038abbc3105103d94c","name":"M700 7.62x51 20 inch stainless steel threaded barrel","value":21.486,"costPerSlot":28086,"weight":1.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d270b3c8abbc3105335cfb8":{"id":"5d270b3c8abbc3105335cfb8","name":"M700 thread protector","value":2.628,"costPerSlot":4633,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d270ca28abbc31ee25ee821":{"id":"5d270ca28abbc31ee25ee821","name":"M700 stainless steel thread protector","value":-1.405,"costPerSlot":600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d2c76ed48f03532f2136169":{"id":"5d2c76ed48f03532f2136169","name":"AK AKademia Bastion dust cover","value":2.3015,"costPerSlot":6420,"weight":0.237,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d2c770c48f0354b4a07c100":{"id":"5d2c770c48f0354b4a07c100","name":"AK FAB Defense PDC dust cover","value":18.645500000000002,"costPerSlot":22746.5,"weight":0.202,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d2c772c48f0355d95672c25":{"id":"5d2c772c48f0355d95672c25","name":"AK TWS Dog Leg Rail dust cover","value":9.8475,"costPerSlot":13945,"weight":0.195,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d2c829448f0353a5c7d6674":{"id":"5d2c829448f0353a5c7d6674","name":"WASR-10/63 CAF wooden foregrip","value":3.846,"costPerSlot":5986,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d2da1e948f035477b1ce2ba":{"id":"5d2da1e948f035477b1ce2ba","name":"Trijicon SRS-02 reflex sight","value":21.433,"costPerSlot":23628,"weight":0.39,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d2dc3e548f035404a1a4798":{"id":"5d2dc3e548f035404a1a4798","name":"Monstrum Tactical Compact Prism Scope 2x32","value":16.073500000000003,"costPerSlot":20286,"weight":0.425,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d2f0d8048f0356c925bc3b0":{"id":"5d2f0d8048f0356c925bc3b0","name":"HK MP5K 9x19 submachine gun","value":23.357499999999998,"costPerSlot":25293,"weight":1.8710000000000002,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5d2f213448f0355009199284":{"id":"5d2f213448f0355009199284","name":"HK MP5 9x19 20-round magazine","value":14.977,"costPerSlot":17037,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d2f259b48f0355a844acd74":{"id":"5d2f259b48f0355a844acd74","name":"HK MP5K polymer handguard","value":0.7495000000000003,"costPerSlot":2870,"weight":0.241,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d2f25bc48f03502573e5d85":{"id":"5d2f25bc48f03502573e5d85","name":"HK MP5K End Cap stock","value":0.43500000000000005,"costPerSlot":2500,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d2f261548f03576f500e7b7":{"id":"5d2f261548f03576f500e7b7","name":"HK MP5K 9x19 upper receiver","value":-2.7,"costPerSlot":1525,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d2f2ab648f03550091993ca":{"id":"5d2f2ab648f03550091993ca","name":"12.7x108mm BZT-44M","value":8.916,"costPerSlot":980,"weight":0.128,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d2f2d5748f03572ec0c0139":{"id":"5d2f2d5748f03572ec0c0139","name":"HK MP5K cocking handle","value":-0.5049999999999999,"costPerSlot":1550,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d3eb3b0a4b93615055e84d2":{"id":"5d3eb3b0a4b93615055e84d2","name":"FN Five-seveN MK2 5.7x28 pistol","value":35.574999999999996,"costPerSlot":36906,"weight":0.662,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5d3eb44aa4b93650d64e4979":{"id":"5d3eb44aa4b93650d64e4979","name":"FN Five-seveN MK2 pistol slide","value":-1.975,"costPerSlot":2105,"weight":0.16,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d3eb4aba4b93650d64e497d":{"id":"5d3eb4aba4b93650d64e497d","name":"FN Five-seveN MK2 rear sight","value":-1.1035,"costPerSlot":900,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d3eb536a4b9363b1f22f8e2":{"id":"5d3eb536a4b9363b1f22f8e2","name":"FN Five-seveN MK2 front sight","value":-1.2035,"costPerSlot":800,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d3eb59ea4b9361c284bb4b2":{"id":"5d3eb59ea4b9361c284bb4b2","name":"FN Five-seveN 5.7x28 120mm threaded barrel","value":31.967,"costPerSlot":34057,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d3eb5b6a4b9361eab311902":{"id":"5d3eb5b6a4b9361eab311902","name":"FN Five-seveN 5.7x28 120mm barrel","value":17.55,"costPerSlot":19635,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d3eb5eca4b9363b1f22f8e4":{"id":"5d3eb5eca4b9363b1f22f8e4","name":"FN Five-seveN 5.7x28 20-round magazine","value":15.431000000000001,"costPerSlot":17475,"weight":0.088,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d3ef698a4b9361182109872":{"id":"5d3ef698a4b9361182109872","name":"Gemtech SFN-57 5.7x28 sound suppressor","value":14.895,"costPerSlot":18970,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d403f9186f7743cac3f229b":{"id":"5d403f9186f7743cac3f229b","name":"Bottle of Dan Jackiel whiskey","value":25.3,"costPerSlot":25000,"weight":1.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d40407c86f774318526545a":{"id":"5d40407c86f774318526545a","name":"Bottle of Tarkovskaya vodka","value":13.248,"costPerSlot":13048,"weight":1.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d40412b86f7743cb332ac3a":{"id":"5d40412b86f7743cb332ac3a","name":"Schaman shampoo","value":8.2895,"costPerSlot":12514.5,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d40419286f774318526545f":{"id":"5d40419286f774318526545f","name":"Metal cutting scissors","value":6.705,"costPerSlot":11150,"weight":0.89,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d4041f086f7743cac3f22a7":{"id":"5d4041f086f7743cac3f22a7","name":"Ortodontox toothpaste","value":4.623,"costPerSlot":6723,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d40425986f7743185265461":{"id":"5d40425986f7743185265461","name":"Nippers","value":14.850000000000001,"costPerSlot":17000,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d4042a986f7743185265463":{"id":"5d4042a986f7743185265463","name":"Flat screwdriver (Long)","value":12.325,"costPerSlot":16500,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d43021ca4b9362eab4b5e25":{"id":"5d43021ca4b9362eab4b5e25","name":"Lone Star TX-15 DML 5.56x45 carbine","value":66.047,"costPerSlot":92720,"weight":3.346,"size":21,"gridSize":0,"maxDim":7,"armorClass":0,"parentWeighting":3},"5d4405aaa4b9361e6a4e6bd3":{"id":"5d4405aaa4b9361e6a4e6bd3","name":"TX-15 5.56x45 Lightweight upper receiver","value":8.6875,"costPerSlot":12782.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d4405f0a4b9361e6a4e6bd9":{"id":"5d4405f0a4b9361e6a4e6bd9","name":"AR-15 Lone Star Ion Lite handguard","value":1.4773333333333332,"costPerSlot":7667.333333333333,"weight":0.38,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d440625a4b9361eec4ae6c5":{"id":"5d440625a4b9361eec4ae6c5","name":"AR-15 Thunder Beast Arms 223CB 5.56x45 muzzle brake","value":11.734499999999999,"costPerSlot":13789,"weight":0.109,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d44064fa4b9361e4f6eb8b5":{"id":"5d44064fa4b9361e4f6eb8b5","name":"Thunder Beast Arms Ultra 5 sound suppressor","value":26.895,"costPerSlot":31000,"weight":0.21,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d44069ca4b9361ebd26fc37":{"id":"5d44069ca4b9361ebd26fc37","name":"AR-15 Magpul PRS GEN3 stock (Black)","value":10.7635,"costPerSlot":15153.5,"weight":0.78,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d4406a8a4b9361e4f6eb8b7":{"id":"5d4406a8a4b9361e4f6eb8b7","name":"AR-15 Magpul PRS GEN3 stock (Grey)","value":17.09,"costPerSlot":21480,"weight":0.78,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d440b93a4b9364276578d4b":{"id":"5d440b93a4b9364276578d4b","name":"AR-15 5.56x45 18 inch barrel","value":14.510666666666669,"costPerSlot":20900.666666666668,"weight":0.78,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5d440b9fa4b93601354d480c":{"id":"5d440b9fa4b93601354d480c","name":"AR-15 5.56x45 20 inch barrel","value":7.847500000000002,"costPerSlot":16302.5,"weight":0.91,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5d44334ba4b9362b346d1948":{"id":"5d44334ba4b9362b346d1948","name":"AR-15 Radian Weapons Raptor charging handle (Tungsten Grey)","value":64.278,"costPerSlot":66298,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d443f8fa4b93678dd4a01aa":{"id":"5d443f8fa4b93678dd4a01aa","name":"AR-10 Thunder Beast Arms 30CB 7.62x51 muzzle brake","value":25.9985,"costPerSlot":28053,"weight":0.109,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d4aaa54a4b9365392071170":{"id":"5d4aaa54a4b9365392071170","name":"AK TDI AKM-L handguard (Anodized Red)","value":25.689500000000002,"costPerSlot":27800,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d4aaa73a4b9365392071175":{"id":"5d4aaa73a4b9365392071175","name":"AK TDI AKM-L handguard (Anodized Bronze)","value":42.0425,"costPerSlot":44153,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d4aab30a4b9365435358c55":{"id":"5d4aab30a4b9365435358c55","name":"AK Vezhlivyy Strelok VS-24 + VS-33c handguard with gas tube (White)","value":25.4555,"costPerSlot":29648,"weight":0.385,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d52cc5ba4b9367408500062":{"id":"5d52cc5ba4b9367408500062","name":"AGS-30 30x29mm automatic grenade launcher","value":-1.0499999999999998,"costPerSlot":0,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5d52d479a4b936793d58c76b":{"id":"5d52d479a4b936793d58c76b","name":"AGS-30 30x29 30-round box","value":-2.044,"costPerSlot":0,"weight":0.088,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d53f4b7a4b936793d58c780":{"id":"5d53f4b7a4b936793d58c780","name":"PAG-17 scope","value":-3.9505,"costPerSlot":304.5,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d5d646386f7742797261fd9":{"id":"5d5d646386f7742797261fd9","name":"6B3TM-01 armored rig (Khaki)","value":106.037,"costPerSlot":109537,"weight":8.2,"size":12,"gridSize":12,"maxDim":4,"armorClass":0,"parentWeighting":1},"5d5d85c586f774279a21cbdb":{"id":"5d5d85c586f774279a21cbdb","name":"Haley Strategic D3CRX Chest Harness (Ranger Green)","value":40.95,"costPerSlot":31600,"weight":0.9,"size":9,"gridSize":16,"maxDim":3,"armorClass":0,"parentWeighting":1},"5d5d87f786f77427997cfaef":{"id":"5d5d87f786f77427997cfaef","name":"Ars Arma A18 Skanda plate carrier (MultiCam)","value":103.49100000000001,"costPerSlot":87216,"weight":2.45,"size":12,"gridSize":25,"maxDim":4,"armorClass":0,"parentWeighting":1},"5d5d8ca986f7742798716522":{"id":"5d5d8ca986f7742798716522","name":"SOE Micro Rig (MultiCam)","value":20.370000000000005,"costPerSlot":18370,"weight":0.8,"size":6,"gridSize":8,"maxDim":3,"armorClass":0,"parentWeighting":1},"5d5d940f86f7742797262046":{"id":"5d5d940f86f7742797262046","name":"Oakley Mechanism heavy duty backpack (Black)","value":81.34049999999999,"costPerSlot":68239,"weight":0.997,"size":25,"gridSize":32,"maxDim":5,"armorClass":0,"parentWeighting":2},"5d5e7d28a4b936645d161203":{"id":"5d5e7d28a4b936645d161203","name":"MSA ACH TC-2001 MICH Series helmet (Olive Drab)","value":52.649,"costPerSlot":54349,"weight":1.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d5e9c74a4b9364855191c40":{"id":"5d5e9c74a4b9364855191c40","name":"MSA ACH TC-2002 MICH Series helmet (Olive Drab)","value":56.778,"costPerSlot":58503,"weight":1.45,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d5fca1ea4b93635fd598c07":{"id":"5d5fca1ea4b93635fd598c07","name":"ESS Crossbow tactical glasses","value":8.659,"costPerSlot":7674,"weight":0.03,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d63d33b86f7746ea9275524":{"id":"5d63d33b86f7746ea9275524","name":"Flat screwdriver","value":11.85,"costPerSlot":14000,"weight":0.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d67abc1a4b93614ec50137f":{"id":"5d67abc1a4b93614ec50137f","name":"FN Five-seveN MK2 5.7x28 pistol (FDE)","value":51.847,"costPerSlot":53178,"weight":0.662,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5d6d2b5486f774785c2ba8ea":{"id":"5d6d2b5486f774785c2ba8ea","name":"Ground cache","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d6d2bb386f774785b07a77a":{"id":"5d6d2bb386f774785b07a77a","name":"Buried barrel cache","value":13.100000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":12,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d6d2e22a4b9361bd5780d05":{"id":"5d6d2e22a4b9361bd5780d05","name":"Oakley SI Gascan glasses","value":12.989,"costPerSlot":12006,"weight":0.034,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d6d2ef3a4b93618084f58bd":{"id":"5d6d2ef3a4b93618084f58bd","name":"RayBench Aviator glasses","value":13.5395,"costPerSlot":12553,"weight":0.027,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d6d3716a4b9361bc8618872":{"id":"5d6d3716a4b9361bc8618872","name":"BNTI LShZ-2DTM helmet (Black)","value":67.713,"costPerSlot":70413,"weight":3.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d6d3829a4b9361bc8618943":{"id":"5d6d3829a4b9361bc8618943","name":"LShZ-2DTM face shield","value":63.036500000000004,"costPerSlot":27536.5,"weight":1,"size":2,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"5d6d3943a4b9360dbc46d0cc":{"id":"5d6d3943a4b9360dbc46d0cc","name":"LShZ-2DTM cover (Black)","value":9.042,"costPerSlot":11092,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d6d3be5a4b9361bc73bc763":{"id":"5d6d3be5a4b9361bc73bc763","name":"LShZ-2DTM aventail","value":62,"costPerSlot":16600,"weight":1.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"5d6e6772a4b936088465b17c":{"id":"5d6e6772a4b936088465b17c","name":"12/70 5.25mm buckshot","value":8.013,"costPerSlot":35,"weight":0.044,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e67fba4b9361bc73bc779":{"id":"5d6e67fba4b9361bc73bc779","name":"12/70 6.5mm Express buckshot","value":8.062,"costPerSlot":86,"weight":0.048,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6806a4b936088465b17e":{"id":"5d6e6806a4b936088465b17e","name":"12/70 8.5mm Magnum buckshot","value":8.2485,"costPerSlot":278,"weight":0.059,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6869a4b9361c140bcfde":{"id":"5d6e6869a4b9361c140bcfde","name":"12/70 Grizzly 40 slug","value":8.0815,"costPerSlot":109,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6891a4b9361bd473feea":{"id":"5d6e6891a4b9361bd473feea","name":"12/70 Poleva-3 slug","value":8.029,"costPerSlot":51,"weight":0.044,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e689ca4b9361bc8618956":{"id":"5d6e689ca4b9361bc8618956","name":"12/70 Poleva-6u slug","value":8.044,"costPerSlot":68,"weight":0.048,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e68a8a4b9360b6c0d54e2":{"id":"5d6e68a8a4b9360b6c0d54e2","name":"12/70 AP-20 armor-piercing slug","value":8.865,"costPerSlot":890,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e68b3a4b9361bca7e50b5":{"id":"5d6e68b3a4b9361bca7e50b5","name":"12/70 Copper Sabot Premier HP slug","value":8.0605,"costPerSlot":82,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e68c4a4b9361b93413f79":{"id":"5d6e68c4a4b9361b93413f79","name":"12/70 makeshift .50 BMG slug","value":8.506499999999999,"costPerSlot":534,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e68d1a4b93622fe60e845":{"id":"5d6e68d1a4b93622fe60e845","name":"12/70 SuperFormance HP slug","value":8.643,"costPerSlot":660,"weight":0.034,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e68dea4b9361bcc29e659":{"id":"5d6e68dea4b9361bcc29e659","name":"12/70 Dual Sabot slug","value":8.044,"costPerSlot":69,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e68e6a4b9361c140bcfe0":{"id":"5d6e68e6a4b9361c140bcfe0","name":"12/70 FTX Custom Lite slug","value":8.186,"costPerSlot":199,"weight":0.026,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6911a4b9361bd5780d52":{"id":"5d6e6911a4b9361bd5780d52","name":"12/70 flechette","value":8.558,"costPerSlot":578,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e695fa4b936359b35d852":{"id":"5d6e695fa4b936359b35d852","name":"20/70 5.6mm buckshot","value":8.006,"costPerSlot":20,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e69b9a4b9361bc8618958":{"id":"5d6e69b9a4b9361bc8618958","name":"20/70 6.2mm buckshot","value":8.014,"costPerSlot":30,"weight":0.032,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e69c7a4b9360b6c0d54e4":{"id":"5d6e69c7a4b9360b6c0d54e4","name":"20/70 7.3mm buckshot","value":8.034,"costPerSlot":50,"weight":0.032,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6a05a4b93618084f58d0":{"id":"5d6e6a05a4b93618084f58d0","name":"20/70 Star slug","value":8.064,"costPerSlot":81,"weight":0.034,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6a42a4b9364f07165f52":{"id":"5d6e6a42a4b9364f07165f52","name":"20/70 Poleva-6u slug","value":8.049,"costPerSlot":65,"weight":0.032,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6a53a4b9361bd473feec":{"id":"5d6e6a53a4b9361bd473feec","name":"20/70 Poleva-3 slug","value":8.035499999999999,"costPerSlot":50,"weight":0.029,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6e6a5fa4b93614ec501745":{"id":"5d6e6a5fa4b93614ec501745","name":"20/70 Devastator slug","value":8.1655,"costPerSlot":180,"weight":0.029,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d6fc78386f77449d825f9dc":{"id":"5d6fc78386f77449d825f9dc","name":"Gunpowder \"Eagle\"","value":22.753,"costPerSlot":27053,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d6fc87386f77449db3db94e":{"id":"5d6fc87386f77449db3db94e","name":"Gunpowder \"Hawk\"","value":26.6995,"costPerSlot":30999.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5d6fd13186f77424ad2a8c69":{"id":"5d6fd13186f77424ad2a8c69","name":"Ration supply crate","value":30,"costPerSlot":0,"weight":1,"size":1,"gridSize":25,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d6fd45b86f774317075ed43":{"id":"5d6fd45b86f774317075ed43","name":"Technical supply crate","value":30,"costPerSlot":0,"weight":1,"size":1,"gridSize":25,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d6fe50986f77449d97f7463":{"id":"5d6fe50986f77449d97f7463","name":"Medical supply crate","value":30,"costPerSlot":0,"weight":1,"size":1,"gridSize":25,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d70e500a4b9364de70d38ce":{"id":"5d70e500a4b9364de70d38ce","name":"30x29mm VOG-30","value":7.825,"costPerSlot":0,"weight":0.35,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5d7b6bafa4b93652786f4c76":{"id":"5d7b6bafa4b93652786f4c76","name":"FN Five-seveN MK2 RMR mount","value":19.887,"costPerSlot":21947,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c60f86f77440373c4ece":{"id":"5d80c60f86f77440373c4ece","name":"RB-BK marked key","value":1689.562,"costPerSlot":1691567,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c62a86f7744036212b3f":{"id":"5d80c62a86f7744036212b3f","name":"RB-VO marked key","value":1144.87,"costPerSlot":1146875,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c66d86f774405611c7d6":{"id":"5d80c66d86f774405611c7d6","name":"RB-AO key","value":19.099,"costPerSlot":21104,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c6c586f77440351beef1":{"id":"5d80c6c586f77440351beef1","name":"RB-OB key","value":151.58700000000002,"costPerSlot":153592,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c6fc86f774403a401e3c":{"id":"5d80c6fc86f774403a401e3c","name":"RB-TB key","value":16.746000000000002,"costPerSlot":18751,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c78786f774403a401e3e":{"id":"5d80c78786f774403a401e3e","name":"RB-AK key","value":9.126,"costPerSlot":11131,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c88d86f77440556dbf07":{"id":"5d80c88d86f77440556dbf07","name":"RB-AM key","value":43.007,"costPerSlot":45012,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c8f586f77440373c4ed0":{"id":"5d80c8f586f77440373c4ed0","name":"RB-OP key","value":16.008000000000003,"costPerSlot":18013,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c93086f7744036212b41":{"id":"5d80c93086f7744036212b41","name":"RB-MP11 key","value":14.338000000000001,"costPerSlot":16343,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80c95986f77440351beef3":{"id":"5d80c95986f77440351beef3","name":"RB-MP12 key","value":20.245,"costPerSlot":22250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80ca9086f774403a401e40":{"id":"5d80ca9086f774403a401e40","name":"RB-MP21 key","value":23.088,"costPerSlot":25093,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80cab086f77440535be201":{"id":"5d80cab086f77440535be201","name":"RB-MP22 key","value":27.015,"costPerSlot":29020,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80cb3886f77440556dbf09":{"id":"5d80cb3886f77440556dbf09","name":"RB-PSP1 key","value":23.104000000000003,"costPerSlot":25109,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80cb5686f77440545d1286":{"id":"5d80cb5686f77440545d1286","name":"RB-PSV1 key","value":27.215,"costPerSlot":29220,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80cb8786f774405611c7d9":{"id":"5d80cb8786f774405611c7d9","name":"RB-PP key","value":7.0329999999999995,"costPerSlot":9038,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80cbd886f77470855c26c2":{"id":"5d80cbd886f77470855c26c2","name":"RB-MP13 key","value":24.796000000000003,"costPerSlot":26801,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80ccac86f77470841ff452":{"id":"5d80ccac86f77470841ff452","name":"RB-ORB1 key","value":207.363,"costPerSlot":209368,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80ccdd86f77474f7575e02":{"id":"5d80ccdd86f77474f7575e02","name":"RB-ORB2 key","value":47.082,"costPerSlot":49087,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d80cd1a86f77402aa362f42":{"id":"5d80cd1a86f77402aa362f42","name":"RB-ORB3 key","value":72.88900000000001,"costPerSlot":74894,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d8e0db586f7744450412a42":{"id":"5d8e0db586f7744450412a42","name":"RB-KORL key","value":24.667,"costPerSlot":26672,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d8e0e0e86f774321140eb56":{"id":"5d8e0e0e86f774321140eb56","name":"RB-KPRL key","value":88.358,"costPerSlot":90363,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d8e15b686f774445103b190":{"id":"5d8e15b686f774445103b190","name":"HEP station storage room key","value":37.995,"costPerSlot":40000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d8e3ecc86f774414c78d05e":{"id":"5d8e3ecc86f774414c78d05e","name":"RB-GN key","value":23.598000000000003,"costPerSlot":25603,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d947d3886f774447b415893":{"id":"5d947d3886f774447b415893","name":"RB-SMP key","value":95.921,"costPerSlot":97926,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d947d4e86f774447b415895":{"id":"5d947d4e86f774447b415895","name":"RB-KSM key","value":73.447,"costPerSlot":75452,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d95d6be86f77424444eb3a7":{"id":"5d95d6be86f77424444eb3a7","name":"RB-PSV2 key","value":26.989,"costPerSlot":28994,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d95d6fa86f77424484aa5e9":{"id":"5d95d6fa86f77424484aa5e9","name":"RB-PSP2 key","value":27.105,"costPerSlot":29110,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5d96141523f0ea1b7f2aacab":{"id":"5d96141523f0ea1b7f2aacab","name":"Door Kicker boonie hat","value":11.91,"costPerSlot":12960,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5d9f1fa686f774726974a992":{"id":"5d9f1fa686f774726974a992","name":"RB-ST key","value":93.016,"costPerSlot":95021,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5da46e3886f774653b7a83fe":{"id":"5da46e3886f774653b7a83fe","name":"RB-RS key","value":16.596,"costPerSlot":18601,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5da5cdcd86f774529238fb9b":{"id":"5da5cdcd86f774529238fb9b","name":"RB-RH key","value":18.611,"costPerSlot":20616,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5da743f586f7744014504f72":{"id":"5da743f586f7744014504f72","name":"USEC stash key","value":82.206,"costPerSlot":84211,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5dcbd56fdbd3d91b3e5468d5":{"id":"5dcbd56fdbd3d91b3e5468d5","name":"Desert Tech MDR 7.62x51 assault rifle","value":39.99550000000001,"costPerSlot":63230,"weight":4.469,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5dcbd6b46ec07c0c4347a564":{"id":"5dcbd6b46ec07c0c4347a564","name":"MDR handguard (Black)","value":8.8655,"costPerSlot":13000,"weight":0.269,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5dcbd6dddbd3d91b3e5468de":{"id":"5dcbd6dddbd3d91b3e5468de","name":"MDR pistol grip (Black)","value":13.383000000000001,"costPerSlot":15423,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5dcbe9431e1f4616d354987e":{"id":"5dcbe9431e1f4616d354987e","name":"MDR 7.62x51 16 inch barrel","value":10.112333333333332,"costPerSlot":16422.333333333332,"weight":0.62,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5dcbe965e4ed22586443a79d":{"id":"5dcbe965e4ed22586443a79d","name":"AR-10 Desert Tech 7.62x51 flash hider","value":8.171000000000001,"costPerSlot":10271,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de652c31b7e3716273428be":{"id":"5de652c31b7e3716273428be","name":"Molot Arms VPO-215 Gornostay .366 TKM bolt-action rifle","value":14.090000000000003,"costPerSlot":22740,"weight":3.3,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5de653abf76fdc1ce94a5a2a":{"id":"5de653abf76fdc1ce94a5a2a","name":"VPO-215 .366 TKM 4-round magazine","value":5.872000000000001,"costPerSlot":7972,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de65547883dde217541644b":{"id":"5de65547883dde217541644b","name":"VPO-215-02 .366TKM 600mm barrel","value":-4.9,"costPerSlot":1700,"weight":1.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5de6556a205ddc616a6bc4f7":{"id":"5de6556a205ddc616a6bc4f7","name":"VPO-215 thread protector","value":-1.034,"costPerSlot":971,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de6558e9f98ac2bc65950fc":{"id":"5de6558e9f98ac2bc65950fc","name":"VPO-215 scope rail mount","value":-3.295,"costPerSlot":750,"weight":0.09,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5de655be4a9f347bc92edb88":{"id":"5de655be4a9f347bc92edb88","name":"VPO-215 wooden stock","value":-8.0375,"costPerSlot":587.5,"weight":1.25,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5de7bd7bfd6b4e6e2276dc25":{"id":"5de7bd7bfd6b4e6e2276dc25","name":"B&T MP9-N 9x19 submachine gun","value":37.459,"costPerSlot":41164,"weight":1.4100000000000001,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5de8e67c4a9f347bc92edbd7":{"id":"5de8e67c4a9f347bc92edbd7","name":"MP9-N 9x19 upper receiver","value":-1.505,"costPerSlot":2630,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5de8e8dafd6b4e6e2276dc32":{"id":"5de8e8dafd6b4e6e2276dc32","name":"MP9 9x19 15-round magazine","value":-0.33000000000000007,"costPerSlot":1700,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de8ea8ffd6b4e6e2276dc35":{"id":"5de8ea8ffd6b4e6e2276dc35","name":"MP9 9x19 20-round magazine","value":-0.08350000000000013,"costPerSlot":1950,"weight":0.067,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de8eaadbbaf010b10528a6d":{"id":"5de8eaadbbaf010b10528a6d","name":"MP9 9x19 25-round magazine","value":2.4635000000000007,"costPerSlot":6499.5,"weight":0.072,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5de8eac42a78646d96665d91":{"id":"5de8eac42a78646d96665d91","name":"MP9 9x19 30-round magazine","value":6.8055,"costPerSlot":10845.5,"weight":0.08,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5de8f237bbaf010b10528a70":{"id":"5de8f237bbaf010b10528a70","name":"MP9 9x19 sound suppressor mount","value":16.45,"costPerSlot":18520,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de8f2d5b74cd90030650c72":{"id":"5de8f2d5b74cd90030650c72","name":"MP9 9x19 sound suppressor","value":10.3535,"costPerSlot":14498.5,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5de8fb539f98ac2bc659513a":{"id":"5de8fb539f98ac2bc659513a","name":"MP9 rear sight","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de8fbad2fbe23140d3ee9c4":{"id":"5de8fbad2fbe23140d3ee9c4","name":"MP9-N vertical foregrip","value":41.399,"costPerSlot":43439,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de8fbf2b74cd90030650c79":{"id":"5de8fbf2b74cd90030650c79","name":"MP9 bottom rail","value":-0.845,"costPerSlot":1200,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de8fc0b205ddc616a6bc51b":{"id":"5de8fc0b205ddc616a6bc51b","name":"MP9 side rail","value":7.975,"costPerSlot":10000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5de910da8b6c4240ba2651b5":{"id":"5de910da8b6c4240ba2651b5","name":"MP9 stock","value":-2.9,"costPerSlot":1175,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5de922d4b11454561e39239f":{"id":"5de922d4b11454561e39239f","name":"MP9 charging handle","value":-1.3599999999999999,"costPerSlot":650,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df24cf80dee1b22f862e9bc":{"id":"5df24cf80dee1b22f862e9bc","name":"ORSIS T-5000M 7.62x51 bolt-action sniper rifle","value":69.486,"costPerSlot":87436,"weight":5.899999999999999,"size":12,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5df256570dee1b22f862e9c4":{"id":"5df256570dee1b22f862e9c4","name":"ORSIS T-5000M 7.62x51 660mm barrel","value":-1.4593333333333334,"costPerSlot":5890.666666666667,"weight":2.7,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5df25b6c0b92095fd441e4cf":{"id":"5df25b6c0b92095fd441e4cf","name":"ORSIS T-5000M 7.62x51 5-round magazine","value":6.564,"costPerSlot":8739,"weight":0.35,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df25d3bfd6b4e6e2276dc9a":{"id":"5df25d3bfd6b4e6e2276dc9a","name":"ORSIS T-5000M handguard","value":-0.98,"costPerSlot":3250,"weight":0.46,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5df35ddddfc58d14537c2036":{"id":"5df35ddddfc58d14537c2036","name":"ORSIS T-5000M stock","value":-2.58,"costPerSlot":1575,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5df35e59c41b2312ea3334d5":{"id":"5df35e59c41b2312ea3334d5","name":"ORSIS T-5000M aluminium body","value":2.2800000000000002,"costPerSlot":6600,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5df35e7f2a78646d96665dd4":{"id":"5df35e7f2a78646d96665dd4","name":"ORSIS T-5000M 7.62x51 muzzle brake-compensator","value":2.8499999999999996,"costPerSlot":4899,"weight":0.098,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df35e970b92095fd441e4d2":{"id":"5df35e970b92095fd441e4d2","name":"ORSIS T-5000M scope mount","value":29.5465,"costPerSlot":33616.5,"weight":0.14,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5df35ea9c41b2312ea3334d8":{"id":"5df35ea9c41b2312ea3334d8","name":"ORSIS T-5000M long length rail","value":6.862,"costPerSlot":8887,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df35eb2b11454561e3923e2":{"id":"5df35eb2b11454561e3923e2","name":"ORSIS T-5000M medium length rail","value":2.418,"costPerSlot":4443,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df36948bb49d91fb446d5ad":{"id":"5df36948bb49d91fb446d5ad","name":"ORSIS T-5000M padded handguard grip","value":-0.18999999999999995,"costPerSlot":1850,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df38a5fb74cd90030650cb6":{"id":"5df38a5fb74cd90030650cb6","name":"ORSIS T-5000M pistol grip","value":97.404,"costPerSlot":99444,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df8a2ca86f7740bfe6df777":{"id":"5df8a2ca86f7740bfe6df777","name":"6B2 body armor (Flora)","value":5.189,"costPerSlot":19889,"weight":5.4,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5df8a42886f77412640e2e75":{"id":"5df8a42886f77412640e2e75","name":"Velocity Systems MPPV Multi-Purpose Patrol Vest (Wolf Grey)","value":106.77000000000001,"costPerSlot":91370,"weight":1.6,"size":12,"gridSize":24,"maxDim":4,"armorClass":0,"parentWeighting":1},"5df8a4d786f77412672a1e3b":{"id":"5df8a4d786f77412672a1e3b","name":"6Sh118 raid backpack (EMR)","value":157.65,"costPerSlot":144000,"weight":3.5,"size":42,"gridSize":48,"maxDim":7,"armorClass":0,"parentWeighting":2},"5df8a58286f77412631087ed":{"id":"5df8a58286f77412631087ed","name":"TSh-4M-L soft tank crew helmet","value":8.636000000000001,"costPerSlot":10086,"weight":0.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5df8a6a186f77412640e2e80":{"id":"5df8a6a186f77412640e2e80","name":"Christmas tree ornament (Red)","value":4.975,"costPerSlot":7000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df8a72c86f77412640e2e83":{"id":"5df8a72c86f77412640e2e83","name":"Christmas tree ornament (Silver)","value":7.975,"costPerSlot":10000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df8a77486f77412672a1e3f":{"id":"5df8a77486f77412672a1e3f","name":"Christmas tree ornament (Violet)","value":17.975,"costPerSlot":20000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df8ce05b11454561e39243b":{"id":"5df8ce05b11454561e39243b","name":"Knight's Armament Company SR-25 7.62x51 marksman rifle","value":82.981,"costPerSlot":113911,"weight":3.8599999999999994,"size":24,"gridSize":0,"maxDim":8,"armorClass":0,"parentWeighting":3},"5df8e053bb49d91fb446d6a6":{"id":"5df8e053bb49d91fb446d6a6","name":"AR-10 KAC charging handle","value":-1.1705,"costPerSlot":850,"weight":0.041,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df8e085bb49d91fb446d6a8":{"id":"5df8e085bb49d91fb446d6a8","name":"AR-10 KAC ambidextrous charging handle","value":7.597000000000001,"costPerSlot":9620,"weight":0.046,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df8e4080b92095fd441e594":{"id":"5df8e4080b92095fd441e594","name":"SR-25 7.62x51 upper receiver","value":-0.9250000000000003,"costPerSlot":3400,"weight":0.65,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5df8f535bb49d91fb446d6b0":{"id":"5df8f535bb49d91fb446d6b0","name":"AR-10 7.62x51 KAC 10-round steel magazine","value":7.339,"costPerSlot":9544,"weight":0.41,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5df8f541c41b2312ea3335e3":{"id":"5df8f541c41b2312ea3335e3","name":"AR-10 7.62x51 KAC 20-round steel magazine","value":2.2310000000000008,"costPerSlot":6491,"weight":0.52,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5df916dfbb49d91fb446d6b9":{"id":"5df916dfbb49d91fb446d6b9","name":"AR-10 KAC URX 4 14.5 inch handguard","value":6.307333333333334,"costPerSlot":12517.333333333334,"weight":0.42,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5df917564a9f347bc92edca3":{"id":"5df917564a9f347bc92edca3","name":"SR-25 7.62x51 16 inch barrel","value":3.0566666666666666,"costPerSlot":9566.666666666666,"weight":1.02,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5dfa397fb11454561e39246c":{"id":"5dfa397fb11454561e39246c","name":"SR-25 7.62x51 20 inch barrel","value":1.8447499999999994,"costPerSlot":10644.75,"weight":1.6,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5dfa3cd1b33c0951220c079b":{"id":"5dfa3cd1b33c0951220c079b","name":"AR-10 KAC QDC 7.62x51 Flash Suppressor Kit","value":9.225,"costPerSlot":11280,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5dfa3d2b0dee1b22f862eade":{"id":"5dfa3d2b0dee1b22f862eade","name":"KAC PRS/QDC 7.62x51 sound suppressor","value":28.442999999999998,"costPerSlot":32738,"weight":0.59,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5dfa3d45dfc58d14537c20b0":{"id":"5dfa3d45dfc58d14537c20b0","name":"AR-10 KAC Low Profile Gas Block","value":20.8265,"costPerSlot":22851,"weight":0.049,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5dfa3d7ac41b2312ea33362a":{"id":"5dfa3d7ac41b2312ea33362a","name":"KAC Folding Micro rear sight","value":25.737000000000002,"costPerSlot":27777,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5dfa3d950dee1b22f862eae0":{"id":"5dfa3d950dee1b22f862eae0","name":"KAC Folding Micro front sight","value":67.38600000000001,"costPerSlot":69421,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5dfcd0e547101c39625f66f9":{"id":"5dfcd0e547101c39625f66f9","name":"SVD SAG MK1 chassis","value":3.671333333333333,"costPerSlot":10116.333333333334,"weight":0.89,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5dfce88fe9dc277128008b2e":{"id":"5dfce88fe9dc277128008b2e","name":"SVDS custom cut dust cover","value":4.361000000000001,"costPerSlot":8386,"weight":0.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5dfe14f30b92095fd441edaf":{"id":"5dfe14f30b92095fd441edaf","name":"ETMI-019 shotgun rail mount","value":3.6864999999999997,"costPerSlot":5713,"weight":0.053,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5dfe6104585a0c3e995c7b82":{"id":"5dfe6104585a0c3e995c7b82","name":"NcSTAR ADO P4 Sniper 3-9x42 riflescope","value":21.3745,"costPerSlot":25672,"weight":0.595,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5dff772da3651922b360bf91":{"id":"5dff772da3651922b360bf91","name":"VOMZ Pilad 4x32 25.4mm riflescope","value":3.0789999999999997,"costPerSlot":7234,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5dff77c759400025ea5150cf":{"id":"5dff77c759400025ea5150cf","name":"Leapers UTG 25mm ring scope mount","value":-0.5750000000000002,"costPerSlot":3520,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5dff8db859400025ea5150d4":{"id":"5dff8db859400025ea5150d4","name":"SVD SAG low profile sidemount","value":20.971500000000002,"costPerSlot":23054,"weight":0.165,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e00903ae9dc277128008b87":{"id":"5e00903ae9dc277128008b87","name":"B&T MP9 9x19 submachine gun","value":36.91,"costPerSlot":40555,"weight":1.29,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5e0090f7e9dc277128008b93":{"id":"5e0090f7e9dc277128008b93","name":"MP9 9x19 upper receiver","value":-1.6550000000000002,"costPerSlot":2440,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e00c1ad86f774747333222c":{"id":"5e00c1ad86f774747333222c","name":"Team Wendy EXFIL Ballistic Helmet (Black)","value":15.294,"costPerSlot":16884,"weight":1.18,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5e00cdd986f7747473332240":{"id":"5e00cdd986f7747473332240","name":"Team Wendy EXFIL Ballistic face shield (Black)","value":50.0125,"costPerSlot":24412.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5e00cfa786f77469dc6e5685":{"id":"5e00cfa786f77469dc6e5685","name":"Team Wendy EXFIL Ear Covers (Black)","value":37.32575,"costPerSlot":13411.75,"weight":0.172,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5e01e9e273d8eb11426f5bc3":{"id":"5e01e9e273d8eb11426f5bc3","name":"SVDS Rotor 43 thread adapter","value":13.224,"costPerSlot":15314,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e01ea19e9dc277128008c0b":{"id":"5e01ea19e9dc277128008c0b","name":"Rotor 43 7.62x54R sound suppressor","value":20.8405,"costPerSlot":25245.5,"weight":0.81,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e01ef6886f77445f643baa4":{"id":"5e01ef6886f77445f643baa4","name":"Team Wendy EXFIL Ballistic Helmet (Coyote Brown)","value":3.4780000000000006,"costPerSlot":5068,"weight":1.18,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5e01f31d86f77465cf261343":{"id":"5e01f31d86f77465cf261343","name":"Team Wendy EXFIL Ear Covers (Coyote Brown)","value":36.2785,"costPerSlot":12364.5,"weight":0.172,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5e01f37686f774773c6f6c15":{"id":"5e01f37686f774773c6f6c15","name":"Team Wendy EXFIL Ballistic face shield (Coyote Brown)","value":50.0125,"costPerSlot":24412.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"5e023cf8186a883be655e54f":{"id":"5e023cf8186a883be655e54f","name":"7.62x54mm R T-46M gzh","value":8.474499999999999,"costPerSlot":487,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e023d34e8a400319a28ed44":{"id":"5e023d34e8a400319a28ed44","name":"7.62x54mm R BT gzh","value":9.168,"costPerSlot":1180,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e023d48186a883be655e551":{"id":"5e023d48186a883be655e551","name":"7.62x54mm R BS gs","value":9.9675,"costPerSlot":1980,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e023e53d4353e3302577c4c":{"id":"5e023e53d4353e3302577c4c","name":"7.62x51mm BCP FMJ","value":8.4955,"costPerSlot":507,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e023e6e34d52a55c3304f71":{"id":"5e023e6e34d52a55c3304f71","name":"7.62x51mm TCW SP","value":8.2845,"costPerSlot":296,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e023e88277cce2b522ff2b1":{"id":"5e023e88277cce2b522ff2b1","name":"7.62x51mm Ultra Nosler","value":8.2385,"costPerSlot":249,"weight":0.021,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e208b9842457a4a7a33d074":{"id":"5e208b9842457a4a7a33d074","name":"AK Hexagon DTKP MK.2 7.62x39 sound suppressor","value":21.651,"costPerSlot":25857,"weight":0.412,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e217ba4c1434648c13568cd":{"id":"5e217ba4c1434648c13568cd","name":"AKM/AK-74 Hexagon \"Kocherga\" stock (Anodized Red)","value":9.3,"costPerSlot":13390,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2192a498a36665e8337386":{"id":"5e2192a498a36665e8337386","name":"AK KGB MG-47 pistol grip (Anodized Red)","value":37.1845,"costPerSlot":39261,"weight":0.153,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e21a3c67e40bd02257a008a":{"id":"5e21a3c67e40bd02257a008a","name":"AK 7.62x39 Magpul PMAG 30 GEN M3 30-round magazine (Banana)","value":22.034499999999998,"costPerSlot":26134.5,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e21ca18e4d47f0da15e77dd":{"id":"5e21ca18e4d47f0da15e77dd","name":"AK CNC Warrior 5.56x45 muzzle device adapter","value":14.273,"costPerSlot":16323,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e2aedd986f7746d404f3aa4":{"id":"5e2aedd986f7746d404f3aa4","name":"GreenBat lithium battery","value":62.0445,"costPerSlot":64066,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e2aee0a86f774755a234b62":{"id":"5e2aee0a86f774755a234b62","name":"Cyclon rechargeable battery","value":37.65,"costPerSlot":42500,"weight":1.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2aef7986f7746d3f3c33f5":{"id":"5e2aef7986f7746d3f3c33f5","name":"Repellent","value":11.7085,"costPerSlot":15783.5,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2af00086f7746d3f3c33f7":{"id":"5e2af00086f7746d3f3c33f7","name":"Smoked Chimney drain cleaner","value":0.35350000000000037,"costPerSlot":4728.5,"weight":0.75,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2af02c86f7746d420957d4":{"id":"5e2af02c86f7746d420957d4","name":"Pack of chlorine","value":1.3250000000000002,"costPerSlot":5500,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2af22086f7746d3f3c33fa":{"id":"5e2af22086f7746d3f3c33fa","name":"Tube of Poxeram cold welding","value":17.39,"costPerSlot":19400,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e2af29386f7746d4159f077":{"id":"5e2af29386f7746d4159f077","name":"KEKTAPE duct tape","value":23.229000000000003,"costPerSlot":25304,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e2af2bc86f7746d3f3c33fc":{"id":"5e2af2bc86f7746d3f3c33fc","name":"Hunting matches","value":4.523499999999999,"costPerSlot":6526,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e2af37686f774755a234b65":{"id":"5e2af37686f774755a234b65","name":"SurvL Survivor Lighter","value":16.939999999999998,"costPerSlot":18970,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e2af41e86f774755a234b67":{"id":"5e2af41e86f774755a234b67","name":"Cordura polyamide fabric","value":6.3375,"costPerSlot":10392.5,"weight":0.11,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2af47786f7746d404f3aaa":{"id":"5e2af47786f7746d404f3aaa","name":"Fleece fabric","value":-0.5149999999999997,"costPerSlot":3510,"weight":0.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2af4a786f7746d3f3c3400":{"id":"5e2af4a786f7746d3f3c3400","name":"Ripstop fabric","value":6.474,"costPerSlot":10519,"weight":0.09,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2af4d286f7746d4159f07a":{"id":"5e2af4d286f7746d4159f07a","name":"Aramid fiber fabric","value":0.33000000000000007,"costPerSlot":4400,"weight":0.14,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e2af51086f7746d3f3c3402":{"id":"5e2af51086f7746d3f3c3402","name":"UZRGM grenade fuze","value":21.3275,"costPerSlot":23355,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e2af55f86f7746d4159f07c":{"id":"5e2af55f86f7746d4159f07c","name":"Grenade case","value":126.36666666666667,"costPerSlot":56666.666666666664,"weight":3,"size":9,"gridSize":64,"maxDim":3,"armorClass":0,"parentWeighting":0},"5e32f56fcb6d5863cc5e5ee4":{"id":"5e32f56fcb6d5863cc5e5ee4","name":"VOG-17 Khattabka improvised hand grenade","value":37.147999999999996,"costPerSlot":29288,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e340dcdcb6d5863cc5e5efb":{"id":"5e340dcdcb6d5863cc5e5efb","name":"VOG-25 Khattabka improvised hand grenade","value":48.819,"costPerSlot":40944,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e42c71586f7747f245e1343":{"id":"5e42c71586f7747f245e1343","name":"ULTRA medical storage key","value":233.309,"costPerSlot":235314,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e42c81886f7742a01529f57":{"id":"5e42c81886f7742a01529f57","name":"Object #11SR keycard","value":97.995,"costPerSlot":100000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e42c83786f7742a021fdf3c":{"id":"5e42c83786f7742a021fdf3c","name":"Object #21WS keycard","value":65.373,"costPerSlot":67378,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e4abb5086f77406975c9342":{"id":"5e4abb5086f77406975c9342","name":"LBT-6094A Slick Plate Carrier (Black)","value":146.834,"costPerSlot":159484,"weight":1.3,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5e4abc1f86f774069619fbaa":{"id":"5e4abc1f86f774069619fbaa","name":"Spiritus Systems Bank Robber chest rig (MultiCam Black)","value":20.884999999999998,"costPerSlot":18835,"weight":0.7,"size":6,"gridSize":8,"maxDim":3,"armorClass":0,"parentWeighting":1},"5e4abc6786f77406812bd572":{"id":"5e4abc6786f77406812bd572","name":"LBT-2670 Slim Field Med Pack (Black)","value":86.81400000000001,"costPerSlot":48374,"weight":1.92,"size":20,"gridSize":48,"maxDim":5,"armorClass":0,"parentWeighting":2},"5e4abfed86f77406a2713cf7":{"id":"5e4abfed86f77406a2713cf7","name":"Splav Tarzan M22 chest rig (Smog)","value":22.455,"costPerSlot":19980,"weight":1.45,"size":12,"gridSize":14,"maxDim":4,"armorClass":0,"parentWeighting":1},"5e4ac41886f77406a511c9a8":{"id":"5e4ac41886f77406a511c9a8","name":"Ars Arma CPC MOD.1 plate carrier (A-TACS FG)","value":248.36800000000002,"costPerSlot":234843,"weight":2.75,"size":12,"gridSize":23,"maxDim":4,"armorClass":0,"parentWeighting":1},"5e4bfc1586f774264f7582d3":{"id":"5e4bfc1586f774264f7582d3","name":"MSA Gallet TC 800 High Cut combat helmet (Black)","value":59.784,"costPerSlot":61369,"weight":1.17,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5e4d34ca86f774264f758330":{"id":"5e4d34ca86f774264f758330","name":"Walker's Razor Digital headset","value":7.5600000000000005,"costPerSlot":8775,"weight":0.43,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5e54f62086f774219b0f1937":{"id":"5e54f62086f774219b0f1937","name":"Raven figurine","value":19.79,"costPerSlot":24000,"weight":0.42,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e54f6af86f7742199090bf3":{"id":"5e54f6af86f7742199090bf3","name":"Can of Dr. Lupo's coffee beans","value":49.7,"costPerSlot":52000,"weight":0.6,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e54f76986f7740366043752":{"id":"5e54f76986f7740366043752","name":"Shroud half-mask","value":44.95,"costPerSlot":42000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5e54f79686f7744022011103":{"id":"5e54f79686f7744022011103","name":"Pestily plague mask","value":93.81,"costPerSlot":94900,"weight":0.18,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5e56991336989c75ab4f03f6":{"id":"5e56991336989c75ab4f03f6","name":"SVD modernization kit handguard","value":5.566000000000001,"costPerSlot":9806,"weight":0.48,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e5699df2161e06ac158df6f":{"id":"5e5699df2161e06ac158df6f","name":"SVD CAA XRS-DRG handguard","value":1.3179999999999996,"costPerSlot":5643,"weight":0.65,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e569a0156edd02abe09f27d":{"id":"5e569a0156edd02abe09f27d","name":"SVD modernization kit top rail","value":22.11,"costPerSlot":24230,"weight":0.24,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e569a132642e66b0b68015c":{"id":"5e569a132642e66b0b68015c","name":"SVD CAA DRG L-1 barrel mount rail","value":12.9525,"costPerSlot":14990,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e569a2e56edd02abe09f280":{"id":"5e569a2e56edd02abe09f280","name":"SVD CAA XD RGL receiver mount","value":10.7865,"costPerSlot":12899,"weight":0.225,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e71f6be86f77429f2683c44":{"id":"5e71f6be86f77429f2683c44","name":"Twitch Rivals 2020 mask","value":26.9,"costPerSlot":24000,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5e71f70186f77429ee09f183":{"id":"5e71f70186f77429ee09f183","name":"Twitch Rivals 2020 glasses","value":26.583000000000002,"costPerSlot":25600,"weight":0.034,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5e71fad086f77422443d4604":{"id":"5e71fad086f77422443d4604","name":"Twitch Rivals 2020 half-mask","value":34.95,"costPerSlot":32000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5e81c3cbac2bb513793cdc75":{"id":"5e81c3cbac2bb513793cdc75","name":"Colt M1911A1 .45 ACP pistol","value":24.281000000000002,"costPerSlot":25888,"weight":1.2139999999999997,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5e81c4ca763d9f754677befa":{"id":"5e81c4ca763d9f754677befa","name":"M1911A1 .45 ACP 7-round magazine","value":-0.98,"costPerSlot":1100,"weight":0.16,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81c519cb2b95385c177551":{"id":"5e81c519cb2b95385c177551","name":"M1911A1 .45 ACP 127mm barrel","value":-0.34750000000000014,"costPerSlot":1700,"weight":0.095,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81c539cb2b95385c177553":{"id":"5e81c539cb2b95385c177553","name":"M1911A1 slide stop","value":-1.7045,"costPerSlot":300,"weight":0.009,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81c550763d9f754677befd":{"id":"5e81c550763d9f754677befd","name":"M1911A1 hammer","value":-1.659,"costPerSlot":350,"weight":0.018,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81c6a2ac2bb513793cdc7f":{"id":"5e81c6a2ac2bb513793cdc7f","name":"M1911A1 trigger","value":-1.557,"costPerSlot":450,"weight":0.014,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81c6bf763d9f754677beff":{"id":"5e81c6bf763d9f754677beff","name":"M1911A1 side grips","value":-1.335,"costPerSlot":800,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81ebcd8e146c7080625e15":{"id":"5e81ebcd8e146c7080625e15","name":"FN40GL Mk2 40mm grenade launcher","value":10.833333333333332,"costPerSlot":18333.333333333332,"weight":3,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"5e81edc13397a21db957f6a1":{"id":"5e81edc13397a21db957f6a1","name":"M1911A1 pistol slide","value":-2.6505,"costPerSlot":1554.5,"weight":0.41,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e81ee213397a21db957f6a6":{"id":"5e81ee213397a21db957f6a6","name":"M1911A1 front sight","value":-1.4994999999999998,"costPerSlot":502,"weight":0.003,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81ee4dcb2b95385c177582":{"id":"5e81ee4dcb2b95385c177582","name":"M1911A1 rear sight","value":-1.3980000000000001,"costPerSlot":604,"weight":0.004,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e81f423763d9f754677bf2e":{"id":"5e81f423763d9f754677bf2e","name":".45 ACP Match FMJ","value":8.2185,"costPerSlot":226,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e831507ea0a7c419c2f9bd9":{"id":"5e831507ea0a7c419c2f9bd9","name":"Esmarch tourniquet","value":9.069,"costPerSlot":3135,"weight":0.132,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5e8488fa988a8701445df1e4":{"id":"5e8488fa988a8701445df1e4","name":"CALOK-B hemostatic applicator","value":29.160500000000003,"costPerSlot":23182,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5e848cc2988a8701445df1e8":{"id":"5e848cc2988a8701445df1e8","name":"TOZ KS-23M 23x75mm pump-action shotgun","value":-5.069599999999999,"costPerSlot":3680.4,"weight":3.5,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5e848d1c264f7c180b5e35a9":{"id":"5e848d1c264f7c180b5e35a9","name":"KS-23 23x75 510mm barrel","value":-3.755,"costPerSlot":2700,"weight":0.91,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5e848d2eea0a7c419c2f9bfd":{"id":"5e848d2eea0a7c419c2f9bfd","name":"KS-23 23x75 700mm barrel","value":-9.1344,"costPerSlot":1480.6,"weight":1.23,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"5e848d51e4dbc5266a4ec63b":{"id":"5e848d51e4dbc5266a4ec63b","name":"KS-23M forestock","value":-3.24,"costPerSlot":1050,"weight":0.58,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e848d99865c0f329958c83b":{"id":"5e848d99865c0f329958c83b","name":"KS-23M pistol grip","value":86.813,"costPerSlot":88888,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e848db4681bea2ada00daa9":{"id":"5e848db4681bea2ada00daa9","name":"KS-23 wooden stock","value":-3.477,"costPerSlot":743,"weight":0.44,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e848dc4e4dbc5266a4ec63d":{"id":"5e848dc4e4dbc5266a4ec63d","name":"KS-23M wire stock","value":-3.1799999999999997,"costPerSlot":950,"weight":0.26,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e85a9a6eacf8c039e4e2ac1":{"id":"5e85a9a6eacf8c039e4e2ac1","name":"23x75mm Shrapnel-10 buckshot","value":8.456,"costPerSlot":496,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e85a9f4add9fe03027d9bf1":{"id":"5e85a9f4add9fe03027d9bf1","name":"23x75mm Zvezda flashbang round","value":8.945,"costPerSlot":980,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e85aa1a988a8701445df1f5":{"id":"5e85aa1a988a8701445df1f5","name":"23x75mm Barrikada slug","value":8.384,"costPerSlot":424,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e85aac65505fa48730d8af2":{"id":"5e85aac65505fa48730d8af2","name":"!!!DO_NOT_USE!!!23x75mm \"Cheremukha-7M\"","value":7.97,"costPerSlot":0,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5e870397991fd70db46995c8":{"id":"5e870397991fd70db46995c8","name":"Mossberg 590A1 12ga pump-action shotgun","value":-1.9933999999999994,"costPerSlot":6747.6,"weight":3.482,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5e87071478f43e51ca2de5e1":{"id":"5e87071478f43e51ca2de5e1","name":"Mossberg 590A1 12ga 20 inch barrel","value":-3.1333333333333333,"costPerSlot":3266.6666666666665,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5e87076ce2db31558c75a11d":{"id":"5e87076ce2db31558c75a11d","name":"Mossberg 590A1 SpeedFeed short handguard","value":-3.6239999999999997,"costPerSlot":701,"weight":0.65,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e87080c81c4ed43e83cefda":{"id":"5e87080c81c4ed43e83cefda","name":"Mossberg 590A1 12ga 8-shell magazine cap","value":-0.625,"costPerSlot":1500,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e8708d4ae379e67d22e0102":{"id":"5e8708d4ae379e67d22e0102","name":"Mossberg 590 Ghost Ring front sight","value":-1.31,"costPerSlot":700,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e87114fe2db31558c75a120":{"id":"5e87114fe2db31558c75a120","name":"Mossberg 590 Ghost Ring rear sight","value":-1.2109999999999999,"costPerSlot":800,"weight":0.022,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5e87116b81c4ed43e83cefdd":{"id":"5e87116b81c4ed43e83cefdd","name":"Mossberg 590A1 polymer stock","value":-3.5700000000000003,"costPerSlot":750,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5e8f3423fd7471236e6e3b64":{"id":"5e8f3423fd7471236e6e3b64","name":"Bottle of Norvinsky Yadreniy premium kvass (0.6L)","value":18.3885,"costPerSlot":17699,"weight":0.621,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5e99711486f7744bfc4af328":{"id":"5e99711486f7744bfc4af328","name":"Sanitar's first aid kit","value":-14.399999999999999,"costPerSlot":0,"weight":0.8,"size":11,"gridSize":0,"maxDim":11,"armorClass":0,"parentWeighting":8},"5e99735686f7744bfc4af32c":{"id":"5e99735686f7744bfc4af32c","name":"Sanitar kit","value":-14.2,"costPerSlot":0,"weight":0.4,"size":11,"gridSize":0,"maxDim":11,"armorClass":0,"parentWeighting":8},"5e997f0b86f7741ac73993e2":{"id":"5e997f0b86f7741ac73993e2","name":"Sanitar's bag","value":48.155,"costPerSlot":46075,"weight":1.44,"size":16,"gridSize":16,"maxDim":4,"armorClass":0,"parentWeighting":2},"5e9dacf986f774054d6b89f4":{"id":"5e9dacf986f774054d6b89f4","name":"FORT Defender-2 body armor","value":55.22300000000001,"costPerSlot":74073,"weight":5.7,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5e9db13186f7742f845ee9d3":{"id":"5e9db13186f7742f845ee9d3","name":"LBT-1961A Load Bearing Chest Rig (MAS Grey)","value":121.614,"costPerSlot":109894,"weight":1.36,"size":9,"gridSize":18,"maxDim":3,"armorClass":0,"parentWeighting":1},"5e9dcf5986f7746c417435b3":{"id":"5e9dcf5986f7746c417435b3","name":"LBT-8005A Day Pack backpack (MultiCam Black)","value":30.679000000000002,"costPerSlot":27964,"weight":0.57,"size":20,"gridSize":20,"maxDim":5,"armorClass":0,"parentWeighting":2},"5ea02bb600685063ec28bfa1":{"id":"5ea02bb600685063ec28bfa1","name":"PPSh-41 7.62x25 269mm barrel","value":-0.15500000000000025,"costPerSlot":4100,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ea034eb5aad6446a939737b":{"id":"5ea034eb5aad6446a939737b","name":"PPSh-41 7.62x25 35-round magazine","value":0.5975000000000001,"costPerSlot":4787.5,"weight":0.38,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ea034f65aad6446a939737e":{"id":"5ea034f65aad6446a939737e","name":"PPSh-41 7.62x25 71-round drum magazine","value":-0.476,"costPerSlot":5974,"weight":0.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ea03e5009aa976f2e7a514b":{"id":"5ea03e5009aa976f2e7a514b","name":"PPSh-41 dust cover","value":-3.95,"costPerSlot":600,"weight":1.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ea03e9400685063ec28bfa4":{"id":"5ea03e9400685063ec28bfa4","name":"PPSh-41 stock","value":-3.465,"costPerSlot":1060,"weight":1.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ea03f7400685063ec28bfa8":{"id":"5ea03f7400685063ec28bfa8","name":"PPSh-41 7.62x25 submachine gun","value":12.895000000000003,"costPerSlot":29920,"weight":4.05,"size":12,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"5ea058e01dbce517f324b3e2":{"id":"5ea058e01dbce517f324b3e2","name":"Tac-Kek Heavy Trooper mask for Ops-Core-type helmets","value":31.7575,"costPerSlot":17957.5,"weight":0.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":0},"5ea05cf85ad9772e6624305d":{"id":"5ea05cf85ad9772e6624305d","name":"Tac-Kek FAST MT helmet (Replica)","value":30.076,"costPerSlot":31301,"weight":0.45,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5ea16acdfadf1d18c87b0784":{"id":"5ea16acdfadf1d18c87b0784","name":"AR-15 Geissele SMR MK16 9.5 inch M-LOK handguard (DDC)","value":7.164,"costPerSlot":11331.5,"weight":0.335,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ea16ada09aa976f2e7a51be":{"id":"5ea16ada09aa976f2e7a51be","name":"AR-15 Geissele SMR MK16 13.5 inch M-LOK handguard (DDC)","value":6.8870000000000005,"costPerSlot":13127,"weight":0.48,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5ea16d4d5aad6446a939753d":{"id":"5ea16d4d5aad6446a939753d","name":"AR-15 Geissele ACH charging handle (DDC)","value":40.727000000000004,"costPerSlot":42742,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ea172e498dacb342978818e":{"id":"5ea172e498dacb342978818e","name":"AR-15 SureFire SF4P 5.56x45 flash hider","value":46.384,"costPerSlot":48414,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ea17bbc09aa976f2e7a51cd":{"id":"5ea17bbc09aa976f2e7a51cd","name":"SureFire SOCOM556-RC2 5.56x45 sound suppressor","value":20.509,"costPerSlot":24750,"weight":0.482,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ea17ca01412a1425304d1c0":{"id":"5ea17ca01412a1425304d1c0","name":"Diamond Age Bastion helmet (Black)","value":78.048,"costPerSlot":79583,"weight":1.07,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5ea18c84ecf1982c7712d9a2":{"id":"5ea18c84ecf1982c7712d9a2","name":"Diamond Age Bastion helmet armor plate","value":116.17,"costPerSlot":60665,"weight":0.99,"size":2,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"5ea2a8e200685063ec28c05a":{"id":"5ea2a8e200685063ec28c05a","name":".45 ACP RIP","value":8.7355,"costPerSlot":745,"weight":0.019,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ed515c8d380ab312177c0fa":{"id":"5ed515c8d380ab312177c0fa","name":"3-(b-TG) stimulant injector","value":37.626000000000005,"costPerSlot":31651,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5ed515e03a40a50460332579":{"id":"5ed515e03a40a50460332579","name":"L1 (Norepinephrine) injector","value":43.545,"costPerSlot":37570,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5ed515ece452db0eb56fc028":{"id":"5ed515ece452db0eb56fc028","name":"P22 (Product 22) stimulant injector","value":46.275000000000006,"costPerSlot":40300,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5ed515f6915ec335206e4152":{"id":"5ed515f6915ec335206e4152","name":"AHF1-M stimulant injector","value":51.475,"costPerSlot":45500,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5ed5160a87bb8443d10680b5":{"id":"5ed5160a87bb8443d10680b5","name":"Meldonin injector","value":61.875,"costPerSlot":55900,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5ed51652f6c34d2cc26336a1":{"id":"5ed51652f6c34d2cc26336a1","name":"M.U.L.E. stimulant injector","value":118.609,"costPerSlot":112634,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5ed5166ad380ab312177c100":{"id":"5ed5166ad380ab312177c100","name":"Obdolbos cocktail injector","value":67.868,"costPerSlot":61893,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5ede4739e0350d05467f73e8":{"id":"5ede4739e0350d05467f73e8","name":"40x46mm M406 (HE) grenade","value":32.172,"costPerSlot":24287,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ede47405b097655935d7d16":{"id":"5ede47405b097655935d7d16","name":"40x46mm M441 (HE) grenade","value":29.135,"costPerSlot":21250,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ede474b0c226a66f5402622":{"id":"5ede474b0c226a66f5402622","name":"40x46mm M381 (HE) grenade","value":25.01,"costPerSlot":17125,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ede475339ee016e8c534742":{"id":"5ede475339ee016e8c534742","name":"40x46mm M576 (MP-APERS) grenade","value":27.155,"costPerSlot":19215,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ede475b549eed7c6d5c18fb":{"id":"5ede475b549eed7c6d5c18fb","name":"40x46mm M386 (HE) grenade","value":29.896,"costPerSlot":22011,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ede47641cf3836a88318df1":{"id":"5ede47641cf3836a88318df1","name":"!!!DO NOT USE!!!40x46 mm M716(Smoke)","value":7.89,"costPerSlot":0,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5ede7a8229445733cb4c18e2":{"id":"5ede7a8229445733cb4c18e2","name":"RB-PKPM marked key","value":549.368,"costPerSlot":551373,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ede7b0c6d23e5473e6e8c66":{"id":"5ede7b0c6d23e5473e6e8c66","name":"RB-RLSA key","value":74.995,"costPerSlot":77000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5eea21647547d6330471b3c9":{"id":"5eea21647547d6330471b3c9","name":"Mossberg 590A1 Magpul MOE forestock","value":0.3334999999999999,"costPerSlot":4633.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5eea217fc64c5d0dfc05712a":{"id":"5eea217fc64c5d0dfc05712a","name":"Mossberg 590A1 Magpul SGA stock","value":0.5225,"costPerSlot":4862.5,"weight":0.68,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5eeb2ff5ea4f8b73c827350b":{"id":"5eeb2ff5ea4f8b73c827350b","name":"Mossberg 590A1 Tactical rail","value":-4.020333333333333,"costPerSlot":2204.6666666666665,"weight":0.45,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5ef1b9f0c64c5d0dfc0571a1":{"id":"5ef1b9f0c64c5d0dfc0571a1","name":"Mossberg 590A1 Mesa Tactical LEO gen.1 stock adapter","value":16.771,"costPerSlot":18946,"weight":0.35,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef1ba28c64c5d0dfc0571a5":{"id":"5ef1ba28c64c5d0dfc0571a5","name":"Mesa Tactical Crosshair Hydraulic buffer tube","value":20.108500000000003,"costPerSlot":24258.5,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5ef32e4d1c1fd62aea6a150d":{"id":"5ef32e4d1c1fd62aea6a150d","name":"M1911A1 Caspian Arms Trik Trigger","value":1.6925000000000003,"costPerSlot":3700,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef3448ab37dfd6af863525c":{"id":"5ef3448ab37dfd6af863525c","name":"M1911A1 .45 ACP Mec-Gar 11-round magazine","value":-0.020000000000000018,"costPerSlot":2100,"weight":0.24,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef3553c43cb350a955a7ccb":{"id":"5ef3553c43cb350a955a7ccb","name":"M1911A1 Wilson Extended slide stop","value":-0.20499999999999985,"costPerSlot":1800,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef35bc243cb350a955a7ccd":{"id":"5ef35bc243cb350a955a7ccd","name":"M1911A1 Wilson Ultralight skeletonized hammer","value":2.8950000000000005,"costPerSlot":4900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef35d2ac64c5d0dfc0571b0":{"id":"5ef35d2ac64c5d0dfc0571b0","name":"M1911A1 Wilson Retro Commander hammer","value":-0.508,"costPerSlot":1500,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef35f46382a846010715a96":{"id":"5ef35f46382a846010715a96","name":"M1911A1 STI HEX hammer","value":1.991,"costPerSlot":4000,"weight":0.018,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef366938cef260c0642acad":{"id":"5ef366938cef260c0642acad","name":"M1911 Pachmayr American Legend Grip #423","value":0.8980000000000001,"costPerSlot":2998,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef369b08cef260c0642acaf":{"id":"5ef369b08cef260c0642acaf","name":"M1911A1 NcSTAR trigger guard mount","value":0.28000000000000025,"costPerSlot":2300,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef5d994dfbc9f3c660ded95":{"id":"5ef5d994dfbc9f3c660ded95","name":"M1911A1 Weigand Weig-a-tinny rail mount","value":0.8399999999999999,"costPerSlot":2900,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5ef61964ec7f42238c31e0c1":{"id":"5ef61964ec7f42238c31e0c1","name":"M1911 Anarchy Outdoors .45 ACP muzzle brake","value":2.6475,"costPerSlot":4700,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5efaf417aeb21837e749c7f2":{"id":"5efaf417aeb21837e749c7f2","name":"AK Zenit B-30 handguard with B-31S upper handguard rail","value":18.778,"costPerSlot":22973,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5efb0c1bd79ff02a1f5e68d9":{"id":"5efb0c1bd79ff02a1f5e68d9","name":"7.62x51mm M993","value":9.712,"costPerSlot":1723,"weight":0.022,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5efb0cabfb3e451d70735af5":{"id":"5efb0cabfb3e451d70735af5","name":".45 ACP AP","value":8.9975,"costPerSlot":1005,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5efb0d4f4bc50b58e81710f3":{"id":"5efb0d4f4bc50b58e81710f3","name":".45 ACP Lasermatch FMJ","value":8.1895,"costPerSlot":197,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5efb0da7a29a85116f6ea05f":{"id":"5efb0da7a29a85116f6ea05f","name":"9x19mm PBP gzh","value":9.3035,"costPerSlot":1308,"weight":0.009,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5efb0e16aeb21837e749c7ff":{"id":"5efb0e16aeb21837e749c7ff","name":"9x19mm QuakeMaker","value":8.5445,"costPerSlot":551,"weight":0.013,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5efb0fc6aeb21837e749c801":{"id":"5efb0fc6aeb21837e749c801","name":".45 ACP Hydra-Shok","value":8.3265,"costPerSlot":335,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5efde6b4f5448336730dbd61":{"id":"5efde6b4f5448336730dbd61","name":"Keycard with a blue marking","value":96.16300000000001,"costPerSlot":98168,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5eff09cd30a7dc22fd1ddfed":{"id":"5eff09cd30a7dc22fd1ddfed","name":"Health Resort office key with a blue tape","value":121.299,"costPerSlot":123304,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f0596629e22f464da6bbdd9":{"id":"5f0596629e22f464da6bbdd9","name":".366 TKM AP-M","value":8.7105,"costPerSlot":720,"weight":0.019,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5f0c892565703e5c461894e9":{"id":"5f0c892565703e5c461894e9","name":"40x46mm M433 (HEDP) grenade","value":18.423000000000002,"costPerSlot":10538,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5f2a9575926fd9352339381f":{"id":"5f2a9575926fd9352339381f","name":"Kel-Tec RFB 7.62x51 rifle","value":44.155,"costPerSlot":55033,"weight":3.756,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"5f2aa43ba9b91d26f20ae6d2":{"id":"5f2aa43ba9b91d26f20ae6d2","name":"RFB thread spacer","value":8.0275,"costPerSlot":10073,"weight":0.091,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f2aa4464b50c14bcf07acdb":{"id":"5f2aa4464b50c14bcf07acdb","name":"RFB thread protector","value":7.991999999999999,"costPerSlot":9997,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f2aa4559b44de6b1b4e68d1":{"id":"5f2aa4559b44de6b1b4e68d1","name":"RFB 7.62x51 flash hider","value":7.134,"costPerSlot":9166,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f2aa46b878ef416f538b567":{"id":"5f2aa46b878ef416f538b567","name":"RFB 7.62x51 18 inch barrel","value":-1.2216666666666667,"costPerSlot":5233.333333333333,"weight":0.91,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5f2aa47a200e2c0ee46efa71":{"id":"5f2aa47a200e2c0ee46efa71","name":"RFB handguard","value":1.3319999999999999,"costPerSlot":5442.5,"weight":0.221,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5f2aa493cd375f14e15eea72":{"id":"5f2aa493cd375f14e15eea72","name":"RFB handguard rail mount","value":0.08749999999999991,"costPerSlot":2125,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f2aa49f9b44de6b1b4e68d4":{"id":"5f2aa49f9b44de6b1b4e68d4","name":"RFB scope rail mount","value":-2.7249999999999996,"costPerSlot":1320,"weight":0.09,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5f36a0e5fbf956000b716b65":{"id":"5f36a0e5fbf956000b716b65","name":"Colt M45A1 .45 ACP pistol","value":14.87,"costPerSlot":16464,"weight":1.1879999999999997,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5f3e76d86cda304dcc634054":{"id":"5f3e76d86cda304dcc634054","name":"M45A1 hammer","value":-1.5085,"costPerSlot":500,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e772a670e2a7b01739a52":{"id":"5f3e772a670e2a7b01739a52","name":"M45A1 trigger","value":-1.4565,"costPerSlot":550,"weight":0.013,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e777688ca2d00ad199d25":{"id":"5f3e777688ca2d00ad199d25","name":"M45A1 slide lock","value":-1.504,"costPerSlot":500,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e778efcd9b651187d7201":{"id":"5f3e778efcd9b651187d7201","name":"M45A1 Mil-Tac GVT G10 side grips","value":-0.9100000000000001,"costPerSlot":1200,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e77b26cda304dcc634057":{"id":"5f3e77b26cda304dcc634057","name":"M1911A1 .45 ACP Wilson Combat 7-round magazine","value":4.8149999999999995,"costPerSlot":6885,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e77f59103d430b93f94c1":{"id":"5f3e77f59103d430b93f94c1","name":"M1911A1 .45 ACP 141mm threaded barrel","value":6.805,"costPerSlot":8865,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e7801153b8571434a924c":{"id":"5f3e7801153b8571434a924c","name":"M1911A1 .45 ACP National Match 127mm barrel","value":42.35,"costPerSlot":44405,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e7823ddc4f03b010e2045":{"id":"5f3e7823ddc4f03b010e2045","name":"M45A1 pistol slide","value":-1.6849999999999996,"costPerSlot":2550,"weight":0.47,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5f3e7897ddc4f03b010e204a":{"id":"5f3e7897ddc4f03b010e204a","name":"M45A1 Novak Lomount rear sight","value":-1.2014999999999998,"costPerSlot":800,"weight":0.003,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f3e78a7fbf956000b716b8e":{"id":"5f3e78a7fbf956000b716b8e","name":"M45A1 Novak Lomount front sight","value":-1.251,"costPerSlot":750,"weight":0.002,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f4f9eb969cdc30ff33f09db":{"id":"5f4f9eb969cdc30ff33f09db","name":"EYE MK.2 professional hand-held compass","value":63.647000000000006,"costPerSlot":65700,"weight":0.106,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f5e45cc5021ce62144be7aa":{"id":"5f5e45cc5021ce62144be7aa","name":"LolKek 3F Transfer tourist backpack","value":24.301000000000002,"costPerSlot":23193,"weight":0.984,"size":12,"gridSize":12,"maxDim":4,"armorClass":0,"parentWeighting":2},"5f5e467b0bc58666c37e7821":{"id":"5f5e467b0bc58666c37e7821","name":"Eberlestock F5 Switchblade backpack (Dry Earth)","value":96.271,"costPerSlot":92087,"weight":1.632,"size":30,"gridSize":30,"maxDim":6,"armorClass":0,"parentWeighting":2},"5f5e46b96bdad616ad46d613":{"id":"5f5e46b96bdad616ad46d613","name":"Eberlestock F4 Terminator load bearing backpack (Tiger Stripe)","value":100.38300000000001,"costPerSlot":90480,"weight":4.194,"size":35,"gridSize":40,"maxDim":7,"armorClass":0,"parentWeighting":2},"5f5f41476bdad616ad46d631":{"id":"5f5f41476bdad616ad46d631","name":"NPP KlASS Korund-VM body armor (Black)","value":86.051,"costPerSlot":103001,"weight":1.9,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5f5f41f56760b4138443b352":{"id":"5f5f41f56760b4138443b352","name":"Direct Action Thunderbolt compact chest rig (Shadow Grey)","value":36.889,"costPerSlot":27399,"weight":0.62,"size":9,"gridSize":16,"maxDim":3,"armorClass":0,"parentWeighting":1},"5f60b34a41e30a4ab12a6947":{"id":"5f60b34a41e30a4ab12a6947","name":"Galvion Caiman Hybrid helmet (Grey)","value":1.0059999999999998,"costPerSlot":2566,"weight":1.12,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5f60b85bbdb8e27dee3dc985":{"id":"5f60b85bbdb8e27dee3dc985","name":"Galvion Caiman Hybrid Ballistic Applique","value":68.82499999999999,"costPerSlot":33165,"weight":0.68,"size":2,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"5f60bf4558eff926626a60f2":{"id":"5f60bf4558eff926626a60f2","name":"Galvion Caiman Fixed Arm Visor","value":29.317500000000003,"costPerSlot":13452.5,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":0},"5f60c076f2bcbb675b00dac2":{"id":"5f60c076f2bcbb675b00dac2","name":"Galvion Caiman Hybrid Ballistic Mandible Guard","value":21.552500000000002,"costPerSlot":8102.5,"weight":1.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":0},"5f60c74e3b85f6263c145586":{"id":"5f60c74e3b85f6263c145586","name":"Rys-T bulletproof helmet (Black)","value":6.65,"costPerSlot":8900,"weight":2.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5f60c85b58eff926626a60f7":{"id":"5f60c85b58eff926626a60f7","name":"Rys-T face shield","value":85.13,"costPerSlot":39730,"weight":1.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"5f60cd6cf2bcbb675b00dac6":{"id":"5f60cd6cf2bcbb675b00dac6","name":"Walker's XCEL 500BT Digital headset","value":13.78625,"costPerSlot":15031.25,"weight":0.49,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"5f60e6403b85f6263c14558c":{"id":"5f60e6403b85f6263c14558c","name":"Beret (Black)","value":19.846,"costPerSlot":16896,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5f60e7788adaa7100c3adb49":{"id":"5f60e7788adaa7100c3adb49","name":"Beret (Blue)","value":24.126,"costPerSlot":21176,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5f60e784f2bcbb675b00dac7":{"id":"5f60e784f2bcbb675b00dac7","name":"Beret (Olive Drab)","value":16.319,"costPerSlot":13369,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5f6331e097199b7db2128dc2":{"id":"5f6331e097199b7db2128dc2","name":"AK TDI X47 tactical handguard rail system","value":9.693999999999999,"costPerSlot":13904,"weight":0.42,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5f6336bbda967c74a42e9932":{"id":"5f6336bbda967c74a42e9932","name":"AR-10 Lancer LCH7 12.5 inch M-LOK handguard","value":7.414,"costPerSlot":13594,"weight":0.36,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5f6339d53ada5942720e2dc3":{"id":"5f6339d53ada5942720e2dc3","name":"Ferfrans CRD 5.56x45 Concussion Reduction Device","value":32.595,"costPerSlot":34665,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f633f68f5750b524b45f112":{"id":"5f633f68f5750b524b45f112","name":"AKM thread type JMac Customs RRD-4C 7.62x39 muzzle brake","value":26.656000000000002,"costPerSlot":28696,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f633f791b231926f2329f13":{"id":"5f633f791b231926f2329f13","name":"AK-74 thread type JMac Customs RRD-4C multi-caliber muzzle brake","value":23.3495,"costPerSlot":25392,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f633ff5c444ce7e3c30a006":{"id":"5f633ff5c444ce7e3c30a006","name":"AR-15 Rainier Arms Avalanche MOD2 charging handle","value":13.837000000000002,"costPerSlot":15851,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f63405df5750b524b45f114":{"id":"5f63405df5750b524b45f114","name":"VPO-101 SVD-style walnut stock","value":-7.1850000000000005,"costPerSlot":1350,"weight":1.07,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5f63407e1b231926f2329f15":{"id":"5f63407e1b231926f2329f15","name":"VPO-101 Rotor 43 7.62x51 sound suppressor","value":12.776500000000002,"costPerSlot":17226.5,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5f6340d3ca442212f4047eb2":{"id":"5f6340d3ca442212f4047eb2","name":"Tactical Dynamics Skeletonized Foregrip","value":18.621499999999997,"costPerSlot":20688,"weight":0.133,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f6341043ada5942720e2dc5":{"id":"5f6341043ada5942720e2dc5","name":"AK Aeroknox Scorpius pistol grip","value":14.73,"costPerSlot":16800,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f63418ef5750b524b45f116":{"id":"5f63418ef5750b524b45f116","name":"SOK-12 Bravo-18 aluminium handguard","value":5.859,"costPerSlot":10044,"weight":0.37,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5f6372e2865db925d54f3869":{"id":"5f6372e2865db925d54f3869","name":"AR-15 Ferfrans CQB 5.56x45 muzzle brake","value":19.703,"costPerSlot":21778,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f647d9f8499b57dc40ddb93":{"id":"5f647d9f8499b57dc40ddb93","name":"KS-23M 23x75 3-shell magazine cap","value":0.15000000000000036,"costPerSlot":2200,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f647f31b6238e5dd066e196":{"id":"5f647f31b6238e5dd066e196","name":"23x75mm Shrapnel-25 buckshot","value":8.173,"costPerSlot":213,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5f647fd3f6e4ab66c82faed6":{"id":"5f647fd3f6e4ab66c82faed6","name":"23x75mm Volna-R rubber slug","value":7.96,"costPerSlot":0,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5f745ee30acaeb0d490d8c5b":{"id":"5f745ee30acaeb0d490d8c5b","name":"Veritas guitar pick","value":52.9995,"costPerSlot":55000,"weight":0.001,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5f99418230835532b445e954":{"id":"5f99418230835532b445e954","name":"Rivals 2020 cap","value":4.595,"costPerSlot":1645,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5f994730c91ed922dd355de3":{"id":"5f994730c91ed922dd355de3","name":"Rivals 2020 beanie","value":4.2059999999999995,"costPerSlot":1256,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"5f9949d869e2777a0e779ba5":{"id":"5f9949d869e2777a0e779ba5","name":"Armband (Rivals 2020)","value":17.975,"costPerSlot":20000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fb64bc92b1b027b1f50bcf2":{"id":"5fb64bc92b1b027b1f50bcf2","name":"TDI KRISS Vector Gen.2 .45 ACP submachine gun","value":70.078,"costPerSlot":74401,"weight":2.6459999999999995,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5fb651b52b1b027b1f50bcff":{"id":"5fb651b52b1b027b1f50bcff","name":"Glock .45 ACP 13-round magazine","value":0.6040000000000001,"costPerSlot":2652,"weight":0.096,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fb651dc85f90547f674b6f4":{"id":"5fb651dc85f90547f674b6f4","name":"Glock .45 ACP KRISS G30 MagEx 30-round magazine","value":4.3535,"costPerSlot":8443.5,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fb65363d1409e5ca04b54f5":{"id":"5fb65363d1409e5ca04b54f5","name":"KRISS Vector .45 ACP 5 inch barrel","value":5.7225,"costPerSlot":9807.5,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fb653962b1b027b1f50bd03":{"id":"5fb653962b1b027b1f50bd03","name":"KRISS Vector .45 ACP 6 inch barrel","value":12.127500000000001,"costPerSlot":16232.5,"weight":0.21,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fb65424956329274326f316":{"id":"5fb65424956329274326f316","name":"KRISS Vector .45 ACP flash hider","value":-0.692,"costPerSlot":1340,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fb6548dd1409e5ca04b54f9":{"id":"5fb6548dd1409e5ca04b54f9","name":"KRISS Vector .45 ACP thread protector","value":-1.605,"costPerSlot":400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fb6558ad6f0b2136f2d7eb7":{"id":"5fb6558ad6f0b2136f2d7eb7","name":"KRISS Vector Gen.2 folding stock","value":4.0075,"costPerSlot":8157.5,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fb655a72b1b027b1f50bd06":{"id":"5fb655a72b1b027b1f50bd06","name":"KRISS Vector Pistol Sling adapter","value":-0.625,"costPerSlot":1500,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fb655b748c711690e3a8d5a":{"id":"5fb655b748c711690e3a8d5a","name":"KRISS Vector non-folding stock adapter","value":18.457,"costPerSlot":20597,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fb6564947ce63734e3fa1da":{"id":"5fb6564947ce63734e3fa1da","name":"KRISS Defiance low profile flip-up rear sight","value":9.737,"costPerSlot":11747,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fb6567747ce63734e3fa1dc":{"id":"5fb6567747ce63734e3fa1dc","name":"KRISS Defiance low profile flip-up front sight","value":10.817,"costPerSlot":12827,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbb976df9986c4cff3fe5f2":{"id":"5fbb976df9986c4cff3fe5f2","name":"KRISS Vector bottom rail","value":9.715,"costPerSlot":11750,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbb978207e8a97d1f0902d3":{"id":"5fbb978207e8a97d1f0902d3","name":"KRISS Vector Mk.5 modular rail","value":14.700500000000002,"costPerSlot":16774,"weight":0.147,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbbaa86f9986c4cff3fe5f6":{"id":"5fbbaa86f9986c4cff3fe5f6","name":"AR-15 KRISS Defiance DS150 stock (Black)","value":5.441500000000001,"costPerSlot":9641.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbbc3324e8a554c40648348":{"id":"5fbbc3324e8a554c40648348","name":"KRISS Vector 9x19 flash hider","value":-0.692,"costPerSlot":1340,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbbc34106bde7524f03cbe9":{"id":"5fbbc34106bde7524f03cbe9","name":"KRISS Vector 9x19 thread protector","value":4.436,"costPerSlot":6441,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbbc366ca32ed67276c1557":{"id":"5fbbc366ca32ed67276c1557","name":"KRISS Vector 9x19 5 inch barrel","value":3.4909999999999997,"costPerSlot":7571,"weight":0.16,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbbc383d5cb881a7363194a":{"id":"5fbbc383d5cb881a7363194a","name":"KRISS Vector 9x19 6 inch barrel","value":7.563000000000001,"costPerSlot":11663,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbbfabed5cb881a7363194e":{"id":"5fbbfabed5cb881a7363194e","name":"MCX .300 BLK 6.75 inch barrel","value":3.8545000000000007,"costPerSlot":8059,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbbfacda56d053a3543f799":{"id":"5fbbfacda56d053a3543f799","name":"MCX .300 BLK 9 inch barrel","value":5.4695,"costPerSlot":9709,"weight":0.479,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbc210bf24b94483f726481":{"id":"5fbc210bf24b94483f726481","name":"MCX gas block","value":2.4755000000000003,"costPerSlot":4500,"weight":0.049,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbc226eca32ed67276c155d":{"id":"5fbc226eca32ed67276c155d","name":"MCX GEN1 KeyMod 8 inch handguard","value":2.346,"costPerSlot":6541,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbc227aa56d053a3543f79e":{"id":"5fbc227aa56d053a3543f79e","name":"MCX GEN1 KeyMod 12 inch handguard","value":1.8196666666666665,"costPerSlot":8034.666666666667,"weight":0.43,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5fbc22ccf24b94483f726483":{"id":"5fbc22ccf24b94483f726483","name":"SIG Sauer Taper-LOK 7.62x51/.300 BLK muzzle adapter","value":14.520000000000003,"costPerSlot":16580,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbcbcf593164a5b6278efb2":{"id":"5fbcbcf593164a5b6278efb2","name":"SIG Sauer 7.62x51 3-prong flash hider","value":15.062000000000001,"costPerSlot":17097,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbcbd02900b1d5091531dd3":{"id":"5fbcbd02900b1d5091531dd3","name":"SIG Sauer Micro Brake 7.62x51 muzzle brake","value":6.856,"costPerSlot":8888,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbcbd10ab884124df0cd563":{"id":"5fbcbd10ab884124df0cd563","name":"SIG Sauer Two Port Brake 7.62x51 muzzle brake","value":12.114500000000001,"costPerSlot":14162,"weight":0.095,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbcbd6c187fea44d52eda14":{"id":"5fbcbd6c187fea44d52eda14","name":"MCX pistol grip","value":5.066,"costPerSlot":7106,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbcc1d9016cce60e8341ab3":{"id":"5fbcc1d9016cce60e8341ab3","name":"SIG MCX .300 Blackout assault rifle","value":82.88400000000001,"costPerSlot":101957,"weight":4.146,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"5fbcc3e4d6fa9c00c571bb58":{"id":"5fbcc3e4d6fa9c00c571bb58","name":"MCX GEN1 .300 BLK upper receiver","value":-2.4895,"costPerSlot":1754.5,"weight":0.488,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbcc429900b1d5091531dd7":{"id":"5fbcc429900b1d5091531dd7","name":"SIG Sauer Telescoping/Folding Stock","value":4.198500000000001,"costPerSlot":8366.5,"weight":0.336,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbcc437d724d907e2077d5c":{"id":"5fbcc437d724d907e2077d5c","name":"SIG Sauer Thin Side-Folding Stock","value":3.5315000000000003,"costPerSlot":7666.5,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbcc640016cce60e8341acc":{"id":"5fbcc640016cce60e8341acc","name":"MCX charging handle","value":-1.2845,"costPerSlot":733,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fbe3ffdf8b6a877a729ea82":{"id":"5fbe3ffdf8b6a877a729ea82","name":".300 Blackout BCP FMJ","value":8.5235,"costPerSlot":531,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5fbe760793164a5b6278efc8":{"id":"5fbe760793164a5b6278efc8","name":"SIG Sauer SRD762-QD 7.62x51 sound suppressor","value":23.03,"costPerSlot":27260,"weight":0.46,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fbe7618d6fa9c00c571bb6c":{"id":"5fbe7618d6fa9c00c571bb6c","name":"SIG Sauer SRD762Ti 7.62x51 sound suppressor","value":25.8645,"costPerSlot":30094.5,"weight":0.46,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc0f9b5d724d907e2077d82":{"id":"5fc0f9b5d724d907e2077d82","name":"A3 Tactical MVF001 KeyMod vertical foregrip (Black)","value":17.019000000000002,"costPerSlot":19067,"weight":0.096,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc0f9cbd6fa9c00c571bb90":{"id":"5fc0f9cbd6fa9c00c571bb90","name":"SIG Sauer Vertical Foregrip KeyMod (Black)","value":16.7775,"costPerSlot":18805,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc0fa362770a0045c59c677":{"id":"5fc0fa362770a0045c59c677","name":"MCX flip-up front sight","value":12.0905,"costPerSlot":14123,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc0fa957283c4046c58147e":{"id":"5fc0fa957283c4046c58147e","name":"MCX flip-up rear sight","value":-1.015,"costPerSlot":1050,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc22d7c187fea44d52eda44":{"id":"5fc22d7c187fea44d52eda44","name":"SWORD International Mk-18 .338 LM marksman rifle","value":40.14900000000001,"costPerSlot":64400,"weight":6.502000000000001,"size":16,"gridSize":0,"maxDim":8,"armorClass":0,"parentWeighting":3},"5fc23426900b1d5091531e15":{"id":"5fc23426900b1d5091531e15","name":"Mk-18 .338 LM 10-round magazine","value":4.046999999999999,"costPerSlot":8347,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc235db2770a0045c59c683":{"id":"5fc235db2770a0045c59c683","name":"Mk-18 18 inch handguard","value":-0.7433333333333332,"costPerSlot":5466.666666666667,"weight":0.42,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5fc2360f900b1d5091531e19":{"id":"5fc2360f900b1d5091531e19","name":"Mk-18 gas block","value":5.990000000000001,"costPerSlot":8050,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc23636016cce60e8341b05":{"id":"5fc23636016cce60e8341b05","name":"SilencerCo AC-858 ASR .338 LM muzzle brake","value":8.464,"costPerSlot":10519,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc23678ab884124df0cd590":{"id":"5fc23678ab884124df0cd590","name":"Mk-18 .338 LM 24 inch barrel","value":7.14175,"costPerSlot":15891.75,"weight":1.5,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"5fc2369685fd526b824a5713":{"id":"5fc2369685fd526b824a5713","name":"AR-15 B5 Systems Collapsible Precision Stock","value":12.085,"costPerSlot":16165,"weight":0.16,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc275cf85fd526b824a571a":{"id":"5fc275cf85fd526b824a571a","name":".338 Lapua Magnum FMJ","value":9.7765,"costPerSlot":1800,"weight":0.047,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5fc278107283c4046c581489":{"id":"5fc278107283c4046c581489","name":"Mk-18 .338 LM upper receiver","value":6.850000000000001,"costPerSlot":11075,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc382a9d724d907e2077dab":{"id":"5fc382a9d724d907e2077dab","name":".338 Lapua Magnum AP","value":12.5555,"costPerSlot":4580,"weight":0.049,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5fc382b6d6fa9c00c571bbc3":{"id":"5fc382b6d6fa9c00c571bbc3","name":".338 Lapua Magnum TAC-X","value":8.658,"costPerSlot":680,"weight":0.044,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5fc382c1016cce60e8341b20":{"id":"5fc382c1016cce60e8341b20","name":".338 Lapua Magnum UCW","value":8.8285,"costPerSlot":851,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5fc3e272f8b6a877a729eac5":{"id":"5fc3e272f8b6a877a729eac5","name":"HK UMP .45 ACP submachine gun","value":29.937500000000007,"costPerSlot":34047,"weight":2.2189999999999994,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5fc3e466187fea44d52eda90":{"id":"5fc3e466187fea44d52eda90","name":"HK UMP .45 ACP 25-round magazine","value":1.4590000000000005,"costPerSlot":5544,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc3e4a27283c4046c5814ab":{"id":"5fc3e4a27283c4046c5814ab","name":"HK UMP .45 ACP 8 inch barrel","value":-0.7544999999999997,"costPerSlot":3450,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc3e4ee7283c4046c5814af":{"id":"5fc3e4ee7283c4046c5814af","name":"HK UMP polymer stock","value":-0.875,"costPerSlot":3250,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc3f2d5900b1d5091531e57":{"id":"5fc3f2d5900b1d5091531e57","name":"TDI KRISS Vector Gen.2 9x19 submachine gun","value":82.461,"costPerSlot":86749,"weight":2.5759999999999996,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5fc4b97bab884124df0cd5e3":{"id":"5fc4b97bab884124df0cd5e3","name":"SilencerCo Omega 45k Piston Mount adapter","value":3.4095000000000004,"costPerSlot":5480,"weight":0.141,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc4b992187fea44d52edaa9":{"id":"5fc4b992187fea44d52edaa9","name":"SilencerCo Omega 45k Direct Thread Mount adapter","value":14.3445,"costPerSlot":16412,"weight":0.135,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc4b9b17283c4046c5814d7":{"id":"5fc4b9b17283c4046c5814d7","name":"SilencerCo Omega 45k .45 ACP sound suppressor","value":14.735999999999997,"costPerSlot":18871,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fc53954f8b6a877a729eaeb":{"id":"5fc53954f8b6a877a729eaeb","name":"HK UMP bottom handguard rail","value":-0.46199999999999997,"costPerSlot":1573,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc5396e900b1d5091531e72":{"id":"5fc5396e900b1d5091531e72","name":"HK UMP side handguard rail","value":-0.992,"costPerSlot":1033,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fc64ea372b0dd78d51159dc":{"id":"5fc64ea372b0dd78d51159dc","name":"Cultist knife","value":315.47200000000004,"costPerSlot":316612,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"5fca138c2a7b221b2852a5c6":{"id":"5fca138c2a7b221b2852a5c6","name":"xTG-12 antidote injector","value":86.575,"costPerSlot":80600,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5fca13ca637ee0341a484f46":{"id":"5fca13ca637ee0341a484f46","name":"SJ9 TGLabs combat stimulant injector","value":95.675,"costPerSlot":89700,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"5fce0cf655375d18a253eff0":{"id":"5fce0cf655375d18a253eff0","name":"Magpul RVG foregrip (FDE)","value":10.996,"costPerSlot":13037,"weight":0.082,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fce0f9b55375d18a253eff2":{"id":"5fce0f9b55375d18a253eff2","name":"KRISS Vector side rail","value":8.036999999999999,"costPerSlot":10062,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"5fce16961f152d4312622bc9":{"id":"5fce16961f152d4312622bc9","name":"AR-15 KRISS Defiance DS150 stock (FDE)","value":5.1835,"costPerSlot":9383.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"5fd20ff893a8961fc660a954":{"id":"5fd20ff893a8961fc660a954","name":".300 Blackout AP","value":8.863,"costPerSlot":870,"weight":0.014,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"5fd4c474dd870108a754b241":{"id":"5fd4c474dd870108a754b241","name":"5.11 Tactical Hexgrid plate carrier","value":138.48600000000002,"costPerSlot":150996,"weight":1.02,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"5fd4c4fa16cac650092f6771":{"id":"5fd4c4fa16cac650092f6771","name":"DIY IDEA chest rig","value":20.361000000000004,"costPerSlot":18071,"weight":0.22,"size":6,"gridSize":8,"maxDim":3,"armorClass":0,"parentWeighting":1},"5fd4c5477a8d854fa0105061":{"id":"5fd4c5477a8d854fa0105061","name":"Security vest","value":16.074,"costPerSlot":16529,"weight":0.51,"size":6,"gridSize":6,"maxDim":3,"armorClass":0,"parentWeighting":1},"5fd4c60f875c30179f5d04c2":{"id":"5fd4c60f875c30179f5d04c2","name":"Gear Craft GC-BSS-MK1 chest rig (A-TACS FG)","value":39.315,"costPerSlot":30015,"weight":1,"size":9,"gridSize":16,"maxDim":3,"armorClass":0,"parentWeighting":1},"5fd8d28367cb5e077335170f":{"id":"5fd8d28367cb5e077335170f","name":"Smoke balaclava","value":47.25000000000001,"costPerSlot":44300,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"60098ad7c2240c0fe85c570a":{"id":"60098ad7c2240c0fe85c570a","name":"AFAK tactical individual first aid kit","value":47.2,"costPerSlot":41600,"weight":0.8,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"60098af40accd37ef2175f27":{"id":"60098af40accd37ef2175f27","name":"CAT hemostatic tourniquet","value":15.738000000000001,"costPerSlot":9778,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"60098b1705871270cd5352a1":{"id":"60098b1705871270cd5352a1","name":"Emergency Water Ration","value":33.309,"costPerSlot":30373,"weight":0.128,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"601948682627df266209af05":{"id":"601948682627df266209af05","name":"UVSR Taiga-1 survival machete","value":829.18,"costPerSlot":832500,"weight":0.64,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"60194943740c5d77f6705eea":{"id":"60194943740c5d77f6705eea","name":"5.56x45mm MK 318 Mod 0 (SOST)","value":8.585,"costPerSlot":591,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"601949593ae8f707c4608daa":{"id":"601949593ae8f707c4608daa","name":"5.56x45mm SSA AP","value":9.5185,"costPerSlot":1525,"weight":0.013,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"601aa3d2b2bcb34913271e6d":{"id":"601aa3d2b2bcb34913271e6d","name":"7.62x39mm MAI AP","value":9.3925,"costPerSlot":1400,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"602286df23506e50807090c6":{"id":"602286df23506e50807090c6","name":"PL-15 9x19 16-round magazine","value":-0.3720000000000001,"costPerSlot":1676,"weight":0.096,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60228924961b8d75ee233c32":{"id":"60228924961b8d75ee233c32","name":"PL-15 pistol slide","value":-2.13,"costPerSlot":1950,"weight":0.16,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"60228a76d62c9b14ed777a66":{"id":"60228a76d62c9b14ed777a66","name":"PL-15 front sight","value":-1.2035,"costPerSlot":800,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60228a850ddce744014caf69":{"id":"60228a850ddce744014caf69","name":"PL-15 extended front sight","value":-1.0534999999999999,"costPerSlot":950,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"602293f023506e50807090cb":{"id":"602293f023506e50807090cb","name":"PL-15 extended rear sight","value":-1.0534999999999999,"costPerSlot":950,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60229948cacb6b0506369e27":{"id":"60229948cacb6b0506369e27","name":"PL-15 rear sight","value":-1.1035,"costPerSlot":900,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"602543c13fee350cd564d032":{"id":"602543c13fee350cd564d032","name":"","value":-2.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"602a95edda11d6478d5a06da":{"id":"602a95edda11d6478d5a06da","name":"PL-15 9x19 112mm barrel","value":0.4730000000000003,"costPerSlot":2563,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"602a95fe4e02ce1eaa358729":{"id":"602a95fe4e02ce1eaa358729","name":"PL-15 9x19 112mm threaded barrel","value":8.285,"costPerSlot":10375,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"602a97060ddce744014caf6f":{"id":"602a97060ddce744014caf6f","name":"PL-15 9x19 sound suppressor","value":11.3535,"costPerSlot":15500,"weight":0.293,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"602a9740da11d6478d5a06dc":{"id":"602a9740da11d6478d5a06dc","name":"Lebedev PL-15 9x19 pistol","value":19.223000000000003,"costPerSlot":20693,"weight":0.94,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"602e3f1254072b51b239f713":{"id":"602e3f1254072b51b239f713","name":"AR-15 Soyuz-TM buffer tube","value":39.2515,"costPerSlot":43332.5,"weight":0.162,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"602e620f9b513876d4338d9a":{"id":"602e620f9b513876d4338d9a","name":"AR-15 FAB Defense GL-CORE buttstock","value":4.273999999999999,"costPerSlot":8409.5,"weight":0.271,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"602e63fb6335467b0c5ac94d":{"id":"602e63fb6335467b0c5ac94d","name":"STM-9 9x19 upper receiver","value":-2.0359999999999996,"costPerSlot":2099,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"602e71bd53a60014f9705bfa":{"id":"602e71bd53a60014f9705bfa","name":"AR-15 DLG Tactical DLG-123 pistol grip","value":4.33,"costPerSlot":6380,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"602f85fd9b513876d4338d9c":{"id":"602f85fd9b513876d4338d9c","name":"STM-9 magwell","value":-0.7489999999999999,"costPerSlot":1276,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"603372b4da11d6478d5a07ff":{"id":"603372b4da11d6478d5a07ff","name":"STM-9 9x19 10.5 inch barrel","value":-0.7044999999999999,"costPerSlot":3500,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"603372d154072b51b239f9e1":{"id":"603372d154072b51b239f9e1","name":"STM-9 9x19 12 inch barrel","value":-0.5,"costPerSlot":3750,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"603372f153a60014f970616d":{"id":"603372f153a60014f970616d","name":"STM-9 9x19 14 inch barrel","value":-2.9666666666666663,"costPerSlot":3333.3333333333335,"weight":0.6,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"603373004e02ce1eaa358814":{"id":"603373004e02ce1eaa358814","name":"STM-9 9x19 16 inch barrel","value":-2.233333333333333,"costPerSlot":4166.666666666667,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6033749e88382f4fab3fd2c5":{"id":"6033749e88382f4fab3fd2c5","name":"AR-15 MASP Industries Ambidextrous Battle Charging Handle","value":0.10150000000000015,"costPerSlot":2119,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60337f5dce399e10262255d1":{"id":"60337f5dce399e10262255d1","name":"STM-9 9x19 muzzle brake","value":1.4580000000000002,"costPerSlot":3500,"weight":0.084,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60338ff388382f4fab3fd2c8":{"id":"60338ff388382f4fab3fd2c8","name":"STM-9 magwell (Grey)","value":-0.44899999999999984,"costPerSlot":1576,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60339954d62c9b14ed777c06":{"id":"60339954d62c9b14ed777c06","name":"Soyuz-TM STM-9 Gen.2 9x19 carbine","value":28.997999999999998,"costPerSlot":47016,"weight":2.036,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"6033fa48ffd42c541047f728":{"id":"6033fa48ffd42c541047f728","name":"OPSMEN Earmor M32 headset","value":5.7805,"costPerSlot":7025.5,"weight":0.49,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"603409c80ca681766b6a0fb2":{"id":"603409c80ca681766b6a0fb2","name":"NPP KlASS Condor glasses","value":35.724000000000004,"costPerSlot":24739,"weight":0.03,"size":2,"gridSize":0,"maxDim":2,"armorClass":1,"parentWeighting":5},"6034cf5fffd42c541047f72e":{"id":"6034cf5fffd42c541047f72e","name":"Umka M33-SET1 hunter vest (Olive Drab)","value":31.399,"costPerSlot":26199,"weight":1.2,"size":12,"gridSize":16,"maxDim":4,"armorClass":0,"parentWeighting":1},"6034d0230ca681766b6a0fb5":{"id":"6034d0230ca681766b6a0fb5","name":"CSA chest rig (Black)","value":26.096,"costPerSlot":21471,"weight":0.75,"size":6,"gridSize":10,"maxDim":3,"armorClass":0,"parentWeighting":1},"6034d103ca006d2dca39b3f0":{"id":"6034d103ca006d2dca39b3f0","name":"Hazard 4 Takedown sling backpack (Black)","value":49.830000000000005,"costPerSlot":45420,"weight":1.58,"size":21,"gridSize":24,"maxDim":7,"armorClass":0,"parentWeighting":2},"6034d2d697633951dc245ea6":{"id":"6034d2d697633951dc245ea6","name":"Eberlestock G2 Gunslinger II backpack (Dry Earth)","value":65.02600000000001,"costPerSlot":61000,"weight":2.948,"size":35,"gridSize":35,"maxDim":7,"armorClass":0,"parentWeighting":2},"6034e3cb0ddce744014cb870":{"id":"6034e3cb0ddce744014cb870","name":"AR-15 Soyuz-TM 9 inch M-LOK handguard","value":9.8615,"costPerSlot":13939,"weight":0.155,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6034e3d953a60014f970617b":{"id":"6034e3d953a60014f970617b","name":"AR-15 Soyuz-TM 15 inch M-LOK handguard","value":4.259333333333334,"costPerSlot":10369.333333333334,"weight":0.22,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6034e3e20ddce744014cb878":{"id":"6034e3e20ddce744014cb878","name":"AR-15 Soyuz-TM 12 inch M-LOK handguard","value":5.8375,"costPerSlot":9937.5,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"603618feffd42c541047f771":{"id":"603618feffd42c541047f771","name":"Army cap (Black)","value":39.440000000000005,"costPerSlot":36490,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"603619720ca681766b6a0fc4":{"id":"603619720ca681766b6a0fc4","name":"Army cap (Coyote Tan)","value":44.379000000000005,"costPerSlot":41429,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"60361a7497633951dc245eb4":{"id":"60361a7497633951dc245eb4","name":"Army cap (Flora)","value":20.104,"costPerSlot":17154,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"60361b0b5a45383c122086a1":{"id":"60361b0b5a45383c122086a1","name":"Army cap (Desert)","value":6.95,"costPerSlot":4000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"60361b5a9a15b10d96792291":{"id":"60361b5a9a15b10d96792291","name":"Army cap (UCP)","value":5.303000000000001,"costPerSlot":2353,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"60363c0c92ec1c31037959f5":{"id":"60363c0c92ec1c31037959f5","name":"GP-7 gas mask","value":55.02,"costPerSlot":56320,"weight":0.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"603648ff5a45383c122086ac":{"id":"603648ff5a45383c122086ac","name":"Azimut SS Zhuk chest harness (Black)","value":42.791,"costPerSlot":32591,"weight":1.6,"size":12,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":1},"6038b4b292ec1c3103795a0b":{"id":"6038b4b292ec1c3103795a0b","name":"LBT-6094A Slick Plate Carrier (Coyote Tan)","value":163.179,"costPerSlot":175829,"weight":1.3,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6038b4ca92ec1c3103795a0d":{"id":"6038b4ca92ec1c3103795a0d","name":"LBT-6094A Slick Plate Carrier (Olive Drab)","value":157.623,"costPerSlot":170273,"weight":1.3,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6038d614d10cbf667352dd44":{"id":"6038d614d10cbf667352dd44","name":"Hazard 4 Takedown sling backpack (MultiCam)","value":40.844,"costPerSlot":36434,"weight":1.58,"size":21,"gridSize":24,"maxDim":7,"armorClass":0,"parentWeighting":2},"60391a8b3364dc22b04d0ce5":{"id":"60391a8b3364dc22b04d0ce5","name":"Can of thermite","value":49.675,"costPerSlot":52000,"weight":0.65,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60391afc25aff57af81f7085":{"id":"60391afc25aff57af81f7085","name":"Ratchet wrench","value":57.4,"costPerSlot":62000,"weight":1.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"60391b0fb847c71012789415":{"id":"60391b0fb847c71012789415","name":"TP-200 TNT brick","value":51.278,"costPerSlot":53378,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6040dd4ddcf9592f401632d2":{"id":"6040dd4ddcf9592f401632d2","name":"Azimut SS Zhuk chest harness (SURPAT)","value":40.348,"costPerSlot":30148,"weight":1.6,"size":12,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":1},"6040de02647ad86262233012":{"id":"6040de02647ad86262233012","name":"Army cap (CADPAT)","value":6.303000000000001,"costPerSlot":3353,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"606587252535c57a13424cfd":{"id":"606587252535c57a13424cfd","name":"CMMG Mk47 Mutant 7.62x39 assault rifle","value":163.40800000000002,"costPerSlot":181569,"weight":2.3219999999999996,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"60658776f2cb2e02a42ace2b":{"id":"60658776f2cb2e02a42ace2b","name":"Mk47 254mm barrel","value":8.915000000000001,"costPerSlot":13150,"weight":0.47,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6065878ac9cf8012264142fd":{"id":"6065878ac9cf8012264142fd","name":"Mk47 409mm barrel","value":10.053333333333331,"costPerSlot":16618.333333333332,"weight":1.13,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"606587a88900dc2d9a55b659":{"id":"606587a88900dc2d9a55b659","name":"Mk47 Resolute 7.62x39 upper receiver","value":-1.745,"costPerSlot":2380,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"606587bd6d0bd7580617bacc":{"id":"606587bd6d0bd7580617bacc","name":"Mk47 ambidextrous charging handle","value":0.18500000000000005,"costPerSlot":2200,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"606587d11246154cad35d635":{"id":"606587d11246154cad35d635","name":"AR-15 CMMG RipStock buttstock","value":1.8660000000000005,"costPerSlot":6006,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"606587e18900dc2d9a55b65f":{"id":"606587e18900dc2d9a55b65f","name":"AR-15 CMMG buffer tube","value":3.7220000000000004,"costPerSlot":7788,"weight":0.132,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6065880c132d4d12c81fd8da":{"id":"6065880c132d4d12c81fd8da","name":"AR-10 CMMG MK3 RML9 9 inch M-LOK handguard","value":1.7915,"costPerSlot":5869,"weight":0.155,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6065881d1246154cad35d637":{"id":"6065881d1246154cad35d637","name":"AR-10 CMMG MK3 RML15 15 inch M-LOK handguard","value":2.5406666666666666,"costPerSlot":8650.666666666666,"weight":0.22,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6065c6e7132d4d12c81fd8e1":{"id":"6065c6e7132d4d12c81fd8e1","name":"AR-10 CMMG SV Brake 7.62x51 muzzle brake","value":5.1770000000000005,"costPerSlot":7217,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6065dc8a132d4d12c81fd8e3":{"id":"6065dc8a132d4d12c81fd8e3","name":"AR-10 CMMG low profile gas block","value":15.872500000000002,"costPerSlot":17920,"weight":0.095,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"606dae0ab0e443224b421bb7":{"id":"606dae0ab0e443224b421bb7","name":"MP-155 12ga semi-automatic shotgun","value":-0.8724999999999987,"costPerSlot":9859.5,"weight":3.4640000000000004,"size":6,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"606ee5c81246154cad35d65e":{"id":"606ee5c81246154cad35d65e","name":"MP-155 Ultima polymer forestock","value":5.640000000000001,"costPerSlot":9795,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"606eef46232e5a31c233d500":{"id":"606eef46232e5a31c233d500","name":"MP-155 Ultima pistol grip","value":7.4300000000000015,"costPerSlot":11495,"weight":0.13,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"606eef756d0bd7580617baf8":{"id":"606eef756d0bd7580617baf8","name":"MP-155 Ultima polymer stock","value":2.723,"costPerSlot":6978,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"606ef0812535c57a13424d20":{"id":"606ef0812535c57a13424d20","name":"MP-155 Ultima thin recoil pad","value":0.15349999999999975,"costPerSlot":2231,"weight":0.155,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"606f262c6d0bd7580617bafa":{"id":"606f262c6d0bd7580617bafa","name":"MP-155 Ultima medium recoil pad","value":10.5545,"costPerSlot":12662,"weight":0.215,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"606f263a8900dc2d9a55b68d":{"id":"606f263a8900dc2d9a55b68d","name":"MP-155 Ultima large recoil pad","value":20.9335,"costPerSlot":23070,"weight":0.273,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"606f26752535c57a13424d22":{"id":"606f26752535c57a13424d22","name":"MP-155 Ultima underbarrel mount","value":12.9,"costPerSlot":15000,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"606f2696f2cb2e02a42aceb1":{"id":"606f2696f2cb2e02a42aceb1","name":"MP-155 Ultima thermal camera","value":47.032000000000004,"costPerSlot":49137,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6076c1b9f2cb2e02a42acedc":{"id":"6076c1b9f2cb2e02a42acedc","name":"MP-155 12ga 510mm barrel","value":-4.064666666666666,"costPerSlot":2335.3333333333335,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6076c87f232e5a31c233d50e":{"id":"6076c87f232e5a31c233d50e","name":"MP-155 12ga 6-shell magazine","value":-3.4515000000000002,"costPerSlot":610.5,"weight":0.124,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"60785c0d232e5a31c233d51c":{"id":"60785c0d232e5a31c233d51c","name":"MP-155 Ultima pistol grip rubber pad","value":-0.5489999999999999,"costPerSlot":1476,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60785ce5132d4d12c81fd918":{"id":"60785ce5132d4d12c81fd918","name":"MP-155 Ultima top rail","value":3.3390000000000004,"costPerSlot":9564,"weight":0.45,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"607d5a891246154cad35d6aa":{"id":"607d5a891246154cad35d6aa","name":"MP-155 walnut stock","value":-3.6705,"costPerSlot":649.5,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"607d5aa50494a626335e12ed":{"id":"607d5aa50494a626335e12ed","name":"MP-155 walnut forestock","value":-3.4855,"costPerSlot":914.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"607ea812232e5a31c233d53c":{"id":"607ea812232e5a31c233d53c","name":"MP-155 Ultima short rail","value":19.747000000000003,"costPerSlot":21772,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"607f201b3c672b3b3a24a800":{"id":"607f201b3c672b3b3a24a800","name":"Twitch Rivals 2021 balaclava","value":33.403999999999996,"costPerSlot":30454,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"607f20859ee58b18e41ecd90":{"id":"607f20859ee58b18e41ecd90","name":"PACA Soft Armor (Rivals Edition)","value":14.139,"costPerSlot":27889,"weight":3.5,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"607ffb988900dc2d9a55b6e4":{"id":"607ffb988900dc2d9a55b6e4","name":"AR-10 SureFire ProComp 7.62x51 muzzle brake","value":15.6585,"costPerSlot":17707,"weight":0.097,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6086b5392535c57a13424d70":{"id":"6086b5392535c57a13424d70","name":"Custom Guns handguard rail","value":7.156000000000001,"costPerSlot":9181,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6086b5731246154cad35d6c7":{"id":"6086b5731246154cad35d6c7","name":"SOK-12 Custom Guns Type-340 handguard","value":8.065500000000002,"costPerSlot":12185.5,"weight":0.24,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6087e0336d0bd7580617bb7a":{"id":"6087e0336d0bd7580617bb7a","name":"AR-15 Unique-ARs Wing & Skull 12 inch handguard","value":20.875,"costPerSlot":25000,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6087e2a5232e5a31c233d552":{"id":"6087e2a5232e5a31c233d552","name":"AKM/AK-74 ProMag Archangel OPFOR AA47 buttstock","value":12.700500000000002,"costPerSlot":16895.5,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6087e570b998180e9f76dc24":{"id":"6087e570b998180e9f76dc24","name":"Superfors DB 2020 Dead Blow Hammer","value":41.3,"costPerSlot":45000,"weight":1.4,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"6087e663132d4d12c81fd96b":{"id":"6087e663132d4d12c81fd96b","name":"AK Custom Arms AGS-74 PRO + Sniper Kit pistol grip","value":28.199,"costPerSlot":30274,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"609269c3b0e443224b421cc1":{"id":"609269c3b0e443224b421cc1","name":"AR-15 SilencerCo ASR 5.56x45 flash hider","value":28.561,"costPerSlot":30631,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60926df0132d4d12c81fd9df":{"id":"60926df0132d4d12c81fd9df","name":"SilencerCo Saker ASR 556 5.56x45 sound suppressor","value":32.589999999999996,"costPerSlot":36845,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"609a4b4fe2ff132951242d04":{"id":"609a4b4fe2ff132951242d04","name":"VPO-102 Arbalet mount","value":3.8770000000000007,"costPerSlot":5937,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"609a63b6e2ff132951242d09":{"id":"609a63b6e2ff132951242d09","name":"Valday Krechet reflex sight","value":12.443999999999999,"costPerSlot":14619,"weight":0.35,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"609b9e31506cf869cf3eaf41":{"id":"609b9e31506cf869cf3eaf41","name":"VOMZ Pilad TargetRing reflex sight","value":9.809,"costPerSlot":11914,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"609bab8b455afd752b2e6138":{"id":"609bab8b455afd752b2e6138","name":"Torrey Pines Logic T12W 30Hz thermal reflex sight","value":73.7625,"costPerSlot":75794,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"609e8540d5c319764c2bc2e9":{"id":"609e8540d5c319764c2bc2e9","name":"NFM THOR Concealable Reinforced Vest body armor","value":91.11000000000001,"costPerSlot":103960,"weight":1.7,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"609e860ebd219504d8507525":{"id":"609e860ebd219504d8507525","name":"Crye Precision AVS plate carrier (Tagilla Edition)","value":127.96200000000002,"costPerSlot":124352,"weight":1.98,"size":9,"gridSize":12,"maxDim":3,"armorClass":0,"parentWeighting":1},"60a23797a37c940de7062d02":{"id":"60a23797a37c940de7062d02","name":"SIG Sauer ROMEO8T reflex sight","value":26.706000000000003,"costPerSlot":28900,"weight":0.388,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60a272cc93ef783291411d8e":{"id":"60a272cc93ef783291411d8e","name":"Hazard 4 Drawbridge backpack (Coyote Tan)","value":51.41,"costPerSlot":47745,"weight":1.67,"size":25,"gridSize":25,"maxDim":5,"armorClass":0,"parentWeighting":2},"60a2828e8689911a226117f9":{"id":"60a2828e8689911a226117f9","name":"Hazard 4 Pillbox backpack (Black)","value":30.549,"costPerSlot":23718,"weight":2.338,"size":16,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":2},"60a283193cb70855c43a381d":{"id":"60a283193cb70855c43a381d","name":"NFM THOR Integrated Carrier body armor","value":-12.875,"costPerSlot":11375,"weight":8.5,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"60a3c68c37ea821725773ef5":{"id":"60a3c68c37ea821725773ef5","name":"CQC Osprey MK4A plate carrier (Protection, MTP)","value":168.76800000000003,"costPerSlot":156018,"weight":6.9,"size":12,"gridSize":24,"maxDim":4,"armorClass":0,"parentWeighting":1},"60a3c70cde5f453f634816a3":{"id":"60a3c70cde5f453f634816a3","name":"CQC Osprey MK4A plate carrier (Assault, MTP)","value":131.446,"costPerSlot":117146,"weight":6.4,"size":12,"gridSize":25,"maxDim":4,"armorClass":0,"parentWeighting":1},"60a621c49c197e4e8c4455e6":{"id":"60a621c49c197e4e8c4455e6","name":"Stich Profi Chest Rig MK2 (Assault, A-TACS FG)","value":41.275000000000006,"costPerSlot":33750,"weight":1.75,"size":12,"gridSize":18,"maxDim":4,"armorClass":0,"parentWeighting":1},"60a6220e953894617404b00a":{"id":"60a6220e953894617404b00a","name":"Stich Profi Chest Rig MK2 (Recon, A-TACS FG)","value":40.1,"costPerSlot":32400,"weight":1.4,"size":12,"gridSize":18,"maxDim":4,"armorClass":0,"parentWeighting":1},"60a7acf20c5cb24b01346648":{"id":"60a7acf20c5cb24b01346648","name":"BOSS cap","value":29.986,"costPerSlot":27036,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"60a7ad2a2198820d95707a2e":{"id":"60a7ad2a2198820d95707a2e","name":"Tagilla's welding mask \"UBEY\"","value":183.25,"costPerSlot":135000,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":5},"60a7ad3a0c5cb24b0134664a":{"id":"60a7ad3a0c5cb24b0134664a","name":"Tagilla's welding mask \"Gorilla\"","value":183.25,"costPerSlot":135000,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":5},"60b0f561c4449e4cb624c1d7":{"id":"60b0f561c4449e4cb624c1d7","name":"LVNDMARK's rat poison","value":21.246000000000002,"costPerSlot":25446,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"60b0f6c058e0b0481a09ad11":{"id":"60b0f6c058e0b0481a09ad11","name":"WZ Wallet","value":57.179500000000004,"costPerSlot":54064,"weight":0.169,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"60b0f7057897d47c5b04ab94":{"id":"60b0f7057897d47c5b04ab94","name":"Loot Lord plushie","value":14.60725,"costPerSlot":20757.25,"weight":0.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"60b0f93284c20f0feb453da7":{"id":"60b0f93284c20f0feb453da7","name":"Can of RatCola soda","value":30.815,"costPerSlot":27995,"weight":0.36,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"60b0f988c4449e4cb624c1da":{"id":"60b0f988c4449e4cb624c1da","name":"Armband (Evasion)","value":42.975,"costPerSlot":45000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"60b52e5bc7d8103275739d67":{"id":"60b52e5bc7d8103275739d67","name":"Stich Profi Chimera boonie hat","value":5.853,"costPerSlot":6928,"weight":0.15,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"60bf74184a63fc79b60c57f6":{"id":"60bf74184a63fc79b60c57f6","name":"Bomber beanie","value":42.762,"costPerSlot":29812,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":5},"60c7272c204bc17802313365":{"id":"60c7272c204bc17802313365","name":"Pockets 1x3","value":-400.5,"costPerSlot":0,"weight":0,"size":400,"gridSize":15,"maxDim":20,"armorClass":0,"parentWeighting":0},"60db29ce99594040e04c4a27":{"id":"60db29ce99594040e04c4a27","name":"MTs-255-12 12ga shotgun","value":-7.714666666666666,"costPerSlot":3410.3333333333335,"weight":4.250000000000001,"size":6,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"60dc519adf4c47305f6d410d":{"id":"60dc519adf4c47305f6d410d","name":"MTs-255-12 12ga cylinder","value":-0.625,"costPerSlot":1500,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6113c3586c780c1e710c90bc":{"id":"6113c3586c780c1e710c90bc","name":"AR-15 F1 Firearms Skeletonized Style 1 pistol grip","value":14.381,"costPerSlot":16421,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6113cc78d3a39d50044c065a":{"id":"6113cc78d3a39d50044c065a","name":"AR-15 F1 Firearms Skeletonized Style 2 PC pistol grip","value":50.2255,"costPerSlot":52269,"weight":0.087,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6113cce3d92c473c770200c7":{"id":"6113cce3d92c473c770200c7","name":"AR-15 F1 Firearms Skeletonized Style 2 pistol grip","value":25.2935,"costPerSlot":27336,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6113d6c3290d254f5e6b27db":{"id":"6113d6c3290d254f5e6b27db","name":"BelOMO PK-AA dovetail reflex sight","value":4.357,"costPerSlot":6582,"weight":0.45,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"611a30addbdd8440277441dc":{"id":"611a30addbdd8440277441dc","name":"MP-43 12ga 750mm barrel","value":-10.004999999999999,"costPerSlot":820,"weight":1.65,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"611a31ce5b7ffe001b4649d1":{"id":"611a31ce5b7ffe001b4649d1","name":"MP-43-1C buttpad","value":-0.8600000000000001,"costPerSlot":1200,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6123649463849f3d843da7c4":{"id":"6123649463849f3d843da7c4","name":"MTs-255-12 beechwood forestock","value":-3.6355,"costPerSlot":764.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"612368f58b401f4f51239b33":{"id":"612368f58b401f4f51239b33","name":"MTs-255-12 12ga 755mm barrel with rib","value":-9.519,"costPerSlot":1256,"weight":1.55,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"612781056f3d944a17348d60":{"id":"612781056f3d944a17348d60","name":"MTs-255-12 wooden stock","value":-3.3015,"costPerSlot":923.5,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"612e0cfc8004cc50514c2d9e":{"id":"612e0cfc8004cc50514c2d9e","name":"AR-15 AWC PSR 5.56x45 muzzle brake","value":24.913500000000003,"costPerSlot":26984,"weight":0.141,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"612e0d3767085e45ef14057f":{"id":"612e0d3767085e45ef14057f","name":"AR-10 AWC PSR 7.62x51 muzzle brake","value":28.241500000000002,"costPerSlot":30324,"weight":0.165,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"612e0d81290d254f5e6b291a":{"id":"612e0d81290d254f5e6b291a","name":"AWC PSR .338 LM muzzle brake","value":28.3745,"costPerSlot":30463,"weight":0.177,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"612e0e04568c120fdd294258":{"id":"612e0e04568c120fdd294258","name":"AWC PSR muzzle brake protector","value":-1.005,"costPerSlot":1000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"612e0e3c290d254f5e6b291d":{"id":"612e0e3c290d254f5e6b291d","name":"AR-10 TAA ZK-38 7.62x51 muzzle brake","value":15.419500000000003,"costPerSlot":17437,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"612e0e55a112697a4b3a66e7":{"id":"612e0e55a112697a4b3a66e7","name":"AR-15 TAA ZK-23 5.56x45 muzzle brake","value":18.408,"costPerSlot":20422,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6130c3dffaa1272e43151c7d":{"id":"6130c3dffaa1272e43151c7d","name":"HK UMP .45 ACP 8 inch threaded barrel","value":5.795,"costPerSlot":10002.5,"weight":0.415,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6130c43c67085e45ef1405a1":{"id":"6130c43c67085e45ef1405a1","name":"AR-10 KAC QDC 7.62x51 Muzzle Brake Kit","value":39.282500000000006,"costPerSlot":41355,"weight":0.145,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6130c4d51cb55961fa0fd49f":{"id":"6130c4d51cb55961fa0fd49f","name":"HK UMP B&T OEM .45 ACP sound suppressor","value":16.644499999999997,"costPerSlot":20871,"weight":0.453,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6130ca3fd92c473c77020dbd":{"id":"6130ca3fd92c473c77020dbd","name":"AK CSS knurled charging handle","value":22.8975,"costPerSlot":24905,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"614451b71e5874611e2c7ae5":{"id":"614451b71e5874611e2c7ae5","name":"Bottle of Tarkovskaya vodka","value":12.7,"costPerSlot":12500,"weight":1.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"615d8d878004cc50514c3233":{"id":"615d8d878004cc50514c3233","name":"B&T QD NAR mount for Aimpoint ACRO","value":0.565,"costPerSlot":2600,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8da4d3a39d50044c10e8":{"id":"615d8da4d3a39d50044c10e8","name":"Glock TangoDown AAM-01 ACRO mount base","value":0.5965000000000003,"costPerSlot":2600,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8dbd290d254f5e6b2ed6":{"id":"615d8dbd290d254f5e6b2ed6","name":"Glock 17 MOS pistol slide","value":-1.8125,"costPerSlot":2350,"weight":0.325,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"615d8df08004cc50514c3236":{"id":"615d8df08004cc50514c3236","name":"HK MP5 B&T QD 9x19 muzzle brake","value":11.764,"costPerSlot":13828,"weight":0.128,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8e2f1cb55961fa0fd9a4":{"id":"615d8e2f1cb55961fa0fd9a4","name":"AR-15 HK BLITZ 5.56x45 flash hider","value":16.8455,"costPerSlot":18888,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8e9867085e45ef1409c6":{"id":"615d8e9867085e45ef1409c6","name":"AKM 7.62x39 Kiba Arms .308 muzzle device adapter","value":14.011,"costPerSlot":16066,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8eb350224f204c1da1cf":{"id":"615d8eb350224f204c1da1cf","name":"AR-10 SureFire Warden 7.62x51 blast regulator","value":17.181,"costPerSlot":19286,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8f5dd92c473c770212ef":{"id":"615d8f5dd92c473c770212ef","name":"AK Hexagon Reactor 5.45x39 muzzle brake","value":17.1125,"costPerSlot":19160,"weight":0.095,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8f8567085e45ef1409ca":{"id":"615d8f8567085e45ef1409ca","name":"AK-74 Hexagon Wafflemaker 5.45x39 sound suppressor","value":43.355,"costPerSlot":47500,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"615d8faecabb9b7ad90f4d5d":{"id":"615d8faecabb9b7ad90f4d5d","name":"AR-15 Tactical Dynamics Hexgrip pistol grip","value":10.421,"costPerSlot":12453,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"615d8fd3290d254f5e6b2edc":{"id":"615d8fd3290d254f5e6b2edc","name":"Monstrum Tactical Vertical Fore Grip KeyMod","value":4.886,"costPerSlot":6900,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61605d88ffa6e502ac5e7eeb":{"id":"61605d88ffa6e502ac5e7eeb","name":"Wilcox RAPTAR ES Tactical Rangefinder","value":24.111,"costPerSlot":26265,"weight":0.308,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61605e13ffa6e502ac5e7eef":{"id":"61605e13ffa6e502ac5e7eef","name":"Vortex Ranger 1500 rangefinder","value":6.891,"costPerSlot":9000,"weight":0.218,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"616442e4faa1272e43152193":{"id":"616442e4faa1272e43152193","name":"Aimpoint ACRO P-1 reflex sight","value":17.07,"costPerSlot":19100,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"616554fe50224f204c1da2aa":{"id":"616554fe50224f204c1da2aa","name":"Aimpoint Micro H-2 Standard Mount","value":0.5425000000000004,"costPerSlot":2550,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61657230d92c473c770213d7":{"id":"61657230d92c473c770213d7","name":"Aimpoint Micro H-2 reflex sight","value":20.053,"costPerSlot":22100,"weight":0.094,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"616584766ef05c2ce828ef57":{"id":"616584766ef05c2ce828ef57","name":"Aimpoint CompM4/PRO QRP2 mount","value":0.7510000000000003,"costPerSlot":2800,"weight":0.098,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61659f79d92c473c770213ee":{"id":"61659f79d92c473c770213ee","name":"Aimpoint PRO reflex sight","value":22.865,"costPerSlot":25000,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6165ac306ef05c2ce828ef74":{"id":"6165ac306ef05c2ce828ef74","name":"FN SCAR-H 7.62x51 assault rifle (FDE)","value":10.949000000000002,"costPerSlot":25800,"weight":3.702,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"6165ac8c290d254f5e6b2f6c":{"id":"6165ac8c290d254f5e6b2f6c","name":"Leapers UTG reflex sight","value":12.2215,"costPerSlot":14335,"weight":0.227,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6165adcdd3a39d50044c120f":{"id":"6165adcdd3a39d50044c120f","name":"FN SCAR-H 7.62x51 upper receiver","value":83.14033333333333,"costPerSlot":89240.33333333333,"weight":0.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6165aeedfaa1272e431521e3":{"id":"6165aeedfaa1272e431521e3","name":"FN SCAR-H 7.62x51 upper receiver (FDE)","value":44.13,"costPerSlot":50230,"weight":0.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"61695095d92c473c7702147a":{"id":"61695095d92c473c7702147a","name":"SKS 7.62x39 KCI 75-round drum magazine","value":1.776250000000001,"costPerSlot":8297.75,"weight":1.043,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61702be9faa1272e431522c3":{"id":"61702be9faa1272e431522c3","name":"HK417 7.62x51 16.5 inch barrel","value":-1.0359999999999996,"costPerSlot":7250,"weight":0.572,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"61702d8a67085e45ef140b24":{"id":"61702d8a67085e45ef140b24","name":"HK417 E1 Extended Charging Handle","value":0.1795,"costPerSlot":2200,"weight":0.041,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61702f1b67085e45ef140b26":{"id":"61702f1b67085e45ef140b26","name":"HK417 low profile gas block","value":3.9400000000000004,"costPerSlot":6000,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61703001d92c473c77021497":{"id":"61703001d92c473c77021497","name":"HK417 Extended Free Float handguard with flip-up front sight","value":-2.5416666666666665,"costPerSlot":3733.3333333333335,"weight":0.55,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"61712eae6c780c1e710c9a1d":{"id":"61712eae6c780c1e710c9a1d","name":"HK417 Patrol handguard with flip-up front sight","value":0.08499999999999996,"costPerSlot":4300,"weight":0.43,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"617130016c780c1e710c9a24":{"id":"617130016c780c1e710c9a24","name":"HK417/G28 7.62x51 10-round magazine","value":2.705,"costPerSlot":4755,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"617131a4568c120fdd29482d":{"id":"617131a4568c120fdd29482d","name":"HK417/G28 7.62x51 20-round magazine","value":7.731,"costPerSlot":11811,"weight":0.16,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61713308d92c473c770214a0":{"id":"61713308d92c473c770214a0","name":"HK Prolonged 7.62x51 flash hider","value":7.824,"costPerSlot":9885,"weight":0.122,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6171367e1cb55961fa0fdb36":{"id":"6171367e1cb55961fa0fdb36","name":"HK G28 B&T QD 7.62x51 sound suppressor","value":25.27,"costPerSlot":29500,"weight":0.46,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61713a8fd92c473c770214a4":{"id":"61713a8fd92c473c770214a4","name":"HK G28 7.62x51 upper receiver","value":-0.1349999999999998,"costPerSlot":4000,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61713cc4d8e3106d9806c109":{"id":"61713cc4d8e3106d9806c109","name":"Recknagel Era-Tac 34mm ring scope mount","value":4.993500000000001,"costPerSlot":9118.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6171407e50224f204c1da3c5":{"id":"6171407e50224f204c1da3c5","name":"Recknagel Era-Tac 30mm ring scope mount","value":5.763999999999999,"costPerSlot":9889,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61714b2467085e45ef140b2c":{"id":"61714b2467085e45ef140b2c","name":"Recknagel Era-Tac Sunshade mount for Aimpoint T-1 sights","value":8.1905,"costPerSlot":10198,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61714eec290d254f5e6b2ffc":{"id":"61714eec290d254f5e6b2ffc","name":"Schmidt & Bender PM II 3-20x50 34mm riflescope","value":28.049999999999997,"costPerSlot":32500,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"617151c1d92c473c770214ab":{"id":"617151c1d92c473c770214ab","name":"Schmidt & Bender PM II 1-8x24 30mm riflescope","value":20.8,"costPerSlot":25250,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"617153016c780c1e710c9a2f":{"id":"617153016c780c1e710c9a2f","name":"HK G28 buffer tube","value":20.404,"costPerSlot":24485,"weight":0.162,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"617154aa1cb55961fa0fdb3b":{"id":"617154aa1cb55961fa0fdb3b","name":"HK417 E2 buttstock","value":0.40500000000000025,"costPerSlot":4600,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"617155ee50224f204c1da3cd":{"id":"617155ee50224f204c1da3cd","name":"HK417 Adjustable Buttstock","value":1.6850000000000005,"costPerSlot":6138.5,"weight":0.907,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61715e7e67085e45ef140b33":{"id":"61715e7e67085e45ef140b33","name":"HK Adjustable Buttstock cheek rest","value":12.544500000000001,"costPerSlot":14573,"weight":0.057,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6176a40f0b8c0312ac75a3d3":{"id":"6176a40f0b8c0312ac75a3d3","name":"Ghoul mask","value":34.458,"costPerSlot":35533,"weight":0.15,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"6176a48d732a664031271438":{"id":"6176a48d732a664031271438","name":"Faceless mask","value":25.671,"costPerSlot":26771,"weight":0.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"6176aca650224f204c1da3fb":{"id":"6176aca650224f204c1da3fb","name":"HK G28 7.62x51 marksman rifle","value":85.75150000000001,"costPerSlot":114825,"weight":4.147,"size":24,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"617aa4dd8166f034d57de9c5":{"id":"617aa4dd8166f034d57de9c5","name":"M18 smoke grenade (Green)","value":17.1195,"costPerSlot":9389,"weight":0.539,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"617fd91e5539a84ec44ce155":{"id":"617fd91e5539a84ec44ce155","name":"RGN hand grenade","value":21.745,"costPerSlot":13900,"weight":0.31,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"61816734d8e3106d9806c1f3":{"id":"61816734d8e3106d9806c1f3","name":"FN SCAR folding polymer stock","value":-1.1749999999999998,"costPerSlot":3000,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618167441cb55961fa0fdc71":{"id":"618167441cb55961fa0fdc71","name":"FN SCAR cheek rest","value":-2.98,"costPerSlot":1050,"weight":0.06,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618167528004cc50514c34f9":{"id":"618167528004cc50514c34f9","name":"FN SCAR retractable polymer stock","value":0.09999999999999964,"costPerSlot":4250,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618167616ef05c2ce828f1a8":{"id":"618167616ef05c2ce828f1a8","name":"FN SCAR rubber buttpad","value":2.8450000000000006,"costPerSlot":4895,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6181688c6c780c1e710c9b04":{"id":"6181688c6c780c1e710c9b04","name":"FN SCAR charging handle","value":11.4915,"costPerSlot":13500,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618168b350224f204c1da4d8":{"id":"618168b350224f204c1da4d8","name":"FN SCAR-H 7.62x51 13 inch barrel","value":16.59,"costPerSlot":21100,"weight":1.02,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618168dc8004cc50514c34fc":{"id":"618168dc8004cc50514c34fc","name":"FN SCAR-H 7.62x51 20-round magazine","value":3.6925,"costPerSlot":7857.5,"weight":0.33,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61816df1d3a39d50044c139e":{"id":"61816df1d3a39d50044c139e","name":"FN SCAR bottom rail","value":5.0655,"costPerSlot":7103,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61816dfa6ef05c2ce828f1ad":{"id":"61816dfa6ef05c2ce828f1ad","name":"FN SCAR side rails","value":7.964,"costPerSlot":9999,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61816fcad92c473c770215cc":{"id":"61816fcad92c473c770215cc","name":"FN SCAR flip-up front sight","value":95.784,"costPerSlot":97801,"weight":0.034,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61817865d3a39d50044c13a4":{"id":"61817865d3a39d50044c13a4","name":"FN SCAR flip-up rear sight","value":20.461,"costPerSlot":22479,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618178aa1cb55961fa0fdc80":{"id":"618178aa1cb55961fa0fdc80","name":"AR-10 AAC SCAR-SD 51T 7.62x51 flash hider","value":11.163,"costPerSlot":13243,"weight":0.16,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61825d06d92c473c770215de":{"id":"61825d06d92c473c770215de","name":"FN SCAR folding polymer stock (FDE)","value":2.3665000000000003,"costPerSlot":6541.5,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61825d136ef05c2ce828f1cc":{"id":"61825d136ef05c2ce828f1cc","name":"FN SCAR retractable polymer stock (FDE)","value":0.5880000000000001,"costPerSlot":4738,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61825d24d3a39d50044c13af":{"id":"61825d24d3a39d50044c13af","name":"FN SCAR cheek rest (FDE)","value":-2.9299999999999997,"costPerSlot":1100,"weight":0.06,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6183afd850224f204c1da514":{"id":"6183afd850224f204c1da514","name":"FN SCAR-H 7.62x51 assault rifle","value":5.439000000000004,"costPerSlot":24400,"weight":3.9219999999999997,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"6183b0711cb55961fa0fdcad":{"id":"6183b0711cb55961fa0fdcad","name":"FN SCAR-H 7.62x51 16 inch barrel","value":3.8127499999999994,"costPerSlot":12372.75,"weight":1.12,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6183b084a112697a4b3a6e6c":{"id":"6183b084a112697a4b3a6e6c","name":"FN SCAR-H 7.62x51 20 inch barrel","value":6.753499999999999,"costPerSlot":15383.5,"weight":1.26,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6183d53f1cb55961fa0fdcda":{"id":"6183d53f1cb55961fa0fdcda","name":"FN SCAR-H 7.62x51 20-round magazine (FDE)","value":-0.2314999999999996,"costPerSlot":3943.5,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6183fc15d3a39d50044c13e9":{"id":"6183fc15d3a39d50044c13e9","name":"FN SCAR-L 5.56x45 10 inch barrel","value":18.675,"costPerSlot":23125,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6183fd911cb55961fa0fdce9":{"id":"6183fd911cb55961fa0fdce9","name":"FN SCAR-L 5.56x45 14 inch barrel","value":1.5,"costPerSlot":8000,"weight":1,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6183fd9e8004cc50514c358f":{"id":"6183fd9e8004cc50514c358f","name":"FN SCAR-L 5.56x45 18 inch barrel","value":10.269333333333336,"costPerSlot":16794.333333333332,"weight":1.05,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"618405198004cc50514c3594":{"id":"618405198004cc50514c3594","name":"FN SCAR-L 5.56x45 upper receiver","value":15.934999999999999,"costPerSlot":22035,"weight":0.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6184055050224f204c1da540":{"id":"6184055050224f204c1da540","name":"FN SCAR-L 5.56x45 assault rifle","value":49.5085,"costPerSlot":68178,"weight":3.339,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"618407a850224f204c1da549":{"id":"618407a850224f204c1da549","name":"FN SCAR-L 5.56x45 flash hider","value":1.4249999999999998,"costPerSlot":3500,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61840bedd92c473c77021635":{"id":"61840bedd92c473c77021635","name":"FN SCAR-L 5.56x45 30-round magazine","value":1.1244999999999994,"costPerSlot":5183,"weight":0.117,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61840d85568c120fdd2962a5":{"id":"61840d85568c120fdd2962a5","name":"FN SCAR-L 5.56x45 30-round magazine (FDE)","value":2.7085,"costPerSlot":6767,"weight":0.117,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618426d96c780c1e710c9b9f":{"id":"618426d96c780c1e710c9b9f","name":"FN SCAR-L 5.56x45 upper receiver (FDE)","value":4.479333333333335,"costPerSlot":10579.333333333334,"weight":0.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"618428466ef05c2ce828f218":{"id":"618428466ef05c2ce828f218","name":"FN SCAR-L 5.56x45 assault rifle (FDE)","value":60.4165,"costPerSlot":71011,"weight":3.1889999999999996,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"618a431df1eb8e24b8741deb":{"id":"618a431df1eb8e24b8741deb","name":"RGO hand grenade","value":18.535,"costPerSlot":10800,"weight":0.53,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"618a5d5852ecee1505530b2a":{"id":"618a5d5852ecee1505530b2a","name":"NPZ PK1 Obzor dovetail reflex sight","value":4.74,"costPerSlot":7000,"weight":0.52,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618a75c9a3884f56c957ca1b":{"id":"618a75c9a3884f56c957ca1b","name":"NPZ 1P78-1 dovetail mount","value":10.886000000000001,"costPerSlot":12906,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618a75f0bd321d49084cd399":{"id":"618a75f0bd321d49084cd399","name":"NPZ 1P78-1 2.8x scope","value":18.2,"costPerSlot":20500,"weight":0.6,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618a760e526131765025aae3":{"id":"618a760e526131765025aae3","name":"NPZ 1P78 scope eyecup","value":9.6005,"costPerSlot":11603,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618aef6d0a5a59657e5f55ee":{"id":"618aef6d0a5a59657e5f55ee","name":"Jack Pyke Hunting LLCS boonie hat","value":21.351,"costPerSlot":22441,"weight":0.18,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"618b9643526131765025ab35":{"id":"618b9643526131765025ab35","name":"Geissele Super Precision 30mm ring scope mount","value":9.529,"costPerSlot":13626,"weight":0.194,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618b9671d14d6d5ab879c5ea":{"id":"618b9671d14d6d5ab879c5ea","name":"Geissele Super Precision top ring cap","value":11.404,"costPerSlot":13414,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618b9682a3884f56c957ca78":{"id":"618b9682a3884f56c957ca78","name":"Reptilia ROF-90 RMR mount for Geissele scope mounts","value":18.531,"costPerSlot":20541,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618ba27d9008e4636a67f61d":{"id":"618ba27d9008e4636a67f61d","name":"Vortex Razor HD Gen.2 1-6x24 30mm riflescope","value":53.62950000000001,"costPerSlot":57914.5,"weight":0.57,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618ba91477b82356f91ae0e8":{"id":"618ba91477b82356f91ae0e8","name":"Geissele Super Precision top ring cap (DDC)","value":9.015,"costPerSlot":11025,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618ba92152ecee1505530bd3":{"id":"618ba92152ecee1505530bd3","name":"Reptilia ROF-90 RMR mount for Geissele scope mounts (DDC)","value":-0.010000000000000009,"costPerSlot":2000,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"618bab21526131765025ab3f":{"id":"618bab21526131765025ab3f","name":"Geissele Super Precision 30mm ring scope mount (DDC)","value":8.0035,"costPerSlot":12100.5,"weight":0.194,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"618bb76513f5097c8d5aa2d5":{"id":"618bb76513f5097c8d5aa2d5","name":"Gruppa 99 T20 backpack (Umber Brown)","value":47.037,"costPerSlot":43162,"weight":1.25,"size":25,"gridSize":25,"maxDim":5,"armorClass":0,"parentWeighting":2},"618cfae774bb2d036a049e7c":{"id":"618cfae774bb2d036a049e7c","name":"LBT-1476A 3Day Pack (Woodland)","value":55.5305,"costPerSlot":46597,"weight":1.133,"size":20,"gridSize":25,"maxDim":5,"armorClass":0,"parentWeighting":2},"619256e5f8af2c1a4e1f5d92":{"id":"619256e5f8af2c1a4e1f5d92","name":"Model 7290 Flash Bang grenade","value":21.054000000000002,"costPerSlot":13264,"weight":0.42,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"619386379fb0c665d5490dbe":{"id":"619386379fb0c665d5490dbe","name":"HK Sturmgriff foregrip","value":27.199,"costPerSlot":29233,"weight":0.068,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6193a720f8ee7e52e42109ed":{"id":"6193a720f8ee7e52e42109ed","name":"HK USP .45 ACP pistol","value":19.559,"costPerSlot":21003,"weight":0.888,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"6193d3149fb0c665d5490e32":{"id":"6193d3149fb0c665d5490e32","name":"HK USP Tactical .45 ACP 12-round magazine","value":2.9529999999999994,"costPerSlot":4999,"weight":0.092,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6193d338de3cdf1d2614a6fc":{"id":"6193d338de3cdf1d2614a6fc","name":"HK USP .45 ACP 12-round magazine","value":0.15050000000000008,"costPerSlot":2200,"weight":0.099,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6193d382ed0429009f543e65":{"id":"6193d382ed0429009f543e65","name":"HK USP .45 ACP pistol slide","value":-2.8045,"costPerSlot":1400,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6193d3be7c6c7b169525f0da":{"id":"6193d3be7c6c7b169525f0da","name":"HK USP hammer","value":-1.2585,"costPerSlot":750,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6193d3cded0429009f543e6a":{"id":"6193d3cded0429009f543e6a","name":"HK USP trigger","value":-1.3064999999999998,"costPerSlot":700,"weight":0.013,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6193d5d4f8ee7e52e4210a1b":{"id":"6193d5d4f8ee7e52e4210a1b","name":"HK USP slide lock","value":-1.504,"costPerSlot":500,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6193dcd0f8ee7e52e4210a28":{"id":"6193dcd0f8ee7e52e4210a28","name":"AR-15 HK Battle Grip Beavertail pistol grip (RAL 8000)","value":7.868,"costPerSlot":9908,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194ef39de3cdf1d2614a768":{"id":"6194ef39de3cdf1d2614a768","name":"HK USP .45 ACP 112mm barrel","value":13.3435,"costPerSlot":15400,"weight":0.113,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194efe07c6c7b169525f11b":{"id":"6194efe07c6c7b169525f11b","name":"HK USP Tactical .45 ACP 129mm threaded barrel","value":42.183,"costPerSlot":44244,"weight":0.122,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194eff92d2c397d6600348b":{"id":"6194eff92d2c397d6600348b","name":"HK USP Expert .45 ACP 132mm barrel","value":24.8945,"costPerSlot":26965,"weight":0.141,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f017ed0429009f543eaa":{"id":"6194f017ed0429009f543eaa","name":"HK USP Elite .45 ACP 153mm barrel","value":2.4185,"costPerSlot":4500,"weight":0.163,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f02d9bb3d20b0946d2f0":{"id":"6194f02d9bb3d20b0946d2f0","name":"HK USP Match .45 ACP 153mm barrel","value":3.915,"costPerSlot":6000,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f1f918a3974e5e7421e4":{"id":"6194f1f918a3974e5e7421e4","name":"HK USP Tactical thread protector","value":-0.9049999999999998,"costPerSlot":1100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f2912d2c397d6600348d":{"id":"6194f2912d2c397d6600348d","name":"HK USP rear sight","value":-1.302,"costPerSlot":700,"weight":0.004,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f2df645b5d229654ad77":{"id":"6194f2df645b5d229654ad77","name":"HK USP Tactical rear sight","value":-1.204,"costPerSlot":800,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f3286db0f2477964e67d":{"id":"6194f3286db0f2477964e67d","name":"HK USP Tactical front sight","value":-1.3024999999999998,"costPerSlot":700,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f35c18a3974e5e7421e6":{"id":"6194f35c18a3974e5e7421e6","name":"HK USP front sight","value":-1.4015,"costPerSlot":600,"weight":0.003,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6194f41f9fb0c665d5490e75":{"id":"6194f41f9fb0c665d5490e75","name":"HK USP Tactical .45 ACP pistol slide","value":-2.586,"costPerSlot":1650,"weight":0.472,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6194f5722d2c397d6600348f":{"id":"6194f5722d2c397d6600348f","name":"HK USP Expert .45 ACP pistol slide","value":-2.27,"costPerSlot":1950,"weight":0.44,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6194f5a318a3974e5e7421eb":{"id":"6194f5a318a3974e5e7421eb","name":"HK USP Match .45 ACP pistol slide","value":6.886000000000001,"costPerSlot":11111,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6194f5d418a3974e5e7421ef":{"id":"6194f5d418a3974e5e7421ef","name":"HK USP Elite .45 ACP pistol slide","value":2.9174999999999995,"costPerSlot":7192.5,"weight":0.55,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"619621a4de3cdf1d2614a7a7":{"id":"619621a4de3cdf1d2614a7a7","name":"HK USP .45 ACP Elite compensator","value":1.3450000000000002,"costPerSlot":3500,"weight":0.31,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619624b26db0f2477964e6b0":{"id":"619624b26db0f2477964e6b0","name":"HK USP .45 ACP Match compensator","value":4.03,"costPerSlot":6200,"weight":0.34,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6196255558ef8c428c287d1c":{"id":"6196255558ef8c428c287d1c","name":"HK USP rail adapter","value":-0.5049999999999999,"costPerSlot":1500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61962b617c6c7b169525f168":{"id":"61962b617c6c7b169525f168","name":"5.45x39mm 7N40","value":8.8945,"costPerSlot":900,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"61962d879bb3d20b0946d385":{"id":"61962d879bb3d20b0946d385","name":"9x39mm PAB-9 gs","value":8.658,"costPerSlot":670,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6196364158ef8c428c287d9f":{"id":"6196364158ef8c428c287d9f","name":".300 Blackout V-Max","value":8.1975,"costPerSlot":205,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6196365d58ef8c428c287da1":{"id":"6196365d58ef8c428c287da1","name":".300 Whisper","value":8.131499999999999,"costPerSlot":139,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"619636be6db0f2477964e710":{"id":"619636be6db0f2477964e710","name":".300 Blackout M62 Tracer","value":9.3,"costPerSlot":1308,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"61963a852d2c397d660036ad":{"id":"61963a852d2c397d660036ad","name":"HK USP Red Dot sight mount","value":38.128,"costPerSlot":40142,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61965d9058ef8c428c287e0d":{"id":"61965d9058ef8c428c287e0d","name":"FN SCAR PWS SRX rail extension","value":17.058000000000003,"costPerSlot":19170,"weight":0.224,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619666f4af1f5202c57a952d":{"id":"619666f4af1f5202c57a952d","name":"FN SCAR Kinetic MREX 6.5 M-LOK rail","value":3.386,"costPerSlot":7499,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6197b229af1f5202c57a9bea":{"id":"6197b229af1f5202c57a9bea","name":"SVDS Lynx Arms Hinge buffer tube adapter","value":15.775499999999997,"costPerSlot":17839,"weight":0.127,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619b5db699fb192e7430664f":{"id":"619b5db699fb192e7430664f","name":"AR-15 Aeroknox AX-15 10.5 inch M-LOK handguard","value":6.556000000000001,"costPerSlot":10727.5,"weight":0.343,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"619b69037b9de8162902673e":{"id":"619b69037b9de8162902673e","name":"AKM/AK-74 Hera Arms CQR47 pistol grip/buttstock","value":11.369000000000002,"costPerSlot":15631.5,"weight":0.525,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"619bc61e86e01e16f839a999":{"id":"619bc61e86e01e16f839a999","name":"Armband (Alpha)","value":97.975,"costPerSlot":100000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bdd8886e01e16f839a99c":{"id":"619bdd8886e01e16f839a99c","name":"Armband (BEAR)","value":79.38,"costPerSlot":81405,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bddc6c9546643a67df6ee":{"id":"619bddc6c9546643a67df6ee","name":"Armband (DEADSKUL)","value":67.975,"costPerSlot":70000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bddffc9546643a67df6f0":{"id":"619bddffc9546643a67df6f0","name":"Armband (Train Hard)","value":47.975,"costPerSlot":50000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bde3dc9546643a67df6f2":{"id":"619bde3dc9546643a67df6f2","name":"Armband (Kiba Arms)","value":47.975,"costPerSlot":50000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bde7fc9546643a67df6f4":{"id":"619bde7fc9546643a67df6f4","name":"Armband (Labs)","value":25.975,"costPerSlot":28000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bdeb986e01e16f839a99e":{"id":"619bdeb986e01e16f839a99e","name":"Armband (RFARMY)","value":59.975,"costPerSlot":62000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bdef8c9546643a67df6f6":{"id":"619bdef8c9546643a67df6f6","name":"Armband (TerraGroup)","value":64.389,"costPerSlot":66414,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bdf9cc9546643a67df6f8":{"id":"619bdf9cc9546643a67df6f8","name":"Armband (UNTAR)","value":52.975,"costPerSlot":55000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619bdfd4c9546643a67df6fa":{"id":"619bdfd4c9546643a67df6fa","name":"Armband (USEC)","value":69.16499999999999,"costPerSlot":71190,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619cbf476b8a1b37a54eebf8":{"id":"619cbf476b8a1b37a54eebf8","name":"Military corrugated tube","value":22.8,"costPerSlot":25000,"weight":0.4,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619cbf7d23893217ec30b689":{"id":"619cbf7d23893217ec30b689","name":"Injector case","value":761.5640000000001,"costPerSlot":752039,"weight":0.35,"size":1,"gridSize":9,"maxDim":1,"armorClass":0,"parentWeighting":0},"619cbf9e0a7c3a1a2731940a":{"id":"619cbf9e0a7c3a1a2731940a","name":"Keycard holder case","value":468.1055,"costPerSlot":458453,"weight":0.095,"size":1,"gridSize":9,"maxDim":1,"armorClass":0,"parentWeighting":0},"619cbfccbedcde2f5b3f7bdd":{"id":"619cbfccbedcde2f5b3f7bdd","name":"Pipe grip wrench","value":61.25,"costPerSlot":66000,"weight":1.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"619cbfeb6b8a1b37a54eebfa":{"id":"619cbfeb6b8a1b37a54eebfa","name":"Bulbex cable cutter","value":48.225,"costPerSlot":52500,"weight":0.55,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"619cc01e0a7c3a1a2731940c":{"id":"619cc01e0a7c3a1a2731940c","name":"Medical tools","value":16.045,"costPerSlot":18170,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619cf0335771dd3c390269ae":{"id":"619cf0335771dd3c390269ae","name":"Gruppa 99 T20 backpack (MultiCam)","value":55.139,"costPerSlot":51264,"weight":1.25,"size":25,"gridSize":25,"maxDim":5,"armorClass":0,"parentWeighting":2},"619d36da53b4d42ee724fae4":{"id":"619d36da53b4d42ee724fae4","name":"MTs-255-12 12ga choke","value":1.7000000000000002,"costPerSlot":3750,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619f4ab2d25cbd424731fb95":{"id":"619f4ab2d25cbd424731fb95","name":"Chiappa Rhino plastic pistol grip","value":-0.845,"costPerSlot":1200,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619f4bffd25cbd424731fb97":{"id":"619f4bffd25cbd424731fb97","name":"Chiappa Rhino wooden pistol grip","value":-1.3,"costPerSlot":750,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619f4cee4c58466fe1228435":{"id":"619f4cee4c58466fe1228435","name":"Chiappa Rhino rear sight","value":-1.3980000000000001,"costPerSlot":604,"weight":0.004,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619f4d304c58466fe1228437":{"id":"619f4d304c58466fe1228437","name":"Chiappa Rhino front sight","value":-1.4994999999999998,"costPerSlot":502,"weight":0.003,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619f4f8c4c58466fe1228439":{"id":"619f4f8c4c58466fe1228439","name":"Chiappa Rhino Red Fiber Optic rear sight","value":-1.1019999999999999,"costPerSlot":900,"weight":0.004,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619f52454c58466fe122843b":{"id":"619f52454c58466fe122843b","name":"Chiappa Rhino Red Fiber Optic front sight","value":-1.1115,"costPerSlot":890,"weight":0.003,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"619f54a1d25cbd424731fb99":{"id":"619f54a1d25cbd424731fb99","name":"Chiappa Rhino .357 6-round cylinder","value":-0.9549999999999998,"costPerSlot":1100,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61a4c8884f95bc3b2c5dc96f":{"id":"61a4c8884f95bc3b2c5dc96f","name":"Chiappa Rhino 50DS .357 revolver","value":7.887499999999999,"costPerSlot":9338.5,"weight":0.902,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"61a4cda622af7f4f6a3ce617":{"id":"61a4cda622af7f4f6a3ce617","name":"Chiappa Rhino .357 6-round speedloader","value":-2.125,"costPerSlot":0,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61a64428a8c6aa1b795f0ba1":{"id":"61a64428a8c6aa1b795f0ba1","name":"Convenience store storage room key","value":13.698,"costPerSlot":15703,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61a6444b8c141d68246e2d2f":{"id":"61a6444b8c141d68246e2d2f","name":"Hillside house key","value":22.180000000000003,"costPerSlot":24185,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61a6446f4b5f8b70f451b166":{"id":"61a6446f4b5f8b70f451b166","name":"Cold storage room key","value":35.995,"costPerSlot":38000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61a64492ba05ef10d62adcc1":{"id":"61a64492ba05ef10d62adcc1","name":"Rogue USEC stash key","value":32.396,"costPerSlot":34401,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61a89e5445a2672acf66c877":{"id":"61a89e5445a2672acf66c877","name":"Airdrop supply crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"61a89e812cc17d60cc5f9879":{"id":"61a89e812cc17d60cc5f9879","name":"Airdrop supply crate 2","value":30,"costPerSlot":0,"weight":1,"size":1,"gridSize":25,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa1e6984ea0800645777f9":{"id":"61aa1e6984ea0800645777f9","name":"Weapon box","value":20.900000000000002,"costPerSlot":0,"weight":1,"size":1,"gridSize":18,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa1e9a32a4743c3453d2cf":{"id":"61aa1e9a32a4743c3453d2cf","name":"Duffle bag","value":13.100000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":12,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa1ead84ea0800645777fd":{"id":"61aa1ead84ea0800645777fd","name":"Medbag SMU06","value":13.100000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":12,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa5aed32a4743c3453d319":{"id":"61aa5aed32a4743c3453d319","name":"Police truck cabin key","value":22.496000000000002,"costPerSlot":24501,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa5b518f5e7a39b41416e2":{"id":"61aa5b518f5e7a39b41416e2","name":"Merin car trunk key","value":25.949,"costPerSlot":27954,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa5b7db225ac1ead7957c1":{"id":"61aa5b7db225ac1ead7957c1","name":"USEC cottage first safe key","value":47.812,"costPerSlot":49817,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa5ba8018e9821b7368da9":{"id":"61aa5ba8018e9821b7368da9","name":"USEC cottage second safe key","value":56.338,"costPerSlot":58343,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61aa81fcb225ac1ead7957c3":{"id":"61aa81fcb225ac1ead7957c3","name":"Rogue USEC workshop key","value":25.495,"costPerSlot":27500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61b9e1aaef9a1b5d6a79899a":{"id":"61b9e1aaef9a1b5d6a79899a","name":"Santa's bag","value":66.202,"costPerSlot":62022,"weight":2.64,"size":35,"gridSize":35,"maxDim":7,"armorClass":0,"parentWeighting":2},"61bc85697113f767765c7fe7":{"id":"61bc85697113f767765c7fe7","name":"Eagle Industries MMAC plate carrier (Ranger Green)","value":35.67,"costPerSlot":29885,"weight":2.83,"size":9,"gridSize":14,"maxDim":3,"armorClass":0,"parentWeighting":1},"61bca7cda0eae612383adf57":{"id":"61bca7cda0eae612383adf57","name":"NFM HJELM helmet (Hellhound Grey)","value":39.169000000000004,"costPerSlot":40569,"weight":0.8,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"61bcc89aef0f505f0c6cd0fc":{"id":"61bcc89aef0f505f0c6cd0fc","name":"FirstSpear Strandhogg plate carrier (Ranger Green)","value":55.422000000000004,"costPerSlot":49922,"weight":3.2,"size":12,"gridSize":17,"maxDim":4,"armorClass":0,"parentWeighting":1},"61bf7b6302b3924be92fa8c3":{"id":"61bf7b6302b3924be92fa8c3","name":"Metal spare parts","value":11.781,"costPerSlot":14006,"weight":0.45,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61bf7c024770ee6f9c6b8b53":{"id":"61bf7c024770ee6f9c6b8b53","name":"Secure magnetic tape cassette","value":142.875,"costPerSlot":145000,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61bf83814088ec1a363d7097":{"id":"61bf83814088ec1a363d7097","name":"Sewing kit","value":35.82,"costPerSlot":38000,"weight":0.36,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61c18d83b00456371a66814b":{"id":"61c18d83b00456371a66814b","name":"Gas welder safety goggles","value":30.925,"costPerSlot":30000,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"61c18db6dfd64163ea78fbb4":{"id":"61c18db6dfd64163ea78fbb4","name":"Leather cap","value":18.106,"costPerSlot":17181,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"61f4012adfc9f01a816adda1":{"id":"61f4012adfc9f01a816adda1","name":"MP-18 7.62x54R 600mm barrel","value":-7.65,"costPerSlot":1025,"weight":1.35,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"61f7b234ea4ab34f2f59c3ec":{"id":"61f7b234ea4ab34f2f59c3ec","name":"MP-18 wooden stock","value":-3.58,"costPerSlot":700,"weight":0.56,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61f7b85367ddd414173fdb36":{"id":"61f7b85367ddd414173fdb36","name":"MP-18 wooden handguard","value":-3.091,"costPerSlot":1000,"weight":0.182,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61f7c9e189e6fb1a5e3ea78d":{"id":"61f7c9e189e6fb1a5e3ea78d","name":"MP-18 7.62x54R single-shot rifle","value":-2.5538,"costPerSlot":5872.2,"weight":2.8520000000000003,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"61f8024263dc1250e26eb029":{"id":"61f8024263dc1250e26eb029","name":"MP-18 polymer handguard","value":-2.815,"costPerSlot":1250,"weight":0.13,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61f803b8ced75b2e852e35f8":{"id":"61f803b8ced75b2e852e35f8","name":"MP-18 polymer stock","value":-3.385,"costPerSlot":850,"weight":0.47,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"61f804acfcba9556ea304cb8":{"id":"61f804acfcba9556ea304cb8","name":"MP-18 sight mount","value":20.853,"costPerSlot":22913,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"61faa91878830f069b6b7967":{"id":"61faa91878830f069b6b7967","name":"SV-98 wooden stock","value":-8.48775,"costPerSlot":968.75,"weight":2.913,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"620109578d82e67e7911abf2":{"id":"620109578d82e67e7911abf2","name":"ZiD SP-81 26x75 signal pistol","value":3.6390000000000002,"costPerSlot":4939,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"6217726288ed9f0845317459":{"id":"6217726288ed9f0845317459","name":"RSP-30 reactive signal cartridge (Green)","value":6.093500000000001,"costPerSlot":7188.5,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"62178be9d0050232da3485d9":{"id":"62178be9d0050232da3485d9","name":"ROP-30 reactive flare cartridge (White)","value":8.793999999999999,"costPerSlot":9889,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"62178c4d4ecf221597654e3d":{"id":"62178c4d4ecf221597654e3d","name":"RSP-30 reactive signal cartridge (Red)","value":13.905,"costPerSlot":15000,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"6223349b3136504a544d1608":{"id":"6223349b3136504a544d1608","name":"Airdrop common supply crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"622334c873090231d904a9fc":{"id":"622334c873090231d904a9fc","name":"Airdrop medical crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"622334fa3136504a544d160c":{"id":"622334fa3136504a544d160c","name":"Airdrop supply crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"6223351bb5d97a7b2c635ca7":{"id":"6223351bb5d97a7b2c635ca7","name":"Airdrop weapon crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"622b327b267a1b13a44abea3":{"id":"622b327b267a1b13a44abea3","name":"HK G36 gas block","value":0.9700000000000002,"costPerSlot":3000,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622b379bf9cfc87d675d2de5":{"id":"622b379bf9cfc87d675d2de5","name":"HK G36 5.56x45 228mm barrel","value":2.8049999999999997,"costPerSlot":7000,"weight":0.39,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622b3858034a3e17ad0b81f5":{"id":"622b3858034a3e17ad0b81f5","name":"HK G36 5.56x45 318mm barrel","value":10.122,"costPerSlot":16357,"weight":0.47,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"622b38c56762c718e457e246":{"id":"622b38c56762c718e457e246","name":"HK G36 5.56x45 480mm barrel","value":-2.15625,"costPerSlot":6188.75,"weight":0.69,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"622b397c9a3d4327e41843b6":{"id":"622b397c9a3d4327e41843b6","name":"HK G36 bipod","value":4.8210000000000015,"costPerSlot":8934,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622b3c081b89c677a33bcda6":{"id":"622b3c081b89c677a33bcda6","name":"HK G36 sight mount","value":6.9765,"costPerSlot":11132.5,"weight":0.312,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622b3d5cf9cfc87d675d2de9":{"id":"622b3d5cf9cfc87d675d2de9","name":"HK G36 optic rail with flip-up sights","value":7.217500000000001,"costPerSlot":11444,"weight":0.453,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622b4d7df9cfc87d675d2ded":{"id":"622b4d7df9cfc87d675d2ded","name":"HK G36 Hensoldt HKV 3x carry handle","value":0.6509999999999998,"costPerSlot":4750,"weight":0.198,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622b4f54dc8dcc0ba8742f85":{"id":"622b4f54dc8dcc0ba8742f85","name":"HK G36 Hensoldt HKV ZF 1.5x carry handle","value":0.15399999999999991,"costPerSlot":4250,"weight":0.192,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622efbcb99f4ea1a4d6c9a15":{"id":"622efbcb99f4ea1a4d6c9a15","name":"Hensoldt RV red dot sight","value":5.8865,"costPerSlot":8000,"weight":0.227,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622efdf8ec80d870d349b4e5":{"id":"622efdf8ec80d870d349b4e5","name":"Hensoldt RIS top rail","value":-0.6074999999999999,"costPerSlot":1400,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622f02437762f55aaa68ac85":{"id":"622f02437762f55aaa68ac85","name":"HK G36 magwell","value":-1.01,"costPerSlot":1000,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622f039199f4ea1a4d6c9a17":{"id":"622f039199f4ea1a4d6c9a17","name":"HK G36 STANAG magwell","value":-0.51,"costPerSlot":1500,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622f07cfae33bc505b2c4dd5":{"id":"622f07cfae33bc505b2c4dd5","name":"HK G36 5.56x45 flash hider","value":3.0685000000000002,"costPerSlot":5100,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622f0ee47762f55aaa68ac87":{"id":"622f0ee47762f55aaa68ac87","name":"HK G36C 5.56x45 4-prong flash hider","value":3.4749999999999996,"costPerSlot":5500,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622f128cec80d870d349b4e8":{"id":"622f128cec80d870d349b4e8","name":"HK G36 5.56x45 4-prong flash hider","value":5.742,"costPerSlot":7772,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"622f140da5958f63c67f1735":{"id":"622f140da5958f63c67f1735","name":"HK G36 polymer stock","value":-1.2269999999999999,"costPerSlot":3000,"weight":0.454,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622f14e899892a7f9e08f6c5":{"id":"622f14e899892a7f9e08f6c5","name":"HK G36 KV adjustable stock","value":4.0875,"costPerSlot":8541,"weight":0.907,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"622f16a1a5958f63c67f1737":{"id":"622f16a1a5958f63c67f1737","name":"HK G36 hand stop","value":-1.5025,"costPerSlot":500,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"623063e994fc3f7b302a9696":{"id":"623063e994fc3f7b302a9696","name":"HK G36 5.56x45 assault rifle","value":45.6735,"costPerSlot":60049,"weight":2.751,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"62307b7b10d2321fa8741921":{"id":"62307b7b10d2321fa8741921","name":"HK G36 5.56x45 30-round magazine","value":0.5495000000000001,"costPerSlot":4619.5,"weight":0.14,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6231654c71b5bc3baa1078e5":{"id":"6231654c71b5bc3baa1078e5","name":"HK G36 6-vent handguard","value":-3.1056666666666666,"costPerSlot":3084.3333333333335,"weight":0.38,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"623166e08c43374ca1567195":{"id":"623166e08c43374ca1567195","name":"HK G36 front sight","value":0.31499999999999995,"costPerSlot":2350,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6231670f0b8aa5472d060095":{"id":"6231670f0b8aa5472d060095","name":"HK G36 rear sight","value":-0.825,"costPerSlot":1250,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62330b3ed4dc74626d570b95":{"id":"62330b3ed4dc74626d570b95","name":".357 Magnum FMJ","value":8.4,"costPerSlot":408,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62330bfadc5883093563729b":{"id":"62330bfadc5883093563729b","name":".357 Magnum HP","value":8.238,"costPerSlot":246,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62330c18744e5e31df12f516":{"id":"62330c18744e5e31df12f516","name":".357 Magnum JHP","value":8.178,"costPerSlot":186,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62330c40bdd19b369e1e53d1":{"id":"62330c40bdd19b369e1e53d1","name":".357 Magnum SP","value":8.0965,"costPerSlot":104,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62386b2adf47d66e835094b2":{"id":"62386b2adf47d66e835094b2","name":"HK G36 2-vent handguard","value":-2.865,"costPerSlot":1250,"weight":0.23,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62386b7153757417e93a4e9f":{"id":"62386b7153757417e93a4e9f","name":"HK G36 4-vent handguard","value":-2.14,"costPerSlot":2000,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62389aaba63f32501b1b444f":{"id":"62389aaba63f32501b1b444f","name":"26x75mm flare cartridge (Green)","value":14.191500000000001,"costPerSlot":6213,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62389ba9a63f32501b1b4451":{"id":"62389ba9a63f32501b1b4451","name":"26x75mm flare cartridge (Red)","value":37.979,"costPerSlot":30000,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62389bc9423ed1685422dc57":{"id":"62389bc9423ed1685422dc57","name":"26x75mm flare cartridge (White)","value":30.901500000000002,"costPerSlot":22929,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62389be94d5d474bf712e709":{"id":"62389be94d5d474bf712e709","name":"26x75mm flare cartridge (Yellow)","value":12.933,"costPerSlot":4958,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"623b2e9d11c3296b440d1638":{"id":"623b2e9d11c3296b440d1638","name":"SV-98 CNC Guns OV-SV98 chassis","value":9.248,"costPerSlot":15523,"weight":0.55,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"623c2f4242aee3103f1c44b7":{"id":"623c2f4242aee3103f1c44b7","name":"CNC Guns KeyMod 4 inch rail","value":11.631,"costPerSlot":13666,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"623c2f652febb22c2777d8d7":{"id":"623c2f652febb22c2777d8d7","name":"CNC Guns KeyMod 2 inch rail","value":-1.016,"costPerSlot":1009,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"623c3be0484b5003161840dc":{"id":"623c3be0484b5003161840dc","name":"AK FAB Defense AGR-47 pistol grip (FDE)","value":9.836,"costPerSlot":11896,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"623c3c1f37b4b31470357737":{"id":"623c3c1f37b4b31470357737","name":"SV-98 CNC Guns OV-SV98 KeyMod handguard","value":3.7170000000000005,"costPerSlot":7882,"weight":0.33,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6241c2c2117ad530666a5108":{"id":"6241c2c2117ad530666a5108","name":"AR-15 6mm Magpul PMAG 30 GEN M3 STANAG 30-round magazine (FDE)","value":-2.5125,"costPerSlot":1556.5,"weight":0.138,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6241c316234b593b5676b637":{"id":"6241c316234b593b5676b637","name":"Airsoft 6mm BB","value":8.084,"costPerSlot":94,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"62444cb99f47004c781903eb":{"id":"62444cb99f47004c781903eb","name":"HK G36 bottom handguard rail","value":26.965,"costPerSlot":29000,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62444cd3674028188b052799":{"id":"62444cd3674028188b052799","name":"HK G36 side handguard rail","value":23.939000000000004,"costPerSlot":25964,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"624c0570c9b794431568f5d5":{"id":"624c0570c9b794431568f5d5","name":"Signal flare (Green)","value":8.0425,"costPerSlot":74,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"624c09cfbc2e27219346d955":{"id":"624c09cfbc2e27219346d955","name":"Signal flare (Red)","value":8.0425,"costPerSlot":74,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"624c09da2cec124eb67c1046":{"id":"624c09da2cec124eb67c1046","name":"Signal flare (White)","value":8.0425,"costPerSlot":74,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"624c09e49b98e019a3315b66":{"id":"624c09e49b98e019a3315b66","name":"Signal flare (Yellow)","value":8.0425,"costPerSlot":74,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"624c0b3340357b5f566e8766":{"id":"624c0b3340357b5f566e8766","name":"RSP-30 reactive signal cartridge (Yellow)","value":1.1509999999999998,"costPerSlot":2246,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"624c29ce09cd027dff2f8cd7":{"id":"624c29ce09cd027dff2f8cd7","name":"CNC Guns OV-SV98 M12B stock","value":2.6110000000000007,"costPerSlot":7131,"weight":1.04,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"624c2e8614da335f1e034d8c":{"id":"624c2e8614da335f1e034d8c","name":"Chiappa Rhino 200DS 9x19 revolver","value":9.8215,"costPerSlot":9178,"weight":0.713,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":3},"624c3074dbbd335e8e6becf3":{"id":"624c3074dbbd335e8e6becf3","name":"Chiappa Rhino 9x19 6-round cylinder","value":-1.255,"costPerSlot":800,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6259b864ebedf17603599e88":{"id":"6259b864ebedf17603599e88","name":"Benelli M3 Super 90 12ga dual-mode shotgun","value":-3.732100000000001,"costPerSlot":5235.4,"weight":3.935,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"6259bdcabd28e4721447a2aa":{"id":"6259bdcabd28e4721447a2aa","name":"Benelli M3 Super 90 12ga 7-shell magazine","value":4.015000000000001,"costPerSlot":8128.5,"weight":0.227,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6259c2c1d714855d182bad85":{"id":"6259c2c1d714855d182bad85","name":"Benelli M3 Super 90 12ga 500mm barrel","value":-1.9000000000000004,"costPerSlot":4500,"weight":0.8,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6259c3387d6aab70bc23a18d":{"id":"6259c3387d6aab70bc23a18d","name":"Benelli M3 telescopic stock","value":6.114000000000001,"costPerSlot":10500,"weight":0.772,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6259c3d8012d6678ec38eeb8":{"id":"6259c3d8012d6678ec38eeb8","name":"Benelli M3 telescopic stock pistol grip","value":0.032500000000000195,"costPerSlot":2100,"weight":0.135,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6259c4347d6aab70bc23a190":{"id":"6259c4347d6aab70bc23a190","name":"Benelli M3 forend","value":-3.068,"costPerSlot":1000,"weight":0.136,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"625eb0faa6e3a82193267ad9":{"id":"625eb0faa6e3a82193267ad9","name":"Benelli M3 Mesa Tactical Urbino stock","value":-2.3322499999999997,"costPerSlot":4189.25,"weight":1.043,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"625ebcef6f53af4aa66b44dc":{"id":"625ebcef6f53af4aa66b44dc","name":"Benelli M3 Ghost Ring rear sight","value":-1.2174999999999998,"costPerSlot":800,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"625ec45bb14d7326ac20f572":{"id":"625ec45bb14d7326ac20f572","name":"Benelli M3 Super 90 charging handle","value":-0.7064999999999999,"costPerSlot":1300,"weight":0.013,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"625ed7c64d9b6612df732146":{"id":"625ed7c64d9b6612df732146","name":"Benelli M3 Super 90 upper receiver top rail","value":-0.605,"costPerSlot":1450,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"625ff2ccb8c587128c1a01dd":{"id":"625ff2ccb8c587128c1a01dd","name":"Benelli M3 Super 90 12ga 5-shell magazine cap","value":-0.5425,"costPerSlot":1500,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"625ff2eb9f5537057932257d":{"id":"625ff2eb9f5537057932257d","name":"Benelli M3 Super 90 12ga Toni System 9-shell magazine","value":-0.6215000000000002,"costPerSlot":5506,"weight":0.255,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"625ff3046d721f05d93bf2ee":{"id":"625ff3046d721f05d93bf2ee","name":"Benelli M3 Super 90 12ga Toni System 11-shell magazine","value":2.6368333333333336,"costPerSlot":8786.333333333334,"weight":0.299,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"625ff31daaaa8c1130599f64":{"id":"625ff31daaaa8c1130599f64","name":"Benelli M3 Super 90 12ga Toni System 13-shell magazine","value":-3.1695,"costPerSlot":5000.5,"weight":0.34,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"626667e87379c44d557b7550":{"id":"626667e87379c44d557b7550","name":"AR-15 KAC QDC 5.56x45 3-Prong Flash Eliminator","value":21.4695,"costPerSlot":23502,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"626673016f1edc06f30cf6d5":{"id":"626673016f1edc06f30cf6d5","name":"KAC QDC 5.56x45 sound suppressor","value":31.2735,"costPerSlot":35500,"weight":0.453,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62669bccdb9ebb4daa44cd14":{"id":"62669bccdb9ebb4daa44cd14","name":"AR-15 SureFire Warden 5.56x45 blast regulator","value":16.826500000000003,"costPerSlot":18937,"weight":0.221,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6267c6396b642f77f56f5c1c":{"id":"6267c6396b642f77f56f5c1c","name":"Daniel Defense 25mm accessory ring mount","value":15.719999999999999,"costPerSlot":17750,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6269220d70b6c02e665f2635":{"id":"6269220d70b6c02e665f2635","name":"Magpul M-LOK Cantilever Mount","value":9.485,"costPerSlot":11510,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6269545d0e57f218e4548ca2":{"id":"6269545d0e57f218e4548ca2","name":"Magpul M-LOK Offset Light Mount","value":6.718500000000001,"costPerSlot":8737,"weight":0.037,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"626a74340be03179a165e30c":{"id":"626a74340be03179a165e30c","name":"AR-15 Yankee Hill Phantom 5.56x45 flash hider","value":10.380500000000001,"costPerSlot":12412,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"626a8ae89e664a2e2a75f409":{"id":"626a8ae89e664a2e2a75f409","name":"TOZ-106 FAB Defense GPCP cheek rest","value":-0.7774999999999999,"costPerSlot":1300,"weight":0.155,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"626a9cb151cb5849f6002890":{"id":"626a9cb151cb5849f6002890","name":"M1911 Kiba Arms Geneburn custom side grips","value":77.94,"costPerSlot":80000,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"626bb8532c923541184624b4":{"id":"626bb8532c923541184624b4","name":"SwampFox Trihawk Prism Scope 3x30","value":10.674,"costPerSlot":14892,"weight":0.436,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"626becf9582c3e319310b837":{"id":"626becf9582c3e319310b837","name":"Insight WMX200 tactical flashlight","value":18.108,"costPerSlot":20213,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6272370ee4013c5d7e31f418":{"id":"6272370ee4013c5d7e31f418","name":"Olight Baldr Pro tactical flashlight with laser","value":13.141499999999999,"costPerSlot":15206,"weight":0.129,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6272379924e29f06af4d5ecb":{"id":"6272379924e29f06af4d5ecb","name":"Olight Baldr Pro tactical flashlight with laser (Tan)","value":22.663500000000003,"costPerSlot":24728,"weight":0.129,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"627254cc9c563e6e442c398f":{"id":"627254cc9c563e6e442c398f","name":"AR-15 Strike Industries Viper PDW stock","value":4.949,"costPerSlot":9235.5,"weight":0.573,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6272874a6c47bd74f92e2087":{"id":"6272874a6c47bd74f92e2087","name":"AK 7.62x39 FAB Defense Ultimag 30R 30-round magazine","value":2,"costPerSlot":6078,"weight":0.156,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6275303a9f372d6ea97f9ec7":{"id":"6275303a9f372d6ea97f9ec7","name":"Milkor M32A1 MSGL 40mm grenade launcher","value":11.3875,"costPerSlot":23125,"weight":5.475,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"627a4e6b255f7527fb05a0f6":{"id":"627a4e6b255f7527fb05a0f6","name":"","value":-414.8,"costPerSlot":0,"weight":0,"size":400,"gridSize":4,"maxDim":20,"armorClass":0,"parentWeighting":0},"627bce33f21bc425b06ab967":{"id":"627bce33f21bc425b06ab967","name":"M32A1 40mm cylinder","value":4.85,"costPerSlot":11250,"weight":0.8,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"627e14b21713922ded6f2c15":{"id":"627e14b21713922ded6f2c15","name":"Accuracy International AXMC .338 LM bolt-action sniper rifle","value":223.105,"costPerSlot":250000,"weight":5.79,"size":18,"gridSize":0,"maxDim":9,"armorClass":0,"parentWeighting":3},"62811cd7308cb521f87a8f99":{"id":"62811cd7308cb521f87a8f99","name":"AI AXMC .338 LM bolt assembly","value":10.775,"costPerSlot":13000,"weight":0.45,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62811d61578c54356d6d67ea":{"id":"62811d61578c54356d6d67ea","name":"!!!DO_NOT_USE!!!AI AXMC 7.62x51mm bolt assembly","value":-1.2845,"costPerSlot":733,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62811e2510e26c1f344e6554":{"id":"62811e2510e26c1f344e6554","name":"AI AXMC pistol grip","value":67.411,"costPerSlot":69521,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62811e335631d45211793c95":{"id":"62811e335631d45211793c95","name":"AI AXMC GTAC AR-type pistol grip adapter","value":37.303,"costPerSlot":39378,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62811f461d5df4475f46a332":{"id":"62811f461d5df4475f46a332","name":"AI AX-50 34mm scope mount","value":4.810499999999999,"costPerSlot":8925.5,"weight":0.23,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62811f828193841aca4a45c3":{"id":"62811f828193841aca4a45c3","name":"AI AXMC AX buttstock","value":6.35,"costPerSlot":10610,"weight":0.52,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62811fa609427b40ab14e765":{"id":"62811fa609427b40ab14e765","name":"AI .338 LM Tactical Sound Moderator","value":47.6675,"costPerSlot":52000,"weight":0.665,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62811fbf09427b40ab14e767":{"id":"62811fbf09427b40ab14e767","name":"AI AXMC upper receiver","value":-0.69,"costPerSlot":3500,"weight":0.38,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628120415631d45211793c99":{"id":"628120415631d45211793c99","name":"!!!DO_NOT_USE!!!AI AXMC 7.62x51mm chassis","value":-1.5359999999999996,"costPerSlot":2599,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6281204f308cb521f87a8f9b":{"id":"6281204f308cb521f87a8f9b","name":"AI AXMC .338 LM chassis","value":-1.4049999999999998,"costPerSlot":2750,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628120621d5df4475f46a335":{"id":"628120621d5df4475f46a335","name":"AI AXMC thread protector","value":-1.205,"costPerSlot":800,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62812081d23f207deb0ab216":{"id":"62812081d23f207deb0ab216","name":"AI .338 LM Tactical Muzzle Brake ","value":11.641,"costPerSlot":13756,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6281209662cba23f6c4d7a19":{"id":"6281209662cba23f6c4d7a19","name":"AI AXMC AX KeySlot 16 inch handguard","value":-0.8816666666666668,"costPerSlot":5333.333333333333,"weight":0.43,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"628120c21d5df4475f46a337":{"id":"628120c21d5df4475f46a337","name":"AI AXMC AT X Top Rail ","value":-5.524666666666667,"costPerSlot":510.3333333333333,"weight":0.07,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"628120d309427b40ab14e76d":{"id":"628120d309427b40ab14e76d","name":"AI AXMC Adapter Kit short length rail","value":-0.2825,"costPerSlot":1750,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628120dd308cb521f87a8fa1":{"id":"628120dd308cb521f87a8fa1","name":"AI AXMC Adapter Kit medium length rail","value":-0.1349999999999998,"costPerSlot":1900,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628120f210e26c1f344e6558":{"id":"628120f210e26c1f344e6558","name":"!!!DO_NOT_USE!!!AI AXMC 7.62x51 10-round magazine","value":-4.25,"costPerSlot":0,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628120fd5631d45211793c9f":{"id":"628120fd5631d45211793c9f","name":"AI AXMC .338 LM 10-round magazine","value":4.453000000000001,"costPerSlot":8653,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6281212a09427b40ab14e770":{"id":"6281212a09427b40ab14e770","name":"AI AXMC padded handguard grip","value":0.45500000000000007,"costPerSlot":2500,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628121434fa03b6b6c35dc6a":{"id":"628121434fa03b6b6c35dc6a","name":"AI AXMC .338 LM 28 inch barrel","value":5.535,"costPerSlot":14500,"weight":1.93,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6281214c1d5df4475f46a33a":{"id":"6281214c1d5df4475f46a33a","name":"!!!DO_NOT_USE!!!AI AXMC 7.62x51 26 inch barrel","value":-2.374999999999999,"costPerSlot":6350,"weight":1.45,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6281215b4fa03b6b6c35dc6c":{"id":"6281215b4fa03b6b6c35dc6c","name":"!!!DO_NOT_USE!!!AI AXMC 7.62x51 24 inch barrel","value":-2.374999999999999,"costPerSlot":6350,"weight":1.45,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"628121651d5df4475f46a33c":{"id":"628121651d5df4475f46a33c","name":"!!!DO_NOT_USE!!!AI AXMC 7.62x51 20 inch barrel","value":0.8000000000000007,"costPerSlot":7400,"weight":1.2,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6284bd5f95250a29bc628a30":{"id":"6284bd5f95250a29bc628a30","name":"Milkor M2A1 grenade launcher reflex sight","value":18.7,"costPerSlot":21000,"weight":0.6,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62850c28da09541f43158cca":{"id":"62850c28da09541f43158cca","name":"Schmidt & Bender PM II 5-25x56 34mm riflescope","value":42.96,"costPerSlot":47500,"weight":1.08,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628a60ae6b1d481ff772e9c8":{"id":"628a60ae6b1d481ff772e9c8","name":"Rifle Dynamics RD-704 7.62x39 assault rifle","value":92.7735,"costPerSlot":107691,"weight":3.8349999999999995,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"628a664bccaab13006640e47":{"id":"628a664bccaab13006640e47","name":"AK TangoDown Battle Grip pistol grip","value":15.915,"costPerSlot":17970,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628a665a86cbd9750d2ff5e5":{"id":"628a665a86cbd9750d2ff5e5","name":"RD-704 dust cover","value":13.683499999999999,"costPerSlot":17727.5,"weight":0.088,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628a6678ccaab13006640e49":{"id":"628a6678ccaab13006640e49","name":"AKM/AK-74 RD AK to M4 buffer tube adapter","value":11.815,"costPerSlot":13914,"weight":0.198,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628a66b41d5e41750e314f34":{"id":"628a66b41d5e41750e314f34","name":"AR-10 Dead Air Keymount 7.62x51 muzzle brake","value":6.945,"costPerSlot":9000,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628a7b23b0f75035732dd565":{"id":"628a7b23b0f75035732dd565","name":"AK RD Enhanced V2 Rear Sight","value":21.247,"costPerSlot":23260,"weight":0.026,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628a83c29179c324ed269508":{"id":"628a83c29179c324ed269508","name":"RD-704 SLR ION Lite + Railed Gas Tube handguard with gas tube","value":10.621,"costPerSlot":14861,"weight":0.48,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628a85ee6b1d481ff772e9d5":{"id":"628a85ee6b1d481ff772e9d5","name":"AR-15 SB Tactical SBA3 brace","value":0.6604999999999999,"costPerSlot":4756,"weight":0.191,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628b5638ad252a16da6dd245":{"id":"628b5638ad252a16da6dd245","name":"SAG AK-545 5.45x39 carbine","value":36.484,"costPerSlot":55728,"weight":4.488,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"628b8d83717774443b15e248":{"id":"628b8d83717774443b15e248","name":"AK-545 Mk. 2.1 gas tube","value":0.25000000000000044,"costPerSlot":2300,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628b916469015a4e1711ed8d":{"id":"628b916469015a4e1711ed8d","name":"AK-545 Mk.3 handguard","value":9.4915,"costPerSlot":13800,"weight":0.617,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628b9471078f94059a4b9bfb":{"id":"628b9471078f94059a4b9bfb","name":"AK-545 rear sight","value":5.1155,"costPerSlot":7123,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628b9784bcf6e2659e09b8a2":{"id":"628b9784bcf6e2659e09b8a2","name":"S&S Precision PlateFrame plate carrier (Goons Edition)","value":143.738,"costPerSlot":142398,"weight":1.32,"size":9,"gridSize":10,"maxDim":3,"armorClass":0,"parentWeighting":1},"628b9a40717774443b15e9f2":{"id":"628b9a40717774443b15e9f2","name":"AK-545 buffer tube","value":-0.1875,"costPerSlot":3900,"weight":0.175,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"628b9be6cff66b70c002b14c":{"id":"628b9be6cff66b70c002b14c","name":"AK-545 railed dust cover","value":43.87800000000001,"costPerSlot":45922,"weight":0.088,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628b9c37a733087d0d7fe84b":{"id":"628b9c37a733087d0d7fe84b","name":"SAG AK-545 Short 5.45x39 carbine","value":50.621,"costPerSlot":65810,"weight":4.378,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"628b9c7d45122232a872358f":{"id":"628b9c7d45122232a872358f","name":"Crye Precision CPC plate carrier (Goons Edition)","value":116.927,"costPerSlot":110377,"weight":3.7,"size":12,"gridSize":18,"maxDim":4,"armorClass":0,"parentWeighting":1},"628baf0b967de16aab5a4f36":{"id":"628baf0b967de16aab5a4f36","name":"LBT-1961A Load Bearing Chest Rig (Goons Edition)","value":104.11,"costPerSlot":92390,"weight":1.36,"size":9,"gridSize":18,"maxDim":3,"armorClass":0,"parentWeighting":1},"628bc7fb408e2b2e9c0801b1":{"id":"628bc7fb408e2b2e9c0801b1","name":"Mystery Ranch NICE COMM 3 BVS frame system (Coyote)","value":167.7,"costPerSlot":180000,"weight":15,"size":20,"gridSize":14,"maxDim":5,"armorClass":0,"parentWeighting":2},"628c9ab845c59e5b80768a81":{"id":"628c9ab845c59e5b80768a81","name":"AK TangoDown Battle Grip pistol grip (FDE)","value":21.651,"costPerSlot":23706,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"628cd624459354321c4b7fa2":{"id":"628cd624459354321c4b7fa2","name":"Tasmanian Tiger SK plate carrier (MultiCam Black)","value":125.798,"costPerSlot":127148,"weight":1.5,"size":9,"gridSize":8,"maxDim":3,"armorClass":0,"parentWeighting":1},"628d0618d1ba6e4fa07ce5a4":{"id":"628d0618d1ba6e4fa07ce5a4","name":"NPP KlASS Bagariy plate carrier (EMR)","value":109.921,"costPerSlot":98971,"weight":5.1,"size":16,"gridSize":25,"maxDim":4,"armorClass":0,"parentWeighting":1},"628dc750b910320f4c27a732":{"id":"628dc750b910320f4c27a732","name":"ECLiPSE RBAV-AF plate carrier (Ranger Green)","value":39.446,"costPerSlot":31071,"weight":2.65,"size":12,"gridSize":19,"maxDim":4,"armorClass":0,"parentWeighting":1},"628e1ffc83ec92260c0f437f":{"id":"628e1ffc83ec92260c0f437f","name":"Gruppa 99 T30 backpack (Black)","value":164.216,"costPerSlot":159916,"weight":1.4,"size":30,"gridSize":30,"maxDim":6,"armorClass":0,"parentWeighting":2},"628e4dd1f477aa12234918aa":{"id":"628e4dd1f477aa12234918aa","name":"Big Pipe's bandana","value":38.859,"costPerSlot":35909,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"628e4e576d783146b124c64d":{"id":"628e4e576d783146b124c64d","name":"Peltor ComTac IV Hybrid headset (Coyote Brown)","value":23.94675,"costPerSlot":25246.75,"weight":0.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"62963c18dbc8ab5f0d382d0b":{"id":"62963c18dbc8ab5f0d382d0b","name":"Death Knight mask","value":80.61,"costPerSlot":72000,"weight":0.78,"size":4,"gridSize":0,"maxDim":2,"armorClass":1,"parentWeighting":5},"62987c658081af308d7558c6":{"id":"62987c658081af308d7558c6","name":"Radar station commandant room key","value":257.995,"costPerSlot":260000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62987cb98081af308d7558c8":{"id":"62987cb98081af308d7558c8","name":"Conference room key","value":54.995,"costPerSlot":57000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62987da96188c076bc0d8c51":{"id":"62987da96188c076bc0d8c51","name":"Operating room key","value":94.995,"costPerSlot":97000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62987dfc402c7f69bf010923":{"id":"62987dfc402c7f69bf010923","name":"Shared bedroom marked key","value":247.995,"costPerSlot":250000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62987e26a77ec735f90a2995":{"id":"62987e26a77ec735f90a2995","name":"Water treatment plant storage room key","value":19.065,"costPerSlot":21070,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a08f4c4f842e1bd12d9d62":{"id":"62a08f4c4f842e1bd12d9d62","name":"BEAR Buddy plush toy","value":15.485,"costPerSlot":21675,"weight":0.38,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62a091170b9d3c46de5b6cf2":{"id":"62a091170b9d3c46de5b6cf2","name":"Axel parrot figurine","value":21.335,"costPerSlot":25500,"weight":0.33,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62a09cb7a04c0c5c6e0a84f8":{"id":"62a09cb7a04c0c5c6e0a84f8","name":"Press pass (issued for NoiceGuy)","value":20.94,"costPerSlot":25000,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62a09cfe4f842e1bd12da3e4":{"id":"62a09cfe4f842e1bd12da3e4","name":"Golden egg","value":65.9,"costPerSlot":68000,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a09d3bcf4a99369e262447":{"id":"62a09d3bcf4a99369e262447","name":"Gingy keychain","value":83.19250000000001,"costPerSlot":80000,"weight":0.015,"size":1,"gridSize":4,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a09d79de7ac81993580530":{"id":"62a09d79de7ac81993580530","name":"DRD body armor","value":50.638000000000005,"costPerSlot":64638,"weight":4,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"62a09dd4621468534a797ac7":{"id":"62a09dd4621468534a797ac7","name":"Baddie's red beard","value":35.95,"costPerSlot":35000,"weight":0.1,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"62a09e08de7ac81993580532":{"id":"62a09e08de7ac81993580532","name":"Glorious E lightweight armored mask","value":56.11,"costPerSlot":47250,"weight":0.28,"size":4,"gridSize":0,"maxDim":2,"armorClass":1,"parentWeighting":5},"62a09e410b9d3c46de5b6e78":{"id":"62a09e410b9d3c46de5b6e78","name":"JohnB Liquid DNB glasses","value":19.465999999999998,"costPerSlot":18496,"weight":0.06,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"62a09e73af34e73a266d932a":{"id":"62a09e73af34e73a266d932a","name":"BakeEzy cook book","value":24.875,"costPerSlot":29000,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62a09e974f842e1bd12da3f0":{"id":"62a09e974f842e1bd12da3f0","name":"Video cassette with the Cyborg Killer movie","value":30.424999999999997,"costPerSlot":34500,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62a09ec84f842e1bd12da3f2":{"id":"62a09ec84f842e1bd12da3f2","name":"Missam forklift key","value":27.94,"costPerSlot":30000,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a09ee4cf4a99369e262453":{"id":"62a09ee4cf4a99369e262453","name":"Can of white salt","value":10.984,"costPerSlot":13144,"weight":0.32,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a09f32621468534a797acb":{"id":"62a09f32621468534a797acb","name":"Bottle of Pevko Light beer","value":14.411999999999999,"costPerSlot":13837,"weight":0.85,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"62a0a043cf4a99369e2624a5":{"id":"62a0a043cf4a99369e2624a5","name":"Bottle of OLOLO Multivitamins","value":22.99,"costPerSlot":25090,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a0a098de7ac8199358053b":{"id":"62a0a098de7ac8199358053b","name":"Awl","value":30.950000000000003,"costPerSlot":33000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a0a0bb621468534a797ad5":{"id":"62a0a0bb621468534a797ad5","name":"Set of files \"Master\"","value":2.5250000000000004,"costPerSlot":8750,"weight":0.45,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62a0a124de7ac81993580542":{"id":"62a0a124de7ac81993580542","name":"Topographic survey maps","value":31.865000000000002,"costPerSlot":36000,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62a0a16d0b9d3c46de5b6e97":{"id":"62a0a16d0b9d3c46de5b6e97","name":"Military flash drive","value":69.94500000000001,"costPerSlot":72015,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62a1b7fbc30cfa1d366af586":{"id":"62a1b7fbc30cfa1d366af586","name":"Gruppa 99 T30 backpack (MultiCam)","value":191.11300000000003,"costPerSlot":186813,"weight":1.4,"size":30,"gridSize":30,"maxDim":6,"armorClass":0,"parentWeighting":2},"62a5c2c98ec41a51b34739c0":{"id":"62a5c2c98ec41a51b34739c0","name":"Hockey player mask (Captain)","value":13.95,"costPerSlot":15000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"62a5c333ec21e50cad3b5dc6":{"id":"62a5c333ec21e50cad3b5dc6","name":"Hockey player mask (Brawler)","value":13.95,"costPerSlot":15000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"62a5c41e8ec41a51b34739c3":{"id":"62a5c41e8ec41a51b34739c3","name":"Hockey player mask (Quiet)","value":13.95,"costPerSlot":15000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"62a61bbf8ec41a51b34758d2":{"id":"62a61bbf8ec41a51b34758d2","name":"Big Pipe's smoking pipe","value":23.95,"costPerSlot":21000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"62a61c988ec41a51b34758d5":{"id":"62a61c988ec41a51b34758d5","name":"Oakley SI Batwolf glasses","value":32.892,"costPerSlot":21917,"weight":0.05,"size":2,"gridSize":0,"maxDim":2,"armorClass":1,"parentWeighting":5},"62a9cb937377a65d7b070cef":{"id":"62a9cb937377a65d7b070cef","name":"Rogue USEC barrack key","value":38.286,"costPerSlot":40291,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62e14904c2699c0ec93adc47":{"id":"62e14904c2699c0ec93adc47","name":"SR-2M Veresk 9x21 submachine gun","value":56.7535,"costPerSlot":60640,"weight":1.7730000000000001,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"62e153bcdb1a5c41971c1b5b":{"id":"62e153bcdb1a5c41971c1b5b","name":"SR-2M 9x21 30-round magazine","value":0.9119999999999999,"costPerSlot":4997,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e15547db1a5c41971c1b5e":{"id":"62e15547db1a5c41971c1b5e","name":"SR-2M polymer handguard (Plum)","value":-2.81,"costPerSlot":1250,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e27a7865f0b1592a49e17b":{"id":"62e27a7865f0b1592a49e17b","name":"SR-2M dust cover","value":-3.474,"costPerSlot":610,"weight":0.168,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e281349ecd3f493f6df954":{"id":"62e281349ecd3f493f6df954","name":"SR-2M Zenit B-17 mount","value":17.415,"costPerSlot":19435,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62e292e7b6c0ee2f230cee00":{"id":"62e292e7b6c0ee2f230cee00","name":"SR-2M top-folding stock","value":-3.3265000000000002,"costPerSlot":778.5,"weight":0.21,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e2969582ebf260c20539c2":{"id":"62e2969582ebf260c20539c2","name":"SR-2MP top-folding stock","value":-3.052,"costPerSlot":1050,"weight":0.204,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e2a7138e1ac9380579c122":{"id":"62e2a7138e1ac9380579c122","name":"SR-2M 9x21 SV-1381 sound suppressor","value":10.088000000000001,"costPerSlot":14375.5,"weight":0.575,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e2a754b6c0ee2f230cee0f":{"id":"62e2a754b6c0ee2f230cee0f","name":"SR-2M 9x21 hand stopper","value":0.9565000000000001,"costPerSlot":3000,"weight":0.087,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62e7c4fba689e8c9c50dfc38":{"id":"62e7c4fba689e8c9c50dfc38","name":"Steyr AUG A1 5.56x45 assault rifle","value":28.581000000000003,"costPerSlot":42494,"weight":3.826,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"62e7c72df68e7a0676050c77":{"id":"62e7c72df68e7a0676050c77","name":"Steyr AUG A3 5.56x45 receiver","value":18.871000000000002,"costPerSlot":23268,"weight":0.794,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e7c7f3c34ea971710c32fc":{"id":"62e7c7f3c34ea971710c32fc","name":"Steyr AUG A1 5.56x45 20 inch barrel","value":-0.8712499999999999,"costPerSlot":7543.75,"weight":0.83,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"62e7c880f68e7a0676050c7c":{"id":"62e7c880f68e7a0676050c7c","name":"Steyr AUG A1 charging handle","value":-1.0065,"costPerSlot":1000,"weight":0.013,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62e7c8f91cd3fde4d503d690":{"id":"62e7c8f91cd3fde4d503d690","name":"Steyr AUG A3 M1 high sight mount","value":8.0115,"costPerSlot":12088.5,"weight":0.154,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e7c98b550c8218d602cbb4":{"id":"62e7c98b550c8218d602cbb4","name":"Steyr AUG 5.56x45 30-round magazine","value":1.6454999999999993,"costPerSlot":5710.5,"weight":0.13,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e7e7bbe6da9612f743f1e0":{"id":"62e7e7bbe6da9612f743f1e0","name":"GP-25 Kostyor 40mm underbarrel grenade launcher","value":20.75,"costPerSlot":25450,"weight":1.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62e910aaf957f2915e0a5e36":{"id":"62e910aaf957f2915e0a5e36","name":"Digital secure DSP radio transmitter","value":997.915,"costPerSlot":1000000,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62ea7c793043d74a0306e19f":{"id":"62ea7c793043d74a0306e19f","name":"Steyr AUG A1 STG77 1.5x optic sight","value":-1.3599999999999999,"costPerSlot":3250,"weight":1.22,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62ebba1fb658e07ef9082b5a":{"id":"62ebba1fb658e07ef9082b5a","name":"Steyr AUG A3 M1 low sight mount","value":25.765,"costPerSlot":27822,"weight":0.114,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62ebbc53e3c1e1ec7c02c44f":{"id":"62ebbc53e3c1e1ec7c02c44f","name":"Steyr AUG A3 charging handle","value":-0.3055000000000001,"costPerSlot":1700,"weight":0.011,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62ebd290c427473eff0baafb":{"id":"62ebd290c427473eff0baafb","name":"Steyr AUG A3 M1 1.5x optic sight","value":0.18799999999999972,"costPerSlot":4500,"weight":0.624,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"62ed189fb3608410ef5a2bfc":{"id":"62ed189fb3608410ef5a2bfc","name":"SR-2M short side rail","value":-1.025,"costPerSlot":1000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62ed1921b3608410ef5a2c04":{"id":"62ed1921b3608410ef5a2c04","name":"SR-2M side rail","value":15.796,"costPerSlot":17826,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62f10b79e7ee985f386b2f47":{"id":"62f10b79e7ee985f386b2f47","name":"Airdrop weapon crate","value":-96,"costPerSlot":0,"weight":500,"size":1,"gridSize":120,"maxDim":1,"armorClass":0,"parentWeighting":0},"62ff9920fe938a24c90c10d2":{"id":"62ff9920fe938a24c90c10d2","name":"SR-2M KP-SR2 reflex sight","value":13.663,"costPerSlot":15798,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"62ff9faffe938a24c90c10df":{"id":"62ff9faffe938a24c90c10df","name":"KP-SR2 sight shade","value":2.4414999999999996,"costPerSlot":4444,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63075cc5962d0247b029dc2a":{"id":"63075cc5962d0247b029dc2a","name":"Glock 19X pistol slide","value":-1.5350000000000001,"costPerSlot":2600,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"630764fea987397c0816d219":{"id":"630764fea987397c0816d219","name":"Glock 19X 9x19 102mm barrel","value":0.2450000000000001,"costPerSlot":2300,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630765777d50ff5e8a1ea718":{"id":"630765777d50ff5e8a1ea718","name":"Glock 19X front sight","value":-1.2035,"costPerSlot":800,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630765cb962d0247b029dc45":{"id":"630765cb962d0247b029dc45","name":"Glock 19X rear sight","value":18.246,"costPerSlot":20250,"weight":0.008,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63076701a987397c0816d21b":{"id":"63076701a987397c0816d21b","name":"Glock 9x19 19-round magazine (Coyote)","value":4.423,"costPerSlot":6476,"weight":0.106,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630767c37d50ff5e8a1ea71a":{"id":"630767c37d50ff5e8a1ea71a","name":"Glock 9x19 \"Big Stick\" 31-round magazine (Coyote)","value":1.7889999999999997,"costPerSlot":5859,"weight":0.14,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"630769c4962d0247b029dc60":{"id":"630769c4962d0247b029dc60","name":"Glock 9x19 \"Big Stick\" 24-round magazine (Coyote)","value":3.2015000000000002,"costPerSlot":7257.5,"weight":0.112,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"63088377b5cd696784087147":{"id":"63088377b5cd696784087147","name":"Glock 19X 9x19 pistol","value":16.825,"costPerSlot":18174,"weight":0.698,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"630e1adbbd357927e4007c09":{"id":"630e1adbbd357927e4007c09","name":"Steyr AUG 5.56x45 10-round magazine","value":1.6260000000000003,"costPerSlot":3676,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630e295c984633f1fb0e7c30":{"id":"630e295c984633f1fb0e7c30","name":"Steyr AUG 5.56x45 42-round magazine","value":2.224333333333334,"costPerSlot":8295.333333333334,"weight":0.142,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"630e39c3bd357927e4007c15":{"id":"630e39c3bd357927e4007c15","name":"Steyr AUG A3 5.56x45 16 inch barrel","value":4.734999999999999,"costPerSlot":11000,"weight":0.53,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"630f27f04f3f6281050b94d7":{"id":"630f27f04f3f6281050b94d7","name":"Steyr AUG RAT Worx 5.56x45 muzzle device adapter","value":12.943999999999999,"costPerSlot":15004,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630f2872911356c17d06abc5":{"id":"630f2872911356c17d06abc5","name":"Steyr AUG A1 5.56x45 closed flash hider","value":17.749499999999998,"costPerSlot":19781,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630f28f0cadb1fe05e06f004":{"id":"630f28f0cadb1fe05e06f004","name":"Steyr AUG A3 5.56x45 closed flash hider","value":2.468,"costPerSlot":4500,"weight":0.064,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630f291b9f66a28b37094bb8":{"id":"630f291b9f66a28b37094bb8","name":"Steyr AUG A3 5.56x45 muzzle brake","value":17.630000000000003,"costPerSlot":19667,"weight":0.074,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"630f2982cdb9e392db0cbcc7":{"id":"630f2982cdb9e392db0cbcc7","name":"Steyr AUG Relfex T4AUG Ranger 5.56x45 sound suppressor","value":17.2925,"costPerSlot":21482.5,"weight":0.38,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"63171672192e68c5460cebc5":{"id":"63171672192e68c5460cebc5","name":"Steyr AUG A3 5.56x45 assault rifle","value":39.8985,"costPerSlot":53920,"weight":4.043,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"6331ba83f2ab4f3f09502983":{"id":"6331ba83f2ab4f3f09502983","name":"Secure Flash drive V2","value":38.112,"costPerSlot":40152,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6333f05d1bc0e6217a0e9d34":{"id":"6333f05d1bc0e6217a0e9d34","name":"Steyr AUG A1 5.56x45 16 inch barrel","value":3.2325,"costPerSlot":9500,"weight":0.535,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"633a98eab8b0506e48497c1a":{"id":"633a98eab8b0506e48497c1a","name":"SR-2M 9x21 20-round magazine","value":0.9870000000000001,"costPerSlot":3052,"weight":0.13,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"633ec6ee025b096d320a3b15":{"id":"633ec6ee025b096d320a3b15","name":"RSh-12 12.7x55 5-round cylinder","value":4.285,"costPerSlot":6400,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"633ec7c2a6918cb895019c6c":{"id":"633ec7c2a6918cb895019c6c","name":"RSh-12 12.7x55 revolver","value":30.622500000000002,"costPerSlot":32722.5,"weight":2.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"633ec8e4025b096d320a3b1e":{"id":"633ec8e4025b096d320a3b1e","name":"RSh-12 pistol grip","value":-0.5549999999999999,"costPerSlot":1500,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"633ffb5d419dbf4bea7004c6":{"id":"633ffb5d419dbf4bea7004c6","name":"Airdrop weapon crate","value":29,"costPerSlot":0,"weight":250,"size":1,"gridSize":120,"maxDim":1,"armorClass":0,"parentWeighting":0},"634959225289190e5e773b3b":{"id":"634959225289190e5e773b3b","name":"Pumpkin with sweets","value":29.200000000000003,"costPerSlot":25000,"weight":3,"size":4,"gridSize":9,"maxDim":2,"armorClass":0,"parentWeighting":0},"63495c500c297e20065a08b1":{"id":"63495c500c297e20065a08b1","name":"Old hand scythe","value":41.3,"costPerSlot":45000,"weight":1.4,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"634e61b0767cb15c4601a877":{"id":"634e61b0767cb15c4601a877","name":"Steyr AUG vertical foregrip","value":-0.040000000000000036,"costPerSlot":2000,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634eba08f69c710e0108d386":{"id":"634eba08f69c710e0108d386","name":"Steyr AUG Ase Utra S Series SL7i 5.56x45 sound suppressor","value":25.253,"costPerSlot":29500,"weight":0.494,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"634eff66517ccc8a960fc735":{"id":"634eff66517ccc8a960fc735","name":"OP-SKS 7.62x39 520mm barrel","value":-4.093999999999999,"costPerSlot":2656,"weight":1.5,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"634f02331f9f536910079b51":{"id":"634f02331f9f536910079b51","name":"SKS 7.62x39 520mm barrel","value":-5.443333333333333,"costPerSlot":1306.6666666666667,"weight":1.5,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"634f02d7517ccc8a960fc744":{"id":"634f02d7517ccc8a960fc744","name":"SKS gas tube","value":-0.31000000000000005,"costPerSlot":1750,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634f036a517ccc8a960fc746":{"id":"634f036a517ccc8a960fc746","name":"OP-SKS gas tube","value":-0.31000000000000005,"costPerSlot":1750,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634f03d40384a3ba4f06f874":{"id":"634f03d40384a3ba4f06f874","name":"OP-SKS gas tube cover","value":-1.214,"costPerSlot":836,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634f04d82e5def262d0b30c6":{"id":"634f04d82e5def262d0b30c6","name":"SKS upper band","value":-0.42199999999999993,"costPerSlot":1703,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634f05a21f9f536910079b56":{"id":"634f05a21f9f536910079b56","name":"OP-SKS upper band","value":-0.369,"costPerSlot":1756,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634f05ca517ccc8a960fc748":{"id":"634f05ca517ccc8a960fc748","name":"SKS dust cover","value":16.048,"costPerSlot":18093,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634f06262e5def262d0b30ca":{"id":"634f06262e5def262d0b30ca","name":"OP-SKS dust cover","value":-0.9359999999999999,"costPerSlot":1109,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"634f08a21f9f536910079b5a":{"id":"634f08a21f9f536910079b5a","name":"SKS gas tube cover","value":-1.238,"costPerSlot":812,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"635267ab3c89e2112001f826":{"id":"635267ab3c89e2112001f826","name":"Spooky skull mask","value":117.022,"costPerSlot":118122,"weight":0.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"635267f063651329f75a4ee8":{"id":"635267f063651329f75a4ee8","name":"26x75mm flare cartridge (Acid Green)","value":27.9785,"costPerSlot":20000,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6357c98711fb55120211f7e1":{"id":"6357c98711fb55120211f7e1","name":"M203 40mm underbarrel grenade launcher","value":26.32,"costPerSlot":31000,"weight":1.36,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"635a758bfefc88a93f021b8a":{"id":"635a758bfefc88a93f021b8a","name":"Salty Dog beef sausage","value":20.246,"costPerSlot":19546,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"63611865ba5b90db0c0399d1":{"id":"63611865ba5b90db0c0399d1","name":"Azimut SS \"Khamelion\" chest harness (Olive)","value":99.75,"costPerSlot":100000,"weight":1.7,"size":12,"gridSize":12,"maxDim":4,"armorClass":0,"parentWeighting":1},"63626d904aa74b8fe30ab426":{"id":"63626d904aa74b8fe30ab426","name":"Zryachiy's balaclava","value":22.95,"costPerSlot":20000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"636270263f2495c26f00b007":{"id":"636270263f2495c26f00b007","name":"Zryachiy's balaclava (folded)","value":96.012,"costPerSlot":93062,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"63737f448b28897f2802b874":{"id":"63737f448b28897f2802b874","name":"Hexatac HPC Plate Carrier (MultiCam Black)","value":42.163000000000004,"costPerSlot":54398,"weight":0.47,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6374a7e7417239a7bf00f042":{"id":"6374a7e7417239a7bf00f042","name":"PM bakelite grip","value":-1.0339999999999998,"costPerSlot":1001,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6374a822e629013b9c0645c8":{"id":"6374a822e629013b9c0645c8","name":"PM pistol slide","value":-2.965,"costPerSlot":1175,"weight":0.28,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"637784c5f7b3f4ac1a0d1a9a":{"id":"637784c5f7b3f4ac1a0d1a9a","name":"PM FAB Defense PM-G pistol grip","value":7.0600000000000005,"costPerSlot":9096,"weight":0.072,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"637b60c3b7afa97bfc3d7001":{"id":"637b60c3b7afa97bfc3d7001","name":"Obdolbos 2 cocktail injector","value":72.975,"costPerSlot":67000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"637b612fb7afa97bfc3d7005":{"id":"637b612fb7afa97bfc3d7005","name":"SJ12 TGLabs combat stimulant injector","value":47.368,"costPerSlot":41393,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"637b6179104668754b72f8f5":{"id":"637b6179104668754b72f8f5","name":"PNB (Product 16) stimulant injector","value":71.27499999999999,"costPerSlot":65300,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"637b620db7afa97bfc3d7009":{"id":"637b620db7afa97bfc3d7009","name":"Trimadol stimulant injector","value":135.807,"costPerSlot":129832,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"637b6251104668754b72f8f9":{"id":"637b6251104668754b72f8f9","name":"Perfotoran (Blue Blood) stimulant injector","value":82.026,"costPerSlot":76051,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"637b6d610aef6cfc5e02dd14":{"id":"637b6d610aef6cfc5e02dd14","name":"PM Tactic Kit pistol grip","value":-1.9304999999999999,"costPerSlot":2126.5,"weight":0.114,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"637b9c37b7e3bc41b21ce71a":{"id":"637b9c37b7e3bc41b21ce71a","name":"SR-2M pistol grip (Plum)","value":-1.2349999999999999,"costPerSlot":800,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"637ba19df7ca6372bf2613d7":{"id":"637ba19df7ca6372bf2613d7","name":"SR-2M polymer handguard (Black)","value":-2.635,"costPerSlot":1425,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"637ba29bf7ca6372bf2613db":{"id":"637ba29bf7ca6372bf2613db","name":"SR-2M pistol grip (Black)","value":-1.135,"costPerSlot":900,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"637f57a68d137b27f70c4968":{"id":"637f57a68d137b27f70c4968","name":"AR-15 Colt M4 Carbine Length lower handguard","value":-3.59,"costPerSlot":474.5,"weight":0.129,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"637f57b78d137b27f70c496a":{"id":"637f57b78d137b27f70c496a","name":"AR-15 KAC RIS lower handguard","value":-1.7985000000000002,"costPerSlot":2250,"weight":0.097,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"637f57c532b66e7e320a6676":{"id":"637f57c532b66e7e320a6676","name":"AR-15 KAC URX 3.1 10.75 inch lower handguard","value":10.705,"costPerSlot":14753,"weight":0.096,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"637f57d2f5ef8c33840d36c4":{"id":"637f57d2f5ef8c33840d36c4","name":"AR-15 KAC URX 3 8 inch lower handguard","value":10.537500000000001,"costPerSlot":14573.5,"weight":0.072,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"637f589af5ef8c33840d36d3":{"id":"637f589af5ef8c33840d36d3","name":"AR-15 Strike Industries Viper carbine length M-LOK lower handguard","value":2.0315000000000003,"costPerSlot":6078.5,"weight":0.094,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6386120cd6baa055ad1e201c":{"id":"6386120cd6baa055ad1e201c","name":"AR-15 Griffin Armament Gate-LOK Hammer 5.56x45 flash hider","value":14.257000000000001,"costPerSlot":16291,"weight":0.068,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"638612b607dfed1ccb7206ba":{"id":"638612b607dfed1ccb7206ba","name":"AR-15 Griffin Armament M4SD-K 5.56x45 sound suppressor","value":43.1575,"costPerSlot":47356,"weight":0.397,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6386300124a1dc425c00577a":{"id":"6386300124a1dc425c00577a","name":"AK 100-series metal skeletonized stock","value":-3.257,"costPerSlot":875,"weight":0.264,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"63877c99e785640d436458ea":{"id":"63877c99e785640d436458ea","name":"AWC Thor PSR XL multi-caliber sound suppressor","value":25.6315,"costPerSlot":30000,"weight":0.737,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"63888bbd28e5cc32cc09d2b6":{"id":"63888bbd28e5cc32cc09d2b6","name":"AR-15 Precision Reflex GEN III Delta Carbon handguard","value":13.380500000000001,"costPerSlot":17593,"weight":0.425,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6388c4478d895f557a0c6512":{"id":"6388c4478d895f557a0c6512","name":"Precision Reflex handguard short side rail mount","value":16.111,"costPerSlot":18146,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6388c4ac8d895f557a0c6515":{"id":"6388c4ac8d895f557a0c6515","name":"Precision Reflex handguard bottom rail mount","value":20.200499999999998,"costPerSlot":22238,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6388c5d19c00405f4717c0f0":{"id":"6388c5d19c00405f4717c0f0","name":"Precision Reflex handguard long top rail mount","value":9.9985,"costPerSlot":14078.5,"weight":0.16,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6389c6463485cf0eeb260715":{"id":"6389c6463485cf0eeb260715","name":"Pack of Arseniy buckwheat","value":6.75,"costPerSlot":11150,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6389c6c7dbfd5e4b95197e68":{"id":"6389c6c7dbfd5e4b95197e68","name":"Aquapeps water purification tablets","value":27.54,"costPerSlot":30090,"weight":1.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6389c70ca33d8c4cdf4932c6":{"id":"6389c70ca33d8c4cdf4932c6","name":"Electronic components","value":20.671,"costPerSlot":22721,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6389c7750ef44505c87f5996":{"id":"6389c7750ef44505c87f5996","name":"Microcontroller board","value":97.9875,"costPerSlot":100000,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6389c7f115805221fb410466":{"id":"6389c7f115805221fb410466","name":"Far-forward GPS Signal Amplifier Unit","value":117.78,"costPerSlot":120000,"weight":0.44,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6389c85357baa773a825b356":{"id":"6389c85357baa773a825b356","name":"Advanced current converter","value":66.5,"costPerSlot":75000,"weight":5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6389c88b33a719183c7f63b6":{"id":"6389c88b33a719183c7f63b6","name":"Ultralink Satellite Internet Station","value":-10,"costPerSlot":0,"weight":2,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6389c8c5dbfd5e4b95197e6b":{"id":"6389c8c5dbfd5e4b95197e6b","name":"TerraGroup \"Blue Folders\" materials","value":370.835,"costPerSlot":375000,"weight":0.33,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6389c8fb46b54c634724d847":{"id":"6389c8fb46b54c634724d847","name":"Silicon Optoelectronic Integrated Circuits textbook","value":245.75,"costPerSlot":250000,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6389c92d52123d5dd17f8876":{"id":"6389c92d52123d5dd17f8876","name":"Advanced Electronic Materials textbook","value":240.75,"costPerSlot":245000,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6389f1dfc879ce63f72fc43e":{"id":"6389f1dfc879ce63f72fc43e","name":"AK CNC Guns OV GP handguard","value":3.809,"costPerSlot":8077,"weight":0.536,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"638db77630c4240f9e06f8b6":{"id":"638db77630c4240f9e06f8b6","name":"SAG Bit low profile dovetail sidemount","value":4.062500000000001,"costPerSlot":6100,"weight":0.075,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"638de3603a1a4031d8260b8c":{"id":"638de3603a1a4031d8260b8c","name":"AR-15 RTM ATP buffer tube","value":3.7380000000000004,"costPerSlot":7795.5,"weight":0.115,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"638f1ff84822287cad04be9d":{"id":"638f1ff84822287cad04be9d","name":"AR-15 Daniel Defense RIS II 9.5 lower handguard (Coyote Brown)","value":0.09250000000000025,"costPerSlot":4152.5,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"638f2003bbd47aeb9e0ff637":{"id":"638f2003bbd47aeb9e0ff637","name":"AR-15 Daniel Defense RIS II 12.25 lower handguard (Coyote Brown)","value":7.651000000000002,"costPerSlot":11726,"weight":0.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6391fcf5744e45201147080f":{"id":"6391fcf5744e45201147080f","name":"Primorsky Ave apartment key","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63920105a83e15700a00f168":{"id":"63920105a83e15700a00f168","name":"SOG Voodoo Hawk tactical tomahawk","value":2966.8495000000003,"costPerSlot":2968253,"weight":0.807,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"639343fce101f4caa40a4ef3":{"id":"639343fce101f4caa40a4ef3","name":"Shellback Tactical Banshee plate carrier (A-TACS AU)","value":46.510999999999996,"costPerSlot":38251,"weight":3.08,"size":9,"gridSize":16,"maxDim":3,"armorClass":0,"parentWeighting":1},"639346cc1c8f182ad90c8972":{"id":"639346cc1c8f182ad90c8972","name":"Tasmanian Tiger Trooper 35 backpack (Khaki)","value":87.763,"costPerSlot":82765,"weight":1.004,"size":35,"gridSize":35,"maxDim":7,"armorClass":0,"parentWeighting":2},"63969c9019971040b005049b":{"id":"63969c9019971040b005049b","name":"AR-15 Strike Industries Viper carbine length M-LOK lower handguard (FDE)","value":0.5650000000000004,"costPerSlot":4612,"weight":0.094,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6396aaa9a52ace83df0840ab":{"id":"6396aaa9a52ace83df0840ab","name":"AR-15 Daniel Defense RIS II 9.5 lower handguard (Black)","value":-1.56,"costPerSlot":2500,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6398fd8ad3de3849057f5128":{"id":"6398fd8ad3de3849057f5128","name":"Backup hideout key","value":-0.3019999999999998,"costPerSlot":1703,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"639af924d0446708ee62294e":{"id":"639af924d0446708ee62294e","name":"FN40GL Mk2 grenade launcher","value":-4.46,"costPerSlot":0,"weight":2.92,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"639c3fbbd0446708ee622ee9":{"id":"639c3fbbd0446708ee622ee9","name":"FN40GL Mk2 grenade launcher","value":-4.46,"costPerSlot":0,"weight":2.92,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"63a0b208f444d32d6f03ea1e":{"id":"63a0b208f444d32d6f03ea1e","name":"Fierce Blow sledgehammer","value":-4.549999999999999,"costPerSlot":13200,"weight":5.5,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"63a0b2eabea67a6d93009e52":{"id":"63a0b2eabea67a6d93009e52","name":"Radio repeater","value":-1.8797499999999996,"costPerSlot":4370.25,"weight":0.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"63a39667c9b3aa4b61683e98":{"id":"63a39667c9b3aa4b61683e98","name":"Financial institution office key","value":31.759,"costPerSlot":33764,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a397d3af870e651d58e65b":{"id":"63a397d3af870e651d58e65b","name":"Car dealership closed section key","value":907.76,"costPerSlot":909765,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a399193901f439517cafb6":{"id":"63a399193901f439517cafb6","name":"Car dealership director's office room key","value":73.096,"costPerSlot":75101,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39c69af870e651d58e6aa":{"id":"63a39c69af870e651d58e6aa","name":"Store manager's key","value":17.841,"costPerSlot":19846,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39c7964283b5e9c56b280":{"id":"63a39c7964283b5e9c56b280","name":"Concordia security room key","value":70.41600000000001,"costPerSlot":72421,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39cb1c9b3aa4b61683ee2":{"id":"63a39cb1c9b3aa4b61683ee2","name":"Construction site bunkhouse key","value":18.882,"costPerSlot":20887,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39ce4cd6db0635c1975fa":{"id":"63a39ce4cd6db0635c1975fa","name":"Supply department director's office key","value":14.637,"costPerSlot":16642,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39ddda3a2b32b5f6e007a":{"id":"63a39ddda3a2b32b5f6e007a","name":"Apartment locked room safe key","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39df18a56922e82001f25":{"id":"63a39df18a56922e82001f25","name":"Zmeisky 5 apartment 20 key","value":12.907,"costPerSlot":14912,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39dfe3901f439517cafba":{"id":"63a39dfe3901f439517cafba","name":"Zmeisky 3 apartment 8 key","value":13.639999999999999,"costPerSlot":15645,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39e0f64283b5e9c56b282":{"id":"63a39e0f64283b5e9c56b282","name":"Сity key","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39e1d234195315d4020bd":{"id":"63a39e1d234195315d4020bd","name":"Primorsky 46-48 skybridge key","value":3.1310000000000002,"costPerSlot":5136,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39e49cd6db0635c1975fc":{"id":"63a39e49cd6db0635c1975fc","name":"Archive room key","value":18.214000000000002,"costPerSlot":20219,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39e5b234195315d4020bf":{"id":"63a39e5b234195315d4020bf","name":"Housing office second floor safe key","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39e6acd6db0635c1975fe":{"id":"63a39e6acd6db0635c1975fe","name":"Housing office first floor safe key","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39f08cd6db0635c197600":{"id":"63a39f08cd6db0635c197600","name":"Pinewood hotel room 215 key","value":25.998,"costPerSlot":28003,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39f18c2d53c2c6839c1d3":{"id":"63a39f18c2d53c2c6839c1d3","name":"Pinewood hotel room 206 key","value":22.944000000000003,"costPerSlot":24949,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39f6e64283b5e9c56b289":{"id":"63a39f6e64283b5e9c56b289","name":"Iron gate key","value":50.163,"costPerSlot":52168,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39fc0af870e651d58e6ae":{"id":"63a39fc0af870e651d58e6ae","name":"Chekannaya 15 apartment key","value":1497.995,"costPerSlot":1500000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39fd1c9b3aa4b61683efb":{"id":"63a39fd1c9b3aa4b61683efb","name":"Stair landing key","value":12.581999999999999,"costPerSlot":14587,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a39fdf1e21260da44a0256":{"id":"63a39fdf1e21260da44a0256","name":"Cargo container mesh door key","value":18.839000000000002,"costPerSlot":20844,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a3a93f8a56922e82001f5d":{"id":"63a3a93f8a56922e82001f5d","name":"Abandoned factory marked key","value":997.995,"costPerSlot":1000000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a71e781031ac76fe773c7d":{"id":"63a71e781031ac76fe773c7d","name":"Concordia apartment 8 room key","value":15.641000000000002,"costPerSlot":17646,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a71e86b7f4570d3a293169":{"id":"63a71e86b7f4570d3a293169","name":"Concordia apartment 64 office room key","value":63.807,"costPerSlot":65812,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a71e922b25f7513905ca20":{"id":"63a71e922b25f7513905ca20","name":"Concordia apartment 64 key","value":96.83800000000001,"costPerSlot":98843,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a71eb5b7f4570d3a29316b":{"id":"63a71eb5b7f4570d3a29316b","name":"Primorsky 48 apartment key","value":26.097,"costPerSlot":28102,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a71ed21031ac76fe773c7f":{"id":"63a71ed21031ac76fe773c7f","name":"Financial institution small office key","value":33.561,"costPerSlot":35566,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a71f1a0aa9fb29da61c537":{"id":"63a71f1a0aa9fb29da61c537","name":"Сity key","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a71f3b0aa9fb29da61c539":{"id":"63a71f3b0aa9fb29da61c539","name":"Сity key","value":-2.005,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63a8970d7108f713591149f5":{"id":"63a8970d7108f713591149f5","name":"Small Christmas gift","value":10.7,"costPerSlot":12500,"weight":2,"size":4,"gridSize":4,"maxDim":2,"armorClass":0,"parentWeighting":0},"63a897c6b1ff6e29734fcc95":{"id":"63a897c6b1ff6e29734fcc95","name":"Large Christmas gift","value":29.522222222222226,"costPerSlot":22222.222222222223,"weight":3,"size":9,"gridSize":16,"maxDim":3,"armorClass":0,"parentWeighting":0},"63a898a328e385334e0640a5":{"id":"63a898a328e385334e0640a5","name":"Christmas gift","value":17.866666666666667,"costPerSlot":16666.666666666668,"weight":3,"size":6,"gridSize":9,"maxDim":3,"armorClass":0,"parentWeighting":0},"63ac5c9658d0485fc039f0b8":{"id":"63ac5c9658d0485fc039f0b8","name":"AR-15 AlienTech 5.56x45 muzzle brake","value":39.151500000000006,"costPerSlot":41194,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63b35f281745dd52341e5da7":{"id":"63b35f281745dd52341e5da7","name":"F1 Shrapnel","value":7.995,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"63c6adcfb4ba094317063742":{"id":"63c6adcfb4ba094317063742","name":"PM rear sight","value":-1.101,"costPerSlot":900,"weight":0.002,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63d114019e35b334d82302f7":{"id":"63d114019e35b334d82302f7","name":"SAG AK dovetail sidemount","value":18.8305,"costPerSlot":20913,"weight":0.165,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63d3ce0446bd475bcb50f55f":{"id":"63d3ce0446bd475bcb50f55f","name":"AR-15 5.56x45 Ballistic Advantage Hanson Carbine Pro 13.7 inch barrel","value":7.485833333333334,"costPerSlot":13740.333333333334,"weight":0.509,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"63d3ce281fe77d0f2801859e":{"id":"63d3ce281fe77d0f2801859e","name":"AR-15 Ballistic Advantage Lo-Pro Gas Block","value":16.085500000000003,"costPerSlot":18112,"weight":0.053,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63d3d44a2a49307baf09386d":{"id":"63d3d44a2a49307baf09386d","name":"AR-15 5.56x45 Ballistic Advantage Hanson Carbine Pro 16 inch barrel","value":17.427333333333333,"costPerSlot":23817.333333333332,"weight":0.78,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"63dbd45917fff4dee40fe16e":{"id":"63dbd45917fff4dee40fe16e","name":"","value":-2,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63f4ba71f31d4a33b87bd046":{"id":"63f4ba71f31d4a33b87bd046","name":"AR-15 Aeroknox AX-15 4 inch M-LOK handguard","value":10.6055,"costPerSlot":12657,"weight":0.103,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63f4da90f31d4a33b87bd054":{"id":"63f4da90f31d4a33b87bd054","name":"AK Mission First Tactical ENGAGE AK47 pistol grip","value":11.529,"costPerSlot":13589,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63f5ed14534b2c3d5479a677":{"id":"63f5ed14534b2c3d5479a677","name":"AR-15 Aeroknox AX-15 5.56x45 upper receiver","value":25.627000000000002,"costPerSlot":29769.5,"weight":0.285,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"63f5feead259b42f0b4d6d0f":{"id":"63f5feead259b42f0b4d6d0f","name":"AR-15 Aeroknox Orion pistol grip","value":23.740000000000002,"costPerSlot":25780,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63fc449f5bd61c6cf3784a88":{"id":"63fc449f5bd61c6cf3784a88","name":"Armasight Zeus universal base","value":0.5495000000000001,"costPerSlot":2558,"weight":0.017,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"63fc44e2429a8a166c7f61e6":{"id":"63fc44e2429a8a166c7f61e6","name":"Armasight Zeus-Pro 640 2-8x50 30Hz thermal scope","value":169.02700000000002,"costPerSlot":173477,"weight":0.9,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"63fc4533b10b17385349b565":{"id":"63fc4533b10b17385349b565","name":"Armasight Zeus-Pro scope eyecup","value":-1.2385,"costPerSlot":764,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6401c7b213d9b818bf0e7dd7":{"id":"6401c7b213d9b818bf0e7dd7","name":"","value":67.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":54,"maxDim":1,"armorClass":0,"parentWeighting":0},"6405ff6bd4578826ec3e377a":{"id":"6405ff6bd4578826ec3e377a","name":"AR-15 Aeroknox Butterfly 5.56x45 muzzle brake","value":17.115000000000002,"costPerSlot":19150,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"640b20359ab20e15ee445fa9":{"id":"640b20359ab20e15ee445fa9","name":"AR-15 Aeroknox AX-15 15.8 inch M-LOK handguard","value":9.545833333333334,"costPerSlot":15717.333333333334,"weight":0.343,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6410733d5dd49d77bd07847e":{"id":"6410733d5dd49d77bd07847e","name":"Tokarev AVT-40 7.62x54R automatic rifle","value":-6.778500000000001,"costPerSlot":19331,"weight":4.218999999999999,"size":18,"gridSize":0,"maxDim":9,"armorClass":0,"parentWeighting":3},"6410745d5dd49d77bd078485":{"id":"6410745d5dd49d77bd078485","name":"AVT-40 wooden stock","value":-7.6635,"costPerSlot":945,"weight":1.217,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"641074a07fd350b98c0b3f96":{"id":"641074a07fd350b98c0b3f96","name":"AVT-40 7.62x54R 15-round magazine","value":8.1515,"costPerSlot":12326.5,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6410758c857473525b08bb77":{"id":"6410758c857473525b08bb77","name":"SVT-40 7.62x54R 625mm barrel","value":-5.358333333333333,"costPerSlot":1306.6666666666667,"weight":1.33,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"64119cdbdcf48d656f0aa272":{"id":"64119cdbdcf48d656f0aa272","name":"SVT dust cover ","value":-1.03,"costPerSlot":1014,"weight":0.088,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64119d1f2c6d6f921a0929f8":{"id":"64119d1f2c6d6f921a0929f8","name":"SVT-40 7.62x54R muzzle brake","value":-0.7909999999999999,"costPerSlot":3244,"weight":0.07,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64119d672c6d6f921a0929fb":{"id":"64119d672c6d6f921a0929fb","name":"SVT-40 front sight","value":-1.685,"costPerSlot":350,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64119d90dcf48d656f0aa275":{"id":"64119d90dcf48d656f0aa275","name":"SVT-40 rear sight","value":-1.5305,"costPerSlot":482,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6415c694da439c6a97048b56":{"id":"6415c694da439c6a97048b56","name":"SKS Leapers UTG PRO MTU017 receiver cover mount","value":8.4585,"costPerSlot":12566,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6415d33eda439c6a97048b5b":{"id":"6415d33eda439c6a97048b5b","name":"SKS CHOATE scope mount","value":16.648500000000002,"costPerSlot":18736,"weight":0.175,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"641dc35e19604f20c800be18":{"id":"641dc35e19604f20c800be18","name":"SVT-40 Tokarev PU mount","value":21.544999999999998,"costPerSlot":23555,"weight":0.02,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6422e1ea3c0f06190302161a":{"id":"6422e1ea3c0f06190302161a","name":"SVT-40 7.62x54R 10-round magazine","value":5.606000000000001,"costPerSlot":7746,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64381b582bb1c5dedd0fc925":{"id":"64381b582bb1c5dedd0fc925","name":"WeaponStand_Stash_2","value":83.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":66,"maxDim":1,"armorClass":0,"parentWeighting":0},"64381b6e44b37a080d0245b9":{"id":"64381b6e44b37a080d0245b9","name":"WeaponStand_Stash_3","value":115.8,"costPerSlot":0,"weight":1,"size":1,"gridSize":91,"maxDim":1,"armorClass":0,"parentWeighting":0},"643ea5b23db6f9f57107d9fd":{"id":"643ea5b23db6f9f57107d9fd","name":"Tokarev SVT-40 7.62x54R rifle","value":40.8605,"costPerSlot":57938,"weight":4.154999999999999,"size":9,"gridSize":0,"maxDim":9,"armorClass":0,"parentWeighting":3},"644674a13d52156624001fbc":{"id":"644674a13d52156624001fbc","name":"KBP 9A-91 9x39 compact assault rifle","value":23.845,"costPerSlot":34071,"weight":2.4519999999999995,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"644675573d52156624001fc9":{"id":"644675573d52156624001fc9","name":"9A-91 handguard","value":-0.4314999999999998,"costPerSlot":1652,"weight":0.167,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6448f2f6d4928d46d30be3f6":{"id":"6448f2f6d4928d46d30be3f6","name":"VSK-94 handguard","value":-0.3494999999999999,"costPerSlot":1734,"weight":0.167,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"644a3df63b0b6f03e101e065":{"id":"644a3df63b0b6f03e101e065","name":"B.E. Meyers MAWL-C1+ tactical device","value":27.663,"costPerSlot":29806,"weight":0.286,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6450ec2e7da7133e5a09ca96":{"id":"6450ec2e7da7133e5a09ca96","name":"9A-91 9x39 20-round magazine","value":-0.3394999999999997,"costPerSlot":3810.5,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6450f21a3d52156624001fcf":{"id":"6450f21a3d52156624001fcf","name":"9A-91 pistol grip","value":-0.655,"costPerSlot":1418,"weight":0.146,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6451167ad4928d46d30be3fd":{"id":"6451167ad4928d46d30be3fd","name":"9A-91 top-folding stock","value":-2.9225,"costPerSlot":1327.5,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"645122f6d4928d46d30be3ff":{"id":"645122f6d4928d46d30be3ff","name":"9A-91 9x39 barrel","value":-0.3045,"costPerSlot":3900,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"645123013d52156624001fd1":{"id":"645123013d52156624001fd1","name":"VSK-94 9x39 barrel","value":-0.2544999999999997,"costPerSlot":3950,"weight":0.409,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6452519e3d52156624001fd5":{"id":"6452519e3d52156624001fd5","name":"VSK-94 stock","value":-3.502,"costPerSlot":848,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64527a263d52156624001fd7":{"id":"64527a263d52156624001fd7","name":"9A-91 handguard retainer","value":17.995,"costPerSlot":20000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64527a3a7da7133e5a09ca99":{"id":"64527a3a7da7133e5a09ca99","name":"9A-91 9x39 sound suppressor","value":27.4865,"costPerSlot":31734.5,"weight":0.496,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"645e0c6b3b381ede770e1cc9":{"id":"645e0c6b3b381ede770e1cc9","name":"KBP VSK-94 9x39 rifle","value":42.642,"costPerSlot":65138,"weight":2.9919999999999995,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"64637076203536ad5600c990":{"id":"64637076203536ad5600c990","name":"Kalashnikov PKM 7.62x54R machine gun","value":45.863,"costPerSlot":72360,"weight":8.994000000000002,"size":20,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"646371779f5f0ea59a04c204":{"id":"646371779f5f0ea59a04c204","name":"PK pistol grip","value":-1.2810000000000001,"costPerSlot":764,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"646371a9f2404ab67905c8e6":{"id":"646371a9f2404ab67905c8e6","name":"PKM wooden stock","value":-3.3765,"costPerSlot":923.5,"weight":0.6,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"646371faf2404ab67905c8e9":{"id":"646371faf2404ab67905c8e9","name":"PKM 7.62x54R 658mm barrel","value":-4.8625,"costPerSlot":4337.5,"weight":2.4,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"646372518610c40fc20204e8":{"id":"646372518610c40fc20204e8","name":"PK 7.62x54R 100-round box","value":-2.689,"costPerSlot":4061,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64639a9aab86f8fd4300146c":{"id":"64639a9aab86f8fd4300146c","name":"PKP 7.62x54R 658mm barrel","value":-0.972999999999999,"costPerSlot":8627,"weight":3.2,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6464d870bb2c580352070cc4":{"id":"6464d870bb2c580352070cc4","name":"PK bipod","value":0.2649999999999997,"costPerSlot":4500,"weight":0.47,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"646f62fee779812413011ab7":{"id":"646f62fee779812413011ab7","name":"Zenit 2D flashlight","value":12.615,"costPerSlot":14740,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"646f6322f43d0c5d62063715":{"id":"646f6322f43d0c5d62063715","name":"Zenit KR-2 old gen mount","value":17.518,"costPerSlot":19536,"weight":0.036,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64748cb8de82c85eaf0a273a":{"id":"64748cb8de82c85eaf0a273a","name":"MP-43 12ga sawed-off double-barrel shotgun","value":6.094333333333333,"costPerSlot":10144.333333333334,"weight":2.1,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"64748d02d1c009260702b526":{"id":"64748d02d1c009260702b526","name":"MP-43 12ga sawed-off 310mm barrel","value":-3.4845,"costPerSlot":915.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6477772ea8a38bb2050ed4db":{"id":"6477772ea8a38bb2050ed4db","name":"SIG Sauer ROMEO7 1x30 reflex sight (Prototype)","value":5.2105000000000015,"costPerSlot":9387.5,"weight":0.354,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64785e7c19d732620e045e15":{"id":"64785e7c19d732620e045e15","name":"ELCAN Specter HCO holographic sight","value":40.3505,"costPerSlot":42567,"weight":0.433,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6478641c19d732620e045e17":{"id":"6478641c19d732620e045e17","name":"SIG Sauer ECHO1 1-2x30mm 30Hz thermal reflex scope","value":160.5395,"costPerSlot":162748,"weight":0.417,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"647db1eca8d3399c380d195c":{"id":"647db1eca8d3399c380d195c","name":"AKS-74U Alfa Arms Goliaf M-LOK handguard","value":3.069,"costPerSlot":5194,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"647dba3142c479dde701b654":{"id":"647dba3142c479dde701b654","name":"AK AKdemia Dominator handguard","value":19.0945,"costPerSlot":21252,"weight":0.315,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"647dd2b8a12ebf96c3031655":{"id":"647dd2b8a12ebf96c3031655","name":"AK Alfa Arms ASPID handguard","value":14.275500000000001,"costPerSlot":18460.5,"weight":0.37,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"647de824196bf69818044c93":{"id":"647de824196bf69818044c93","name":"AR-15 AB Arms MOD1 handguard","value":4.895999999999999,"costPerSlot":8943,"weight":0.094,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"647def638295ebcb5b02f05b":{"id":"647def638295ebcb5b02f05b","name":"AR-15 AB Arms MOD1 lower handguard","value":-2.0374999999999996,"costPerSlot":1979,"weight":0.033,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"648067db042be0705c0b3009":{"id":"648067db042be0705c0b3009","name":"RTM Pillau tactical foregrip (Sand)","value":4.5765,"costPerSlot":6609,"weight":0.065,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64806bdd26c80811d408d37a":{"id":"64806bdd26c80811d408d37a","name":"RTM Osovets P-2 tactical foregrip","value":21.5515,"costPerSlot":23615,"weight":0.127,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64807a29e5ffe165600abc97":{"id":"64807a29e5ffe165600abc97","name":"RTM Osovets P-2 tactical foregrip (Khaki)","value":19.6285,"costPerSlot":21692,"weight":0.127,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64897ffc3656831810043165":{"id":"64897ffc3656831810043165","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"648983d6b5a2df1c815a04ec":{"id":"648983d6b5a2df1c815a04ec","name":"12.7x55mm PS12B (10 pcs)","value":6.994999999999999,"costPerSlot":9000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6489848173c462723909a14b":{"id":"6489848173c462723909a14b","name":".338 Lapua Magnum AP ammo pack (20 pcs)","value":41.795,"costPerSlot":45800,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"648984b8d5b4df6140000a1a":{"id":"648984b8d5b4df6140000a1a","name":"7.62x54mm R BS ammo pack (20 pcs)","value":37.595,"costPerSlot":39600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"648984e3f09d032aa9399d53":{"id":"648984e3f09d032aa9399d53","name":"7.62x51mm M993 ammo pack (20 pcs)","value":32.455,"costPerSlot":34460,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6489851fc827d4637f01791b":{"id":"6489851fc827d4637f01791b","name":"7.62x39mm MAI AP ammo pack (20 pcs)","value":25.995,"costPerSlot":28000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6489854673c462723909a14e":{"id":"6489854673c462723909a14e","name":"9x39mm BP ammo pack (20 pcs)","value":23.995,"costPerSlot":26000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64898583d5b4df6140000a1d":{"id":"64898583d5b4df6140000a1d","name":"5.56x45mm SSA AP ammo pack (50 pcs)","value":74.245,"costPerSlot":76250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"648985c074a806211e4fb682":{"id":"648985c074a806211e4fb682","name":".300 Blackout AP ammo pack (50 pcs)","value":41.495,"costPerSlot":43500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64898602f09d032aa9399d56":{"id":"64898602f09d032aa9399d56","name":"5.45x39mm 7N40 ammo pack (30 pcs)","value":24.995,"costPerSlot":27000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"648986bbc827d4637f01791e":{"id":"648986bbc827d4637f01791e","name":"5.7x28mm SS190 ammo pack (50 pcs)","value":44.045,"costPerSlot":46050,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6489870774a806211e4fb685":{"id":"6489870774a806211e4fb685","name":"4.6x30mm AP SX ammo pack (40 pcs)","value":27.795,"costPerSlot":29800,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6489875745f9ca4ba51c4808":{"id":"6489875745f9ca4ba51c4808","name":"9x21mm BT ammo pack (30 pcs)","value":21.455000000000002,"costPerSlot":23460,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6489879db5a2df1c815a04ef":{"id":"6489879db5a2df1c815a04ef","name":".45 ACP AP ammo pack (50 pcs)","value":48.245,"costPerSlot":50250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"648987d673c462723909a151":{"id":"648987d673c462723909a151","name":"9x19mm PBP ammo pack (50 pcs)","value":63.39500000000001,"costPerSlot":65400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64898838d5b4df6140000a20":{"id":"64898838d5b4df6140000a20","name":"12/70 AP-20 ammo pack (25 pcs)","value":20.245,"costPerSlot":22250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64898e9db18e646e992aba47":{"id":"64898e9db18e646e992aba47","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"648990314b4d2b31b63a46fc":{"id":"648990314b4d2b31b63a46fc","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"648996987063b903ff4b8561":{"id":"648996987063b903ff4b8561","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489981f7063b903ff4b8565":{"id":"6489981f7063b903ff4b8565","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"64899a35fc093676bb0f57e3":{"id":"64899a35fc093676bb0f57e3","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"64899ec0a236de328b12db52":{"id":"64899ec0a236de328b12db52","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"64899f4189de40533661a0c0":{"id":"64899f4189de40533661a0c0","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489a0a4fc493c59d15fec05":{"id":"6489a0a4fc493c59d15fec05","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489a233a236de328b12db56":{"id":"6489a233a236de328b12db56","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489a344fc493c59d15fec0f":{"id":"6489a344fc493c59d15fec0f","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489a7d87063b903ff4b85cc":{"id":"6489a7d87063b903ff4b85cc","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489a97645f9ca4ba51c4dd0":{"id":"6489a97645f9ca4ba51c4dd0","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489aa584b6fc03d00374e59":{"id":"6489aa584b6fc03d00374e59","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489ab9645f9ca4ba51c4dd7":{"id":"6489ab9645f9ca4ba51c4dd7","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489b2b131a2135f0d7d0fcb":{"id":"6489b2b131a2135f0d7d0fcb","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489b73cebac5a4a1b73cab7":{"id":"6489b73cebac5a4a1b73cab7","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489b88bcf0cd80b7e749069":{"id":"6489b88bcf0cd80b7e749069","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489b91dd0c36c0a4925c4b4":{"id":"6489b91dd0c36c0a4925c4b4","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489b99eebac5a4a1b73cabc":{"id":"6489b99eebac5a4a1b73cabc","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489ba157c07471efa3e03b4":{"id":"6489ba157c07471efa3e03b4","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489ba92a74e43447b64d5e2":{"id":"6489ba92a74e43447b64d5e2","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489bbd6d0c36c0a4925c4b8":{"id":"6489bbd6d0c36c0a4925c4b8","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489bd7b79295b4f753d486a":{"id":"6489bd7b79295b4f753d486a","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489bed4a53c8c047c3dc361":{"id":"6489bed4a53c8c047c3dc361","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489bfa844d98e01bc4c420e":{"id":"6489bfa844d98e01bc4c420e","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c03c8bc5233fdc78e788":{"id":"6489c03c8bc5233fdc78e788","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c0508bc5233fdc78e78c":{"id":"6489c0508bc5233fdc78e78c","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c0df7c07471efa3e03b8":{"id":"6489c0df7c07471efa3e03b8","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c0f731a2135f0d7d0fd5":{"id":"6489c0f731a2135f0d7d0fd5","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c12f8bc5233fdc78e790":{"id":"6489c12f8bc5233fdc78e790","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c164a53c8c047c3dc365":{"id":"6489c164a53c8c047c3dc365","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c200cf0cd80b7e74906d":{"id":"6489c200cf0cd80b7e74906d","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c2aad0c36c0a4925c4bc":{"id":"6489c2aad0c36c0a4925c4bc","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c30331a2135f0d7d0fd9":{"id":"6489c30331a2135f0d7d0fd9","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c46eebac5a4a1b73cac0":{"id":"6489c46eebac5a4a1b73cac0","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c5cb44d98e01bc4c4212":{"id":"6489c5cb44d98e01bc4c4212","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c65cd0c36c0a4925c4c0":{"id":"6489c65cd0c36c0a4925c4c0","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c753a74e43447b64d5e6":{"id":"6489c753a74e43447b64d5e6","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c80e7c07471efa3e03bc":{"id":"6489c80e7c07471efa3e03bc","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c8a1a53c8c047c3dc369":{"id":"6489c8a1a53c8c047c3dc369","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c8dba53c8c047c3dc36d":{"id":"6489c8dba53c8c047c3dc36d","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489c99f7c07471efa3e03c0":{"id":"6489c99f7c07471efa3e03c0","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489ca66d0c36c0a4925c4c4":{"id":"6489ca66d0c36c0a4925c4c4","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489cad98bc5233fdc78e794":{"id":"6489cad98bc5233fdc78e794","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489cb4fa74e43447b64d5ea":{"id":"6489cb4fa74e43447b64d5ea","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489cc4379295b4f753d486e":{"id":"6489cc4379295b4f753d486e","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489cca131a2135f0d7d0fdd":{"id":"6489cca131a2135f0d7d0fdd","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489d812cf0cd80b7e749071":{"id":"6489d812cf0cd80b7e749071","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"6489d89debac5a4a1b73caf7":{"id":"6489d89debac5a4a1b73caf7","name":"Sealed weapon case","value":133.5,"costPerSlot":0,"weight":15,"size":10,"gridSize":120,"maxDim":5,"armorClass":0,"parentWeighting":0},"648ae3e356c6310a830fc291":{"id":"648ae3e356c6310a830fc291","name":"AK Custom Guns CG101 AR-type pistol grip adapter","value":12.1235,"costPerSlot":14146,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"648afce7ec6bb25b2608defb":{"id":"648afce7ec6bb25b2608defb","name":"PM FAB Defense PM-G pistol grip (Olive Drab)","value":3.5170000000000003,"costPerSlot":5553,"weight":0.072,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"648c1a965043c4052a4f8505":{"id":"648c1a965043c4052a4f8505","name":"ebudal","value":5.975,"costPerSlot":0,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"6491c6f6ef312a876705191b":{"id":"6491c6f6ef312a876705191b","name":"PK Zenit B-50 handguard","value":10.4925,"costPerSlot":14672.5,"weight":0.36,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6492c6dd60fdb10a020621a2":{"id":"6492c6dd60fdb10a020621a2","name":"PK Zenit B-50 16mm top mount","value":9.7335,"costPerSlot":11796,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6492c8bba6e68e06fb0bae87":{"id":"6492c8bba6e68e06fb0bae87","name":"PK Zenit B-50 66mm top mount","value":-0.1924999999999999,"costPerSlot":1875,"weight":0.135,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6492d7847363b8a52206bc52":{"id":"6492d7847363b8a52206bc52","name":"PK Zenit PT-2 \"Klassika\" stock","value":8.1485,"costPerSlot":12470,"weight":0.643,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6492e3a97df7d749100e29ee":{"id":"6492e3a97df7d749100e29ee","name":"PKP polymer stock","value":-0.6629999999999998,"costPerSlot":3587,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6492ef63cfcf7c89e701abf1":{"id":"6492ef63cfcf7c89e701abf1","name":"PK Zenit DTK-1P 7.62x54R muzzle brake","value":14.399999999999999,"costPerSlot":16462,"weight":0.124,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6492efb8cfcf7c89e701abf3":{"id":"6492efb8cfcf7c89e701abf3","name":"PKM 7.62x54R slotted flash hider","value":-0.7834999999999999,"costPerSlot":1245,"weight":0.057,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6492efe46cc7e29a6f03b2a0":{"id":"6492efe46cc7e29a6f03b2a0","name":"PKM 7.62x54R muzzle brake","value":0.07150000000000034,"costPerSlot":2103,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6492fb8253acae0af00a29b6":{"id":"6492fb8253acae0af00a29b6","name":"PK rear sight","value":-1.5305,"costPerSlot":482,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6494094948796d891603e59f":{"id":"6494094948796d891603e59f","name":"AK Custom Arms ST-EF 74 skeleton stock extension","value":14.744500000000002,"costPerSlot":16772,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64942bfc6ee699f6890dff95":{"id":"64942bfc6ee699f6890dff95","name":"AK Vector VR-05T 7.62x39 muzzle brake","value":20.578,"costPerSlot":22636,"weight":0.116,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64943b74e9998d641b0412ed":{"id":"64943b74e9998d641b0412ed","name":"AR-15 WDR NERO 556 5.56x45 muzzle brake","value":16.301000000000002,"costPerSlot":18355,"weight":0.108,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6499849fc93611967b034949":{"id":"6499849fc93611967b034949","name":"Kalashnikov AK-12 5.45x39 assault rifle","value":89.361,"costPerSlot":104164,"weight":3.6059999999999994,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"649ec107961514b22506b10c":{"id":"649ec107961514b22506b10c","name":"AK-12 gas tube","value":0.32399999999999984,"costPerSlot":2384,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"649ec127c93611967b034957":{"id":"649ec127c93611967b034957","name":"AK-12 handguard","value":19.004,"costPerSlot":21071,"weight":0.134,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"649ec2af961514b22506b10f":{"id":"649ec2af961514b22506b10f","name":"AK-12 5.45x39 muzzle brake","value":7.949,"costPerSlot":9999,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"649ec2cec93611967b03495e":{"id":"649ec2cec93611967b03495e","name":"AK-12 rear sight","value":-1.0924999999999998,"costPerSlot":920,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"649ec2da59cbb3c813042dca":{"id":"649ec2da59cbb3c813042dca","name":"AK-12 rear sight mount","value":-1.105,"costPerSlot":920,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"649ec2f3961514b22506b111":{"id":"649ec2f3961514b22506b111","name":"AK-12 railed dust cover","value":9.424,"costPerSlot":13531.5,"weight":0.215,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"649ec30cb013f04a700e60fb":{"id":"649ec30cb013f04a700e60fb","name":"AK-12 5.45x39 early model 30-round magazine","value":5.6240000000000006,"costPerSlot":9716.5,"weight":0.185,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"649ec87d8007560a9001ab36":{"id":"649ec87d8007560a9001ab36","name":"AK-12 buffer tube","value":3.4345000000000008,"costPerSlot":7505.5,"weight":0.142,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64a536392d2c4e6e970f4121":{"id":"64a536392d2c4e6e970f4121","name":"WARTECH TV-115 plate carrier (Olive Drab)","value":50.741,"costPerSlot":46201,"weight":2.72,"size":9,"gridSize":13,"maxDim":3,"armorClass":0,"parentWeighting":1},"64a5366719bab53bd203bf33":{"id":"64a5366719bab53bd203bf33","name":"Eagle Allied Industries MBSS plate carrier (Coyote Brown)","value":38.124,"costPerSlot":34189,"weight":1.33,"size":9,"gridSize":12,"maxDim":3,"armorClass":0,"parentWeighting":1},"64abd93857958b4249003418":{"id":"64abd93857958b4249003418","name":"Interceptor OTV body armor (UCP)","value":35.101,"costPerSlot":49001,"weight":3.8,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"64ace9d9b5bf5e95f50a4c1d":{"id":"64ace9d9b5bf5e95f50a4c1d","name":"7.62x39mm FMJ ammo pack (20 pcs)","value":1.5350000000000001,"costPerSlot":3540,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ace9f9c4eda9354b0226aa":{"id":"64ace9f9c4eda9354b0226aa","name":"7.62x39mm PP gzh ammo pack (20 pcs)","value":16.8325,"costPerSlot":18840,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ace9ff03378853630da538":{"id":"64ace9ff03378853630da538","name":"7.62x39mm SP ammo pack (20 pcs)","value":0.5750000000000002,"costPerSlot":2580,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64acea09c4eda9354b0226ad":{"id":"64acea09c4eda9354b0226ad","name":"7.62x39mm T-45M1 gzh ammo pack (20 pcs)","value":3.4325,"costPerSlot":5440,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64acea0d03378853630da53b":{"id":"64acea0d03378853630da53b","name":"7.62x39mm US gzh ammo pack (20 pcs)","value":2.5324999999999998,"costPerSlot":4540,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64acea16c4eda9354b0226b0":{"id":"64acea16c4eda9354b0226b0","name":"7.62x39mm BP gzh ammo pack (20 pcs)","value":20.2125,"costPerSlot":22220,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64acea2c03378853630da53e":{"id":"64acea2c03378853630da53e","name":"7.62x39mm HP ammo pack (20 pcs)","value":-0.5049999999999999,"costPerSlot":1500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64aceab0426a303417060654":{"id":"64aceab0426a303417060654","name":"7.62x54mm R SP BT gzh ammo pack (20 pcs)","value":2.7350000000000003,"costPerSlot":4740,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64aceac0c4eda9354b0226b3":{"id":"64aceac0c4eda9354b0226b3","name":"7.62x54mm R FMJ ammo pack (20 pcs)","value":4.835,"costPerSlot":6840,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64aceaecc4eda9354b0226b6":{"id":"64aceaecc4eda9354b0226b6","name":"4.6x30mm JSP SX ammo pack (40 pcs)","value":13.354999999999999,"costPerSlot":15360,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64aceafcb5bf5e95f50a4c20":{"id":"64aceafcb5bf5e95f50a4c20","name":"9x19mm FMJ M882 ammo pack (30 pcs)","value":9.895,"costPerSlot":11900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64acee6903378853630da544":{"id":"64acee6903378853630da544","name":"7.62x54mm R HP BT ammo pack (20 pcs)","value":2.075,"costPerSlot":4080,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ad2d8d7e2fcecf0305533f":{"id":"64ad2d8d7e2fcecf0305533f","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64ad2dac6f9247c2f4012439":{"id":"64ad2dac6f9247c2f4012439","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64ad2dba0b9840e4c80c2485":{"id":"64ad2dba0b9840e4c80c2485","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64ad2dc66f9247c2f401243d":{"id":"64ad2dc66f9247c2f401243d","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64ad2dd30b9840e4c80c2489":{"id":"64ad2dd30b9840e4c80c2489","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64afc71497cf3a403c01ff38":{"id":"64afc71497cf3a403c01ff38","name":"Granit Br5 ballistic plate","value":67.83875,"costPerSlot":15488.75,"weight":3.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"64afd81707e2cf40e903a316":{"id":"64afd81707e2cf40e903a316","name":"Granit ballistic plate (Side)","value":142.47199999999998,"costPerSlot":85122,"weight":1.3,"size":1,"gridSize":0,"maxDim":1,"armorClass":6,"parentWeighting":0},"64afdb577bb3bfe8fe03fd1d":{"id":"64afdb577bb3bfe8fe03fd1d","name":"ESBI level IV ballistic plate (Side)","value":229.61700000000002,"costPerSlot":172192,"weight":1.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":6,"parentWeighting":0},"64afdcb83efdfea28601d041":{"id":"64afdcb83efdfea28601d041","name":"ESAPI level IV ballistic plate","value":70.5065,"costPerSlot":18106.5,"weight":3.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"64afee8e9f589807e30dc68a":{"id":"64afee8e9f589807e30dc68a","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64afeecb977493a0ee026213":{"id":"64afeecb977493a0ee026213","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64afef49977493a0ee026217":{"id":"64afef49977493a0ee026217","name":"Aramid insert","value":28,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"64b111fe1be308f1800688c1":{"id":"64b111fe1be308f1800688c1","name":"Aramid insert","value":18,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"64b11c08506a73f6a10f9364":{"id":"64b11c08506a73f6a10f9364","name":"","value":58,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":6,"parentWeighting":0},"64b6979341772715af0f9c39":{"id":"64b6979341772715af0f9c39","name":"4.6x30mm JSP SX","value":8.3805,"costPerSlot":384,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b7af434b75259c590fa893":{"id":"64b7af434b75259c590fa893","name":"7.62x39mm PP gzh","value":8.934000000000001,"costPerSlot":942,"weight":0.016,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b7af5a8532cf95ee0a0dbd":{"id":"64b7af5a8532cf95ee0a0dbd","name":"7.62x39mm FMJ","value":8.171,"costPerSlot":177,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b7af734b75259c590fa895":{"id":"64b7af734b75259c590fa895","name":"7.62x39mm SP","value":8.123,"costPerSlot":129,"weight":0.012,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b7bbb74b75259c590fa897":{"id":"64b7bbb74b75259c590fa897","name":"9x19mm FMJ M882","value":8.2355,"costPerSlot":238,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b8725c4b75259c590fa899":{"id":"64b8725c4b75259c590fa899","name":".300 Blackout CBJ","value":8.5425,"costPerSlot":550,"weight":0.015,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b8ee384b75259c590fa89b":{"id":"64b8ee384b75259c590fa89b","name":"12/70 Piranha","value":8.256,"costPerSlot":281,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b8f7968532cf95ee0a0dbf":{"id":"64b8f7968532cf95ee0a0dbf","name":"7.62x54mm R FMJ","value":8.33,"costPerSlot":342,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b8f7b5389d7ffd620ccba2":{"id":"64b8f7b5389d7ffd620ccba2","name":"7.62x54mm R SP BT","value":8.231,"costPerSlot":243,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b8f7c241772715af0f9c3d":{"id":"64b8f7c241772715af0f9c3d","name":"7.62x54mm R HP BT","value":8.192,"costPerSlot":204,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"64b9cf0ac12b9c38db26923a":{"id":"64b9cf0ac12b9c38db26923a","name":"AK 7.62x39 Magpul PMAG 20 GEN M3 20-round magazine","value":-2.4939999999999998,"costPerSlot":1576.5,"weight":0.141,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64b9e2037fdfb81df81e3c25":{"id":"64b9e2037fdfb81df81e3c25","name":"M1A 7.62x51 10-round magazine","value":6.980500000000001,"costPerSlot":9060,"weight":0.159,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64b9e265c94d0d15c5027e35":{"id":"64b9e265c94d0d15c5027e35","name":"AK-74 Delta-Tek Saiga 545 5.45x39 20-round magazine","value":-2.565,"costPerSlot":1500,"weight":0.13,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64be7095047e826eae02b0c1":{"id":"64be7095047e826eae02b0c1","name":"Zulu Nylon Gear M4 Reduced Signature Chest Rig (Ranger Green)","value":22.1185,"costPerSlot":22579,"weight":0.521,"size":6,"gridSize":6,"maxDim":3,"armorClass":0,"parentWeighting":1},"64be7110bf597ba84a0a41ea":{"id":"64be7110bf597ba84a0a41ea","name":"Type 56 Chicom chest harness","value":18.825000000000003,"costPerSlot":17150,"weight":0.65,"size":9,"gridSize":10,"maxDim":3,"armorClass":0,"parentWeighting":1},"64be79c487d1510151095552":{"id":"64be79c487d1510151095552","name":"NPP KlASS Kora-Kulon body armor (Black)","value":39.837,"costPerSlot":57387,"weight":11.1,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"64be79e2bf8412471d0d9bcc":{"id":"64be79e2bf8412471d0d9bcc","name":"NPP KlASS Kora-Kulon body armor (EMR)","value":27.174000000000007,"costPerSlot":44724,"weight":11.1,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"64c196ad26a15b84aa07132f":{"id":"64c196ad26a15b84aa07132f","name":"AK-12 5.45x39 sound suppressor","value":22.0095,"costPerSlot":26234.5,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"64ca3d3954fc657e230529cc":{"id":"64ca3d3954fc657e230529cc","name":"Kalashnikov PKP 7.62x54R infantry machine gun","value":53.3245,"costPerSlot":80143,"weight":9.637,"size":20,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"64cbad529f7cf7f75c077fd5":{"id":"64cbad529f7cf7f75c077fd5","name":"PK pistol grip (Black)","value":17.355,"costPerSlot":19400,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64cbd95a29b9b4283e216ff5":{"id":"64cbd95a29b9b4283e216ff5","name":"","value":-388.8,"costPerSlot":0,"weight":0,"size":400,"gridSize":24,"maxDim":20,"armorClass":0,"parentWeighting":0},"64ccc1d4a0f13c24561edf27":{"id":"64ccc1d4a0f13c24561edf27","name":"Concordia apartment 34 room key","value":31.18,"costPerSlot":33185,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc1ec1779ad6ba200a137":{"id":"64ccc1ec1779ad6ba200a137","name":"Concordia apartment 8 home cinema key","value":32.516999999999996,"costPerSlot":34522,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc1f4ff54fb38131acf27":{"id":"64ccc1f4ff54fb38131acf27","name":"Concordia apartment 63 room key","value":32.553,"costPerSlot":34558,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc1fe088064307e14a6f7":{"id":"64ccc1fe088064307e14a6f7","name":"Beluga restaurant director key","value":40.416,"costPerSlot":42421,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc206793ca11c8f450a38":{"id":"64ccc206793ca11c8f450a38","name":"TerraGroup meeting room key","value":40.106,"costPerSlot":42111,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc2111779ad6ba200a139":{"id":"64ccc2111779ad6ba200a139","name":"Tarbank cash register department key","value":57.724,"costPerSlot":59729,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc246ff54fb38131acf29":{"id":"64ccc246ff54fb38131acf29","name":"X-ray room key","value":67.519,"costPerSlot":69524,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc24de61ea448b507d34d":{"id":"64ccc24de61ea448b507d34d","name":"TerraGroup security armory key","value":84.71900000000001,"costPerSlot":86724,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc25f95763a1ae376e447":{"id":"64ccc25f95763a1ae376e447","name":"Mysterious room marked key","value":1497.995,"costPerSlot":1500000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ccc268c41e91416064ebc7":{"id":"64ccc268c41e91416064ebc7","name":"PE teacher's office key","value":15.935000000000002,"costPerSlot":17940,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64ce572331dd890873175115":{"id":"64ce572331dd890873175115","name":"Aspect company office key","value":35.878,"costPerSlot":37883,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64d0b40fbe2eed70e254e2d4":{"id":"64d0b40fbe2eed70e254e2d4","name":"Sacred Amulet","value":97.95,"costPerSlot":100000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64d116f41a9c6143a956127d":{"id":"64d116f41a9c6143a956127d","name":"Bank cash register","value":9.200000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":9,"maxDim":1,"armorClass":0,"parentWeighting":0},"64d11702dd0cd96ab82c3280":{"id":"64d11702dd0cd96ab82c3280","name":"Bank safe","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"64d4b23dc1b37504b41ac2b6":{"id":"64d4b23dc1b37504b41ac2b6","name":"Rusted bloody key","value":4.6610000000000005,"costPerSlot":6666,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"64f6f4c5911bcdfe8b03b0dc":{"id":"64f6f4c5911bcdfe8b03b0dc","name":"Tournament secured container","value":-0.8999999999999986,"costPerSlot":0,"weight":1.2,"size":9,"gridSize":9,"maxDim":3,"armorClass":0,"parentWeighting":0},"651178336cad06c37c049eb4":{"id":"651178336cad06c37c049eb4","name":"VSS/VAL polymer handguard (Plum)","value":-0.9119999999999999,"costPerSlot":1123,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65118f531b90b4fc77015083":{"id":"65118f531b90b4fc77015083","name":"VSS/VAL 9x39 30-round magazine","value":25.183000000000003,"costPerSlot":29310,"weight":0.254,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6513ef33e06849f06c0957ca":{"id":"6513ef33e06849f06c0957ca","name":"Degtyarev RPD 7.62x39 machine gun","value":37.978,"costPerSlot":62678,"weight":7.3999999999999995,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"6513eff1e06849f06c0957d4":{"id":"6513eff1e06849f06c0957d4","name":"RPD 7.62x39 520mm barrel","value":-6.3045,"costPerSlot":2595.5,"weight":1.8,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6513f037e06849f06c0957d7":{"id":"6513f037e06849f06c0957d7","name":"RPD bipod","value":-1.7275,"costPerSlot":2500,"weight":0.455,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6513f05a94c72326990a3866":{"id":"6513f05a94c72326990a3866","name":"RPD wooden handguard","value":-0.95,"costPerSlot":1175,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6513f0a194c72326990a3868":{"id":"6513f0a194c72326990a3868","name":"RPD 7.62x39 Buben 100-round box","value":-0.2990000000000004,"costPerSlot":6101,"weight":0.8,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6513f0f5e63f29908d0ffab8":{"id":"6513f0f5e63f29908d0ffab8","name":"RPD barrel thread protector","value":-1.241,"costPerSlot":764,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6513f13a8cb24472490ee32f":{"id":"6513f13a8cb24472490ee32f","name":"RPD wooden pistol grip","value":-1.1880000000000002,"costPerSlot":842,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6513f153e63f29908d0ffaba":{"id":"6513f153e63f29908d0ffaba","name":"RPD rear sight","value":-1.4364999999999999,"costPerSlot":576,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6513f1798cb24472490ee331":{"id":"6513f1798cb24472490ee331","name":"RPD wooden stock","value":5.3575,"costPerSlot":9917.5,"weight":1.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65144f546ddb773afa0e35e1":{"id":"65144f546ddb773afa0e35e1","name":"SR-3M polymer handguard (Black)","value":-0.4119999999999999,"costPerSlot":1623,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65144ff50e00edc79406836f":{"id":"65144ff50e00edc79406836f","name":"SR-3M 9x39 sound suppressor","value":16.273,"costPerSlot":20560.5,"weight":0.575,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"651450ce0e00edc794068371":{"id":"651450ce0e00edc794068371","name":"SR-3M 9x39 compact assault rifle","value":63.11550000000001,"costPerSlot":70412,"weight":2.5929999999999995,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"651580dc71a4f10aec4b6056":{"id":"651580dc71a4f10aec4b6056","name":"AK PUFGUN SG-M2 pistol grip","value":21.417,"costPerSlot":23483,"weight":0.132,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65169d5b30425317755f8e25":{"id":"65169d5b30425317755f8e25","name":"RTM Pillau P-2 tactical foregrip (Red)","value":14.360500000000002,"costPerSlot":16394,"weight":0.067,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6516b129609aaf354b34b3a8":{"id":"6516b129609aaf354b34b3a8","name":"SVDS Lynx Arms AK-series pistol grip adapter","value":12.1455,"costPerSlot":14162,"weight":0.033,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6516e91f609aaf354b34b3e2":{"id":"6516e91f609aaf354b34b3e2","name":"AR-15 Daniel Defense Enhanced Collapsible Buttstock (Black)","value":11.332,"costPerSlot":15445.5,"weight":0.227,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6516e971a3d4c6497930b450":{"id":"6516e971a3d4c6497930b450","name":"AR-15 Daniel Defense Enhanced Collapsible Buttstock (FDE)","value":8.4245,"costPerSlot":12538,"weight":0.227,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6516e9bc5901745209404287":{"id":"6516e9bc5901745209404287","name":"Daniel Defense TCS 12mm Buttpad ","value":20.3875,"costPerSlot":22415,"weight":0.055,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6516e9d7e239bd0c487e3766":{"id":"6516e9d7e239bd0c487e3766","name":"Daniel Defense TCS 20mm Buttpad ","value":20.7185,"costPerSlot":22750,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"651a8bf3a8520e48047bf708":{"id":"651a8bf3a8520e48047bf708","name":"Daniel Defense Enhanced M-LOK Vertical Foregrip (Black)","value":15.774000000000001,"costPerSlot":17788,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"651a8e529829226ceb67c319":{"id":"651a8e529829226ceb67c319","name":"Daniel Defense Enhanced M-LOK Vertical Foregrip (Coyote Brown)","value":16.548000000000002,"costPerSlot":18562,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"651bf5617b3b552ef6712cb7":{"id":"651bf5617b3b552ef6712cb7","name":"AR-15 Daniel Defense GRIP-N-RIP charging handle","value":20.6675,"costPerSlot":22689,"weight":0.043,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"651bfe4d1065f87f082e7209":{"id":"651bfe4d1065f87f082e7209","name":"Saiga-9 Hartman Gyurza handguard","value":2.0790000000000006,"costPerSlot":6214,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65266fd43341ed9aa903dd56":{"id":"65266fd43341ed9aa903dd56","name":"RPD 7.62x39 sawed-off 350mm barrel","value":-3.6086666666666662,"costPerSlot":2941.3333333333335,"weight":1.1,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"65268d8ecb944ff1e90ea385":{"id":"65268d8ecb944ff1e90ea385","name":"Degtyarev RPDN 7.62x39 machine gun","value":3.4740000000000038,"costPerSlot":23769,"weight":6.59,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"65290f395ae2ae97b80fdf2d":{"id":"65290f395ae2ae97b80fdf2d","name":"SIG MCX-SPEAR 6.8x51 assault rifle","value":-1.4349999999999987,"costPerSlot":21300,"weight":3.4699999999999998,"size":18,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"652910565ae2ae97b80fdf35":{"id":"652910565ae2ae97b80fdf35","name":"MCX-SPEAR 6.8x51 13 inch barrel","value":7.896500000000001,"costPerSlot":12136,"weight":0.479,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6529109524cbe3c74a05e5b7":{"id":"6529109524cbe3c74a05e5b7","name":"MCX-SPEAR charging handle","value":-0.4395,"costPerSlot":1578,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"652910bc24cbe3c74a05e5b9":{"id":"652910bc24cbe3c74a05e5b9","name":"MCX-SPEAR Adjustable Gas Piston","value":2.9705000000000004,"costPerSlot":4995,"weight":0.049,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"652910ef50dc782999054b97":{"id":"652910ef50dc782999054b97","name":"MCX-SPEAR 11 inch M-LOK handguard","value":-2.048333333333333,"costPerSlot":4166.666666666667,"weight":0.43,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6529113b5ae2ae97b80fdf39":{"id":"6529113b5ae2ae97b80fdf39","name":"MCX-SPEAR Clutch-Lok QD 6.8x51 Shouldered Flash Hider","value":22.725,"costPerSlot":24786,"weight":0.122,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"652911675ae2ae97b80fdf3c":{"id":"652911675ae2ae97b80fdf3c","name":"AR-15 SIG Sauer Reduced Angle Pistol Grip (Coyote Tan)","value":0.3599999999999999,"costPerSlot":2400,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6529119424cbe3c74a05e5bb":{"id":"6529119424cbe3c74a05e5bb","name":"MCX-SPEAR 6.8x51 upper receiver","value":19.793499999999998,"costPerSlot":23928.5,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"652911e650dc782999054b9d":{"id":"652911e650dc782999054b9d","name":"MCX-SPEAR SLX68-MG-QD 6.8x51 sound suppressor","value":20.717499999999998,"costPerSlot":25012.5,"weight":0.59,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6529243824cbe3c74a05e5c1":{"id":"6529243824cbe3c74a05e5c1","name":"6.8x51mm SIG Hybrid","value":9.112,"costPerSlot":1124,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6529302b8c26af6326029fb7":{"id":"6529302b8c26af6326029fb7","name":"6.8x51mm SIG FMJ","value":8.863,"costPerSlot":875,"weight":0.024,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6529348224cbe3c74a05e5c4":{"id":"6529348224cbe3c74a05e5c4","name":"SIG Sauer Locking Stock Hinge Assembly","value":16.302999999999997,"costPerSlot":18403,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6529366450dc782999054ba0":{"id":"6529366450dc782999054ba0","name":"SIG Sauer Stock Adapter Low Profile Tube (Coyote Tan)","value":5.854000000000001,"costPerSlot":9935,"weight":0.162,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6529370c405a5f51dd023db8":{"id":"6529370c405a5f51dd023db8","name":"AR-15 Magpul MOE SL-K buttstock (Coyote Tan)","value":6.8285,"costPerSlot":10941.5,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65293c38fc460e50a509cb25":{"id":"65293c38fc460e50a509cb25","name":"AR-10 7.62x51 Lancer L7AWM 20-round magazine","value":10.182,"costPerSlot":14357,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65293c7a17e14363030ad308":{"id":"65293c7a17e14363030ad308","name":"AR-10 7.62x51 Lancer L7AWM 25-round magazine","value":40.93000000000001,"costPerSlot":45105,"weight":0.35,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6530e8587cbfc1e309011e37":{"id":"6530e8587cbfc1e309011e37","name":"Vengeful Zryachiy's balaclava","value":2780.727,"costPerSlot":2777777,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"6531119b9afebff7ff0a1769":{"id":"6531119b9afebff7ff0a1769","name":"Vengeful Zryachiy's balaclava (folded)","value":2780.727,"costPerSlot":2777777,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"65329ebcc0d50d0c9204ace1":{"id":"65329ebcc0d50d0c9204ace1","name":"SR-3M polymer foregrip (Black)","value":10.182,"costPerSlot":12222,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65392f611406374f82152ba5":{"id":"65392f611406374f82152ba5","name":"GBRS Aimpoint Hydra Mount Kit (Black)","value":1.6475,"costPerSlot":5718,"weight":0.141,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"653931da5db71d30ab1d6296":{"id":"653931da5db71d30ab1d6296","name":"GBRS Aimpoint Hydra Mount Kit (FDE)","value":1.9825,"costPerSlot":6053,"weight":0.141,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"653ecc425a1690d9d90491e4":{"id":"653ecc425a1690d9d90491e4","name":"SKS ATI Monte Carlo gas tube cover","value":12.863,"costPerSlot":14913,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"653ecd065a1690d9d90491e6":{"id":"653ecd065a1690d9d90491e6","name":"SKS TAPCO railed gas tube cover","value":-1.0949999999999998,"costPerSlot":1015,"weight":0.22,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"653ece125a1690d9d90491e8":{"id":"653ece125a1690d9d90491e8","name":"SKS FAB Defense UAS gas tube cover","value":16.354,"costPerSlot":18459,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"653ecef836fae5a82f02b869":{"id":"653ecef836fae5a82f02b869","name":"SKS ATI Monte Carlo stock","value":-1.59375,"costPerSlot":6956.25,"weight":1.1,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"653ed132896b99b40a0292e6":{"id":"653ed132896b99b40a0292e6","name":"SKS FAB Defense UAS buttstock","value":10.8335,"costPerSlot":15033.5,"weight":0.4,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"653ed19d22e1ef3d9002c328":{"id":"653ed19d22e1ef3d9002c328","name":"SKS TAPCO Intrafuse chassis lower rail","value":-0.2889999999999999,"costPerSlot":1761,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6540d2162ae6d96b540afcaf":{"id":"6540d2162ae6d96b540afcaf","name":"PR-Taran police baton","value":21.011,"costPerSlot":22386,"weight":0.75,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"65424185a57eea37ed6562e9":{"id":"65424185a57eea37ed6562e9","name":"","value":-2,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6542435ea57eea37ed6562f0":{"id":"6542435ea57eea37ed6562f0","name":"","value":-2,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65434a4e4e3a01736a6c9706":{"id":"65434a4e4e3a01736a6c9706","name":"Hartman Lenok 70mm rail","value":-1.1395,"costPerSlot":870,"weight":0.019,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6544d4187c5457729210d277":{"id":"6544d4187c5457729210d277","name":"Axion Kobra EKP-1S-03 reflex sight (Dovetail)","value":8.999500000000001,"costPerSlot":11136,"weight":0.273,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"654a4a964b446df1ad03f192":{"id":"654a4a964b446df1ad03f192","name":"Granit 4RS ballistic plates (Back)","value":64.5065,"costPerSlot":12406.5,"weight":3.8,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"654a4dea7c17dec2f50cc86a":{"id":"654a4dea7c17dec2f50cc86a","name":"6B12 ballistic plates (Front)","value":22.237000000000002,"costPerSlot":3537,"weight":4.6,"size":6,"gridSize":0,"maxDim":3,"armorClass":3,"parentWeighting":0},"654a4f8bc721968a4404ef18":{"id":"654a4f8bc721968a4404ef18","name":"Korund-VM ballistic plate (Side)","value":66.16,"costPerSlot":18710,"weight":1.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"654a8976f414fcea4004d78b":{"id":"654a8976f414fcea4004d78b","name":"Aramid insert","value":27.395,"costPerSlot":9395,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a8ae00337d53f9102c2aa":{"id":"654a8ae00337d53f9102c2aa","name":"Aramid insert","value":21.718,"costPerSlot":3718,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a8b0b0337d53f9102c2ae":{"id":"654a8b0b0337d53f9102c2ae","name":"Aramid insert","value":27.395,"costPerSlot":9395,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a8b3df414fcea4004d78f":{"id":"654a8b3df414fcea4004d78f","name":"Aramid insert","value":19.448,"costPerSlot":1448,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a8b60f414fcea4004d793":{"id":"654a8b60f414fcea4004d793","name":"Aramid insert","value":18,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a8b80f414fcea4004d797":{"id":"654a8b80f414fcea4004d797","name":"Aramid insert","value":19.448,"costPerSlot":1448,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a8ba90337d53f9102c2b2":{"id":"654a8ba90337d53f9102c2b2","name":"Aramid insert","value":18,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a8bc5f414fcea4004d79b":{"id":"654a8bc5f414fcea4004d79b","name":"Aramid insert","value":21.718,"costPerSlot":3718,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"654a90aff4f81a421b0a7c86":{"id":"654a90aff4f81a421b0a7c86","name":"Layers of aramid fiber","value":36.972,"costPerSlot":8972,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"654a91068e1ce698150fd1e2":{"id":"654a91068e1ce698150fd1e2","name":"Layers of aramid fiber","value":36.972,"costPerSlot":8972,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"654a9189bcc67a392b056c79":{"id":"654a9189bcc67a392b056c79","name":"Layers of aramid fiber","value":36.972,"costPerSlot":8972,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6551fec55d0cf82e51014288":{"id":"6551fec55d0cf82e51014288","name":"Hybrid composite materials","value":86.14099999999999,"costPerSlot":48141,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"655200ba0ef76cf7be09d528":{"id":"655200ba0ef76cf7be09d528","name":"Hybrid composite materials","value":86.14099999999999,"costPerSlot":48141,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"65573fa5655447403702a816":{"id":"65573fa5655447403702a816","name":"Granit Br4 ballistic plate","value":52.3365,"costPerSlot":9786.5,"weight":2.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"6557458f83942d705f0c4962":{"id":"6557458f83942d705f0c4962","name":"SSAPI level III+ ballistic plate (Side)","value":75.642,"costPerSlot":28142,"weight":1,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"655746010177119f4a097ff7":{"id":"655746010177119f4a097ff7","name":"SAPI level III+ ballistic plate","value":52.361000000000004,"costPerSlot":9271,"weight":1.82,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"6557519ac9b1d9bdcb0777e1":{"id":"6557519ac9b1d9bdcb0777e1","name":"Aramid insert","value":18,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"655751db58aa1b6dbd0cc295":{"id":"655751db58aa1b6dbd0cc295","name":"Aramid insert","value":18,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"655c652d60d0ac437100fed7":{"id":"655c652d60d0ac437100fed7","name":"BEAR operative figurine","value":33.4,"costPerSlot":37500,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655c663a6689c676ce57af85":{"id":"655c663a6689c676ce57af85","name":"USEC operative figurine","value":33.4,"costPerSlot":37500,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655c669103999d3c810c025b":{"id":"655c669103999d3c810c025b","name":"Cultist figurine","value":45.9,"costPerSlot":50000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655c66e40b2de553b618d4b8":{"id":"655c66e40b2de553b618d4b8","name":"Politician Mutkevich figurine","value":45.9,"costPerSlot":50000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655c673673a43e23e857aebd":{"id":"655c673673a43e23e857aebd","name":"Scav figurine","value":20.9,"costPerSlot":25000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655c67782a1356436041c9c5":{"id":"655c67782a1356436041c9c5","name":"Ryzhy figurine","value":20.9,"costPerSlot":25000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655c67ab0d37ca5135388f4b":{"id":"655c67ab0d37ca5135388f4b","name":"Ded Moroz figurine","value":45.9,"costPerSlot":50000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655cb6b5d680a544f30607fa":{"id":"655cb6b5d680a544f30607fa","name":"AKS-74U Legal Arsenal Pilgrim railed dust cover","value":-1.5299999999999998,"costPerSlot":2530,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"655dccfdbdcc6b5df71382b6":{"id":"655dccfdbdcc6b5df71382b6","name":"Strike Industries Cobra Tactical foregrip (FDE)","value":15.687000000000001,"costPerSlot":17727,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"655df24fdf80b12750626d0a":{"id":"655df24fdf80b12750626d0a","name":"Stark SE-5 Express Forward foregrip (FDE)","value":26.439999999999998,"costPerSlot":28485,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"655f13e0a246670fb0373245":{"id":"655f13e0a246670fb0373245","name":"Wilcox BOSS Xe reflex sight","value":48.07,"costPerSlot":50195,"weight":0.25,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6565b91666492762f5029c0b":{"id":"6565b91666492762f5029c0b","name":"AS VAL pistol grip (Black)","value":-0.5799999999999998,"costPerSlot":1493,"weight":0.146,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6565bb7eb4b12a56eb04b084":{"id":"6565bb7eb4b12a56eb04b084","name":"VSS/VAL polymer handguard (Black)","value":-0.9119999999999999,"costPerSlot":1123,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6565c0c2ff7eb7070409084c":{"id":"6565c0c2ff7eb7070409084c","name":"SR-3M polymer foregrip (Plum)","value":0.11100000000000021,"costPerSlot":2151,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6565c3ab977bcc2dbb01c2e7":{"id":"6565c3ab977bcc2dbb01c2e7","name":"SR-3M polymer handguard (Plum)","value":-0.4119999999999999,"costPerSlot":1623,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6567e751a715f85433025998":{"id":"6567e751a715f85433025998","name":"SIG Sauer ALPHA4 30mm ring scope mount","value":8.424999999999999,"costPerSlot":12520,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6567e7681265c8a131069b0f":{"id":"6567e7681265c8a131069b0f","name":"SIG Sauer TANGO6T 1-6x24 30mm riflescope","value":29.987499999999997,"costPerSlot":34300.5,"weight":0.626,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6568a6bf2c5fb7afc70bc424":{"id":"6568a6bf2c5fb7afc70bc424","name":"SR-3M railed polymer handguard (Black)","value":12.566,"costPerSlot":14606,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"656ddcf0f02d7bcea90bf395":{"id":"656ddcf0f02d7bcea90bf395","name":"Tehinkom RK-PT-25 patrol backpack (EMR)","value":31.301000000000002,"costPerSlot":27351,"weight":1.1,"size":25,"gridSize":25,"maxDim":5,"armorClass":0,"parentWeighting":2},"656df4fec921ad01000481a2":{"id":"656df4fec921ad01000481a2","name":"Pack of instant noodles","value":15.537,"costPerSlot":12582,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"656e0436d44a1bb4220303a0":{"id":"656e0436d44a1bb4220303a0","name":"Mystery Ranch SATL Bridger Assault Pack (Foliage)","value":245.603,"costPerSlot":240278,"weight":2.95,"size":35,"gridSize":36,"maxDim":7,"armorClass":0,"parentWeighting":2},"656efaf54772930db4031ff5":{"id":"656efaf54772930db4031ff5","name":"Granit 4 ballistic plates (Back)","value":50.52575,"costPerSlot":8175.75,"weight":3.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"656efd66034e8e01c407f35c":{"id":"656efd66034e8e01c407f35c","name":"6B13 custom ballistic plates (Back)","value":45.254000000000005,"costPerSlot":13304,"weight":4.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"656f198fb27298d6fd005466":{"id":"656f198fb27298d6fd005466","name":"Direct Action Dragon Egg Mark II backpack (Black)","value":55.247,"costPerSlot":52222,"weight":2.95,"size":25,"gridSize":25,"maxDim":5,"armorClass":0,"parentWeighting":2},"656f57dc27aed95beb08f628":{"id":"656f57dc27aed95beb08f628","name":"Zhuk-3 ballistic plate (Front)","value":23.539,"costPerSlot":3739,"weight":2.4,"size":6,"gridSize":0,"maxDim":3,"armorClass":3,"parentWeighting":0},"656f603f94b480b8a500c0d6":{"id":"656f603f94b480b8a500c0d6","name":"6B33 ballistic plate (Front)","value":33.509166666666665,"costPerSlot":4359.166666666667,"weight":3.7,"size":6,"gridSize":0,"maxDim":3,"armorClass":4,"parentWeighting":0},"656f611f94b480b8a500c0db":{"id":"656f611f94b480b8a500c0db","name":"Granit 4 ballistic plate (Front)","value":45.26766666666667,"costPerSlot":5792.666666666667,"weight":3.05,"size":6,"gridSize":0,"maxDim":3,"armorClass":5,"parentWeighting":0},"656f63c027aed95beb08f62c":{"id":"656f63c027aed95beb08f62c","name":"Granit 4RS ballistic plate (Front)","value":57.817,"costPerSlot":8567,"weight":3.5,"size":6,"gridSize":0,"maxDim":3,"armorClass":6,"parentWeighting":0},"656f664200d62bcd2e024077":{"id":"656f664200d62bcd2e024077","name":"Korund-VM ballistic plates (Front)","value":44.763333333333335,"costPerSlot":5463.333333333333,"weight":3.4,"size":6,"gridSize":0,"maxDim":3,"armorClass":5,"parentWeighting":0},"656f66b5c6baea13cd07e108":{"id":"656f66b5c6baea13cd07e108","name":"Korund-VM-K ballistic plates (Front)","value":57.92183333333333,"costPerSlot":8921.833333333334,"weight":4,"size":6,"gridSize":0,"maxDim":3,"armorClass":6,"parentWeighting":0},"656f9d5900d62bcd2e02407c":{"id":"656f9d5900d62bcd2e02407c","name":"AR500 Legacy Plate ballistic plate","value":28.844,"costPerSlot":6769,"weight":3.85,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"656f9fa0498d1b7e3e071d98":{"id":"656f9fa0498d1b7e3e071d98","name":"SPRTN Omega ballistic plate","value":40.26775,"costPerSlot":8462.75,"weight":4.39,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"656fa0fb498d1b7e3e071d9c":{"id":"656fa0fb498d1b7e3e071d9c","name":"Global Armor’s Steel ballistic plate","value":40.702,"costPerSlot":8402,"weight":3.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"656fa25e94b480b8a500c0e0":{"id":"656fa25e94b480b8a500c0e0","name":"Kiba Arms Titan ballistic plate","value":41.252250000000004,"costPerSlot":8377.25,"weight":2.25,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"656fa53d94b480b8a500c0e4":{"id":"656fa53d94b480b8a500c0e4","name":"TallCom Guardian ballistic plate","value":51.451750000000004,"costPerSlot":9201.75,"weight":3.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"656fa61e94b480b8a500c0e8":{"id":"656fa61e94b480b8a500c0e8","name":"NESCO 4400-SA-MC ballistic plate","value":69.25425,"costPerSlot":17054.25,"weight":3.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"656fa76500d62bcd2e024080":{"id":"656fa76500d62bcd2e024080","name":"Kiba Arms Steel ballistic plate","value":64.675,"costPerSlot":13225,"weight":5.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"656fa8d700d62bcd2e024084":{"id":"656fa8d700d62bcd2e024084","name":"Cult Locust ballistic plate","value":52.80875,"costPerSlot":10088.75,"weight":2.56,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"656fa99800d62bcd2e024088":{"id":"656fa99800d62bcd2e024088","name":"Cult Termite ballistic plate","value":71.3295,"costPerSlot":19254.5,"weight":3.85,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"656fac30c6baea13cd07e10c":{"id":"656fac30c6baea13cd07e10c","name":"PRTCTR Lightweight ballistic plate","value":29.11625,"costPerSlot":5331.25,"weight":0.43,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"656fad8c498d1b7e3e071da0":{"id":"656fad8c498d1b7e3e071da0","name":"Monoclete level III PE ballistic plate","value":47.90175,"costPerSlot":14576.75,"weight":1.35,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"656fae5f7c2d57afe200c0d7":{"id":"656fae5f7c2d57afe200c0d7","name":"GAC 3s15m ballistic plate","value":56.96525,"costPerSlot":13450.25,"weight":0.97,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"656faf0ca0dce000a2020f77":{"id":"656faf0ca0dce000a2020f77","name":"GAC 4sss2 ballistic plate","value":73.9005,"costPerSlot":21250.5,"weight":2.7,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"656fafe3498d1b7e3e071da4":{"id":"656fafe3498d1b7e3e071da4","name":"KITECO SC-IV SA ballistic plate","value":70.20125,"costPerSlot":17426.25,"weight":2.45,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"656fb0bd7c2d57afe200c0dc":{"id":"656fb0bd7c2d57afe200c0dc","name":"SPRTN Elaphros ballistic plate","value":45.37925,"costPerSlot":12179.25,"weight":1.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"656fb21fa0dce000a2020f7c":{"id":"656fb21fa0dce000a2020f7c","name":"NewSphereTech level III ballistic plate","value":42.7175,"costPerSlot":9792.5,"weight":2.15,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"656fd7c32668ef0402028fb9":{"id":"656fd7c32668ef0402028fb9","name":"1.25 mm aramid insert and titanium plates","value":26.073999999999998,"costPerSlot":8074,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"656fd89bf5a9631d4e042575":{"id":"656fd89bf5a9631d4e042575","name":"1.25 mm aramid insert and titanium plates","value":26.073999999999998,"costPerSlot":8074,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657023a9126cc4a57d0e17a6":{"id":"657023a9126cc4a57d0e17a6","name":".300 Blackout CBJ ammo pack (50 pcs)","value":25.495,"costPerSlot":27500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023b1cfc010a0f50069e5":{"id":"657023b1cfc010a0f50069e5","name":".300 Blackout M62 Tracer ammo pack (50 pcs)","value":63.39500000000001,"costPerSlot":65400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023b71419851aef03e6e8":{"id":"657023b71419851aef03e6e8","name":".300 Blackout V-Max ammo pack (50 pcs)","value":8.245,"costPerSlot":10250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023bebfc87b3a34093207":{"id":"657023bebfc87b3a34093207","name":".300 Blackout BCP FMJ ammo pack (50 pcs)","value":24.545,"costPerSlot":26550,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023c61419851aef03e6eb":{"id":"657023c61419851aef03e6eb","name":".300 Whisper ammo pack (50 pcs)","value":4.945,"costPerSlot":6950,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023ccbfc87b3a3409320a":{"id":"657023ccbfc87b3a3409320a","name":".338 Lapua Magnum FMJ ammo pack (20 pcs)","value":13.995000000000001,"costPerSlot":18000,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"657023d6cfc010a0f50069e9":{"id":"657023d6cfc010a0f50069e9","name":".338 Lapua Magnum TAC-X ammo pack (20 pcs)","value":-0.17499999999999982,"costPerSlot":3830,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"657023dabfc87b3a3409320d":{"id":"657023dabfc87b3a3409320d","name":".338 Lapua Magnum UCW ammo pack (20 pcs)","value":4.504999999999999,"costPerSlot":8510,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"657023decfc010a0f50069ec":{"id":"657023decfc010a0f50069ec","name":".357 Magnum FMJ ammo pack (25 pcs)","value":8.195,"costPerSlot":10200,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023e31419851aef03e6ee":{"id":"657023e31419851aef03e6ee","name":".357 Magnum HP ammo pack (25 pcs)","value":4.1450000000000005,"costPerSlot":6150,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023e7c5d7d4cb4d078552":{"id":"657023e7c5d7d4cb4d078552","name":".357 Magnum JHP ammo pack (25 pcs)","value":2.12,"costPerSlot":4125,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023eccfc010a0f50069ef":{"id":"657023eccfc010a0f50069ef","name":".357 Magnum SP ammo pack (25 pcs)","value":0.5950000000000002,"costPerSlot":2600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023f1bfc87b3a34093210":{"id":"657023f1bfc87b3a34093210","name":".366 TKM FMJ ammo pack (20 pcs)","value":0.31499999999999995,"costPerSlot":2320,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023f81419851aef03e6f1":{"id":"657023f81419851aef03e6f1","name":".366 TKM AP-M ammo pack (20 pcs)","value":12.395,"costPerSlot":14400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657023fcbfc87b3a34093213":{"id":"657023fcbfc87b3a34093213","name":".366 TKM Geksa ammo pack (20 pcs)","value":-0.5049999999999999,"costPerSlot":1500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024011419851aef03e6f4":{"id":"657024011419851aef03e6f4","name":".366 TKM EKO ammo pack (20 pcs)","value":1.6750000000000003,"costPerSlot":3680,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702406bfc87b3a34093216":{"id":"65702406bfc87b3a34093216","name":".45 ACP Hydra-Shok ammo pack (50 pcs)","value":14.745000000000001,"costPerSlot":16750,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570240a1419851aef03e6f7":{"id":"6570240a1419851aef03e6f7","name":".45 ACP Lasermatch FMJ ammo pack (50 pcs)","value":7.844999999999999,"costPerSlot":9850,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570240ecfc010a0f50069f2":{"id":"6570240ecfc010a0f50069f2","name":".45 ACP Match FMJ ammo pack (50 pcs)","value":9.295,"costPerSlot":11300,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702414c5d7d4cb4d078555":{"id":"65702414c5d7d4cb4d078555","name":".45 ACP RIP ammo pack (50 pcs)","value":35.245,"costPerSlot":37250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570241bcfc010a0f50069f5":{"id":"6570241bcfc010a0f50069f5","name":"12.7x55mm PS12 ammo pack (10 pcs)","value":2.9850000000000003,"costPerSlot":4990,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702420bfc87b3a34093219":{"id":"65702420bfc87b3a34093219","name":"12.7x55mm PS12A ammo pack (10 pcs)","value":2.0550000000000006,"costPerSlot":4060,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702426cfc010a0f50069f8":{"id":"65702426cfc010a0f50069f8","name":"12/70 5.25mm buckshot ammo pack (25 pcs)","value":-1.005,"costPerSlot":1000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702432bfc87b3a3409321c":{"id":"65702432bfc87b3a3409321c","name":"12/70 6.5mm Express buckshot ammo pack (25 pcs)","value":0.14500000000000002,"costPerSlot":2150,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024361419851aef03e6fa":{"id":"657024361419851aef03e6fa","name":"12/70 7mm buckshot ammo pack (25 pcs)","value":-0.4049999999999998,"costPerSlot":1600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570243bbfc87b3a3409321f":{"id":"6570243bbfc87b3a3409321f","name":"12/70 8.5mm Magnum buckshot ammo pack (25 pcs)","value":4.945,"costPerSlot":6950,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570243fcfc010a0f50069fb":{"id":"6570243fcfc010a0f50069fb","name":"12/70 Dual Sabot slug ammo pack (25 pcs)","value":-0.2799999999999998,"costPerSlot":1725,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024431419851aef03e6fd":{"id":"657024431419851aef03e6fd","name":"12/70 Piranha ammo pack (25 pcs)","value":5.0200000000000005,"costPerSlot":7025,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702449bfc87b3a34093223":{"id":"65702449bfc87b3a34093223","name":"12/70 FTX Custom Lite slug ammo pack (25 pcs)","value":2.9700000000000006,"costPerSlot":4975,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570244ec5d7d4cb4d078558":{"id":"6570244ec5d7d4cb4d078558","name":"12/70 Grizzly 40 slug ammo pack (25 pcs)","value":0.7200000000000002,"costPerSlot":2725,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702452cfc010a0f50069fe":{"id":"65702452cfc010a0f50069fe","name":"12/70 Poleva-3 slug ammo pack (25 pcs)","value":-0.7299999999999998,"costPerSlot":1275,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024581419851aef03e700":{"id":"657024581419851aef03e700","name":"12/70 Poleva-6u slug ammo pack (25 pcs)","value":-0.30499999999999994,"costPerSlot":1700,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702469c5d7d4cb4d07855b":{"id":"65702469c5d7d4cb4d07855b","name":"12/70 makeshift .50 BMG slug ammo pack (25 pcs)","value":11.344999999999999,"costPerSlot":13350,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570246fcfc010a0f5006a01":{"id":"6570246fcfc010a0f5006a01","name":"12/70 lead slug ammo pack (25 pcs)","value":2.0949999999999998,"costPerSlot":4100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702474bfc87b3a34093226":{"id":"65702474bfc87b3a34093226","name":"12/70 flechette ammo pack (25 pcs)","value":12.445,"costPerSlot":14450,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702479c5d7d4cb4d07855e":{"id":"65702479c5d7d4cb4d07855e","name":"12/70 Copper Sabot Premier HP slug ammo pack (25 pcs)","value":0.04499999999999993,"costPerSlot":2050,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570247ebfc87b3a34093229":{"id":"6570247ebfc87b3a34093229","name":"12/70 SuperFormance HP slug ammo pack (25 pcs)","value":14.495000000000001,"costPerSlot":16500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024831419851aef03e703":{"id":"657024831419851aef03e703","name":"20/70 5.6mm buckshot ammo pack (25 pcs)","value":-1.005,"costPerSlot":1000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570248dcfc010a0f5006a04":{"id":"6570248dcfc010a0f5006a04","name":"20/70 6.2mm buckshot ammo pack (25 pcs)","value":-1.005,"costPerSlot":1000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024921419851aef03e706":{"id":"657024921419851aef03e706","name":"20/70 7.3mm buckshot ammo pack (25 pcs)","value":-0.7549999999999999,"costPerSlot":1250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702495c5d7d4cb4d078561":{"id":"65702495c5d7d4cb4d078561","name":"20/70 7.5mm buckshot ammo pack (25 pcs)","value":-1.005,"costPerSlot":1000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570249bcfc010a0f5006a07":{"id":"6570249bcfc010a0f5006a07","name":"20/70 Devastator slug ammo pack (25 pcs)","value":1.27,"costPerSlot":3275,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570249f1419851aef03e709":{"id":"6570249f1419851aef03e709","name":"20/70 Star slug ammo pack (25 pcs)","value":-0.1549999999999998,"costPerSlot":1850,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024a4bfc87b3a3409322c":{"id":"657024a4bfc87b3a3409322c","name":"20/70 Poleva-3 slug ammo pack (25 pcs)","value":-0.7549999999999999,"costPerSlot":1250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024a91419851aef03e70c":{"id":"657024a91419851aef03e70c","name":"20/70 Poleva-6u slug ammo pack (25 pcs)","value":-0.4049999999999998,"costPerSlot":1600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024aebfc87b3a3409322f":{"id":"657024aebfc87b3a3409322f","name":"23x75mm Shrapnel-10 buckshot ammo pack (5 pcs)","value":-2.7649999999999997,"costPerSlot":1240,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"657024b31419851aef03e70f":{"id":"657024b31419851aef03e70f","name":"23x75mm Shrapnel-25 buckshot ammo pack (5 pcs)","value":-3.4725,"costPerSlot":532.5,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"657024b8bfc87b3a34093232":{"id":"657024b8bfc87b3a34093232","name":"23x75mm Barrikada slug ammo pack (5 pcs)","value":-2.945,"costPerSlot":1060,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"657024bdc5d7d4cb4d078564":{"id":"657024bdc5d7d4cb4d078564","name":"23x75mm Zvezda flashbang round ammo pack (5 pcs)","value":-1.5549999999999997,"costPerSlot":2450,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"657024c81419851aef03e712":{"id":"657024c81419851aef03e712","name":"4.6x30mm Action SX ammo pack (40 pcs)","value":0.9950000000000001,"costPerSlot":3000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024cecfc010a0f5006a0a":{"id":"657024cecfc010a0f5006a0a","name":"4.6x30mm FMJ SX ammo pack (40 pcs)","value":34.955,"costPerSlot":36960,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024d2bfc87b3a34093235":{"id":"657024d2bfc87b3a34093235","name":"4.6x30mm Subsonic SX ammo pack (40 pcs)","value":4.595000000000001,"costPerSlot":6600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024d8c5d7d4cb4d078567":{"id":"657024d8c5d7d4cb4d078567","name":"5.56x45mm FMJ ammo pack (50 pcs)","value":8.245,"costPerSlot":10250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024debfc87b3a34093238":{"id":"657024debfc87b3a34093238","name":"5.56x45mm HP ammo pack (50 pcs)","value":0.4950000000000001,"costPerSlot":2500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024e3c5d7d4cb4d07856a":{"id":"657024e3c5d7d4cb4d07856a","name":"5.56x45mm M855A1 ammo pack (50 pcs)","value":33.495,"costPerSlot":35500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024e8cfc010a0f5006a0d":{"id":"657024e8cfc010a0f5006a0d","name":"5.56x45mm M856 ammo pack (50 pcs)","value":6.844999999999999,"costPerSlot":8850,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024ecc5d7d4cb4d07856d":{"id":"657024ecc5d7d4cb4d07856d","name":"5.56x45mm M856A1 ammo pack (50 pcs)","value":47.545,"costPerSlot":49550,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024f01419851aef03e715":{"id":"657024f01419851aef03e715","name":"5.56x45mm M995 ammo pack (50 pcs)","value":59.495,"costPerSlot":61500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024f5cfc010a0f5006a10":{"id":"657024f5cfc010a0f5006a10","name":"5.56x45mm MK 255 Mod 0 (RRLP) ammo pack (50 pcs)","value":3.245,"costPerSlot":5250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657024f9bfc87b3a3409323b":{"id":"657024f9bfc87b3a3409323b","name":"5.56x45mm MK 318 Mod 0 (SOST) ammo pack (50 pcs)","value":27.545,"costPerSlot":29550,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025161419851aef03e718":{"id":"657025161419851aef03e718","name":"5.7x28mm L191 ammo pack (50 pcs)","value":24.045,"costPerSlot":26050,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570251ccfc010a0f5006a13":{"id":"6570251ccfc010a0f5006a13","name":"5.7x28mm R37.F ammo pack (50 pcs)","value":19.195,"costPerSlot":21200,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702520bfc87b3a3409323e":{"id":"65702520bfc87b3a3409323e","name":"5.7x28mm R37.X ammo pack (50 pcs)","value":14.795000000000002,"costPerSlot":16800,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702524cfc010a0f5006a16":{"id":"65702524cfc010a0f5006a16","name":"5.7x28mm SB193 ammo pack (50 pcs)","value":11.495,"costPerSlot":13500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025281419851aef03e71b":{"id":"657025281419851aef03e71b","name":"5.7x28mm SS197SR ammo pack (50 pcs)","value":15.195,"costPerSlot":17200,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570252dbfc87b3a34093241":{"id":"6570252dbfc87b3a34093241","name":"5.7x28mm SS198LF ammo pack (50 pcs)","value":9.245,"costPerSlot":11250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702532cfc010a0f5006a19":{"id":"65702532cfc010a0f5006a19","name":"7.62x25mm ТТ FMJ43 ammo pack (25 pcs)","value":-0.22999999999999976,"costPerSlot":1775,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702536c5d7d4cb4d078570":{"id":"65702536c5d7d4cb4d078570","name":"7.62x25mm ТТ LRN ammo pack (25 pcs)","value":-0.8049999999999999,"costPerSlot":1200,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570253acfc010a0f5006a1c":{"id":"6570253acfc010a0f5006a1c","name":"7.62x25mm ТТ LRNPC ammo pack (25 pcs)","value":-0.30499999999999994,"costPerSlot":1700,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570253ec5d7d4cb4d078573":{"id":"6570253ec5d7d4cb4d078573","name":"7.62x25mm TT AKBS ammo pack (25 pcs)","value":-0.6549999999999998,"costPerSlot":1350,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025421419851aef03e71e":{"id":"657025421419851aef03e71e","name":"7.62x25mm TT P gl ammo pack (25 pcs)","value":-0.6799999999999999,"costPerSlot":1325,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702546cfc010a0f5006a1f":{"id":"65702546cfc010a0f5006a1f","name":"7.62x25mm TT Pst gzh ammo pack (25 pcs)","value":1.895,"costPerSlot":3900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570254abfc87b3a34093244":{"id":"6570254abfc87b3a34093244","name":"7.62x25mm TT PT gzh ammo pack (25 pcs)","value":-0.42999999999999994,"costPerSlot":1575,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570254fcfc010a0f5006a22":{"id":"6570254fcfc010a0f5006a22","name":"7.62x51mm M61 ammo pack (20 pcs)","value":22.795,"costPerSlot":24800,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702554bfc87b3a34093247":{"id":"65702554bfc87b3a34093247","name":"7.62x51mm M62 Tracer ammo pack (20 pcs)","value":9.995,"costPerSlot":12000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702558cfc010a0f5006a25":{"id":"65702558cfc010a0f5006a25","name":"7.62x51mm M80 ammo pack (20 pcs)","value":6.395,"costPerSlot":8400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570255dbfc87b3a3409324a":{"id":"6570255dbfc87b3a3409324a","name":"7.62x51mm Ultra Nosler ammo pack (20 pcs)","value":2.9750000000000005,"costPerSlot":4980,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702561cfc010a0f5006a28":{"id":"65702561cfc010a0f5006a28","name":"7.62x51mm BCP FMJ ammo pack (20 pcs)","value":8.135,"costPerSlot":10140,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702566bfc87b3a3409324d":{"id":"65702566bfc87b3a3409324d","name":"7.62x51mm TCW SP ammo pack (20 pcs)","value":3.915,"costPerSlot":5920,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702572c5d7d4cb4d078576":{"id":"65702572c5d7d4cb4d078576","name":"7.62x54mm R BT gzh ammo pack (20 pcs)","value":21.595000000000002,"costPerSlot":23600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702577cfc010a0f5006a2c":{"id":"65702577cfc010a0f5006a2c","name":"7.62x54mm R LPS gzh ammo pack (20 pcs)","value":25.575000000000003,"costPerSlot":27580,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570257cc5d7d4cb4d078579":{"id":"6570257cc5d7d4cb4d078579","name":"7.62x54mm R PS gzh ammo pack (20 pcs)","value":16.395000000000003,"costPerSlot":18400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702584cfc010a0f5006a2f":{"id":"65702584cfc010a0f5006a2f","name":"7.62x54mm R T-46M gzh ammo pack (20 pcs)","value":7.734999999999999,"costPerSlot":9740,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702591c5d7d4cb4d07857c":{"id":"65702591c5d7d4cb4d07857c","name":"9x19mm AP 6.3 ammo pack (50 pcs)","value":23.145000000000003,"costPerSlot":25150,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025961419851aef03e721":{"id":"657025961419851aef03e721","name":"9x19mm Green Tracer ammo pack (50 pcs)","value":1.2950000000000004,"costPerSlot":3300,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570259bc5d7d4cb4d07857f":{"id":"6570259bc5d7d4cb4d07857f","name":"9x19mm Luger CCI ammo pack (50 pcs)","value":11.344999999999999,"costPerSlot":13350,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570259fcfc010a0f5006a32":{"id":"6570259fcfc010a0f5006a32","name":"9x19mm QuakeMaker ammo pack (50 pcs)","value":25.545,"costPerSlot":27550,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025a4bfc87b3a34093250":{"id":"657025a4bfc87b3a34093250","name":"9x19mm PSO gzh ammo pack (50 pcs)","value":2.9450000000000003,"costPerSlot":4950,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025a81419851aef03e724":{"id":"657025a81419851aef03e724","name":"9x19mm Pst gzh ammo pack (50 pcs)","value":2.795,"costPerSlot":4800,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025bbcfc010a0f5006a35":{"id":"657025bbcfc010a0f5006a35","name":"9x21mm P gzh ammo pack (30 pcs)","value":3.425,"costPerSlot":5430,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025c4c5d7d4cb4d078582":{"id":"657025c4c5d7d4cb4d078582","name":"9x21mm PS gzh ammo pack (30 pcs)","value":8.045,"costPerSlot":10050,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025c9cfc010a0f5006a38":{"id":"657025c9cfc010a0f5006a38","name":"9x21mm PE gzh ammo pack (30 pcs)","value":0.875,"costPerSlot":2880,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025cfbfc87b3a34093253":{"id":"657025cfbfc87b3a34093253","name":"9x39mm PAB-9 gs ammo pack (20 pcs)","value":11.395,"costPerSlot":13400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025d4c5d7d4cb4d078585":{"id":"657025d4c5d7d4cb4d078585","name":"9x39mm SP-5 gs ammo pack (20 pcs)","value":3.455,"costPerSlot":5460,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025dabfc87b3a34093256":{"id":"657025dabfc87b3a34093256","name":"9x39mm SP-6 gs ammo pack (20 pcs)","value":16.395000000000003,"costPerSlot":18400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025dfcfc010a0f5006a3b":{"id":"657025dfcfc010a0f5006a3b","name":"9x39mm SPP gs ammo pack (20 pcs)","value":9.735,"costPerSlot":11740,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657025ebc5d7d4cb4d078588":{"id":"657025ebc5d7d4cb4d078588","name":"5.45x39mm PPBS gs Igolnik ammo pack (120 pcs)","value":70.39500000000001,"costPerSlot":74400,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65702606cfc010a0f5006a3e":{"id":"65702606cfc010a0f5006a3e","name":"9x18mm PM BZhT gzh ammo pack (50 pcs)","value":1.495,"costPerSlot":3500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570260c1419851aef03e727":{"id":"6570260c1419851aef03e727","name":"9x18mm PM P gzh ammo pack (50 pcs)","value":0.5950000000000002,"costPerSlot":2600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702610cfc010a0f5006a41":{"id":"65702610cfc010a0f5006a41","name":"9x18mm PM PBM gzh ammo pack (50 pcs)","value":11.594999999999999,"costPerSlot":13600,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702614c5d7d4cb4d07858b":{"id":"65702614c5d7d4cb4d07858b","name":"9x18mm PM PPT gzh ammo pack (50 pcs)","value":3.1450000000000005,"costPerSlot":5150,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702619bfc87b3a34093259":{"id":"65702619bfc87b3a34093259","name":"9x18mm PM PPe gzh ammo pack (50 pcs)","value":0.5450000000000004,"costPerSlot":2550,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570261dc5d7d4cb4d07858e":{"id":"6570261dc5d7d4cb4d07858e","name":"9x18mm PM PRS gs ammo pack (50 pcs)","value":-0.05499999999999994,"costPerSlot":1950,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702621cfc010a0f5006a44":{"id":"65702621cfc010a0f5006a44","name":"9x18mm PM PS gs PPO ammo pack (50 pcs)","value":0.0950000000000002,"costPerSlot":2100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657026251419851aef03e72a":{"id":"657026251419851aef03e72a","name":"9x18mm PM PSV ammo pack (50 pcs)","value":1.645,"costPerSlot":3650,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702629cfc010a0f5006a47":{"id":"65702629cfc010a0f5006a47","name":"9x18mm PM PSO gzh ammo pack (50 pcs)","value":-0.9049999999999998,"costPerSlot":1100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6570262d1419851aef03e72d":{"id":"6570262d1419851aef03e72d","name":"9x18mm PM Pst gzh ammo pack (50 pcs)","value":0.2450000000000001,"costPerSlot":2250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702630cfc010a0f5006a4a":{"id":"65702630cfc010a0f5006a4a","name":"9x18mm PM RG028 gzh ammo pack (50 pcs)","value":2.8950000000000005,"costPerSlot":4900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657026341419851aef03e730":{"id":"657026341419851aef03e730","name":"9x18mm PM SP7 gzh ammo pack (50 pcs)","value":14.245000000000001,"costPerSlot":16250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702639bfc87b3a3409325c":{"id":"65702639bfc87b3a3409325c","name":"9x18mm PM SP8 gzh ammo pack (50 pcs)","value":7.895,"costPerSlot":9900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65702640cfc010a0f5006a4d":{"id":"65702640cfc010a0f5006a4d","name":"9x18mm PMM PstM gzh ammo pack (50 pcs)","value":4.245,"costPerSlot":6250,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657026451419851aef03e733":{"id":"657026451419851aef03e733","name":"5.56x45mm FMJ ammo pack (100 pcs)","value":6.244999999999999,"costPerSlot":10250,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6570264acfc010a0f5006a50":{"id":"6570264acfc010a0f5006a50","name":"5.56x45mm HP ammo pack (100 pcs)","value":-1.505,"costPerSlot":2500,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6570264d1419851aef03e736":{"id":"6570264d1419851aef03e736","name":"5.56x45mm M855 ammo pack (100 pcs)","value":18.195,"costPerSlot":22200,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65702652cfc010a0f5006a53":{"id":"65702652cfc010a0f5006a53","name":"5.56x45mm M855A1 ammo pack (100 pcs)","value":31.494999999999997,"costPerSlot":35500,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65702656c5d7d4cb4d078591":{"id":"65702656c5d7d4cb4d078591","name":"5.56x45mm M856 ammo pack (100 pcs)","value":4.844999999999999,"costPerSlot":8850,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6570265bcfc010a0f5006a56":{"id":"6570265bcfc010a0f5006a56","name":"5.56x45mm M856A1 ammo pack (100 pcs)","value":45.545,"costPerSlot":49550,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6570265f1419851aef03e739":{"id":"6570265f1419851aef03e739","name":"5.56x45mm M995 ammo pack (100 pcs)","value":57.495,"costPerSlot":61500,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65702664cfc010a0f5006a59":{"id":"65702664cfc010a0f5006a59","name":"5.56x45mm MK 255 Mod 0 (RRLP) ammo pack (100 pcs)","value":1.245,"costPerSlot":5250,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6570266bc5d7d4cb4d078594":{"id":"6570266bc5d7d4cb4d078594","name":"5.56x45mm MK 318 Mod 0 (SOST) ammo pack (100 pcs)","value":25.545,"costPerSlot":29550,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65702681bfc87b3a3409325f":{"id":"65702681bfc87b3a3409325f","name":"5.56x45mm SSA AP ammo pack (100 pcs)","value":72.245,"costPerSlot":76250,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65702f87722744627e05cdb8":{"id":"65702f87722744627e05cdb8","name":"Aramid insert","value":26.313000000000002,"costPerSlot":8313,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65702fe593b7ea9c330f4ce8":{"id":"65702fe593b7ea9c330f4ce8","name":"Aramid insert","value":26.313000000000002,"costPerSlot":8313,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570305d93b7ea9c330f4ced":{"id":"6570305d93b7ea9c330f4ced","name":"Aramid insert","value":19.877,"costPerSlot":1877,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65703472c9030b928a0a8a78":{"id":"65703472c9030b928a0a8a78","name":"Aramid insert","value":19.877,"costPerSlot":1877,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65703d866584602f7d057a8a":{"id":"65703d866584602f7d057a8a","name":"Aramid insert","value":28.177,"costPerSlot":10177,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65703fa06584602f7d057a8e":{"id":"65703fa06584602f7d057a8e","name":"Aramid insert","value":28.177,"costPerSlot":10177,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65703fe46a912c8b5c03468b":{"id":"65703fe46a912c8b5c03468b","name":"Aramid insert","value":20.298000000000002,"costPerSlot":2298,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657040374e67e8ec7a0d261c":{"id":"657040374e67e8ec7a0d261c","name":"Aramid insert","value":20.298000000000002,"costPerSlot":2298,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657044e971369562b300ce9b":{"id":"657044e971369562b300ce9b","name":"Aluminum insert","value":41.262,"costPerSlot":13262,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657045741bd9beedc40b7299":{"id":"657045741bd9beedc40b7299","name":"Aluminum insert","value":41.262,"costPerSlot":13262,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657045b97e80617cee095bda":{"id":"657045b97e80617cee095bda","name":"Aluminum insert","value":30.995,"costPerSlot":2995,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570460471369562b300ce9f":{"id":"6570460471369562b300ce9f","name":"Aluminum insert","value":30.995,"costPerSlot":2995,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570495b45d573133d0d6adb":{"id":"6570495b45d573133d0d6adb","name":"Armor steel insert","value":48.54,"costPerSlot":20540,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657049d23425b19bbc0502f0":{"id":"657049d23425b19bbc0502f0","name":"Armor steel insert","value":48.54,"costPerSlot":20540,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65704de13e7bba58ea0285c8":{"id":"65704de13e7bba58ea0285c8","name":"Aramid insert","value":25.528,"costPerSlot":7528,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65705c3c14f2ed6d7d0b7738":{"id":"65705c3c14f2ed6d7d0b7738","name":"Aramid insert","value":25.528,"costPerSlot":7528,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65705c777260e1139e091408":{"id":"65705c777260e1139e091408","name":"Aramid insert","value":19.45,"costPerSlot":1450,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65705cb314f2ed6d7d0b773c":{"id":"65705cb314f2ed6d7d0b773c","name":"Aramid insert","value":19.45,"costPerSlot":1450,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65705cea4916448ae1050897":{"id":"65705cea4916448ae1050897","name":"Aramid insert","value":19.726,"costPerSlot":1726,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570653e89fd4926380b733e":{"id":"6570653e89fd4926380b733e","name":"Aramid insert","value":26.682000000000002,"costPerSlot":8682,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570658a89fd4926380b7346":{"id":"6570658a89fd4926380b7346","name":"Aramid insert","value":26.682000000000002,"costPerSlot":8682,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65707fc348c7a887f2010432":{"id":"65707fc348c7a887f2010432","name":"Aramid insert","value":29.349,"costPerSlot":11349,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570800612755ae0d907acf8":{"id":"6570800612755ae0d907acf8","name":"Aramid insert","value":29.349,"costPerSlot":11349,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65708070f65e2491bf00972c":{"id":"65708070f65e2491bf00972c","name":"Aramid insert","value":19.536,"costPerSlot":1536,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657080a212755ae0d907ad04":{"id":"657080a212755ae0d907ad04","name":"Aramid insert","value":19.536,"costPerSlot":1536,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657080ca12755ae0d907ad5e":{"id":"657080ca12755ae0d907ad5e","name":"Aramid insert","value":20.874,"costPerSlot":2874,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65708122f65e2491bf009755":{"id":"65708122f65e2491bf009755","name":"Aramid insert","value":19.982,"costPerSlot":1982,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65708165696fe382cf073255":{"id":"65708165696fe382cf073255","name":"Aramid insert","value":20.428,"costPerSlot":2428,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657087577f6d4590ac0d2109":{"id":"657087577f6d4590ac0d2109","name":"13 mm aramid insert and ceramic plates","value":60.528999999999996,"costPerSlot":22529,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"6570880f4a747dbb63005ee5":{"id":"6570880f4a747dbb63005ee5","name":"13 mm aramid insert and ceramic plates","value":58.415,"costPerSlot":20415,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657089638db3adca1009f4ca":{"id":"657089638db3adca1009f4ca","name":"Atomic Defense CQCM ballistic mask (Black)","value":112.75200000000001,"costPerSlot":74802,"weight":2.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":5},"65708afe4a747dbb63005eee":{"id":"65708afe4a747dbb63005eee","name":"Aramid insert","value":22.559,"costPerSlot":4559,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65708b4c4a747dbb63005ef3":{"id":"65708b4c4a747dbb63005ef3","name":"13 mm aramid insert and ceramic plates","value":45.730000000000004,"costPerSlot":7730,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"6570900858b315e8b70a8a98":{"id":"6570900858b315e8b70a8a98","name":"5.45x39mm 7N40 ammo pack (120 pcs)","value":49.995,"costPerSlot":54000,"weight":0.01,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65709d2d21b9f815e208ff95":{"id":"65709d2d21b9f815e208ff95","name":"Diamond Age NeoSteel High Cut helmet (Black)","value":2.4680000000000004,"costPerSlot":4068,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"6570a88c8f221f3b210353b7":{"id":"6570a88c8f221f3b210353b7","name":"Diamond Age NeoSteel helmet ballistic mandible","value":56.5135,"costPerSlot":33113.5,"weight":1.2,"size":4,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"6570aead4d84f81fd002a033":{"id":"6570aead4d84f81fd002a033","name":"Death Shadow lightweight armored mask","value":71.005,"costPerSlot":52130,"weight":0.25,"size":4,"gridSize":0,"maxDim":2,"armorClass":2,"parentWeighting":5},"6570df294cc0d2ab1e05ed74":{"id":"6570df294cc0d2ab1e05ed74","name":"Aramid insert","value":41.295,"costPerSlot":23295,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570df9c615f54368b04fca9":{"id":"6570df9c615f54368b04fca9","name":"Aramid insert","value":41.295,"costPerSlot":23295,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570e025615f54368b04fcb0":{"id":"6570e025615f54368b04fcb0","name":"Aramid insert","value":63.986000000000004,"costPerSlot":35986,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570e0610b57c03ec90b96ef":{"id":"6570e0610b57c03ec90b96ef","name":"Aramid insert","value":63.986000000000004,"costPerSlot":35986,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570e479a6560e4ee50c2b02":{"id":"6570e479a6560e4ee50c2b02","name":"Aramid insert","value":40.54,"costPerSlot":22540,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570e5100b57c03ec90b970a":{"id":"6570e5100b57c03ec90b970a","name":"Aramid insert","value":40.54,"costPerSlot":22540,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570e5674cc0d2ab1e05edbb":{"id":"6570e5674cc0d2ab1e05edbb","name":"Aramid insert","value":24.301000000000002,"costPerSlot":6301,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570e59b0b57c03ec90b970e":{"id":"6570e59b0b57c03ec90b970e","name":"Aramid insert","value":24.301000000000002,"costPerSlot":6301,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570e83223c1f638ef0b0ede":{"id":"6570e83223c1f638ef0b0ede","name":"Aramid insert","value":49.009,"costPerSlot":21009,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570e87c23c1f638ef0b0ee2":{"id":"6570e87c23c1f638ef0b0ee2","name":"Aramid insert","value":49.009,"costPerSlot":21009,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570e8a623c1f638ef0b0ee6":{"id":"6570e8a623c1f638ef0b0ee6","name":"Aramid insert","value":32.439,"costPerSlot":4439,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570e8e7ab49e964120b4563":{"id":"6570e8e7ab49e964120b4563","name":"Aramid insert","value":32.439,"costPerSlot":4439,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570e90b3a5689d85f08db97":{"id":"6570e90b3a5689d85f08db97","name":"Aramid insert","value":41.68,"costPerSlot":13680,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570f30b0921c914bf07964c":{"id":"6570f30b0921c914bf07964c","name":"Aramid insert","value":28.707,"costPerSlot":10707,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570f35cd67d0309980a7acb":{"id":"6570f35cd67d0309980a7acb","name":"Aramid insert","value":28.707,"costPerSlot":10707,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570f3890b4ae5847f060dad":{"id":"6570f3890b4ae5847f060dad","name":"Aramid insert","value":21.777,"costPerSlot":3777,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570f3bb0b4ae5847f060db2":{"id":"6570f3bb0b4ae5847f060db2","name":"Aramid insert","value":21.777,"costPerSlot":3777,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570f6e774d84423df065f21":{"id":"6570f6e774d84423df065f21","name":"Aramid insert","value":44.718,"costPerSlot":16718,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570f71dd67d0309980a7af8":{"id":"6570f71dd67d0309980a7af8","name":"Aramid insert","value":44.718,"costPerSlot":16718,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570f74774d84423df065f25":{"id":"6570f74774d84423df065f25","name":"Aramid insert","value":30.93,"costPerSlot":2930,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570f79c4c65ab77a6015121":{"id":"6570f79c4c65ab77a6015121","name":"Aramid insert","value":30.93,"costPerSlot":2930,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6570fa1f4c65ab77a601512f":{"id":"6570fa1f4c65ab77a601512f","name":"Aramid insert","value":31.070999999999998,"costPerSlot":13071,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570fae34c65ab77a6015146":{"id":"6570fae34c65ab77a6015146","name":"Aramid insert","value":31.070999999999998,"costPerSlot":13071,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570fb22584a51c23e03251f":{"id":"6570fb22584a51c23e03251f","name":"Aramid insert","value":22.868000000000002,"costPerSlot":4868,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570fb6ad3eefd23430f8c7c":{"id":"6570fb6ad3eefd23430f8c7c","name":"Aramid insert","value":22.868000000000002,"costPerSlot":4868,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570fb8f4c65ab77a601514d":{"id":"6570fb8f4c65ab77a601514d","name":"Aramid insert","value":20.631,"costPerSlot":2631,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570fbdd74d84423df065f60":{"id":"6570fbdd74d84423df065f60","name":"Aramid insert","value":22.123,"costPerSlot":4123,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6570fc41d3eefd23430f8c83":{"id":"6570fc41d3eefd23430f8c83","name":"Aramid insert","value":22.123,"costPerSlot":4123,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657112234269e9a568089eac":{"id":"657112234269e9a568089eac","name":"Layer of UHMWPE","value":65.685,"costPerSlot":27685,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657112a4818110db4600aa66":{"id":"657112a4818110db4600aa66","name":"Layer of UHMWPE","value":65.685,"costPerSlot":27685,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657112ce22996eaf110881fb":{"id":"657112ce22996eaf110881fb","name":"Layer of UHMWPE","value":65.685,"costPerSlot":27685,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657112fa818110db4600aa6b":{"id":"657112fa818110db4600aa6b","name":"Armor steel","value":57.675,"costPerSlot":19675,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"6571133d22996eaf11088200":{"id":"6571133d22996eaf11088200","name":"Armor steel","value":57.675,"costPerSlot":19675,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"6571138e818110db4600aa71":{"id":"6571138e818110db4600aa71","name":"Armor steel","value":57.675,"costPerSlot":19675,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"6571199565daf6aa960c9b10":{"id":"6571199565daf6aa960c9b10","name":"Armor steel","value":36.297,"costPerSlot":8297,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657119d49eb8c145180dbb95":{"id":"657119d49eb8c145180dbb95","name":"Armor steel","value":36.297,"costPerSlot":8297,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657119fea330b8c9060f7afc":{"id":"657119fea330b8c9060f7afc","name":"Armor steel","value":36.297,"costPerSlot":8297,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65711b07a330b8c9060f7b01":{"id":"65711b07a330b8c9060f7b01","name":"Hybrid composite materials","value":51.194,"costPerSlot":13194,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"65711b489eb8c145180dbb9d":{"id":"65711b489eb8c145180dbb9d","name":"Hybrid composite materials","value":51.194,"costPerSlot":13194,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"65711b706d197c216005b31c":{"id":"65711b706d197c216005b31c","name":"Hybrid composite materials","value":51.194,"costPerSlot":13194,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"65711b9b65daf6aa960c9b1b":{"id":"65711b9b65daf6aa960c9b1b","name":"Hybrid composite materials","value":51.194,"costPerSlot":13194,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"65711bc79eb8c145180dbba1":{"id":"65711bc79eb8c145180dbba1","name":"Hybrid composite materials","value":51.194,"costPerSlot":13194,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"65719f0775149d62ce0a670b":{"id":"65719f0775149d62ce0a670b","name":"NPP KlASS Tor-2 helmet (Olive Drab)","value":0.915,"costPerSlot":3115,"weight":2.4,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"65719f9ef392ad76c50a2ec8":{"id":"65719f9ef392ad76c50a2ec8","name":"NPP KlASS Tor-2 helmet face shield","value":41.445,"costPerSlot":16020,"weight":1.15,"size":2,"gridSize":0,"maxDim":2,"armorClass":3,"parentWeighting":0},"6571b27a6d84a2b8b6007f92":{"id":"6571b27a6d84a2b8b6007f92","name":"Aramid insert","value":26.18,"costPerSlot":8180,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571baa74cb80d995d0a1490":{"id":"6571baa74cb80d995d0a1490","name":"Aramid insert","value":26.18,"costPerSlot":8180,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571baac6d84a2b8b6007fa3":{"id":"6571baac6d84a2b8b6007fa3","name":"Aramid insert","value":19.107,"costPerSlot":1107,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571bab0f41985531a038091":{"id":"6571bab0f41985531a038091","name":"Aramid insert","value":19.107,"costPerSlot":1107,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571babb4076795e5e07383f":{"id":"6571babb4076795e5e07383f","name":"Aramid insert","value":20.071,"costPerSlot":2071,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571babf4cb80d995d0a1494":{"id":"6571babf4cb80d995d0a1494","name":"Aramid insert","value":19.75,"costPerSlot":1750,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571bac34076795e5e073843":{"id":"6571bac34076795e5e073843","name":"Aramid insert","value":19.428,"costPerSlot":1428,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571bde39837cc51b800c212":{"id":"6571bde39837cc51b800c212","name":"Ghost half-mask","value":21.387,"costPerSlot":18437,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"6571dbd388ead79fcf091d71":{"id":"6571dbd388ead79fcf091d71","name":"Aramid insert","value":23.689,"costPerSlot":5689,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571dbda88ead79fcf091d75":{"id":"6571dbda88ead79fcf091d75","name":"Aramid insert","value":23.689,"costPerSlot":5689,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571dbe07c02ae206002502e":{"id":"6571dbe07c02ae206002502e","name":"Aramid insert","value":19.239,"costPerSlot":1239,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571dbeaee8ec43d520cf89e":{"id":"6571dbeaee8ec43d520cf89e","name":"Aramid insert","value":19.239,"costPerSlot":1239,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6571dbef88ead79fcf091d79":{"id":"6571dbef88ead79fcf091d79","name":"Aramid insert","value":19.239,"costPerSlot":1239,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572e048371fccfbf909d5d8":{"id":"6572e048371fccfbf909d5d8","name":"Aramid insert","value":49.623000000000005,"costPerSlot":21623,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572e059371fccfbf909d5dc":{"id":"6572e059371fccfbf909d5dc","name":"Aramid insert","value":49.623000000000005,"costPerSlot":21623,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572e06219b4b511af012f89":{"id":"6572e06219b4b511af012f89","name":"Aramid insert","value":32.883,"costPerSlot":4883,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572e06819b4b511af012f8d":{"id":"6572e06819b4b511af012f8d","name":"Aramid insert","value":32.883,"costPerSlot":4883,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572e5221b5bc1185508c24f":{"id":"6572e5221b5bc1185508c24f","name":"Aramid insert","value":36.994,"costPerSlot":8994,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572e52f73c0eabb700109a0":{"id":"6572e52f73c0eabb700109a0","name":"Aramid insert","value":36.994,"costPerSlot":8994,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572e53c73c0eabb700109a4":{"id":"6572e53c73c0eabb700109a4","name":"Aramid insert","value":31.402,"costPerSlot":3402,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572e54873c0eabb700109a8":{"id":"6572e54873c0eabb700109a8","name":"Aramid insert","value":31.402,"costPerSlot":3402,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6572eb0e55beba16bc04079f":{"id":"6572eb0e55beba16bc04079f","name":"Aramid insert","value":29.678,"costPerSlot":11678,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572eb1b04ee6483ef039882":{"id":"6572eb1b04ee6483ef039882","name":"Aramid insert","value":29.678,"costPerSlot":11678,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572eb3004ee6483ef039886":{"id":"6572eb3004ee6483ef039886","name":"Aramid insert","value":20.649,"costPerSlot":2649,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572eb3b04ee6483ef03988a":{"id":"6572eb3b04ee6483ef03988a","name":"Aramid insert","value":20.649,"costPerSlot":2649,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572eb865b5eac12f10a03ee":{"id":"6572eb865b5eac12f10a03ee","name":"Aramid insert","value":23.658,"costPerSlot":5658,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572f1ca4c8d903cc60c874e":{"id":"6572f1ca4c8d903cc60c874e","name":"Aramid insert","value":29.081,"costPerSlot":11081,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572f1d60103b4a3270332db":{"id":"6572f1d60103b4a3270332db","name":"Aramid insert","value":29.081,"costPerSlot":11081,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572f1e10103b4a3270332df":{"id":"6572f1e10103b4a3270332df","name":"Aramid insert","value":20.512999999999998,"costPerSlot":2513,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572f1edea457732140ce875":{"id":"6572f1edea457732140ce875","name":"Aramid insert","value":20.512999999999998,"costPerSlot":2513,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572f1f7ea457732140ce879":{"id":"6572f1f7ea457732140ce879","name":"Aramid insert","value":23.369,"costPerSlot":5369,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572fc809a866b80ab07eb59":{"id":"6572fc809a866b80ab07eb59","name":"Aramid insert","value":28.289,"costPerSlot":10289,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572fc8c9a866b80ab07eb5d":{"id":"6572fc8c9a866b80ab07eb5d","name":"Aramid insert","value":28.289,"costPerSlot":10289,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572fc989a866b80ab07eb61":{"id":"6572fc989a866b80ab07eb61","name":"Aramid insert","value":22.465,"costPerSlot":4465,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6572fca39a866b80ab07eb65":{"id":"6572fca39a866b80ab07eb65","name":"Aramid insert","value":22.465,"costPerSlot":4465,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65730c0e292ecadbfa09ad49":{"id":"65730c0e292ecadbfa09ad49","name":"Aramid insert","value":32.152,"costPerSlot":14152,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65730c2213a2f660f60bea96":{"id":"65730c2213a2f660f60bea96","name":"Aramid insert","value":32.152,"costPerSlot":14152,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65730c2b292ecadbfa09ad50":{"id":"65730c2b292ecadbfa09ad50","name":"Aramid insert","value":21.913,"costPerSlot":3913,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65730c35292ecadbfa09ad54":{"id":"65730c35292ecadbfa09ad54","name":"Aramid insert","value":21.913,"costPerSlot":3913,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6573101e292ecadbfa09b389":{"id":"6573101e292ecadbfa09b389","name":"Aramid insert","value":30.707,"costPerSlot":12707,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6573102b292ecadbfa09b38d":{"id":"6573102b292ecadbfa09b38d","name":"Aramid insert","value":30.707,"costPerSlot":12707,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731038292ecadbfa09b391":{"id":"65731038292ecadbfa09b391","name":"Aramid insert","value":21.329,"costPerSlot":3329,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731045f31d5be00e08a75a":{"id":"65731045f31d5be00e08a75a","name":"Aramid insert","value":21.329,"costPerSlot":3329,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731b46cea9255e2102360a":{"id":"65731b46cea9255e2102360a","name":"Aramid insert","value":32.675,"costPerSlot":14675,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731b4fcea9255e2102360e":{"id":"65731b4fcea9255e2102360e","name":"Aramid insert","value":32.675,"costPerSlot":14675,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731b576e709cddd001ec3f":{"id":"65731b576e709cddd001ec3f","name":"Aramid insert","value":23.233,"costPerSlot":5233,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731b60ff6dc44a7d068c4a":{"id":"65731b60ff6dc44a7d068c4a","name":"Aramid insert","value":23.233,"costPerSlot":5233,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731b666e709cddd001ec43":{"id":"65731b666e709cddd001ec43","name":"Aramid insert","value":21.345,"costPerSlot":3345,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731b6b6042b0f210020ef6":{"id":"65731b6b6042b0f210020ef6","name":"Aramid insert","value":25.122,"costPerSlot":7122,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65731b716e709cddd001ec47":{"id":"65731b716e709cddd001ec47","name":"Aramid insert","value":25.122,"costPerSlot":7122,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657322988c1cc6dcd9098b2d":{"id":"657322988c1cc6dcd9098b2d","name":"Aramid insert","value":53.171,"costPerSlot":25171,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657322a4cea9255e21023651":{"id":"657322a4cea9255e21023651","name":"Aramid insert","value":53.171,"costPerSlot":25171,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657322acd9d89ff7ac0d961b":{"id":"657322acd9d89ff7ac0d961b","name":"Aramid insert","value":36.879,"costPerSlot":8879,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657322b7d9d89ff7ac0d961f":{"id":"657322b7d9d89ff7ac0d961f","name":"Aramid insert","value":36.879,"costPerSlot":8879,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65732688d9d89ff7ac0d9c4c":{"id":"65732688d9d89ff7ac0d9c4c","name":"Aramid insert","value":54.204,"costPerSlot":26204,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657326978c1cc6dcd9098b56":{"id":"657326978c1cc6dcd9098b56","name":"Aramid insert","value":54.204,"costPerSlot":26204,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657326a28c1cc6dcd9098b5a":{"id":"657326a28c1cc6dcd9098b5a","name":"Aramid insert","value":33.995,"costPerSlot":5995,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657326b08c1cc6dcd9098b5e":{"id":"657326b08c1cc6dcd9098b5e","name":"Aramid insert","value":33.995,"costPerSlot":5995,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657326bc5d3a3129fb05f36b":{"id":"657326bc5d3a3129fb05f36b","name":"Aramid insert","value":33.995,"costPerSlot":5995,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65732de75d3a3129fb05f3dd":{"id":"65732de75d3a3129fb05f3dd","name":"Aramid insert","value":51.894999999999996,"costPerSlot":23895,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65732df4d0acf75aea06c87b":{"id":"65732df4d0acf75aea06c87b","name":"Aramid insert","value":51.894999999999996,"costPerSlot":23895,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65732e05d0acf75aea06c87f":{"id":"65732e05d0acf75aea06c87f","name":"Aramid insert","value":35.773,"costPerSlot":7773,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65732e0f6784ca384b0167ad":{"id":"65732e0f6784ca384b0167ad","name":"Aramid insert","value":35.773,"costPerSlot":7773,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65732e215d3a3129fb05f3e1":{"id":"65732e215d3a3129fb05f3e1","name":"Aramid insert","value":32.702,"costPerSlot":4702,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65732e30dd8739f6440ef383":{"id":"65732e30dd8739f6440ef383","name":"Aramid insert","value":36.541,"costPerSlot":8541,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65733312ca0ca984940a2d53":{"id":"65733312ca0ca984940a2d53","name":"Aramid insert","value":50.088,"costPerSlot":22088,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657333232cc8dfad2c0a3d97":{"id":"657333232cc8dfad2c0a3d97","name":"Aramid insert","value":50.088,"costPerSlot":22088,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657333302cc8dfad2c0a3d9b":{"id":"657333302cc8dfad2c0a3d9b","name":"Aramid insert","value":36.375,"costPerSlot":8375,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6573333eca0ca984940a2d57":{"id":"6573333eca0ca984940a2d57","name":"Aramid insert","value":36.375,"costPerSlot":8375,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6573334aca0ca984940a2d5b":{"id":"6573334aca0ca984940a2d5b","name":"Aramid insert","value":32.635,"costPerSlot":4635,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65733375b7a8d286530e3dd7":{"id":"65733375b7a8d286530e3dd7","name":"Aramid insert","value":35.128,"costPerSlot":7128,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6573337f2cc8dfad2c0a3da7":{"id":"6573337f2cc8dfad2c0a3da7","name":"Aramid insert","value":35.128,"costPerSlot":7128,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65749cb8e0423b9ebe0c79c9":{"id":"65749cb8e0423b9ebe0c79c9","name":"Gus baseball cap","value":62.11600000000001,"costPerSlot":59166,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"65749ccf33fdc9c0cf06d3ca":{"id":"65749ccf33fdc9c0cf06d3ca","name":"Basmach leather cap","value":35.574000000000005,"costPerSlot":32624,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"6575bc88c6700bd6b40e8a57":{"id":"6575bc88c6700bd6b40e8a57","name":"Aramid insert","value":62.389,"costPerSlot":34389,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575bca0dc9932aed601c5d7":{"id":"6575bca0dc9932aed601c5d7","name":"Aramid insert","value":62.389,"costPerSlot":34389,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c2adefc786cd9101a5d9":{"id":"6575c2adefc786cd9101a5d9","name":"Aramid insert","value":49.06,"costPerSlot":21060,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c2be52b7f8c76a05ee25":{"id":"6575c2be52b7f8c76a05ee25","name":"Aramid insert","value":49.06,"costPerSlot":21060,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c2cd52b7f8c76a05ee29":{"id":"6575c2cd52b7f8c76a05ee29","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c2d852b7f8c76a05ee2d":{"id":"6575c2d852b7f8c76a05ee2d","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c2e4efc786cd9101a5dd":{"id":"6575c2e4efc786cd9101a5dd","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c2f7efc786cd9101a5e1":{"id":"6575c2f7efc786cd9101a5e1","name":"Aramid insert","value":36.575,"costPerSlot":8575,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c30352b7f8c76a05ee31":{"id":"6575c30352b7f8c76a05ee31","name":"Aramid insert","value":36.575,"costPerSlot":8575,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c31b52b7f8c76a05ee35":{"id":"6575c31b52b7f8c76a05ee35","name":"Aramid insert","value":36.567,"costPerSlot":8567,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c326c6700bd6b40e8a80":{"id":"6575c326c6700bd6b40e8a80","name":"Aramid insert","value":33.235,"costPerSlot":5235,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c342efc786cd9101a5e5":{"id":"6575c342efc786cd9101a5e5","name":"Aramid insert","value":49.06,"costPerSlot":21060,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c34bc6700bd6b40e8a84":{"id":"6575c34bc6700bd6b40e8a84","name":"Aramid insert","value":49.06,"costPerSlot":21060,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c35bc6700bd6b40e8a88":{"id":"6575c35bc6700bd6b40e8a88","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c366c6700bd6b40e8a8c":{"id":"6575c366c6700bd6b40e8a8c","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c373dc9932aed601c5ec":{"id":"6575c373dc9932aed601c5ec","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c385dc9932aed601c5f0":{"id":"6575c385dc9932aed601c5f0","name":"Aramid insert","value":36.567,"costPerSlot":8567,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c390efc786cd9101a5e9":{"id":"6575c390efc786cd9101a5e9","name":"Aramid insert","value":33.235,"costPerSlot":5235,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c3b3dc9932aed601c5f4":{"id":"6575c3b3dc9932aed601c5f4","name":"Aramid insert","value":49.06,"costPerSlot":21060,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c3beefc786cd9101a5ed":{"id":"6575c3beefc786cd9101a5ed","name":"Aramid insert","value":49.06,"costPerSlot":21060,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c3cdc6700bd6b40e8a90":{"id":"6575c3cdc6700bd6b40e8a90","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c3dfdc9932aed601c5f8":{"id":"6575c3dfdc9932aed601c5f8","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c3ec52b7f8c76a05ee39":{"id":"6575c3ec52b7f8c76a05ee39","name":"Aramid insert","value":35.734,"costPerSlot":7734,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c3fd52b7f8c76a05ee3d":{"id":"6575c3fd52b7f8c76a05ee3d","name":"Aramid insert","value":36.575,"costPerSlot":8575,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575c40c52b7f8c76a05ee41":{"id":"6575c40c52b7f8c76a05ee41","name":"Aramid insert","value":36.575,"costPerSlot":8575,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ce3716c2762fba0057fd":{"id":"6575ce3716c2762fba0057fd","name":"Aramid insert","value":88.819,"costPerSlot":60819,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ce45dc9932aed601c616":{"id":"6575ce45dc9932aed601c616","name":"Aramid insert","value":88.819,"costPerSlot":60819,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ce5016c2762fba005802":{"id":"6575ce5016c2762fba005802","name":"Aramid insert","value":45.488,"costPerSlot":17488,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ce5befc786cd9101a671":{"id":"6575ce5befc786cd9101a671","name":"Aramid insert","value":45.488,"costPerSlot":17488,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ce6f16c2762fba005806":{"id":"6575ce6f16c2762fba005806","name":"Aramid insert","value":49.894999999999996,"costPerSlot":21895,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ce8bdc9932aed601c61e":{"id":"6575ce8bdc9932aed601c61e","name":"Aramid insert","value":55.769999999999996,"costPerSlot":27770,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ce9db15fef3dd4051628":{"id":"6575ce9db15fef3dd4051628","name":"Aramid insert","value":46.957,"costPerSlot":18957,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575cea8b15fef3dd405162c":{"id":"6575cea8b15fef3dd405162c","name":"Aramid insert","value":46.957,"costPerSlot":18957,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d561b15fef3dd4051670":{"id":"6575d561b15fef3dd4051670","name":"Aramid insert","value":77.949,"costPerSlot":49949,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d56b16c2762fba005818":{"id":"6575d56b16c2762fba005818","name":"Aramid insert","value":77.949,"costPerSlot":49949,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d57a16c2762fba00581c":{"id":"6575d57a16c2762fba00581c","name":"Aramid insert","value":48.594,"costPerSlot":20594,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d589b15fef3dd4051674":{"id":"6575d589b15fef3dd4051674","name":"Aramid insert","value":48.594,"costPerSlot":20594,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d598b15fef3dd4051678":{"id":"6575d598b15fef3dd4051678","name":"Aramid insert","value":47.126999999999995,"costPerSlot":19127,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d5a616c2762fba005820":{"id":"6575d5a616c2762fba005820","name":"Aramid insert","value":51.53,"costPerSlot":23530,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d5b316c2762fba005824":{"id":"6575d5b316c2762fba005824","name":"Aramid insert","value":44.191,"costPerSlot":16191,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d5bd16c2762fba005828":{"id":"6575d5bd16c2762fba005828","name":"Aramid insert","value":44.191,"costPerSlot":16191,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d9a79e27f4a85e08112d":{"id":"6575d9a79e27f4a85e08112d","name":"Aramid insert","value":59.019000000000005,"costPerSlot":31019,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d9b8945bf78edd04c427":{"id":"6575d9b8945bf78edd04c427","name":"Aramid insert","value":59.019000000000005,"costPerSlot":31019,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d9c40546f8b1de093dee":{"id":"6575d9c40546f8b1de093dee","name":"Aramid insert","value":39.069,"costPerSlot":11069,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d9cf0546f8b1de093df2":{"id":"6575d9cf0546f8b1de093df2","name":"Aramid insert","value":39.069,"costPerSlot":11069,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d9d8945bf78edd04c42b":{"id":"6575d9d8945bf78edd04c42b","name":"Aramid insert","value":35.673,"costPerSlot":7673,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d9e7945bf78edd04c42f":{"id":"6575d9e7945bf78edd04c42f","name":"Aramid insert","value":45.012,"costPerSlot":17012,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575d9f816c2762fba00588d":{"id":"6575d9f816c2762fba00588d","name":"Aramid insert","value":34.824,"costPerSlot":6824,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575da07945bf78edd04c433":{"id":"6575da07945bf78edd04c433","name":"Aramid insert","value":39.918,"costPerSlot":11918,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575da159e27f4a85e081131":{"id":"6575da159e27f4a85e081131","name":"Aramid insert","value":39.918,"costPerSlot":11918,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575dd3e9e27f4a85e081142":{"id":"6575dd3e9e27f4a85e081142","name":"Aramid insert","value":57.821,"costPerSlot":29821,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575dd519e27f4a85e081146":{"id":"6575dd519e27f4a85e081146","name":"Aramid insert","value":57.821,"costPerSlot":29821,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575dd64945bf78edd04c438":{"id":"6575dd64945bf78edd04c438","name":"Aramid insert","value":38.67,"costPerSlot":10670,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575dd6e9d3a0ddf660b9047":{"id":"6575dd6e9d3a0ddf660b9047","name":"Aramid insert","value":38.67,"costPerSlot":10670,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575dd769d3a0ddf660b904b":{"id":"6575dd769d3a0ddf660b904b","name":"Aramid insert","value":34.84,"costPerSlot":6840,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575dd800546f8b1de093df6":{"id":"6575dd800546f8b1de093df6","name":"Aramid insert","value":41.543,"costPerSlot":13543,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575dd94945bf78edd04c43c":{"id":"6575dd94945bf78edd04c43c","name":"Aramid insert","value":35.797,"costPerSlot":7797,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575e71760703324250610c3":{"id":"6575e71760703324250610c3","name":"Aramid insert","value":148.745,"costPerSlot":120745,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575e72660703324250610c7":{"id":"6575e72660703324250610c7","name":"Aramid insert","value":148.745,"costPerSlot":120745,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ea3060703324250610da":{"id":"6575ea3060703324250610da","name":"Aramid insert","value":91.262,"costPerSlot":63262,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ea4cf6a13a7b7100adc4":{"id":"6575ea4cf6a13a7b7100adc4","name":"Aramid insert","value":91.262,"costPerSlot":63262,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ea5cf6a13a7b7100adc8":{"id":"6575ea5cf6a13a7b7100adc8","name":"Aramid insert","value":39.804,"costPerSlot":11804,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ea6760703324250610de":{"id":"6575ea6760703324250610de","name":"Aramid insert","value":39.804,"costPerSlot":11804,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ea719c7cad336508e418":{"id":"6575ea719c7cad336508e418","name":"Aramid insert","value":50.637,"costPerSlot":22637,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ea7c60703324250610e2":{"id":"6575ea7c60703324250610e2","name":"Aramid insert","value":53.345,"costPerSlot":25345,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ef599c7cad336508e453":{"id":"6575ef599c7cad336508e453","name":"Aramid insert","value":53.343,"costPerSlot":25343,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ef6bf6a13a7b7100b093":{"id":"6575ef6bf6a13a7b7100b093","name":"Aramid insert","value":53.343,"costPerSlot":25343,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ef78da698a4e980677eb":{"id":"6575ef78da698a4e980677eb","name":"Aramid insert","value":40.178,"costPerSlot":12178,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575ef7f9c7cad336508e457":{"id":"6575ef7f9c7cad336508e457","name":"Aramid insert","value":40.178,"costPerSlot":12178,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575f24ff6a13a7b7100b09e":{"id":"6575f24ff6a13a7b7100b09e","name":"Aramid insert","value":71.838,"costPerSlot":43838,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575f25ada698a4e98067836":{"id":"6575f25ada698a4e98067836","name":"Aramid insert","value":71.838,"costPerSlot":43838,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575f2649cfdfe416f0399b8":{"id":"6575f2649cfdfe416f0399b8","name":"Aramid insert","value":42.957,"costPerSlot":14957,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575f26d9c7cad336508e480":{"id":"6575f26d9c7cad336508e480","name":"Aramid insert","value":42.957,"costPerSlot":14957,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575f5cbf6a13a7b7100b0bf":{"id":"6575f5cbf6a13a7b7100b0bf","name":"Aramid insert","value":122.95400000000001,"costPerSlot":94954,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6575f5e1da698a4e98067869":{"id":"6575f5e1da698a4e98067869","name":"Aramid insert","value":122.95400000000001,"costPerSlot":94954,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65764275d8537eb26a0355e9":{"id":"65764275d8537eb26a0355e9","name":"Aramid insert","value":77.916,"costPerSlot":49916,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657642b0e6d5dd75f40688a5":{"id":"657642b0e6d5dd75f40688a5","name":"Aramid insert","value":77.916,"costPerSlot":49916,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"6576434820cc24d17102b148":{"id":"6576434820cc24d17102b148","name":"Aramid insert","value":39.42,"costPerSlot":11420,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657643732bc38ef78e076477":{"id":"657643732bc38ef78e076477","name":"Aramid insert","value":39.42,"costPerSlot":11420,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657643a220cc24d17102b14c":{"id":"657643a220cc24d17102b14c","name":"Aramid insert","value":39.42,"costPerSlot":11420,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65764a4cd8537eb26a0355ee":{"id":"65764a4cd8537eb26a0355ee","name":"6.5 mm aramid insert and titanium plates","value":49.694,"costPerSlot":21694,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65764bc22bc38ef78e076485":{"id":"65764bc22bc38ef78e076485","name":"1.25 mm aramid insert and titanium plates","value":37.78,"costPerSlot":19780,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65764c39526e320fbe035777":{"id":"65764c39526e320fbe035777","name":"Aramid insert","value":20.552,"costPerSlot":2552,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"65764c6b526e320fbe03577b":{"id":"65764c6b526e320fbe03577b","name":"6.5 mm aramid insert and titanium plates","value":32.466,"costPerSlot":4466,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65764e1e2bc38ef78e076489":{"id":"65764e1e2bc38ef78e076489","name":"6.5 mm aramid insert and titanium plates","value":67.022,"costPerSlot":29022,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"65764fae2bc38ef78e07648d":{"id":"65764fae2bc38ef78e07648d","name":"1.25 mm aramid insert and titanium plates","value":39.647999999999996,"costPerSlot":21648,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6576500f526e320fbe03577f":{"id":"6576500f526e320fbe03577f","name":"1.25 mm aramid insert and titanium plates","value":23.424,"costPerSlot":5424,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"6576504b526e320fbe035783":{"id":"6576504b526e320fbe035783","name":"6.5 mm aramid insert and titanium plates","value":43.424,"costPerSlot":5424,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"6576f4708ca9c4381d16cd9d":{"id":"6576f4708ca9c4381d16cd9d","name":"9x21mm 7N42 Zubilo","value":8.9555,"costPerSlot":967,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6576f93989f0062e741ba952":{"id":"6576f93989f0062e741ba952","name":"9x21mm 7U4","value":8.3405,"costPerSlot":354,"weight":0.027,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6576f96220d53a5b8f3e395e":{"id":"6576f96220d53a5b8f3e395e","name":"9x39mm FMJ","value":8.1285,"costPerSlot":140,"weight":0.023,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"657857faeff4c850222dff1b":{"id":"657857faeff4c850222dff1b","name":"Kalashnikov PKTM 7.62x54R Modernized Tank Machine Gun","value":-15.570999999999998,"costPerSlot":0,"weight":7.1419999999999995,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"65785979bec02a3fe82c181e":{"id":"65785979bec02a3fe82c181e","name":"PKTM 7.62x54R 250-round belt","value":-6.75,"costPerSlot":0,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6579846c1ec1943afb14c15a":{"id":"6579846c1ec1943afb14c15a","name":"9x21mm 7U4 ammo pack (30 pcs)","value":8.615,"costPerSlot":10620,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6579847c5a0e5879d12f2873":{"id":"6579847c5a0e5879d12f2873","name":"9x21mm 7N42 ammo pack (30 pcs)","value":27.005000000000003,"costPerSlot":29010,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657984a50fbff513dd435765":{"id":"657984a50fbff513dd435765","name":"9x39mm FMJ ammo pack (20 pcs)","value":0.7950000000000004,"costPerSlot":2800,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"657b22485f444d6dff0c6c2f":{"id":"657b22485f444d6dff0c6c2f","name":"6B23-2 ballistic plate (Back)","value":39.914,"costPerSlot":7664,"weight":3.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":4,"parentWeighting":0},"657b2797c3dbcb01d60c35ea":{"id":"657b2797c3dbcb01d60c35ea","name":"Korund-VM ballistic plate (Back)","value":49.4845,"costPerSlot":6634.5,"weight":2.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":5,"parentWeighting":0},"657b28d25f444d6dff0c6c77":{"id":"657b28d25f444d6dff0c6c77","name":"Korund-VM-K ballistic plate (Back)","value":63.310249999999996,"costPerSlot":10660.25,"weight":2.7,"size":4,"gridSize":0,"maxDim":2,"armorClass":6,"parentWeighting":0},"657ba096e57570b7f80a17fb":{"id":"657ba096e57570b7f80a17fb","name":"Layers of aramid fiber","value":9.9,"costPerSlot":1900,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":0},"657ba145e57570b7f80a17ff":{"id":"657ba145e57570b7f80a17ff","name":"Layers of aramid fiber","value":9.9,"costPerSlot":1900,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":0},"657ba18923918923cb0df568":{"id":"657ba18923918923cb0df568","name":"Layers of aramid fiber","value":9.9,"costPerSlot":1900,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":0},"657ba2eef58ba5a625010798":{"id":"657ba2eef58ba5a625010798","name":"Layer of plastic","value":13.225000000000001,"costPerSlot":5225,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":0},"657ba34b9ba22f103e08139b":{"id":"657ba34b9ba22f103e08139b","name":"Layer of plastic","value":13.225000000000001,"costPerSlot":5225,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":0},"657ba50c23918923cb0df56c":{"id":"657ba50c23918923cb0df56c","name":"Layers of aramid fiber","value":20.533,"costPerSlot":2533,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba5439ba22f103e08139f":{"id":"657ba5439ba22f103e08139f","name":"Layers of aramid fiber","value":20.533,"costPerSlot":2533,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba57af58ba5a62501079e":{"id":"657ba57af58ba5a62501079e","name":"Layers of aramid fiber","value":20.533,"costPerSlot":2533,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba6c3c6f689d3a205b857":{"id":"657ba6c3c6f689d3a205b857","name":"Layers of aramid fiber","value":20.446,"costPerSlot":2446,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba737b7e9ca9a02045bf6":{"id":"657ba737b7e9ca9a02045bf6","name":"Layers of aramid fiber","value":20.446,"costPerSlot":2446,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba75e23918923cb0df573":{"id":"657ba75e23918923cb0df573","name":"Layers of aramid fiber","value":20.446,"costPerSlot":2446,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba85ecfcf63c951052da7":{"id":"657ba85ecfcf63c951052da7","name":"Layers of aramid fiber","value":20.185,"costPerSlot":2185,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba8bccfcf63c951052dab":{"id":"657ba8bccfcf63c951052dab","name":"Layers of aramid fiber","value":20.185,"costPerSlot":2185,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657ba8eab7e9ca9a02045bfd":{"id":"657ba8eab7e9ca9a02045bfd","name":"Layers of aramid fiber","value":20.185,"costPerSlot":2185,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"657baaf0b7e9ca9a02045c02":{"id":"657baaf0b7e9ca9a02045c02","name":"Layers of aramid fiber","value":39.213,"costPerSlot":11213,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bab6ec6f689d3a205b85f":{"id":"657bab6ec6f689d3a205b85f","name":"Layers of aramid fiber","value":39.213,"costPerSlot":11213,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657babc6f58ba5a6250107a2":{"id":"657babc6f58ba5a6250107a2","name":"Layers of aramid fiber","value":39.213,"costPerSlot":11213,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bae18b7e9ca9a02045c0a":{"id":"657bae18b7e9ca9a02045c0a","name":"Layers of aramid fiber","value":37.855000000000004,"costPerSlot":9855,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657baeaacfcf63c951052db3":{"id":"657baeaacfcf63c951052db3","name":"Layers of aramid fiber","value":37.855000000000004,"costPerSlot":9855,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657baecbc6f689d3a205b863":{"id":"657baecbc6f689d3a205b863","name":"Layers of aramid fiber","value":37.855000000000004,"costPerSlot":9855,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bb70486c7f9ef7a009936":{"id":"657bb70486c7f9ef7a009936","name":"Armor steel","value":38.133,"costPerSlot":10133,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bb79ba1c61ee0c303631a":{"id":"657bb79ba1c61ee0c303631a","name":"Armor steel","value":38.133,"costPerSlot":10133,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bb7d7b30eca9763051176":{"id":"657bb7d7b30eca9763051176","name":"Armor steel","value":38.133,"costPerSlot":10133,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bb92fa1c61ee0c303631f":{"id":"657bb92fa1c61ee0c303631f","name":"Layers of aramid fiber","value":43.269,"costPerSlot":15269,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bb99db30eca976305117f":{"id":"657bb99db30eca976305117f","name":"Layers of aramid fiber","value":43.269,"costPerSlot":15269,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bbad7a1c61ee0c3036323":{"id":"657bbad7a1c61ee0c3036323","name":"Hybrid composite materials","value":52.376999999999995,"costPerSlot":24377,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bbb31b30eca9763051183":{"id":"657bbb31b30eca9763051183","name":"Hybrid composite materials","value":52.376999999999995,"costPerSlot":24377,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bbcc9a1c61ee0c3036327":{"id":"657bbcc9a1c61ee0c3036327","name":"Hybrid composite materials","value":55.612,"costPerSlot":27612,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bbcffbbd440df880b2dd5":{"id":"657bbcffbbd440df880b2dd5","name":"Hybrid composite materials","value":55.612,"costPerSlot":27612,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657bbe73a1c61ee0c303632b":{"id":"657bbe73a1c61ee0c303632b","name":"Hybrid composite materials","value":100.405,"costPerSlot":52405,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bbed0aab96fccee08be96":{"id":"657bbed0aab96fccee08be96","name":"Hybrid composite materials","value":100.405,"costPerSlot":52405,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bbefeb30eca9763051189":{"id":"657bbefeb30eca9763051189","name":"Hybrid composite materials","value":100.405,"costPerSlot":52405,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bc06daab96fccee08be9b":{"id":"657bc06daab96fccee08be9b","name":"Armor steel","value":101.2,"costPerSlot":53200,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bc0d8a1c61ee0c303632f":{"id":"657bc0d8a1c61ee0c303632f","name":"Armor steel","value":101.2,"costPerSlot":53200,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bc107aab96fccee08be9f":{"id":"657bc107aab96fccee08be9f","name":"Armor steel","value":101.2,"costPerSlot":53200,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bc285aab96fccee08bea3":{"id":"657bc285aab96fccee08bea3","name":"Titanium alloy","value":104.367,"costPerSlot":56367,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bc2c5a1c61ee0c3036333":{"id":"657bc2c5a1c61ee0c3036333","name":"Titanium alloy","value":104.367,"costPerSlot":56367,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657bc2e7b30eca976305118d":{"id":"657bc2e7b30eca976305118d","name":"Titanium alloy","value":104.367,"costPerSlot":56367,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":5,"parentWeighting":0},"657f8a8d7db258e5600fe33d":{"id":"657f8a8d7db258e5600fe33d","name":"Hybrid composite materials","value":62.766000000000005,"costPerSlot":24766,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f8b05f4c82973640b2348":{"id":"657f8b05f4c82973640b2348","name":"Hybrid composite materials","value":62.766000000000005,"costPerSlot":24766,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f8b43f92cd718b70154fb":{"id":"657f8b43f92cd718b70154fb","name":"Hybrid composite materials","value":61.394000000000005,"costPerSlot":23394,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f8b94f92cd718b70154ff":{"id":"657f8b94f92cd718b70154ff","name":"Hybrid composite materials","value":61.394000000000005,"costPerSlot":23394,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f8ec5f4c82973640b234c":{"id":"657f8ec5f4c82973640b234c","name":"Hybrid composite materials","value":83.173,"costPerSlot":45173,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f8f10f4c82973640b2350":{"id":"657f8f10f4c82973640b2350","name":"Hybrid composite materials","value":83.173,"costPerSlot":45173,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f925dada5fadd1f07a57a":{"id":"657f925dada5fadd1f07a57a","name":"Hybrid composite materials","value":52.123000000000005,"costPerSlot":14123,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f92acada5fadd1f07a57e":{"id":"657f92acada5fadd1f07a57e","name":"Hybrid composite materials","value":52.123000000000005,"costPerSlot":14123,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f92e7f4c82973640b2354":{"id":"657f92e7f4c82973640b2354","name":"Hybrid composite materials","value":52.123000000000005,"costPerSlot":14123,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f95bff92cd718b701550c":{"id":"657f95bff92cd718b701550c","name":"Hybrid composite materials","value":62.775999999999996,"costPerSlot":24776,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9605f4c82973640b2358":{"id":"657f9605f4c82973640b2358","name":"Hybrid composite materials","value":62.775999999999996,"costPerSlot":24776,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9897f4c82973640b235e":{"id":"657f9897f4c82973640b235e","name":"Hybrid composite materials","value":79.542,"costPerSlot":41542,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f98fbada5fadd1f07a585":{"id":"657f98fbada5fadd1f07a585","name":"Hybrid composite materials","value":79.542,"costPerSlot":41542,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9a55c6679fefb3051e19":{"id":"657f9a55c6679fefb3051e19","name":"Hybrid composite materials","value":66.28399999999999,"costPerSlot":28284,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9a94ada5fadd1f07a589":{"id":"657f9a94ada5fadd1f07a589","name":"Hybrid composite materials","value":66.28399999999999,"costPerSlot":28284,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9c78ada5fadd1f07a58d":{"id":"657f9c78ada5fadd1f07a58d","name":"Hybrid composite materials","value":63.707,"costPerSlot":25707,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9cb587e11c61f70bfaca":{"id":"657f9cb587e11c61f70bfaca","name":"Hybrid composite materials","value":63.707,"costPerSlot":25707,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9eb7e9433140ad0baf86":{"id":"657f9eb7e9433140ad0baf86","name":"Armor steel","value":76.643,"costPerSlot":38643,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657f9ef6c6679fefb3051e1f":{"id":"657f9ef6c6679fefb3051e1f","name":"Armor steel","value":76.643,"costPerSlot":38643,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657fa009d4caf976440afe3a":{"id":"657fa009d4caf976440afe3a","name":"Hybrid composite materials","value":62.763000000000005,"costPerSlot":24763,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657fa04ac6679fefb3051e24":{"id":"657fa04ac6679fefb3051e24","name":"Hybrid composite materials","value":62.763000000000005,"costPerSlot":24763,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657fa07387e11c61f70bface":{"id":"657fa07387e11c61f70bface","name":"Hybrid composite materials","value":62.763000000000005,"costPerSlot":24763,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"657fa0fcd4caf976440afe3e":{"id":"657fa0fcd4caf976440afe3e","name":"Hybrid composite materials","value":44.522000000000006,"costPerSlot":16522,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657fa168e9433140ad0baf8e":{"id":"657fa168e9433140ad0baf8e","name":"Hybrid composite materials","value":44.522000000000006,"costPerSlot":16522,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"657fa186d4caf976440afe42":{"id":"657fa186d4caf976440afe42","name":"Hybrid composite materials","value":44.522000000000006,"costPerSlot":16522,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"65815f0e647e3d7246384e14":{"id":"65815f0e647e3d7246384e14","name":"Pack of Tarker dried meat","value":24.619,"costPerSlot":21759,"weight":0.28,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"658188edf026a90c1708c827":{"id":"658188edf026a90c1708c827","name":"Built-in face shield","value":10.446,"costPerSlot":2446,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":0},"65818e4e566d2de69901b1b1":{"id":"65818e4e566d2de69901b1b1","name":"Built-in face shield","value":10.185,"costPerSlot":2185,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":1,"parentWeighting":0},"6581998038c79576a2569e11":{"id":"6581998038c79576a2569e11","name":"Unity Credit Bank cash register key","value":9.764,"costPerSlot":11769,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"658199972dc4e60f6d556a2f":{"id":"658199972dc4e60f6d556a2f","name":"Underground parking utility room key","value":6.789999999999999,"costPerSlot":8795,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"658199a0490414548c0fa83b":{"id":"658199a0490414548c0fa83b","name":"Horse restaurant toilet key","value":17.015,"costPerSlot":19020,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"658199aa38c79576a2569e13":{"id":"658199aa38c79576a2569e13","name":"TerraGroup science office key","value":17.015,"costPerSlot":19020,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582dbe43a2e5248357dbe9a":{"id":"6582dbe43a2e5248357dbe9a","name":"\"Negotiation\" room key","value":13.674,"costPerSlot":15679,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582dbf0b8d7830efc45016f":{"id":"6582dbf0b8d7830efc45016f","name":"Relaxation room key","value":52.238,"costPerSlot":54243,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582dc4b6ba9e979af6b79f4":{"id":"6582dc4b6ba9e979af6b79f4","name":"MVD academy entrance hall guard room key","value":29.249000000000002,"costPerSlot":31254,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582dc5740562727a654ebb1":{"id":"6582dc5740562727a654ebb1","name":"Real estate agency office room key","value":31.611999999999995,"costPerSlot":33617,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582dc63cafcd9485374dbc5":{"id":"6582dc63cafcd9485374dbc5","name":"Unity Credit Bank archive room key","value":17.015,"costPerSlot":19020,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582e6bb0c3b9823fe6d1840":{"id":"6582e6bb0c3b9823fe6d1840","name":"Scav body","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582e6c6edf14c4c6023adf2":{"id":"6582e6c6edf14c4c6023adf2","name":"Lab technician body","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"6582e6d7b14c3f72eb071420":{"id":"6582e6d7b14c3f72eb071420","name":"PMC body","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"658420d8085fea07e674cdb6":{"id":"658420d8085fea07e674cdb6","name":"Civilian body","value":18.3,"costPerSlot":0,"weight":1,"size":1,"gridSize":16,"maxDim":1,"armorClass":0,"parentWeighting":0},"65ae4f57e343f0acc00824da":{"id":"65ae4f57e343f0acc00824da","name":"PP-19-01 Vityaz Vector VR-LPS left-side charging handle","value":19.535999999999998,"costPerSlot":21671,"weight":0.27,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65ca457b4aafb5d7fc0dcb5d":{"id":"65ca457b4aafb5d7fc0dcb5d","name":"United Cutlery M48 Tactical Kukri","value":15.875,"costPerSlot":17100,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"65ddcc9cfa85b9f17d0dfb07":{"id":"65ddcc9cfa85b9f17d0dfb07","name":"Mark of The Unheard","value":97.825,"costPerSlot":100000,"weight":0.35,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65e080be269cbd5c5005e529":{"id":"65e080be269cbd5c5005e529","name":"","value":-412.2,"costPerSlot":0,"weight":0,"size":400,"gridSize":6,"maxDim":20,"armorClass":0,"parentWeighting":0},"65e5957613227bb7690ce9f6":{"id":"65e5957613227bb7690ce9f6","name":"","value":-2,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65e597266017f07a3204b775":{"id":"65e597266017f07a3204b775","name":"","value":-2,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65e5972a13227bb7690cea07":{"id":"65e5972a13227bb7690cea07","name":"","value":-2,"costPerSlot":0,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65f05b9d39dab9e9ec049cfd":{"id":"65f05b9d39dab9e9ec049cfd","name":"KOMZ Rusak reflex sight","value":5.128,"costPerSlot":7248,"weight":0.24,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65f064eec4da400cbb0dc1fe":{"id":"65f064eec4da400cbb0dc1fe","name":"M700 Badger Ordnance Scope Rail","value":-0.6715,"costPerSlot":3410,"weight":0.163,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"65f1b1176dbd6c5ba2082eed":{"id":"65f1b1176dbd6c5ba2082eed","name":"RS Regulate AK-303M Full Length Lower dovetail mount","value":23.573500000000003,"costPerSlot":25623,"weight":0.099,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65f1b2a5c14a07890801fc70":{"id":"65f1b2a5c14a07890801fc70","name":"RS Regulate AKR top mount","value":20.9635,"costPerSlot":22997,"weight":0.067,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"65fb023261d5829b2d090755":{"id":"65fb023261d5829b2d090755","name":"U.S. Ordnance M60E4 7.62x51 light machine gun","value":56.72149999999999,"costPerSlot":78758,"weight":10.073000000000002,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"6601257f1347bc1a5f0f4db6":{"id":"6601257f1347bc1a5f0f4db6","name":"M60E4 trigger group","value":5.4955,"costPerSlot":7546,"weight":0.101,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660125bf1d087a96c60a54db":{"id":"660125bf1d087a96c60a54db","name":"M60E4 pistol grip","value":2.2255000000000003,"costPerSlot":4245,"weight":0.039,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660126161347bc1a5f0f4dba":{"id":"660126161347bc1a5f0f4dba","name":"M60E4 buttstock","value":3.1065000000000005,"costPerSlot":5233,"weight":0.253,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6601265f98a610c1aa0ea637":{"id":"6601265f98a610c1aa0ea637","name":"M60 rear sight","value":-1.4140000000000001,"costPerSlot":632,"weight":0.092,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6601268bc752a02bbe05e686":{"id":"6601268bc752a02bbe05e686","name":"M60E4 front sight","value":-1.6179999999999999,"costPerSlot":424,"weight":0.084,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660126a98f2b23af220b27e7":{"id":"660126a98f2b23af220b27e7","name":"M60E6 front sight rail","value":-1.516,"costPerSlot":523,"weight":0.078,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660126f7c752a02bbe05e688":{"id":"660126f7c752a02bbe05e688","name":"M60E4 7.62x51 458mm barrel","value":-1.2372499999999995,"costPerSlot":7812.75,"weight":2.1,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66012788c752a02bbe05e68e":{"id":"66012788c752a02bbe05e68e","name":"M60E4 7.62x51 475mm heavy barrel","value":1.0477499999999988,"costPerSlot":10312.75,"weight":2.53,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6601279cc752a02bbe05e692":{"id":"6601279cc752a02bbe05e692","name":"M60E3 7.62x51 584mm barrel","value":-1.7876000000000012,"costPerSlot":9352.4,"weight":2.28,"size":5,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"6601281fc752a02bbe05e696":{"id":"6601281fc752a02bbe05e696","name":"M60E3 7.62x51 flash hider","value":3.178,"costPerSlot":5235,"weight":0.114,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66012a1d3dff5074ed002e2a":{"id":"66012a1d3dff5074ed002e2a","name":"M60E6 7.62x51 flash hider","value":5.4795,"costPerSlot":7543,"weight":0.127,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66012d003dff5074ed002e2c":{"id":"66012d003dff5074ed002e2c","name":"M60E6 handguard","value":0.04400000000000048,"costPerSlot":4283.5,"weight":0.479,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66012d64c752a02bbe05e69b":{"id":"66012d64c752a02bbe05e69b","name":"M60E4 Mod 1 handguard","value":-1.057,"costPerSlot":3226.5,"weight":0.567,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66012d9a3dff5074ed002e33":{"id":"66012d9a3dff5074ed002e33","name":"M60 bipod","value":12.342500000000001,"costPerSlot":16611,"weight":0.537,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"660137d8481cc6907a0c5cda":{"id":"660137d8481cc6907a0c5cda","name":"20/70 TSS Armor Piercing Slug","value":8.304,"costPerSlot":324,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"660137ef76c1b56143052be8":{"id":"660137ef76c1b56143052be8","name":"20/70 Dangerous Game Slug","value":8.268,"costPerSlot":287,"weight":0.038,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6601380580e77cfd080e3418":{"id":"6601380580e77cfd080e3418","name":"20/70 flechette","value":8.2075,"costPerSlot":225,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66015072e9f84d5680039678":{"id":"66015072e9f84d5680039678","name":"20x1mm toy gun","value":23.471,"costPerSlot":24516,"weight":0.09000000000000001,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"6601546f86889319850bd566":{"id":"6601546f86889319850bd566","name":"20x1mm disk","value":8.0005,"costPerSlot":1,"weight":0.001,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66015dc4aaad2f54cb04c56a":{"id":"66015dc4aaad2f54cb04c56a","name":"Toy gun 20x1mm 20-round magazine","value":-1.0625,"costPerSlot":940,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6602bcf19cc643f44a04274b":{"id":"6602bcf19cc643f44a04274b","name":"Stash","value":933.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":720,"maxDim":1,"armorClass":0,"parentWeighting":0},"660312cc4d6cdfa6f500c703":{"id":"660312cc4d6cdfa6f500c703","name":"Armband of The Unheard","value":97.975,"costPerSlot":100000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660bbc47c38b837877075e47":{"id":"660bbc47c38b837877075e47","name":"Encrypted flash drive","value":7.960000000000001,"costPerSlot":10000,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660bbc98c38b837877075e4a":{"id":"660bbc98c38b837877075e4a","name":"Decrypted flash drive","value":0.363,"costPerSlot":2403,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660bc341c38b837877075e4c":{"id":"660bc341c38b837877075e4c","name":"Documents with decrypted data","value":2.2620000000000005,"costPerSlot":4302,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"660ea4453786cc0af808a1be":{"id":"660ea4453786cc0af808a1be","name":"M60 7.62x51 Capco 100-round Assault Box","value":-0.6550000000000002,"costPerSlot":5556.5,"weight":0.423,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"660ea4ba5a58d057b009efab":{"id":"660ea4ba5a58d057b009efab","name":"M60 7.62x51 LBT 100-round Feed Tray Pouch","value":-6.138,"costPerSlot":0,"weight":0.276,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6615202b96461aa8360271eb":{"id":"6615202b96461aa8360271eb","name":"M60E6 buttstock","value":5.3435,"costPerSlot":7463,"weight":0.239,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66152060a031cbb5570e3466":{"id":"66152060a031cbb5570e3466","name":"M60E6 pistol grip","value":2.8440000000000003,"costPerSlot":4865,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6615208aa031cbb5570e346a":{"id":"6615208aa031cbb5570e346a","name":"M60E6 trigger group","value":43.95,"costPerSlot":45999,"weight":0.098,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"661520fb6f8e1a96340afaa6":{"id":"661520fb6f8e1a96340afaa6","name":"M60E6 buttstock (FDE)","value":5.3435,"costPerSlot":7463,"weight":0.239,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6615211ca031cbb5570e346d":{"id":"6615211ca031cbb5570e346d","name":"M60E6 pistol grip (FDE)","value":2.8440000000000003,"costPerSlot":4865,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66152153a031cbb5570e346f":{"id":"66152153a031cbb5570e346f","name":"M60E6 trigger group (FDE)","value":6.307,"costPerSlot":8356,"weight":0.098,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"661ceb1b9311543c7104149b":{"id":"661ceb1b9311543c7104149b","name":"U.S. Ordnance M60E6 7.62x51 light machine gun","value":69.6645,"costPerSlot":91414,"weight":9.499,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"661cec09b2c6356b4d0c7a36":{"id":"661cec09b2c6356b4d0c7a36","name":"U.S. Ordnance M60E6 7.62x51 light machine gun (FDE)","value":71.202,"costPerSlot":93309,"weight":10.214000000000002,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"661e52415be02310ed07a07a":{"id":"661e52415be02310ed07a07a","name":"TangoDown Stubby BGV-QDK foregrip (Black)","value":11.656,"costPerSlot":13708,"weight":0.104,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"661e52b5b099f32c28003586":{"id":"661e52b5b099f32c28003586","name":"TangoDown Stubby BGV-QDK foregrip (FDE)","value":3.8790000000000004,"costPerSlot":5931,"weight":0.104,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"661e52e29c8b4dadef008577":{"id":"661e52e29c8b4dadef008577","name":"TangoDown BGV-QDITI foregrip (Black)","value":6.270000000000001,"costPerSlot":8338,"weight":0.136,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"661e53149c8b4dadef008579":{"id":"661e53149c8b4dadef008579","name":"TangoDown BGV-QDITI foregrip (FDE)","value":4.424,"costPerSlot":6492,"weight":0.136,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"661f8995c341ea101e0d33e8":{"id":"661f8995c341ea101e0d33e8","name":"PM PM-Laser grip with laser sight","value":6.623000000000001,"costPerSlot":8668,"weight":0.09,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"661fbe066751ee51930b01f2":{"id":"661fbe066751ee51930b01f2","name":"M60E4 Mod 1 handguard (FDE)","value":0.8395000000000001,"costPerSlot":5123,"weight":0.567,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6621455e3aceea9e2b0b01e7":{"id":"6621455e3aceea9e2b0b01e7","name":"AR-15 DoubleStar Carlson Tac Comp 5.56x45 compensator","value":3.6310000000000002,"costPerSlot":5735,"weight":0.208,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66225d88a1c7e3b81600c76f":{"id":"66225d88a1c7e3b81600c76f","name":"M60E6 7.62x51 458mm barrel","value":-1.0942499999999997,"costPerSlot":7905.75,"weight":2,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66265d7be65f224b2e17c6aa":{"id":"66265d7be65f224b2e17c6aa","name":"USEC cottage room key","value":17.015,"costPerSlot":19020,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6638a5474e92f038531e210e":{"id":"6638a5474e92f038531e210e","name":"Mr Kerman's cat hologram","value":1096.9759999999999,"costPerSlot":1101126,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6642f63667f5cb56a00662eb":{"id":"6642f63667f5cb56a00662eb","name":"AR-10 Delta-Tek DTK-AR10 7.62x51 muzzle brake","value":22.9545,"costPerSlot":25017,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"664301213dd83ddae20dda18":{"id":"664301213dd83ddae20dda18","name":"AR-15 Delta-Tek DTK-M16 5.56x45 muzzle brake","value":17.7185,"costPerSlot":19781,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6644920d49817dc7d505ca71":{"id":"6644920d49817dc7d505ca71","name":"BT10 V8 Atlas Bipod","value":3.9030000000000014,"costPerSlot":8059,"weight":0.312,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"664a5428d5e33a713b622379":{"id":"664a5428d5e33a713b622379","name":"APOK Tactical Wasteland Gladius","value":779.3765,"costPerSlot":785000,"weight":1.247,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"664a5480bfcc521bad3192ca":{"id":"664a5480bfcc521bad3192ca","name":"Armband (ARENA)","value":147.975,"costPerSlot":150000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"664a55d84a90fc2c8a6305c9":{"id":"664a55d84a90fc2c8a6305c9","name":"Secure container Theta","value":2150.3,"costPerSlot":2150000,"weight":1.4,"size":9,"gridSize":10,"maxDim":3,"armorClass":0,"parentWeighting":0},"664d3db6db5dea2bad286955":{"id":"664d3db6db5dea2bad286955","name":"Shatun's hideout key","value":697.995,"costPerSlot":700000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"664d3dd590294949fe2d81b7":{"id":"664d3dd590294949fe2d81b7","name":"Grumpy's hideout key","value":747.995,"costPerSlot":750000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"664d3ddfdda2e85aca370d75":{"id":"664d3ddfdda2e85aca370d75","name":"Voron's hideout key","value":797.995,"costPerSlot":800000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"664d3de85f2355673b09aed5":{"id":"664d3de85f2355673b09aed5","name":"Leon's hideout key","value":847.995,"costPerSlot":850000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"664d4b0103ef2c61246afb56":{"id":"664d4b0103ef2c61246afb56","name":"Dorm overseer key","value":715.363,"costPerSlot":717368,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66507eabf5ddb0818b085b68":{"id":"66507eabf5ddb0818b085b68","name":"2A2-(b-TG) stimulant injector","value":93.435,"costPerSlot":87460,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":8},"6655e35b6bc645cb7b059912":{"id":"6655e35b6bc645cb7b059912","name":"\"The Eye\" mortar strike signaling device","value":7.9,"costPerSlot":10000,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6656560053eaaa7a23349c86":{"id":"6656560053eaaa7a23349c86","name":"Lega Medal","value":897.95,"costPerSlot":900000,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66571bf06a723f7f005a0619":{"id":"66571bf06a723f7f005a0619","name":"Locked equipment crate (Rare)","value":-25,"costPerSlot":0,"weight":10,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66572b3f6a723f7f005a066c":{"id":"66572b3f6a723f7f005a066c","name":"Locked weapon crate (Rare)","value":-20,"costPerSlot":0,"weight":10,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"66572b88ac60f009f270d1dc":{"id":"66572b88ac60f009f270d1dc","name":"Locked supply crate (Rare)","value":-25,"costPerSlot":0,"weight":10,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66572b8d80b1cd4b6a67847f":{"id":"66572b8d80b1cd4b6a67847f","name":"Den figurine","value":33.4,"costPerSlot":37500,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66572bb3ac60f009f270d1df":{"id":"66572bb3ac60f009f270d1df","name":"Locked valuables crate (Rare)","value":-11,"costPerSlot":0,"weight":4,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"66572be36a723f7f005a066e":{"id":"66572be36a723f7f005a066e","name":"Reshala figurine","value":45.9,"costPerSlot":50000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66572c82ad599021091c6118":{"id":"66572c82ad599021091c6118","name":"Killa figurine","value":45.9,"costPerSlot":50000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66572cbdad599021091c611a":{"id":"66572cbdad599021091c611a","name":"Tagilla figurine","value":45.9,"costPerSlot":50000,"weight":0.2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"665730fa4de4820934746c48":{"id":"665730fa4de4820934746c48","name":"Unlocked equipment crate (Rare)","value":495,"costPerSlot":0,"weight":10,"size":16,"gridSize":400,"maxDim":4,"armorClass":0,"parentWeighting":0},"665732e7ac60f009f270d1ef":{"id":"665732e7ac60f009f270d1ef","name":"Unlocked weapon crate (Rare)","value":629.95,"costPerSlot":0,"weight":10.1,"size":10,"gridSize":500,"maxDim":5,"armorClass":0,"parentWeighting":0},"665732f4464c4b4ba4670fa9":{"id":"665732f4464c4b4ba4670fa9","name":"Unlocked supply crate (Rare)","value":495,"costPerSlot":0,"weight":10,"size":16,"gridSize":400,"maxDim":4,"armorClass":0,"parentWeighting":0},"66573310a1657263d816a139":{"id":"66573310a1657263d816a139","name":"Unlocked valuables crate (Rare)","value":509,"costPerSlot":0,"weight":4,"size":6,"gridSize":400,"maxDim":3,"armorClass":0,"parentWeighting":0},"665745c8a3c672c7b00bb355":{"id":"665745c8a3c672c7b00bb355","name":"","value":-4.1385000000000005,"costPerSlot":0,"weight":0.277,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6658285190486915542256c4":{"id":"6658285190486915542256c4","name":"Locked equipment crate (Epic)","value":-25,"costPerSlot":0,"weight":10,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66582889efd94e2d665b14a2":{"id":"66582889efd94e2d665b14a2","name":"Locked weapon crate (Epic)","value":-20,"costPerSlot":0,"weight":10,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"665828c44de4820934746ce4":{"id":"665828c44de4820934746ce4","name":"Locked supply crate (Epic)","value":-25,"costPerSlot":0,"weight":10,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"665828f490486915542256c6":{"id":"665828f490486915542256c6","name":"Locked valuables crate (Epic)","value":-11,"costPerSlot":0,"weight":4,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6658291eefd94e2d665b14a4":{"id":"6658291eefd94e2d665b14a4","name":"Unlocked equipment crate (Epic)","value":-13.299999999999999,"costPerSlot":0,"weight":10,"size":16,"gridSize":9,"maxDim":4,"armorClass":0,"parentWeighting":0},"665829424de4820934746ce6":{"id":"665829424de4820934746ce6","name":"Unlocked weapon crate (Epic)","value":-8.299999999999999,"costPerSlot":0,"weight":10,"size":10,"gridSize":9,"maxDim":5,"armorClass":0,"parentWeighting":0},"66582972ac60f009f270d2aa":{"id":"66582972ac60f009f270d2aa","name":"Unlocked supply crate (Epic)","value":-13.299999999999999,"costPerSlot":0,"weight":10,"size":16,"gridSize":9,"maxDim":4,"armorClass":0,"parentWeighting":0},"665829a6efd94e2d665b14a8":{"id":"665829a6efd94e2d665b14a8","name":"Unlocked valuables crate (Epic)","value":0.7000000000000011,"costPerSlot":0,"weight":4,"size":6,"gridSize":9,"maxDim":3,"armorClass":0,"parentWeighting":0},"665886abdaadd1069736c539":{"id":"665886abdaadd1069736c539","name":"Unlocked valuables crate (Common)","value":0.7000000000000011,"costPerSlot":0,"weight":4,"size":6,"gridSize":9,"maxDim":3,"armorClass":0,"parentWeighting":0},"6658876e146af22739040fad":{"id":"6658876e146af22739040fad","name":"Unlocked equipment crate (Common)","value":-13.299999999999999,"costPerSlot":0,"weight":10,"size":16,"gridSize":9,"maxDim":4,"armorClass":0,"parentWeighting":0},"665888282c4a1b73af576b77":{"id":"665888282c4a1b73af576b77","name":"Unlocked weapon crate (Common)","value":-8.299999999999999,"costPerSlot":0,"weight":10,"size":10,"gridSize":9,"maxDim":5,"armorClass":0,"parentWeighting":0},"6658892e6e007c6f33662002":{"id":"6658892e6e007c6f33662002","name":"Unlocked supply crate (Common)","value":-13.299999999999999,"costPerSlot":0,"weight":10,"size":16,"gridSize":9,"maxDim":4,"armorClass":0,"parentWeighting":0},"66588b514de4820934746dc6":{"id":"66588b514de4820934746dc6","name":"Locked equipment crate (Common)","value":-25,"costPerSlot":0,"weight":10,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66588b6dcb48a73e674b2649":{"id":"66588b6dcb48a73e674b2649","name":"Locked weapon crate (Common)","value":-20,"costPerSlot":0,"weight":10,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":0},"66588ba291f6e93c4c06efef":{"id":"66588ba291f6e93c4c06efef","name":"Locked supply crate (Common)","value":-25,"costPerSlot":0,"weight":10,"size":16,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66588bb047fbd536a674240e":{"id":"66588bb047fbd536a674240e","name":"Locked valuables crate (Common)","value":-11,"costPerSlot":0,"weight":4,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"665d5d9e338229cfd6078da1":{"id":"665d5d9e338229cfd6078da1","name":"BCM GUNFIGHTER MOD 3 M-LOK foregrip (Black)","value":12.614,"costPerSlot":14641,"weight":0.054,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"665edce564fb556f940ab32a":{"id":"665edce564fb556f940ab32a","name":"BCM GUNFIGHTER MOD 3 M-LOK foregrip (FDE)","value":2.596,"costPerSlot":4623,"weight":0.054,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"665ee77ccf2d642e98220bca":{"id":"665ee77ccf2d642e98220bca","name":"Secure container Gamma","value":1849.1000000000001,"costPerSlot":1850000,"weight":1.2,"size":9,"gridSize":9,"maxDim":3,"armorClass":0,"parentWeighting":0},"6662e9aca7e0b43baa3d5f74":{"id":"6662e9aca7e0b43baa3d5f74","name":"Dogtag BEAR","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6662e9cda7e0b43baa3d5f76":{"id":"6662e9cda7e0b43baa3d5f76","name":"Dogtag BEAR","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6662e9f37fa79a6d83730fa0":{"id":"6662e9f37fa79a6d83730fa0","name":"Dogtag USEC","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6662ea05f6259762c56f3189":{"id":"6662ea05f6259762c56f3189","name":"Dogtag USEC","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"666b11055a706400b717cfa5":{"id":"666b11055a706400b717cfa5","name":"Tripwire installation kit","value":22.467,"costPerSlot":24642,"weight":0.35,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66740c3739b9da6ce402ee65":{"id":"66740c3739b9da6ce402ee65","name":"","value":67.7,"costPerSlot":0,"weight":1,"size":1,"gridSize":54,"maxDim":1,"armorClass":0,"parentWeighting":0},"6680304edadb7aa61d00cef0":{"id":"6680304edadb7aa61d00cef0","name":"IWI UZI PRO Pistol 9x19 submachine gun","value":42.844,"costPerSlot":44674,"weight":1.66,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"668031705014e211b4078046":{"id":"668031705014e211b4078046","name":"UZI PRO 9x19 Pike Arms 114mm threaded barrel","value":9.265,"costPerSlot":13329,"weight":0.128,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"668031bde3e7eb26e8004cd7":{"id":"668031bde3e7eb26e8004cd7","name":"UZI PRO A3 Tactical M-LOK handguard","value":20.269000000000002,"costPerSlot":22309,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668031ffe3e7eb26e8004cdd":{"id":"668031ffe3e7eb26e8004cdd","name":"UZI PRO 9x19 20-round magazine","value":7.9,"costPerSlot":9997,"weight":0.194,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6680326874b8f2050c0b9178":{"id":"6680326874b8f2050c0b9178","name":"UZI PRO dust cover","value":-1.505,"costPerSlot":2630,"weight":0.27,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"668032ba74b8f2050c0b917d":{"id":"668032ba74b8f2050c0b917d","name":"UZI PRO Stabilizing Brace","value":4.327500000000001,"costPerSlot":8518,"weight":0.381,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66866f4ec3d473265104f381":{"id":"66866f4ec3d473265104f381","name":"UZI PRO 9x19 25-round magazine","value":0.36050000000000004,"costPerSlot":4474,"weight":0.227,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66866f622a2296a8d9099639":{"id":"66866f622a2296a8d9099639","name":"UZI PRO 9x19 32-round magazine","value":1.1315,"costPerSlot":5254.5,"weight":0.246,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66866fe776d1a87cd80fd388":{"id":"66866fe776d1a87cd80fd388","name":"UZI PRO 9x19 114mm barrel","value":3.9695,"costPerSlot":8035,"weight":0.131,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6686700a2b934a68630a7fe6":{"id":"6686700a2b934a68630a7fe6","name":"UZI PRO 9x19 170mm barrel","value":-4.204,"costPerSlot":1891,"weight":0.19,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"66867023c3d473265104f384":{"id":"66867023c3d473265104f384","name":"UZI PRO 9x19 210mm barrel","value":-3.9295,"costPerSlot":2191,"weight":0.241,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"668670432b934a68630a7fe8":{"id":"668670432b934a68630a7fe8","name":"UZI PRO 9x19 240mm barrel","value":-2.626,"costPerSlot":3518,"weight":0.288,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"668670e3fb75ee4a5e02eb16":{"id":"668670e3fb75ee4a5e02eb16","name":"UZI PRO 9x19 barrel retaining nut","value":-1.6675,"costPerSlot":375,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668670f52a2296a8d909963c":{"id":"668670f52a2296a8d909963c","name":"UZI PRO 9x19 Masada thread protector","value":-1.5705,"costPerSlot":472,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6686717ffb75ee4a5e02eb19":{"id":"6686717ffb75ee4a5e02eb19","name":"UZI PRO A3 Tactical Modular Folding Brace","value":0.35799999999999965,"costPerSlot":4409,"weight":0.102,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"668672b8c99550c6fd0f0b29":{"id":"668672b8c99550c6fd0f0b29","name":"UZI PRO A3 Tactical Rear Stock Adapter","value":-1.159,"costPerSlot":856,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66867310f3734a938b077f79":{"id":"66867310f3734a938b077f79","name":"UZI PRO SBR buttstock","value":5.3965,"costPerSlot":9623.5,"weight":0.454,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66881008f23233ee9a0742e7":{"id":"66881008f23233ee9a0742e7","name":"UZI PRO backplate","value":8.2915,"costPerSlot":10312,"weight":0.041,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668e71a8dadf42204c032ce1":{"id":"668e71a8dadf42204c032ce1","name":"IWI UZI PRO SMG 9x19 submachine gun","value":29.907000000000004,"costPerSlot":33861,"weight":1.9079999999999997,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"668ea3f68117e4968b0cff4a":{"id":"668ea3f68117e4968b0cff4a","name":"UZI PRO SMG rail adapter","value":25.324,"costPerSlot":27359,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668fe5a998b5ad715703ddd6":{"id":"668fe5a998b5ad715703ddd6","name":"Magnum Research Desert Eagle Mk XIX .50 AE pistol","value":41.502,"costPerSlot":43500,"weight":1.9959999999999998,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"668fe5c5f35310705d02b696":{"id":"668fe5c5f35310705d02b696","name":"Desert Eagle .50 AE 7-round magazine","value":7.3469999999999995,"costPerSlot":9437,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668fe5d42a0f85eea407cc16":{"id":"668fe5d42a0f85eea407cc16","name":"Desert Eagle Hogue Rubber Grip","value":0.9019999999999997,"costPerSlot":2957,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668fe5e1800f0244f9036e46":{"id":"668fe5e1800f0244f9036e46","name":"Desert Eagle rear sight","value":-1.35,"costPerSlot":653,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668fe5ec4315934ba10c6f96":{"id":"668fe5ec4315934ba10c6f96","name":"Desert Eagle front sight","value":-1.4375,"costPerSlot":565,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668fe5f62a0f85eea407cc18":{"id":"668fe5f62a0f85eea407cc18","name":"Desert Eagle Mk XIX .50 AE 152mm barrel","value":0.5070000000000001,"costPerSlot":2725,"weight":0.436,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"668fe60b56984d93550462c6":{"id":"668fe60b56984d93550462c6","name":"Desert Eagle Mk XIX pistol slide","value":-2.1875,"costPerSlot":2027.5,"weight":0.43,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"668fe62ac62660a5d8071446":{"id":"668fe62ac62660a5d8071446","name":".50 AE FMJ","value":8.922,"costPerSlot":936,"weight":0.028,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6694f4101ae1778e310f4f8e":{"id":"6694f4101ae1778e310f4f8e","name":"Twitch Drops Summer 2024 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"6694f418c74d8a180f0f78c0":{"id":"6694f418c74d8a180f0f78c0","name":"Twitch Drops Summer 2024 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"6694f423909d2322a8073151":{"id":"6694f423909d2322a8073151","name":"Twitch Drops Summer 2024 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"6698c89bfbc8142e60024b0e":{"id":"6698c89bfbc8142e60024b0e","name":"UZI 238mm threaded 3-lug barrel","value":-0.8370000000000002,"costPerSlot":3227,"weight":0.128,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6698c8ab29e062525d0ad8ab":{"id":"6698c8ab29e062525d0ad8ab","name":"UZI 9x19 259mm barrel","value":2.5919999999999996,"costPerSlot":6736,"weight":0.288,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6698c8b7710a4525fe0e9e55":{"id":"6698c8b7710a4525fe0e9e55","name":"UZI 9x19 409mm barrel","value":-2.811,"costPerSlot":3333,"weight":0.288,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"6698c8c736ba38d29101770b":{"id":"6698c8c736ba38d29101770b","name":"UZI polymer handguard","value":1.3399999999999999,"costPerSlot":3415,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6698c8f4710a4525fe0e9e57":{"id":"6698c8f4710a4525fe0e9e57","name":"UZI handguard rail","value":22.505,"costPerSlot":24540,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6698c90829e062525d0ad8ad":{"id":"6698c90829e062525d0ad8ad","name":"UZI StormWerkz Scope Mount","value":1.2730000000000001,"costPerSlot":3298,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6698c9aa36ba38d29101770f":{"id":"6698c9aa36ba38d29101770f","name":"UZI 9x19 barrel retaining nut","value":-1.6915,"costPerSlot":351,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6698c9ba29e062525d0ad8b1":{"id":"6698c9ba29e062525d0ad8b1","name":"UZI 9x19 3-lug barrel retaining nut","value":-1.5965,"costPerSlot":446,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6698c9c636ba38d291017711":{"id":"6698c9c636ba38d291017711","name":"UZI 9x19 3-lug barrel thread protector","value":-1.6425,"costPerSlot":400,"weight":0.085,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6698c9e07356874dfe0a0b88":{"id":"6698c9e07356874dfe0a0b88","name":"UZI Type 7 buttstock","value":-3.2815,"costPerSlot":923.5,"weight":0.41,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6698c9ed36ba38d291017713":{"id":"6698c9ed36ba38d291017713","name":"UZI Type 3 buttstock","value":0.23650000000000038,"costPerSlot":4461.5,"weight":0.45,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6699249f3c4fda6471005cba":{"id":"6699249f3c4fda6471005cba","name":"UZI Type 5 buttstock","value":-3.4015,"costPerSlot":923.5,"weight":0.65,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"669924a69950f5f4cd060295":{"id":"669924a69950f5f4cd060295","name":"UZI Type 6 buttstock","value":2.4720000000000004,"costPerSlot":6617,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66992713ae08c5c29e0c4f97":{"id":"66992713ae08c5c29e0c4f97","name":"UZI 9x19 20-round magazine","value":-1.103,"costPerSlot":997,"weight":0.2,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6699271b9950f5f4cd060299":{"id":"6699271b9950f5f4cd060299","name":"UZI 9x19 25-round magazine","value":-0.41800000000000015,"costPerSlot":3695.5,"weight":0.227,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"669927203c4fda6471005cbe":{"id":"669927203c4fda6471005cbe","name":"UZI 9x19 32-round magazine","value":0.7445000000000004,"costPerSlot":4869.5,"weight":0.25,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66992725ae08c5c29e0c4f9a":{"id":"66992725ae08c5c29e0c4f9a","name":"UZI 9x19 40-round magazine","value":3.2490000000000006,"costPerSlot":7379,"weight":0.26,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6699272a3c4fda6471005cc1":{"id":"6699272a3c4fda6471005cc1","name":"UZI 9x19 50-round magazine","value":5.640666666666666,"costPerSlot":11790.666666666666,"weight":0.3,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"66992b349950f5f4cd06029f":{"id":"66992b349950f5f4cd06029f","name":"IWI UZI 9x19 submachine gun","value":27.4155,"costPerSlot":32503,"weight":4.175,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":3},"66992f4db9f31ddda10dd1c8":{"id":"66992f4db9f31ddda10dd1c8","name":"UZI StormWerkz stock adapter","value":8.407,"costPerSlot":10438,"weight":0.062,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66992f7d9950f5f4cd0602a8":{"id":"66992f7d9950f5f4cd0602a8","name":"UZI StormWerkz lower handguard rail","value":-0.047499999999999876,"costPerSlot":1965,"weight":0.025,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6699313af74fef4dfd0b04f6":{"id":"6699313af74fef4dfd0b04f6","name":"UZI K-Grip handguard","value":17.91,"costPerSlot":20000,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66993149558c59581e03c028":{"id":"66993149558c59581e03c028","name":"UZI handguard with foregrip","value":14.509,"costPerSlot":16599,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6699370c57df3e2b4e0a0dab":{"id":"6699370c57df3e2b4e0a0dab","name":"UZI vented barrel shroud","value":5.625000000000001,"costPerSlot":7685,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66993733f74fef4dfd0b04ff":{"id":"66993733f74fef4dfd0b04ff","name":"UZI 9x19 sound suppressor","value":17.71,"costPerSlot":22050,"weight":0.68,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"669946c157df3e2b4e0a0dc5":{"id":"669946c157df3e2b4e0a0dc5","name":"UZI pistol grip cover","value":-1.05,"costPerSlot":985,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669a6a4a525be1d2d004b8eb":{"id":"669a6a4a525be1d2d004b8eb","name":"Magpul M-LOK 0.93 inch rail","value":12.730500000000001,"costPerSlot":14748,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669cf78806768ff39504fc1c":{"id":"669cf78806768ff39504fc1c","name":"UZI PRO CSM stock adapter","value":9.818000000000001,"costPerSlot":11838,"weight":0.04,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669fa39b48fc9f8db6035a0c":{"id":"669fa39b48fc9f8db6035a0c","name":"Magnum Research Desert Eagle L6 .50 AE pistol","value":39.264500000000005,"costPerSlot":41142,"weight":1.7549999999999997,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"669fa3d876116c89840b1217":{"id":"669fa3d876116c89840b1217","name":"Magnum Research Desert Eagle L6 .50 AE pistol (WTS)","value":55.8785,"costPerSlot":57756,"weight":1.7549999999999997,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"669fa3f88abd2662d80eee77":{"id":"669fa3f88abd2662d80eee77","name":"Magnum Research Desert Eagle L5 .50 AE pistol","value":38.3705,"costPerSlot":40124,"weight":1.5070000000000001,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"669fa409933e898cce0c2166":{"id":"669fa409933e898cce0c2166","name":"Magnum Research Desert Eagle L5 .357 pistol","value":36.9205,"costPerSlot":38674,"weight":1.5070000000000001,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"669fa435803b94fb5d0e3a76":{"id":"669fa435803b94fb5d0e3a76","name":"Desert Eagle .357 9-round magazine","value":8.152000000000001,"costPerSlot":10242,"weight":0.18,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669fa47da0bab4e8510d9526":{"id":"669fa47da0bab4e8510d9526","name":"Desert Eagle L6 .50 AE 152mm barrel","value":0.20500000000000007,"costPerSlot":2423,"weight":0.436,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669fa48fa0bab4e8510d952a":{"id":"669fa48fa0bab4e8510d952a","name":"Desert Eagle L6 .50 AE 152mm barrel (WTS)","value":38.644999999999996,"costPerSlot":40863,"weight":0.436,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669fa4ba1bd4416eaa09b3c6":{"id":"669fa4ba1bd4416eaa09b3c6","name":"Desert Eagle L5 .50 AE 127mm barrel","value":-0.23499999999999988,"costPerSlot":1933,"weight":0.336,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669fa4c61bd4416eaa09b3ca":{"id":"669fa4c61bd4416eaa09b3ca","name":"Desert Eagle L5 .357 127mm barrel","value":-0.21099999999999985,"costPerSlot":1957,"weight":0.336,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"669fa4d97a09bc295603b496":{"id":"669fa4d97a09bc295603b496","name":"Desert Eagle L6 pistol slide","value":-2.2365,"costPerSlot":1978.5,"weight":0.43,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"669fa5019aa2a422600442f6":{"id":"669fa5019aa2a422600442f6","name":"Desert Eagle L5 .50 AE pistol slide","value":-2.6005000000000003,"costPerSlot":1554.5,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"669fa5127a09bc295603b499":{"id":"669fa5127a09bc295603b499","name":"Desert Eagle L5 .357 pistol slide","value":-2.258,"costPerSlot":1897,"weight":0.31,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"669fa5271bd4416eaa09b3ce":{"id":"669fa5271bd4416eaa09b3ce","name":"Desert Eagle L6 pistol slide (WTS)","value":16.689,"costPerSlot":20904,"weight":0.43,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66a0d1c87d0d369e270bb9de":{"id":"66a0d1c87d0d369e270bb9de","name":".50 AE JHP","value":8.2385,"costPerSlot":253,"weight":0.029,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66a0d1e0ed648d72fe064d06":{"id":"66a0d1e0ed648d72fe064d06","name":".50 AE Copper Solid","value":8.4775,"costPerSlot":495,"weight":0.035,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66a0d1f88486c69fce00fdf6":{"id":"66a0d1f88486c69fce00fdf6","name":".50 AE Hawk JSP","value":8.198,"costPerSlot":217,"weight":0.038,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66a0da76b6f47fcfeb025e96":{"id":"66a0da76b6f47fcfeb025e96","name":"Desert Eagle Hogue Rubber Grip with finger grooves","value":25.206000000000003,"costPerSlot":27266,"weight":0.12,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66a3896972c8e72507028806":{"id":"66a3896972c8e72507028806","name":"Twitch Drops Summer 2024 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"66a3896de45f71bf1009e45a":{"id":"66a3896de45f71bf1009e45a","name":"Twitch Drops Summer 2024 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"66a3898c1df2a447cc0d3c35":{"id":"66a3898c1df2a447cc0d3c35","name":"Twitch Drops Summer 2024 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"66a3898f0982fc7e4c091c4d":{"id":"66a3898f0982fc7e4c091c4d","name":"Twitch Drops Summer 2024 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"66a389c0705adefa710cdeaa":{"id":"66a389c0705adefa710cdeaa","name":"Twitch Drops Summer 2024 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"66a389c60982fc7e4c091c51":{"id":"66a389c60982fc7e4c091c51","name":"Twitch Drops Summer 2024 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"66a9f98f3bd5a41b162030f4":{"id":"66a9f98f3bd5a41b162030f4","name":"Partisan's bag","value":138.524,"costPerSlot":126874,"weight":0.7,"size":12,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":2},"66aa3a180d6ecb50a21a4e1a":{"id":"66aa3a180d6ecb50a21a4e1a","name":"Twitch Drops Summer 2024 case (Common)","value":512,"costPerSlot":0,"weight":4,"size":4,"gridSize":400,"maxDim":2,"armorClass":0,"parentWeighting":0},"66aa3a31efb1b8119f0196c7":{"id":"66aa3a31efb1b8119f0196c7","name":"Twitch Drops Summer 2024 case (Rare)","value":512,"costPerSlot":0,"weight":4,"size":4,"gridSize":400,"maxDim":2,"armorClass":0,"parentWeighting":0},"66aa3a3800b2c42adb07d13e":{"id":"66aa3a3800b2c42adb07d13e","name":"Twitch Drops Summer 2024 case (Epic)","value":512,"costPerSlot":0,"weight":4,"size":4,"gridSize":400,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ac9d9740e27931602042d4":{"id":"66ac9d9740e27931602042d4","name":"AK skeletonized stock (Customized)","value":10.276,"costPerSlot":14408,"weight":0.264,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66acd6702b17692df20144c0":{"id":"66acd6702b17692df20144c0","name":"TerraGroup storage room keycard","value":2670.075,"costPerSlot":2672080,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66acff0a1d8e1083b303f5af":{"id":"66acff0a1d8e1083b303f5af","name":"Bank safe","value":9.200000000000001,"costPerSlot":0,"weight":1,"size":1,"gridSize":9,"maxDim":1,"armorClass":0,"parentWeighting":0},"66b37ea4c5d72b0277488439":{"id":"66b37ea4c5d72b0277488439","name":"Tamatthi kunai knife replica","value":38.6025,"costPerSlot":42821.5,"weight":0.438,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66b37eb4acff495a29492407":{"id":"66b37eb4acff495a29492407","name":"Viibiin sneaker","value":24.1625,"costPerSlot":28372.5,"weight":0.42,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66b37f114410565a8f6789e2":{"id":"66b37f114410565a8f6789e2","name":"Inseq gas pipe wrench","value":14.52,"costPerSlot":18786.5,"weight":0.533,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66b5f22b78bbc0200425f904":{"id":"66b5f22b78bbc0200425f904","name":"Camelbak Tri-Zip assault backpack (MultiCam)","value":98.313,"costPerSlot":94413,"weight":2.2,"size":30,"gridSize":30,"maxDim":6,"armorClass":0,"parentWeighting":2},"66b5f247af44ca0014063c02":{"id":"66b5f247af44ca0014063c02","name":"Vertx Ready Pack backpack (Red)","value":20.0185,"costPerSlot":17445,"weight":0.453,"size":16,"gridSize":16,"maxDim":4,"armorClass":0,"parentWeighting":2},"66b5f65ca7f72d197e70bcd6":{"id":"66b5f65ca7f72d197e70bcd6","name":"Ballistic Armor Co. Bastion helmet (Armor Black)","value":87.29,"costPerSlot":89010,"weight":1.44,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b5f661af44ca0014063c05":{"id":"66b5f661af44ca0014063c05","name":"Ballistic Armor Co. Bastion helmet (OD Green)","value":79.955,"costPerSlot":81675,"weight":1.44,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b5f666cad6f002ab7214c2":{"id":"66b5f666cad6f002ab7214c2","name":"Ballistic Armor Co. Bastion helmet (MultiCam)","value":73.604,"costPerSlot":75324,"weight":1.44,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b5f68de98be930d701c00e":{"id":"66b5f68de98be930d701c00e","name":"Safariland Liberator HP 2.0 Hearing Protection Headset (FDE)","value":9.72475,"costPerSlot":10894.75,"weight":0.34,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b5f693acff495a294927e3":{"id":"66b5f693acff495a294927e3","name":"Peltor ComTac V headset (OD Green)","value":21.00575,"costPerSlot":22173.25,"weight":0.335,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b5f6985891c84aab75ca76":{"id":"66b5f6985891c84aab75ca76","name":"Peltor ComTac VI headset (Coyote Brown)","value":25.135250000000003,"costPerSlot":26324.75,"weight":0.379,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b5f69ea7f72d197e70bcdb":{"id":"66b5f69ea7f72d197e70bcdb","name":"TW EXFIL Peltor ComTac V headset (OD Green)","value":31.4565,"costPerSlot":30654,"weight":0.395,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b5f6a28ca68c6461709ed8":{"id":"66b5f6a28ca68c6461709ed8","name":"TW EXFIL Peltor ComTac VI headset (Coyote Brown)","value":27.596,"costPerSlot":26815.5,"weight":0.439,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66b61ce0c5d72b027748867e":{"id":"66b61ce0c5d72b027748867e","name":"Hybrid composite materials","value":67.643,"costPerSlot":29643,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"66b61cfae98be930d701c029":{"id":"66b61cfae98be930d701c029","name":"Hybrid composite materials","value":67.643,"costPerSlot":29643,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"66b6295178bbc0200425f995":{"id":"66b6295178bbc0200425f995","name":"Stich Profi Stich Defense mod.2 plate carrier (MultiCam)","value":144.406,"costPerSlot":142061,"weight":1.71,"size":12,"gridSize":14,"maxDim":4,"armorClass":0,"parentWeighting":1},"66b6295a8ca68c6461709efa":{"id":"66b6295a8ca68c6461709efa","name":"Tasmanian Tiger Plate Carrier MKIII (Coyote Brown)","value":139.115,"costPerSlot":132155,"weight":3.08,"size":9,"gridSize":15,"maxDim":3,"armorClass":0,"parentWeighting":1},"66b6296d7994640992013b17":{"id":"66b6296d7994640992013b17","name":"Stich Profi Plate Carrier V2 (Black)","value":92.76100000000001,"costPerSlot":82861,"weight":2.2,"size":12,"gridSize":20,"maxDim":4,"armorClass":0,"parentWeighting":1},"66b884eaacff495a29492849":{"id":"66b884eaacff495a29492849","name":"Aramid insert","value":36.474000000000004,"costPerSlot":18474,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"66b884f4c5d72b02774886eb":{"id":"66b884f4c5d72b02774886eb","name":"Aramid insert","value":36.474000000000004,"costPerSlot":18474,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"66b884fd7994640992013b37":{"id":"66b884fd7994640992013b37","name":"Aramid insert","value":25.466,"costPerSlot":7466,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"66b8851678bbc0200425fa03":{"id":"66b8851678bbc0200425fa03","name":"Aramid insert","value":21.463,"costPerSlot":3463,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"66b88521a7f72d197e70be3b":{"id":"66b88521a7f72d197e70be3b","name":"Aramid insert","value":21.463,"costPerSlot":3463,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":2,"parentWeighting":0},"66b8b20c5891c84aab75cb96":{"id":"66b8b20c5891c84aab75cb96","name":"Aramid insert","value":79.63,"costPerSlot":51630,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66b8b217c5d72b02774887b4":{"id":"66b8b217c5d72b02774887b4","name":"Aramid insert","value":79.63,"costPerSlot":51630,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66b8b223a7f72d197e70bed3":{"id":"66b8b223a7f72d197e70bed3","name":"Aramid insert","value":50.093,"costPerSlot":22093,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66b8b22b78bbc0200425fb20":{"id":"66b8b22b78bbc0200425fb20","name":"Aramid insert","value":50.093,"costPerSlot":22093,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66bc98a01a47be227a5e956e":{"id":"66bc98a01a47be227a5e956e","name":"Streamer item case","value":140.15555555555557,"costPerSlot":55555.555555555555,"weight":7,"size":9,"gridSize":77,"maxDim":3,"armorClass":0,"parentWeighting":0},"66bdc28a0b603c26902b2011":{"id":"66bdc28a0b603c26902b2011","name":"DevTac Ronin ballistic helmet","value":35.484,"costPerSlot":37284,"weight":1.6,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"66bdc2c90b603c26902b2018":{"id":"66bdc2c90b603c26902b2018","name":"Hybrid composite materials","value":38.555,"costPerSlot":10555,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66bdc2d051aa8c345646d03f":{"id":"66bdc2d051aa8c345646d03f","name":"Hybrid composite materials","value":38.555,"costPerSlot":10555,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66bdc2d9408f1e66eb4fd957":{"id":"66bdc2d9408f1e66eb4fd957","name":"Hybrid composite materials","value":38.555,"costPerSlot":10555,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66bdc2e25f17154509115d1e":{"id":"66bdc2e25f17154509115d1e","name":"Hybrid composite materials","value":38.555,"costPerSlot":10555,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66bdc2ea8cbd597c9c2f9360":{"id":"66bdc2ea8cbd597c9c2f9360","name":"Hybrid composite materials","value":38.555,"costPerSlot":10555,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":3,"parentWeighting":0},"66d97834d2985e11480d5c1e":{"id":"66d97834d2985e11480d5c1e","name":"Signal flare (Blue)","value":8.0425,"costPerSlot":74,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66d98233302686954b0c6f81":{"id":"66d98233302686954b0c6f81","name":"RSP-30 reactive signal cartridge (Blue)","value":3.9050000000000002,"costPerSlot":5000,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"66d9f1abb16d9aacf5068468":{"id":"66d9f1abb16d9aacf5068468","name":"RSP-30 reactive signal cartridge (Special Yellow)","value":3.9050000000000002,"costPerSlot":5000,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"66d9f3047b82b9a9aa055d81":{"id":"66d9f3047b82b9a9aa055d81","name":"Signal flare (Special Yellow)","value":8.0425,"costPerSlot":74,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66d9f7256916142b3b02276e":{"id":"66d9f7256916142b3b02276e","name":"Radar station spare parts","value":-10.444444444444445,"costPerSlot":5555.555555555556,"weight":8,"size":9,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"66d9f7e7099cf6adcc07a369":{"id":"66d9f7e7099cf6adcc07a369","name":"KOSA UAV electronic jamming device","value":-2.166666666666666,"costPerSlot":8333.333333333334,"weight":3,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"66d9f8744827a77e870ecaf1":{"id":"66d9f8744827a77e870ecaf1","name":"GARY ZONT portable electronic warfare device","value":70.6,"costPerSlot":75000,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66da1b49099cf6adcc07a36b":{"id":"66da1b49099cf6adcc07a36b","name":"Airdrop technical supply crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"66da1b546916142b3b022777":{"id":"66da1b546916142b3b022777","name":"Airdrop technical supply crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"66dae7cbeb28f0f96809f325":{"id":"66dae7cbeb28f0f96809f325","name":"V40 Mini-Grenade","value":22.149,"costPerSlot":14217,"weight":0.136,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66ec2aa6daf127599c0c31f1":{"id":"66ec2aa6daf127599c0c31f1","name":"O-832DU Shrapnel","value":7.995,"costPerSlot":0,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"66ffa9b66e19cc902401c5e8":{"id":"66ffa9b66e19cc902401c5e8","name":"MPS Auto Assault-12 Gen 1 12ga automatic shotgun","value":-10.093699999999998,"costPerSlot":4451.3,"weight":5.09,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"66ffaab91f7492c901027bb8":{"id":"66ffaab91f7492c901027bb8","name":"AA-12 12ga 8-round magazine","value":6.464500000000001,"costPerSlot":10634.5,"weight":0.34,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffac601f7492c901027bbb":{"id":"66ffac601f7492c901027bbb","name":"AA-12 12ga 330mm barrel","value":0.3434999999999997,"costPerSlot":4743.5,"weight":0.8,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffac9e316b08f6840a73e6":{"id":"66ffac9e316b08f6840a73e6","name":"AA-12 stock assembly","value":-11.360875,"costPerSlot":1089.125,"weight":0.9,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"66ffbfb1a73a7bce3d0b45a8":{"id":"66ffbfb1a73a7bce3d0b45a8","name":"FN SCAR Vltor RE-SCAR Stock Adapter","value":9.682500000000001,"costPerSlot":13827.5,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffc20ba73a7bce3d0b45ab":{"id":"66ffc20ba73a7bce3d0b45ab","name":"FN SCAR Vltor RE-SCAR Stock Adapter (Patriot Brown)","value":5.7745000000000015,"costPerSlot":9919.5,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffc246a81a4f85e70d4d06":{"id":"66ffc246a81a4f85e70d4d06","name":"FN SCAR JMac Customs RSA-SCAR 1913 Adapter","value":20.961,"costPerSlot":22999,"weight":0.076,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffc2bd132225f0fe0611d8":{"id":"66ffc2bd132225f0fe0611d8","name":"FN SCAR Vltor VSS-11 polymer stock","value":13.3845,"costPerSlot":17494.5,"weight":0.22,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffc2ecfe9b3825960652f7":{"id":"66ffc2ecfe9b3825960652f7","name":"FN SCAR Vltor VSS-11 polymer stock (Patriot Brown)","value":12.099,"costPerSlot":16209,"weight":0.22,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffc6ceb7ff397142017c3a":{"id":"66ffc6ceb7ff397142017c3a","name":"FN SCAR Kinetic MREX 6.5 M-LOK rail (FDE)","value":6.797000000000001,"costPerSlot":10910,"weight":0.226,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffc72082d36dec82030c1f":{"id":"66ffc72082d36dec82030c1f","name":"FN SCAR PMM M-LOK lower rail","value":-0.5954999999999999,"costPerSlot":1427,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffc903fe9b382596065304":{"id":"66ffc903fe9b382596065304","name":"FN SCAR PMM M-LOK lower rail (FDE)","value":-0.6275,"costPerSlot":1395,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffe2fbab3336cc0106382b":{"id":"66ffe2fbab3336cc0106382b","name":"FN SCAR PMM MRE XL rail extension","value":7.0915,"costPerSlot":9154,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffe5edfe9b38259606530d":{"id":"66ffe5edfe9b38259606530d","name":"FN SCAR PMM MRE XL rail extension (FDE)","value":4.0875,"costPerSlot":6150,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffe66a20771d839f0fb4a9":{"id":"66ffe66a20771d839f0fb4a9","name":"FN SCAR PMM Rail Elimination Panels","value":0.5169999999999999,"costPerSlot":2520,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffe6916f11538c7d0581e1":{"id":"66ffe6916f11538c7d0581e1","name":"FN SCAR PMM Rail Elimination Panels (FDE)","value":0.45699999999999985,"costPerSlot":2460,"weight":0.006,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffe6c36f11538c7d0581e3":{"id":"66ffe6c36f11538c7d0581e3","name":"FN SCAR PMM M-LOK side rails","value":-0.7734999999999999,"costPerSlot":1237,"weight":0.021,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffe7bab8da88805e07a03e":{"id":"66ffe7bab8da88805e07a03e","name":"FN SCAR PMM M-LOK side rails (FDE)","value":-0.8025,"costPerSlot":1208,"weight":0.021,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffe811f5d758d71101e89a":{"id":"66ffe811f5d758d71101e89a","name":"FN SCAR Vltor CASV-SCAR handguard","value":3.6365000000000007,"costPerSlot":7781.5,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffea06132225f0fe061394":{"id":"66ffea06132225f0fe061394","name":"FN SCAR Vltor CASV-SCAR handguard (Patriot Brown)","value":2.2745000000000006,"costPerSlot":6419.5,"weight":0.29,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"66ffea456be19fd81e0ef742":{"id":"66ffea456be19fd81e0ef742","name":"FN SCAR Vltor CASV-SCAR Handguard Extender","value":17.717000000000002,"costPerSlot":19772,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"66ffeab4ab3336cc01063833":{"id":"66ffeab4ab3336cc01063833","name":"FN SCAR Vltor CASV-SCAR Handguard Extender (Patriot Brown)","value":10.682,"costPerSlot":12737,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67069c8cee8138ed2f05ad34":{"id":"67069c8cee8138ed2f05ad34","name":"SR-3MP dovetail side rail (Black)","value":9.89,"costPerSlot":11945,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67069cbbb29a2cd33803338c":{"id":"67069cbbb29a2cd33803338c","name":"SR-3MP dovetail side rail (Plum)","value":3.7230000000000008,"costPerSlot":5778,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67069cf1af4890b09f0006e8":{"id":"67069cf1af4890b09f0006e8","name":"SR-3MP side rails (Black)","value":32.099000000000004,"costPerSlot":34124,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67069d02ad91f3a63c0bc2b0":{"id":"67069d02ad91f3a63c0bc2b0","name":"SR-3MP side rails (Plum)","value":30.078000000000003,"costPerSlot":32103,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67069d3bb29a2cd338033390":{"id":"67069d3bb29a2cd338033390","name":"HK HKey 3 inch rail","value":-0.982,"costPerSlot":1053,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67069d66af4890b09f0006ec":{"id":"67069d66af4890b09f0006ec","name":"HK G36 KAC Quad Rail handguard","value":8.616999999999999,"costPerSlot":12872,"weight":0.51,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67069d8dad91f3a63c0bc2b4":{"id":"67069d8dad91f3a63c0bc2b4","name":"HK G36 Slim Line HKey Handguard","value":6.5305,"costPerSlot":10750.5,"weight":0.44,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6706a159c67236b2f703bb95":{"id":"6706a159c67236b2f703bb95","name":"HK G36 Tommy Built AR Stock Adapter","value":9.4255,"costPerSlot":13495.5,"weight":0.14,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6707d0804e617ec94f0e562f":{"id":"6707d0804e617ec94f0e562f","name":"TG-Vi-24 lethal vaccine","value":57.885,"costPerSlot":60000,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6707d0bdaab679420007e01a":{"id":"6707d0bdaab679420007e01a","name":"TG-Vi-24 true vaccine","value":62.885000000000005,"costPerSlot":65000,"weight":0.23,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6707d13e4e617ec94f0e5631":{"id":"6707d13e4e617ec94f0e5631","name":"Flash drive with special software","value":0.363,"costPerSlot":2403,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6709133fa532466d5403fb7c":{"id":"6709133fa532466d5403fb7c","name":"AA-12 12ga 20-round drum magazine","value":4.26525,"costPerSlot":10830.25,"weight":1.13,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"670ad7f1ad195290cd00da7a":{"id":"670ad7f1ad195290cd00da7a","name":"Infectious strike","value":-1.1114999999999995,"costPerSlot":0,"weight":0.223,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"670e8eab8c1bb0e5a7075acf":{"id":"670e8eab8c1bb0e5a7075acf","name":"PM 9x18PM 90-93 8-round magazine","value":-2.0225,"costPerSlot":0,"weight":0.045,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"670fced86a7e274b1a0964e8":{"id":"670fced86a7e274b1a0964e8","name":"AA-12 12ga 457mm barrel","value":0.7723333333333331,"costPerSlot":7342.333333333333,"weight":1.14,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"670fd03dc424cf758f006946":{"id":"670fd03dc424cf758f006946","name":"AA-12 12ga 342mm threaded barrel","value":0.7515000000000001,"costPerSlot":5236.5,"weight":0.97,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"670fd0a8d8d4eae4790c8187":{"id":"670fd0a8d8d4eae4790c8187","name":"AA-12 12ga 417mm threaded barrel","value":1.1580000000000004,"costPerSlot":7673,"weight":1.03,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"670fd0eed8d4eae4790c818a":{"id":"670fd0eed8d4eae4790c818a","name":"AA-12 thread protector","value":-1.549,"costPerSlot":456,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"670fd1cc95c92bfc8e0bea39":{"id":"670fd1cc95c92bfc8e0bea39","name":"AA-12 12ga choke","value":7.5145,"costPerSlot":9565,"weight":0.101,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"670fd23798663bc4b10e911a":{"id":"670fd23798663bc4b10e911a","name":"AA-12 stock assembly (FDE)","value":-11.360875,"costPerSlot":1089.125,"weight":0.9,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"6710cea62bb09af72f0e6bf8":{"id":"6710cea62bb09af72f0e6bf8","name":"Leapers UTG Universal Shotgun Barrel Mount","value":12.0275,"costPerSlot":14090,"weight":0.125,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6711039f9e648049e50b3307":{"id":"6711039f9e648049e50b3307","name":"TerraGroup Labs residential unit keycard ","value":162.995,"costPerSlot":165000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67110d06723c2733410161e8":{"id":"67110d06723c2733410161e8","name":"HK G36 IDZ adjustable stock","value":7.415000000000001,"costPerSlot":11620,"weight":0.41,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67110d5ed1758189fc0bd221":{"id":"67110d5ed1758189fc0bd221","name":"HK G36 IDZ Convex Buttpad","value":22.419999999999998,"costPerSlot":24450,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67110d6fa71d1f123d021cd3":{"id":"67110d6fa71d1f123d021cd3","name":"HK G36 IDZ Concave Buttpad","value":0.3640000000000003,"costPerSlot":2394,"weight":0.06,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67110d8d388bded67304ceb4":{"id":"67110d8d388bded67304ceb4","name":"Steyr AUG A3 Vltor 5.56x45 receiver","value":8.287500000000001,"costPerSlot":12637.5,"weight":0.7,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67110dd41ad01bb88705347b":{"id":"67110dd41ad01bb88705347b","name":"Steyr AUG A3 Corvus Defensio Receiver Rail MOI 30 Slots","value":5.7075,"costPerSlot":9797.5,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6711107e1ad01bb88705347e":{"id":"6711107e1ad01bb88705347e","name":"Steyr AUG Corvus Defensio KeyMod Forward Accessory Rail","value":18.3405,"costPerSlot":20369,"weight":0.057,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67111094d1758189fc0bd223":{"id":"67111094d1758189fc0bd223","name":"Corvus Defensio KeyMod 1.8 inch rail section","value":24.65,"costPerSlot":26755,"weight":0.21,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6711109e723c2733410161eb":{"id":"6711109e723c2733410161eb","name":"Corvus Defensio KeyMod 6.8 inch rail section","value":24.1965,"costPerSlot":26225,"weight":0.057,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67112695fe5c8bf33f02476d":{"id":"67112695fe5c8bf33f02476d","name":"Odin Works K-Pod KeyMod bipod adapter","value":8.112499999999999,"costPerSlot":10123,"weight":0.021,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"671126a210d67adb5b08e925":{"id":"671126a210d67adb5b08e925","name":"AI AXMC KeySlot Harris bipod mount","value":2.9080000000000004,"costPerSlot":4923,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"671126b049e181972e0681fa":{"id":"671126b049e181972e0681fa","name":"Magpul M-LOK Bipod Mount","value":-0.9049999999999998,"costPerSlot":1110,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67124dcfa3541f2a1f0e788b":{"id":"67124dcfa3541f2a1f0e788b","name":"MPS Auto Assault-12 Gen 2 12ga automatic shotgun","value":-9.927299999999999,"costPerSlot":4652.7,"weight":5.159999999999999,"size":10,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"6718817435e3cfd9550d2c27":{"id":"6718817435e3cfd9550d2c27","name":"Steyr AUG A3 5.56x45 assault rifle (Black)","value":44.057500000000005,"costPerSlot":54929,"weight":3.7430000000000008,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"671883292e2eeb98d406f3b8":{"id":"671883292e2eeb98d406f3b8","name":"Steyr AUG vertical foregrip (Black)","value":0.0950000000000002,"costPerSlot":2135,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6719023b612cc94b9008e78c":{"id":"6719023b612cc94b9008e78c","name":"AA-12 stock assembly (TerraGroup)","value":-2.8138749999999995,"costPerSlot":9636.125,"weight":0.9,"size":8,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"671d85439ae8365d69117ba6":{"id":"671d85439ae8365d69117ba6","name":"TT 7.62x25 tt-105 8-round magazine","value":-2.04,"costPerSlot":0,"weight":0.08,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"671d8617a3e45c1f5908278c":{"id":"671d8617a3e45c1f5908278c","name":"MP-443 Grach 9x19 18-round magazine","value":-2.0525,"costPerSlot":0,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"671d8ac8a3e45c1f59082799":{"id":"671d8ac8a3e45c1f59082799","name":"Glock 9x19 19-round magazine (Coyote)","value":-2.053,"costPerSlot":0,"weight":0.106,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"671d8b38b769f0d88c0950f8":{"id":"671d8b38b769f0d88c0950f8","name":"M1911A1 .45 ACP Wilson Combat 7-round magazine","value":-2.0700000000000003,"costPerSlot":0,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"671d8b8c0959c721a50ca838":{"id":"671d8b8c0959c721a50ca838","name":"HK USP Tactical .45 ACP 12-round magazine","value":-2.0460000000000003,"costPerSlot":0,"weight":0.092,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673c7b00cbf4b984b5099181":{"id":"673c7b00cbf4b984b5099181","name":"","value":-2.5,"costPerSlot":0,"weight":1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673cab3e03c6a20581028bc1":{"id":"673cab3e03c6a20581028bc1","name":"Sako TRG M10 .338 LM bolt-action sniper rifle","value":12.602,"costPerSlot":25000,"weight":6.7959999999999985,"size":6,"gridSize":0,"maxDim":6,"armorClass":0,"parentWeighting":3},"673cb212e695740be0047a46":{"id":"673cb212e695740be0047a46","name":"Sako TRG M10 chassis","value":-5.200166666666667,"costPerSlot":4433.333333333333,"weight":1.267,"size":6,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"673cb4054ff4aa8f86076f4a":{"id":"673cb4054ff4aa8f86076f4a","name":"Sako TRG M10 .338 LM bolt assembly","value":17.775,"costPerSlot":20000,"weight":0.45,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673cb491280680de5e02ff36":{"id":"673cb491280680de5e02ff36","name":"Sako TRG M10 .338 LM receiver","value":-1.12,"costPerSlot":3150,"weight":0.54,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"673cb51e093e0ea7fd0b8746":{"id":"673cb51e093e0ea7fd0b8746","name":"Sako TRG M10 scope mount","value":0.11950000000000038,"costPerSlot":2256,"weight":0.273,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673cb551093e0ea7fd0b874a":{"id":"673cb551093e0ea7fd0b874a","name":"Sako TRG M10 .338 LM 23.5 inch barrel","value":28.485,"costPerSlot":37500,"weight":2.03,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"673cb5d1280680de5e02ff3b":{"id":"673cb5d1280680de5e02ff3b","name":"Sako TRG M10 15 inch handguard assembly","value":-1.173333333333333,"costPerSlot":5216.666666666667,"weight":0.78,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"673cb81f5b1511adb10cd326":{"id":"673cb81f5b1511adb10cd326","name":"Sako TRG M10 grip pad","value":0.7974999999999999,"costPerSlot":2850,"weight":0.105,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673cbdfad0453ba50c0f76d6":{"id":"673cbdfad0453ba50c0f76d6","name":"Sako TRG M10 .338 LM 8-round magazine","value":12.081,"costPerSlot":14176,"weight":0.19,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673dd5f73f92dc7e120d20a9":{"id":"673dd5f73f92dc7e120d20a9","name":"Sako TRG short length rail","value":-0.992,"costPerSlot":1033,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673dd617912f68467c0615b6":{"id":"673dd617912f68467c0615b6","name":"Sako TRG medium length rail","value":-0.2579999999999998,"costPerSlot":1777,"weight":0.07,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673ddbb567c759b3c90e5f76":{"id":"673ddbb567c759b3c90e5f76","name":"Sako TRG M10 rear hook","value":14.383000000000003,"costPerSlot":16458,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673f0a38259f5945d70e43a6":{"id":"673f0a38259f5945d70e43a6","name":"Ase Utra SL7i-BL BoreLock .338 LM sound suppressor","value":39.68,"costPerSlot":44000,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"673f0a9370a3ddcf0d0ee0b8":{"id":"673f0a9370a3ddcf0d0ee0b8","name":"Sako TRG PGM Precision .338 LM sound suppressor","value":32.8675,"costPerSlot":37200,"weight":0.665,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"673f0b36536d64240f01acd6":{"id":"673f0b36536d64240f01acd6","name":"CGS Hekate DT .338 LM sound suppressor","value":35.4965,"costPerSlot":39750,"weight":0.507,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"673f3ef1259f5945d70e43a8":{"id":"673f3ef1259f5945d70e43a8","name":"Ase Utra BoreLock .338 LM muzzle brake","value":26.958000000000002,"costPerSlot":29054,"weight":0.192,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673f3f2f40aeca974e0b5c66":{"id":"673f3f2f40aeca974e0b5c66","name":"Ase Utra BoreLock thread protector","value":-1.3010000000000002,"costPerSlot":745,"weight":0.092,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673f3f5eef7545280c00f026":{"id":"673f3f5eef7545280c00f026","name":"Sako TRG .338 LM thread protector","value":-1.605,"costPerSlot":400,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673f3f9840aeca974e0b5c68":{"id":"673f3f9840aeca974e0b5c68","name":"Sako TRG Coretac CoreBrake .338 LM muzzle brake","value":3.9735000000000005,"costPerSlot":6121,"weight":0.295,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"673f4046259f5945d70e43ab":{"id":"673f4046259f5945d70e43ab","name":"Sako TRG 22/42/M10 .338 LM muzzle brake","value":4.7075,"costPerSlot":6848,"weight":0.281,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67405d760098dcb5940ea1a6":{"id":"67405d760098dcb5940ea1a6","name":"Sako TRG M10 .338 LM 20 inch barrel","value":14.23166666666667,"costPerSlot":21166.666666666668,"weight":1.87,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"67405e3b83ac5c69ae025406":{"id":"67405e3b83ac5c69ae025406","name":"Sako TRG M10 .338 LM 27 inch barrel","value":6.585000000000001,"costPerSlot":15750,"weight":2.33,"size":4,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"67405ef125beb509e8070276":{"id":"67405ef125beb509e8070276","name":"Sako TRG M10 11 inch handguard assembly","value":5.58,"costPerSlot":9900,"weight":0.64,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67405fd0812f476fb2020066":{"id":"67405fd0812f476fb2020066","name":"Sako TRG M10 M-LOK 15 inch handguard assembly","value":1.0733333333333333,"costPerSlot":7433.333333333333,"weight":0.72,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"674078c4a9c9adf0450d59f9":{"id":"674078c4a9c9adf0450d59f9","name":"Opened case","value":147.5,"costPerSlot":25000,"weight":3,"size":4,"gridSize":100,"maxDim":2,"armorClass":0,"parentWeighting":0},"67408903268737ef6908d432":{"id":"67408903268737ef6908d432","name":"Contraband box","value":21.75,"costPerSlot":26000,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67409848d0b2f8eb9b034db9":{"id":"67409848d0b2f8eb9b034db9","name":"Sealed box","value":21.75,"costPerSlot":26000,"weight":0.5,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"674098588466ebb03408b210":{"id":"674098588466ebb03408b210","name":"Opened box","value":175.75,"costPerSlot":50000,"weight":0.5,"size":2,"gridSize":100,"maxDim":2,"armorClass":0,"parentWeighting":0},"6740987b89d5e1ddc603f4f0":{"id":"6740987b89d5e1ddc603f4f0","name":"Locked case","value":5.5,"costPerSlot":13000,"weight":3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67449b6c89d5e1ddc603f504":{"id":"67449b6c89d5e1ddc603f504","name":"Case key","value":35.32,"costPerSlot":37325,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67458730df3c1da90b0b052b":{"id":"67458730df3c1da90b0b052b","name":"5.11 Tactical RUSH 100 backpack (Black)","value":132.597,"costPerSlot":122397,"weight":2.6,"size":42,"gridSize":45,"maxDim":7,"armorClass":0,"parentWeighting":2},"67458794e21e5d724e066976":{"id":"67458794e21e5d724e066976","name":"LBT-1476A 3Day Pack (MultiCam Alpine)","value":43.2695,"costPerSlot":34336,"weight":1.133,"size":20,"gridSize":25,"maxDim":5,"armorClass":0,"parentWeighting":2},"6745895717824b1ec20570a6":{"id":"6745895717824b1ec20570a6","name":"6B47 Ratnik-BSh helmet (EMR Arctic cover)","value":29.438000000000002,"costPerSlot":31088,"weight":1.3,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"674589d98dd67746010329e6":{"id":"674589d98dd67746010329e6","name":"Spiritus Systems Bank Robber chest rig (MultiCam Alpine)","value":19.045,"costPerSlot":16995,"weight":0.7,"size":6,"gridSize":8,"maxDim":3,"armorClass":0,"parentWeighting":1},"6749c40822a2740bb408d066":{"id":"6749c40822a2740bb408d066","name":"PP-19-01 9x19 F5 MFG 50-round drum magazine","value":17.4905,"costPerSlot":21830.5,"weight":0.68,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"674d5e287075e056160e0176":{"id":"674d5e287075e056160e0176","name":"Velociraptor polymer handguard","value":3.282,"costPerSlot":5367,"weight":0.17,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"674d6121c09f69dfb201a888":{"id":"674d6121c09f69dfb201a888","name":"Aklys Defense Velociraptor .300 Blackout assault rifle","value":60.9885,"costPerSlot":75741,"weight":3.505,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":3},"674d90b55704568fe60bc8f5":{"id":"674d90b55704568fe60bc8f5","name":"Akula push dagger","value":28.9625,"costPerSlot":28040,"weight":0.155,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":3},"674d91ce6e862d5a95059ed6":{"id":"674d91ce6e862d5a95059ed6","name":"6B13 M assault armor (Christmas Edition)","value":232.6,"costPerSlot":250000,"weight":2.8,"size":12,"gridSize":0,"maxDim":4,"armorClass":0,"parentWeighting":0},"674da107c512807d1a0e7436":{"id":"674da107c512807d1a0e7436","name":"Mystery Ranch Terraframe backpack (Olive Drab)","value":53.45,"costPerSlot":49550,"weight":2.2,"size":30,"gridSize":30,"maxDim":6,"armorClass":0,"parentWeighting":2},"674da9cf0cb4bcde7103c07b":{"id":"674da9cf0cb4bcde7103c07b","name":"Mystery Ranch Terraframe backpack (Christmas Edition)","value":63.31,"costPerSlot":59460,"weight":2.3,"size":30,"gridSize":30,"maxDim":6,"armorClass":0,"parentWeighting":2},"674fe57721a9aa6be6045b96":{"id":"674fe57721a9aa6be6045b96","name":"SOK-12 Chaos Titan Quad Rail handguard","value":26.466,"costPerSlot":30670,"weight":0.408,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"674fe89a4472d471fb0f07d8":{"id":"674fe89a4472d471fb0f07d8","name":"SOK-12 Chaos Titan Quad Rail handguard top cover","value":3.407,"costPerSlot":7442,"weight":0.07,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"674fe8b9362ea1f88b0e278d":{"id":"674fe8b9362ea1f88b0e278d","name":"SOK-12 Chaos Titan receiver top rail","value":8.3805,"costPerSlot":12425.5,"weight":0.09,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"674fe8cf4472d471fb0f07df":{"id":"674fe8cf4472d471fb0f07df","name":"Chaos HK Style rear sight","value":-0.825,"costPerSlot":1245,"weight":0.14,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"674fe8dd362ea1f88b0e2792":{"id":"674fe8dd362ea1f88b0e2792","name":"Chaos HK Style front sight","value":-1.0394999999999999,"costPerSlot":964,"weight":0.007,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"674fe8f6f34d761ab8020cc8":{"id":"674fe8f6f34d761ab8020cc8","name":"SOK-12 12ga MD Arms 20-round drum magazine","value":2.8992500000000003,"costPerSlot":9229.25,"weight":0.66,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"674fe9a75e51f1c47c04ec23":{"id":"674fe9a75e51f1c47c04ec23","name":"Saiga-12K 12ga automatic shotgun","value":-17.321733333333334,"costPerSlot":2309.266666666667,"weight":5.262,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"67506ca81f18589016006aa6":{"id":"67506ca81f18589016006aa6","name":"PNV-57E night vision goggles","value":1.3350000000000009,"costPerSlot":6485,"weight":2.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675307301f7c19a9780f2668":{"id":"675307301f7c19a9780f2668","name":"AR-15 Magpul B.A.D. Lever bolt release","value":14.296,"costPerSlot":16311,"weight":0.03,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67586af7036d7f3da60c3612":{"id":"67586af7036d7f3da60c3612","name":"Jar of pickles","value":41.7175,"costPerSlot":46717.5,"weight":2,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67586b7e49c2fa592e0d8ed9":{"id":"67586b7e49c2fa592e0d8ed9","name":"Olivier salad box","value":150.471,"costPerSlot":152521,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67586bee39b1b82b0d0f9d06":{"id":"67586bee39b1b82b0d0f9d06","name":"Special 40-degree fuel","value":24.13125,"costPerSlot":30881.25,"weight":1.5,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67586c61a0c49554ed0bb4a8":{"id":"67586c61a0c49554ed0bb4a8","name":"SHYSHKA Christmas tree life extender","value":39.167,"costPerSlot":43317,"weight":0.3,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675956062f6ddfe8ff0e2806":{"id":"675956062f6ddfe8ff0e2806","name":"MTEK FLUX Ballistic helmet (MultiCam Alpine)","value":61.085,"costPerSlot":62585,"weight":1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"6759655674aa5e0825040d62":{"id":"6759655674aa5e0825040d62","name":"MTEK FLUX Ballistic helmet (Olive Drab)","value":85.035,"costPerSlot":86535,"weight":1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"67597ceea35600b4c10cea86":{"id":"67597ceea35600b4c10cea86","name":"MTEK STRIKE Ballistic helmet (Coyote)","value":63.391000000000005,"costPerSlot":64841,"weight":0.9,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"67597d241d5a44f2f605df06":{"id":"67597d241d5a44f2f605df06","name":"MTEK STRIKE Ballistic helmet (Coyote/MultiCam Arid)","value":69.284,"costPerSlot":70759,"weight":0.95,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"6759af0f9c8a538dd70bfae6":{"id":"6759af0f9c8a538dd70bfae6","name":"Maska-1SCh bulletproof helmet (Christmas Edition)","value":2741.777,"costPerSlot":2744127,"weight":2.7,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"6759bb94b8913ff13e049669":{"id":"6759bb94b8913ff13e049669","name":"What You Seek poster","value":18.95,"costPerSlot":25000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6759e07e4ff23436160d7fed":{"id":"6759e07e4ff23436160d7fed","name":"I Bear Loot poster","value":18.95,"costPerSlot":25000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6759e19a8367ee2b0c0f4b92":{"id":"6759e19a8367ee2b0c0f4b92","name":"Girl poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6759e61067c8eb5cd10352f1":{"id":"6759e61067c8eb5cd10352f1","name":"Girl poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6759e6c39422e1708e0e9b81":{"id":"6759e6c39422e1708e0e9b81","name":"Girl poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6759e7a44ff23436160d7ff5":{"id":"6759e7a44ff23436160d7ff5","name":"Girl poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6759e8b1c3102563bd01c985":{"id":"6759e8b1c3102563bd01c985","name":"Girl poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6759e91d8367ee2b0c0f4b94":{"id":"6759e91d8367ee2b0c0f4b94","name":"Special girl poster","value":82.96650000000001,"costPerSlot":89016.5,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a0288c3102563bd01c9c3":{"id":"675a0288c3102563bd01c9c3","name":"Arena poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a046b8f547d6cae01922e":{"id":"675a046b8f547d6cae01922e","name":"Bison vs Undertaker poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a04c01474133a0d0bb212":{"id":"675a04c01474133a0d0bb212","name":"Arena poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a04fdb8913ff13e0496bb":{"id":"675a04fdb8913ff13e0496bb","name":"Killa and Tagilla poster","value":232.84525,"costPerSlot":238895.25,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a06b84ff23436160d802f":{"id":"675a06b84ff23436160d802f","name":"Alex Green poster","value":1.4500000000000002,"costPerSlot":7500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a081c1474133a0d0bb214":{"id":"675a081c1474133a0d0bb214","name":"Things Sure Are Strange poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a0a91af26c56ee1090728":{"id":"675a0a91af26c56ee1090728","name":"TerraGroup Labs advertisement","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a0b8d4ff23436160d8031":{"id":"675a0b8d4ff23436160d8031","name":"Geneburn concert advertisement","value":18.95,"costPerSlot":25000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a0d2d57dd12f0260c4a31":{"id":"675a0d2d57dd12f0260c4a31","name":"Exodus poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a0eacf905bde03d0f8253":{"id":"675a0eacf905bde03d0f8253","name":"Den of Wolves poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a0fbbb98bf391510bafcd":{"id":"675a0fbbb98bf391510bafcd","name":"Highway poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a125caf26c56ee109072a":{"id":"675a125caf26c56ee109072a","name":"Hell or Highwater poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a191f67c8eb5cd1035305":{"id":"675a191f67c8eb5cd1035305","name":"Gunfight poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a1a244ff23436160d8033":{"id":"675a1a244ff23436160d8033","name":"Last Flight poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a1af21474133a0d0bb216":{"id":"675a1af21474133a0d0bb216","name":"Spooky Movie poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a1c129422e1708e0e9baa":{"id":"675a1c129422e1708e0e9baa","name":"Vasily poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a1e502eac6c76e104ea1e":{"id":"675a1e502eac6c76e104ea1e","name":"RUN poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a1f5c1474133a0d0bb218":{"id":"675a1f5c1474133a0d0bb218","name":"Sharpshooter poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a202b6aaafea7210915fd":{"id":"675a202b6aaafea7210915fd","name":"The Ambush poster","value":13.95,"costPerSlot":20000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a20c83fb2de89670113b4":{"id":"675a20c83fb2de89670113b4","name":"The Hunted poster","value":18.95,"costPerSlot":25000,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675a213ff905bde03d0f8255":{"id":"675a213ff905bde03d0f8255","name":"USEC poster","value":6.449999999999999,"costPerSlot":12500,"weight":0.1,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"675aaa003107dac10006332f":{"id":"675aaa003107dac10006332f","name":"Minefield map (Reserve)","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aaa8f7f3c962069072b27":{"id":"675aaa8f7f3c962069072b27","name":"Minefield map (Lighthouse)","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aaa9a3107dac100063331":{"id":"675aaa9a3107dac100063331","name":"Minefield map (Woods)","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aaab74bca0b001d02f356":{"id":"675aaab74bca0b001d02f356","name":"Note with code word Voron","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aaae1dcf102478202c537":{"id":"675aaae1dcf102478202c537","name":"Note with code word Onyx","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aaae75a3ab8372d0b02a7":{"id":"675aaae75a3ab8372d0b02a7","name":"Note with code word Adaptation","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aaaf674a7619a5304c233":{"id":"675aaaf674a7619a5304c233","name":"Note with code word Ark","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aab0d6b6addc02a08f097":{"id":"675aab0d6b6addc02a08f097","name":"Note with code word Heartbeat","value":-2.049,"costPerSlot":1,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675aadf3003bb2e826030996":{"id":"675aadf3003bb2e826030996","name":"Elf hat","value":101.66000000000001,"costPerSlot":98710,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"675aae1c26dc64e17800fee6":{"id":"675aae1c26dc64e17800fee6","name":"Hat with horns","value":327.92400000000004,"costPerSlot":324999,"weight":0.15,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"675ac888803644528007b3f6":{"id":"675ac888803644528007b3f6","name":"Balaclava (White)","value":6.386,"costPerSlot":3436,"weight":0.1,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":5},"675dc9d37ae1a8792107ca96":{"id":"675dc9d37ae1a8792107ca96","name":"Dogtag BEAR","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675dcb0545b1a2d108011b2b":{"id":"675dcb0545b1a2d108011b2b","name":"Dogtag BEAR","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"675ea3d6312c0a5c4e04e317":{"id":"675ea3d6312c0a5c4e04e317","name":"RSP-30 reactive signal cartridge (Firework)","value":13.905,"costPerSlot":15000,"weight":0.19,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":3},"675ea4891b2579e8fe0250aa":{"id":"675ea4891b2579e8fe0250aa","name":"Signal flare (New Year)","value":8.0425,"costPerSlot":74,"weight":0.063,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"676008db84e242067d0dc4c9":{"id":"676008db84e242067d0dc4c9","name":"Secure container Kappa (Desecrated)","value":4902.6,"costPerSlot":4900000,"weight":2,"size":9,"gridSize":12,"maxDim":3,"armorClass":0,"parentWeighting":0},"67600929bd0a0549d70993f6":{"id":"67600929bd0a0549d70993f6","name":"Ballistic plate case","value":219.842625,"costPerSlot":113542.625,"weight":13,"size":8,"gridSize":96,"maxDim":4,"armorClass":0,"parentWeighting":0},"676009ddb623f3b8ba079419":{"id":"676009ddb623f3b8ba079419","name":".50 AE Copper Solid ammo pack (20 pcs)","value":7.895,"costPerSlot":9900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"676009ed8f1fee08740f9479":{"id":"676009ed8f1fee08740f9479","name":".50 AE FMJ ammo pack (20 pcs)","value":16.715,"costPerSlot":18720,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"676009fe8f1fee08740f947c":{"id":"676009fe8f1fee08740f947c","name":".50 AE JHP ammo pack (20 pcs)","value":3.0550000000000006,"costPerSlot":5060,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67600a0e84e242067d0dc4cd":{"id":"67600a0e84e242067d0dc4cd","name":".50 AE Hawk JSP ammo pack (20 pcs)","value":2.335,"costPerSlot":4340,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67600a42b32eb5d23e0eb459":{"id":"67600a42b32eb5d23e0eb459","name":"6.8x51mm SIG FMJ ammo pack (20 pcs)","value":15.495000000000001,"costPerSlot":17500,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67600a516f01341c9106ab4c":{"id":"67600a516f01341c9106ab4c","name":"6.8x51mm SIG Hybrid ammo pack (20 pcs)","value":20.475,"costPerSlot":22480,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"676017fe8cfeeba9f707c8d6":{"id":"676017fe8cfeeba9f707c8d6","name":"SOK-12 Kiba Arms Zombie Custom dust cover ","value":3.8580000000000005,"costPerSlot":7918,"weight":0.12,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676029a6bdead929d40bc368":{"id":"676029a6bdead929d40bc368","name":"Rooster mask","value":136.475,"costPerSlot":137500,"weight":0.05,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"676029ca2749de558a0b7e67":{"id":"676029ca2749de558a0b7e67","name":"Cipollino mask","value":5.122,"costPerSlot":6147,"weight":0.05,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"676029e22749de558a0b7e69":{"id":"676029e22749de558a0b7e69","name":"Aybolit mask","value":29.401000000000003,"costPerSlot":30426,"weight":0.05,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"676029f997f19b78f00a0197":{"id":"676029f997f19b78f00a0197","name":"Fox mask","value":273.975,"costPerSlot":275000,"weight":0.05,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"67602a0f97f19b78f00a0199":{"id":"67602a0f97f19b78f00a0199","name":"Grinch mask","value":497.932,"costPerSlot":498957,"weight":0.05,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"67602a23c8e72a73250de737":{"id":"67602a23c8e72a73250de737","name":"Hare mask","value":793.419,"costPerSlot":794444,"weight":0.05,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"67602a39c8e72a73250de739":{"id":"67602a39c8e72a73250de739","name":"Astronomer mask","value":6.088,"costPerSlot":7113,"weight":0.05,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":5},"6761492dc53ebe8c0f0a5efe":{"id":"6761492dc53ebe8c0f0a5efe","name":"MPX GEN 2 ambidextrous charging handle","value":9.4465,"costPerSlot":11461,"weight":0.029,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6761496fe2cf1419500357e9":{"id":"6761496fe2cf1419500357e9","name":"SB Tactical MPX Pistol Stabilizing Brace","value":-1.4610000000000003,"costPerSlot":2735,"weight":0.392,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67614994e889e1972605d6bb":{"id":"67614994e889e1972605d6bb","name":"MPX 9x19 Ronin Arms 4.75 inch Ported SD Barrel","value":3.466,"costPerSlot":7556,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676149a3e2cf1419500357eb":{"id":"676149a3e2cf1419500357eb","name":"MPX 9x19 Ronin Arms 6.75 inch Ported SD Barrel","value":12.436499999999999,"costPerSlot":16526.5,"weight":0.18,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676149c5062e6212f5058c36":{"id":"676149c5062e6212f5058c36","name":"MPX 9x19 Ronin Arms 8 inch SD Suppressor","value":5.385000000000002,"costPerSlot":9573.5,"weight":0.377,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676149d8e889e1972605d6be":{"id":"676149d8e889e1972605d6be","name":"MPX 9x19 Ronin Arms 12 inch SD Suppressor","value":7.282500000000001,"costPerSlot":11496,"weight":0.427,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676149fbe2cf1419500357ee":{"id":"676149fbe2cf1419500357ee","name":"MPX GEN1 4 inch handguard","value":7.894,"costPerSlot":10033,"weight":0.278,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67614a0be889e1972605d6c0":{"id":"67614a0be889e1972605d6c0","name":"MPX GEN1 8 inch handguard","value":1.7035,"costPerSlot":5865,"weight":0.323,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67614a225152c0eaed08ec86":{"id":"67614a225152c0eaed08ec86","name":"MPX GEN2 4 inch M-LOK handguard","value":3.8455000000000004,"costPerSlot":5980,"weight":0.269,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67614a31062e6212f5058c38":{"id":"67614a31062e6212f5058c38","name":"MPX GEN2 8 inch M-LOK handguard","value":1.7519999999999998,"costPerSlot":5910.5,"weight":0.317,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67614a3ce2cf1419500357f4":{"id":"67614a3ce2cf1419500357f4","name":"MPX GEN2 6 inch M-LOK handguard","value":0.7300000000000004,"costPerSlot":4882.5,"weight":0.305,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67614b3ab8c060ebb204b106":{"id":"67614b3ab8c060ebb204b106","name":"Khorovod armband","value":51.428000000000004,"costPerSlot":53453,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67614b542eb91250020f2b86":{"id":"67614b542eb91250020f2b86","name":"Armband (Prestige 1)","value":97.975,"costPerSlot":100000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67614b6b47c71ea3d40256d7":{"id":"67614b6b47c71ea3d40256d7","name":"Armband (Prestige 2)","value":97.975,"costPerSlot":100000,"weight":0.05,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67614e3a6a90e4f10b0b140d":{"id":"67614e3a6a90e4f10b0b140d","name":"Festive airdrop supply crate","value":-150,"costPerSlot":0,"weight":500,"size":48,"gridSize":120,"maxDim":8,"armorClass":0,"parentWeighting":0},"676175789dcee773150c6925":{"id":"676175789dcee773150c6925","name":"Leupold Mark 5HD 5-25x56mm 35mm riflescope (FDE)","value":46.8395,"costPerSlot":51264.5,"weight":0.85,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6761759e7ee06333f108bf86":{"id":"6761759e7ee06333f108bf86","name":"Leupold Mark IMS 35mm ring scope mount","value":3.9155000000000006,"costPerSlot":8000.5,"weight":0.17,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676175bb48fa5c377e06fc36":{"id":"676175bb48fa5c377e06fc36","name":"KAC MWS Bipod Adapter","value":-0.9669999999999999,"costPerSlot":1054,"weight":0.042,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6761763448fa5c377e06fc39":{"id":"6761763448fa5c377e06fc39","name":"AKMS FAB Defense M4-AKMS P stock adapter","value":23.52,"costPerSlot":27738,"weight":0.436,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6761765f1f08ed5e8800b7a6":{"id":"6761765f1f08ed5e8800b7a6","name":"AR-15 5.56x45 Beta C-Mag 100-round drum magazine","value":4.791,"costPerSlot":11319,"weight":1.056,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676176a162e0497044079f46":{"id":"676176a162e0497044079f46","name":"UZI 9x19 Beta C-Mag 100-round drum magazine","value":4.604000000000001,"costPerSlot":11102.5,"weight":0.997,"size":4,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676176b762e0497044079f49":{"id":"676176b762e0497044079f49","name":"M9A3 9x19 CX4 30-round magazine","value":0.8260000000000005,"costPerSlot":4871.5,"weight":0.091,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676176d362e0497044079f4c":{"id":"676176d362e0497044079f4c","name":"FN SCAR-H X-17 7.62x51 assault rifle","value":366.265,"costPerSlot":385301,"weight":4.072,"size":15,"gridSize":0,"maxDim":5,"armorClass":0,"parentWeighting":3},"6761770e48fa5c377e06fc3c":{"id":"6761770e48fa5c377e06fc3c","name":"AR-10 7.62x51 X Products X-25 50-round drum magazine","value":17.973000000000003,"costPerSlot":22318,"weight":0.69,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676177591f08ed5e8800b7a9":{"id":"676177591f08ed5e8800b7a9","name":"RFB Quad Rail 3 inch mount","value":15.044,"costPerSlot":17099,"weight":0.11,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6761777a1f08ed5e8800b7ac":{"id":"6761777a1f08ed5e8800b7ac","name":"AR-15 DoubleStar ACE ARFX Skeleton Stock","value":2.4355,"costPerSlot":6594,"weight":0.317,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"6761779c48fa5c377e06fc3f":{"id":"6761779c48fa5c377e06fc3f","name":"AK AK-EVO stock","value":18.3255,"costPerSlot":22524,"weight":0.397,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"676177b09cfcc4c25b027446":{"id":"676177b09cfcc4c25b027446","name":"Toni System Tactical Barrel Clamp","value":0.9409999999999998,"costPerSlot":3000,"weight":0.118,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"676177df1f08ed5e8800b7ae":{"id":"676177df1f08ed5e8800b7ae","name":"PP-19-01 Vityaz SAG MK1 M-LOK handguard with gas tube","value":13.8345,"costPerSlot":15982,"weight":0.295,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6761a6ccd9bbb27ad703c48a":{"id":"6761a6ccd9bbb27ad703c48a","name":"Old house room key","value":470.72,"costPerSlot":472725,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6761a6f90575f25e020816a4":{"id":"6761a6f90575f25e020816a4","name":"Company director's room key","value":41.515,"costPerSlot":43520,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"676307b4d9ec0af3d9001fa8":{"id":"676307b4d9ec0af3d9001fa8","name":"Hybrid composite materials","value":86.14099999999999,"costPerSlot":48141,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"676307c004856a0b3c0dfffd":{"id":"676307c004856a0b3c0dfffd","name":"Hybrid composite materials","value":86.14099999999999,"costPerSlot":48141,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"676307d3d9ec0af3d9001fac":{"id":"676307d3d9ec0af3d9001fac","name":"Hybrid composite materials","value":86.14099999999999,"costPerSlot":48141,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"676307ded8b241b4f703a3e8":{"id":"676307ded8b241b4f703a3e8","name":"Hybrid composite materials","value":86.14099999999999,"costPerSlot":48141,"weight":0,"size":1,"gridSize":0,"maxDim":1,"armorClass":4,"parentWeighting":0},"6764139c44b3c96e7b0e2f7b":{"id":"6764139c44b3c96e7b0e2f7b","name":"AK 5.56x45 Molot Arms 45-round magazine","value":-0.05033333333333356,"costPerSlot":6099.666666666667,"weight":0.3,"size":3,"gridSize":0,"maxDim":3,"armorClass":0,"parentWeighting":0},"67641a851b2899700609901a":{"id":"67641a851b2899700609901a","name":"Cyclone Shakhin mount","value":16.404,"costPerSlot":18411,"weight":0.014,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67641b461c2eb66ade05dba6":{"id":"67641b461c2eb66ade05dba6","name":"Cyclone Shakhin 3.7x thermal scope","value":133.212,"costPerSlot":137719,"weight":1.014,"size":2,"gridSize":0,"maxDim":2,"armorClass":0,"parentWeighting":0},"67641bec4ad898aa100c1079":{"id":"67641bec4ad898aa100c1079","name":"Cyclone Shakhin scope eyecup","value":-1.1465,"costPerSlot":856,"weight":0.005,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6764202ae307804338014c1a":{"id":"6764202ae307804338014c1a","name":"Dogtag USEC","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6764207f2fa5e32733055c4a":{"id":"6764207f2fa5e32733055c4a","name":"Dogtag USEC","value":-1.105,"costPerSlot":900,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67654a6759116d347b0bfb86":{"id":"67654a6759116d347b0bfb86","name":"V40 shrapnel","value":8.095,"costPerSlot":100,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"676577166d874f6502106a21":{"id":"676577166d874f6502106a21","name":"20/70 Flechette ammo pack (25 pcs)","value":1.12,"costPerSlot":3125,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67657764c832f8c59c016d45":{"id":"67657764c832f8c59c016d45","name":"20/70 TSS Armor Piercing Slug ammo pack (25 pcs)","value":2.7700000000000005,"costPerSlot":4775,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"67657773b83469e4f102dc27":{"id":"67657773b83469e4f102dc27","name":"20/70 Dangerous Game Slug ammo pack (25 pcs)","value":5.17,"costPerSlot":7175,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"6768c25aa7b238f14a08d3f6":{"id":"6768c25aa7b238f14a08d3f6","name":"7.62x51mm M80A1","value":9.189,"costPerSlot":1200,"weight":0.022,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":10},"6769b8e3c1a1466c850658a8":{"id":"6769b8e3c1a1466c850658a8","name":"7.62x51mm M80A1 ammo pack (20 pcs)","value":21.995,"costPerSlot":24000,"weight":0.01,"size":1,"gridSize":0,"maxDim":1,"armorClass":0,"parentWeighting":0},"676a93c51888885b4e008b18":{"id":"676a93c51888885b4e008b18","name":"Twitch Winter 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a95041888885b4e008b36":{"id":"676a95041888885b4e008b36","name":"Twitch Winter 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a98d7b4ba2f4afa04c704":{"id":"676a98d7b4ba2f4afa04c704","name":"Twitch Winter 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9a5c744595610f0ed501":{"id":"676a9a5c744595610f0ed501","name":"Twitch Winter 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9b15b4ba2f4afa04c7ad":{"id":"676a9b15b4ba2f4afa04c7ad","name":"Twitch Winter 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9b1afe1fc45172014d32":{"id":"676a9b1afe1fc45172014d32","name":"Twitch Winter 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9bc6744595610f0ed52e":{"id":"676a9bc6744595610f0ed52e","name":"Twitch Winter 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9da81888885b4e008c51":{"id":"676a9da81888885b4e008c51","name":"Twitch Winter 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9e46744595610f0ed53f":{"id":"676a9e46744595610f0ed53f","name":"Twitch Winter 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9f03744595610f0ed55f":{"id":"676a9f03744595610f0ed55f","name":"Twitch Winter 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676a9fc7a65670a58c084c9e":{"id":"676a9fc7a65670a58c084c9e","name":"Twitch Winter 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa016744595610f0ed563":{"id":"676aa016744595610f0ed563","name":"Twitch Winter 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa025fe1fc45172014d9f":{"id":"676aa025fe1fc45172014d9f","name":"Twitch Winter 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa0f11888885b4e008c8b":{"id":"676aa0f11888885b4e008c8b","name":"Twitch Winter 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa104fe1fc45172014da3":{"id":"676aa104fe1fc45172014da3","name":"Twitch Winter 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa29243000db5340061b5":{"id":"676aa29243000db5340061b5","name":"Twitch Winter 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa30ffe1fc45172014dce":{"id":"676aa30ffe1fc45172014dce","name":"Twitch Winter 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa37ff90b6f429601afb5":{"id":"676aa37ff90b6f429601afb5","name":"Twitch Winter 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa3cf7a232aa5c70bda8d":{"id":"676aa3cf7a232aa5c70bda8d","name":"Twitch Winter 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa3fc20a7cc6f4309e078":{"id":"676aa3fc20a7cc6f4309e078","name":"Twitch Winter 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"676aa450fe1fc45172014df2":{"id":"676aa450fe1fc45172014df2","name":"Twitch Winter 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"67b70e43f753cf9f7a0a07a6":{"id":"67b70e43f753cf9f7a0a07a6","name":"LATAM Drops Event 2025 case (Common)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"67b72271e5673725070b0456":{"id":"67b72271e5673725070b0456","name":"LATAM Drops Event 2025 case (Rare)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0},"67b72c64f753cf9f7a0a07aa":{"id":"67b72c64f753cf9f7a0a07aa","name":"LATAM Drops Event 2025 case (Epic)","value":1162,"costPerSlot":0,"weight":4,"size":4,"gridSize":900,"maxDim":2,"armorClass":0,"parentWeighting":0}}} \ No newline at end of file diff --git a/user/mods/DanW-LateToTheParty/src/CommonUtils.js b/user/mods/DanW-LateToTheParty/src/CommonUtils.js new file mode 100644 index 0000000..2a9d3f2 --- /dev/null +++ b/user/mods/DanW-LateToTheParty/src/CommonUtils.js @@ -0,0 +1,116 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CommonUtils = void 0; +const config_json_1 = __importDefault(require("../config/config.json")); +class CommonUtils { + logger; + databaseTables; + localeService; + static fenceID = "579dc571d53a0658a154fbec"; + debugMessagePrefix = "[Late to the Party] "; + translations; + constructor(logger, databaseTables, localeService) { + this.logger = logger; + this.databaseTables = databaseTables; + this.localeService = localeService; + // Get all translations for the current locale + this.translations = this.localeService.getLocaleDb(); + } + logInfo(message, alwaysShow = false) { + if (config_json_1.default.debug.enabled || alwaysShow) + this.logger.info(this.debugMessagePrefix + message); + } + logWarning(message) { + this.logger.warning(this.debugMessagePrefix + message); + } + logError(message) { + this.logger.error(this.debugMessagePrefix + message); + } + getItemName(itemID) { + const translationKey = `${itemID} Name`; + if (translationKey in this.translations) + return this.translations[translationKey]; + // If a key can't be found in the translations dictionary, fall back to the template data if possible + if (!(itemID in this.databaseTables.templates.items)) { + return undefined; + } + const item = this.databaseTables.templates.items[itemID]; + return item._name; + } + getMaxItemPrice(itemID) { + // Get the handbook.json price, if any exists + const matchingHandbookItems = this.databaseTables.templates.handbook.Items.filter((i) => i.Id === itemID); + let handbookPrice = 0; + if (matchingHandbookItems.length === 1) { + handbookPrice = matchingHandbookItems[0].Price; + // Some mods add a record with a junk value + if ((handbookPrice == null) || Number.isNaN(handbookPrice)) { + this.logWarning(`Invalid handbook price (${handbookPrice}) for ${this.getItemName(itemID)} (${itemID}). Defaulting to 0.`); + handbookPrice = 0; + } + } + // Get the prices.json price, if any exists + let price = 0; + if (itemID in this.databaseTables.templates.prices) { + price = this.databaseTables.templates.prices[itemID]; + // Some mods add a record with a junk value + if ((price == null) || Number.isNaN(price)) { + // Only show a warning if the method will return 0 + if (handbookPrice === 0) { + this.logWarning(`Invalid price (${price}) for ${this.getItemName(itemID)} (${itemID}). Defaulting to 0.`); + } + price = 0; + } + } + return Math.max(handbookPrice, price); + } + /** + * Check if @param item is a child of the item with ID @param parentID + */ + static hasParent(item, parentID, databaseTables) { + const allParents = CommonUtils.getAllParents(item, databaseTables); + return allParents.includes(parentID); + } + static getAllParents(item, databaseTables) { + if ((item._parent === null) || (item._parent === undefined) || (item._parent === "")) + return []; + const allParents = CommonUtils.getAllParents(databaseTables.templates.items[item._parent], databaseTables); + allParents.push(item._parent); + return allParents; + } + static canItemDegrade(item, databaseTables) { + if (item.upd === undefined) { + return false; + } + if ((item.upd.MedKit === undefined) && (item.upd.Repairable === undefined) && (item.upd.Resource === undefined)) { + return false; + } + const itemTpl = databaseTables.templates.items[item._tpl]; + if ((itemTpl._props.armorClass !== undefined) && (itemTpl._props.armorClass.toString() === "0")) { + return false; + } + return true; + } + static interpolateForFirstCol(array, value) { + if (array.length === 1) { + return array[array.length - 1][1]; + } + if (value <= array[0][0]) { + return array[0][1]; + } + for (let i = 1; i < array.length; i++) { + if (array[i][0] >= value) { + if (array[i][0] - array[i - 1][0] === 0) { + return array[i][1]; + } + return array[i - 1][1] + (value - array[i - 1][0]) * (array[i][1] - array[i - 1][1]) / (array[i][0] - array[i - 1][0]); + } + } + return array[array.length - 1][1]; + } +} +exports.CommonUtils = CommonUtils; +//# sourceMappingURL=CommonUtils.js.map \ No newline at end of file diff --git a/user/mods/DanW-LateToTheParty/src/CommonUtils.js.map b/user/mods/DanW-LateToTheParty/src/CommonUtils.js.map new file mode 100644 index 0000000..e8fe49e --- /dev/null +++ b/user/mods/DanW-LateToTheParty/src/CommonUtils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "CommonUtils.js", + "sourceRoot": "", + "sources": [ + "CommonUtils.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js b/user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js new file mode 100644 index 0000000..cf99acf --- /dev/null +++ b/user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js @@ -0,0 +1,422 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LootRankingGenerator = void 0; +const config_json_1 = __importDefault(require("../config/config.json")); +const CommonUtils_1 = require("./CommonUtils"); +const verboseLogging = false; +const lootFilePath = `${__dirname}/../db/lootRanking.json`; +class LootRankingGenerator { + commonUtils; + databaseTables; + fileSystem; + botWeaponGenerator; + hashUtil; + constructor(commonUtils, databaseTables, fileSystem, botWeaponGenerator, hashUtil) { + this.commonUtils = commonUtils; + this.databaseTables = databaseTables; + this.fileSystem = fileSystem; + this.botWeaponGenerator = botWeaponGenerator; + this.hashUtil = hashUtil; + } + getLootRankingDataFromFile() { + if (!this.fileSystem.exists(lootFilePath)) { + this.commonUtils.logWarning("Loot ranking data not found. Creating empty loot ranking file..."); + // Generate empty file + const rankingData = { + costPerSlot: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.cost_per_slot, + weight: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.weight, + size: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.size, + gridSize: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.gridSize, + maxDim: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.max_dim, + armorClass: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.armor_class, + parentWeighting: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.parents, + items: {} + }; + const rankingDataStr = JSON.stringify(rankingData); + this.fileSystem.write(lootFilePath, rankingDataStr); + } + const rankingDataStr = this.fileSystem.read(lootFilePath); + return JSON.parse(rankingDataStr); + } + generateLootRankingData(sessionId) { + if (!config_json_1.default.destroy_loot_during_raid.loot_ranking.enabled) { + this.commonUtils.logInfo("Loot ranking is disabled in config.json."); + return; + } + if (this.validLootRankingDataExists()) { + this.commonUtils.logInfo("Using existing loot ranking data."); + return; + } + this.commonUtils.logInfo("Creating loot ranking data...", true); + // Create ranking data for each item found in the server database + const items = {}; + for (const itemID in this.databaseTables.templates.items) { + if (this.databaseTables.templates.items[itemID]._type === "Node") { + continue; + } + if (this.databaseTables.templates.items[itemID]._props.QuestItem) { + continue; + } + items[this.databaseTables.templates.items[itemID]._id] = this.generateLookRankingForItem(this.databaseTables.templates.items[itemID], sessionId); + } + // Generate the file contents + const rankingData = { + costPerSlot: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.cost_per_slot, + weight: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.weight, + size: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.size, + gridSize: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.gridSize, + maxDim: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.max_dim, + armorClass: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.armor_class, + parentWeighting: config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.parents, + items: items + }; + const rankingDataStr = JSON.stringify(rankingData); + this.fileSystem.write(lootFilePath, rankingDataStr); + this.commonUtils.logInfo("Creating loot ranking data...done.", true); + } + generateLookRankingForItem(item, sessionId) { + // Get required item properties from the server database + const cost = this.commonUtils.getMaxItemPrice(item._id); + let weight = item._props.Weight; + let size = item._props.Width * item._props.Height; + let maxDim = Math.max(item._props.Width, item._props.Height); + // If the item is a weapon, find a suitable assembled version of it + if (item._props.weapClass !== undefined) { + // First try to find the most desirable weapon from the traders + let bestWeaponMatch = this.findBestWeaponMatchfromTraders(item); + // If the weapon isn't offered by any traders, find the most desirable version in the presets + if (bestWeaponMatch.length === 0) { + if (verboseLogging) + this.commonUtils.logInfo(`Could not find ${this.commonUtils.getItemName(item._id)} in trader assorts.`); + bestWeaponMatch = this.findBestWeaponInPresets(item); + } + // Ensure a weapon has been generated + if (bestWeaponMatch.length === 0) { + this.commonUtils.logError(`Could not generate a weapon for ${this.commonUtils.getItemName(item._id)}`); + } + else { + const [weaponWidth, weaponHeight, weaponWeight] = this.getWeaponProperties(item, bestWeaponMatch); + if (verboseLogging) + this.commonUtils.logInfo(`Found weapon ${this.commonUtils.getItemName(item._id)}: Width=${weaponWidth},Height=${weaponHeight},Weight=${weaponWeight}`); + weight = weaponWeight; + size = weaponWidth * weaponHeight; + maxDim = Math.max(weaponWidth, weaponHeight); + } + } + // Check if the item has a grid in which other items can be placed (i.e. a backpack) + let gridSize = 0; + if (item._props.Grids !== undefined) { + for (const grid in item._props.Grids) { + gridSize += item._props.Grids[grid]._props.cellsH * item._props.Grids[grid]._props.cellsV; + } + } + // Get the armor class for the item if applicable + let armorClass = 0; + if (item._props.armorClass !== undefined) { + armorClass = Number(item._props.armorClass); + } + // Calculate the cost per slot + // If the item can be equipped (backpacks, weapons, etc.), use the inventory slot size (1) instead of the item's total size + let costPerSlot = cost; + if (!this.canEquipItem(item)) { + costPerSlot /= size; + } + // Generate the loot-ranking value based on the item properties and weighting in config.json + let value = costPerSlot * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.cost_per_slot; + value += weight * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.weight; + value += size * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.size; + value += gridSize * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.gridSize; + value += maxDim * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.max_dim; + value += armorClass * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.armor_class; + // Determine how much additional weighting to apply if the item is a parent of any defined in config.json + let parentWeighting = 0; + for (const parentID in config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.parents) { + if (CommonUtils_1.CommonUtils.hasParent(item, parentID, this.databaseTables)) { + parentWeighting += config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.parents[parentID].value; + } + } + value += parentWeighting; + // Create the object to store in lootRanking.json + const data = { + id: item._id, + name: this.commonUtils.getItemName(item._id), + value: value, + costPerSlot: costPerSlot, + weight: weight, + size: size, + gridSize: gridSize, + maxDim: maxDim, + armorClass: armorClass, + parentWeighting: parentWeighting + }; + return data; + } + findBestWeaponInPresets(item) { + let weapon = []; + for (const presetID in this.databaseTables.globals.ItemPresets) { + const preset = this.databaseTables.globals.ItemPresets[presetID]; + if (preset._items[0]._tpl === item._id) { + // Store the initial weapon selection + if (weapon.length === 0) { + weapon = preset._items; + continue; + } + // Determine if the weapon is better than the previous one found + if (this.weaponBaseValue(item, preset._items) > this.weaponBaseValue(item, weapon)) { + weapon = preset._items; + } + } + } + // If there are no presets for the weapon, create one + if (weapon.length === 0) { + return this.generateWeaponPreset(item)._items; + } + return weapon; + } + generateWeaponPreset(item) { + const baseWeapon = { + _id: this.hashUtil.generate(), + _tpl: item._id + }; + const weapon = this.fillItemSlots(baseWeapon, []); + if (verboseLogging) + this.commonUtils.logInfo(`Creating preset for ${this.commonUtils.getItemName(item._id)}...`); + for (const weaponPart in weapon) { + if (verboseLogging) + this.commonUtils.logInfo(`Creating preset for ${this.commonUtils.getItemName(item._id)}...found ${this.commonUtils.getItemName(weapon[weaponPart]._tpl)}`); + } + const preset = { + _id: this.hashUtil.generate(), + _type: "Preset", + _changeWeaponName: false, + _name: `${item._name}_autoGen`, + _parent: weapon[0]._id, + _items: weapon + }; + return preset; + } + /** + * Iterate through all possible slots in the object and add an item for all that are required + * @param item the base item containing slots + * @returns an array of Item objects containing the base item and all required attachments generated for it + */ + fillItemSlots(item, initialBannedParts) { + if (item._tpl === undefined) { + this.commonUtils.logError("Found an item with an undefined template ID. Cannot fill item slots."); + return []; + } + const itemTemplate = this.databaseTables.templates.items[item._tpl]; + if (itemTemplate === undefined) { + this.commonUtils.logError(`Could not find item with template ${item._tpl}. Cannot fill item slots.`); + return []; + } + let isValid = false; + let filledItem; + const bannedParts = [].concat(initialBannedParts); + while (!isValid) { + // Create the initial candidate for the array that will be returned + filledItem = []; + filledItem.push(item); + for (const slot in itemTemplate._props.Slots) { + if ((itemTemplate._props.Slots[slot]._required !== undefined) && !itemTemplate._props.Slots[slot]._required) { + continue; + } + // Sort the array of items that can be attached to the slot in order of ascending price + const filters = itemTemplate._props.Slots[slot]._props.filters[0].Filter; + const validFilters = filters.filter((f) => this.databaseTables.templates.items[f] !== undefined && this.databaseTables.templates.items[f]._id !== undefined); + const filtersSorted = validFilters.sort((f1, f2) => { + const f1Price = this.databaseTables.templates.items[f1]._id; + const f2Price = this.databaseTables.templates.items[f2]._id; + if (f1Price > f2Price) + return -1; + if (f1Price < f2Price) + return 1; + return 0; + }); + // Add the first valid item to the slot along with all of the items attached to its (child) slots + let itemPart; + for (const filter in filtersSorted) { + if (!bannedParts.includes(filters[filter])) { + itemPart = { + _id: this.hashUtil.generate(), + _tpl: filters[filter], + parentId: item._id, + slotId: itemTemplate._props.Slots[slot]._name + }; + filledItem = filledItem.concat(this.fillItemSlots(itemPart, bannedParts)); + break; + } + } + if (itemPart === undefined) { + this.commonUtils.logError(`Could not find valid part to put in ${itemTemplate._props.Slots[slot]._name} for ${this.commonUtils.getItemName(item._tpl)}`); + } + } + isValid = true; + for (const itemPart in filledItem) { + // Check if any conflicting parts exist in the Item array. If so, prevent the conflicting item from being used in the next candidate + const conflictingItems = this.databaseTables.templates.items[filledItem[itemPart]._tpl]._props.ConflictingItems; + for (const conflictingItem in conflictingItems) { + if (filledItem.map(p => p._tpl).includes(conflictingItems[conflictingItem])) { + if (!bannedParts.includes(conflictingItems[conflictingItem])) { + bannedParts.push(conflictingItems[conflictingItem]); + } + isValid = false; + if (verboseLogging) + this.commonUtils.logInfo(`Finding parts for ${this.commonUtils.getItemName(item._tpl)}...${this.commonUtils.getItemName(conflictingItems[conflictingItem])} has a conflict with another part`); + break; + } + } + if (!isValid) { + break; + } + //this.commonUtils.logInfo(`Finding parts for ${this.commonUtils.getItemName(item._tpl)}...found ${this.commonUtils.getItemName(filledItem[itemPart]._tpl)}`); + } + } + return filledItem; + } + findBestWeaponMatchfromTraders(item) { + let weapon = []; + // Search all traders to see if they sell the weapon + for (const traderID in this.databaseTables.traders) { + const assort = this.databaseTables.traders[traderID].assort; + // Ignore traders who don't sell anything (i.e. Lightkeeper) + if ((assort === null) || (assort === undefined)) + continue; + //if (verboseLogging) this.commonUtils.logInfo(`Searching ${this.databaseTables.traders[traderID].base.nickname}...`); + for (const assortID in assort.items) { + const weaponCandidate = []; + if (assort.items[assortID]._tpl === item._id) { + // Get all parts attached to the weapon + const matchingSlots = this.findChildSlotIndexesInTraderAssort(assort, assortID); + for (const matchingSlot in matchingSlots) { + weaponCandidate.push(assort.items[matchingSlots[matchingSlot]]); + } + // Store the initial weapon selection + if (weapon.length === 0) { + weapon = weaponCandidate; + continue; + } + // Determine if the weapon is better than the previous one found + if (this.weaponBaseValue(item, weaponCandidate) > this.weaponBaseValue(item, weapon)) { + weapon = weaponCandidate; + } + } + } + } + return weapon; + } + weaponBaseValue(baseWeaponItem, weaponParts) { + const [width, height, weight] = this.getWeaponProperties(baseWeaponItem, weaponParts); + let value = weight * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.weight; + value += width * height * config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.size; + return value; + } + /** + * Gets relevant weapon properties + * @param baseWeaponItem The base weapon template (namely the receiver) + * @param weaponParts All parts attached to the weapon (which may include the base weapon item itself) + * @returns [length, width, weight] of the assembled weapon + */ + getWeaponProperties(baseWeaponItem, weaponParts) { + if (baseWeaponItem._props === undefined) { + this.commonUtils.logError(`The properties of ${baseWeaponItem._id} (${this.commonUtils.getItemName(baseWeaponItem._id)}) are undefined. Cannot create loot value.`); + } + let width = baseWeaponItem._props.Width; + let height = baseWeaponItem._props.Height; + let weight = baseWeaponItem._props.Weight; + //if (verboseLogging) this.commonUtils.logInfo(`Getting properties for ${this.commonUtils.getItemName(baseWeaponItem._id)}... Base: Width=${width},Height=${height},Weight=${weight}`); + for (const weaponPart in weaponParts) { + const templateID = weaponParts[weaponPart]._tpl; + const slotID = weaponParts[weaponPart].slotId; + if (baseWeaponItem._id === templateID) { + continue; + } + weight += this.databaseTables.templates.items[templateID]._props.Weight ?? 0; + // Fold the weapon if possible + if (baseWeaponItem._props.FoldedSlot !== undefined) { + if (baseWeaponItem._props.FoldedSlot === slotID) { + //if (verboseLogging) this.commonUtils.logInfo(`Getting properties for ${this.commonUtils.getItemName(baseWeaponItem._id)}...folds with ${this.commonUtils.getItemName(templateID)} => Width=${width},Height=${height},Weight=${weight}`); + continue; + } + } + width += this.databaseTables.templates.items[templateID]._props.ExtraSizeLeft ?? 0; + width += this.databaseTables.templates.items[templateID]._props.ExtraSizeRight ?? 0; + height += this.databaseTables.templates.items[templateID]._props.ExtraSizeUp ?? 0; + height += this.databaseTables.templates.items[templateID]._props.ExtraSizeDown ?? 0; + //if (verboseLogging) this.commonUtils.logInfo(`Getting properties for ${this.commonUtils.getItemName(baseWeaponItem._id)}...found ${this.commonUtils.getItemName(templateID)} => Width=${width},Height=${height},Weight=${weight}`); + } + if (verboseLogging) + this.commonUtils.logInfo(`Getting properties for ${this.commonUtils.getItemName(baseWeaponItem._id)}... Final: Width=${width},Height=${height},Weight=${weight}`); + return [width, height, weight]; + } + findChildSlotIndexesInTraderAssort(assort, parentIndex) { + let matchingSlots = []; + const parentID = assort.items[parentIndex]._id; + for (const assortID in assort.items) { + if (assort.items[assortID].parentId === parentID) { + matchingSlots.push(assortID); + matchingSlots = matchingSlots.concat(this.findChildSlotIndexesInTraderAssort(assort, assortID)); + } + } + return matchingSlots; + } + validLootRankingDataExists() { + if (!this.fileSystem.exists(lootFilePath)) { + this.commonUtils.logInfo("Loot ranking data not found."); + return false; + } + if (config_json_1.default.destroy_loot_during_raid.loot_ranking.alwaysRegenerate) { + this.commonUtils.logInfo("Loot ranking data forced to regenerate."); + this.fileSystem.remove(lootFilePath); + return false; + } + // Get the current file data + const rankingData = this.getLootRankingDataFromFile(); + // Check if the parent weighting in config.json matches the file data + let parentParametersMatch = true; + for (const parentID in config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.parents) { + if (!(parentID in rankingData.parentWeighting)) { + parentParametersMatch = false; + break; + } + if (rankingData.parentWeighting[parentID].value !== config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.parents[parentID].value) { + parentParametersMatch = false; + break; + } + } + // Check if the general weighting parameters in config.json match the file data + if (rankingData.costPerSlot !== config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.cost_per_slot || + rankingData.maxDim !== config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.max_dim || + rankingData.size !== config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.size || + rankingData.gridSize !== config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.gridSize || + rankingData.weight !== config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.weight || + rankingData.armorClass !== config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.armor_class || + !parentParametersMatch) { + this.commonUtils.logInfo("Loot ranking parameters have changed; deleting cached data."); + this.fileSystem.remove(lootFilePath); + return false; + } + return true; + } + canEquipItem(item) { + const defaultInventory = this.databaseTables.templates.items[config_json_1.default.destroy_loot_during_raid.loot_ranking.weighting.default_inventory_id]; + if (defaultInventory === undefined) { + return false; + } + for (const slot in defaultInventory._props.Slots) { + const filters = defaultInventory._props.Slots[slot]._props.filters[0].Filter; + for (const filter in filters) { + if (CommonUtils_1.CommonUtils.hasParent(item, filters[filter], this.databaseTables)) { + //this.commonUtils.logInfo(`${this.commonUtils.getItemName(item._id)} can be equipped in ${defaultInventory._props.Slots[slot]._name}`); + return true; + } + } + } + return false; + } +} +exports.LootRankingGenerator = LootRankingGenerator; +//# sourceMappingURL=LootRankingGenerator.js.map \ No newline at end of file diff --git a/user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js.map b/user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js.map new file mode 100644 index 0000000..5e8338c --- /dev/null +++ b/user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "LootRankingGenerator.js", + "sourceRoot": "", + "sources": [ + "LootRankingGenerator.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DanW-LateToTheParty/src/mod.js b/user/mods/DanW-LateToTheParty/src/mod.js new file mode 100644 index 0000000..74c9304 --- /dev/null +++ b/user/mods/DanW-LateToTheParty/src/mod.js @@ -0,0 +1,211 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* eslint-disable @typescript-eslint/naming-convention */ +const config_json_1 = __importDefault(require("../config/config.json")); +const CommonUtils_1 = require("./CommonUtils"); +const LootRankingGenerator_1 = require("./LootRankingGenerator"); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const modName = "LateToTheParty"; +class LateToTheParty { + commonUtils; + lootRankingGenerator; + logger; + locationConfig; + inRaidConfig; + configServer; + databaseServer; + databaseTables; + fileSystem; + localeService; + botWeaponGenerator; + hashUtil; + originalLooseLootMultipliers; + originalStaticLootMultipliers; + preSptLoad(container) { + const staticRouterModService = container.resolve("StaticRouterModService"); + const dynamicRouterModService = container.resolve("DynamicRouterModService"); + this.logger = container.resolve("WinstonLogger"); + // Get config.json settings for the bepinex plugin + staticRouterModService.registerStaticRouter(`StaticGetConfig${modName}`, [{ + url: "/LateToTheParty/GetConfig", + action: async () => { + return JSON.stringify(config_json_1.default); + } + }], "GetConfig"); + if (!config_json_1.default.enabled) { + return; + } + // Game start + // Needed to initialize loot ranking generator after any other mods have potentially changed config settings + staticRouterModService.registerStaticRouter(`StaticAkiGameStart${modName}`, [{ + url: "/client/game/start", + // biome-ignore lint/suspicious/noExplicitAny: + action: async (url, info, sessionId, output) => { + this.generateLootRankingData(sessionId); + return output; + } + }], "aki"); + // Get lootRanking.json for loot ranking + staticRouterModService.registerStaticRouter(`StaticGetLootRankingData${modName}`, [{ + url: "/LateToTheParty/GetLootRankingData", + action: async () => { + return JSON.stringify(this.lootRankingGenerator.getLootRankingDataFromFile()); + } + }], "GetLootRankingData"); + // Get an array of all car extract names + staticRouterModService.registerStaticRouter(`StaticGetCarExtractNames${modName}`, [{ + url: "/LateToTheParty/GetCarExtractNames", + action: async () => { + return JSON.stringify(this.inRaidConfig.carExtracts); + } + }], "GetCarExtractNames"); + // Adjust the static and loose loot multipliers + dynamicRouterModService.registerDynamicRouter(`DynamicSetLootMultipliers${modName}`, [{ + url: "/LateToTheParty/SetLootMultiplier/", + action: async (url) => { + const urlParts = url.split("/"); + const factor = Number(urlParts[urlParts.length - 1]); + this.setLootMultipliers(factor); + return JSON.stringify({ resp: "OK" }); + } + }], "SetLootMultiplier"); + } + postDBLoad(container) { + this.configServer = container.resolve("ConfigServer"); + this.databaseServer = container.resolve("DatabaseServer"); + this.fileSystem = container.resolve("FileSystemSync"); + this.localeService = container.resolve("LocaleService"); + this.botWeaponGenerator = container.resolve("BotWeaponGenerator"); + this.hashUtil = container.resolve("HashUtil"); + this.locationConfig = this.configServer.getConfig(ConfigTypes_1.ConfigTypes.LOCATION); + this.inRaidConfig = this.configServer.getConfig(ConfigTypes_1.ConfigTypes.IN_RAID); + this.databaseTables = this.databaseServer.getTables(); + this.commonUtils = new CommonUtils_1.CommonUtils(this.logger, this.databaseTables, this.localeService); + if (!config_json_1.default.enabled) { + this.commonUtils.logInfo("Mod disabled in config.json."); + return; + } + if (!this.doesFileIntegrityCheckPass()) { + config_json_1.default.enabled = false; + return; + } + this.adjustSPTScavRaidChanges(); + } + postSptLoad() { + if (!config_json_1.default.enabled) { + return; + } + // Store the original static and loose loot multipliers + this.getLootMultipliers(); + } + adjustSPTScavRaidChanges() { + this.commonUtils.logInfo("Adjusting SPT Scav-raid changes..."); + for (const map in this.locationConfig.scavRaidTimeSettings.maps) { + if (config_json_1.default.scav_raid_adjustments.always_spawn_late) { + this.locationConfig.scavRaidTimeSettings.maps[map].reducedChancePercent = 100; + } + if (config_json_1.default.destroy_loot_during_raid.enabled) { + this.locationConfig.scavRaidTimeSettings.maps[map].reduceLootByPercent = false; + } + } + } + getLootMultipliers() { + this.originalLooseLootMultipliers = + { + bigmap: this.locationConfig.looseLootMultiplier.bigmap, + develop: this.locationConfig.looseLootMultiplier.develop, + factory4_day: this.locationConfig.looseLootMultiplier.factory4_day, + factory4_night: this.locationConfig.looseLootMultiplier.factory4_night, + hideout: this.locationConfig.looseLootMultiplier.hideout, + interchange: this.locationConfig.looseLootMultiplier.interchange, + laboratory: this.locationConfig.looseLootMultiplier.laboratory, + lighthouse: this.locationConfig.looseLootMultiplier.lighthouse, + privatearea: this.locationConfig.looseLootMultiplier.privatearea, + rezervbase: this.locationConfig.looseLootMultiplier.rezervbase, + shoreline: this.locationConfig.looseLootMultiplier.shoreline, + suburbs: this.locationConfig.looseLootMultiplier.suburbs, + tarkovstreets: this.locationConfig.looseLootMultiplier.tarkovstreets, + terminal: this.locationConfig.looseLootMultiplier.terminal, + town: this.locationConfig.looseLootMultiplier.town, + woods: this.locationConfig.looseLootMultiplier.woods, + sandbox: this.locationConfig.looseLootMultiplier.sandbox + }; + this.originalStaticLootMultipliers = + { + bigmap: this.locationConfig.staticLootMultiplier.bigmap, + develop: this.locationConfig.staticLootMultiplier.develop, + factory4_day: this.locationConfig.staticLootMultiplier.factory4_day, + factory4_night: this.locationConfig.staticLootMultiplier.factory4_night, + hideout: this.locationConfig.staticLootMultiplier.hideout, + interchange: this.locationConfig.staticLootMultiplier.interchange, + laboratory: this.locationConfig.staticLootMultiplier.laboratory, + lighthouse: this.locationConfig.staticLootMultiplier.lighthouse, + privatearea: this.locationConfig.staticLootMultiplier.privatearea, + rezervbase: this.locationConfig.staticLootMultiplier.rezervbase, + shoreline: this.locationConfig.staticLootMultiplier.shoreline, + suburbs: this.locationConfig.staticLootMultiplier.suburbs, + tarkovstreets: this.locationConfig.staticLootMultiplier.tarkovstreets, + terminal: this.locationConfig.staticLootMultiplier.terminal, + town: this.locationConfig.staticLootMultiplier.town, + woods: this.locationConfig.staticLootMultiplier.woods, + sandbox: this.locationConfig.staticLootMultiplier.sandbox + }; + } + setLootMultipliers(factor) { + this.commonUtils.logInfo(`Adjusting loot multipliers by a factor of ${factor}...`); + this.locationConfig.looseLootMultiplier.bigmap = this.originalLooseLootMultipliers.bigmap * factor; + this.locationConfig.looseLootMultiplier.develop = this.originalLooseLootMultipliers.develop * factor; + this.locationConfig.looseLootMultiplier.factory4_day = this.originalLooseLootMultipliers.factory4_day * factor; + this.locationConfig.looseLootMultiplier.factory4_night = this.originalLooseLootMultipliers.factory4_night * factor; + this.locationConfig.looseLootMultiplier.hideout = this.originalLooseLootMultipliers.hideout * factor; + this.locationConfig.looseLootMultiplier.interchange = this.originalLooseLootMultipliers.interchange * factor; + this.locationConfig.looseLootMultiplier.laboratory = this.originalLooseLootMultipliers.laboratory * factor; + this.locationConfig.looseLootMultiplier.lighthouse = this.originalLooseLootMultipliers.lighthouse * factor; + this.locationConfig.looseLootMultiplier.privatearea = this.originalLooseLootMultipliers.privatearea * factor; + this.locationConfig.looseLootMultiplier.rezervbase = this.originalLooseLootMultipliers.rezervbase * factor; + this.locationConfig.looseLootMultiplier.shoreline = this.originalLooseLootMultipliers.shoreline * factor; + this.locationConfig.looseLootMultiplier.suburbs = this.originalLooseLootMultipliers.suburbs * factor; + this.locationConfig.looseLootMultiplier.tarkovstreets = this.originalLooseLootMultipliers.tarkovstreets * factor; + this.locationConfig.looseLootMultiplier.terminal = this.originalLooseLootMultipliers.terminal * factor; + this.locationConfig.looseLootMultiplier.town = this.originalLooseLootMultipliers.town * factor; + this.locationConfig.looseLootMultiplier.woods = this.originalLooseLootMultipliers.woods * factor; + this.locationConfig.looseLootMultiplier.sandbox = this.originalLooseLootMultipliers.sandbox * factor; + this.locationConfig.staticLootMultiplier.bigmap = this.originalStaticLootMultipliers.bigmap * factor; + this.locationConfig.staticLootMultiplier.develop = this.originalStaticLootMultipliers.develop * factor; + this.locationConfig.staticLootMultiplier.factory4_day = this.originalStaticLootMultipliers.factory4_day * factor; + this.locationConfig.staticLootMultiplier.factory4_night = this.originalStaticLootMultipliers.factory4_night * factor; + this.locationConfig.staticLootMultiplier.hideout = this.originalStaticLootMultipliers.hideout * factor; + this.locationConfig.staticLootMultiplier.interchange = this.originalStaticLootMultipliers.interchange * factor; + this.locationConfig.staticLootMultiplier.laboratory = this.originalStaticLootMultipliers.laboratory * factor; + this.locationConfig.staticLootMultiplier.lighthouse = this.originalStaticLootMultipliers.lighthouse * factor; + this.locationConfig.staticLootMultiplier.privatearea = this.originalStaticLootMultipliers.privatearea * factor; + this.locationConfig.staticLootMultiplier.rezervbase = this.originalStaticLootMultipliers.rezervbase * factor; + this.locationConfig.staticLootMultiplier.shoreline = this.originalStaticLootMultipliers.shoreline * factor; + this.locationConfig.staticLootMultiplier.suburbs = this.originalStaticLootMultipliers.suburbs * factor; + this.locationConfig.staticLootMultiplier.tarkovstreets = this.originalStaticLootMultipliers.tarkovstreets * factor; + this.locationConfig.staticLootMultiplier.terminal = this.originalStaticLootMultipliers.terminal * factor; + this.locationConfig.staticLootMultiplier.town = this.originalStaticLootMultipliers.town * factor; + this.locationConfig.staticLootMultiplier.woods = this.originalStaticLootMultipliers.woods * factor; + this.locationConfig.staticLootMultiplier.sandbox = this.originalStaticLootMultipliers.sandbox * factor; + } + generateLootRankingData(sessionId) { + this.lootRankingGenerator = new LootRankingGenerator_1.LootRankingGenerator(this.commonUtils, this.databaseTables, this.fileSystem, this.botWeaponGenerator, this.hashUtil); + this.lootRankingGenerator.generateLootRankingData(sessionId); + } + doesFileIntegrityCheckPass() { + const path = `${__dirname}/..`; + if (this.fileSystem.exists(`${path}/log/`)) { + this.commonUtils.logWarning("Found obsolete log folder 'user\\mods\\DanW-LateToTheParty\\log'. Logs are now saved in 'BepInEx\\plugins\\DanW-LateToTheParty\\log'."); + } + if (this.fileSystem.exists(`${path}/../../../BepInEx/plugins/LateToTheParty.dll`)) { + this.commonUtils.logError("Please remove BepInEx/plugins/LateToTheParty.dll from the previous version of this mod and restart the server, or it will NOT work correctly."); + return false; + } + return true; + } +} +module.exports = { mod: new LateToTheParty() }; +//# sourceMappingURL=mod.js.map \ No newline at end of file diff --git a/user/mods/DanW-LateToTheParty/src/mod.js.map b/user/mods/DanW-LateToTheParty/src/mod.js.map new file mode 100644 index 0000000..6533aa0 --- /dev/null +++ b/user/mods/DanW-LateToTheParty/src/mod.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "mod.js", + "sourceRoot": "", + "sources": [ + "mod.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/config/config.json b/user/mods/DanW-SPTQuestingBots/config/config.json index 919806c..566469d 100644 --- a/user/mods/DanW-SPTQuestingBots/config/config.json +++ b/user/mods/DanW-SPTQuestingBots/config/config.json @@ -265,7 +265,7 @@ } }, "bot_spawns": { - "enabled": true, + "enabled": false, "blacklisted_pmc_bot_brains": [ "bossKilla", "bossTagilla", "exUsec", "followerGluharAssault", "followerGluharProtect", "crazyAssaultEvent", "bossKnight" ], "spawn_retry_time": 10, "delay_game_start_until_bot_gen_finishes": true, diff --git a/user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js b/user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js new file mode 100644 index 0000000..6593de3 --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js @@ -0,0 +1,181 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BotUtil = void 0; +const config_json_1 = __importDefault(require("../config/config.json")); +class BotUtil { + commonUtils; + databaseTables; + iLocationConfig; + iBotConfig; + iPmcConfig; + static pmcRoles = ["pmcBEAR", "pmcUSEC"]; + constructor(commonUtils, databaseTables, iLocationConfig, iBotConfig, iPmcConfig) { + this.commonUtils = commonUtils; + this.databaseTables = databaseTables; + this.iLocationConfig = iLocationConfig; + this.iBotConfig = iBotConfig; + this.iPmcConfig = iPmcConfig; + } + adjustAllBotHostilityChances() { + if (!config_json_1.default.bot_spawns.pmc_hostility_adjustments.enabled) { + return; + } + this.commonUtils.logInfo("Adjusting bot hostility chances..."); + for (const location in this.databaseTables.locations) { + this.adjustAllBotHostilityChancesForLocation(this.databaseTables.locations[location]); + } + this.adjustSptPmcHostilityChances(this.iPmcConfig.hostilitySettings["pmcusec"]); + this.adjustSptPmcHostilityChances(this.iPmcConfig.hostilitySettings["pmcbear"]); + if (config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmcs_always_hostile_against_scavs) { + this.databaseTables.bots.types.assault.difficulty.easy.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.assault.difficulty.normal.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.assault.difficulty.hard.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.assault.difficulty.impossible.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.assaultgroup.difficulty.easy.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.assaultgroup.difficulty.normal.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.assaultgroup.difficulty.hard.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.assaultgroup.difficulty.impossible.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.marksman.difficulty.easy.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.marksman.difficulty.normal.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.marksman.difficulty.hard.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + this.databaseTables.bots.types.marksman.difficulty.impossible.Mind.ENEMY_BOT_TYPES = BotUtil.pmcRoles; + } + this.commonUtils.logInfo("Adjusting bot hostility chances...done."); + } + adjustAllBotHostilityChancesForLocation(location) { + if ((location.base === undefined) || (location.base.BotLocationModifier === undefined)) { + return; + } + const settings = location.base.BotLocationModifier.AdditionalHostilitySettings; + if (settings === undefined) { + return; + } + for (const botType in settings) { + if (!BotUtil.pmcRoles.includes(settings[botType].BotRole)) { + //this.commonUtils.logWarning(`Did not adjust ${settings[botType].BotRole} hostility settings on ${location.base.Name}`); + continue; + } + this.adjustBotHostilityChances(settings[botType]); + } + } + adjustBotHostilityChances(settings) { + // This seems to be undefined for most maps + if (settings.SavageEnemyChance !== undefined) { + settings.SavageEnemyChance = config_json_1.default.bot_spawns.pmc_hostility_adjustments.global_scav_enemy_chance; + } + if (config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmcs_always_hostile_against_scavs) { + settings.SavagePlayerBehaviour = "AlwaysEnemies"; + } + for (const chancedEnemy in settings.ChancedEnemies) { + if (config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmc_enemy_roles.includes(settings.ChancedEnemies[chancedEnemy].Role)) { + settings.ChancedEnemies[chancedEnemy].EnemyChance = 100; + continue; + } + // This allows Questing Bots to set boss hostilities when the bot spawns + settings.ChancedEnemies[chancedEnemy].EnemyChance = 0; + } + if (config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmcs_always_hostile_against_pmcs) { + settings.BearEnemyChance = 100; + settings.UsecEnemyChance = 100; + this.addMissingPMCRolesToChancedEnemies(settings); + } + } + addMissingPMCRolesToChancedEnemies(settings) { + for (const pmcRole of BotUtil.pmcRoles) { + if (!config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmc_enemy_roles.includes(pmcRole)) { + continue; + } + let foundRole = false; + for (const chancedEnemy in settings.ChancedEnemies) { + if (settings.ChancedEnemies[chancedEnemy].Role === pmcRole) { + foundRole = true; + break; + } + } + if (foundRole) { + continue; + } + const newEnemy = { + EnemyChance: 100, + Role: pmcRole + }; + settings.ChancedEnemies.push(newEnemy); + } + } + adjustSptPmcHostilityChances(settings) { + settings.savageEnemyChance = config_json_1.default.bot_spawns.pmc_hostility_adjustments.global_scav_enemy_chance; + if (config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmcs_always_hostile_against_scavs) { + settings.savagePlayerBehaviour = "AlwaysEnemies"; + } + for (const chancedEnemy in settings.chancedEnemies) { + if (config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmc_enemy_roles.includes(settings.chancedEnemies[chancedEnemy].Role)) { + settings.chancedEnemies[chancedEnemy].EnemyChance = 100; + continue; + } + } + if (config_json_1.default.bot_spawns.pmc_hostility_adjustments.pmcs_always_hostile_against_pmcs) { + settings.bearEnemyChance = 100; + settings.usecEnemyChance = 100; + } + } + disablePvEBossWaves() { + let removedWaves = 0; + for (const location in this.databaseTables.locations) { + removedWaves += this.removePvEBossWavesFromLocation(this.databaseTables.locations[location]); + } + if (removedWaves > 0) { + this.commonUtils.logInfo(`Disabled ${removedWaves} PvE boss waves`); + } + } + removePvEBossWavesFromLocation(location) { + let removedWaves = 0; + if ((location.base === undefined) || (location.base.BossLocationSpawn === undefined)) { + return removedWaves; + } + const modifiedBossLocationSpawn = []; + for (const bossLocationSpawnId in location.base.BossLocationSpawn) { + const bossLocationSpawn = location.base.BossLocationSpawn[bossLocationSpawnId]; + if (BotUtil.pmcRoles.includes(bossLocationSpawn.BossName)) { + removedWaves++; + continue; + } + modifiedBossLocationSpawn.push(bossLocationSpawn); + } + location.base.BossLocationSpawn = modifiedBossLocationSpawn; + return removedWaves; + } + disableBotWaves(waves, botType) { + let originalWaves = 0; + for (const location in waves) { + originalWaves += waves[location].length; + waves[location] = []; + } + if (originalWaves > 0) { + this.commonUtils.logInfo(`Disabled ${originalWaves} custom ${botType} waves`); + } + } + useEFTBotCaps() { + for (const location in this.iBotConfig.maxBotCap) { + if ((this.databaseTables.locations[location] === undefined) || (this.databaseTables.locations[location].base === undefined)) { + continue; + } + const originalSPTCap = this.iBotConfig.maxBotCap[location]; + const eftCap = this.databaseTables.locations[location].base.BotMax; + const shouldChangeBotCap = (originalSPTCap > eftCap) || !config_json_1.default.bot_spawns.bot_cap_adjustments.only_decrease_bot_caps; + if (config_json_1.default.bot_spawns.bot_cap_adjustments.use_EFT_bot_caps && shouldChangeBotCap) { + this.iBotConfig.maxBotCap[location] = eftCap; + } + const fixedAdjustment = config_json_1.default.bot_spawns.bot_cap_adjustments.map_specific_adjustments[location]; + this.iBotConfig.maxBotCap[location] += fixedAdjustment; + const newCap = this.iBotConfig.maxBotCap[location]; + if (newCap !== originalSPTCap) { + this.commonUtils.logInfo(`Updated bot cap for ${location} to ${newCap} (Original SPT: ${originalSPTCap}, EFT: ${eftCap}, fixed adjustment: ${fixedAdjustment})`); + } + } + } +} +exports.BotUtil = BotUtil; +//# sourceMappingURL=BotLocationUtil.js.map \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js.map b/user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js.map new file mode 100644 index 0000000..3e1e43e --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "BotLocationUtil.js", + "sourceRoot": "", + "sources": [ + "BotLocationUtil.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/src/CommonUtils.js b/user/mods/DanW-SPTQuestingBots/src/CommonUtils.js new file mode 100644 index 0000000..992463c --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/CommonUtils.js @@ -0,0 +1,48 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CommonUtils = void 0; +const config_json_1 = __importDefault(require("../config/config.json")); +class CommonUtils { + logger; + databaseTables; + localeService; + debugMessagePrefix = "[Questing Bots] "; + translations; + constructor(logger, databaseTables, localeService) { + this.logger = logger; + this.databaseTables = databaseTables; + this.localeService = localeService; + // Get all translations for the current locale + this.translations = this.localeService.getLocaleDb(); + } + logDebug(message, alwaysShow = false) { + if (config_json_1.default.enabled || alwaysShow) + this.logger.debug(this.debugMessagePrefix + message); + } + logInfo(message, alwaysShow = false) { + if (config_json_1.default.enabled || alwaysShow) + this.logger.info(this.debugMessagePrefix + message); + } + logWarning(message) { + this.logger.warning(this.debugMessagePrefix + message); + } + logError(message) { + this.logger.error(this.debugMessagePrefix + message); + } + getItemName(itemID) { + const translationKey = `${itemID} Name`; + if (translationKey in this.translations) + return this.translations[translationKey]; + // If a key can't be found in the translations dictionary, fall back to the template data if possible + if (!(itemID in this.databaseTables.templates.items)) { + return undefined; + } + const item = this.databaseTables.templates.items[itemID]; + return item._name; + } +} +exports.CommonUtils = CommonUtils; +//# sourceMappingURL=CommonUtils.js.map \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/src/CommonUtils.js.map b/user/mods/DanW-SPTQuestingBots/src/CommonUtils.js.map new file mode 100644 index 0000000..464b3bc --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/CommonUtils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "CommonUtils.js", + "sourceRoot": "", + "sources": [ + "CommonUtils.ts" + ], + "names": [], + "mappings": ";;;;;;AAAA,wEAA8C;AAM9C,MAAa,WAAW;IAKC;IAAyB;IAAyC;IAH/E,kBAAkB,GAAG,kBAAkB,CAAC;IACxC,YAAY,CAAyB;IAE7C,YAAqB,MAAe,EAAU,cAA+B,EAAU,aAA4B;QAA9F,WAAM,GAAN,MAAM,CAAS;QAAU,mBAAc,GAAd,cAAc,CAAiB;QAAU,kBAAa,GAAb,aAAa,CAAe;QAE/G,8CAA8C;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IACzD,CAAC;IAEM,QAAQ,CAAC,OAAe,EAAE,UAAU,GAAG,KAAK;QAE/C,IAAI,qBAAS,CAAC,OAAO,IAAI,UAAU;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,UAAU,GAAG,KAAK;QAE9C,IAAI,qBAAS,CAAC,OAAO,IAAI,UAAU;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEM,UAAU,CAAC,OAAe;QAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEM,QAAQ,CAAC,OAAe;QAE3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;IACzD,CAAC;IAEM,WAAW,CAAC,MAAc;QAE7B,MAAM,cAAc,GAAG,GAAG,MAAM,OAAO,CAAC;QACxC,IAAI,cAAc,IAAI,IAAI,CAAC,YAAY;YACnC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAE7C,qGAAqG;QACrG,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EACpD,CAAC;YACG,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CACJ;AAhDD,kCAgDC" +} \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js b/user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js new file mode 100644 index 0000000..eee56a9 --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js @@ -0,0 +1,48 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PMCConversionUtil = void 0; +const config_json_1 = __importDefault(require("../config/config.json")); +class PMCConversionUtil { + commonUtils; + iPmcConfig; + iBotConfig; + constructor(commonUtils, iPmcConfig, iBotConfig) { + this.commonUtils = commonUtils; + this.iPmcConfig = iPmcConfig; + this.iBotConfig = iBotConfig; + } + removeBlacklistedBrainTypes() { + const badBrains = config_json_1.default.bot_spawns.blacklisted_pmc_bot_brains; + let removedBrains = 0; + for (const pmcType in this.iPmcConfig.pmcType) { + for (const map in this.iPmcConfig.pmcType[pmcType]) { + const mapBrains = this.iPmcConfig.pmcType[pmcType][map]; + for (const i in badBrains) { + if (mapBrains[badBrains[i]] === undefined) { + continue; + } + // this.commonUtils.logInfo(`Removing ${badBrains[i]} from ${pmcType} in ${map}...`); + delete mapBrains[badBrains[i]]; + removedBrains++; + } + } + } + for (const map in this.iBotConfig.playerScavBrainType) { + const mapBrains = this.iBotConfig.playerScavBrainType[map]; + for (const i in badBrains) { + if (mapBrains[badBrains[i]] === undefined) { + continue; + } + // this.commonUtils.logInfo(`Removing ${badBrains[i]} from playerscavs in ${map}...`); + delete mapBrains[badBrains[i]]; + removedBrains++; + } + } + this.commonUtils.logInfo(`Removed ${removedBrains} blacklisted brain types from being used for PMC's and Player Scav's`); + } +} +exports.PMCConversionUtil = PMCConversionUtil; +//# sourceMappingURL=PMCConversionUtil.js.map \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js.map b/user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js.map new file mode 100644 index 0000000..6bef4f4 --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "PMCConversionUtil.js", + "sourceRoot": "", + "sources": [ + "PMCConversionUtil.ts" + ], + "names": [], + "mappings": ";;;;;;AAAA,wEAA8C;AAM9C,MAAa,iBAAiB;IAEN;IAAkC;IAAgC;IAAtF,YAAoB,WAAwB,EAAU,UAAsB,EAAU,UAAsB;QAAxF,gBAAW,GAAX,WAAW,CAAa;QAAU,eAAU,GAAV,UAAU,CAAY;QAAU,eAAU,GAAV,UAAU,CAAY;IAG5G,CAAC;IAEM,2BAA2B;QAE9B,MAAM,SAAS,GAAG,qBAAS,CAAC,UAAU,CAAC,0BAA0B,CAAC;QAElE,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAC7C,CAAC;YACG,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAClD,CAAC;gBACG,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;gBAExD,KAAK,MAAM,CAAC,IAAI,SAAS,EACzB,CAAC;oBACG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EACzC,CAAC;wBACG,SAAS;oBACb,CAAC;oBAED,qFAAqF;oBACrF,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/B,aAAa,EAAE,CAAC;gBACpB,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,EACrD,CAAC;YACG,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAE3D,KAAK,MAAM,CAAC,IAAI,SAAS,EACzB,CAAC;gBACG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EACzC,CAAC;oBACG,SAAS;gBACb,CAAC;gBAED,sFAAsF;gBACtF,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,aAAa,EAAE,CAAC;YACpB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,aAAa,sEAAsE,CAAC,CAAC;IAC7H,CAAC;CACJ;AAnDD,8CAmDC" +} \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/src/mod.js b/user/mods/DanW-SPTQuestingBots/src/mod.js new file mode 100644 index 0000000..0c5b272 --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/mod.js @@ -0,0 +1,293 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const config_json_1 = __importDefault(require("../config/config.json")); +const eftQuestSettings_json_1 = __importDefault(require("../config/eftQuestSettings.json")); +const zoneAndItemQuestPositions_json_1 = __importDefault(require("../config/zoneAndItemQuestPositions.json")); +const CommonUtils_1 = require("./CommonUtils"); +const BotLocationUtil_1 = require("./BotLocationUtil"); +const PMCConversionUtil_1 = require("./PMCConversionUtil"); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const GameEditions_1 = require("C:/snapshot/project/obj/models/enums/GameEditions"); +const MemberCategory_1 = require("C:/snapshot/project/obj/models/enums/MemberCategory"); +const modName = "SPTQuestingBots"; +const spawningModNames = ["SWAG", "DewardianDev-MOAR", "PreyToLive-BetterSpawnsPlus", "RealPlayerSpawn", "acidphantasm-botplacementsystem"]; +class QuestingBots { + commonUtils; + botUtil; + pmcConversionUtil; + logger; + configServer; + databaseServer; + databaseTables; + localeService; + questHelper; + fileSystem; + httpResponseUtil; + randomUtil; + weightedRandomHelper; + botController; + botNameService; + iBotConfig; + iPmcConfig; + iLocationConfig; + basePScavConversionChance; + preSptLoad(container) { + this.logger = container.resolve("WinstonLogger"); + const staticRouterModService = container.resolve("StaticRouterModService"); + const dynamicRouterModService = container.resolve("DynamicRouterModService"); + // Get config.json settings for the bepinex plugin + staticRouterModService.registerStaticRouter(`StaticGetConfig${modName}`, [{ + url: "/QuestingBots/GetConfig", + action: async () => { + return JSON.stringify(config_json_1.default); + } + }], "GetConfig"); + if (!config_json_1.default.enabled) { + return; + } + // Apply a scalar factor to the SPT-AKI PScav conversion chance + dynamicRouterModService.registerDynamicRouter(`DynamicAdjustPScavChance${modName}`, [{ + url: "/QuestingBots/AdjustPScavChance/", + action: async (url) => { + const urlParts = url.split("/"); + const factor = Number(urlParts[urlParts.length - 1]); + this.iBotConfig.chanceAssaultScavHasPlayerScavName = Math.round(this.basePScavConversionChance * factor); + this.commonUtils.logInfo(`Adjusted PScav spawn chance to ${this.iBotConfig.chanceAssaultScavHasPlayerScavName}%`); + return JSON.stringify({ resp: "OK" }); + } + }], "AdjustPScavChance"); + // Get all EFT quest templates + // NOTE: This includes custom quests added by mods + staticRouterModService.registerStaticRouter(`GetAllQuestTemplates${modName}`, [{ + url: "/QuestingBots/GetAllQuestTemplates", + action: async () => { + return JSON.stringify({ templates: this.questHelper.getQuestsFromDb() }); + } + }], "GetAllQuestTemplates"); + // Get override settings for EFT quests + staticRouterModService.registerStaticRouter(`GetEFTQuestSettings${modName}`, [{ + url: "/QuestingBots/GetEFTQuestSettings", + action: async () => { + return JSON.stringify({ settings: eftQuestSettings_json_1.default }); + } + }], "GetEFTQuestSettings"); + // Get override settings for quest zones and items + staticRouterModService.registerStaticRouter(`GetZoneAndItemQuestPositions${modName}`, [{ + url: "/QuestingBots/GetZoneAndItemQuestPositions", + action: async () => { + return JSON.stringify({ zoneAndItemPositions: zoneAndItemQuestPositions_json_1.default }); + } + }], "GetZoneAndItemQuestPositions"); + // Get Scav-raid settings to determine PScav conversion chances + staticRouterModService.registerStaticRouter(`GetScavRaidSettings${modName}`, [{ + url: "/QuestingBots/GetScavRaidSettings", + action: async () => { + return JSON.stringify({ maps: this.iLocationConfig.scavRaidTimeSettings.maps }); + } + }], "GetScavRaidSettings"); + // Get the chance that a PMC will be a USEC + staticRouterModService.registerStaticRouter(`GetUSECChance${modName}`, [{ + url: "/QuestingBots/GetUSECChance", + action: async () => { + return JSON.stringify({ usecChance: this.iPmcConfig.isUsec }); + } + }], "GetUSECChance"); + // Intercept the EFT bot-generation request to include a PScav conversion chance + container.afterResolution("BotCallbacks", (_t, result) => { + result.generateBots = async (url, info, sessionID) => { + const bots = await this.generateBots({ conditions: info.conditions }, sessionID, info.GeneratePScav); + return this.httpResponseUtil.getBody(bots); + }; + }, { frequency: "Always" }); + } + postDBLoad(container) { + this.configServer = container.resolve("ConfigServer"); + this.databaseServer = container.resolve("DatabaseServer"); + this.localeService = container.resolve("LocaleService"); + this.questHelper = container.resolve("QuestHelper"); + this.fileSystem = container.resolve("FileSystemSync"); + this.httpResponseUtil = container.resolve("HttpResponseUtil"); + this.randomUtil = container.resolve("RandomUtil"); + this.weightedRandomHelper = container.resolve("WeightedRandomHelper"); + this.botController = container.resolve("BotController"); + this.botNameService = container.resolve("BotNameService"); + this.iBotConfig = this.configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + this.iPmcConfig = this.configServer.getConfig(ConfigTypes_1.ConfigTypes.PMC); + this.iLocationConfig = this.configServer.getConfig(ConfigTypes_1.ConfigTypes.LOCATION); + this.databaseTables = this.databaseServer.getTables(); + this.commonUtils = new CommonUtils_1.CommonUtils(this.logger, this.databaseTables, this.localeService); + this.botUtil = new BotLocationUtil_1.BotUtil(this.commonUtils, this.databaseTables, this.iLocationConfig, this.iBotConfig, this.iPmcConfig); + this.pmcConversionUtil = new PMCConversionUtil_1.PMCConversionUtil(this.commonUtils, this.iPmcConfig, this.iBotConfig); + if (!config_json_1.default.enabled) { + return; + } + if (!this.doesFileIntegrityCheckPass()) { + config_json_1.default.enabled = false; + return; + } + if (!this.areArraysValid()) { + config_json_1.default.enabled = false; + return; + } + } + postSptLoad(container) { + if (!config_json_1.default.enabled) { + this.commonUtils.logInfo("Mod disabled in config.json", true); + return; + } + const presptModLoader = container.resolve("PreSptModLoader"); + this.pmcConversionUtil.removeBlacklistedBrainTypes(); + // Disable the Questing Bots spawning system if another spawning mod has been loaded + if (this.shouldDisableSpawningSystem(presptModLoader.getImportedModsNames())) { + config_json_1.default.bot_spawns.enabled = false; + } + // Make Questing Bots control PScav spawning + this.basePScavConversionChance = this.iBotConfig.chanceAssaultScavHasPlayerScavName; + if (config_json_1.default.adjust_pscav_chance.enabled || (config_json_1.default.bot_spawns.enabled && config_json_1.default.bot_spawns.player_scavs.enabled)) { + this.iBotConfig.chanceAssaultScavHasPlayerScavName = 0; + } + this.configureSpawningSystem(); + } + configureSpawningSystem() { + if (!config_json_1.default.bot_spawns.enabled) { + return; + } + this.commonUtils.logInfo("Configuring game for bot spawning..."); + // Overwrite BSG's chances of bots being friendly toward each other + this.botUtil.adjustAllBotHostilityChances(); + // Remove all of BSG's PvE-only boss waves + this.botUtil.disablePvEBossWaves(); + // Currently these are all PMC waves, which are unnecessary with PMC spawns in this mod + this.botUtil.disableBotWaves(this.iLocationConfig.customWaves.boss, "boss"); + // Disable all of the extra Scavs that spawn into Factory + this.botUtil.disableBotWaves(this.iLocationConfig.customWaves.normal, "Scav"); + // Disable SPT's PMC wave generator + this.botUtil.disableBotWaves(this.iPmcConfig.customPmcWaves, "PMC"); + // Use EFT's bot caps instead of SPT's + this.botUtil.useEFTBotCaps(); + // If Rogues don't spawn immediately, PMC spawns will be significantly delayed + if (config_json_1.default.bot_spawns.limit_initial_boss_spawns.disable_rogue_delay && (this.iLocationConfig.rogueLighthouseSpawnTimeSettings.waitTimeSeconds > -1)) { + this.iLocationConfig.rogueLighthouseSpawnTimeSettings.waitTimeSeconds = -1; + this.commonUtils.logInfo("Removed SPT Rogue spawn delay"); + } + this.commonUtils.logInfo("Configuring game for bot spawning...done."); + } + async generateBots(info, sessionID, shouldBePScavGroup) { + const bots = await this.botController.generate(sessionID, info); + if (!shouldBePScavGroup) { + return bots; + } + for (const bot in bots) { + if (bots[bot].Info.Settings.Role !== "assault") { + this.commonUtils.logDebug(`Tried generating a player Scav, but a bot with role ${bots[bot].Info.Settings.Role} was returned`); + continue; + } + this.botNameService.addRandomPmcNameToBotMainProfileNicknameProperty(bots[bot]); + this.setRandomisedGameVersionAndCategory(bots[bot].Info); + } + return bots; + } + setRandomisedGameVersionAndCategory(botInfo) { + /* SPT CODE - BotGenerator.setRandomisedGameVersionAndCategory(bot.Info) */ + // Special case + if (botInfo.Nickname?.toLowerCase() === "nikita") { + botInfo.GameVersion = GameEditions_1.GameEditions.UNHEARD; + botInfo.MemberCategory = MemberCategory_1.MemberCategory.DEVELOPER; + return botInfo.GameVersion; + } + // Choose random weighted game version for bot + botInfo.GameVersion = this.weightedRandomHelper.getWeightedValue(this.iPmcConfig.gameVersionWeight); + // Choose appropriate member category value + switch (botInfo.GameVersion) { + case GameEditions_1.GameEditions.EDGE_OF_DARKNESS: + botInfo.MemberCategory = MemberCategory_1.MemberCategory.UNIQUE_ID; + break; + case GameEditions_1.GameEditions.UNHEARD: + botInfo.MemberCategory = MemberCategory_1.MemberCategory.UNHEARD; + break; + default: + // Everyone else gets a weighted randomised category + botInfo.MemberCategory = Number.parseInt(this.weightedRandomHelper.getWeightedValue(this.iPmcConfig.accountTypeWeight), 10); + } + // Ensure selected category matches + botInfo.SelectedMemberCategory = botInfo.MemberCategory; + return botInfo.GameVersion; + } + doesFileIntegrityCheckPass() { + const path = `${__dirname}/..`; + if (this.fileSystem.exists(`${path}/quests/`)) { + this.commonUtils.logWarning("Found obsolete quests folder 'user\\mods\\DanW-SPTQuestingBots\\quests'. Only quest files in 'BepInEx\\plugins\\DanW-SPTQuestingBots\\quests' will be used."); + } + if (this.fileSystem.exists(`${path}/log/`)) { + this.commonUtils.logWarning("Found obsolete log folder 'user\\mods\\DanW-SPTQuestingBots\\log'. Logs are now saved in 'BepInEx\\plugins\\DanW-SPTQuestingBots\\log'."); + } + if (this.fileSystem.exists(`${path}/../../../BepInEx/plugins/SPTQuestingBots.dll`)) { + this.commonUtils.logError("Please remove BepInEx/plugins/SPTQuestingBots.dll from the previous version of this mod and restart the server, or it will NOT work correctly."); + return false; + } + return true; + } + areArraysValid() { + if (!this.isChanceArrayValid(config_json_1.default.questing.bot_quests.eft_quests.level_range, true)) { + this.commonUtils.logError("questing.bot_quests.eft_quests.level_range has invalid data. Mod disabled."); + return false; + } + if (!this.isChanceArrayValid(config_json_1.default.bot_spawns.pmcs.fraction_of_max_players_vs_raidET, false)) { + this.commonUtils.logError("bot_spawns.pmcs.fraction_of_max_players_vs_raidET has invalid data. Mod disabled."); + return false; + } + if (!this.isChanceArrayValid(config_json_1.default.bot_spawns.pmcs.bots_per_group_distribution, true)) { + this.commonUtils.logError("bot_spawns.pmcs.bots_per_group_distribution has invalid data. Mod disabled."); + return false; + } + if (!this.isChanceArrayValid(config_json_1.default.bot_spawns.pmcs.bot_difficulty_as_online, true)) { + this.commonUtils.logError("bot_spawns.pmcs.bot_difficulty_as_online has invalid data. Mod disabled."); + return false; + } + if (!this.isChanceArrayValid(config_json_1.default.bot_spawns.player_scavs.bots_per_group_distribution, true)) { + this.commonUtils.logError("bot_spawns.player_scavs.bots_per_group_distribution has invalid data. Mod disabled."); + return false; + } + if (!this.isChanceArrayValid(config_json_1.default.bot_spawns.player_scavs.bot_difficulty_as_online, true)) { + this.commonUtils.logError("bot_spawns.player_scavs.bot_difficulty_as_online has invalid data. Mod disabled."); + return false; + } + if (!this.isChanceArrayValid(config_json_1.default.adjust_pscav_chance.chance_vs_time_remaining_fraction, false)) { + this.commonUtils.logError("adjust_pscav_chance.chance_vs_time_remaining_fraction has invalid data. Mod disabled."); + return false; + } + return true; + } + isChanceArrayValid(array, shouldLeftColumnBeIntegers) { + if (array.length === 0) { + return false; + } + for (const row of array) { + if (row.length !== 2) { + return false; + } + if (shouldLeftColumnBeIntegers && !Number.isInteger(row[0])) { + this.commonUtils.logError("Found a chance array with an invalid value in its left column. Please ensure you are not using an outdated version of config.json."); + return false; + } + } + return true; + } + shouldDisableSpawningSystem(importedModNames) { + if (!config_json_1.default.bot_spawns.enabled) { + return false; + } + for (const spawningModName of spawningModNames) { + if (importedModNames.includes(spawningModName)) { + this.commonUtils.logWarning(`${spawningModName} detected. Disabling the Questing Bots spawning system.`); + return true; + } + } + return false; + } +} +module.exports = { mod: new QuestingBots() }; +//# sourceMappingURL=mod.js.map \ No newline at end of file diff --git a/user/mods/DanW-SPTQuestingBots/src/mod.js.map b/user/mods/DanW-SPTQuestingBots/src/mod.js.map new file mode 100644 index 0000000..f2e9fd2 --- /dev/null +++ b/user/mods/DanW-SPTQuestingBots/src/mod.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "mod.js", + "sourceRoot": "", + "sources": [ + "mod.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/GlobalValues.js b/user/mods/DewardianDev-MOAR/src/GlobalValues.js new file mode 100644 index 0000000..d1ed10d --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/GlobalValues.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.globalValues = void 0; +class globalValues { + static baseConfig = undefined; + static overrideConfig = undefined; + static locationsBase = undefined; + static currentPreset = ""; + static forcedPreset = "random"; + static addedMapZones = {}; + static indexedMapSpawns = {}; + static playerSpawn; +} +exports.globalValues = globalValues; +//# sourceMappingURL=GlobalValues.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/GlobalValues.js.map b/user/mods/DewardianDev-MOAR/src/GlobalValues.js.map new file mode 100644 index 0000000..f7a0f7b --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/GlobalValues.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "GlobalValues.js", + "sourceRoot": "", + "sources": [ + "GlobalValues.ts" + ], + "names": [], + "mappings": ";;;AAOA,MAAa,YAAY;IAChB,MAAM,CAAC,UAAU,GAAkB,SAAS,CAAC;IAC7C,MAAM,CAAC,cAAc,GAA2B,SAAS,CAAC;IAC1D,MAAM,CAAC,aAAa,GAAoB,SAAS,CAAC;IAClD,MAAM,CAAC,aAAa,GAAW,EAAE,CAAC;IAClC,MAAM,CAAC,YAAY,GAAW,QAAQ,CAAC;IACvC,MAAM,CAAC,aAAa,GAA6B,EAAE,CAAC;IACpD,MAAM,CAAC,gBAAgB,GAAuC,EAAE,CAAC;IACjE,MAAM,CAAC,WAAW,CAAmB;;AAR9C,oCASC" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Routes/routes.js b/user/mods/DewardianDev-MOAR/src/Routes/routes.js new file mode 100644 index 0000000..1234db9 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Routes/routes.js @@ -0,0 +1,130 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupRoutes = void 0; +const Spawning_1 = require("../Spawning/Spawning"); +const GlobalValues_1 = require("../GlobalValues"); +const utils_1 = require("../utils"); +const PresetWeightings_json_1 = __importDefault(require("../../config/PresetWeightings.json")); +const updateUtils_1 = require("../SpawnZoneChanges/updateUtils"); +const setupRoutes = (container) => { + const staticRouterModService = container.resolve("StaticRouterModService"); + staticRouterModService.registerStaticRouter(`moarAddBotSpawn`, [ + { + url: "/moar/addBotSpawn", + action: async (url, req, sessionID, output) => { + (0, updateUtils_1.updateBotSpawn)(req.map, req.position, req.type); + return "success"; + }, + }, + ], "moarAddBotSpawn"); + staticRouterModService.registerStaticRouter(`moarDeleteBotSpawn`, [ + { + url: "/moar/deleteBotSpawn", + action: async (url, req, sessionID, output) => { + // console.log(req); + (0, updateUtils_1.deleteBotSpawn)(req.map, req.position, req.type); + return "success"; + }, + }, + ], "moarDeleteBotSpawn"); + // Make buildwaves run on game end + staticRouterModService.registerStaticRouter(`moarUpdater`, [ + { + url: "/client/match/local/end", + action: async (_url, info, sessionId, output) => { + (0, Spawning_1.buildWaves)(container); + return output; + }, + }, + ], "moarUpdater"); + staticRouterModService.registerStaticRouter(`moarGetCurrentPreset`, [ + { + url: "/moar/currentPreset", + action: async () => { + return GlobalValues_1.globalValues.forcedPreset || "random"; + }, + }, + ], "moarGetCurrentPreset"); + staticRouterModService.registerStaticRouter(`moarGetAnnouncePreset`, [ + { + url: "/moar/announcePreset", + action: async () => { + if (GlobalValues_1.globalValues.forcedPreset?.toLowerCase() === "random") { + return GlobalValues_1.globalValues.currentPreset; + } + return GlobalValues_1.globalValues.forcedPreset || GlobalValues_1.globalValues.currentPreset; + }, + }, + ], "moarGetAnnouncePreset"); + staticRouterModService.registerStaticRouter(`getDefaultConfig`, [ + { + url: "/moar/getDefaultConfig", + action: async () => { + return JSON.stringify(GlobalValues_1.globalValues.baseConfig); + }, + }, + ], "getDefaultConfig"); + staticRouterModService.registerStaticRouter(`getServerConfigWithOverrides`, [ + { + url: "/moar/getServerConfigWithOverrides", + action: async () => { + return JSON.stringify({ + ...(GlobalValues_1.globalValues.baseConfig || {}), + ...(GlobalValues_1.globalValues.overrideConfig || {}), + }); + }, + }, + ], "getServerConfigWithOverrides"); + staticRouterModService.registerStaticRouter(`getServerConfigWithOverrides`, [ + { + url: "/moar/getServerConfigWithOverrides", + action: async () => { + return JSON.stringify({ + ...GlobalValues_1.globalValues.baseConfig, + ...GlobalValues_1.globalValues.overrideConfig, + }); + }, + }, + ], "getServerConfigWithOverrides"); + staticRouterModService.registerStaticRouter(`moarGetPresetsList`, [ + { + url: "/moar/getPresets", + action: async () => { + let result = [ + ...Object.keys(PresetWeightings_json_1.default).map((preset) => ({ + Name: (0, utils_1.kebabToTitle)(preset), + Label: preset, + })), + { Name: "Random", Label: "random" }, + { Name: "Custom", Label: "custom" }, + ]; + return JSON.stringify({ data: result }); + }, + }, + ], "moarGetPresetsList"); + staticRouterModService.registerStaticRouter("setOverrideConfig", [ + { + url: "/moar/setOverrideConfig", + action: async (url, overrideConfig = {}, sessionID, output) => { + GlobalValues_1.globalValues.overrideConfig = overrideConfig; + (0, Spawning_1.buildWaves)(container); + return "Success"; + }, + }, + ], "setOverrideConfig"); + staticRouterModService.registerStaticRouter("moarSetPreset", [ + { + url: "/moar/setPreset", + action: async (url, { Preset }, sessionID, output) => { + GlobalValues_1.globalValues.forcedPreset = Preset; + (0, Spawning_1.buildWaves)(container); + return `Current Preset: ${(0, utils_1.kebabToTitle)(GlobalValues_1.globalValues.forcedPreset || "Random")}`; + }, + }, + ], "moarSetPreset"); +}; +exports.setupRoutes = setupRoutes; +//# sourceMappingURL=routes.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Routes/routes.js.map b/user/mods/DewardianDev-MOAR/src/Routes/routes.js.map new file mode 100644 index 0000000..9355ab9 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Routes/routes.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "routes.js", + "sourceRoot": "", + "sources": [ + "routes.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js new file mode 100644 index 0000000..6889e19 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js @@ -0,0 +1,16 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PmcSpawns = exports.SniperSpawns = exports.ScavSpawns = exports.PlayerSpawns = void 0; +// context/index.js +var playerSpawns_json_1 = require("../../config/Spawns/playerSpawns.json"); +Object.defineProperty(exports, "PlayerSpawns", { enumerable: true, get: function () { return __importDefault(playerSpawns_json_1).default; } }); +var scavSpawns_json_1 = require("../../config/Spawns/scavSpawns.json"); +Object.defineProperty(exports, "ScavSpawns", { enumerable: true, get: function () { return __importDefault(scavSpawns_json_1).default; } }); +var sniperSpawns_json_1 = require("../../config/Spawns/sniperSpawns.json"); +Object.defineProperty(exports, "SniperSpawns", { enumerable: true, get: function () { return __importDefault(sniperSpawns_json_1).default; } }); +var pmcSpawns_json_1 = require("../../config/Spawns/pmcSpawns.json"); +Object.defineProperty(exports, "PmcSpawns", { enumerable: true, get: function () { return __importDefault(pmcSpawns_json_1).default; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js.map b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js.map new file mode 100644 index 0000000..51af28b --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "index.js", + "sourceRoot": "", + "sources": [ + "index.ts" + ], + "names": [], + "mappings": ";;;;;;AAAA,mBAAmB;AACnB,2EAAgF;AAAvE,kIAAA,OAAO,OAAgB;AAChC,uEAA4E;AAAnE,8HAAA,OAAO,OAAc;AAC9B,2EAAgF;AAAvE,kIAAA,OAAO,OAAgB;AAChC,qEAA0E;AAAjE,4HAAA,OAAO,OAAa" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js new file mode 100644 index 0000000..8a6aefc --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js @@ -0,0 +1,150 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupSpawns = void 0; +const constants_1 = require("../Spawning/constants"); +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const GlobalValues_1 = require("../GlobalValues"); +const spawnZoneUtils_1 = require("../Spawning/spawnZoneUtils"); +const utils_1 = require("../Spawning/utils"); +const _1 = require("."); +const updateUtils_1 = require("./updateUtils"); +const advancedConfig_json_2 = require("../../config/advancedConfig.json"); +const setupSpawns = (container) => { + const databaseServer = container.resolve("DatabaseServer"); + const { locations } = databaseServer.getTables(); + const indexedMapSpawns = {}; + const mapsToExcludeFromPlayerCulling = new Set([ + "factory4_day", + "factory4_night", + "laboratory", + ]); + constants_1.originalMapList.forEach((map, mapIndex) => { + const configMap = constants_1.configLocations[mapIndex]; + const allZones = [ + ...new Set(locations[map].base.SpawnPointParams.filter(({ BotZoneName }) => !!BotZoneName).map(({ BotZoneName }) => BotZoneName)), + ]; + locations[map].base.OpenZones = allZones.join(","); + let bossSpawns = []; + let scavSpawns = []; + let sniperSpawns = []; + let pmcSpawns = []; + const bossZoneList = new Set([ + "Zone_Blockpost", + "Zone_RoofRocks", + "Zone_RoofContainers", + "Zone_RoofBeach", + "Zone_TreatmentRocks", + "Zone_TreatmentBeach", + "Zone_Hellicopter", + "Zone_Island", + "BotZoneGate1", + "BotZoneGate2", + "BotZoneBasement", + ]); + const isGZ = map.includes("sandbox"); + (0, utils_1.shuffle)(locations[map].base.SpawnPointParams).forEach((point) => { + switch (true) { + case point.Categories.includes("Boss") || + bossZoneList.has(point.BotZoneName): + bossSpawns.push(point); + break; + case point.BotZoneName?.toLowerCase().includes("snipe") || + (map !== "lighthouse" && point.DelayToCanSpawnSec > 40): + sniperSpawns.push(point); + break; + case !!point.Infiltration || point.Categories.includes("Coop"): + pmcSpawns.push(point); + break; + default: + scavSpawns.push(point); + break; + } + }); + // fix GZ + if (isGZ) { + sniperSpawns.map((point, index) => { + if (index < 2) { + point.BotZoneName = Math.random() + ? "ZoneSandSnipeCenter" + : "ZoneSandSnipeCenter2"; + } + else { + point.BotZoneName = ["ZoneSandSnipeCenter", "ZoneSandSnipeCenter2"][index]; + } + return point; + }); + } + if (advancedConfig_json_1.default.ActivateSpawnCullingOnServerStart) { + _1.ScavSpawns[map] = + (0, spawnZoneUtils_1.removeClosestSpawnsFromCustomBots)(_1.ScavSpawns, scavSpawns, map, constants_1.configLocations[mapIndex]) || []; + _1.PmcSpawns[map] = + (0, spawnZoneUtils_1.removeClosestSpawnsFromCustomBots)(_1.PmcSpawns, pmcSpawns, map, constants_1.configLocations[mapIndex]) || []; + _1.PlayerSpawns[map] = + (0, spawnZoneUtils_1.removeClosestSpawnsFromCustomBots)(_1.PlayerSpawns, pmcSpawns, map, constants_1.configLocations[mapIndex]) || []; + _1.SniperSpawns[map] = + (0, spawnZoneUtils_1.removeClosestSpawnsFromCustomBots)(_1.SniperSpawns, sniperSpawns, map, constants_1.configLocations[mapIndex]) || []; + } + const { spawnMinDistance: limit } = mapConfig_json_1.default[constants_1.configLocations[mapIndex]]; + let playerSpawns = (0, spawnZoneUtils_1.BuildCustomPlayerSpawnPoints)(map, locations[map].base.SpawnPointParams); + playerSpawns = (0, spawnZoneUtils_1.cleanClosest)(playerSpawns, mapIndex, mapConfig_json_1.default[configMap].mapCullingNearPointValuePlayer); + scavSpawns = (0, spawnZoneUtils_1.cleanClosest)((0, spawnZoneUtils_1.AddCustomBotSpawnPoints)(scavSpawns, map), mapIndex, mapConfig_json_1.default[configMap].mapCullingNearPointValueScav).map((point, botIndex) => { + if (point.ColliderParams?._props?.Radius < limit) { + point.ColliderParams._props.Radius = limit; + } + return !!point.Categories.length + ? { + ...point, + BotZoneName: isGZ ? "ZoneSandbox" : point?.BotZoneName, + Categories: ["Bot"], + Sides: ["Savage"], + CorePointId: 1, + } + : point; + }); + pmcSpawns = (0, spawnZoneUtils_1.cleanClosest)((0, spawnZoneUtils_1.AddCustomPmcSpawnPoints)(pmcSpawns, map), mapIndex, mapConfig_json_1.default[configMap].mapCullingNearPointValuePmc).map((point, pmcIndex) => { + if (point.ColliderParams?._props?.Radius < limit) { + point.ColliderParams._props.Radius = limit; + } + return !!point.Categories.length + ? { + ...point, + BotZoneName: isGZ + ? "ZoneSandbox" + : (0, spawnZoneUtils_1.getClosestZone)(scavSpawns, point.Position.x, point.Position.y, point.Position.z), + Categories: ["Coop", Math.random() ? "Group" : "Opposite"], + Sides: ["Pmc"], + CorePointId: 0, + } + : point; + }); + sniperSpawns = (0, spawnZoneUtils_1.AddCustomSniperSpawnPoints)(sniperSpawns, map); + indexedMapSpawns[mapIndex] = [ + ...sniperSpawns.map((point) => ({ ...point, type: "sniper" })), + ...bossSpawns.map((point) => ({ ...point, type: "boss" })), + ...scavSpawns.map((point) => ({ ...point, type: "scav" })), + ...pmcSpawns.map((point) => ({ ...point, type: "pmc" })), + ...playerSpawns.map((point) => ({ ...point, type: "player" })), + ]; + advancedConfig_json_2.showMapCullingDebug && + console.log("sniperSpawns", sniperSpawns.length, "bossSpawns", bossSpawns.length, "scavSpawns", scavSpawns.length, "pmcSpawns", pmcSpawns.length, "playerSpawns", playerSpawns.length, map); + locations[map].base.SpawnPointParams = indexedMapSpawns[mapIndex]; + const listToAddToOpenZones = [ + ...new Set(locations[map].base.SpawnPointParams.map(({ BotZoneName }) => BotZoneName).filter((zone) => !!zone)), + ]; + locations[map].base.OpenZones = listToAddToOpenZones.join(","); + }); + // PlayerSpawns, PmcSpawns, ScavSpawns, SniperSpawns + if (advancedConfig_json_1.default.ActivateSpawnCullingOnServerStart) { + (0, updateUtils_1.updateAllBotSpawns)(_1.PlayerSpawns, "playerSpawns"); + (0, updateUtils_1.updateAllBotSpawns)(_1.PmcSpawns, "pmcSpawns"); + (0, updateUtils_1.updateAllBotSpawns)(_1.ScavSpawns, "scavSpawns"); + (0, updateUtils_1.updateAllBotSpawns)(_1.SniperSpawns, "sniperSpawns"); + } + GlobalValues_1.globalValues.indexedMapSpawns = indexedMapSpawns; +}; +exports.setupSpawns = setupSpawns; +//# sourceMappingURL=setupSpawn.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js.map b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js.map new file mode 100644 index 0000000..14fbf0d --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "setupSpawn.js", + "sourceRoot": "", + "sources": [ + "setupSpawn.ts" + ], + "names": [], + "mappings": ";;;;;;AACA,qDAAyE;AAEzE,iFAAoD;AACpD,2FAA8D;AAE9D,kDAA+C;AAC/C,+DAQoC;AACpC,6CAA4C;AAC5C,wBAAsE;AACtE,+CAAmD;AACnD,0EAAsE;AAE/D,MAAM,WAAW,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC5D,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAiB,gBAAgB,CAAC,CAAC;IAC3E,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;IAEjD,MAAM,gBAAgB,GAAuC,EAAE,CAAC;IAEhE,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;QAC7C,cAAc;QACd,gBAAgB;QAChB,YAAY;KACb,CAAC,CAAC;IAEH,2BAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QACxC,MAAM,SAAS,GAAG,2BAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG;YACf,GAAG,IAAI,GAAG,CACR,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACzC,CAAC,EAAE,WAAW,EAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CACrD,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAoB,EAAE,EAAE,CAAC,WAAW,CAAC,CAC1D;SACF,CAAC;QAEF,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,UAAU,GAAuB,EAAE,CAAC;QACxC,IAAI,UAAU,GAAuB,EAAE,CAAC;QACxC,IAAI,YAAY,GAAuB,EAAE,CAAC;QAE1C,IAAI,SAAS,GAAuB,EAAE,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;YAC3B,gBAAgB;YAChB,gBAAgB;YAChB,qBAAqB;YACrB,gBAAgB;YAChB,qBAAqB;YACrB,qBAAqB;YACrB,kBAAkB;YAClB,aAAa;YACb,cAAc;YACd,cAAc;YACd,iBAAiB;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAErC,IAAA,eAAO,EAAqB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CACvE,CAAC,KAAK,EAAE,EAAE;YACR,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACpC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;oBACnC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM;gBAER,KAAK,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACrD,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC;oBACvD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM;gBAER,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC5D,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACtB,MAAM;gBACR;oBACE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM;YACV,CAAC;QACH,CAAC,CACF,CAAC;QAEF,SAAS;QACT,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAChC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;wBAC/B,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,sBAAsB,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,WAAW,GAAG,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CACjE,KAAK,CACN,CAAC;gBACJ,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,6BAAc,CAAC,iCAAiC,EAAE,CAAC;YACrD,aAAU,CAAC,GAAG,CAAC;gBACb,IAAA,kDAAiC,EAC/B,aAAU,EACV,UAAU,EACV,GAAG,EACH,2BAAe,CAAC,QAAQ,CAAC,CAC1B,IAAI,EAAE,CAAC;YACV,YAAS,CAAC,GAAG,CAAC;gBACZ,IAAA,kDAAiC,EAC/B,YAAS,EACT,SAAS,EACT,GAAG,EACH,2BAAe,CAAC,QAAQ,CAAC,CAC1B,IAAI,EAAE,CAAC;YACV,eAAY,CAAC,GAAG,CAAC;gBACf,IAAA,kDAAiC,EAC/B,eAAY,EACZ,SAAS,EACT,GAAG,EACH,2BAAe,CAAC,QAAQ,CAAC,CAC1B,IAAI,EAAE,CAAC;YACV,eAAY,CAAC,GAAG,CAAC;gBACf,IAAA,kDAAiC,EAC/B,eAAY,EACZ,YAAY,EACZ,GAAG,EACH,2BAAe,CAAC,QAAQ,CAAC,CAC1B,IAAI,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,wBAAS,CAAC,2BAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEzE,IAAI,YAAY,GAAG,IAAA,6CAA4B,EAC7C,GAAG,EACH,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CACrC,CAAC;QAEF,YAAY,GAAG,IAAA,6BAAY,EACzB,YAAY,EACZ,QAAQ,EACR,wBAAS,CAAC,SAAS,CAAC,CAAC,8BAA8B,CACpD,CAAC;QAEF,UAAU,GAAG,IAAA,6BAAY,EACvB,IAAA,wCAAuB,EAAC,UAAU,EAAE,GAAG,CAAC,EACxC,QAAQ,EACR,wBAAS,CAAC,SAAS,CAAC,CAAC,4BAA4B,CAClD,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxB,IAAI,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC;gBACjD,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YAC7C,CAAC;YAED,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;gBAC9B,CAAC,CAAC;oBACA,GAAG,KAAK;oBACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW;oBACtD,UAAU,EAAE,CAAC,KAAK,CAAC;oBACnB,KAAK,EAAE,CAAC,QAAQ,CAAC;oBACjB,WAAW,EAAE,CAAC;iBACf;gBACD,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,SAAS,GAAG,IAAA,6BAAY,EACtB,IAAA,wCAAuB,EAAC,SAAS,EAAE,GAAG,CAAC,EACvC,QAAQ,EACR,wBAAS,CAAC,SAAS,CAAC,CAAC,2BAA2B,CACjD,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxB,IAAI,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC;gBACjD,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YAC7C,CAAC;YAED,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;gBAC9B,CAAC,CAAC;oBACA,GAAG,KAAK;oBACR,WAAW,EAAE,IAAI;wBACf,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,IAAA,+BAAc,EACd,UAAU,EACV,KAAK,CAAC,QAAQ,CAAC,CAAC,EAChB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAChB,KAAK,CAAC,QAAQ,CAAC,CAAC,CACjB;oBACH,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;oBAC1D,KAAK,EAAE,CAAC,KAAK,CAAC;oBACd,WAAW,EAAE,CAAC;iBACf;gBACD,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,YAAY,GAAG,IAAA,2CAA0B,EAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAE7D,gBAAgB,CAAC,QAAQ,CAAC,GAAG;YAC3B,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC/D,CAAC;QACF,yCAAmB;YACjB,OAAO,CAAC,GAAG,CACT,cAAc,EACd,YAAY,CAAC,MAAM,EACnB,YAAY,EACZ,UAAU,CAAC,MAAM,EACjB,YAAY,EACZ,UAAU,CAAC,MAAM,EACjB,WAAW,EACX,SAAS,CAAC,MAAM,EAChB,cAAc,EACd,YAAY,CAAC,MAAM,EACnB,GAAG,CACJ,CAAC;QAEJ,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAElE,MAAM,oBAAoB,GAAG;YAC3B,GAAG,IAAI,GAAG,CACR,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACtC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CACjC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3B;SACF,CAAC;QAEF,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,IAAI,6BAAc,CAAC,iCAAiC,EAAE,CAAC;QACrD,IAAA,gCAAkB,EAAC,eAAY,EAAE,cAAc,CAAC,CAAC;QACjD,IAAA,gCAAkB,EAAC,YAAS,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAA,gCAAkB,EAAC,aAAU,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAA,gCAAkB,EAAC,eAAY,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC;IACD,2BAAY,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACnD,CAAC,CAAC;AA7NW,QAAA,WAAW,eA6NtB" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js new file mode 100644 index 0000000..341dbbf --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js @@ -0,0 +1,79 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateAllBotSpawns = exports.deleteBotSpawn = exports.updateBotSpawn = exports.updateJsonFile = void 0; +const spawnZoneUtils_1 = require("../Spawning/spawnZoneUtils"); +const fs = require("fs"); +const path = require("path"); +const currentDirectory = process.cwd(); +// Function to update JSON file +const updateJsonFile = (filePath, callback, successMessage) => { + // Read the JSON file + fs.readFile(filePath, "utf8", (err, data) => { + if (err) { + console.error("Error reading the file:", err); + return; + } + // Parse the JSON data + let jsonData; + try { + jsonData = JSON.parse(data); + } + catch (parseError) { + console.error("Error parsing JSON data:", parseError); + return; + } + callback(jsonData); + // Update the JSON object + // Write the updated JSON object back to the file + fs.writeFile(filePath, JSON.stringify(jsonData, null, 2), "utf8", (writeError) => { + if (writeError) { + console.error("Error writing the file:", writeError); + return; + } + console.log(successMessage); + }); + }); +}; +exports.updateJsonFile = updateJsonFile; +const updateBotSpawn = (map, value, type) => { + map = map.toLowerCase(); + (0, exports.updateJsonFile)(`${currentDirectory}/user/mods/DewardianDev-MOAR/config/Spawns/${type}Spawns.json`, (jsonData) => { + value.y = value.y + 0.5; + if (jsonData[map]) { + jsonData[map].push(value); + } + else { + jsonData[map] = [value]; + } + }, "Successfully added one bot spawn to " + map); +}; +exports.updateBotSpawn = updateBotSpawn; +const deleteBotSpawn = (map, value, type) => { + map = map.toLowerCase(); + (0, exports.updateJsonFile)(`${currentDirectory}/user/mods/DewardianDev-MOAR/config/Spawns/${type}Spawns.json`, (jsonData) => { + if (jsonData[map]) { + const { x: X, y: Y, z: Z } = value; + let nearest = undefined; + let nearDist = Infinity; + jsonData[map].forEach(({ x, y, z }, index) => { + const dist = (0, spawnZoneUtils_1.getDistance)(x, y, z, X, Y, Z); + if (dist < nearDist) { + nearest = index; + nearDist = dist; + } + }); + if (nearest) { + jsonData[map].splice(nearest, 1); + } + else { + console.log("No nearest spawn on " + map); + } + } + }, "Successfully removed one bot spawn from "); +}; +exports.deleteBotSpawn = deleteBotSpawn; +const updateAllBotSpawns = (values, targetType) => (0, exports.updateJsonFile)(`${currentDirectory}/user/mods/DewardianDev-MOAR/config/Spawns/${targetType}.json`, (jsonData) => { + Object.keys(jsonData).forEach((map) => (jsonData[map] = values[map])); +}, "Successfully updated all Spawns"); +exports.updateAllBotSpawns = updateAllBotSpawns; +//# sourceMappingURL=updateUtils.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js.map b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js.map new file mode 100644 index 0000000..121a546 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "updateUtils.js", + "sourceRoot": "", + "sources": [ + "updateUtils.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js b/user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js new file mode 100644 index 0000000..e818495 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js @@ -0,0 +1,119 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.buildWaves = void 0; +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const GlobalValues_1 = require("../GlobalValues"); +const utils_1 = require("../utils"); +const constants_1 = require("./constants"); +const buildBossWaves_1 = require("./buildBossWaves"); +const buildZombieWaves_1 = __importDefault(require("./buildZombieWaves")); +const buildScavMarksmanWaves_1 = __importDefault(require("./buildScavMarksmanWaves")); +const buildPmcs_1 = __importDefault(require("./buildPmcs")); +const utils_2 = require("./utils"); +const updateSpawnLocations_1 = __importDefault(require("./updateSpawnLocations")); +const marksmanChanges_1 = __importDefault(require("./marksmanChanges")); +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const buildWaves = (container) => { + const configServer = container.resolve("ConfigServer"); + const Logger = container.resolve("WinstonLogger"); + const pmcConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.PMC); + const botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const locationConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.LOCATION); + locationConfig.rogueLighthouseSpawnTimeSettings.waitTimeSeconds = 60; + locationConfig.enableBotTypeLimits = false; + locationConfig.fitLootIntoContainerAttempts = 1; // Move to ALP + locationConfig.addCustomBotWavesToMaps = false; + locationConfig.customWaves = { boss: {}, normal: {} }; + const databaseServer = container.resolve("DatabaseServer"); + const { locations, bots } = databaseServer.getTables(); + let config = (0, utils_1.cloneDeep)(GlobalValues_1.globalValues.baseConfig); + const preset = (0, utils_1.getRandomPresetOrCurrentlySelectedPreset)(); + Object.keys(GlobalValues_1.globalValues.overrideConfig).forEach((key) => { + if (config[key] !== GlobalValues_1.globalValues.overrideConfig[key]) { + config.debug && + console.log(`[MOAR] overrideConfig ${key} changed from ${config[key]} to ${GlobalValues_1.globalValues.overrideConfig[key]}`); + config[key] = GlobalValues_1.globalValues.overrideConfig[key]; + } + }); + // Set from preset if preset above is not empty + Object.keys(preset).forEach((key) => { + if (config[key] !== preset[key]) { + config.debug && + console.log(`[MOAR] preset ${GlobalValues_1.globalValues.currentPreset}: ${key} changed from ${config[key]} to ${preset[key]}`); + config[key] = preset[key]; + } + }); + // config.debug && + console.log(GlobalValues_1.globalValues.forcedPreset === "custom" + ? "custom" + : GlobalValues_1.globalValues.forcedPreset + ? GlobalValues_1.globalValues.forcedPreset + : GlobalValues_1.globalValues.currentPreset); + const { bigmap: customs, factory4_day: factoryDay, factory4_night: factoryNight, interchange, laboratory, lighthouse, rezervbase, shoreline, tarkovstreets, woods, sandbox: gzLow, sandbox_high: gzHigh, } = locations; + let locationList = [ + customs, + factoryDay, + factoryNight, + interchange, + laboratory, + lighthouse, + rezervbase, + shoreline, + tarkovstreets, + woods, + gzLow, + gzHigh, + ]; + // This resets all locations to original state + if (!GlobalValues_1.globalValues.locationsBase) { + GlobalValues_1.globalValues.locationsBase = locationList.map(({ base }) => (0, utils_1.cloneDeep)(base)); + } + else { + locationList = locationList.map((item, key) => ({ + ...item, + base: (0, utils_1.cloneDeep)(GlobalValues_1.globalValues.locationsBase[key]), + })); + } + pmcConfig.removeExistingPmcWaves = true; + Object.keys(pmcConfig.customPmcWaves).forEach(key => { + pmcConfig.customPmcWaves[key] = []; + }); + if (config.startingPmcs && (!config.randomSpawns || config.spawnSmoothing)) { + Logger.warning(`[MOAR] Starting pmcs turned on, turning off cascade system and smoothing.\n`); + config.spawnSmoothing = false; + config.randomSpawns = true; + } + if (advancedConfig_json_1.default.MarksmanDifficultyChanges) { + (0, marksmanChanges_1.default)(bots); + } + (0, updateSpawnLocations_1.default)(locationList, config); + (0, utils_2.setEscapeTimeOverrides)(locationList, mapConfig_json_1.default, Logger, config); + // BOSS RELATED STUFF! + (0, buildBossWaves_1.buildBossWaves)(config, locationList); + //Zombies + if (config.zombiesEnabled) { + (0, buildZombieWaves_1.default)(config, locationList, bots); + } + (0, buildPmcs_1.default)(config, locationList); + // Make main waves + (0, buildScavMarksmanWaves_1.default)(config, locationList, botConfig); + // enableSmoothing + if (config.spawnSmoothing) { + (0, utils_2.enforceSmoothing)(locationList); + } + // saveToFile(locations.bigmap.base.SpawnPointParams, "spawns.json"); + constants_1.originalMapList.forEach((name, index) => { + if (!locations[name]) { + console.log("[MOAR] OH CRAP we have a problem!", name); + } + else { + locations[name] = locationList[index]; + } + }); +}; +exports.buildWaves = buildWaves; +//# sourceMappingURL=Spawning.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js.map new file mode 100644 index 0000000..cc9df7a --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "Spawning.js", + "sourceRoot": "", + "sources": [ + "Spawning.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js b/user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js new file mode 100644 index 0000000..0e86bff --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js @@ -0,0 +1,230 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.buildBossWaves = buildBossWaves; +const bossConfig_json_1 = __importDefault(require("../../config/bossConfig.json")); +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const constants_1 = require("./constants"); +const utils_1 = require("./utils"); +const utils_2 = require("../utils"); +function buildBossWaves(config, locationList) { + let { randomRaiderGroup, randomRaiderGroupChance, randomRogueGroup, randomRogueGroupChance, mainBossChanceBuff, bossInvasion, bossInvasionSpawnChance, disableBosses, bossOpenZones, gradualBossInvasion, } = config; + const bossList = constants_1.mainBossNameList.filter((bossName) => !["bossKnight"].includes(bossName)); + const allBosses = {}; + for (const key in locationList) { + locationList[key].base.BossLocationSpawn.forEach((boss) => { + if (!allBosses[boss.BossName]) { + allBosses[boss.BossName] = boss; + } + }); + } + // CreateBossList + const bosses = {}; + for (let indx = 0; indx < locationList.length; indx++) { + // Disable Bosses + if (disableBosses && !!locationList[indx].base?.BossLocationSpawn) { + locationList[indx].base.BossLocationSpawn = []; + } + else { + //Remove all other spawns from pool now that we have the spawns zone list + locationList[indx].base.BossLocationSpawn = locationList[indx].base.BossLocationSpawn.filter((boss) => !constants_1.bossesToRemoveFromPool.has(boss.BossName)); + // Performance changes + if (advancedConfig_json_1.default.EnableBossPerformanceImprovements) { + locationList[indx].base.BossLocationSpawn.forEach((Boss, bIndex) => { + if (Boss.BossChance < 1) + return; + if (!!constants_1.bossPerformanceHash[Boss.BossName || ""]) { + const varsToUpdate = constants_1.bossPerformanceHash[Boss.BossName]; + // make it so bossPartisan has a random spawn time + if (Boss.BossName === "bossPartisan") { + const max = locationList[indx].base.EscapeTimeLimit; + varsToUpdate.Time = Math.floor(Math.random() * 50 * max); + // console.log(varsToUpdate, max * 60) + } + locationList[indx].base.BossLocationSpawn[bIndex] = { + ...Boss, + ...varsToUpdate, + }; + } + }); + } + const location = locationList[indx]; + const defaultBossSettings = mapConfig_json_1.default?.[constants_1.configLocations[indx]]?.defaultBossSettings; + // Sets bosses spawn chance from settings + if (location?.base?.BossLocationSpawn && + defaultBossSettings && + Object.keys(defaultBossSettings)?.length) { + const filteredBossList = Object.keys(defaultBossSettings).filter((name) => defaultBossSettings[name]?.BossChance !== undefined); + if (filteredBossList?.length) { + filteredBossList.forEach((bossName) => { + location.base.BossLocationSpawn = + location.base.BossLocationSpawn.map((boss) => ({ + ...boss, + ...(boss.BossName === bossName + ? { BossChance: defaultBossSettings[bossName].BossChance } + : {}), + })); + }); + } + } + if (randomRaiderGroup) { + const raiderWave = (0, utils_1.buildBossBasedWave)(randomRaiderGroupChance, "1,2,2,2,3", "pmcBot", "pmcBot", "", locationList[indx].base.EscapeTimeLimit); + location.base.BossLocationSpawn.push(raiderWave); + } + if (randomRogueGroup) { + const rogueWave = (0, utils_1.buildBossBasedWave)(randomRogueGroupChance, "1,2,2,2,3", "exUsec", "exUsec", "", locationList[indx].base.EscapeTimeLimit); + location.base.BossLocationSpawn.push(rogueWave); + } + //Add each boss from each map to bosses object + const filteredBosses = location.base.BossLocationSpawn?.filter(({ BossName }) => constants_1.mainBossNameList.includes(BossName)); + if (filteredBosses.length) { + for (let index = 0; index < filteredBosses.length; index++) { + const boss = filteredBosses[index]; + if (!bosses[boss.BossName] || + (bosses[boss.BossName] && + bosses[boss.BossName].BossChance < boss.BossChance)) { + bosses[boss.BossName] = { ...boss }; + } + } + } + } + } + if (!disableBosses) { + // Make boss Invasion + if (bossInvasion) { + if (bossInvasionSpawnChance) { + bossList.forEach((bossName) => { + if (bosses[bossName]) + bosses[bossName].BossChance = bossInvasionSpawnChance; + }); + } + for (let key = 0; key < locationList.length; key++) { + //Gather bosses to avoid duplicating. + const duplicateBosses = [ + ...locationList[key].base.BossLocationSpawn.filter(({ BossName, BossZone }) => bossList.includes(BossName)).map(({ BossName }) => BossName), + "bossKnight", // So knight doesn't invade + ]; + //Build bosses to add + const bossesToAdd = (0, utils_1.shuffle)(Object.values(bosses)) + .filter(({ BossName }) => !duplicateBosses.includes(BossName)) + .map((boss, j) => ({ + ...boss, + BossZone: "", + BossEscortAmount: boss.BossEscortAmount === "0" ? boss.BossEscortAmount : "1", + ...(gradualBossInvasion ? { Time: j * 20 + 1 } : {}), + })); + // UpdateBosses + locationList[key].base.BossLocationSpawn = [ + ...locationList[key].base.BossLocationSpawn, + ...bossesToAdd, + ]; + } + } + let hasChangedBossSpawns = false; + // console.log(Object.keys(allBosses)); + constants_1.configLocations.forEach((mapName, index) => { + const bossLocationSpawn = locationList[index].base.BossLocationSpawn; + const mapBossConfig = (0, utils_2.cloneDeep)(bossConfig_json_1.default[mapName] || {}); + // if (Object.keys(mapBossConfig).length === 0) console.log(name, "empty"); + const adjusted = new Set([]); + bossLocationSpawn.forEach(({ BossName, BossChance }, bossIndex) => { + if (typeof mapBossConfig[BossName] === "number") { + if (BossChance !== mapBossConfig[BossName]) { + if (!hasChangedBossSpawns) { + console.log(`\n[MOAR]: --- Adjusting default boss spawn rates from bossConfig.json --- `); + hasChangedBossSpawns = true; + } + console.log(`[MOAR]: ${mapName} ${BossName}: ${locationList[index].base.BossLocationSpawn[bossIndex].BossChance} => ${mapBossConfig[BossName]}`); + locationList[index].base.BossLocationSpawn[bossIndex].BossChance = + mapBossConfig[BossName]; + } + adjusted.add(BossName); + } + }); + const bossesToAdd = Object.keys(mapBossConfig) + .filter((adjustName) => !adjusted.has(adjustName) && !!allBosses[adjustName]) + .map((bossName) => { + `[MOAR]: Adding non-default boss ${bossName} to ${constants_1.originalMapList[index]}`; + const newBoss = (0, utils_2.cloneDeep)(allBosses[bossName] || {}); + newBoss.BossChance = mapBossConfig[bossName]; + // console.log( + // "Adding boss", + // bossName, + // "to ", + // originalMapList[index], + // "spawn chance =>", + // mapBossConfig[bossName] + // ); + return newBoss; + }); + // console.log(bossesToAdd); + if (bossOpenZones || mainBossChanceBuff) { + locationList[index].base?.BossLocationSpawn?.forEach((boss, key) => { + if (bossList.includes(boss.BossName)) { + if (bossOpenZones) { + locationList[index].base.BossLocationSpawn[key] = { + ...locationList[index].base.BossLocationSpawn[key], + BossZone: "", + }; + } + if (!!boss.BossChance && mainBossChanceBuff > 0) { + locationList[index].base.BossLocationSpawn[key] = { + ...locationList[index].base.BossLocationSpawn[key], + BossChance: boss.BossChance + mainBossChanceBuff > 100 + ? 100 + : Math.round(boss.BossChance + mainBossChanceBuff), + }; + } + } + }); + } + locationList[index].base.BossLocationSpawn = [ + ...locationList[index].base.BossLocationSpawn, + ...bossesToAdd, + ]; + bossesToAdd.length && + console.log(`[MOAR] Adding the following bosses to map ${constants_1.configLocations[index]}: ${bossesToAdd.map(({ BossName }) => BossName)}`); + // console.log(locationList[index].base.BossLocationSpawn.length); + const bossesToSkip = new Set(["sectantPriest", "pmcBot"]); + // Apply the percentages on all bosses, cull those that won't spawn, make all bosses 100 chance that remain. + locationList[index].base.BossLocationSpawn = locationList[index].base.BossLocationSpawn.map(({ BossChance, BossName, TriggerId }, bossIndex) => { + if (BossChance < 1) { + return locationList[index].base.BossLocationSpawn[bossIndex]; + } + if (!TriggerId && + !bossesToSkip.has(BossName) && + BossChance < 100) { + if (BossChance / 100 < Math.random()) { + locationList[index].base.BossLocationSpawn[bossIndex].BossChance = 0; + locationList[index].base.BossLocationSpawn[bossIndex].ForceSpawn = + false; + locationList[index].base.BossLocationSpawn[bossIndex].IgnoreMaxBots = false; + } + else { + locationList[index].base.BossLocationSpawn[bossIndex].BossChance = 100; + } + } + return locationList[index].base.BossLocationSpawn[bossIndex]; + }).filter(({ BossChance, BossName, ...rest }) => { + if (BossChance < 1) { + return false; + } + return true; + }); + // if (mapName === "lighthouse") { + // console.log( + // locationList[index].base.BossLocationSpawn.map( + // ({ BossName, BossChance }) => ({ BossName, BossChance }) + // ) + // ); + // } + }); + if (hasChangedBossSpawns) { + console.log(`[MOAR]: --- Adjusting default boss spawn rates complete --- \n`); + } + } +} +//# sourceMappingURL=buildBossWaves.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js.map new file mode 100644 index 0000000..5285401 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "buildBossWaves.js", + "sourceRoot": "", + "sources": [ + "buildBossWaves.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js b/user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js new file mode 100644 index 0000000..047aab0 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js @@ -0,0 +1,73 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = buildPmcs; +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const constants_1 = require("./constants"); +const utils_1 = require("./utils"); +const spawnZoneUtils_1 = __importDefault(require("./spawnZoneUtils")); +const GlobalValues_1 = require("../GlobalValues"); +function buildPmcs(config, locationList) { + for (let index = 0; index < locationList.length; index++) { + const mapSettingsList = Object.keys(mapConfig_json_1.default); + const map = mapSettingsList[index]; + // Set pmcs hostile to everything + locationList[index].base.BotLocationModifier.AdditionalHostilitySettings = + constants_1.defaultHostility; + const { pmcHotZones = [], pmcWaveCount, initialSpawnDelay, } = mapConfig_json_1.default?.[map] || {}; + const { Position: { x, y, z }, } = GlobalValues_1.globalValues.playerSpawn; + let pmcZones = (0, spawnZoneUtils_1.default)(locationList[index].base.SpawnPointParams.filter((point) => point["type"] === "pmc"), x, y, z, 0.05).map(({ BotZoneName }) => BotZoneName); + (0, utils_1.looselyShuffle)(pmcZones, 3); + // console.log(pmcZones); + if (map === "laboratory") { + pmcZones = new Array(10).fill(pmcZones).flat(1); + } + if (config.randomSpawns) + pmcZones = (0, utils_1.shuffle)(pmcZones); + const escapeTimeLimitRatio = Math.round(locationList[index].base.EscapeTimeLimit / constants_1.defaultEscapeTimes[map]); + let totalWaves = Math.round(pmcWaveCount * config.pmcWaveQuantity * escapeTimeLimitRatio); + if (!!pmcHotZones.length && totalWaves > 0) { + totalWaves = totalWaves + pmcHotZones.length; + } + while (totalWaves - pmcZones.length > 0) { + console.log(`${map} ran out of appropriate zones for pmcs, duplicating zones`); + // const addEmpty = new Array(numberOfZoneless).fill(""); + pmcZones = [...pmcZones, ...pmcZones]; + if (pmcZones.length === 0) { + pmcZones = [""]; + } + } + if (config.debug) { + console.log(`${map} PMC count ${totalWaves} \n`); + escapeTimeLimitRatio !== 1 && + console.log(`${map} PMC wave count changed from ${pmcWaveCount} to ${totalWaves} due to escapeTimeLimit adjustment`); + } + const timeLimit = locationList[index].base.EscapeTimeLimit * 60; + const half = Math.round(totalWaves % 2 === 0 ? totalWaves / 2 : (totalWaves + 1) / 2); + const usecSpawns = pmcZones.filter((_, i) => i % 2 === 0); + const bearSpawns = pmcZones.filter((_, i) => i % 2 !== 0); + const pmcUSEC = (0, utils_1.buildBotWaves)(half, config.startingPmcs ? Math.round(0.2 * timeLimit) : timeLimit, config.pmcMaxGroupSize - 1, config.pmcGroupChance, usecSpawns, config.pmcDifficulty, "pmcUSEC", false, config.pmcWaveDistribution, initialSpawnDelay + Math.round(10 * Math.random())); + const pmcBEAR = (0, utils_1.buildBotWaves)(half, config.startingPmcs ? Math.round(0.1 * timeLimit) : timeLimit, config.pmcMaxGroupSize - 1, config.pmcGroupChance, bearSpawns, config.pmcDifficulty, "pmcBEAR", false, config.pmcWaveDistribution, initialSpawnDelay + Math.round(10 * Math.random())); + const pmcs = [...pmcUSEC, ...pmcBEAR]; + // console.log(pmcs.map(({ Time }) => Time)); + if (pmcs.length) { + // Add hotzones if exist + pmcHotZones.forEach((hotzone) => { + const index = Math.floor(pmcs.length * Math.random()); + pmcs[index].BossZone = hotzone; + // console.log(pmcs[index]); + }); + } + // console.log( + // map, + // pmcs.map(({ BossZone }) => BossZone) + // ); + locationList[index].base.BossLocationSpawn = [ + ...pmcs, + ...locationList[index].base.BossLocationSpawn, + ]; + } +} +//# sourceMappingURL=buildPmcs.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js.map new file mode 100644 index 0000000..b357b00 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "buildPmcs.js", + "sourceRoot": "", + "sources": [ + "buildPmcs.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js b/user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js new file mode 100644 index 0000000..8e15c6e --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js @@ -0,0 +1,135 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = buildScavMarksmanWaves; +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const constants_1 = require("./constants"); +const utils_1 = require("./utils"); +const ILocationBase_1 = require("C:/snapshot/project/obj/models/eft/common/ILocationBase"); +const spawnZoneUtils_1 = __importDefault(require("./spawnZoneUtils")); +const GlobalValues_1 = require("../GlobalValues"); +function buildScavMarksmanWaves(config, locationList, botConfig) { + let { maxBotCap, scavWaveQuantity, scavWaveDistribution, sniperMaxGroupSize, maxBotPerZone, scavMaxGroupSize, scavDifficulty, sniperGroupChance, scavGroupChance, } = config; + for (let index = 0; index < locationList.length; index++) { + const mapSettingsList = Object.keys(mapConfig_json_1.default); + const map = mapSettingsList[index]; + locationList[index].base.waves = []; + locationList[index].base = { + ...locationList[index].base, + ...{ + NewSpawn: false, + OcculsionCullingEnabled: true, + OfflineNewSpawn: false, + OfflineOldSpawn: true, + OldSpawn: true, + BotSpawnCountStep: 0, + }, + }; + locationList[index].base.NonWaveGroupScenario.Enabled = false; + locationList[index].base["BotStartPlayer"] = 0; + if (locationList[index].base.BotStop < + locationList[index].base.EscapeTimeLimit * 60) { + locationList[index].base.BotStop = + locationList[index].base.EscapeTimeLimit * 60; + } + const { maxBotPerZoneOverride, maxBotCapOverride, EscapeTimeLimit, scavHotZones = [], sniperQuantity = 1, scavWaveCount, initialSpawnDelay, } = mapConfig_json_1.default?.[map] || {}; + // Set per map EscapeTimeLimit + if (EscapeTimeLimit) { + locationList[index].base.EscapeTimeLimit = EscapeTimeLimit; + locationList[index].base.exit_access_time = EscapeTimeLimit + 1; + } + // Set default or per map maxBotCap + if (maxBotCapOverride || maxBotCap) { + const capToSet = maxBotCapOverride || maxBotCap; + // console.log(map, capToSet, maxBotCapOverride, maxBotCap); + locationList[index].base.BotMax = capToSet; + locationList[index].base.BotMaxPvE = capToSet; + locationList[index].base.BotMaxPlayer = capToSet; + botConfig.maxBotCap[constants_1.originalMapList[index]] = capToSet; + } + // Adjust botZone quantity + if (maxBotPerZoneOverride || maxBotPerZone) { + const BotPerZone = maxBotPerZoneOverride || maxBotPerZone; + // console.log(map, BotPerZone, maxBotPerZoneOverride, maxBotPerZone); + locationList[index].base.MaxBotPerZone = BotPerZone; + } + // const sniperLocations = new Set( + // [...locationList[index].base.SpawnPointParams] + // .filter( + // ({ Categories, DelayToCanSpawnSec, BotZoneName, Sides }) => + // !Categories.includes("Boss") && + // Sides[0] === "Savage" && + // (BotZoneName?.toLowerCase().includes("snipe") || + // DelayToCanSpawnSec > 40) + // ) + // .map(({ BotZoneName }) => BotZoneName || "") + // ); + const { Position: { x, y, z }, } = GlobalValues_1.globalValues.playerSpawn; + const sniperSpawns = (0, spawnZoneUtils_1.default)(locationList[index].base.SpawnPointParams.filter((point) => point["type"] === "sniper"), x, y, z); + let sniperLocations = sniperSpawns.map(({ BotZoneName }) => BotZoneName); + // console.log(sniperLocations); + const sniperDelay = 25; + // Make sure that the sniper spawns permit snipers to actually spawn early. + const sniperIds = new Set(sniperSpawns.map(({ Id }) => Id)); + locationList[index].base.SpawnPointParams.forEach((point, snipeIndex) => { + if (sniperIds.has(point.Id)) { + locationList[index].base.SpawnPointParams[snipeIndex].DelayToCanSpawnSec = 20; + } + }); + if (sniperLocations.length) { + locationList[index].base.MinMaxBots = [ + { + WildSpawnType: "marksman", + max: sniperLocations.length * 5, + min: sniperLocations.length, + }, + ]; + } + let scavZones = (0, spawnZoneUtils_1.default)(locationList[index].base.SpawnPointParams.filter((point) => point["type"] === "scav"), x, y, z, 0.05).map(({ BotZoneName }) => BotZoneName); + (0, utils_1.looselyShuffle)(scavZones, 3); + const escapeTimeLimitRatio = Math.round(locationList[index].base.EscapeTimeLimit / constants_1.defaultEscapeTimes[map]); + // Scavs + let scavTotalWaveCount = Math.round(scavWaveCount * scavWaveQuantity * escapeTimeLimitRatio); + if (scavHotZones.length && scavTotalWaveCount > 0) { + scavTotalWaveCount = scavTotalWaveCount + scavHotZones.length; + } + while (scavTotalWaveCount - scavZones.length > 0) { + console.log(`${map} ran out of appropriate zones for scavs, duplicating zones`); + // const addEmpty = new Array(numberOfZoneless).fill(""); + scavZones = [...scavZones, ...scavZones]; + if (scavZones.length === 0) { + scavZones = [""]; + } + } + config.debug && + escapeTimeLimitRatio !== 1 && + console.log(`${map} Scav wave count changed from ${scavWaveCount} to ${scavTotalWaveCount} due to escapeTimeLimit adjustment`); + const timeLimit = locationList[index].base.EscapeTimeLimit * 60; + // if (config.randomSpawns) + // sniperLocations = shuffle(sniperLocations); + // console.log(map); + const snipers = (0, utils_1.buildBotWaves)(Math.min(sniperQuantity, sniperLocations.length), timeLimit, ///30, + sniperMaxGroupSize, sniperGroupChance, sniperLocations, 0.8, ILocationBase_1.WildSpawnType.MARKSMAN, true, 0.3, sniperDelay); + if (config.randomSpawns) + scavZones = (0, utils_1.shuffle)(scavZones); + const scavWaves = (0, utils_1.buildBotWaves)(scavTotalWaveCount, timeLimit, scavMaxGroupSize, scavGroupChance, scavZones, scavDifficulty, ILocationBase_1.WildSpawnType.ASSAULT, false, scavWaveDistribution, initialSpawnDelay + Math.round(10 * Math.random())); + // Add hotzones if exist + if (scavWaves.length) { + scavHotZones.forEach((hotzone) => { + const index = Math.floor(scavWaves.length * Math.random()); + scavWaves[index].BossZone = hotzone; + // console.log(scavWaves[index].BossZone); + }); + } + // if (map === "shoreline") console.log(scavWaves.map(({ Time }) => Time)); + // console.log(snipers, scavWaves) + locationList[index].base.BossLocationSpawn = [ + ...snipers, + ...scavWaves, + ...locationList[index].base.BossLocationSpawn, + ]; + } +} +//# sourceMappingURL=buildScavMarksmanWaves.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js.map new file mode 100644 index 0000000..c710b61 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "buildScavMarksmanWaves.js", + "sourceRoot": "", + "sources": [ + "buildScavMarksmanWaves.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js b/user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js new file mode 100644 index 0000000..dc1260e --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js @@ -0,0 +1,45 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = buildZombieWaves; +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const constants_1 = require("./constants"); +const utils_1 = require("./utils"); +function buildZombieWaves(config, locationList, bots) { + let { debug, zombieWaveDistribution, zombieWaveQuantity, zombieHealth } = config; + const zombieBodyParts = (0, utils_1.getHealthBodyPartsByPercentage)(zombieHealth); + utils_1.zombieTypes.forEach((type) => { + bots.types?.[type]?.health?.BodyParts?.forEach((_, index) => { + bots.types[type].health.BodyParts[index] = zombieBodyParts; + }); + }); + for (let indx = 0; indx < locationList.length; indx++) { + const location = locationList[indx].base; + const mapSettingsList = Object.keys(mapConfig_json_1.default); + const map = mapSettingsList[indx]; + const { zombieWaveCount } = mapConfig_json_1.default?.[constants_1.configLocations[indx]]; + // if (location.Events?.Halloween2024?.MaxCrowdAttackSpawnLimit) + // location.Events.Halloween2024.MaxCrowdAttackSpawnLimit = 100; + // if (location.Events?.Halloween2024?.CrowdCooldownPerPlayerSec) + // location.Events.Halloween2024.CrowdCooldownPerPlayerSec = 60; + // if (location.Events?.Halloween2024?.CrowdCooldownPerPlayerSec) + // location.Events.Halloween2024.CrowdsLimit = 10; + // if (location.Events?.Halloween2024?.CrowdAttackSpawnParams) + // location.Events.Halloween2024.CrowdAttackSpawnParams = []; + if (!zombieWaveCount) + return; + const escapeTimeLimitRatio = Math.round(locationList[indx].base.EscapeTimeLimit / constants_1.defaultEscapeTimes[map]); + const zombieTotalWaveCount = Math.round(zombieWaveCount * zombieWaveQuantity * escapeTimeLimitRatio); + config.debug && + escapeTimeLimitRatio !== 1 && + console.log(`${map} Zombie wave count changed from ${zombieWaveCount} to ${zombieTotalWaveCount} due to escapeTimeLimit adjustment`); + const zombieWaves = (0, utils_1.buildZombie)(zombieTotalWaveCount, location.EscapeTimeLimit * 60, zombieWaveDistribution, 9999); + debug && + console.log(constants_1.configLocations[indx], " generated ", zombieWaves.length, "Zombies"); + location.BossLocationSpawn.push(...zombieWaves); + // console.log(zombieWaves[0], zombieWaves[7]); + } +} +//# sourceMappingURL=buildZombieWaves.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js.map new file mode 100644 index 0000000..3a2015a --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "buildZombieWaves.js", + "sourceRoot": "", + "sources": [ + "buildZombieWaves.ts" + ], + "names": [], + "mappings": ";;;;;AAWA,mCAoEC;AA7ED,iFAAoD;AACpD,2CAAkE;AAClE,mCAIiB;AAGjB,SAAwB,gBAAgB,CACtC,MAAsB,EACtB,YAAyB,EACzB,IAAW;IAEX,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,YAAY,EAAE,GACrE,MAAM,CAAC;IAET,MAAM,eAAe,GAAG,IAAA,sCAA8B,EAAC,YAAY,CAAC,CAAC;IACrE,mBAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACzC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAS,CAE5C,CAAC;QACF,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,EAAE,eAAe,EAAE,GAAG,wBAAS,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/D,gEAAgE;QAChE,kEAAkE;QAClE,iEAAiE;QACjE,kEAAkE;QAClE,iEAAiE;QACjE,oDAAoD;QACpD,8DAA8D;QAC9D,+DAA+D;QAE/D,IAAI,CAAC,eAAe;YAAE,OAAO;QAE7B,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CACrC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,8BAAkB,CAAC,GAAG,CAAC,CAClE,CAAC;QAEF,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CACrC,eAAe,GAAG,kBAAkB,GAAG,oBAAoB,CAC5D,CAAC;QAEF,MAAM,CAAC,KAAK;YACV,oBAAoB,KAAK,CAAC;YAC1B,OAAO,CAAC,GAAG,CACT,GAAG,GAAG,mCAAmC,eAAe,OAAO,oBAAoB,oCAAoC,CACxH,CAAC;QAEJ,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,oBAAoB,EACpB,QAAQ,CAAC,eAAe,GAAG,EAAE,EAC7B,sBAAsB,EACtB,IAAI,CACL,CAAC;QAEF,KAAK;YACH,OAAO,CAAC,GAAG,CACT,2BAAe,CAAC,IAAI,CAAC,EACrB,aAAa,EACb,WAAW,CAAC,MAAM,EAClB,SAAS,CACV,CAAC;QAEJ,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAEhD,+CAA+C;IACjD,CAAC;AACH,CAAC" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/constants.js b/user/mods/DewardianDev-MOAR/src/Spawning/constants.js new file mode 100644 index 0000000..9cdd35e --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/constants.js @@ -0,0 +1,230 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.bossPerformanceHash = exports.defaultEscapeTimes = exports.mainBossNameList = exports.bossesToRemoveFromPool = exports.originalMapList = exports.configLocations = exports.defaultHostility = void 0; +exports.defaultHostility = [ + { + AlwaysEnemies: [ + "bossTest", + "followerTest", + "bossKilla", + "bossKojaniy", + "followerKojaniy", + "cursedAssault", + "bossGluhar", + "followerGluharAssault", + "followerGluharSecurity", + "followerGluharScout", + "followerGluharSnipe", + "followerSanitar", + "bossSanitar", + "test", + "assaultGroup", + "sectantWarrior", + "sectantPriest", + "bossTagilla", + "followerTagilla", + "bossKnight", + "followerBigPipe", + "followerBirdEye", + "bossBoar", + "followerBoar", + "arenaFighter", + "arenaFighterEvent", + "bossBoarSniper", + "crazyAssaultEvent", + "sectactPriestEvent", + "followerBoarClose1", + "followerBoarClose2", + "bossKolontay", + "followerKolontayAssault", + "followerKolontaySecurity", + "bossPartisan", + "spiritWinter", + "spiritSpring", + "peacemaker", + "skier", + "assault", + "marksman", + "pmcUSEC", + "exUsec", + "pmcBot", + "bossBully", + ], + AlwaysFriends: [ + "bossZryachiy", + "followerZryachiy", + "peacefullZryachiyEvent", + "ravangeZryachiyEvent", + "gifter", + ], + BearEnemyChance: 100, + BearPlayerBehaviour: "AlwaysEnemies", + BotRole: "pmcBEAR", + ChancedEnemies: [], + Neutral: ["shooterBTR"], + SavagePlayerBehaviour: "AlwaysEnemies", + UsecEnemyChance: 100, + UsecPlayerBehaviour: "AlwaysEnemies", + Warn: ["sectactPriestEvent"], + }, + { + AlwaysEnemies: [ + "bossTest", + "followerTest", + "bossKilla", + "bossKojaniy", + "followerKojaniy", + "cursedAssault", + "bossGluhar", + "followerGluharAssault", + "followerGluharSecurity", + "followerGluharScout", + "followerGluharSnipe", + "followerSanitar", + "bossSanitar", + "test", + "assaultGroup", + "sectantWarrior", + "sectantPriest", + "bossTagilla", + "followerTagilla", + "bossKnight", + "followerBigPipe", + "followerBirdEye", + "bossBoar", + "followerBoar", + "arenaFighter", + "arenaFighterEvent", + "bossBoarSniper", + "crazyAssaultEvent", + "sectactPriestEvent", + "followerBoarClose1", + "followerBoarClose2", + "bossKolontay", + "followerKolontayAssault", + "followerKolontaySecurity", + "bossPartisan", + "spiritWinter", + "spiritSpring", + "peacemaker", + "skier", + "assault", + "marksman", + "pmcBEAR", + "exUsec", + "pmcBot", + "bossBully", + ], + AlwaysFriends: [ + "bossZryachiy", + "followerZryachiy", + "peacefullZryachiyEvent", + "ravangeZryachiyEvent", + "gifter", + ], + BearEnemyChance: 100, + BearPlayerBehaviour: "AlwaysEnemies", + BotRole: "pmcUSEC", + ChancedEnemies: [], + Neutral: ["shooterBTR"], + SavagePlayerBehaviour: "AlwaysEnemies", + UsecEnemyChance: 100, + UsecPlayerBehaviour: "AlwaysEnemies", + Warn: ["sectactPriestEvent"], + }, +]; +exports.configLocations = [ + "customs", + "factoryDay", + "factoryNight", + "interchange", + "laboratory", + "lighthouse", + "rezervbase", + "shoreline", + "tarkovstreets", + "woods", + "gzLow", + "gzHigh", +]; +exports.originalMapList = [ + "bigmap", + "factory4_day", + "factory4_night", + "interchange", + "laboratory", + "lighthouse", + "rezervbase", + "shoreline", + "tarkovstreets", + "woods", + "sandbox", + "sandbox_high", +]; +exports.bossesToRemoveFromPool = new Set([ + "assault", + "pmcBEAR", + "pmcUSEC", + "infectedAssault", + "infectedTagilla", + "infectedLaborant", + "infectedCivil", +]); +exports.mainBossNameList = [ + "bossKojaniy", + "bossGluhar", + "bossSanitar", + "bossKilla", + "bossTagilla", + "bossKnight", + "bossBoar", + "bossKolontay", + "bossPartisan", + "bossBully", +]; +exports.defaultEscapeTimes = { + customs: 40, + factoryDay: 20, + factoryNight: 25, + interchange: 40, + laboratory: 35, + lighthouse: 40, + rezervbase: 40, + shoreline: 45, + tarkovstreets: 50, + woods: 40, + gzLow: 35, + gzHigh: 35, +}; +exports.bossPerformanceHash = { + bossZryachiy: { + BossChance: 50, + BossEscortAmount: "0", + }, + exUsec: { + BossEscortAmount: "1", + BossChance: 40, + }, + bossBully: { + BossEscortAmount: "2,3", + }, + bossBoar: { + BossEscortAmount: "1,2,2,2", + }, + bossBoarSniper: { + BossEscortAmount: "1", + }, + bossKojaniy: { + BossEscortAmount: "1,2,2", + }, + bossPartisan: { + TriggerId: "", + TriggerName: "", + RandomTimeSpawn: false, + Time: 120, + }, + // bossSanitar: { + // BossEscortAmount: "1,2,3", + // }, +}; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/constants.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/constants.js.map new file mode 100644 index 0000000..ff9318d --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/constants.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "constants.js", + "sourceRoot": "", + "sources": [ + "constants.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js b/user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js new file mode 100644 index 0000000..701b68e --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = marksmanChanges; +function marksmanChanges(bots) { + // saveToFile(bots.types.marksman.difficulty, "marksmanDifficulty.json"); + for (const diff in bots.types.marksman.difficulty) { + bots.types.marksman.difficulty[diff].Core = { + ...bots.types.marksman.difficulty[diff].Core, + VisibleAngle: 300, + VisibleDistance: 245, + ScatteringPerMeter: 0.1, + HearingSense: 2.85, + }; + bots.types.marksman.difficulty[diff].Mind = { + ...bots.types.marksman.difficulty[diff].Mind, + BULLET_FEEL_DIST: 360, + CHANCE_FUCK_YOU_ON_CONTACT_100: 10, + }; + bots.types.marksman.difficulty[diff].Hearing = { + ...bots.types.marksman.difficulty[diff].Hearing, + CHANCE_TO_HEAR_SIMPLE_SOUND_0_1: 0.7, + DISPERSION_COEF: 3.6, + CLOSE_DIST: 10, + FAR_DIST: 30, + }; + } + // saveToFile(bots.types.marksman.difficulty, "marksmanDifficulty2.json"); +} +//# sourceMappingURL=marksmanChanges.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js.map new file mode 100644 index 0000000..f03dd28 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "marksmanChanges.js", + "sourceRoot": "", + "sources": [ + "marksmanChanges.ts" + ], + "names": [], + "mappings": ";;AAIA,kCA0BC;AA1BD,SAAwB,eAAe,CAAC,IAAW;IACjD,yEAAyE;IACzE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAA2B,CAAC,IAAI,GAAG;YACrE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI;YAC5C,YAAY,EAAE,GAAG;YACjB,eAAe,EAAE,GAAG;YACpB,kBAAkB,EAAE,GAAG;YACvB,YAAY,EAAE,IAAI;SACnB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAA2B,CAAC,IAAI,GAAG;YACrE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI;YAC5C,gBAAgB,EAAE,GAAG;YACrB,8BAA8B,EAAE,EAAE;SACnC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAA2B,CAAC,OAAO,GAAG;YACxE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO;YAC/C,+BAA+B,EAAE,GAAG;YACpC,eAAe,EAAE,GAAG;YACpB,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IACD,0EAA0E;AAC5E,CAAC" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js b/user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js new file mode 100644 index 0000000..d489622 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js @@ -0,0 +1,282 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeClosestSpawnsFromCustomBots = exports.getClosestZone = exports.BuildCustomPlayerSpawnPoints = exports.random360 = exports.AddCustomSniperSpawnPoints = exports.AddCustomBotSpawnPoints = exports.AddCustomPmcSpawnPoints = exports.getDistance = void 0; +exports.default = getSortedSpawnPointList; +exports.cleanClosest = cleanClosest; +exports.uuidv4 = uuidv4; +const config_json_1 = __importDefault(require("../../config/config.json")); +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const constants_1 = require("./constants"); +const SpawnZoneChanges_1 = require("../SpawnZoneChanges"); +function sq(n) { + return n * n; +} +function pt(a, b) { + return Math.sqrt(sq(a) + sq(b)); +} +const getDistance = (x, y, z, mX, mY, mZ) => { + (x = Math.abs(x - mX)), (y = Math.abs(y - mY)), (z = Math.abs(z - mZ)); + return pt(pt(x, z), y); +}; +exports.getDistance = getDistance; +function getSortedSpawnPointList(SpawnPointParams, mX, my, mZ, cull) { + let culledAmount = 0; + const sorted = SpawnPointParams.sort((a, b) => { + const a1 = (0, exports.getDistance)(a.Position.x, a.Position.y, a.Position.z, mX, my, mZ); + const b1 = (0, exports.getDistance)(b.Position.x, b.Position.y, b.Position.z, mX, my, mZ); + return a1 - b1; + }).filter((_, index) => { + if (!cull) + return true; + const result = index > SpawnPointParams.length * cull; + if (!result) + culledAmount++; + return result; + }); + if (config_json_1.default.debug && culledAmount > 0) { + console.log("Reduced to " + + Math.round((sorted.length / SpawnPointParams.length) * 100) + + "% of original spawns", SpawnPointParams.length, ">", sorted.length, "\n"); + } + return sorted; +} +function cleanClosest(SpawnPointParams, mapIndex, mapCullingNearPointValue) { + const map = constants_1.configLocations[mapIndex]; + const okayList = new Set(); + const filteredParams = SpawnPointParams.map((point) => { + const { Position: { x: X, y: Y, z: Z }, } = point; + const result = !SpawnPointParams.some(({ Position: { z, x, y }, Id }) => { + const dist = (0, exports.getDistance)(X, Y, Z, x, y, z); + return mapCullingNearPointValue > dist && dist !== 0 && !okayList.has(Id); + }); + if (!result) { + okayList.add(point.Id); + } + return result + ? point + : { + ...point, + DelayToCanSpawnSec: 9999999, + CorePointId: 99999, + Categories: [], + Sides: [], + }; + }); + if (config_json_1.default.debug) { + const actualCulled = filteredParams.filter(({ Categories }) => !!Categories.length); + console.log(map, filteredParams.length, ">", actualCulled.length, "Reduced to " + + Math.round((actualCulled.length / filteredParams.length) * 100) + + "% of original spawns"); // high, low} + } + return filteredParams.filter((point) => !!point.Categories.length); + // if (!_config.debug) { + // const actualCulled = culled.filter(({ Categories }) => !!Categories.length); + // console.log( + // map, + // "Reduced to " + + // Math.round((actualCulled.length / culled.length) * 100) + + // "% of original spawns", + // culled.length, + // ">", + // actualCulled.length + // // "\n" + // ); // high, low} + // } +} +function uuidv4() { + return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => (+c ^ + (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16)); +} +const AddCustomPmcSpawnPoints = (SpawnPointParams, map) => { + if (!SpawnZoneChanges_1.PmcSpawns[map] || !SpawnZoneChanges_1.PmcSpawns[map].length) { + config_json_1.default.debug && console.log("no custom Bot spawns for " + map); + return SpawnPointParams; + } + const playerSpawns = SpawnZoneChanges_1.PmcSpawns[map].map((coords, index) => ({ + BotZoneName: (0, exports.getClosestZone)(SpawnPointParams, coords.x, coords.y, coords.z), + Categories: ["Coop", Math.random() ? "Group" : "Opposite"], + Sides: ["Pmc"], + CorePointId: 0, + ColliderParams: { + _parent: "SpawnSphereParams", + _props: { + Center: { + x: 0, + y: 0, + z: 0, + }, + Radius: 20, + }, + }, + DelayToCanSpawnSec: 4, + Id: uuidv4(), + Infiltration: "", + Position: coords, + Rotation: (0, exports.random360)(), + })); + return [...SpawnPointParams, ...playerSpawns]; +}; +exports.AddCustomPmcSpawnPoints = AddCustomPmcSpawnPoints; +const AddCustomBotSpawnPoints = (SpawnPointParams, map) => { + if (!SpawnZoneChanges_1.ScavSpawns[map] || !SpawnZoneChanges_1.ScavSpawns[map].length) { + config_json_1.default.debug && console.log("no custom Bot spawns for " + map); + return SpawnPointParams; + } + const scavSpawns = SpawnZoneChanges_1.ScavSpawns[map].map((coords) => ({ + BotZoneName: (0, exports.getClosestZone)(SpawnPointParams, coords.x, coords.y, coords.z), + Categories: ["Bot"], + ColliderParams: { + _parent: "SpawnSphereParams", + _props: { + Center: { + x: 0, + y: 0, + z: 0, + }, + Radius: 20, + }, + }, + CorePointId: 1, + DelayToCanSpawnSec: 4, + Id: uuidv4(), + Infiltration: "", + Position: coords, + Rotation: (0, exports.random360)(), + Sides: ["Savage"], + })); + return [...SpawnPointParams, ...scavSpawns]; +}; +exports.AddCustomBotSpawnPoints = AddCustomBotSpawnPoints; +const AddCustomSniperSpawnPoints = (SpawnPointParams, map) => { + if (!SpawnZoneChanges_1.SniperSpawns[map] || !SpawnZoneChanges_1.SniperSpawns[map].length) { + config_json_1.default.debug && console.log("no custom Player spawns for " + map); + return SpawnPointParams; + } + const sniperSpawns = SpawnZoneChanges_1.SniperSpawns[map].map((coords, index) => ({ + BotZoneName: (0, exports.getClosestZone)(SpawnPointParams, coords.x, coords.y, coords.z) || + "custom_snipe_" + index, + Categories: ["Bot"], + ColliderParams: { + _parent: "SpawnSphereParams", + _props: { + Center: { + x: 0, + y: 0, + z: 0, + }, + Radius: 20, + }, + }, + CorePointId: 1, + DelayToCanSpawnSec: 4, + Id: uuidv4(), + Infiltration: "", + Position: coords, + Rotation: (0, exports.random360)(), + Sides: ["Savage"], + })); + return [...SpawnPointParams, ...sniperSpawns]; +}; +exports.AddCustomSniperSpawnPoints = AddCustomSniperSpawnPoints; +const random360 = () => Math.random() * 360; +exports.random360 = random360; +const BuildCustomPlayerSpawnPoints = (map, refSpawns) => { + const playerOnlySpawns = refSpawns + .filter((item) => !!item.Infiltration && item.Categories[0] === "Player") + .map((point) => { + point.ColliderParams._props.Radius = 1; + point.Position.y = point.Position.y + 0.5; + return { + ...point, + BotZoneName: "", + isCustom: true, + Id: uuidv4(), + Sides: ["Pmc"], + }; + }); + // console.log(map, playerOnlySpawns.length); + if (!SpawnZoneChanges_1.PlayerSpawns[map] || !SpawnZoneChanges_1.PlayerSpawns[map].length) { + config_json_1.default.debug && console.log("no custom Player spawns for " + map); + return playerOnlySpawns; + } + const getClosestInfil = (X, Y, Z) => { + let closest = Infinity; + let selectedInfil = ""; + playerOnlySpawns.forEach(({ Infiltration, Position: { x, y, z } }) => { + const dist = (0, exports.getDistance)(X, Y, Z, x, y, z); + if (!!Infiltration && dist < closest) { + closest = dist; + selectedInfil = Infiltration; + } + }); + return selectedInfil; + }; + const playerSpawns = SpawnZoneChanges_1.PlayerSpawns[map].map((coords, index) => ({ + BotZoneName: "", + Categories: ["Player"], + ColliderParams: { + _parent: "SpawnSphereParams", + _props: { + Center: { + x: 0, + y: 0, + z: 0, + }, + Radius: 1, + }, + }, + isCustom: true, + CorePointId: 0, + DelayToCanSpawnSec: 4, + Id: uuidv4(), + Infiltration: getClosestInfil(coords.x, coords.y, coords.z), + Position: coords, + Rotation: (0, exports.random360)(), + Sides: ["Pmc"], + })); + // TODO: Check infils + // console.log(map); + // console.log(playerOnlySpawns[0], playerSpawns[0]); + return [...playerOnlySpawns, ...playerSpawns]; +}; +exports.BuildCustomPlayerSpawnPoints = BuildCustomPlayerSpawnPoints; +const getClosestZone = (params, x, y, z) => { + if (Array.isArray(params) && + !params.filter(({ BotZoneName }) => BotZoneName).length) + return ""; + return (getSortedSpawnPointList(params, x, y, z).find(({ BotZoneName }) => !!BotZoneName)?.BotZoneName || ""); +}; +exports.getClosestZone = getClosestZone; +const removeClosestSpawnsFromCustomBots = (CustomBots, SpawnPointParams, map, mapConfigMap) => { + if (!CustomBots[map] || !CustomBots[map].length) { + console.log(map, "Is empty"); + return; + } + const coords = CustomBots[map]; + const { mapCullingNearPointValuePlayer, mapCullingNearPointValuePmc, mapCullingNearPointValueScav } = mapConfig_json_1.default[mapConfigMap]; + const mapCullingNearPointValue = (mapCullingNearPointValuePlayer + + mapCullingNearPointValuePmc + + mapCullingNearPointValueScav) / 3; + let filteredCoords = coords.filter(({ x: X, y: Y, z: Z }) => !SpawnPointParams.some(({ Position: { z, x, y } }) => { + return mapCullingNearPointValue > (0, exports.getDistance)(X, Y, Z, x, y, z); + })); + const okayList = new Set(); + filteredCoords = [...coords].filter(({ x: X, y: Y, z: Z }, index) => { + const result = !coords.some(({ z, x, y }) => { + const dist = (0, exports.getDistance)(X, Y, Z, x, y, z); + return (mapCullingNearPointValue * 1.3 > dist && + dist !== 0 && + !okayList.has("" + x + y + z)); + }); + if (!result) + okayList.add("" + X + Y + Z); + return result; + }); + console.log(map, coords.length, ">", filteredCoords.length, "culled", coords.length - filteredCoords.length, "spawns"); + return filteredCoords; +}; +exports.removeClosestSpawnsFromCustomBots = removeClosestSpawnsFromCustomBots; +//# sourceMappingURL=spawnZoneUtils.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js.map new file mode 100644 index 0000000..7a3e218 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "spawnZoneUtils.js", + "sourceRoot": "", + "sources": [ + "spawnZoneUtils.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js b/user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js new file mode 100644 index 0000000..d33bbf9 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js @@ -0,0 +1,52 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = updateSpawnLocations; +const constants_1 = require("./constants"); +const utils_1 = require("./utils"); +const advancedConfig_json_1 = __importDefault(require("../../config/advancedConfig.json")); +const GlobalValues_1 = require("../GlobalValues"); +const spawnZoneUtils_1 = __importDefault(require("./spawnZoneUtils")); +function updateSpawnLocations(locationList, config) { + for (let index = 0; index < locationList.length; index++) { + const map = constants_1.configLocations[index]; + const mapSpawns = [...GlobalValues_1.globalValues.indexedMapSpawns[index]]; + const playerSpawns = mapSpawns.filter((point) => point?.["type"] === "player"); + const playerSpawn = (0, utils_1.getRandomInArray)(playerSpawns); + GlobalValues_1.globalValues.playerSpawn = playerSpawn; + const { x, y, z } = playerSpawn.Position; + const sortedSpawnPointList = (0, spawnZoneUtils_1.default)(mapSpawns, x, y, z); + const possibleSpawnList = []; + sortedSpawnPointList.forEach((point) => { + if (possibleSpawnList.length < advancedConfig_json_1.default.SpawnpointAreaTarget && + point?.["type"] === "player") { + point.ColliderParams._props.Radius = 1; + possibleSpawnList.push(point); + } + }); + // const possibleSpawnListSet = new Set(possibleSpawnList.map(({ Id }) => Id)); + locationList[index].base.SpawnPointParams = [ + ...possibleSpawnList, + ...sortedSpawnPointList.filter((point) => point["type"] !== "player"), + ]; + // { + // if (point["type"] === "player" && !possibleSpawnListSet.has(point.Id)) { + // point.Categories = []; + // point.Sides = []; + // } + // return point; + // } + // console.log( + // map, + // locationList[index].base.SpawnPointParams.filter( + // (point) => point?.["type"] === "player" + // ).length, + // locationList[index].base.SpawnPointParams.filter( + // (point) => point?.Categories[0] === "Player" + // ).length + // ); + } +} +//# sourceMappingURL=updateSpawnLocations.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js.map new file mode 100644 index 0000000..6216da8 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "updateSpawnLocations.js", + "sourceRoot": "", + "sources": [ + "updateSpawnLocations.ts" + ], + "names": [], + "mappings": ";;;;;AAaA,uCAyDC;AArED,2CAA8C;AAE9C,mCAAoD;AACpD,2FAA8D;AAE9D,kDAA+C;AAC/C,sEAI0B;AAE1B,SAAwB,oBAAoB,CAC1C,YAAyB,EACzB,MAAsB;IAEtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,2BAAe,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,CAAC,GAAG,2BAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CACnC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,CACxC,CAAC;QAEF,MAAM,WAAW,GAAqB,IAAA,wBAAgB,EAAC,YAAY,CAAC,CAAC;QACrE,2BAAY,CAAC,WAAW,GAAG,WAAW,CAAC;QAEvC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC;QAEzC,MAAM,oBAAoB,GAAG,IAAA,wBAAuB,EAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,iBAAiB,GAAuB,EAAE,CAAC;QAEjD,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,IACE,iBAAiB,CAAC,MAAM,GAAG,6BAAc,CAAC,oBAAoB;gBAC9D,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,EAC5B,CAAC;gBACD,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;gBACtC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,+EAA+E;QAE/E,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG;YAC1C,GAAG,iBAAiB;YACpB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;SACtE,CAAC;QAEF,KAAK;QACL,2EAA2E;QAC3E,2BAA2B;QAC3B,sBAAsB;QACtB,IAAI;QAEJ,gBAAgB;QAChB,IAAI;QAEJ,eAAe;QACf,SAAS;QACT,sDAAsD;QACtD,8CAA8C;QAC9C,cAAc;QACd,sDAAsD;QACtD,mDAAmD;QACnD,aAAa;QACb,KAAK;IACP,CAAC;AACH,CAAC" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/utils.js b/user/mods/DewardianDev-MOAR/src/Spawning/utils.js new file mode 100644 index 0000000..dcef8a0 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/utils.js @@ -0,0 +1,397 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.looselyShuffle = exports.enforceSmoothing = exports.getRandomInArray = exports.setEscapeTimeOverrides = exports.getHealthBodyPartsByPercentage = exports.buildZombie = exports.buildBotWaves = exports.getRandomZombieType = exports.getRandomDifficulty = exports.zombieTypesCaps = exports.zombieTypes = exports.buildBossBasedWave = exports.shuffle = exports.getDifficulty = exports.waveBuilder = void 0; +const ILocationBase_1 = require("C:/snapshot/project/obj/models/eft/common/ILocationBase"); +const mapConfig_json_1 = __importDefault(require("../../config/mapConfig.json")); +const constants_1 = require("./constants"); +const waveBuilder = (totalWaves, timeLimit, waveDistribution, wildSpawnType, difficulty, isPlayer, maxSlots, combinedZones = [], specialZones = [], offset, starting, moreGroups) => { + if (totalWaves === 0) + return []; + const averageTime = timeLimit / totalWaves; + const firstHalf = Math.round(averageTime * (1 - waveDistribution)); + const secondHalf = Math.round(averageTime * (1 + waveDistribution)); + let timeStart = offset || 0; + const waves = []; + let maxSlotsReached = Math.round(1.3 * totalWaves); + while (totalWaves > 0 && + (waves.length < totalWaves || specialZones.length > 0)) { + const accelerate = totalWaves > 5 && waves.length < totalWaves / 3; + const stage = Math.round(waves.length < Math.round(totalWaves * 0.5) + ? accelerate + ? firstHalf / 3 + : firstHalf + : secondHalf); + const min = !offset && waves.length < 1 ? 0 : timeStart; + const max = !offset && waves.length < 1 ? 0 : timeStart + 60; + if (waves.length >= 1 || offset) + timeStart = timeStart + stage; + const BotPreset = (0, exports.getDifficulty)(difficulty); + // console.log(wildSpawnType, BotPreset); + // Math.round((1 - waves.length / totalWaves) * maxSlots) || 1; + let slotMax = Math.round((moreGroups ? Math.random() : Math.random() * Math.random()) * maxSlots); + if (slotMax < 1) + slotMax = 1; + let slotMin = (Math.round(Math.random() * slotMax) || 1) - 1; + if (wildSpawnType === "marksman" && slotMin < 1) + slotMin = 1; + waves.push({ + BotPreset, + BotSide: getBotSide(wildSpawnType), + SpawnPoints: getZone(specialZones, combinedZones, waves.length >= totalWaves), + isPlayers: isPlayer, + slots_max: slotMax, + slots_min: slotMin, + time_min: min, + time_max: max, + WildSpawnType: wildSpawnType, + number: waves.length, + sptId: wildSpawnType + waves.length, + SpawnMode: ["regular", "pve"], + }); + maxSlotsReached -= slotMax; + // if (wildSpawnType === "assault") console.log(slotMax, maxSlotsReached); + if (maxSlotsReached <= 0) + break; + } + // console.log(waves.map(({ slots_min }) => slots_min)); + return waves; +}; +exports.waveBuilder = waveBuilder; +const getZone = (specialZones, combinedZones, specialOnly) => { + if (!specialOnly && combinedZones.length) + return combinedZones[Math.round((combinedZones.length - 1) * Math.random())]; + if (specialZones.length) + return specialZones.pop(); + return ""; +}; +const getDifficulty = (diff) => { + const randomNumb = Math.random() + diff; + switch (true) { + case randomNumb < 0.55: + return "easy"; + case randomNumb < 1.4: + return "normal"; + case randomNumb < 1.85: + return "hard"; + default: + return "impossible"; + } +}; +exports.getDifficulty = getDifficulty; +const shuffle = (array) => { + let currentIndex = array.length, randomIndex; + // While there remain elements to shuffle. + while (currentIndex != 0) { + // Pick a remaining element. + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex--; + // And swap it with the current element. + [array[currentIndex], array[randomIndex]] = [ + array[randomIndex], + array[currentIndex], + ]; + } + return array; +}; +exports.shuffle = shuffle; +const getBotSide = (spawnType) => { + switch (spawnType) { + case "pmcBEAR": + return "Bear"; + case "pmcUSEC": + return "Usec"; + default: + return "Savage"; + } +}; +const buildBossBasedWave = (BossChance, BossEscortAmount, BossEscortType, BossName, BossZone, raidTime) => { + return { + BossChance, + BossDifficult: "normal", + BossEscortAmount, + BossEscortDifficult: "normal", + BossEscortType, + BossName, + BossPlayer: false, + BossZone, + Delay: 0, + ForceSpawn: false, + IgnoreMaxBots: true, + RandomTimeSpawn: false, + Time: raidTime ? Math.round(Math.random() * (raidTime * 5)) : -1, + Supports: null, + TriggerId: "", + TriggerName: "", + SpawnMode: ["regular", "pve"], + }; +}; +exports.buildBossBasedWave = buildBossBasedWave; +exports.zombieTypes = [ + "infectedassault", + "infectedpmc", + "infectedlaborant", + "infectedcivil", +]; +exports.zombieTypesCaps = [ + "infectedAssault", + "infectedPmc", + "infectedLaborant", + "infectedCivil", +]; +const getRandomDifficulty = (num = 1.5) => (0, exports.getDifficulty)(Math.round(Math.random() * num * 10) / 10); +exports.getRandomDifficulty = getRandomDifficulty; +const getRandomZombieType = () => exports.zombieTypesCaps[Math.round((exports.zombieTypesCaps.length - 1) * Math.random())]; +exports.getRandomZombieType = getRandomZombieType; +const buildBotWaves = (botTotal, escapeTimeLimit, maxGroup, groupChance, bossZones, difficulty, botType, ForceSpawn, botDistribution, spawnDelay = 0) => { + if (!botTotal) + return []; + const pushToEnd = botDistribution > 1; + const pullFromEnd = botDistribution < 1; + const botToZoneTotal = bossZones.length / botTotal; + const isMarksman = botType === "marksman"; + const isPMC = botType === "pmcUSEC" || botType === "pmcBEAR"; + let startTime = pushToEnd + ? Math.round((botDistribution - 1) * escapeTimeLimit) + : spawnDelay; + escapeTimeLimit = pullFromEnd + ? Math.round(escapeTimeLimit * botDistribution) + : Math.round(escapeTimeLimit - startTime); + const averageTime = Math.round(escapeTimeLimit / botTotal); + const waves = []; + let maxSlotsReached = botTotal; + if (maxGroup < 1) + maxGroup = 1; + while (botTotal > 0) { + const allowGroup = groupChance > Math.random(); + let bossEscortAmount = allowGroup + ? Math.round(maxGroup * Math.random()) + : 0; + if (bossEscortAmount < 0 || + (bossEscortAmount > 0 && bossEscortAmount + 1 > maxSlotsReached)) { + bossEscortAmount = 0; + } + const totalCountThisWave = isMarksman ? 1 : bossEscortAmount + 1; + const totalCountThusFar = botTotal - maxSlotsReached; + const BossDifficult = (0, exports.getDifficulty)(difficulty); + waves.push({ + BossChance: 100, + BossDifficult, + BossEscortAmount: bossEscortAmount.toString(), + BossEscortDifficult: BossDifficult, + BossEscortType: botType, + BossName: botType, + BossPlayer: false, + BossZone: bossZones[Math.floor(totalCountThusFar * botToZoneTotal)] || "", + ForceSpawn, + IgnoreMaxBots: ForceSpawn, + RandomTimeSpawn: false, + Time: startTime, + Supports: null, + TriggerId: "", + TriggerName: "", + SpawnMode: isPMC ? ["pve"] : ["regular", "pve"], + }); + startTime += Math.round(totalCountThisWave * averageTime); + maxSlotsReached -= 1 + (isMarksman ? 0 : bossEscortAmount); + if (maxSlotsReached <= 0) + break; + } + // isMarksman && + // console.log( + // // bossZones, + // botType, + // bossZones.length, + // waves.map(({ Time, BossZone }) => ({ Time, BossZone })) + // ); + return waves; +}; +exports.buildBotWaves = buildBotWaves; +const buildZombie = (botTotal, escapeTimeLimit, botDistribution, BossChance = 100) => { + if (!botTotal) + return []; + const pushToEnd = botDistribution > 1; + const pullFromEnd = botDistribution < 1; + let startTime = pushToEnd + ? Math.round((botDistribution - 1) * escapeTimeLimit) + : 0; + escapeTimeLimit = pullFromEnd + ? Math.round(escapeTimeLimit * botDistribution) + : Math.round(escapeTimeLimit - startTime); + const averageTime = Math.round(escapeTimeLimit / botTotal); + const waves = []; + let maxSlotsReached = botTotal; + while (botTotal > 0) { + const allowGroup = 0.2 > Math.random(); + let bossEscortAmount = allowGroup ? Math.round(4 * Math.random()) : 0; + if (bossEscortAmount < 0) + bossEscortAmount = 0; + const totalCountThisWave = bossEscortAmount + 1; + const main = (0, exports.getRandomZombieType)(); + waves.push({ + BossChance, + BossDifficult: "normal", + BossEscortAmount: "0", + BossEscortDifficult: "normal", + BossEscortType: main, + BossName: main, + BossPlayer: false, + BossZone: "", + Delay: 0, + IgnoreMaxBots: false, + RandomTimeSpawn: false, + Time: startTime, + Supports: new Array(bossEscortAmount).fill("").map(() => ({ + BossEscortType: (0, exports.getRandomZombieType)(), + BossEscortDifficult: ["normal"], + BossEscortAmount: "1", + })), + TriggerId: "", + TriggerName: "", + SpawnMode: ["regular", "pve"], + }); + startTime += Math.round(totalCountThisWave * averageTime); + maxSlotsReached -= 1 + bossEscortAmount; + if (maxSlotsReached <= 0) + break; + } + // console.log(waves) + return waves; +}; +exports.buildZombie = buildZombie; +const getHealthBodyPartsByPercentage = (num) => { + const num35 = Math.round(35 * num); + const num100 = Math.round(100 * num); + const num70 = Math.round(70 * num); + const num80 = Math.round(80 * num); + return { + Head: { + min: num35, + max: num35, + }, + Chest: { + min: num100, + max: num100, + }, + Stomach: { + min: num100, + max: num100, + }, + LeftArm: { + min: num70, + max: num70, + }, + RightArm: { + min: num70, + max: num70, + }, + LeftLeg: { + min: num80, + max: num80, + }, + RightLeg: { + min: num80, + max: num80, + }, + }; +}; +exports.getHealthBodyPartsByPercentage = getHealthBodyPartsByPercentage; +const setEscapeTimeOverrides = (locationList, mapConfig, logger, config) => { + for (let index = 0; index < locationList.length; index++) { + const mapSettingsList = Object.keys(mapConfig); + const map = mapSettingsList[index]; + const override = mapConfig[map].EscapeTimeLimitOverride; + const hardcodedEscapeLimitMax = 5; + if (!override && + locationList[index].base.EscapeTimeLimit / constants_1.defaultEscapeTimes[map] > + hardcodedEscapeLimitMax) { + const maxLimit = constants_1.defaultEscapeTimes[map] * hardcodedEscapeLimitMax; + logger.warning(`[MOAR] EscapeTimeLimit set too high on ${map}\nEscapeTimeLimit changed from ${locationList[index].base.EscapeTimeLimit} => ${maxLimit}\n`); + locationList[index].base.EscapeTimeLimit = maxLimit; + } + if (override && locationList[index].base.EscapeTimeLimit !== override) { + console.log(`[Moar] Set ${map}'s Escape time limit to ${override} from ${locationList[index].base.EscapeTimeLimit}\n`); + locationList[index].base.EscapeTimeLimit = override; + locationList[index].base.EscapeTimeLimitCoop = override; + locationList[index].base.EscapeTimeLimitPVE = override; + } + if (config.startingPmcs && + locationList[index].base.EscapeTimeLimit / constants_1.defaultEscapeTimes[map] > 2) { + logger.warning(`[MOAR] Average EscapeTimeLimit is too high (greater than 2x) to enable starting PMCS\nStarting PMCS has been turned off to prevent performance issues.\n`); + config.startingPmcs = false; + } + } +}; +exports.setEscapeTimeOverrides = setEscapeTimeOverrides; +const getRandomInArray = (arr) => arr[Math.floor(Math.random() * arr.length)]; +exports.getRandomInArray = getRandomInArray; +const enforceSmoothing = (locationList) => { + for (let index = 0; index < locationList.length; index++) { + const waves = locationList[index].base.BossLocationSpawn; + const Bosses = []; + let notBosses = []; + const notBossesSet = new Set([ + "infectedLaborant", + "infectedAssault", + "infectedCivil", + ILocationBase_1.WildSpawnType.ASSAULT, + ILocationBase_1.WildSpawnType.MARKSMAN, + "pmcBEAR", + "pmcUSEC", + ]); + for (const wave of waves) { + if (notBossesSet.has(wave.BossName)) { + notBosses.push(wave); + } + else { + Bosses.push(wave); + } + } + let first = Infinity, last = -Infinity; + notBosses.forEach((notBoss) => { + first = Math.min(notBoss.Time, first); + last = Math.max(notBoss.Time, last); + }); + if (first < 15) + first = 15; + notBosses = notBosses.sort((a, b) => a.Time - b.Time); + // console.log(notBosses.map(({ Time }) => Time)) + let start = first; + const smoothingDistribution = mapConfig_json_1.default[constants_1.configLocations[index]] + .smoothingDistribution; + const increment = (Math.round((last - first) / notBosses.length) * 2) * smoothingDistribution; + for (let index = 0; index < notBosses.length; index++) { + const ratio = (index + 1) / notBosses.length; + // console.log(ratio); + notBosses[index].Time = start; + let inc = Math.round(increment * ratio); + if (inc < 10) + inc = 5; + start += inc; + } + // console.log( + // configLocations[index], + // last, + // notBosses.map(({ Time, BossName }) => ({ BossName, Time })) + // ); + locationList[index].base.BossLocationSpawn = [...Bosses, ...notBosses]; + } +}; +exports.enforceSmoothing = enforceSmoothing; +const looselyShuffle = (arr, shuffleStep = 3) => { + const n = arr.length; + const halfN = Math.floor(n / 2); + for (let i = shuffleStep - 1; i < halfN; i += shuffleStep) { + // Pick a random index from the second half of the array to swap with the current index + const randomIndex = halfN + Math.floor(Math.random() * (n - halfN)); + // Swap the elements at the current index and the random index + const temp = arr[i]; + arr[i] = arr[randomIndex]; + arr[randomIndex] = temp; + } + return arr; +}; +exports.looselyShuffle = looselyShuffle; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Spawning/utils.js.map b/user/mods/DewardianDev-MOAR/src/Spawning/utils.js.map new file mode 100644 index 0000000..04312d3 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Spawning/utils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "utils.js", + "sourceRoot": "", + "sources": [ + "utils.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js b/user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js new file mode 100644 index 0000000..33f2a8c --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js @@ -0,0 +1,26 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = checkPresetLogic; +const config_json_1 = __importDefault(require("../../config/config.json")); +const Presets_json_1 = __importDefault(require("../../config/Presets.json")); +const PresetWeightings_json_1 = __importDefault(require("../../config/PresetWeightings.json")); +function checkPresetLogic(container) { + const Logger = container.resolve("WinstonLogger"); + for (const key in PresetWeightings_json_1.default) { + if (Presets_json_1.default[key] === undefined) { + Logger.error(`\n[MOAR]: No preset found in PresetWeightings.json for preset "${key}" in Presets.json`); + } + } + for (const key in Presets_json_1.default) { + const preset = Presets_json_1.default[key]; + for (const id in preset) { + if (config_json_1.default[id] === undefined) { + Logger.error(`\n[MOAR]: No associated key found in config.json called "${id}" for preset "${key}" in Presets.json`); + } + } + } +} +//# sourceMappingURL=checkPresets.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js.map b/user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js.map new file mode 100644 index 0000000..641e4b6 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "checkPresets.js", + "sourceRoot": "", + "sources": [ + "checkPresets.ts" + ], + "names": [], + "mappings": ";;;;;AAMA,mCAqBC;AAzBD,2EAA8C;AAC9C,6EAAgD;AAChD,+FAAkE;AAElE,SAAwB,gBAAgB,CAAC,SAA8B;IACrE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAU,eAAe,CAAC,CAAC;IAE3D,KAAK,MAAM,GAAG,IAAI,+BAAgB,EAAE,CAAC;QACnC,IAAI,sBAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CACV,kEAAkE,GAAG,mBAAmB,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,sBAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,sBAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,qBAAM,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,CAAC,KAAK,CACV,4DAA4D,EAAE,iBAAiB,GAAG,mBAAmB,CACtG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js b/user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js new file mode 100644 index 0000000..811d087 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js @@ -0,0 +1,136 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setUpZombies = exports.resetCurrentEvents = exports.baseZombieSettings = void 0; +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const baseZombieSettings = (enabled, count) => ({ + enabled, + name: "zombies", + type: "Zombies", + startDay: "1", + startMonth: "1", + endDay: "31", + endMonth: "12", + settings: { + enableSummoning: false, + removeEntryRequirement: [], + replaceBotHostility: true, + zombieSettings: { + enabled: true, + mapInfectionAmount: { + Interchange: count === -1 ? randomNumber100() : count, + Lighthouse: count === -1 ? randomNumber100() : count, + RezervBase: count === -1 ? randomNumber100() : count, + Sandbox: count === -1 ? randomNumber100() : count, + Shoreline: count === -1 ? randomNumber100() : count, + TarkovStreets: count === -1 ? randomNumber100() : count, + Woods: count === -1 ? randomNumber100() : count, + bigmap: count === -1 ? randomNumber100() : count, + factory4: count === -1 ? randomNumber100() : count, + laboratory: count === -1 ? randomNumber100() : count, + }, + disableBosses: [], + disableWaves: [], + }, + }, +}); +exports.baseZombieSettings = baseZombieSettings; +const randomNumber100 = () => Math.round(Math.random() * 100); +const resetCurrentEvents = (container, enabled, zombieWaveQuantity, random = false) => { + const configServer = container.resolve("ConfigServer"); + const eventConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.SEASONAL_EVENT); + let percentToShow = random ? -1 : Math.round(zombieWaveQuantity * 100); + if (percentToShow > 100) + percentToShow = 100; + eventConfig.events = [(0, exports.baseZombieSettings)(enabled, percentToShow)]; + const seasonalEventService = container.resolve("SeasonalEventService"); + // First we need to clear any existing data + seasonalEventService.currentlyActiveEvents = []; + seasonalEventService.christmasEventActive = false; + seasonalEventService.halloweenEventActive = false; + // Then re-calculate the cached data + seasonalEventService.cacheActiveEvents(); + // seasonalEventService.addEventBossesToMaps("halloweenzombies"); +}; +exports.resetCurrentEvents = resetCurrentEvents; +const setUpZombies = (container) => { + const configServer = container.resolve("ConfigServer"); + const eventConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.SEASONAL_EVENT); + eventConfig.events = [(0, exports.baseZombieSettings)(false, 100)]; + // eventConfig.eventBossSpawns = { + // zombies: eventConfig.eventBossSpawns.halloweenzombies, + // }; + eventConfig.eventGear[eventConfig.events[0].name] = {}; + eventConfig.hostilitySettingsForEvent.zombies.default = + eventConfig.hostilitySettingsForEvent.zombies.default + .filter(({ BotRole }) => !["pmcBEAR", "pmcUSEC"].includes(BotRole)) + .map((host) => ({ + ...host, + AlwaysEnemies: [ + "infectedAssault", + "infectedPmc", + "infectedCivil", + "infectedLaborant", + "infectedTagilla", + "pmcBEAR", + "pmcUSEC", + ], + AlwaysNeutral: [ + "marksman", + "assault", + "bossTest", + "bossBully", + "followerTest", + "bossKilla", + "bossKojaniy", + "followerKojaniy", + "pmcBot", + "cursedAssault", + "bossGluhar", + "followerGluharAssault", + "followerGluharSecurity", + "followerGluharScout", + "followerGluharSnipe", + "followerSanitar", + "bossSanitar", + "test", + "assaultGroup", + "sectantWarrior", + "sectantPriest", + "bossTagilla", + "followerTagilla", + "exUsec", + "gifter", + "bossKnight", + "followerBigPipe", + "followerBirdEye", + "bossZryachiy", + "followerZryachiy", + "bossBoar", + "followerBoar", + "arenaFighter", + "arenaFighterEvent", + "bossBoarSniper", + "crazyAssaultEvent", + "peacefullZryachiyEvent", + "sectactPriestEvent", + "ravangeZryachiyEvent", + "followerBoarClose1", + "followerBoarClose2", + "bossKolontay", + "followerKolontayAssault", + "followerKolontaySecurity", + "shooterBTR", + "bossPartisan", + "spiritWinter", + "spiritSpring", + "peacemaker", + "skier", + ], + SavagePlayerBehaviour: "Neutral", + BearPlayerBehaviour: "AlwaysEnemies", + UsecPlayerBehaviour: "AlwaysEnemies", + })); + // console.log(eventConfig.hostilitySettingsForEvent.zombies.default); +}; +exports.setUpZombies = setUpZombies; +//# sourceMappingURL=Zombies.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js.map b/user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js.map new file mode 100644 index 0000000..1a02cac --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "Zombies.js", + "sourceRoot": "", + "sources": [ + "Zombies.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/mod.js b/user/mods/DewardianDev-MOAR/src/mod.js new file mode 100644 index 0000000..8a28dfa --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/mod.js @@ -0,0 +1,36 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const config_json_1 = require("../config/config.json"); +const Spawning_1 = require("./Spawning/Spawning"); +const config_json_2 = __importDefault(require("../config/config.json")); +const GlobalValues_1 = require("./GlobalValues"); +const routes_1 = require("./Routes/routes"); +const checkPresets_1 = __importDefault(require("./Tests/checkPresets")); +const setupSpawn_1 = require("./SpawnZoneChanges/setupSpawn"); +class Moar { + preSptLoad(container) { + if (config_json_1.enableBotSpawning) { + (0, routes_1.setupRoutes)(container); + } + } + postDBLoad(container) { + if (config_json_1.enableBotSpawning) { + (0, setupSpawn_1.setupSpawns)(container); + } + } + postSptLoad(container) { + if (config_json_1.enableBotSpawning) { + (0, checkPresets_1.default)(container); + GlobalValues_1.globalValues.baseConfig = config_json_2.default; + GlobalValues_1.globalValues.overrideConfig = {}; + const logger = container.resolve("WinstonLogger"); + logger.info("\n[MOAR]: Starting up, may the bots ever be in your favour!"); + (0, Spawning_1.buildWaves)(container); + } + } +} +module.exports = { mod: new Moar() }; +//# sourceMappingURL=mod.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/mod.js.map b/user/mods/DewardianDev-MOAR/src/mod.js.map new file mode 100644 index 0000000..cb90dca --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/mod.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "mod.js", + "sourceRoot": "", + "sources": [ + "mod.ts" + ], + "names": [], + "mappings": ";;;;;AAIA,uDAA0D;AAC1D,kDAAiD;AACjD,wEAA2C;AAC3C,iDAA8C;AAE9C,4CAA8C;AAC9C,wEAAoD;AACpD,8DAA4D;AAE5D,MAAM,IAAI;IACR,UAAU,CAAC,SAA8B;QACvC,IAAI,+BAAiB,EAAE,CAAC;YACtB,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,SAA8B;QACvC,IAAI,+BAAiB,EAAE,CAAC;YACtB,IAAA,wBAAW,EAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,WAAW,CAAC,SAA8B;QACxC,IAAI,+BAAiB,EAAE,CAAC;YACtB,IAAA,sBAAgB,EAAC,SAAS,CAAC,CAAC;YAC5B,2BAAY,CAAC,UAAU,GAAG,qBAAM,CAAC;YACjC,2BAAY,CAAC,cAAc,GAAG,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAU,eAAe,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CACT,6DAA6D,CAC9D,CAAC;YACF,IAAA,qBAAU,EAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC" +} \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/utils.js b/user/mods/DewardianDev-MOAR/src/utils.js new file mode 100644 index 0000000..4844523 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/utils.js @@ -0,0 +1,52 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.kebabToTitle = exports.getRandomPresetOrCurrentlySelectedPreset = exports.cloneDeep = exports.saveToFile = void 0; +const PresetWeightings_json_1 = __importDefault(require("../config/PresetWeightings.json")); +const Presets_json_1 = __importDefault(require("../config/Presets.json")); +const GlobalValues_1 = require("./GlobalValues"); +const saveToFile = (data, filePath) => { + var fs = require("fs"); + let dir = __dirname; + let dirArray = dir.split("\\"); + const directory = `${dirArray[dirArray.length - 4]}/${dirArray[dirArray.length - 3]}/${dirArray[dirArray.length - 2]}/`; + fs.writeFile(directory + filePath, JSON.stringify(data, null, 4), function (err) { + if (err) + throw err; + }); +}; +exports.saveToFile = saveToFile; +const cloneDeep = (objectToClone) => JSON.parse(JSON.stringify(objectToClone)); +exports.cloneDeep = cloneDeep; +const getRandomPresetOrCurrentlySelectedPreset = () => { + switch (true) { + case GlobalValues_1.globalValues.forcedPreset.toLowerCase() === "custom": + return {}; + case !GlobalValues_1.globalValues.forcedPreset: + GlobalValues_1.globalValues.forcedPreset = "random"; + break; + case GlobalValues_1.globalValues.forcedPreset === "random": + break; + default: + return Presets_json_1.default[GlobalValues_1.globalValues.forcedPreset]; + } + const all = []; + const itemKeys = Object.keys(PresetWeightings_json_1.default); + for (const key of itemKeys) { + for (let i = 0; i < PresetWeightings_json_1.default[key]; i++) { + all.push(key); + } + } + const preset = all[Math.round(Math.random() * (all.length - 1))]; + GlobalValues_1.globalValues.currentPreset = preset; + return Presets_json_1.default[preset]; +}; +exports.getRandomPresetOrCurrentlySelectedPreset = getRandomPresetOrCurrentlySelectedPreset; +const kebabToTitle = (str) => str + .split("-") + .map((word) => word.slice(0, 1).toUpperCase() + word.slice(1)) + .join(" "); +exports.kebabToTitle = kebabToTitle; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/user/mods/DewardianDev-MOAR/src/utils.js.map b/user/mods/DewardianDev-MOAR/src/utils.js.map new file mode 100644 index 0000000..3a739e9 --- /dev/null +++ b/user/mods/DewardianDev-MOAR/src/utils.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "utils.js", + "sourceRoot": "", + "sources": [ + "utils.ts" + ], + "names": [], + "mappings": ";;;;;;AAAA,4FAA+D;AAC/D,0EAA6C;AAC7C,iDAA8C;AAEvC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;IAC3C,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAChF,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;IACvC,EAAE,CAAC,SAAS,CACV,SAAS,GAAG,QAAQ,EACpB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAC7B,UAAU,GAAG;QACX,IAAI,GAAG;YAAE,MAAM,GAAG,CAAC;IACrB,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,UAAU,cAarB;AAEK,MAAM,SAAS,GAAG,CAAC,aAAkB,EAAE,EAAE,CAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;AAD/B,QAAA,SAAS,aACsB;AAErC,MAAM,wCAAwC,GAAG,GAAG,EAAE;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,2BAAY,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,QAAQ;YACvD,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,2BAAY,CAAC,YAAY;YAC7B,2BAAY,CAAC,YAAY,GAAG,QAAQ,CAAC;YACrC,MAAM;QACR,KAAK,2BAAY,CAAC,YAAY,KAAK,QAAQ;YACzC,MAAM;QAER;YACE,OAAO,sBAAO,CAAC,2BAAY,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC;IAEf,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,+BAAgB,CAAC,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,+BAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,2BAAY,CAAC,aAAa,GAAG,MAAM,CAAC;IACpC,OAAO,sBAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC;AA3BW,QAAA,wCAAwC,4CA2BnD;AAEK,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE,CAClD,GAAG;KACA,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC7D,IAAI,CAAC,GAAG,CAAC,CAAC;AAJF,QAAA,YAAY,gBAIV" +} \ No newline at end of file diff --git a/user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js b/user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js new file mode 100644 index 0000000..ac59671 --- /dev/null +++ b/user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js @@ -0,0 +1,127 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Calibers = exports.ParentClasses = void 0; +var ParentClasses; +(function (ParentClasses) { + ParentClasses["WEAPON"] = "5422acb9af1c889c16000029"; + ParentClasses["ARMORVEST"] = "5448e54d4bdc2dcc718b4568"; + ParentClasses["ARMOREDEQUIPMENT"] = "57bef4c42459772e8d35a53b"; + ParentClasses["HEADWEAR"] = "5a341c4086f77401f2541505"; + ParentClasses["FACECOVER"] = "5a341c4686f77469e155819e"; + ParentClasses["CHESTRIG"] = "5448e5284bdc2dcb718b4567"; + ParentClasses["BACKPACK"] = "5448e53e4bdc2d60728b4567"; + ParentClasses["VISORS"] = "5448e5724bdc2ddf718b4568"; + ParentClasses["FOOD"] = "5448e8d04bdc2ddf718b4569"; + ParentClasses["DRINK"] = "5448e8d64bdc2dce718b4568"; + ParentClasses["BARTER_ITEM"] = "5448eb774bdc2d0a728b4567"; + ParentClasses["INFO"] = "5448ecbe4bdc2d60728b4568"; + ParentClasses["MEDKIT"] = "5448f39d4bdc2d0a728b4568"; + ParentClasses["DRUGS"] = "5448f3a14bdc2d27728b4569"; + ParentClasses["STIMULATOR"] = "5448f3a64bdc2d60728b456a"; + ParentClasses["MEDICAL"] = "5448f3ac4bdc2dce718b4569"; + ParentClasses["MEDICAL_SUPPLIES"] = "57864c8c245977548867e7f1"; + ParentClasses["MOD"] = "5448fe124bdc2da5018b4567"; + ParentClasses["FUNCTIONAL_MOD"] = "550aa4154bdc2dd8348b456b"; + ParentClasses["FUEL"] = "5d650c3e815116009f6201d2"; + ParentClasses["GEAR_MOD"] = "55802f3e4bdc2de7118b4584"; + ParentClasses["STOCK"] = "55818a594bdc2db9688b456a"; + ParentClasses["FOREGRIP"] = "55818af64bdc2d5b648b4570"; + ParentClasses["MASTER_MOD"] = "55802f4a4bdc2ddb688b4569"; + ParentClasses["MOUNT"] = "55818b224bdc2dde698b456f"; + ParentClasses["MUZZLE"] = "5448fe394bdc2d0d028b456c"; + ParentClasses["SIGHTS"] = "5448fe7a4bdc2d6f028b456b"; + ParentClasses["MEDS"] = "543be5664bdc2dd4348b4569"; + ParentClasses["MONEY"] = "543be5dd4bdc2deb348b4569"; + ParentClasses["NIGHTVISION"] = "5a2c3a9486f774688b05e574"; + ParentClasses["THEMALVISION"] = "5d21f59b6dbe99052b54ef83"; + ParentClasses["KEY"] = "543be5e94bdc2df1348b4568"; + ParentClasses["KEY_MECHANICAL"] = "5c99f98d86f7745c314214b3"; + ParentClasses["KEYCARD"] = "5c164d2286f774194c5e69fa"; + ParentClasses["EQUIPMENT"] = "543be5f84bdc2dd4348b456a"; + ParentClasses["THROW_WEAPON"] = "543be6564bdc2df4348b4568"; + ParentClasses["FOOD_DRINK"] = "543be6674bdc2df1348b4569"; + ParentClasses["PISTOL"] = "5447b5cf4bdc2d65278b4567"; + ParentClasses["SMG"] = "5447b5e04bdc2d62278b4567"; + ParentClasses["ASSAULT_RIFLE"] = "5447b5f14bdc2d61278b4567"; + ParentClasses["ASSAULT_CARBINE"] = "5447b5fc4bdc2d87278b4567"; + ParentClasses["SHOTGUN"] = "5447b6094bdc2dc3278b4567"; + ParentClasses["MARKSMAN_RIFLE"] = "5447b6194bdc2d67278b4567"; + ParentClasses["SNIPER_RIFLE"] = "5447b6254bdc2dc3278b4568"; + ParentClasses["MACHINE_GUN"] = "5447bed64bdc2d97278b4568"; + ParentClasses["GRENADE_LAUNCHER"] = "5447bedf4bdc2d87278b4568"; + ParentClasses["SPECIAL_WEAPON"] = "5447bee84bdc2dc3278b4569"; + ParentClasses["SPEC_ITEM"] = "5447e0e74bdc2d3c308b4567"; + ParentClasses["KNIFE"] = "5447e1d04bdc2dff2f8b4567"; + ParentClasses["AMMO"] = "5485a8684bdc2da71d8b4567"; + ParentClasses["AMMO_BOX"] = "543be5cb4bdc2deb348b4568"; + ParentClasses["LOOT_CONTAINER"] = "566965d44bdc2d814c8b4571"; + ParentClasses["MOD_CONTAINER"] = "5448bf274bdc2dfc2f8b456a"; + ParentClasses["SEARCHABLE_ITEM"] = "566168634bdc2d144c8b456c"; + ParentClasses["STASH"] = "566abbb64bdc2d144c8b457d"; + ParentClasses["SORTING_TABLE"] = "6050cac987d3f925bf016837"; + ParentClasses["LOCKABLE_CONTAINER"] = "5671435f4bdc2d96058b4569"; + ParentClasses["SIMPLE_CONTAINER"] = "5795f317245977243854e041"; + ParentClasses["INVENTORY"] = "55d720f24bdc2d88028b456d"; + ParentClasses["STATIONARY_CONTAINER"] = "567583764bdc2d98058b456e"; + ParentClasses["POCKETS"] = "557596e64bdc2dc2118b4571"; + ParentClasses["ARMBAND"] = "5b3f15d486f77432d0509248"; + ParentClasses["DOG_TAG_USEC"] = "59f32c3b86f77472a31742f0"; + ParentClasses["DOG_TAG_BEAR"] = "59f32bb586f774757e1e8442"; + ParentClasses["JEWELRY"] = "57864a3d24597754843f8721"; + ParentClasses["ELECTRONICS"] = "57864a66245977548f04a81f"; + ParentClasses["BUILDING_MATERIAL"] = "57864ada245977548638de91"; + ParentClasses["TOOL"] = "57864bb7245977548b3b66c2"; + ParentClasses["HOUSEHOLD_GOODS"] = "57864c322459775490116fbf"; + ParentClasses["LUBRICANT"] = "57864e4c24597754843f8723"; + ParentClasses["BATTERY"] = "57864ee62459775490116fc1"; + ParentClasses["ASSAULT_SCOPE"] = "55818add4bdc2d5b648b456f"; + ParentClasses["TACTICAL_COMBO"] = "55818b164bdc2ddc698b456c"; + ParentClasses["FLASHLIGHT"] = "55818b084bdc2d5b648b4571"; + ParentClasses["MAGAZINE"] = "5448bc234bdc2d3c308b4569"; + ParentClasses["LIGHT_LASER"] = "55818b0e4bdc2dde698b456e"; + ParentClasses["FLASH_HIDER"] = "550aa4bf4bdc2dd6348b456b"; + ParentClasses["COLLIMATOR"] = "55818ad54bdc2ddc698b4569"; + ParentClasses["COMPACT_COLLIMATOR"] = "55818acf4bdc2dde698b456b"; + ParentClasses["COMPENSATOR"] = "550aa4af4bdc2dd4348b456e"; + ParentClasses["OPTIC_SCOPE"] = "55818ae44bdc2dde698b456c"; + ParentClasses["SPECIAL_SCOPE"] = "55818aeb4bdc2ddc698b456a"; + ParentClasses["OTHER"] = "590c745b86f7743cc433c5f2"; + ParentClasses["SILENCER"] = "550aa4cd4bdc2dd8348b456c"; + ParentClasses["PORTABLE_RANGE_FINDER"] = "61605ddea09d851a0a0c1bbc"; + ParentClasses["ITEM"] = "54009119af1c881c07000029"; + ParentClasses["CYLINDER_MAGAZINE"] = "610720f290b75a49ff2e5e25"; + ParentClasses["MAP"] = "567849dd4bdc2d150f8b456e"; + ParentClasses["REPAIRKITS"] = "616eb7aea207f41933308f46"; + ParentClasses["COMPASS"] = "5f4fbaaca5573a5ac31db429"; + ParentClasses["HEADSET"] = "5645bcb74bdc2ded0b8b4578"; + ParentClasses["GASBLOCK"] = "56ea9461d2720b67698b456f"; +})(ParentClasses || (exports.ParentClasses = ParentClasses = {})); +var Calibers; +(function (Calibers) { + Calibers["_9x19mm"] = "Caliber9x19PARA"; + Calibers["_9x18mm"] = "Caliber9x18PM"; + Calibers["_9x21mm"] = "Caliber9x21"; + Calibers["_9x39mm"] = "Caliber9x39"; + Calibers["_45ACP"] = "Caliber1143x23ACP"; + Calibers["_46x30mm"] = "Caliber46x30"; + Calibers["_57x28mm"] = "Caliber57x28"; + Calibers["_762x25mm"] = "Caliber762x25TT"; + Calibers["_366TKM"] = "Caliber366TKM"; + Calibers["_762x39mm"] = "Caliber762x39"; + Calibers["_762x51mm"] = "Caliber762x51"; + Calibers["_762x54rmm"] = "Caliber762x54R"; + Calibers["_300BLK"] = "Caliber762x35"; + Calibers["_556x45mm"] = "Caliber556x45NATO"; + Calibers["_545x39mm"] = "Caliber545x39"; + Calibers["_127x55mm"] = "Caliber127x55"; + Calibers["_338mag"] = "Caliber86x70"; + Calibers["_357mag"] = "Caliber9x33R"; + Calibers["_127x108mm"] = "Caliber127x108"; + Calibers["_40x46mm"] = "Caliber40x46"; + Calibers["_40x53mm"] = "Caliber40mmRU"; + Calibers["_26x75mm"] = "Caliber26x75"; + Calibers["_12ga"] = "Caliber12g"; + Calibers["_20ga"] = "Caliber20g"; + Calibers["_23x75mm"] = "Caliber23x75"; +})(Calibers || (exports.Calibers = Calibers = {})); +//# sourceMappingURL=enums.js.map \ No newline at end of file diff --git a/user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js.map b/user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js.map new file mode 100644 index 0000000..2e2c220 --- /dev/null +++ b/user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "enums.js", + "sourceRoot": "", + "sources": [ + "enums.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js b/user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js new file mode 100644 index 0000000..baaf124 --- /dev/null +++ b/user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js @@ -0,0 +1,76 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +const config_json_1 = __importDefault(require("../config/config.json")); +class DisableDiscardLimits { + postDBLoad(container) { + const databaseServer = container.resolve("DatabaseServer"); + const configServer = container.resolve("ConfigServer"); + const pmcConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.PMC); + const botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const { logInfo } = useLogger(container); + const tables = databaseServer.getTables(); + /** + * Set the item generation weights for backpackLoot, vestLoot, and pocketLoot to zero to prevent extra loot items from spawning on the specified bot type + * @param botTypes + */ + const emptyInventory = (botTypes) => { + botTypes.forEach((type) => { + logInfo(`Removing loot from ${type}`); + const backpackWeights = tables.bots.types[type].generation.items.backpackLoot.weights; + const vestWeights = tables.bots.types[type].generation.items.vestLoot.weights; + const pocketWeights = tables.bots.types[type].generation.items.pocketLoot.weights; + clearWeights(backpackWeights); + clearWeights(vestWeights); + clearWeights(pocketWeights); + }); + }; + if (!config_json_1.default.pmcSpawnWithLoot) { + emptyInventory(["usec", "bear"]); + // Do not allow weapons to spawn in PMC bags + pmcConfig.looseWeaponInBackpackLootMinMax.max = 0; + // Clear weights in pmc randomisation + botConfig.equipment?.pmc?.randomisation?.forEach(details => { + const generation = details?.generation; + clearWeights(generation?.backpackLoot?.weights); + clearWeights(generation?.pocketLoot?.weights); + clearWeights(generation?.vestLoot?.weights); + }); + } + if (!config_json_1.default.scavSpawnWithLoot) { + emptyInventory(["assault"]); + } + logInfo("Marking items with DiscardLimits as InsuranceDisabled"); + for (let itemId in tables.templates.items) { + const template = tables.templates.items[itemId]; + /** + * When we set DiscardLimitsEnabled to false further down, this will cause some items to be able to be insured when they normally should not be. + * The DiscardLimit property is used by BSG for RMT protections and their code internally treats things with discard limits as not insurable. + * For items that have a DiscardLimit >= 0, we need to manually flag them as InsuranceDisabled to make sure they still cannot be insured by the player. + * Do not disable insurance if the item is marked as always available for insurance. + */ + if (template._props.DiscardLimit >= 0 && + !template._props.IsAlwaysAvailableForInsurance) { + template._props.InsuranceDisabled = true; + } + } + tables.globals.config.DiscardLimitsEnabled = false; + logInfo("Global config DiscardLimitsEnabled set to false"); + } +} +function clearWeights(weights = {}) { + Object.keys(weights).forEach(weight => weights[weight] = 0); +} +function useLogger(container) { + const logger = container.resolve("WinstonLogger"); + return { + logInfo: (message) => { + logger.info(`[LootingBots-ServerMod] ${message}`); + }, + }; +} +module.exports = { mod: new DisableDiscardLimits() }; +//# sourceMappingURL=mod.js.map \ No newline at end of file diff --git a/user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js.map b/user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js.map new file mode 100644 index 0000000..1bc4047 --- /dev/null +++ b/user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "mod.js", + "sourceRoot": "", + "sources": [ + "mod.ts" + ], + "names": [], + "mappings": ";;;;;AAMA,kFAA+E;AAK/E,wEAA2C;AAE3C,MAAM,oBAAoB;IACjB,UAAU,CAAC,SAA8B;QAC9C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAiB,gBAAgB,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;QAEtE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;QAE1C;;;WAGG;QACH,MAAM,cAAc,GAAG,CAAC,QAAkB,EAAE,EAAE;YAC5C,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,OAAO,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;gBACtC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;gBACtF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAElF,YAAY,CAAC,eAAe,CAAC,CAAC;gBAC9B,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC1B,YAAY,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7B,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACjC,4CAA4C;YAC5C,SAAS,CAAC,+BAA+B,CAAC,GAAG,GAAG,CAAC,CAAC;YAElD,qCAAqC;YACrC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzD,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;gBACvC,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;gBAChD,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9C,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,qBAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,CAAC,uDAAuD,CAAC,CAAC;QACjE,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChD;;;;;eAKG;YACH,IACE,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;gBACjC,CAAC,QAAQ,CAAC,MAAM,CAAC,6BAA6B,EAC9C,CAAC;gBACD,QAAQ,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACnD,OAAO,CAAC,iDAAiD,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,SAAS,YAAY,CAAC,UAAkC,EAAE;IACxD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,SAA8B;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAU,eAAe,CAAC,CAAC;IAC3D,OAAO;QACL,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,oBAAoB,EAAE,EAAE,CAAC" +} \ No newline at end of file diff --git a/user/mods/zSolarint-SAIN-ServerMod/src/mod.js b/user/mods/zSolarint-SAIN-ServerMod/src/mod.js new file mode 100644 index 0000000..49ecf89 --- /dev/null +++ b/user/mods/zSolarint-SAIN-ServerMod/src/mod.js @@ -0,0 +1,66 @@ +"use strict"; +/* eslint-disable prefer-const */ +/* eslint-disable @typescript-eslint/brace-style */ +Object.defineProperty(exports, "__esModule", { value: true }); +const ConfigTypes_1 = require("C:/snapshot/project/obj/models/enums/ConfigTypes"); +let botConfig; +let pmcConfig; +let configServer; +class SAIN { + postDBLoad(container) { + configServer = container.resolve("ConfigServer"); + pmcConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.PMC); + botConfig = configServer.getConfig(ConfigTypes_1.ConfigTypes.BOT); + const databaseServer = container.resolve("DatabaseServer"); + const tables = databaseServer.getTables(); + // Only allow `pmcBot` brains to spawn for PMCs + for (const pmcType in pmcConfig.pmcType) { + for (const map in pmcConfig.pmcType[pmcType]) { + const pmcBrains = pmcConfig.pmcType[pmcType][map]; + for (const brain in pmcBrains) { + if (brain === "pmcBot") { + pmcBrains[brain] = 1; + } + else { + pmcBrains[brain] = 0; + } + } + } + } + // Only allow `assault` brains for scavs + for (const map in botConfig.assaultBrainType) { + const scavBrains = botConfig.assaultBrainType[map]; + for (const brain in scavBrains) { + if (brain === "assault") { + scavBrains[brain] = 1; + } + else { + scavBrains[brain] = 0; + } + } + } + // Only allow `pmcBot` brains for player scavs + for (const map in botConfig.playerScavBrainType) { + const playerScavBrains = botConfig.playerScavBrainType[map]; + for (const brain in playerScavBrains) { + if (brain === "pmcBot") { + playerScavBrains[brain] = 1; + } + else { + playerScavBrains[brain] = 0; + } + } + } + for (const locationName in tables.locations) { + const location = tables.locations[locationName].base; + if (location && location.BotLocationModifier) { + location.BotLocationModifier.AccuracySpeed = 1; + location.BotLocationModifier.GainSight = 1; + location.BotLocationModifier.Scattering = 1; + location.BotLocationModifier.VisibleDistance = 1; + } + } + } +} +module.exports = { mod: new SAIN() }; +//# sourceMappingURL=mod.js.map \ No newline at end of file diff --git a/user/mods/zSolarint-SAIN-ServerMod/src/mod.js.map b/user/mods/zSolarint-SAIN-ServerMod/src/mod.js.map new file mode 100644 index 0000000..a2c1459 --- /dev/null +++ b/user/mods/zSolarint-SAIN-ServerMod/src/mod.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "mod.js", + "sourceRoot": "", + "sources": [ + "mod.ts" + ], + "names": [], + "mappings": ";AAAA,iCAAiC;AACjC,mDAAmD;;AAEnD,kFAA+E;AAQ/E,IAAI,SAAqB,CAAC;AAC1B,IAAI,SAAqB,CAAC;AAC1B,IAAI,YAA0B,CAAC;AAE/B,MAAM,IAAI;IACC,UAAU,CAAC,SAA8B;QAC5C,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;QAC/D,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;QAChE,SAAS,GAAG,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAiB,gBAAgB,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;QAE1C,+CAA+C;QAC/C,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;gBACjD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;oBAC5B,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACrB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;yBACI,CAAC;wBACF,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;qBACI,CAAC;oBACF,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;YACL,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC5D,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACnC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrB,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChC,CAAC;qBACI,CAAC;oBACF,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;YAErD,IAAI,QAAQ,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBAC3C,QAAQ,CAAC,mBAAmB,CAAC,aAAa,GAAG,CAAC,CAAC;gBAC/C,QAAQ,CAAC,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC;gBAC3C,QAAQ,CAAC,mBAAmB,CAAC,UAAU,GAAG,CAAC,CAAC;gBAC5C,QAAQ,CAAC,mBAAmB,CAAC,eAAe,GAAG,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AACD,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA" +} \ No newline at end of file