From 5e496af8048a2e41562f1321cbe9d142d3048ba5 Mon Sep 17 00:00:00 2001 From: Dev Date: Thu, 22 Feb 2024 16:34:15 +0000 Subject: [PATCH] Move itemLimit code to be across all bot containers instead of per Remove a tpl from loot pool once an item limit has been reached - prevents it being picked over and over Remove loot data from pmc jsons as its generated dynamically, adding data into jsons now acts as an override for the dynamic generation Reduced rouble max count to 1 for PMCs Split PMC loot caches by side (usec/bear) --- project/assets/configs/bot.json | 2 +- project/assets/database/bots/types/bear.json | 537 +------------ project/assets/database/bots/types/usec.json | 722 +++--------------- project/src/generators/BotLootGenerator.ts | 109 ++- project/src/generators/PMCLootGenerator.ts | 59 +- .../spt/bots/IItemSpawnLimitSettings.ts | 5 + project/src/services/BotLootCacheService.ts | 27 +- 7 files changed, 200 insertions(+), 1261 deletions(-) create mode 100644 project/src/models/spt/bots/IItemSpawnLimitSettings.ts diff --git a/project/assets/configs/bot.json b/project/assets/configs/bot.json index 84e4a841..ecc8f87b 100644 --- a/project/assets/configs/bot.json +++ b/project/assets/configs/bot.json @@ -363,7 +363,7 @@ "5a341c4686f77469e155819e": 1, "55818b164bdc2ddc698b456c": 2, "5448bc234bdc2d3c308b4569": 2, - "543be5dd4bdc2deb348b4569": 2, + "543be5dd4bdc2deb348b4569": 1, "543be5cb4bdc2deb348b4568": 2, "5485a8684bdc2da71d8b4567": 2, "5d650c3e815116009f6201d2": 2, diff --git a/project/assets/database/bots/types/bear.json b/project/assets/database/bots/types/bear.json index 50252383..38fdad08 100644 --- a/project/assets/database/bots/types/bear.json +++ b/project/assets/database/bots/types/bear.json @@ -3164,398 +3164,8 @@ } }, "items": { - "Backpack": { - "5448ba0b4bdc2d02308b456c": 1, - "5448c12b4bdc2d02308b456f": 1, - "5448c1d04bdc2dff2f8b4569": 1, - "5448fee04bdc2dbc018b4567": 1, - "5448ff904bdc2d6f028b456e": 1, - "544fb25a4bdc2dfb738b4567": 1, - "544fb3364bdc2d34748b456a": 1, - "544fb37f4bdc2dee738b4567": 1, - "544fb3f34bdc2d03748b456a": 1, - "544fb45d4bdc2dee738b4568": 1, - "544fb62a4bdc2dfb738b4568": 1, - "544fb6cc4bdc2d34748b456e": 1, - "55d4837c4bdc2d1d4e8b456c": 1, - "5645bcc04bdc2d363b8b4572": 1, - "5649af884bdc2d1b2b8b4589": 1, - "5672c92d4bdc2d180f8b4567": 1, - "5672cb124bdc2d1a0f8b4568": 1, - "5672cb304bdc2dc2088b456a": 1, - "5673de654bdc2d180f8b456d": 1, - "56742c284bdc2d98058b456d": 1, - "56742c324bdc2d150f8b456d": 1, - "571a282c2459771fb2755a69": 1, - "571a28e524597720b4066567": 1, - "571a29dc2459771fb2755a6a": 1, - "5733279d245977289b77ec24": 1, - "573474f924597738002c6174": 1, - "5734758f24597738025ee253": 1, - "573476d324597737da2adc13": 1, - "573476f124597737e04bf328": 1, - "5734770f24597738025ee254": 1, - "5734773724597737fd047c14": 1, - "5734779624597737e04bf329": 1, - "573477e124597737dd42e191": 1, - "5734781f24597737e04bf32a": 1, - "573478bc24597738002c6175": 1, - "57347b8b24597737dd42e192": 1, - "57347c1124597737fb1379e3": 1, - "57347c2e24597744902c94a1": 1, - "57347c5b245977448d35f6e1": 1, - "57347c77245977448d35f6e2": 1, - "57347c93245977448d35f6e3": 1, - "57347ca924597744596b4e71": 1, - "57347cd0245977445a2d6ff1": 1, - "57347d3d245977448f7b7f61": 1, - "57347d5f245977448b40fa81": 1, - "57347d692459774491567cf1": 1, - "57347d7224597744596b4e72": 1, - "57347d8724597744596b4e76": 1, - "57347d90245977448f7b7f65": 1, - "57347d9c245977448b40fa85": 1, - "57347da92459774491567cf5": 1, - "57505f6224597709a92585a9": 1, - "575062b524597720a31c09a1": 1, - "57513f07245977207e26a311": 1, - "57513f9324597720a7128161": 1, - "57513fcc24597720a31c09a6": 1, - "5751435d24597720a27126d1": 1, - "57514643245977207f2c2d09": 1, - "575146b724597720a27126d5": 1, - "5751487e245977207e26a315": 1, - "5751a25924597722c463c472": 1, - "5755356824597772cb798962": 1, - "5755383e24597772cb798966": 1, - "57616a9e2459773c7a400234": 1, - "576a7c512459771e796e0e17": 1, - "577e1c9d2459773cd707c525": 1, - "5780cda02459777b272ede61": 1, - "5780cf692459777de4559321": 1, - "5780cf722459777a5108b9a1": 1, - "5780cf7f2459777de4559322": 1, - "5780cf942459777df90dcb72": 1, - "5780cf9e2459777df90dcb73": 1, - "5780cfa52459777dfb276eb1": 1, - "5780d0532459777a5108b9a2": 1, - "5780d0652459777df90dcb74": 1, - "5780d07a2459777de4559324": 1, - "57a349b2245977762b199ec7": 1, - "57d14e1724597714010c3f4b": 1, - "588226e62459776e3e094af7": 1, - "590a358486f77429692b2790": 1, - "590a373286f774287540368b": 1, - "590a386e86f77429692b27ab": 1, - "590a391c86f774385a33c404": 1, - "590a3b0486f7743954552bdb": 1, - "590a3c0a86f774385a33c450": 1, - "590a3cd386f77436f20848cb": 1, - "590a3efd86f77437d351a25b": 1, - "590c2b4386f77425357b6123": 1, - "590c2c9c86f774245b1f03f2": 1, - "590c2d8786f774245b1f03f3": 1, - "590c2e1186f77425357b6124": 1, - "590c311186f77424d1667482": 1, - "590c31c586f774245e3141b2": 1, - "590c346786f77423e50ed342": 1, - "590c35a486f774273531c822": 1, - "590c392f86f77444754deb29": 1, - "590c595c86f7747884343ad7": 1, - "590c5a7286f7747884343aea": 1, - "590c5bbd86f774785762df04": 1, - "590c5c9f86f77477c91c36e7": 1, - "590c5d4b86f774784e1b9c45": 1, - "590c5f0d86f77413997acfab": 1, - "590c621186f774138d11ea29": 1, - "590c639286f774151567fa95": 1, - "590c651286f7741e566b6461": 1, - "590c661e86f7741e566b646a": 1, - "590c678286f77426c9660122": 1, - "590de71386f774347051a052": 1, - "590de7e986f7741b096e5f32": 1, - "59136e1e86f774432f15d133": 1, - "59136f6f86f774447a1ed173": 1, - "59148c8a86f774197930e983": 1, - "591afe0186f77431bd616a11": 1, - "5938504186f7740991483f30": 1, - "593858c486f774253a24cb52": 1, - "5938603e86f77435642354f4": 1, - "59387a4986f77401cc236e62": 1, - "593962ca86f774068014d9af": 1, - "59d625f086f774661516605d": 1, - "59e3577886f774176a362503": 1, - "59e35abd86f7741778269d82": 1, - "59e35cbb86f7741778269d83": 1, - "59e35de086f7741778269d84": 1, - "59e35ef086f7741777737012": 1, - "59e3606886f77417674759a5": 1, - "59e361e886f774176c10a2a5": 1, - "59e3639286f7741777737013": 1, - "59e3658a86f7741776641ac4": 1, - "59e366c186f7741778269d85": 1, - "59e36c6f86f774176c10a2a7": 1, - "59e7635f86f7742cbf2c1095": 1, - "59e7708286f7742cbd762753": 1, - "59e7715586f7742ee5789605": 1, - "59e898ee86f77427614bd225": 1, - "59faf7ca86f7740dbe19f6c2": 1, - "59faf98186f774067b6be103": 1, - "59fafb5d86f774067a6f2084": 1, - "5a0dc95c86f77452440fc675": 1, - "5a0ea79b86f7741d4a35298e": 1, - "5a0eb6ac86f7743124037a28": 1, - "5a0ee30786f774023b6ee08f": 1, - "5a0ee34586f774023b6ee092": 1, - "5a0eee1486f77402aa773226": 1, - "5a13ef0686f7746e5a411744": 1, - "5a145d4786f7744cbb6f4a12": 1, - "5a145d7b86f7744cbb6f4a13": 1, - "5a38ee51c4a282000c5a955c": 1, - "5a7893c1c585673f2b5c374d": 1, - "5a7c4850e899ef00150be885": 1, - "5a9fbb74a2750c0032157181": 1, - "5a9fbb84a2750c00137fa685": 1, - "5aa2b9ede5b5b000137b758b": 1, - "5aaa5e60e5b5b000140293d6": 1, - "5ab8f4ff86f77431c60d91ba": 1, - "5ab8f85d86f7745cd93a1cf5": 1, - "5ad5d64486f774079b080af8": 1, - "5ad5db3786f7743568421cce": 1, - "5af0454c86f7746bf20992e8": 1, - "5af0484c86f7740f02001f7f": 1, - "5af04b6486f774195a3ebb49": 1, - "5af0534a86f7743b6f354284": 1, - "5af0561e86f7745f5f3ad6ac": 1, - "5b4335ba86f7744d2837a264": 1, - "5b43575a86f77424f443fe62": 1, - "5b7bef1e5acfc43d82528402": 1, - "5b7d679f5acfc4001a5c4024": 1, - "5b86a0e586f7745b600ccb23": 1, - "5bbdb811d4351e45020113c7": 1, - "5bc9b355d4351e6d1509862a": 1, - "5bc9bc53d4351e00367fbcee": 1, - "5c052e6986f7746b207bc3c9": 1, - "5c052f6886f7746b1e3db148": 1, - "5c052fb986f7746b2101e909": 1, - "5c05300686f7746dce784e5d": 1, - "5c05308086f7746b2101e90b": 1, - "5c0530ee86f774697952d952": 1, - "5c06779c86f77426e00dd782": 1, - "5c06782b86f77426df5407d2": 1, - "5c1265fc86f7743f896a21c2": 1, - "5c12688486f77426843c7d32": 1, - "5c13cd2486f774072c757944": 1, - "5c13cef886f774072e618e82": 1, - "5c1d0c5f86f7744bb2683cf0": 1, - "5c1d0d6d86f7744bb2683e1f": 1, - "5c1d0dc586f7744baf2e7b79": 1, - "5c1e495a86f7743109743dfb": 1, - "5c471c442e221602b542a6f8": 1, - "5c5db5fc2e2216000f1b2842": 1, - "5c78f2792e221600106f4683": 1, - "5c87ca002e221600114cb150": 1, - "5c94bbff86f7747ee735c08f": 1, - "5c9a26332e2216001219ea70": 1, - "5cf508bfd7f00c056e24104e": 1, - "5d02778e86f774203e7dedbe": 1, - "5d02797c86f774203f38e30a": 1, - "5d0375ff86f774186372f685": 1, - "5d03775b86f774203e7e0c4b": 1, - "5d0378d486f77420421a5ff4": 1, - "5d03794386f77420415576f5": 1, - "5d0379a886f77420407aa271": 1, - "5d1340bdd7ad1a0e8d245aab": 1, - "5d15cf3bd7ad1a67e71518b2": 1, - "5d1b2fa286f77425227d1674": 1, - "5d1b2ffd86f77425243e8d17": 1, - "5d1b304286f774253763a528": 1, - "5d1b309586f77425227d1676": 1, - "5d1b313086f77425227d1678": 1, - "5d1b317c86f7742523398392": 1, - "5d1b31ce86f7742523398394": 1, - "5d1b327086f7742525194449": 1, - "5d1b32c186f774252167a530": 1, - "5d1b36a186f7742523398433": 1, - "5d1b371186f774253763a656": 1, - "5d1b376e86f774252519444e": 1, - "5d1b392c86f77425243e98fe": 1, - "5d1b39a386f774252339976f": 1, - "5d1b3a5d86f774252167ba22": 1, - "5d1b3f2d86f774253763b735": 1, - "5d1c774f86f7746d6620f8db": 1, - "5d1c819a86f774771b0acd6c": 1, - "5d235a5986f77443f6329bc6": 1, - "5d2c76ed48f03532f2136169": 1, - "5d40412b86f7743cb332ac3a": 1, - "5d40419286f774318526545f": 1, - "5d4041f086f7743cac3f22a7": 1, - "5d5e7d28a4b936645d161203": 1, - "5d63d33b86f7746ea9275524": 1, - "5d80c62a86f7744036212b3f": 1, - "5d80c6fc86f774403a401e3c": 1, - "5d80cb3886f77440556dbf09": 1, - "5d95d6be86f77424444eb3a7": 1, - "5d95d6fa86f77424484aa5e9": 1, - "5df8e4080b92095fd441e594": 1, - "5e2aedd986f7746d404f3aa4": 1, - "5e2aef7986f7746d3f3c33f5": 1, - "5e2af00086f7746d3f3c33f7": 1, - "5e2af29386f7746d4159f077": 1, - "5e2af2bc86f7746d3f3c33fc": 1, - "5e2af41e86f774755a234b67": 1, - "5e2af47786f7746d404f3aaa": 1, - "5e2af4a786f7746d3f3c3400": 1, - "5e2af4d286f7746d4159f07a": 1, - "5e340dcdcb6d5863cc5e5efb": 1, - "5e54f6af86f7742199090bf3": 1, - "5e831507ea0a7c419c2f9bd9": 1, - "5e8488fa988a8701445df1e4": 1, - "5ed515c8d380ab312177c0fa": 1, - "5ed515f6915ec335206e4152": 1, - "5ed51652f6c34d2cc26336a1": 1, - "5ede7b0c6d23e5473e6e8c66": 1, - "5efde6b4f5448336730dbd61": 1, - "5eff09cd30a7dc22fd1ddfed": 1, - "60098af40accd37ef2175f27": 1, - "60391a8b3364dc22b04d0ce5": 1, - "60391afc25aff57af81f7085": 1, - "60391b0fb847c71012789415": 1, - "60b0f93284c20f0feb453da7": 1, - "619cbf476b8a1b37a54eebf8": 1, - "619cbfccbedcde2f5b3f7bdd": 1, - "619cbfeb6b8a1b37a54eebfa": 1, - "619cc01e0a7c3a1a2731940c": 1, - "61bf7b6302b3924be92fa8c3": 1, - "61bf7c024770ee6f9c6b8b53": 1, - "61bf83814088ec1a363d7097": 1, - "62a08f4c4f842e1bd12d9d62": 1, - "62a0a043cf4a99369e2624a5": 1, - "62a0a098de7ac8199358053b": 1 - }, - "Pockets": { - "544fb3f34bdc2d03748b456a": 1, - "5648b1504bdc2d9d488b4584": 1, - "5672c92d4bdc2d180f8b4567": 1, - "56742c2e4bdc2d95058b456d": 1, - "573474f924597738002c6174": 1, - "5734773724597737fd047c14": 1, - "5734779624597737e04bf329": 1, - "573477e124597737dd42e191": 1, - "5734795124597738002c6176": 1, - "57347baf24597738002c6178": 1, - "57347c2e24597744902c94a1": 1, - "57347cd0245977445a2d6ff1": 1, - "5751496424597720a27126da": 1, - "5751a25924597722c463c472": 1, - "576a5ed62459771e9c2096cb": 1, - "576a7c512459771e796e0e17": 1, - "5783c43d2459774bbe137486": 1, - "57c44fa82459772d2d75e415": 1, - "57c55f112459772d28133310": 1, - "57cff947245977638e6f2a19": 1, - "57ee59b42459771c7b045da5": 1, - "588226d124597767ad33f787": 1, - "588226e62459776e3e094af7": 1, - "588226ef24597767af46e39c": 1, - "5888988e24597752fe43a6fa": 1, - "58a56f8d86f774651579314c": 1, - "58d39d3d86f77445bb794ae7": 1, - "58d3db5386f77426186285a0": 1, - "5909e99886f7740c983b9984": 1, - "590a358486f77429692b2790": 1, - "590a373286f774287540368b": 1, - "590a391c86f774385a33c404": 1, - "590a3b0486f7743954552bdb": 1, - "590a3c0a86f774385a33c450": 1, - "590a3cd386f77436f20848cb": 1, - "590c2b4386f77425357b6123": 1, - "590c2c9c86f774245b1f03f2": 1, - "590c2d8786f774245b1f03f3": 1, - "590c311186f77424d1667482": 1, - "590c5bbd86f774785762df04": 1, - "5913611c86f77479e0084092": 1, - "5913651986f774432f15d132": 1, - "5914578086f774123569ffa4": 1, - "5938144586f77473c2087145": 1, - "5938994586f774523a425196": 1, - "59db3acc86f7742a2c4ab912": 1, - "59e0bdb186f774156f04ce82": 1, - "59e3577886f774176a362503": 1, - "59e5d83b86f7745aed03d262": 1, - "59f99a7d86f7745b134aa97b": 1, - "59faff1d86f7746c51718c9c": 1, - "59fc48e086f77463b1118392": 1, - "5a0c27731526d80618476ac4": 1, - "5a0ee34586f774023b6ee092": 1, - "5a0ee72c86f77436955d3435": 1, - "5a0eee1486f77402aa773226": 1, - "5a0f075686f7745bcc42ee12": 1, - "5a144dfd86f77445cb5a0982": 1, - "5a145d7b86f7744cbb6f4a13": 1, - "5a145ebb86f77458f1796f05": 1, - "5a38ed75c4a28232996e40c6": 1, - "5a6b5ed88dc32e000c52ec86": 1, - "5a6b60158dc32e000a31138b": 1, - "5a718b548dc32e000d46d262": 1, - "5a9d56c8a2750c0032157146": 1, - "5a9d6d00a2750c5c985b5305": 1, - "5ad5cfbd86f7742c825d6104": 1, - "5ad5d7d286f77450166e0a89": 1, - "5ad7242b86f7740a6a3abd43": 1, - "5af04b6486f774195a3ebb49": 1, - "5af0561e86f7745f5f3ad6ac": 1, - "5b07db875acfc40dc528a5f6": 1, - "5b4335ba86f7744d2837a264": 1, - "5b7bef1e5acfc43d82528402": 1, - "5b7d679f5acfc4001a5c4024": 1, - "5bb20e18d4351e00320205d5": 1, - "5bc9c29cd4351e003562b8a3": 1, - "5bc9c377d4351e3bac12251b": 1, - "5c052fb986f7746b2101e909": 1, - "5c0e531d86f7747fa23f4d42": 1, - "5c0e533786f7747fa23f4d47": 1, - "5c0e534186f7747fa1419867": 1, - "5c13cef886f774072e618e82": 1, - "5c1bc4812e22164bef5cfde7": 1, - "5c1bc5fb2e221602b1779b32": 1, - "5c1d0c5f86f7744bb2683cf0": 1, - "5c1d0d6d86f7744bb2683e1f": 1, - "5c471c442e221602b542a6f8": 1, - "5c503ad32e2216398b5aada2": 1, - "5c6161fb2e221600113fbde5": 1, - "5c61627a2e22160012542c55": 1, - "5c7fc87d2e221644f31c0298": 1, - "5c87ca002e221600114cb150": 1, - "5c94bbff86f7747ee735c08f": 1, - "5cf508bfd7f00c056e24104e": 1, - "5d0376a486f7747d8050965c": 1, - "5d0377ce86f774186372f689": 1, - "5d08d21286f774736e7c94c3": 1, - "5d1b313086f77425227d1678": 1, - "5d1b31ce86f7742523398394": 1, - "5d1b39a386f774252339976f": 1, - "5d1b3a5d86f774252167ba22": 1, - "5d1c774f86f7746d6620f8db": 1, - "5d235b4d86f7742e017bc88a": 1, - "5d4aaa54a4b9365392071170": 1, - "5d4aaa73a4b9365392071175": 1, - "5d80c60f86f77440373c4ece": 1, - "5d80c6c586f77440351beef1": 1, - "5d80cd1a86f77402aa362f42": 1, - "5d8e0e0e86f774321140eb56": 1, - "5de8ea8ffd6b4e6e2276dc35": 1, - "5e2aedd986f7746d404f3aa4": 1, - "5e2af22086f7746d3f3c33fa": 1, - "5e2af29386f7746d4159f077": 1, - "5e2af37686f774755a234b65": 1, - "5e32f56fcb6d5863cc5e5ee4": 1, - "5e42c71586f7747f245e1343": 1, - "5e42c81886f7742a01529f57": 1, - "5e42c83786f7742a021fdf3c": 1, - "5e569a0156edd02abe09f27d": 1, - "5e831507ea0a7c419c2f9bd9": 1 - }, + "Backpack": {}, + "Pockets": {}, "SecuredContainer": { "54527a984bdc2d4e668b4567": 1, "54527ac44bdc2d36668b4567": 1, @@ -3648,148 +3258,7 @@ "601aa3d2b2bcb34913271e6d": 1 }, "SpecialLoot": {}, - "TacticalVest": { - "5448be9a4bdc2dfd2f8b456a": 1, - "5448c1d04bdc2dff2f8b4569": 1, - "544a37c44bdc2d25388b4567": 1, - "544fb25a4bdc2dfb738b4567": 1, - "544fb37f4bdc2dee738b4567": 1, - "54527a984bdc2d4e668b4567": 1, - "54527ac44bdc2d36668b4567": 1, - "559ba5b34bdc2d1f1a8b4582": 1, - "55d480c04bdc2d1d4e8b456a": 1, - "55d482194bdc2d1d4e8b456b": 1, - "55d4837c4bdc2d1d4e8b456c": 1, - "55d4887d4bdc2d962f8b4570": 1, - "560d61e84bdc2da74d8b4571": 1, - "5656d7c34bdc2d9d198b4587": 1, - "56d59d3ad2720bdb418b4577": 1, - "56dfef82d2720bbd668b4567": 1, - "56dff026d2720bb8668b4567": 1, - "56dff061d2720bb5668b4567": 1, - "56dff216d2720bbd668b4568": 1, - "56dff2ced2720bb4668b4567": 1, - "56dff4ecd2720b5f5a8b4568": 1, - "572b7fa524597762b747ce82": 1, - "5734758f24597738025ee253": 1, - "5751a25924597722c463c472": 1, - "5755383e24597772cb798966": 1, - "57616a9e2459773c7a400234": 1, - "576a5ed62459771e9c2096cb": 1, - "57838f0b2459774a256959b2": 1, - "57838f9f2459774a150289a0": 1, - "57a0e5022459774d1673f889": 1, - "57d1519e24597714373db79d": 1, - "57e26fc7245977162a14b800": 1, - "587df3a12459772c28142567": 1, - "587df583245977373c4f1129": 1, - "58820d1224597753c90aeb13": 1, - "58864a4f2459770fcc257101": 1, - "5887431f2459777e1612938f": 1, - "58d3db5386f77426186285a0": 1, - "58dd3ad986f77403051cba8f": 1, - "590c5a7286f7747884343aea": 1, - "590c661e86f7741e566b646a": 1, - "590c678286f77426c9660122": 1, - "590c695186f7741e566b64a2": 1, - "5926c3b286f774640d189b6b": 1, - "599860ac86f77436b225ed1a": 1, - "59c1383d86f774290a37e0ca": 1, - "59d625f086f774661516605d": 1, - "59e0d99486f7744a32234762": 1, - "59e4cf5286f7741778269d8a": 1, - "59e4d24686f7741776641ac7": 1, - "59e5d83b86f7745aed03d262": 1, - "59e6542b86f77411dc52a77a": 1, - "59e655cb86f77411dc52a77b": 1, - "59e6658b86f77411d949b250": 1, - "59e68f6f86f7746c9f75e846": 1, - "59e6906286f7746c9f75e847": 1, - "59e690b686f7746c9f75e848": 1, - "59e6918f86f7746c9f75e849": 1, - "59e6920f86f77411d82aa167": 1, - "59e6927d86f77411da468256": 1, - "59e77a2386f7742ee578960a": 1, - "59f99a7d86f7745b134aa97b": 1, - "59fafc5086f7740dbe19f6c3": 1, - "5a01c29586f77474660c694c": 1, - "5a0c27731526d80618476ac4": 1, - "5a3501acc4a282000d72293a": 1, - "5a351711c4a282000b1521a4": 1, - "5a38ebd9c4a282000d722a5b": 1, - "5a3c16fe86f77452b62de32a": 1, - "5a6086ea4f39f99cd479502f": 1, - "5a608bf24f39f98ffc77720e": 1, - "5a718b548dc32e000d46d262": 1, - "5a718da68dc32e000d46d264": 1, - "5a718f958dc32e00094b97e7": 1, - "5a7882dcc5856700177af662": 1, - "5a7ad2e851dfba0016153692": 1, - "5a9e81fba2750c00164f6b11": 1, - "5aaa5e60e5b5b000140293d6": 1, - "5aaf8a0be5b5b00015693243": 1, - "5ac66bea5acfc43b321d4aec": 1, - "5ac66c5d5acfc4001718d314": 1, - "5addcce35acfc4001a5fc635": 1, - "5af0548586f7743a532b7e99": 1, - "5b1fd4e35acfc40018633c39": 1, - "5b4335ba86f7744d2837a264": 1, - "5b7bef5d5acfc43bca7067a3": 1, - "5b7bef9c5acfc43d102852ec": 1, - "5b7d37845acfc400170e2f87": 1, - "5ba264f6d4351e0034777d52": 1, - "5ba2657ed4351e0035628ff2": 1, - "5ba26586d4351e44f824b340": 1, - "5ba26844d4351e00334c9475": 1, - "5c0548ae0db834001966a3c2": 1, - "5c0672ed0db834001b7353f3": 1, - "5c0673fb0db8340023300271": 1, - "5c0d56a986f774449d5de529": 1, - "5c0d5ae286f7741e46554302": 1, - "5c0d688c86f77413ae3407b2": 1, - "5c0e530286f7747fa1419862": 1, - "5c10c8fd86f7743d7d706df3": 1, - "5c3df7d588a4501f290594e5": 1, - "5c471c442e221602b542a6f8": 1, - "5c503ac82e221602b21d6e9a": 1, - "5c503ad32e2216398b5aada2": 1, - "5c5970672e221602b21d7855": 1, - "5c5db6552e2216001026119d": 1, - "5c5db6742e2216000f1b2852": 1, - "5c6161fb2e221600113fbde5": 1, - "5c6d42cb2e2216000e69d7d1": 1, - "5c6d450c2e221600114c997d": 1, - "5c6d46132e221601da357d56": 1, - "5c88f24b2e22160bc12c69a6": 1, - "5c925fa22e221601da359b7b": 1, - "5cadf6ddae9215051e1c23b2": 1, - "5caf1041ae92157c28402e3f": 1, - "5cc80f8fe4a949033b0224a2": 1, - "5cc86840d7f00c002412c56c": 1, - "5d1340b3d7ad1a0b52682ed7": 1, - "5d1340cad7ad1a0b0b249869": 1, - "5d2f213448f0355009199284": 1, - "5d6e6a53a4b9361bd473feec": 1, - "5de653abf76fdc1ce94a5a2a": 1, - "5de8e8dafd6b4e6e2276dc32": 1, - "5de8ea8ffd6b4e6e2276dc35": 1, - "5de8eaadbbaf010b10528a6d": 1, - "5df25b6c0b92095fd441e4cf": 1, - "5df8f535bb49d91fb446d6b0": 1, - "5df8f541c41b2312ea3335e3": 1, - "5e023cf8186a883be655e54f": 1, - "5e023d34e8a400319a28ed44": 1, - "5e023e6e34d52a55c3304f71": 1, - "5e21a3c67e40bd02257a008a": 1, - "5e32f56fcb6d5863cc5e5ee4": 1, - "5e831507ea0a7c419c2f9bd9": 1, - "5e8488fa988a8701445df1e4": 1, - "5ed515ece452db0eb56fc028": 1, - "5ed5160a87bb8443d10680b5": 1, - "5ed51652f6c34d2cc26336a1": 1, - "5ed5166ad380ab312177c100": 1, - "60098ad7c2240c0fe85c570a": 1 - } + "TacticalVest": {} }, "mods": { "5447a9cd4bdc2dbd208b4567": { diff --git a/project/assets/database/bots/types/usec.json b/project/assets/database/bots/types/usec.json index b81951f0..938a3dfa 100644 --- a/project/assets/database/bots/types/usec.json +++ b/project/assets/database/bots/types/usec.json @@ -3093,7 +3093,7 @@ "5c012ffc0db834001d23f03f": 5, "5c07df7f0db834001b73588a": 5, "601948682627df266209af05": 5, - "6540d2162ae6d96b540afcaf": 1 + "6540d2162ae6d96b540afcaf": 1 }, "SecondPrimaryWeapon": { "5926bb2186f7744b1c6c6e60": 10, @@ -3161,649 +3161,101 @@ } }, "items": { - "Backpack": { - "62a0a043cf4a99369e2624a5": 1, - "62a08f4c4f842e1bd12d9d62": 1, - "62a0a098de7ac8199358053b": 1, - "59136e1e86f774432f15d133": 1, - "5c1d0d6d86f7744bb2683e1f": 1, - "5ad5d64486f774079b080af8": 1, - "5c1e495a86f7743109743dfb": 1, - "5a7c4850e899ef00150be885": 1, - "5d5e7d28a4b936645d161203": 1, - "5d40419286f774318526545f": 1, - "60098af40accd37ef2175f27": 1, - "57513f9324597720a7128161": 1, - "57513f07245977207e26a311": 1, - "60b0f93284c20f0feb453da7": 1, - "544fb62a4bdc2dfb738b4568": 1, - "590c595c86f7747884343ad7": 1, - "59e366c186f7741778269d85": 1, - "5d1b327086f7742525194449": 1, - "5d1b371186f774253763a656": 1, - "5734781f24597737e04bf32a": 1, - "59e3606886f77417674759a5": 1, - "5d1b313086f77425227d1678": 1, - "5d1b304286f774253763a528": 1, - "590a3cd386f77436f20848cb": 1, - "5d1b32c186f774252167a530": 1, - "5d0375ff86f774186372f685": 1, - "590c392f86f77444754deb29": 1, - "5d1b2ffd86f77425243e8d17": 1, - "5af0484c86f7740f02001f7f": 1, - "5d1b317c86f7742523398392": 1, - "590c311186f77424d1667482": 1, - "59e35de086f7741778269d84": 1, - "5c13cef886f774072e618e82": 1, - "5d1c774f86f7746d6620f8db": 1, - "5d1b39a386f774252339976f": 1, - "590c678286f77426c9660122": 1, - "5755383e24597772cb798966": 1, - "5c1d0c5f86f7744bb2683cf0": 1, - "5c1d0dc586f7744baf2e7b79": 1, - "5938603e86f77435642354f4": 1, - "591afe0186f77431bd616a11": 1, - "593858c486f774253a24cb52": 1, - "5a0eb6ac86f7743124037a28": 1, - "590c5f0d86f77413997acfab": 1, - "590c5c9f86f77477c91c36e7": 1, - "59faf98186f774067b6be103": 1, - "59e35cbb86f7741778269d83": 1, - "5c052f6886f7746b1e3db148": 1, - "5c05308086f7746b2101e90b": 1, - "5ed51652f6c34d2cc26336a1": 1, - "5780cf7f2459777de4559322": 1, - "5a13ef0686f7746e5a411744": 1, - "5a0ee34586f774023b6ee092": 1, - "5a0eee1486f77402aa773226": 1, - "5a0ea79b86f7741d4a35298e": 1, - "5efde6b4f5448336730dbd61": 1, - "590c2e1186f77425357b6124": 1, - "59e36c6f86f774176c10a2a7": 1, - "573477e124597737dd42e191": 1, - "590a358486f77429692b2790": 1, - "56742c324bdc2d150f8b456d": 1, - "5c1265fc86f7743f896a21c2": 1, - "573476d324597737da2adc13": 1, - "573476f124597737e04bf328": 1, - "5734770f24597738025ee254": 1, - "5c052fb986f7746b2101e909": 1, - "5eff09cd30a7dc22fd1ddfed": 1, - "59e7708286f7742cbd762753": 1, - "5aa2b9ede5b5b000137b758b": 1, - "5ab8f4ff86f77431c60d91ba": 1, - "5ab8f85d86f7745cd93a1cf5": 1, - "5645bcc04bdc2d363b8b4572": 1, - "5e2af4d286f7746d4159f07a": 1, - "5c12688486f77426843c7d32": 1, - "5e2af47786f7746d404f3aaa": 1, - "5b43575a86f77424f443fe62": 1, - "59e3639286f7741777737013": 1, - "573478bc24597738002c6175": 1, - "59e3658a86f7741776641ac4": 1, - "590de71386f774347051a052": 1, - "590de7e986f7741b096e5f32": 1, - "5e2af4a786f7746d3f3c3400": 1, - "5e2af41e86f774755a234b67": 1, - "5d02778e86f774203e7dedbe": 1, - "5c052e6986f7746b207bc3c9": 1, - "5d02797c86f774203f38e30a": 1, - "5af0454c86f7746bf20992e8": 1, - "5ed515c8d380ab312177c0fa": 1, - "5ed515f6915ec335206e4152": 1, - "5af0534a86f7743b6f354284": 1, - "590c5a7286f7747884343aea": 1, - "5733279d245977289b77ec24": 1, - "544fb3f34bdc2d03748b456a": 1, - "590a3efd86f77437d351a25b": 1, - "544fb45d4bdc2dee738b4568": 1, - "5a145d7b86f7744cbb6f4a13": 1, - "5a145d4786f7744cbb6f4a12": 1, - "5a0ee30786f774023b6ee08f": 1, - "5a0dc95c86f77452440fc675": 1, - "5ad5db3786f7743568421cce": 1, - "593962ca86f774068014d9af": 1, - "59faf7ca86f7740dbe19f6c2": 1, - "59e7715586f7742ee5789605": 1, - "5b4335ba86f7744d2837a264": 1, - "5734758f24597738025ee253": 1, - "590c621186f774138d11ea29": 1, - "59e7635f86f7742cbf2c1095": 1, - "5938504186f7740991483f30": 1, - "5780cf942459777df90dcb72": 1, - "5d0379a886f77420407aa271": 1, - "5d03794386f77420415576f5": 1, - "5e831507ea0a7c419c2f9bd9": 1, - "5e8488fa988a8701445df1e4": 1, - "5672cb124bdc2d1a0f8b4568": 1, - "55d4837c4bdc2d1d4e8b456c": 1, - "5780d0532459777a5108b9a2": 1, - "5d1b3f2d86f774253763b735": 1, - "5a38ee51c4a282000c5a955c": 1, - "57347c93245977448d35f6e3": 1, - "5755356824597772cb798962": 1, - "5649af884bdc2d1b2b8b4589": 1, - "544fb37f4bdc2dee738b4567": 1, - "590c2b4386f77425357b6123": 1, - "544fb3364bdc2d34748b456a": 1, - "5448c1d04bdc2dff2f8b4569": 1, - "57347d692459774491567cf1": 1, - "590c661e86f7741e566b646a": 1, - "59e361e886f774176c10a2a5": 1, - "5751487e245977207e26a315": 1, - "5c06779c86f77426e00dd782": 1, - "5780cf9e2459777df90dcb73": 1, - "57347b8b24597737dd42e192": 1, - "575062b524597720a31c09a1": 1, - "57347d9c245977448b40fa85": 1, - "571a29dc2459771fb2755a6a": 1, - "5aaa5e60e5b5b000140293d6": 1, - "57347d7224597744596b4e72": 1, - "5d1b392c86f77425243e98fe": 1, - "5780cf722459777a5108b9a1": 1, - "5780d0652459777df90dcb74": 1, - "5e2af2bc86f7746d3f3c33fc": 1, - "5780cda02459777b272ede61": 1, - "544fb6cc4bdc2d34748b456e": 1, - "57347c1124597737fb1379e3": 1, - "57347d90245977448f7b7f65": 1, - "57d14e1724597714010c3f4b": 1, - "5673de654bdc2d180f8b456d": 1, - "5b86a0e586f7745b600ccb23": 1, - "5cf508bfd7f00c056e24104e": 1, - "571a28e524597720b4066567": 1, - "5780cf692459777de4559321": 1, - "57505f6224597709a92585a9": 1, - "57a349b2245977762b199ec7": 1, - "57514643245977207f2c2d09": 1, - "57616a9e2459773c7a400234": 1, - "5b7d679f5acfc4001a5c4024": 1, - "5c06782b86f77426df5407d2": 1, - "57513fcc24597720a31c09a6": 1, - "590c31c586f774245e3141b2": 1, - "57347ca924597744596b4e71": 1, - "59d625f086f774661516605d": 1, - "577e1c9d2459773cd707c525": 1, - "59136f6f86f774447a1ed173": 1, - "5df8e4080b92095fd441e594": 1, - "5d15cf3bd7ad1a67e71518b2": 1, - "576a7c512459771e796e0e17": 1, - "5448fee04bdc2dbc018b4567": 1, - "5448fee04bdc2dbc018b4567": 1, - "5448fee04bdc2dbc018b4567": 1, - "57347d3d245977448f7b7f61": 1, - "5d1b36a186f7742523398433": 1, - "5751435d24597720a27126d1": 1, - "5e340dcdcb6d5863cc5e5efb": 1, - "5d40412b86f7743cb332ac3a": 1, - "59148c8a86f774197930e983": 1, - "59e35abd86f7741778269d82": 1, - "571a282c2459771fb2755a69": 1, - "5d63d33b86f7746ea9275524": 1, - "59e35ef086f7741777737012": 1, - "57347c77245977448d35f6e2": 1, - "57347c5b245977448d35f6e1": 1, - "5c5db5fc2e2216000f1b2842": 1, - "588226e62459776e3e094af7": 1, - "59387a4986f77401cc236e62": 1, - "5d4041f086f7743cac3f22a7": 1, - "5448ba0b4bdc2d02308b456c": 1, - "57347d8724597744596b4e76": 1, - "5780d07a2459777de4559324": 1, - "5a9fbb74a2750c0032157181": 1, - "5c94bbff86f7747ee735c08f": 1, - "56742c284bdc2d98058b456d": 1, - "590c2d8786f774245b1f03f3": 1, - "5672c92d4bdc2d180f8b4567": 1, - "5780cfa52459777dfb276eb1": 1, - "57347d5f245977448b40fa81": 1, - "544fb25a4bdc2dfb738b4567": 1, - "5c78f2792e221600106f4683": 1, - "59e898ee86f77427614bd225": 1, - "59e3577886f774176a362503": 1, - "590c5d4b86f774784e1b9c45": 1, - "5d1b2fa286f77425227d1674": 1, - "5734773724597737fd047c14": 1, - "5448ff904bdc2d6f028b456e": 1, - "5c87ca002e221600114cb150": 1, - "590c5bbd86f774785762df04": 1, - "5448c12b4bdc2d02308b456f": 1, - "5d2c76ed48f03532f2136169": 1, - "57347da92459774491567cf5": 1, - "5e2aef7986f7746d3f3c33f5": 1, - "5af04b6486f774195a3ebb49": 1, - "5a7893c1c585673f2b5c374d": 1, - "5b7bef1e5acfc43d82528402": 1, - "5c471c442e221602b542a6f8": 1, - "5a9fbb84a2750c00137fa685": 1, - "5c9a26332e2216001219ea70": 1, - "5672cb304bdc2dc2088b456a": 1, - "575146b724597720a27126d5": 1, - "5d1b31ce86f7742523398394": 1, - "573474f924597738002c6174": 1, - "5d1340bdd7ad1a0e8d245aab": 1, - "59fafb5d86f774067a6f2084": 1, - "5bbdb811d4351e45020113c7": 1, - "5c13cd2486f774072c757944": 1, - "5af0561e86f7745f5f3ad6ac": 1, - "57513f9324597720a7128161": 1, - "590c346786f77423e50ed342": 1, - "590c35a486f774273531c822": 1, - "5d80c62a86f7744036212b3f": 1, - "5ede7b0c6d23e5473e6e8c66": 1, - "5d80cb3886f77440556dbf09": 1, - "5d95d6fa86f77424484aa5e9": 1, - "5d95d6be86f77424444eb3a7": 1, - "5d80c6fc86f774403a401e3c": 1, - "590a3b0486f7743954552bdb": 1, - "590a391c86f774385a33c404": 1, - "590a386e86f77429692b27ab": 1, - "57347c2e24597744902c94a1": 1, - "5bc9bc53d4351e00367fbcee": 1, - "5d235a5986f77443f6329bc6": 1, - "5e2af29386f7746d4159f077": 1, - "619cbfeb6b8a1b37a54eebfa": 1, - "60391a8b3364dc22b04d0ce5": 1, - "590c2c9c86f774245b1f03f2": 1, - "619cbf476b8a1b37a54eebf8": 1, - "590a373286f774287540368b": 1, - "5bc9b355d4351e6d1509862a": 1, - "61bf7b6302b3924be92fa8c3": 1, - "619cbfccbedcde2f5b3f7bdd": 1, - "60391afc25aff57af81f7085": 1, - "5e2af00086f7746d3f3c33f7": 1, - "590a3c0a86f774385a33c450": 1, - "57347cd0245977445a2d6ff1": 1, - "60391b0fb847c71012789415": 1, - "5d1c819a86f774771b0acd6c": 1, - "5734779624597737e04bf329": 1, - "5e2aedd986f7746d404f3aa4": 1, - "5d0378d486f77420421a5ff4": 1, - "5d03775b86f774203e7e0c4b": 1, - "61bf7c024770ee6f9c6b8b53": 1, - "5c05300686f7746dce784e5d": 1, - "5d1b309586f77425227d1676": 1, - "5751a25924597722c463c472": 1, - "544fb25a4bdc2dfb738b4567": 1, - "5af0484c86f7740f02001f7f": 1, - "5e54f6af86f7742199090bf3": 1, - "5d1b3f2d86f774253763b735": 1, - "5e831507ea0a7c419c2f9bd9": 1, - "5c0530ee86f774697952d952": 1, - "5b4335ba86f7744d2837a264": 1, - "619cc01e0a7c3a1a2731940c": 1, - "5af0534a86f7743b6f354284": 1, - "5d1b3a5d86f774252167ba22": 1, - "59e3606886f77417674759a5": 1, - "61bf83814088ec1a363d7097": 1, - "57347c93245977448d35f6e3": 1, - "573474f924597738002c6174": 1, - "590c651286f7741e566b6461": 1, - "5d1b376e86f774252519444e": 1, - "590c639286f774151567fa95": 1 - }, - "Pockets": { - "5e831507ea0a7c419c2f9bd9": 1, - "5938994586f774523a425196": 1, - "59e5d83b86f7745aed03d262": 1, - "590c2d8786f774245b1f03f3": 1, - "57347c2e24597744902c94a1": 1, - "5c052fb986f7746b2101e909": 1, - "5c13cef886f774072e618e82": 1, - "5783c43d2459774bbe137486": 1, - "5c6161fb2e221600113fbde5": 1, - "5cf508bfd7f00c056e24104e": 1, - "56742c2e4bdc2d95058b456d": 1, - "576a7c512459771e796e0e17": 1, - "5e2aedd986f7746d404f3aa4": 1, - "573474f924597738002c6174": 1, - "5914578086f774123569ffa4": 1, - "5e2af22086f7746d3f3c33fa": 1, - "59e3577886f774176a362503": 1, - "57347baf24597738002c6178": 1, - "5a9d56c8a2750c0032157146": 1, - "57c55f112459772d28133310": 1, - "5a0eee1486f77402aa773226": 1, - "5c0e533786f7747fa23f4d47": 1, - "5751496424597720a27126da": 1, - "5c471c442e221602b542a6f8": 1, - "5bc9c29cd4351e003562b8a3": 1, - "590a391c86f774385a33c404": 1, - "5bc9c377d4351e3bac12251b": 1, - "5af04b6486f774195a3ebb49": 1, - "588226d124597767ad33f787": 1, - "5734779624597737e04bf329": 1, - "5648b1504bdc2d9d488b4584": 1, - "5ad5d7d286f77450166e0a89": 1, - "590c2c9c86f774245b1f03f2": 1, - "590a3b0486f7743954552bdb": 1, - "5d1c774f86f7746d6620f8db": 1, - "5a38ed75c4a28232996e40c6": 1, - "5e2af29386f7746d4159f077": 1, - "5a6b5ed88dc32e000c52ec86": 1, - "5734795124597738002c6176": 1, - "5ad5cfbd86f7742c825d6104": 1, - "5af0561e86f7745f5f3ad6ac": 1, - "5a718b548dc32e000d46d262": 1, - "5a9d6d00a2750c5c985b5305": 1, - "5a0ee72c86f77436955d3435": 1, - "5c1d0c5f86f7744bb2683cf0": 1, - "5913651986f774432f15d132": 1, - "5a0c27731526d80618476ac4": 1, - "5b7d679f5acfc4001a5c4024": 1, - "59e0bdb186f774156f04ce82": 1, - "5d0377ce86f774186372f689": 1, - "5d4aaa73a4b9365392071175": 1, - "5a0ee34586f774023b6ee092": 1, - "57cff947245977638e6f2a19": 1, - "5e32f56fcb6d5863cc5e5ee4": 1, - "590a358486f77429692b2790": 1, - "5d8e0e0e86f774321140eb56": 1, - "590c2b4386f77425357b6123": 1, - "5d1b39a386f774252339976f": 1, - "590a3cd386f77436f20848cb": 1, - "588226e62459776e3e094af7": 1, - "590a3c0a86f774385a33c450": 1, - "5938144586f77473c2087145": 1, - "588226ef24597767af46e39c": 1, - "5751a25924597722c463c472": 1, - "5ad7242b86f7740a6a3abd43": 1, - "5d80cd1a86f77402aa362f42": 1, - "57347cd0245977445a2d6ff1": 1, - "5c7fc87d2e221644f31c0298": 1, - "590c5bbd86f774785762df04": 1, - "5d80c6c586f77440351beef1": 1, - "5de8ea8ffd6b4e6e2276dc35": 1, - "5d1b313086f77425227d1678": 1, - "5d1b31ce86f7742523398394": 1, - "5d235b4d86f7742e017bc88a": 1, - "5b7bef1e5acfc43d82528402": 1, - "5c61627a2e22160012542c55": 1, - "5c87ca002e221600114cb150": 1, - "5d80c60f86f77440373c4ece": 1, - "5c94bbff86f7747ee735c08f": 1, - "544fb3f34bdc2d03748b456a": 1, - "5d1b3a5d86f774252167ba22": 1, - "5a145d7b86f7744cbb6f4a13": 1, - "5909e99886f7740c983b9984": 1, - "58d39d3d86f77445bb794ae7": 1, - "59db3acc86f7742a2c4ab912": 1, - "5a6b60158dc32e000a31138b": 1, - "5c1d0d6d86f7744bb2683e1f": 1, - "5e569a0156edd02abe09f27d": 1, - "590c311186f77424d1667482": 1, - "59f99a7d86f7745b134aa97b": 1, - "576a5ed62459771e9c2096cb": 1, - "5a145ebb86f77458f1796f05": 1, - "5913611c86f77479e0084092": 1, - "5c0e531d86f7747fa23f4d42": 1, - "59fc48e086f77463b1118392": 1, - "5c1bc5fb2e221602b1779b32": 1, - "5c1bc4812e22164bef5cfde7": 1, - "5b4335ba86f7744d2837a264": 1, - "5888988e24597752fe43a6fa": 1, - "58a56f8d86f774651579314c": 1, - "57ee59b42459771c7b045da5": 1, - "5672c92d4bdc2d180f8b4567": 1, - "5e42c81886f7742a01529f57": 1, - "58d3db5386f77426186285a0": 1, - "5a144dfd86f77445cb5a0982": 1, - "5e2af37686f774755a234b65": 1, - "59faff1d86f7746c51718c9c": 1, - "5c0e534186f7747fa1419867": 1, - "573477e124597737dd42e191": 1, - "590a373286f774287540368b": 1, - "5a0f075686f7745bcc42ee12": 1, - "5734773724597737fd047c14": 1, - "5c503ad32e2216398b5aada2": 1, - "57c44fa82459772d2d75e415": 1, - "5bb20e18d4351e00320205d5": 1, - "5b07db875acfc40dc528a5f6": 1, - "5d4aaa54a4b9365392071170": 1, - "5d0376a486f7747d8050965c": 1, - "5d08d21286f774736e7c94c3": 1, - "5e42c71586f7747f245e1343": 1, - "5e42c83786f7742a021fdf3c": 1 - }, + "Backpack": {}, + "Pockets": {}, "SecuredContainer": { - "590c657e86f77412b013051d": 1, - "590c657e86f77412b013051d": 1, - "590c657e86f77412b013051d": 1, - "590c657e86f77412b013051d": 1, - "590c657e86f77412b013051d": 1, - "59e4cf5286f7741778269d8a": 1, - "59e0d99486f7744a32234762": 1, - "59e4d24686f7741776641ac7": 1, - "5656d7c34bdc2d9d198b4587": 1, - "601aa3d2b2bcb34913271e6d": 1, - "573603562459776430731618": 1, - "59e655cb86f77411dc52a77b": 1, - "59e6542b86f77411dc52a77a": 1, - "5c0d56a986f774449d5de529": 1, - "56d59d3ad2720bdb418b4577": 1, - "5c925fa22e221601da359b7b": 1, - "5efb0da7a29a85116f6ea05f": 1, - "5a3c16fe86f77452b62de32a": 1, "54527a984bdc2d4e668b4567": 1, "54527ac44bdc2d36668b4567": 1, - "59e6906286f7746c9f75e847": 1, - "59e6920f86f77411d82aa167": 1, - "5c0d5ae286f7741e46554302": 1, - "59e68f6f86f7746c9f75e846": 1, - "59e690b686f7746c9f75e848": 1, - "601949593ae8f707c4608daa": 1, - "58dd3ad986f77403051cba8f": 1, - "5e023e53d4353e3302577c4c": 1, - "5a6086ea4f39f99cd479502f": 1, - "5a608bf24f39f98ffc77720e": 1, - "5efb0c1bd79ff02a1f5e68d9": 1, - "5cc80f53e4a949000e1ea4f8": 1, - "5cc80f38e4a949001152b560": 1, - "5cc80f67e4a949035e43bbba": 1, - "5e023d48186a883be655e551": 1, - "5887431f2459777e1612938f": 1, - "5e023d34e8a400319a28ed44": 1, - "59e77a2386f7742ee578960a": 1, + "560d5e524bdc2d25448b4571": 1, "560d61e84bdc2da74d8b4571": 1, - "5cadf6eeae921500134b2799": 1, - "5cadf6ddae9215051e1c23b2": 1, - "5cadf6e5ae921500113bb973": 1, - "5a38ebd9c4a282000d722a5b": 1, - "5d6e6a5fa4b93614ec501745": 1, - "5d6e6a05a4b93618084f58d0": 1, - "5d6e69c7a4b9360b6c0d54e4": 1, - "5d6e6a42a4b9364f07165f52": 1, - "5d6e6a53a4b9361bd473feec": 1, + "5656d7c34bdc2d9d198b4587": 1, + "56d59d3ad2720bdb418b4577": 1, + "56dfef82d2720bbd668b4567": 1, "56dff026d2720bb8668b4567": 1, "56dff061d2720bb5668b4567": 1, - "5c0d5e4486f77478390952fe": 1, "56dff2ced2720bb4668b4567": 1, - "56dfef82d2720bbd668b4567": 1, - "57a0e5022459774d1673f889": 1, - "5c0d688c86f77413ae3407b2": 1, - "5c0d668f86f7747ccb7f13b2": 1, + "573603562459776430731618": 1, + "573719762459775a626ccbc1": 1, + "573719df2459775a626ccbc2": 1, + "57371aab2459775a77142f22": 1, + "57371b192459775a9f58a5e0": 1, + "57371f2b24597761224311f1": 1, + "57371f8d24597761006c6a81": 1, + "573720e02459776143012541": 1, + "5737218f245977612125ba51": 1, "57a0dfb82459774d3078b56c": 1, - "5ba2678ad4351e44f824b344": 1, - "5ba26835d4351e0035628ff5": 1, - "5ba26812d4351e003201fef1": 1, - "5d6e67fba4b9361bc73bc779": 1, - "5d6e689ca4b9361bc8618956": 1, - "5d6e6806a4b936088465b17e": 1, - "5d6e68e6a4b9361c140bcfe0": 1, - "5d6e68a8a4b9360b6c0d54e2": 1, + "57a0e5022459774d1673f889": 1, "58820d1224597753c90aeb13": 1, + "5887431f2459777e1612938f": 1, + "58dd3ad986f77403051cba8f": 1, + "590c657e86f77412b013051d": 1, + "59e0d99486f7744a32234762": 1, + "59e4cf5286f7741778269d8a": 1, + "59e4d24686f7741776641ac7": 1, + "59e6542b86f77411dc52a77a": 1, + "59e655cb86f77411dc52a77b": 1, + "59e68f6f86f7746c9f75e846": 1, + "59e6906286f7746c9f75e847": 1, + "59e690b686f7746c9f75e848": 1, + "59e6920f86f77411d82aa167": 1, + "59e77a2386f7742ee578960a": 1, + "5a0ec6d286f7742c0b518fb5": 1, + "5a13eebd86f7746fd639aa93": 1, + "5a13ef7e86f7741290491063": 1, + "5a13f24186f77410e57c5626": 1, + "5a1452ee86f7746f33111763": 1, + "5a38ebd9c4a282000d722a5b": 1, + "5a3c16fe86f77452b62de32a": 1, + "5a6086ea4f39f99cd479502f": 1, + "5a608bf24f39f98ffc77720e": 1, + "5ba2678ad4351e44f824b344": 1, + "5ba26812d4351e003201fef1": 1, + "5ba26835d4351e0035628ff5": 1, + "5c0d56a986f774449d5de529": 1, "5c0d591486f7744c505b416f": 1, - "560d5e524bdc2d25448b4571": 1, - "5d6e6911a4b9361bd5780d52": 1, + "5c0d5ae286f7741e46554302": 1, + "5c0d5e4486f77478390952fe": 1, + "5c0d668f86f7747ccb7f13b2": 1, + "5c0d688c86f77413ae3407b2": 1, + "5c925fa22e221601da359b7b": 1, + "5cadf6ddae9215051e1c23b2": 1, + "5cadf6e5ae921500113bb973": 1, + "5cadf6eeae921500134b2799": 1, + "5cc80f38e4a949001152b560": 1, + "5cc80f53e4a949000e1ea4f8": 1, + "5cc80f67e4a949035e43bbba": 1, + "5d6e67fba4b9361bc73bc779": 1, + "5d6e6806a4b936088465b17e": 1, "5d6e6869a4b9361c140bcfde": 1, "5d6e6891a4b9361bd473feea": 1, + "5d6e689ca4b9361bc8618956": 1, + "5d6e68a8a4b9360b6c0d54e2": 1, "5d6e68b3a4b9361bca7e50b5": 1, "5d6e68c4a4b9361b93413f79": 1, "5d6e68d1a4b93622fe60e845": 1, - "5737218f245977612125ba51": 1, - "57371b192459775a9f58a5e0": 1, - "573719df2459775a626ccbc2": 1, - "573719762459775a626ccbc1": 1, - "57371f8d24597761006c6a81": 1, - "573720e02459776143012541": 1, - "57371f2b24597761224311f1": 1, - "57371aab2459775a77142f22": 1, - "5fbe3ffdf8b6a877a729ea82": 1, - "5fd20ff893a8961fc660a954": 1, - "5f0596629e22f464da6bbdd9": 1, - "59e655cb86f77411dc52a77b": 1, - "5efb0cabfb3e451d70735af5": 1, - "5fc275cf85fd526b824a571a": 1, - "5a1452ee86f7746f33111763": 1, - "5a13f24186f77410e57c5626": 1, - "5a13ef7e86f7741290491063": 1, - "5d8e15b686f774445103b190": 1, - "5a0ec6d286f7742c0b518fb5": 1, - "5a13eebd86f7746fd639aa93": 1 - }, - "SpecialLoot": {}, - "TacticalVest": { - "590c678286f77426c9660122": 1, - "5b4335ba86f7744d2837a264": 1, - "5ed51652f6c34d2cc26336a1": 1, - "5ed5160a87bb8443d10680b5": 1, - "5ed515ece452db0eb56fc028": 1, - "5ed5166ad380ab312177c100": 1, - "590c5a7286f7747884343aea": 1, - "5e831507ea0a7c419c2f9bd9": 1, - "5e8488fa988a8701445df1e4": 1, - "587df3a12459772c28142567": 1, - "59e4d24686f7741776641ac7": 1, - "5e21a3c67e40bd02257a008a": 1, - "5926c3b286f774640d189b6b": 1, - "5448be9a4bdc2dfd2f8b456a": 1, - "5c6d46132e221601da357d56": 1, - "54527a984bdc2d4e668b4567": 1, - "59e6920f86f77411d82aa167": 1, - "59e5d83b86f7745aed03d262": 1, - "5656d7c34bdc2d9d198b4587": 1, - "59e0d99486f7744a32234762": 1, - "5a0c27731526d80618476ac4": 1, - "58d3db5386f77426186285a0": 1, - "59f99a7d86f7745b134aa97b": 1, - "5448c1d04bdc2dff2f8b4569": 1, - "5aaa5e60e5b5b000140293d6": 1, - "5e32f56fcb6d5863cc5e5ee4": 1, - "59e6906286f7746c9f75e847": 1, - "5c0673fb0db8340023300271": 1, - "5c6d450c2e221600114c997d": 1, - "590c661e86f7741e566b646a": 1, - "59e6658b86f77411d949b250": 1, - "5a718da68dc32e000d46d264": 1, - "5df8f535bb49d91fb446d6b0": 1, - "5e023e6e34d52a55c3304f71": 1, - "58dd3ad986f77403051cba8f": 1, - "576a5ed62459771e9c2096cb": 1, - "54527ac44bdc2d36668b4567": 1, - "544a37c44bdc2d25388b4567": 1, - "5a01c29586f77474660c694c": 1, - "5a7ad2e851dfba0016153692": 1, - "5c6d42cb2e2216000e69d7d1": 1, - "559ba5b34bdc2d1f1a8b4582": 1, - "5c5db6742e2216000f1b2852": 1, - "5c0e530286f7747fa1419862": 1, - "5caf1041ae92157c28402e3f": 1, - "5cadf6ddae9215051e1c23b2": 1, - "5de8ea8ffd6b4e6e2276dc35": 1, - "5c6161fb2e221600113fbde5": 1, - "5a718f958dc32e00094b97e7": 1, - "59e77a2386f7742ee578960a": 1, - "5df8f541c41b2312ea3335e3": 1, - "59e6918f86f7746c9f75e849": 1, - "5a351711c4a282000b1521a4": 1, - "5c3df7d588a4501f290594e5": 1, - "55d4837c4bdc2d1d4e8b456c": 1, - "56dff061d2720bb5668b4567": 1, - "57838f0b2459774a256959b2": 1, - "5c0d688c86f77413ae3407b2": 1, - "599860ac86f77436b225ed1a": 1, - "5a9e81fba2750c00164f6b11": 1, - "5c5db6552e2216001026119d": 1, - "5de8e8dafd6b4e6e2276dc32": 1, - "5c0d56a986f774449d5de529": 1, - "5ba2657ed4351e0035628ff2": 1, - "5ba26844d4351e00334c9475": 1, - "5c88f24b2e22160bc12c69a6": 1, - "5c0672ed0db834001b7353f3": 1, - "57a0e5022459774d1673f889": 1, - "587df583245977373c4f1129": 1, - "59e4cf5286f7741778269d8a": 1, - "57616a9e2459773c7a400234": 1, - "55d4887d4bdc2d962f8b4570": 1, - "59e6927d86f77411da468256": 1, - "5c503ad32e2216398b5aada2": 1, - "5a6086ea4f39f99cd479502f": 1, - "59d625f086f774661516605d": 1, - "590c695186f7741e566b64a2": 1, - "5b1fd4e35acfc40018633c39": 1, - "5cc80f8fe4a949033b0224a2": 1, - "5cc86840d7f00c002412c56c": 1, - "5a718b548dc32e000d46d262": 1, - "5ac66c5d5acfc4001718d314": 1, - "57838f9f2459774a150289a0": 1, - "544fb37f4bdc2dee738b4567": 1, - "544fb25a4bdc2dfb738b4567": 1, - "5de8eaadbbaf010b10528a6d": 1, - "58864a4f2459770fcc257101": 1, - "5c10c8fd86f7743d7d706df3": 1, - "5a38ebd9c4a282000d722a5b": 1, - "5d2f213448f0355009199284": 1, - "56d59d3ad2720bdb418b4577": 1, - "5c925fa22e221601da359b7b": 1, - "5755383e24597772cb798966": 1, - "5d1340b3d7ad1a0b52682ed7": 1, - "5a3c16fe86f77452b62de32a": 1, - "5aaf8a0be5b5b00015693243": 1, - "5b7bef9c5acfc43d102852ec": 1, - "56dfef82d2720bbd668b4567": 1, - "56dff2ced2720bb4668b4567": 1, - "5a7882dcc5856700177af662": 1, - "59e690b686f7746c9f75e848": 1, - "56dff026d2720bb8668b4567": 1, - "5c0d5ae286f7741e46554302": 1, - "5addcce35acfc4001a5fc635": 1, - "5c503ac82e221602b21d6e9a": 1, - "5ba264f6d4351e0034777d52": 1, - "5de653abf76fdc1ce94a5a2a": 1, - "5d1340cad7ad1a0b0b249869": 1, - "58820d1224597753c90aeb13": 1, - "59e6542b86f77411dc52a77a": 1, - "5887431f2459777e1612938f": 1, - "59c1383d86f774290a37e0ca": 1, - "5b7bef5d5acfc43bca7067a3": 1, - "55d480c04bdc2d1d4e8b456a": 1, - "56dff216d2720bbd668b4568": 1, - "5c471c442e221602b542a6f8": 1, - "560d61e84bdc2da74d8b4571": 1, - "5e023cf8186a883be655e54f": 1, - "5a608bf24f39f98ffc77720e": 1, - "5ac66bea5acfc43b321d4aec": 1, - "5df25b6c0b92095fd441e4cf": 1, - "59fafc5086f7740dbe19f6c3": 1, - "57d1519e24597714373db79d": 1, - "5c0548ae0db834001966a3c2": 1, - "5af0548586f7743a532b7e99": 1, + "5d6e68e6a4b9361c140bcfe0": 1, + "5d6e6911a4b9361bd5780d52": 1, + "5d6e69c7a4b9360b6c0d54e4": 1, + "5d6e6a05a4b93618084f58d0": 1, + "5d6e6a42a4b9364f07165f52": 1, "5d6e6a53a4b9361bd473feec": 1, - "55d482194bdc2d1d4e8b456b": 1, - "56dff4ecd2720b5f5a8b4568": 1, - "5ba26586d4351e44f824b340": 1, - "59e68f6f86f7746c9f75e846": 1, + "5d6e6a5fa4b93614ec501745": 1, + "5d8e15b686f774445103b190": 1, "5e023d34e8a400319a28ed44": 1, - "5a3501acc4a282000d72293a": 1, - "5751a25924597722c463c472": 1, - "5c5970672e221602b21d7855": 1, - "59e655cb86f77411dc52a77b": 1, - "5b7d37845acfc400170e2f87": 1, - "572b7fa524597762b747ce82": 1, - "57e26fc7245977162a14b800": 1, - "5734758f24597738025ee253": 1, - "60098ad7c2240c0fe85c570a": 1 - } + "5e023d48186a883be655e551": 1, + "5e023e53d4353e3302577c4c": 1, + "5efb0c1bd79ff02a1f5e68d9": 1, + "5efb0cabfb3e451d70735af5": 1, + "5efb0da7a29a85116f6ea05f": 1, + "5f0596629e22f464da6bbdd9": 1, + "5fbe3ffdf8b6a877a729ea82": 1, + "5fc275cf85fd526b824a571a": 1, + "5fd20ff893a8961fc660a954": 1, + "601949593ae8f707c4608daa": 1, + "601aa3d2b2bcb34913271e6d": 1 + }, + "SpecialLoot": {}, + "TacticalVest": {} }, "mods": { "5447a9cd4bdc2dbd208b4567": { @@ -8598,13 +8050,21 @@ ] }, "5b44cf1486f77431723e3d05": { - "Front_plate": ["656fa8d700d62bcd2e024084"], - "Back_plate": ["656fa8d700d62bcd2e024084"], - "Left_side_plate": ["6557458f83942d705f0c4962"], - "Right_side_plate": ["6557458f83942d705f0c4962"], + "Back_plate": [ + "656fa8d700d62bcd2e024084" + ], "Collar": [ "6575c3ec52b7f8c76a05ee39" ], + "Front_plate": [ + "656fa8d700d62bcd2e024084" + ], + "Left_side_plate": [ + "6557458f83942d705f0c4962" + ], + "Right_side_plate": [ + "6557458f83942d705f0c4962" + ], "Shoulder_l": [ "6575c3fd52b7f8c76a05ee3d" ], diff --git a/project/src/generators/BotLootGenerator.ts b/project/src/generators/BotLootGenerator.ts index d3eb01d7..1c8e9911 100644 --- a/project/src/generators/BotLootGenerator.ts +++ b/project/src/generators/BotLootGenerator.ts @@ -2,6 +2,7 @@ import { inject, injectable } from "tsyringe"; import { BotWeaponGenerator } from "@spt-aki/generators/BotWeaponGenerator"; import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt-aki/helpers/BotHelper"; import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; @@ -16,6 +17,7 @@ import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes"; import { EquipmentSlots } from "@spt-aki/models/enums/EquipmentSlots"; import { ItemAddedResult } from "@spt-aki/models/enums/ItemAddedResult"; import { LootCacheType } from "@spt-aki/models/spt/bots/IBotLootCache"; +import { IItemSpawnLimitSettings } from "@spt-aki/models/spt/bots/IItemSpawnLimitSettings"; import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; @@ -46,6 +48,7 @@ export class BotLootGenerator @inject("BotWeaponGenerator") protected botWeaponGenerator: BotWeaponGenerator, @inject("BotWeaponGeneratorHelper") protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper, @inject("WeightedRandomHelper") protected weightedRandomHelper: WeightedRandomHelper, + @inject("BotHelper") protected botHelper: BotHelper, @inject("BotLootCacheService") protected botLootCacheService: BotLootCacheService, @inject("LocalisationService") protected localisationService: LocalisationService, @inject("ConfigServer") protected configServer: ConfigServer, @@ -55,6 +58,15 @@ export class BotLootGenerator this.pmcConfig = this.configServer.getConfig(ConfigTypes.PMC); } + protected getItemSpawnLimitsForBot(botRole: string): IItemSpawnLimitSettings + { + // Init item limits + const limitsForBotDict: Record = {}; + this.initItemLimitArray(botRole, limitsForBotDict); + + return { currentLimits: limitsForBotDict, globalLimits: this.getItemSpawnLimitsForBotType(botRole) }; + } + /** * Add loot to bots containers * @param sessionId Session id @@ -97,6 +109,8 @@ export class BotLootGenerator this.addForcedMedicalItemsToPmcSecure(botInventory, botRole); } + const botItemLimits = this.getItemSpawnLimitsForBot(botRole); + const containersBotHasAvailable = this.getAvailableContainersBotCanStoreItemsIn(botInventory); // Special items @@ -106,7 +120,7 @@ export class BotLootGenerator specialLootItemCount, botInventory, botRole, - true, + botItemLimits, ); // Healing items / Meds @@ -116,7 +130,7 @@ export class BotLootGenerator healingItemCount, botInventory, botRole, - false, + null, 0, isPmc, ); @@ -128,7 +142,7 @@ export class BotLootGenerator drugItemCount, botInventory, botRole, - false, + null, 0, isPmc, ); @@ -140,7 +154,7 @@ export class BotLootGenerator stimItemCount, botInventory, botRole, - true, + botItemLimits, 0, isPmc, ); @@ -152,7 +166,7 @@ export class BotLootGenerator grenadeCount, botInventory, botRole, - false, + null, 0, isPmc, ); @@ -181,7 +195,7 @@ export class BotLootGenerator backpackLootCount, botInventory, botRole, - true, + botItemLimits, this.pmcConfig.maxBackpackLootTotalRub, isPmc, ); @@ -197,7 +211,7 @@ export class BotLootGenerator vestLootCount, botInventory, botRole, - true, + botItemLimits, this.pmcConfig.maxVestLootTotalRub, isPmc, ); @@ -210,7 +224,7 @@ export class BotLootGenerator pocketLootCount, botInventory, botRole, - true, + botItemLimits, this.pmcConfig.maxPocketLootTotalRub, isPmc, ); @@ -222,7 +236,7 @@ export class BotLootGenerator 50, botInventory, botRole, - false, + null, -1, isPmc, ); @@ -265,7 +279,7 @@ export class BotLootGenerator 1, botInventory, botRole, - false, + null, 0, true, ); @@ -278,7 +292,7 @@ export class BotLootGenerator 1, botInventory, botRole, - false, + null, 0, true, ); @@ -291,7 +305,7 @@ export class BotLootGenerator 2, botInventory, botRole, - false, + null, 0, true, ); @@ -304,7 +318,7 @@ export class BotLootGenerator 2, botInventory, botRole, - false, + null, 0, true, ); @@ -330,7 +344,7 @@ export class BotLootGenerator * @param totalItemCount Max count of items to add * @param inventoryToAddItemsTo Bot inventory loot will be added to * @param botRole Role of the bot loot is being generated for (assault/pmcbot) - * @param useLimits Should item limit counts be used as defined in config/bot.json + * @param itemSpawnLimits Item spawn limits the bot must adhere to * @param totalValueLimitRub Total value of loot allowed in roubles * @param isPmc Is bot being generated for a pmc */ @@ -340,18 +354,17 @@ export class BotLootGenerator totalItemCount: number, inventoryToAddItemsTo: PmcInventory, botRole: string, - useLimits = false, + itemSpawnLimits: IItemSpawnLimitSettings = null, totalValueLimitRub = 0, isPmc = false, ): void { // Loot pool has items - if (Object.keys(pool).length > 0) + const poolSize = Object.keys(pool).length; + if (poolSize > 0) { let currentTotalRub = 0; - const itemLimits: Record = {}; - /** Prep limits for items added to the container */ - const itemSpawnLimits: Record> = {}; + let fitItemIntoContainerAttempts = 0; for (let i = 0; i < totalItemCount; i++) { @@ -374,28 +387,16 @@ export class BotLootGenerator ...this.botGeneratorHelper.generateExtraPropertiesForItem(itemToAddTemplate, botRole), }]; - if (useLimits) + if (itemSpawnLimits) { - if (Object.keys(itemLimits).length === 0) + if (this.itemHasReachedSpawnLimit(itemToAddTemplate, botRole, itemSpawnLimits)) { - this.initItemLimitArray(isPmc, botRole, itemLimits); - } + // Delete item from pool so it cant be picked again + if (poolSize > 5) + { // Only remove if pool has some other items to pick + delete pool[weightedItemTpl]; + } - if (!itemSpawnLimits[botRole]) - { - itemSpawnLimits[botRole] = this.getItemSpawnLimitsForBotType(isPmc, botRole); - } - - if ( - this.itemHasReachedSpawnLimit( - itemToAddTemplate, - botRole, - isPmc, - itemLimits, - itemSpawnLimits[botRole], - ) - ) - { i--; continue; } @@ -616,14 +617,13 @@ export class BotLootGenerator /** * Hydrate item limit array to contain items that have a limit for a specific bot type * All values are set to 0 - * @param isPmc Is the bot a pmc * @param botRole Role the bot has * @param limitCount */ - protected initItemLimitArray(isPmc: boolean, botRole: string, limitCount: Record): void + protected initItemLimitArray(botRole: string, limitCount: Record): void { // Init current count of items we want to limit - const spawnLimits = this.getItemSpawnLimitsForBotType(isPmc, botRole); + const spawnLimits = this.getItemSpawnLimitsForBotType(botRole); for (const limit in spawnLimits) { limitCount[limit] = 0; @@ -634,21 +634,17 @@ export class BotLootGenerator * Check if an item has reached its bot-specific spawn limit * @param itemTemplate Item we check to see if its reached spawn limit * @param botRole Bot type - * @param isPmc Is bot we're working with a pmc - * @param limitCount Spawn limits for items on bot - * @param itemSpawnLimits The limits this bot is allowed to have + * @param itemSpawnLimits * @returns true if item has reached spawn limit */ protected itemHasReachedSpawnLimit( itemTemplate: ITemplateItem, botRole: string, - isPmc: boolean, - limitCount: Record, - itemSpawnLimits: Record, + itemSpawnLimits: IItemSpawnLimitSettings, ): boolean { // PMCs and scavs have different sections of bot config for spawn limits - if (!!itemSpawnLimits && itemSpawnLimits.length === 0) + if (!!itemSpawnLimits && Object.keys(itemSpawnLimits.globalLimits).length === 0) { // No items found in spawn limit, drop out return false; @@ -660,7 +656,7 @@ export class BotLootGenerator return false; } - const idToCheckFor = this.getMatchingIdFromSpawnLimits(itemTemplate, itemSpawnLimits); + const idToCheckFor = this.getMatchingIdFromSpawnLimits(itemTemplate, itemSpawnLimits.globalLimits); if (!idToCheckFor) { // ParentId or tplid not found in spawnLimits, not a spawn limited item, skip @@ -668,19 +664,19 @@ export class BotLootGenerator } // Increment item count with this bot type - limitCount[idToCheckFor]++; + itemSpawnLimits.currentLimits[idToCheckFor]++; - // return true, we are over limit - if (limitCount[idToCheckFor] > itemSpawnLimits[idToCheckFor]) + // Check if over limit + if (itemSpawnLimits.currentLimits[idToCheckFor] > itemSpawnLimits.globalLimits[idToCheckFor]) { // Prevent edge-case of small loot pools + code trying to add limited item over and over infinitely - if (limitCount[idToCheckFor] > itemSpawnLimits[idToCheckFor] * 10) + if (itemSpawnLimits.currentLimits[idToCheckFor] > itemSpawnLimits[idToCheckFor] * 10) { this.logger.debug( this.localisationService.getText("bot-item_spawn_limit_reached_skipping_item", { botRole: botRole, itemName: itemTemplate._name, - attempts: limitCount[idToCheckFor], + attempts: itemSpawnLimits.currentLimits[idToCheckFor], }), ); @@ -742,13 +738,12 @@ export class BotLootGenerator /** * Get spawn limits for a specific bot type from bot.json config * If no limit found for a non pmc bot, fall back to defaults - * @param isPmc is the bot we want limits for a pmc * @param botRole what role does the bot have * @returns Dictionary of tplIds and limit */ - protected getItemSpawnLimitsForBotType(isPmc: boolean, botRole: string): Record + protected getItemSpawnLimitsForBotType(botRole: string): Record { - if (isPmc) + if (this.botHelper.isBotPmc(botRole)) { return this.botConfig.itemSpawnLimits.pmc; } diff --git a/project/src/generators/PMCLootGenerator.ts b/project/src/generators/PMCLootGenerator.ts index 9c8564b8..05196ff8 100644 --- a/project/src/generators/PMCLootGenerator.ts +++ b/project/src/generators/PMCLootGenerator.ts @@ -38,18 +38,20 @@ export class PMCLootGenerator * Create an array of loot items a PMC can have in their pockets * @returns string array of tpls */ - public generatePMCPocketLootPool(): Record + public generatePMCPocketLootPool(botRole: string): Record { // Hydrate loot dictionary if empty if (Object.keys(this.pocketLootPool).length === 0) { const items = this.databaseServer.getTables().templates.items; + const pmcPriceOverrides = + this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items + .Pockets; const allowedItemTypes = this.pmcConfig.pocketLoot.whitelist; const pmcItemBlacklist = this.pmcConfig.pocketLoot.blacklist; const itemBlacklist = this.itemFilterService.getBlacklistedItems(); - // Blacklist seasonal items if not inside seasonal event // Blacklist seasonal items if not inside seasonal event if (!this.seasonalEventService.seasonalEventEnabled()) { @@ -68,12 +70,17 @@ export class PMCLootGenerator for (const itemToAdd of itemsToAdd) { - this.pocketLootPool[itemToAdd._id] = 1; - } - - for (const itemToAdd of itemsToAdd) - { - this.pocketLootPool[itemToAdd._id] = 1; + // If pmc has override, use that. Otherwise use flea price + if (pmcPriceOverrides[itemToAdd._id]) + { + this.pocketLootPool[itemToAdd._id] = pmcPriceOverrides[itemToAdd._id]; + } + else + { + // Set price of item as its weight + const price = this.ragfairPriceService.getFleaPriceForItem(itemToAdd._id); + this.pocketLootPool[itemToAdd._id] = price; + } } const highestPrice = Math.max(...Object.values(this.backpackLootPool)); @@ -94,12 +101,15 @@ export class PMCLootGenerator * Create an array of loot items a PMC can have in their vests * @returns string array of tpls */ - public generatePMCVestLootPool(): Record + public generatePMCVestLootPool(botRole: string): Record { // Hydrate loot dictionary if empty if (Object.keys(this.vestLootPool).length === 0) { const items = this.databaseServer.getTables().templates.items; + const pmcPriceOverrides = + this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items + .TacticalVest; const allowedItemTypes = this.pmcConfig.vestLoot.whitelist; const pmcItemBlacklist = this.pmcConfig.vestLoot.blacklist; @@ -123,7 +133,17 @@ export class PMCLootGenerator for (const itemToAdd of itemsToAdd) { - this.vestLootPool[itemToAdd._id] = 1; + // If pmc has override, use that. Otherwise use flea price + if (pmcPriceOverrides[itemToAdd._id]) + { + this.vestLootPool[itemToAdd._id] = pmcPriceOverrides[itemToAdd._id]; + } + else + { + // Set price of item as its weight + const price = this.ragfairPriceService.getFleaPriceForItem(itemToAdd._id); + this.vestLootPool[itemToAdd._id] = price; + } } const highestPrice = Math.max(...Object.values(this.backpackLootPool)); @@ -155,12 +175,15 @@ export class PMCLootGenerator * Create an array of loot items a PMC can have in their backpack * @returns string array of tpls */ - public generatePMCBackpackLootPool(): Record + public generatePMCBackpackLootPool(botRole: string): Record { // Hydrate loot dictionary if empty if (Object.keys(this.backpackLootPool).length === 0) { const items = this.databaseServer.getTables().templates.items; + const pmcPriceOverrides = + this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items + .Backpack; const allowedItemTypes = this.pmcConfig.backpackLoot.whitelist; const pmcItemBlacklist = this.pmcConfig.backpackLoot.blacklist; @@ -182,9 +205,17 @@ export class PMCLootGenerator for (const itemToAdd of itemsToAdd) { - // Set price of item as its weight - const price = this.ragfairPriceService.getFleaPriceForItem(itemToAdd._id); - this.backpackLootPool[itemToAdd._id] = price; + // If pmc has override, use that. Otherwise use flea price + if (pmcPriceOverrides[itemToAdd._id]) + { + this.backpackLootPool[itemToAdd._id] = pmcPriceOverrides[itemToAdd._id]; + } + else + { + // Set price of item as its weight + const price = this.ragfairPriceService.getFleaPriceForItem(itemToAdd._id); + this.backpackLootPool[itemToAdd._id] = price; + } } const highestPrice = Math.max(...Object.values(this.backpackLootPool)); diff --git a/project/src/models/spt/bots/IItemSpawnLimitSettings.ts b/project/src/models/spt/bots/IItemSpawnLimitSettings.ts new file mode 100644 index 00000000..8cfde823 --- /dev/null +++ b/project/src/models/spt/bots/IItemSpawnLimitSettings.ts @@ -0,0 +1,5 @@ +export interface IItemSpawnLimitSettings +{ + currentLimits: Record; + globalLimits: Record; +} diff --git a/project/src/services/BotLootCacheService.ts b/project/src/services/BotLootCacheService.ts index 319105c1..4576509f 100644 --- a/project/src/services/BotLootCacheService.ts +++ b/project/src/services/BotLootCacheService.ts @@ -115,9 +115,9 @@ export class BotLootCacheService if (isPmc) { // Replace lootPool from bot json with our own generated list for PMCs - lootPool.Backpack = this.jsonUtil.clone(this.pmcLootGenerator.generatePMCBackpackLootPool()); - lootPool.Pockets = this.jsonUtil.clone(this.pmcLootGenerator.generatePMCPocketLootPool()); - lootPool.TacticalVest = this.jsonUtil.clone(this.pmcLootGenerator.generatePMCVestLootPool()); + lootPool.Backpack = this.jsonUtil.clone(this.pmcLootGenerator.generatePMCBackpackLootPool(botRole)); + lootPool.Pockets = this.jsonUtil.clone(this.pmcLootGenerator.generatePMCPocketLootPool(botRole)); + lootPool.TacticalVest = this.jsonUtil.clone(this.pmcLootGenerator.generatePMCVestLootPool(botRole)); } // Backpack/Pockets etc @@ -130,7 +130,6 @@ export class BotLootCacheService } // Sort loot pool into separate buckets - const items = this.itemHelper.getItems(); switch (slot.toLowerCase()) { case "specialloot": @@ -300,17 +299,6 @@ export class BotLootCacheService } } - // // Get pocket loot - // const pocketLootItems = pocketLootPool.filter((template) => - // // biome-ignore lint/complexity/useSimplifiedLogicExpression: - // !this.isBulletOrGrenade(template._props) - // && !this.isMagazine(template._props) - // && !this.isMedicalItem(template._props) - // && !this.isGrenade(template._props) - // && ("Height" in template._props) - // && ("Width" in template._props) - // ); - // Get vest loot (excluding magazines, bullets, grenades, medical and healing items) const filteredVestItems = {}; for (const itemKey of Object.keys(vestLootPool)) @@ -332,15 +320,6 @@ export class BotLootCacheService } } - // // Get vest loot items - // const vestLootItems = vestLootPool.filter((template) => - // // biome-ignore lint/complexity/useSimplifiedLogicExpression: - // !this.isBulletOrGrenade(template._props) - // && !this.isMagazine(template._props) - // && !this.isMedicalItem(template._props) - // && !this.isGrenade(template._props) - // ); - this.lootCache[botRole].healingItems = healingItems; this.lootCache[botRole].drugItems = drugItems; this.lootCache[botRole].stimItems = stimItems;