From 02e1c5c0b985e4634068d3fcb4b81b68173e4c3e Mon Sep 17 00:00:00 2001 From: GetParanoid Date: Fri, 18 Jul 2025 16:05:06 -0500 Subject: [PATCH] js files --- .../src/Constants/Tier5.js | 211 ++ .../src/Constants/Tier5.js.map | 10 + .../src/LevelChanges/BotLevelChanges.js | 49 + .../src/LevelChanges/BotLevelChanges.js.map | 10 + .../src/LoadoutChanges/ClothingChanges.js | 24 + .../src/LoadoutChanges/ClothingChanges.js.map | 10 + .../LoadoutChanges/FixSpecificScopeIssues.js | 26 + .../FixSpecificScopeIssues.js.map | 10 + .../src/LoadoutChanges/GlobalValues.js | 143 ++ .../src/LoadoutChanges/GlobalValues.js.map | 10 + .../src/LoadoutChanges/InternalBlacklist.js | 270 +++ .../LoadoutChanges/InternalBlacklist.js.map | 10 + .../src/LoadoutChanges/LocationUpdater.js | 43 + .../src/LoadoutChanges/LocationUpdater.js.map | 10 + .../src/LoadoutChanges/LootChanges.js | 137 ++ .../src/LoadoutChanges/LootChanges.js.map | 10 + .../src/LoadoutChanges/OnGameStartUtils.js | 262 +++ .../LoadoutChanges/OnGameStartUtils.js.map | 10 + .../src/LoadoutChanges/ProgressionChanges.js | 470 +++++ .../LoadoutChanges/ProgressionChanges.js.map | 10 + .../LoadoutChanges/SetupLocationGlobals.js | 22 + .../SetupLocationGlobals.js.map | 10 + .../src/LoadoutChanges/utils.js | 1706 +++++++++++++++++ .../src/LoadoutChanges/utils.js.map | 10 + .../src/NonPmcBotChanges/NonPmcUtils.js | 603 ++++++ .../src/NonPmcBotChanges/NonPmcUtils.js.map | 10 + .../NonPmcBotChanges/SetupNonPMCBotChanges.js | 98 + .../SetupNonPMCBotChanges.js.map | 10 + .../AlgorithmicLevelProgression/src/mod.js | 66 + .../src/mod.js.map | 10 + .../DanW-LateToTheParty/config/config.json | 2 +- .../DanW-LateToTheParty/db/lootRanking.json | 1 + .../DanW-LateToTheParty/src/CommonUtils.js | 116 ++ .../src/CommonUtils.js.map | 10 + .../src/LootRankingGenerator.js | 422 ++++ .../src/LootRankingGenerator.js.map | 10 + user/mods/DanW-LateToTheParty/src/mod.js | 211 ++ user/mods/DanW-LateToTheParty/src/mod.js.map | 10 + .../DanW-SPTQuestingBots/config/config.json | 2 +- .../src/BotLocationUtil.js | 181 ++ .../src/BotLocationUtil.js.map | 10 + .../DanW-SPTQuestingBots/src/CommonUtils.js | 48 + .../src/CommonUtils.js.map | 10 + .../src/PMCConversionUtil.js | 48 + .../src/PMCConversionUtil.js.map | 10 + user/mods/DanW-SPTQuestingBots/src/mod.js | 293 +++ user/mods/DanW-SPTQuestingBots/src/mod.js.map | 10 + .../DewardianDev-MOAR/src/GlobalValues.js | 15 + .../DewardianDev-MOAR/src/GlobalValues.js.map | 10 + .../DewardianDev-MOAR/src/Routes/routes.js | 130 ++ .../src/Routes/routes.js.map | 10 + .../src/SpawnZoneChanges/index.js | 16 + .../src/SpawnZoneChanges/index.js.map | 10 + .../src/SpawnZoneChanges/setupSpawn.js | 150 ++ .../src/SpawnZoneChanges/setupSpawn.js.map | 10 + .../src/SpawnZoneChanges/updateUtils.js | 79 + .../src/SpawnZoneChanges/updateUtils.js.map | 10 + .../src/Spawning/Spawning.js | 119 ++ .../src/Spawning/Spawning.js.map | 10 + .../src/Spawning/buildBossWaves.js | 230 +++ .../src/Spawning/buildBossWaves.js.map | 10 + .../src/Spawning/buildPmcs.js | 73 + .../src/Spawning/buildPmcs.js.map | 10 + .../src/Spawning/buildScavMarksmanWaves.js | 135 ++ .../Spawning/buildScavMarksmanWaves.js.map | 10 + .../src/Spawning/buildZombieWaves.js | 45 + .../src/Spawning/buildZombieWaves.js.map | 10 + .../src/Spawning/constants.js | 230 +++ .../src/Spawning/constants.js.map | 10 + .../src/Spawning/marksmanChanges.js | 29 + .../src/Spawning/marksmanChanges.js.map | 10 + .../src/Spawning/spawnZoneUtils.js | 282 +++ .../src/Spawning/spawnZoneUtils.js.map | 10 + .../src/Spawning/updateSpawnLocations.js | 52 + .../src/Spawning/updateSpawnLocations.js.map | 10 + .../DewardianDev-MOAR/src/Spawning/utils.js | 397 ++++ .../src/Spawning/utils.js.map | 10 + .../src/Tests/checkPresets.js | 26 + .../src/Tests/checkPresets.js.map | 10 + .../DewardianDev-MOAR/src/Zombies/Zombies.js | 136 ++ .../src/Zombies/Zombies.js.map | 10 + user/mods/DewardianDev-MOAR/src/mod.js | 36 + user/mods/DewardianDev-MOAR/src/mod.js.map | 10 + user/mods/DewardianDev-MOAR/src/utils.js | 52 + user/mods/DewardianDev-MOAR/src/utils.js.map | 10 + .../src/enums.js | 127 ++ .../src/enums.js.map | 10 + .../Skwizzy-LootingBots-ServerMod/src/mod.js | 76 + .../src/mod.js.map | 10 + user/mods/zSolarint-SAIN-ServerMod/src/mod.js | 66 + .../zSolarint-SAIN-ServerMod/src/mod.js.map | 10 + 91 files changed, 8393 insertions(+), 2 deletions(-) create mode 100644 user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/Constants/Tier5.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LevelChanges/BotLevelChanges.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ClothingChanges.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/FixSpecificScopeIssues.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/GlobalValues.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/InternalBlacklist.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LocationUpdater.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/LootChanges.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/OnGameStartUtils.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/ProgressionChanges.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/SetupLocationGlobals.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/LoadoutChanges/utils.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/NonPmcUtils.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/NonPmcBotChanges/SetupNonPMCBotChanges.js.map create mode 100644 user/mods/AlgorithmicLevelProgression/src/mod.js create mode 100644 user/mods/AlgorithmicLevelProgression/src/mod.js.map create mode 100644 user/mods/DanW-LateToTheParty/db/lootRanking.json create mode 100644 user/mods/DanW-LateToTheParty/src/CommonUtils.js create mode 100644 user/mods/DanW-LateToTheParty/src/CommonUtils.js.map create mode 100644 user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js create mode 100644 user/mods/DanW-LateToTheParty/src/LootRankingGenerator.js.map create mode 100644 user/mods/DanW-LateToTheParty/src/mod.js create mode 100644 user/mods/DanW-LateToTheParty/src/mod.js.map create mode 100644 user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js create mode 100644 user/mods/DanW-SPTQuestingBots/src/BotLocationUtil.js.map create mode 100644 user/mods/DanW-SPTQuestingBots/src/CommonUtils.js create mode 100644 user/mods/DanW-SPTQuestingBots/src/CommonUtils.js.map create mode 100644 user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js create mode 100644 user/mods/DanW-SPTQuestingBots/src/PMCConversionUtil.js.map create mode 100644 user/mods/DanW-SPTQuestingBots/src/mod.js create mode 100644 user/mods/DanW-SPTQuestingBots/src/mod.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/GlobalValues.js create mode 100644 user/mods/DewardianDev-MOAR/src/GlobalValues.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Routes/routes.js create mode 100644 user/mods/DewardianDev-MOAR/src/Routes/routes.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js create mode 100644 user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/index.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js create mode 100644 user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/setupSpawn.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js create mode 100644 user/mods/DewardianDev-MOAR/src/SpawnZoneChanges/updateUtils.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/Spawning.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildBossWaves.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildPmcs.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildScavMarksmanWaves.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/buildZombieWaves.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/constants.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/constants.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/marksmanChanges.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/spawnZoneUtils.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/updateSpawnLocations.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/utils.js create mode 100644 user/mods/DewardianDev-MOAR/src/Spawning/utils.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js create mode 100644 user/mods/DewardianDev-MOAR/src/Tests/checkPresets.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js create mode 100644 user/mods/DewardianDev-MOAR/src/Zombies/Zombies.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/mod.js create mode 100644 user/mods/DewardianDev-MOAR/src/mod.js.map create mode 100644 user/mods/DewardianDev-MOAR/src/utils.js create mode 100644 user/mods/DewardianDev-MOAR/src/utils.js.map create mode 100644 user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js create mode 100644 user/mods/Skwizzy-LootingBots-ServerMod/src/enums.js.map create mode 100644 user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js create mode 100644 user/mods/Skwizzy-LootingBots-ServerMod/src/mod.js.map create mode 100644 user/mods/zSolarint-SAIN-ServerMod/src/mod.js create mode 100644 user/mods/zSolarint-SAIN-ServerMod/src/mod.js.map 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": ";;;;;;AAAA,mCAA2D;AAG3D,2EAA8C;AAC9C,2FAA8D;AAM9D,kFAA+E;AAE/E,yDAK4B;AAE5B,iEAIyC;AAEzC,MAAa,YAAY;IAChB,MAAM,CAAC,MAAM,CAAU;IACvB,MAAM,CAAC,aAAa,CAAgB;IACpC,MAAM,CAAC,qBAAqB,GAG/B,EAAE,CAAC;IACA,MAAM,CAAC,MAAM,CAAkB;IAC/B,MAAM,CAAC,gBAAgB,CAA2B;IAClD,MAAM,CAAC,MAAM,GAAG,qBAAM,CAAC;IACvB,MAAM,CAAC,cAAc,GAAG,6BAAc,CAAC;IACvC,MAAM,CAAC,iBAAiB,CAAmB;IAC3C,MAAM,CAAC,YAAY,CAAe;IAElC,MAAM,CAAC,eAAe,CAC3B,YAAoB,EACpB,QAA+C;QAE/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,4BAA4B,GAChC,6BAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,oBAAoB;aACpD,kBAAkB,CAAC;QAExB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,eAAe,GAAG,IAAA,iBAAS,EAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,CACzC,CAAC;YAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,SAAS,CACrE,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAC/B,YAAY,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,CAC7C,CAAC;YAEF,MAAM,iBAAiB,GACrB,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAEzD,IAAI,CAAC,iBAAiB;gBAAE,OAAO;YAC/B,IAAI,iBAAiB,EAAE,IAAI,EAAE,CAAC;gBAC5B,KAAK,MAAM,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC;oBAC7C,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;wBAC9B,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;wBAChC,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;qBACnC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,iBAAiB,EAAE,SAAS,EAAE,CAAC;gBACjC,KAAK,MAAM,aAAa,IAAI,iBAAiB,CAAC,SAAS,EAAE,CAAC;oBACxD,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG;wBACzC,GAAG,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC;wBAC3C,GAAG,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC;qBAC9C,CAAC;oBACF,IAAI,CAAC;wBACH,4CAA4C;wBAC5C,IACE,aAAa,KAAK,oBAAoB;4BACtC,OAAO,KAAK,UAAU,EACtB,CAAC;4BACD,kEAAkE;4BAClE,MAAM,YAAY,GAA2B,IAAA,iBAAS,EACpD,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CACzC,CAAC;4BAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BACnD,gBAAgB,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gCACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;gCAC1C,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;gCACxC,IAAI,MAAM,IAAI,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC;oCACnD,MAAM,UAAU,GACd,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oCAErD,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;wCAChD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;oCAElD,+BAA+B;oCAC/B,iBAAiB;oCACjB,kBAAkB;oCAClB,gBAAgB;oCAChB,eAAe;oCACf,8BAA8B;oCAC9B,cAAc;oCACd,0DAA0D;oCAC1D,cAAc;oCACd,4BAA4B;oCAC5B,OAAO;oCACP,IAAI;gCACN,CAAC;qCAAM,CAAC;oCACN,OAAO,CAAC,GAAG,CACT,qEAAqE,OAAO,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,MAAM,QAAQ,GAAG,CAC9H,CAAC;gCACJ,CAAC;4BACH,CAAC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,uDAAuD,OAAO,MAAM,aAAa,EAAE,CAAC;oBACtF,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,sBAAsB;oBACtB,IAAA,iCAAmB,EAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC;gBACvE,CAAC;gBAED,IAAA,gCAAkB,EAChB,OAAO,EACP,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAC5B,iBAAiB,CAClB,CAAC;gBAEF,+BAA+B;gBAC/B,wEAAwE;gBACxE,IAAI;YACN,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,eAAe,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAChC,QAA+C,EAC/C,KAAa;QAEb,IAAI,QAAQ,KAAK,cAAc;YAAE,KAAK,GAAG,EAAE,CAAC;QAC5C,IAAI,QAAQ,KAAK,gBAAgB;YAAE,KAAK,GAAG,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,YAAY;YAAE,KAAK,GAAG,EAAE,CAAC;QAE1C,IAAI,CAAC,MAAM,CAAC,KAAK;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,2DAA2D,QAAQ,EAAE,CACtE,CAAC;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAa,yBAAW,CAAC,GAAG,CAAC,CAAC;QAE3E,MAAM,aAAa,GACjB,6BAAc,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;QAE7D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAE1C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,+DAA+D,QAAQ,kBAAkB,CAC1F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CACtB,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CACtB,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAqB,IAAA,iBAAS,EAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAEzC,qBAAM,CAAC,KAAK;YACV,OAAO,CAAC,GAAG,CACT,0BAA0B,EAC1B,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EACzB,KAAK,EACL,yBAAyB,CAC1B,CAAC;QAEJ,MAAM,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;QAEnD,IAAA,+CAA4B,EAC1B,OAAO,EACP,IAAI,CAAC,iBAAiB,EACtB,aAAa,EACb,QAAQ,CACT,CAAC;QAEF,MAAM,oBAAoB,GAA6B,IAAA,iBAAS,EAC9D,IAAI,CAAC,gBAAgB,CACtB,CAAC;QAEF,IAAA,+BAAY,EACV,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EACxC,OAAO,EACP,KAAK,EACL,QAAQ,CACT,CAAC;QAEF,IAAA,+BAAY,EACV,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EACxC,OAAO,EACP,KAAK,EACL,QAAQ,CACT,CAAC;QAEF,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;YACtC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAE3C,MAAM,YAAY,GAAG,cAAc,CAAC,8BAA8B,CAAC;QACnE,IAAA,kDAA+B,EAC7B,QAAQ,EACR,KAAK,EACL,IAAI,CAAC,iBAAiB,EACtB,YAAY,CACb,CAAC;QAEF,uEAAuE;QACvE,kFAAkF;QAClF,qDAAqD;QACrD,+DAA+D;QAC/D,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,cAAc,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC;IAChD,CAAC;;AAtNH,oCAuNC" +} \ 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": "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" +} \ 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": "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" +} \ 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": ";;;AACA,+DAAyD;AAEzD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AACvC,+BAA+B;AACxB,MAAM,cAAc,GAAG,CAC5B,QAAgB,EAChB,QAA4B,EAC5B,cAAsB,EACtB,EAAE;IACF,qBAAqB;IACrB,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnB,yBAAyB;QAEzB,iDAAiD;QACjD,EAAE,CAAC,SAAS,CACV,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,MAAM,EACN,CAAC,UAAU,EAAE,EAAE;YACb,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAxCW,QAAA,cAAc,kBAwCzB;AAEK,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,KAAW,EACX,IAA0C,EAC1C,EAAE;IACF,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACxB,IAAA,sBAAc,EACZ,GAAG,gBAAgB,8CAA8C,IAAI,aAAa,EAClF,CAAC,QAAQ,EAAE,EAAE;QACX,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QACxB,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,EACD,sCAAsC,GAAG,GAAG,CAC7C,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB;AAEK,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,KAAW,EACX,IAA0C,EAC1C,EAAE;IACF,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACxB,IAAA,sBAAc,EACZ,GAAG,gBAAgB,8CAA8C,IAAI,aAAa,EAClF,CAAC,QAAQ,EAAE,EAAE;QACX,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;YACnC,IAAI,OAAO,GAAG,SAAS,CAAC;YACxB,IAAI,QAAQ,GAAG,QAAQ,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC3C,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3C,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;oBACpB,OAAO,GAAG,KAAK,CAAC;oBAChB,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,CAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC,EACD,0CAA0C,CAC3C,CAAC;AACJ,CAAC,CAAC;AA9BW,QAAA,cAAc,kBA8BzB;AAEK,MAAM,kBAAkB,GAAG,CAChC,MAA8B,EAC9B,UAAkB,EAClB,EAAE,CACF,IAAA,sBAAc,EACZ,GAAG,gBAAgB,8CAA8C,UAAU,OAAO,EAClF,CAAC,QAAQ,EAAE,EAAE;IACX,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,EACD,iCAAiC,CAClC,CAAC;AAVS,QAAA,kBAAkB,sBAU3B" +} \ 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": "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" +} \ 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