Balanced Overhaul Of Bullet Spawns (BOOBS) 1.1.5

Please do not ask when mod authors will update their mods to 3.9.X
Bothering mod authors will lead to warnings and repeat offenses will lead to eventual bans.

All ammo types spawn as loose loot, balanced by caliber and tier!

WHAT IT DO:

Adds cardboard ammo boxes for all rounds in the game (soon also 6.8mm!), and then rebalances the loose loot for each map to give a good variety of all ammos, balanced by caliber and also by tier. (it will also spawn UGL rounds, grenades, and flares rarely).


Config stuff:

If you have Realism installed with his ballistics overhaul toggled on, I recommend setting "spt_realism_ammo_compat" to true in the config.json file to make the ammo weights adjust for Fontaine's ammo balancing.


I have already set up a decent set of weight multipliers, but if you want to mess with them yourself, you can do so in BOOBS/config/configs/weights.json (or the realism equivalents if that setting is set to true). Know that the weighting of each caliber will equalize, meaning if all caliber multipliers are set to 1 you will get an even mix of all calibers, and then the tier weights will kick in to determine which round in each caliber you see spawn more often. Huzzah for fancy math (thanks ChatGPT)


Add the parent id's of items to the config.json spawnpoint_item_type_blacklist array to stop BOOBS from overwriting spawn points that contain any items of those types.


To install:

-Unzip the file into your base SPT directory - it should have the right filepath loaded already!


Planned Features:
-Different weightings per map

-Different weightings for hotzones (like Kiba, etc)

-Custom assets/ retextures for the ammo boxes to make it easier to differentiate between ammos
-Expand ability of the mod to read other JSON's, allowing for future mods to add info, in the vein of Fontaine's Realism compatibility files!


Thanks to nazgulofmorgul for making the first push towards updating to 3.9.x!


HUGE thanks to those who tested this mod for me!

-FullerK_55

-Nosliw

-ComradeJagrad


If you'd like to support Jehree's work, you can buy him a coffee!

  • Version 1.1.5

    Fixed some functionality by sacrificing readability, this is temporary though.
    Loose grenades, flares, and UGLs should now spawn as well.
    Weightings should apply properly now, hopefully fixing the bullet overload problems from previously.
    If not, you can manually add "disabled": true to the various boxes in ammoboxes.json. I'm also working on a way to make that process simpler.

  • Version 1.1.4

    Fixed a dumb mistake I made when merging my work into Jehree's original repo, causing crashes. Thanks to CJ for catching it before I even had a chance to look at the code.

  • Version 1.1.3

    Raychadbury's taking up some maintenance and updating work to keep this lovely mod going forward!

    Updated all ID's to mongoID, and added boxes for 6.8mm FMJ+Hybrid (Which don't have boxes in vanilla!)
    Since this lets all the old boxes spawn again, on top of the newer vanilla ones, it might result in overwhelming amounts of bullets - please report if you have any issues or the numbers seem ridiculous!

  • Version 1.1.2 - SPT ~3.8

    Updated package.json to ~3.8.


    No changes were made to the mod itself for 3.8.3. I have been playing with it without issue.

  • Version 1.1.2

    Fixed bug that caused error upon raid load when Realism compatibility setting enabled. Thank you <3 monarrez95 for pointing it out and finding the fix!


  • Version 1.1.1

    Math is hard and my brain hurts.


    1. Hopefully fixed errors that would happen occasionally upon loading a raid. These were caused by item spawn weights being set to 0, I made their minimum = 1.
    2. Fixed math error causing empty categories to still receive point allotments. Now if a category is empty, it's weight setting is set to 0, meaning the other categories will receive more points to compensate for the empty one. See the end of this changelog for a math example if you care (I have to write this garbage somewhere or I'll forget).
    3. Removed ammo box disable feature as it really isn't needed.


    Dumb math example:

    Total allotted points for all tiers = 100


    Tier 1 weight = 1

    Tier 2 weight = 1


    Tier 1 has 2 ammos in it.

    Tier 2 has 0 ammos in it.


    BEFORE:

    Tier 1 receives 50 points.

    Tier 2 receives 50 points.


    Both tier 1 ammos would receive 25 points.


    Tier 2 has no ammos to apply its 50 points to, so they are lost.


    Because Tier 2 doesn't have any ammos in it, the total of all the ammos in the tier is only 50 instead of the total 100 points we gave it.


    NOW:

    Tier 2's weight is adjusted dynamically to 0 because it was detected that it contained 0 ammos.


    Tier 1 receives 100 points.

    Tier 2 receives points.


    Both tier 1 ammos would receive 50 points.


    All ammos correctly add up to 100.

  • Version 1.1.0

    This update adds ammos added with Streets expansion, does a LOT of backend code cleanup, and adds a blacklisted item type feature.


    Any spawn points containing one or more items with parent ids present in the config.json spawnpoint_item_type_blacklist array will be skipped when loose loot is edited. This is to hopefully keep the mod from overwriting spawn points like Customs giving tree, various marked rooms, etc. that can spawn many item types and not JUST ammo.


    If you find any spots that were previously spawning high value loot but now only spawn ammo boxes, please let me know so I can try and blacklist those spawn points.

  • Version 1.0.1

    Should still work on 3.6.0. Scream at me if it doesn't.


    Fixed issue with SSA AP box giving Warmageddon/ being empty when found in raid

  • Version 1.0.0

    Moved proj to GitHub

  • Here is updated version for 3.9 as author wanted someone to update it for him on discord

    https://drive.google.com/file/…u3GlhOTn/view?usp=sharing

    virustotal scan:

    https://www.virustotal.com/gui…e43665d6555ec81?nocache=1

    This is just a straight port that works for 3.9 any previous issues with the mod will still be present

    • ayo you're a legend, thanks!

    • I knew that checking on this mod before every single time I play SPT would pay off eventually. What a god-damned legend.

  • THIS MOD MUST BE LOADED BEFORE LOTS OF LOOT IN ORDER TO WORK PROPERLY WITH IT


    If you are finding empty ammo boxes in raid:

    -If you use LOE or some other method to edit load order: open it and ensure BOOBS is loading before Lots Of Loot

    -If you don't: delete the order.json file and let it regenerate upon next server load

  • Boobs :) :thumbup:

  • Looking at the code in ammoboxes.json it seems that the mod adds ammo boxes to all calibers, regardless of whether SPT already has an ammo box for this caliber. In the latest version, SPT already has ammo boxes for most of the calibers (.338, .357, 556, etc). Is there a way to make sure those boxes are integrated into the mod distribution list instead of creating new ones?

    Thinking 1
  • @raychadbury
    Version 1.1.5 is broken because the code at around line 308 is still referencing "roundInBox_name" for setting the weights - which is the common name of the bullet - but you broke that association when you changed all of the common names to MongoIDs in the ammotiers.json.


    You need to either update all of the roundInBox_names to ALSO be the new MongoIDs, or you need this function call to pass the MongoID in. My quick and dirty local fix was to pass in 'boxTpl' to the itemWeights function instead of what it's currently using.


    And also, you packed version 1.1.5 incorrectly for drag-drop install. You're missing the actual BOOBS folder inside the mods directory.

    ===============================

    @Everyone else:
    If you aren't that tech savvy, just downgrade to 1.1.4 and wait patiently.

    To my tech savvy users trying to get 1.1.5 to work because finding loose grenades really tickles your pickle enough to bother tweaking files:

    ..\user\mods\BOOBS 1.1.5\src

    0. Ensure your Server instance and Tarkov are not running

    1. Delete mod.js

    2. Delete mod.js.map

    3. Open mod.ts in a usable text editor like Notepad++ or your favorite IDE.

    4. At Line 308:

    --- a. Replace "itemWeights[thisBoxConfig.roundInBox_name]"

    --- b. With "itemWeights[boxTpl]"

    --- c. Save mod.ts

    5. Start the Server instance and ensure that mod.js and mod.js.map are regenerated in the src folder.

    6. You should no longer get errors about missing weights.

    Heart 2 Happy 1 Thumbs Up 2
  • Check weights Json for mispelled ammo

    • Get the version that's in the top comment

    • Ok i found the correct button

    • The person who took over updating BOOBS didn't update all of the references to ammo names in the various files when they converted them to MongoIDs.

      I made a comment that's near the top explaining how to fix it in your local copy if you really want the new features from 1.1.5.

      If you're not that tech savvy, you just gotta downgrade to 1.1.4 and wait patiently until they fix it.

  • no file folder after user>mods

  • the file structure is broken for the newest version 1.1.5. it goes "user/mods/ config, src, LICENSE, package.json, README.md. I know how to install it properly but many may not.

    Thumbs Up 1
  • Thanks for the latest update! Did you manage to get rid of the duplicated boxes in the latest version?

  • Hi, just wanted to let you know that the folder is kinda scuffed on the 1.1.5 download, it puts all the files directly into the mods folder, it has no folder for the mod itself

    Also thanks for the mod of course!

    • add another folder called BOOBS 1.1.5 in BOOBS.1.1.5\user\mods and put the contents in there.

    • Yeah obviously, but some people might just drag the user folder and then wonder why the mod is not working. I just wanted to let the author know

  • Hey, what is "Check weights Json for mispelled ammo" error?
    I just have a reallism with ballistics disabled, and a lot of mods that add more ammo, and mods that change its weight to zero.
    The 3.9 version of mod from comment above works fine, but last version is a mess
    (Sorry, no Offence, you have an absolutely amazing mod!)

    • I just installed a clear SPT without anything but this mod, and issue still persist

    • same here, i'm switching back to 1.1.4 for now.

    • Yes, i get also a hundred time the "Check weights Json for mispelled ammo" Error!

    • The person who took over updating BOOBS didn't update all of the references to ammo names in the various files when they converted them to MongoIDs.

      I made a comment that's near the top explaining how to fix it in your local copy if you really want the new features from 1.1.5.
      If you're not that tech savvy, you just gotta downgrade to 1.1.4 and wait patiently until they fix it.

  • Ah news updates for BOOBs? Was not expected, but glad to see.

    I'm glad that I've been validated and am not crazy. Was thinking that I had yet to see a 6.8 bullet box in the wild and was beginning to think that I was nuts. Glad to see an update adding it.

  • Thanks for updating the mod! It was a must-have for SPT 3.8.


    It would be great if you could clean the mod and eliminate dupes. I believe the latest SPT version has most of the ammo packs added to the game (minus 6.8). Thanks!

    • That should be an easy fix, it'll be in the next time around.

      Heart 1
  • Currently crashing with


    • Exact same problem :/

    • Me too

    • Sorry about that, I made a dumb mistake when merging my work with Jehree's repo. Should've been fixed in the latest version.

      Heart 2
    • Cheers, can confirm it works now :)

  • The application had a critical error and failed to run

    Exception produced: Error


    Stacktrace:

    Error: Cannot find module 'C:/snapshot/project/obj-aki/models/spt/logging/LogTextColor'

    Require stack:

    - C:\SPT\user\mods\~Jehree-BOOBS-1.1.3\src\mod.js

    - C:\snapshot\project\obj\loaders\PreSptModLoader.js

    - C:\snapshot\project\obj\controllers\GameController.js

    - C:\snapshot\project\obj\callbacks\GameCallbacks.js

    - C:\snapshot\project\obj\di\Container.js

    - C:\snapshot\project\obj\Program.js

    - C:\snapshot\project\obj\ide\ReleaseEntry.js

    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)

    at Function._resolveFilename (pkg/prelude/bootstrap.js:1955:46)

    at Function.Module._load (node:internal/modules/cjs/loader:985:27)

    at Module.require (node:internal/modules/cjs/loader:1235:19)

    at Module.require (pkg/prelude/bootstrap.js:1851:31)

    at require (node:internal/modules/helpers:176:18)

    at Object.<anonymous> (C:\SPT\user\mods\~Jehree-BOOBS-1.1.3\src\mod.ts:7:1)

    at Module._compile (node:internal/modules/cjs/loader:1376:14)

    at Module._compile (pkg/prelude/bootstrap.js:1894:32)

    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1435:10)

    • Should be fixed now, let me know if there's anything else.

    • Thank you so much!

  • Every time I find a box of shit 9x18 ammo I'm reminded of this wonderful mod.

  • You have cursed me with the existence of this mod. I thought to myself "Oh, I'll just play 3.9 without it, it can't be that bad" and now finding ammo boxes feels horrible because it's like all shitty 5.45 SP ammo.

    Playing with this throughout most of my 3.8 time made me really take for granted how much heavy lifting this was doing for making ammo-loot worth considering.

    • I'm sorry okay! I'm a flippant hoe who can't pick a hobby. I'll try REALLY hard to will myself to work on it later today :D

      Heart 1
  • Hi Jehree, I created a PR ;)

  • Hi, does this conflict with Leaves Relooted?

    • Relooted does alot of similar things to Lots of Loot so I'd say so long as this mod is loaded first, it'll be compatible

  • Hey in the most updated download the package.JSON is outside of the mod folder


    Is it ok to just put it into the mod folder or does it need to be loose in the user/mods folder?

    • Oh gosh sorry about that lol, yes drop it in the mod folder. I also fixed the download.

    • :)

  • Thank YOU so much for updating this mod! A must-have for hardcore gameplay!


    Just a quick note, I think the latest version does not take into account 6.8x51 ammo...

    • No it likely doesn't, I didn't update the mod itself at all, I just confirmed it works. I may or may not add that caliber eventually but I'm not up to rebalancing all the weights right now.

    • @Jehree 


      I see. Could you consider adding the 6.8 caliber without balancing weights - as a temporary solution? I think we can adjust the weights ourselves :)

    • I'll look at it the next time I sit down to work on my mods, do you know of any other new calibers that are missing?

    • @Jehree 


      Thanks a million! I think now we are missing only 6.8x51mm (two types of ammo). But there might be a few extra, I have not played LIVE in ages!

    • @Jehree 


      Hey, I was looking through the config and I could not find any of the 5.45x39 120 ammo boxes. Did you remove them from spawning options?

  • hey is this going to get updated?

    Crying 1
  • Hello! i gad this error message in error log file repeaed while loading the raid, should i be worry?


    Code
    2024-01-13 13:43:10.384 +08:00|0.13.5.3.26535|Error|Default|Could not add item item_ammo_box_762x39_20_FMJ (id: 65a222eca0849ba4eb000437) to stackslot cartridges in item 7.62x39_FMJ_BOOBS_ammobox (id: 65a222ec68acd0ea5f00054c). Reason: System.Exception: Inventory configuration error
    at ItemFactory.FlatItemsToTree (GClass1101[] flatItems, System.Boolean silentMode, System.Collections.Generic.Dictionary`2[TKey,TValue] preexistingItems) [0x0023f] in <f7f3726f1deb4e1fabfff17fea715bfa>:0
  • i think this mod blocks the spawning of items under the giving tree on customs

  • Hey Jehree, I come with a solution to your problem.


    Many people are reporting the issue with the "spt_realism_ammo_compat" setting being set "true" cause this error:


    TypeError: Cannot read properties of undefined (reading '_tpl')

    TypeError: Cannot read properties of undefined (reading '_tpl')

    at LocationGenerator.createDynamicLootItem (C:\snapshot\project\src\generators\LocationGenerator.ts:647:38) blah blah blah...


    So anyway, I was digging around the files and comparing the vanilla files to the realism files and found the problem:


    in the weights_realism.json, under calibers - you incorrectly labeled 5.7x28 as "57x26".


    After editing it to 5.7x28 I didn't get the error afterwards, just a simple edit for a hotfix.

    Hopefully this reliefs some stress from all the comments reporting this very problem. :) Cheers!

    • You God damned legend haha. Thank you so much. I fixed a bunch of typos in the caliber names with the 3.7.1 update, must've missed that one.


      I'll push an update with your fix later tonight. Thanks again!

      Heart 1
    • I just have to reply again, life has been stressful and I really appreciate you figuring this out for me. Thanks, friend. :)

      Heart 2
    • No problem, happy to have helped! :thumbup:

      Happy 1 Heart 1
  • Top tier mod, fixed a conflict I had with universal ammo and KMC Core where it'd load raids forever and this fixed it without any conflicts on other mods, big thanks!

  • BOOBS

  • Still getting this error with the latest version 1.1.1. No errors until BOOBS is added to mod folder.


    Mod Order


    SPT_Realism

    BOOBS

    DoorBreacher

    Priscilu

    QuestingBots

    Waypoints


    TypeError: Cannot read properties of undefined (reading '_tpl')

    TypeError: Cannot read properties of undefined (reading '_tpl')

    at LocationGenerator.createDynamicLootItem (C:\snapshot\project\src\generators\LocationGenerator.ts:647:38)

    at LocationGenerator.generateDynamicLoot (C:\snapshot\project\src\generators\LocationGenerator.ts:557:43)

    at LocationController.generate (C:\snapshot\project\src\controllers\LocationController.ts:96:81)

    at LocationController.get (C:\snapshot\project\src\controllers\LocationController.ts:66:21)

    at LocationCallbacks.getLocation (C:\snapshot\project\src\callbacks\LocationCallbacks.ts:33:66)

    at RouteAction.action (C:\snapshot\project\src\routers\dynamic\LocationDynamicRouter.ts:20:55)

    at LocationDynamicRouter.handleDynamic (C:\snapshot\project\src\di\Router.ts:69:59)

    at HttpRouter.handleRoute (C:\snapshot\project\src\routers\HttpRouter.ts:68:63)

    at HttpRouter.getResponse (C:\snapshot\project\src\routers\HttpRouter.ts:47:18)

    at AkiHttpListener.getResponse (C:\snapshot\project\src\servers\http\AkiHttpListener.ts:145:38)

    TypeError: Cannot read properties of undefined (reading '_tpl')

    TypeError: Cannot read properties of undefined (reading '_tpl')

    at LocationGenerator.createDynamicLootItem (C:\snapshot\project\src\generators\LocationGenerator.ts:647:38)

    at LocationGenerator.generateDynamicLoot (C:\snapshot\project\src\generators\LocationGenerator.ts:557:43)

    at LocationController.generate (C:\snapshot\project\src\controllers\LocationController.ts:96:81)

    at LocationController.get (C:\snapshot\project\src\controllers\LocationController.ts:66:21)

    at LocationCallbacks.getLocation (C:\snapshot\project\src\callbacks\LocationCallbacks.ts:33:66)

    at RouteAction.action (C:\snapshot\project\src\routers\dynamic\LocationDynamicRouter.ts:20:55)

    at LocationDynamicRouter.handleDynamic (C:\snapshot\project\src\di\Router.ts:69:59)

    at HttpRouter.handleRoute (C:\snapshot\project\src\routers\HttpRouter.ts:68:63)

    at HttpRouter.getResponse (C:\snapshot\project\src\routers\HttpRouter.ts:47:18)

    at AkiHttpListener.getResponse (C:\snapshot\project\src\servers\http\AkiHttpListener.ts:145:38)

    • Reinstalling the mod fixed the error for me

    • When you re-installed did you set the realism config to true again?. I had this same issue and tried re-installing then I set the config to true again before re-loading the game and when I tried going into a raid it kept giving me the error?

    • @Chaos_Mortal, does this happen to you every time with realism compat enabled or only sometimes?

    • I too am having this issue with realism config enabled.

    • Every raid or only sometimes?

  • Would you ever consider making a version/compat/whatever of BOOBS for the Extra Ammo for Everyone mod?

    • I myself probably would not, but it wouldn't be too hard for someone to edit the json files to add support for those ammos. If they did I could throw them in as an option to be toggled on.

    • I am getting an error.

      TypeError: Cannot read properties of undefined (reading '_tpl')

      TypeError: Cannot read properties of undefined (reading '_tpl')

      at LocationGenerator.createDynamicLootItem (C:\snapshot\project\src\generators\LocationGenerator.ts:647:38)

      at LocationGenerator.generateDynamicLoot (C:\snapshot\project\src\generators\LocationGenerator.ts:557:43)

      at LocationController.generate (C:\snapshot\project\src\controllers\LocationController.ts:96:81)

      at LocationController.get (C:\snapshot\project\src\controllers\LocationController.ts:66:21)

      at LocationCallbacks.getLocation (C:\snapshot\project\src\callbacks\LocationCallbacks.ts:33:66)

      at RouteAction.action (C:\snapshot\project\src\routers\dynamic\LocationDynamicRouter.ts:20:55)

      at LocationDynamicRouter.handleDynamic (C:\snapshot\project\src\di\Router.ts:69:59)

      at HttpRouter.handleRoute (C:\snapshot\project\src\routers\HttpRouter.ts:68:63)

      at HttpRouter.getResponse (C:\snapshot\project\src\routers\HttpRouter.ts:47:18)

      at AkiHttpListener.getResponse (C:\snapshot\project\src\servers\http\AkiHttpListener.ts:145:38)

      TypeError: Cannot read properties of undefined (reading '_tpl')

      TypeError: Cannot read properties of undefined (reading '_tpl')

      at LocationGenerator.createDynamicLootItem (C:\snapshot\project\src\generators\LocationGenerator.ts:647:38)

      at LocationGenerator.generateDynamicLoot (C:\snapshot\project\src\generators\LocationGenerator.ts:557:43)

      at LocationController.generate (C:\snapshot\project\src\controllers\LocationController.ts:96:81)

      at LocationController.get (C:\snapshot\project\src\controllers\LocationController.ts:66:21)

      at LocationCallbacks.getLocation (C:\snapshot\project\src\callbacks\LocationCallbacks.ts:33:66)

      at RouteAction.action (C:\snapshot\project\src\routers\dynamic\LocationDynamicRouter.ts:20:55)

      at LocationDynamicRouter.handleDynamic (C:\snapshot\project\src\di\Router.ts:69:59)

      at HttpRouter.handleRoute (C:\snapshot\project\src\routers\HttpRouter.ts:68:63)

      at HttpRouter.getResponse (C:\snapshot\project\src\routers\HttpRouter.ts:47:18)

      at AkiHttpListener.getResponse (C:\snapshot\project\src\servers\http\AkiHttpListener.ts:145:38)

      I am getting this error when trying to start a match.

    • Did this happen upon loading into a raid?

    • Yes. I had just switched from the previous version of boobs. Was getting an error with the ammo boxes from old version and I used the system delete option to delete all the bugged ammo boxes. Error happened before and after the system deleted all the old ammo boxes that were in the previous version when loading into the raid.

    • I see, it should only be sometimes that this happens. I think I messed up an id somewhere. I'll dig into it later tonight.

  • i like boobs gud job