Solid-Rhoads added a new file:
QuoteDisplay MoreAutoCompatibility Framework
This Mod is Experimental
- Firstly, I do want to thank everyone that's checked out the mod so far. The response has been far greater than I expected from a mod I uploaded on a whim.
- In the interest of tempering expectations, I want everyone to know that this mod is very experimental. Please see the various tabs on this mod page for more information.
- Also, PLEASE PLEASE PLEASE do not report bugs re:attachments, ammo, filters, et cetera, to weapon and equipment mod authors after installing this mod, without first uninstalling this mod and seeing if the bug is still present. They're already annoyed at me enough
![]()
Brief Description:
This mod calculates compatibility between modded items so that they work together, but only in the places that they "should" work together based on the mod logic. This is not an "every attachment on every weapon" mod. For now only weapons, weapon attachments, and ammo are supported. In the future I may add support for gear mods like armor plates, helmet mounted gadgets, etc. TBD
Full Description:
So I threw this mod together for personal use on my own server and decided to share it with the community. It started out as just a way to try to determine magazine compatibility based on caliber, but it just kept growing as I decided to add more and more. Now it serves as a wider framework for automatically determining and implementing compatibility between modded weapons and parts.
WTT Armory Wages of Sin AR with Moxopixel attachments from MagTape and Tactical Gear Component as well as optics and components from EpicRangeTime's All In One and SamSwat Optic Port.
How it Do That?...
The script performs a web of comparisons between modded and vanilla items using their metadata, the _props of the items those modded items were cloned from, other modded weapons in your database, and pretty much cross references everything in the web. It was the best way I could think of to help the game logic answer the questions that would be simple for a human being (like: "Is this a 5.56 AR magazine? And if so, which of these other modded guns are 5.56 AR's and therefore should be compatible?") The actual workings of it are less complicated than you might think, but largely because I used LLM's to help me distill down my own initially overly complicated approach and come up with the least common denominators.
The mod SHOULD only add attachments that SHOULD be compatible. As we see here, the mod has by-and-large only added modded 5.56 AR magazines to saintdeer's MCX Virtus.
Advantage/Disadvantage:
The Advantage with this approach is firstly that there is a huge reduction in bloat over broad strokes 'every item compatible' type mods, especially in modlists with many custom weapons and attachments. Secondly, the other advantage over other more specific compatibility patches/mods is that this mod should not need to be updated every time an equipment mod is updated and new items are added or removed, or their id's are changed; This is because the mod calculates and applies compatibilities every time the server boots. The drawback is that, as such with any automation, it wont be as perfect as painstakingly curating and creating compatibility "by hand". And there will absolutely still be some mistaken and "cursed" compatibilities applied. To that end, I've implemented a config file that has some options for adjusting the scripts behavior a bit when it comes to specific items; although it will take some know-how on the part of the user.
Selecting optics on the WTT Armory ACR with new compats.
How to Install:
Same way you install every mod, pinky... Actually though, the one caveat is that this mod ABSOLUTELY needs to load after all your weapon and gear mods. I've included an ASCII Greek character at the front of the folder name so it SHOULD load after every other mod, even the ones where authors have prepended their folders with "zzzzzzzz". The greek character worked well for me, but may cause issues on non-windows machines or in languages other than english, idk; lmk if it does. If all else fails just use Load Order Editor to make sure the mod loads after all your other gear mods.
Configuration:
There is a configuration file in the mod folder - config/config.jsonc where you'll find the following:
CodeDisplay More{ //---------------- // Basic Settings: //---------------- // Enables or disables the mod. "enabled": true, // Enables detailed logging for debugging. Very verbose, only enable if you need to troubleshoot an issue. "verboseLogging": false, // Enables or disables fallback file parsing to find missing IDs. Can create new compatibilities, but can take a long time on large mod lists. // Recommended for Moxopixel TGC and a few other mods but otherwise not needed. "modFileParsing": true, // ----------------------------------------------------------------- //------------------ // Conflict Handling: //------------------ // If true, modded items inherit conflicting items from the base game item from which they were cloned. Potential for curse reduction in heavy mod lists. Disable if you notice lots of unexpected conflicts (cannot install both (item 1) and (item 2) at the same time). "inheritBaseConflicts": false, // If true, modded items inherit conflicts from other modded clones. Potential for curse reduction in heavy mod lists. Disable if you notice lots of unexpected conflicts (cannot install both (item 1) and (item 2) at the same time). "inheritCloneConflicts": false, // List of item IDs to exclude from all new conflict inheritance (normal conflicts still remain). "VoidConflicts": [ "686a5a6247c881f613196f91" // EoT Canted aim ], // ----------------------------------------------------------------- //------------------ // Manual Additions: //------------------ // List of manual additions to force compatibility between specific weapons/attachments/ammo and target items. // For when the algorithm misses something due to cloning quirks, mismatched or incomplete data. // Each entry specifies attachmentId(s) (e.g., ammo or mod) to add to the targetItemId(s) appropriate filter(s). // Each value for for both attachmentId and targetItemId accepts a single ID string or array. Enclose strings in quotes and enclose arrays in brackets. Enclose the entire entry in curly braces, separate multiple entries with commas. // Example: "ManualAdd": [{ "attachmentIds": "672e2e75ea372126f4fcb874", "targetItemIds": ["6761b213607f9a6f79017d42", "676b5088bc973cdc82247b3f", "676c3d1dcf722dad840e520b"] }, { "attachmentIds": ["672e2e757efbbef26ff61046", "672e2e7546454a975e0b7a3b"], "targetItemIds": "6761b213607f9a6f79017d42" }] "ManualAdd": [], // ----------------------------------------------------------------- //------------------------- // Whitelist and Blacklist: //------------------------- // List of item IDs to bypass proprietary slot restrictions, allowing all potentially compatible items to be added. "whitelist": [], // List of item IDs to exclude from compatibility processing entirely - Keeping them from propigating to new slots. // For when the algorithm erroneously pushes something, usually due to cloning quirks. "blacklist": [ "6683957f2e516f6146af483d", // WTT Patriot rear sight carry handle "683a4e266a0c93630610d794", // WTT Wilson Combat EDC X9 slide plate for extended slide "6761b213607f9a6f79017d5b", // WTT Wilson Combat EDC X9 tactical slide plate "684374be10b9487f8bd998cc", // WTT UCP Comp "66a47ed0df2ffbca58ebe5ed", // WTT IWI Tavor X95 front sight "66a47ed3f97061a20b99f188", // WTT IWI Tavor X95 rear sight "67a01e4ea2b82626b73d10a5", // WTT ACR PMAG 762 "68448c3ea713d53905743800", // EoT AR-15 A1/A2 Gooseneck Carryhandle mount "66713838ca123f9df8e7584e", // EoT Precision Reflex Carry Handle Mount "Gooseneck" "68448bf2f4f9b64cb687698d", // EoT AR-15 A1/A2 Carryhandle Piccatinny mount "685097dbb9aa83c9e35c5027", // EoT Glock MOS slide cap "684b271ce72d12cf50b2a0dd", // EoT TTI Pit Viper rear sight "68340d1d407f065e9c181c4b", // EoT AR-15 7.62x39 mag "683410a82481761ba836b719", // EoT AR-15 7.62x39 mag FDE "683427e8e0e4e228b35746b2", // EoT AR-15 7.62x39 mag banana "685986e77e1518fb3729a164", // EoT AR-15J .366 TKM 20 inch barrel "685986ffb813072ae5e3a91c", // EoT AR-15J .366 TKM 16 inch barrel "8af8534244b4e4189d53bec2", // Epic's Magpul M-Lok bipod "690458c8c8f726648b11ac19", // Epic's Harris 1A2-BRM Bipod with picatinny mount "23878a19adddf4afbbcc0537", // Epic's Carry Handle Tactical Picatinny Riser mount "04D04D10AB10AB4D00000000", // Massivesoft Longbow Rear Sight (why is this id so weird? It makes me uncomfortable...) // Shrapnels (EFT is cursed...) "5943d9c186f7745a13413ac9", // Shrapnel "5996f6cb86f774678763a6ca", //RGD-5 Shrapnel "5996f6d686f77467977ba6cc", // Mon50 Shrapnel "63b35f281745dd52341e5da7", // F1 Shrapnel "5996f6fc86f7745e585b4de3", // M67 Shrapnel "67654a6759116d347b0bfb86", // V40 Shrapnel "66ec2aa6daf127599c0c31f1" // O-832DU Shrapnel ] }
I can't recommend enough using a program like Notepad++ or a similar application with syntax highlighting for the editing of config files. It will make your life so much easier.
Known Issues:
- Some items don't quite sit right. Sometimes its just a wash and there's nothing you can do, but for some instances you can use Tyfon's Weapon Customizer to fix alignment issues.
- In my testing I noticed that certain mods, like MassiveSoft Weapons, add some layers of compatibility to their own items in a later hook from my mod, so you may get some warnings about items already being listed in filters or something like that. All this is telling you is basically that ACF already added the item to the slot filters. This shouldn't pose an issue.
- EFT/SPT is cursed in so many ways... Like, for example, this shit:
To be clear, my mod is NOT EVEN ENABLED in this screenshot (so don't blame me for every instance of curse you encounter with this and other mods installed lol). Yeah, nah, this is pure, good old fashioned EFT BS. Its all mod_scope... why is it all mod_scope??
- And finally just note that the mod isn't perfect and will occasionally add things that shouldn't be added or miss things that should. Its not infallible and is at its core somewhat rudimentary - For now you can blacklist items from compatibility calculations if they end up in the wrong places, but this nukes all their added compatibilities, so its not the best solution. I haven't added a granular way to do a "manual remove" in the same way I implemented "manual add".
Conflicts:
- I tested this mod in my current server setup which is running 100 server mods and didn't notice any incompatibilities or conflicts, other than the small one listed above. At its core this is a item database edit mod, so its compatibility should be relatively extensive.
- The mod should also only make additions, not subtractions to filters, and only on modded items, not vanilla ones. So it should be relatively low impact on mods adjusting vanilla items.
- The mod relies heavily on caliber for computing magazine and ammo compatibilities, so if a mod adjusts calibers may not work the best in tandem with ACF, just be aware.
- I'm not sure how this will interact with bot generation mods when they have custom item imports on, because in my testing I always loaded this last. Theoretically if you put it in the load order before a mod like APBS or ALP and enable custom weapons and attachments in those mods, the new compats from this mod may propagate to the bot generation. But it depends on how those mods handle bot loadout generation and when.
Support:
- Support on this mod is going to be limited because, again, I made it for myself, for my personal server build, and for my friends. I'm sharing it with the community just because I thought it was neat and I wanted it for myself so I figured some other folks might want something like this too. So I'm providing it "as is" and if it gets updated it will probably be because I added functionality to it for myself first.
- That said, if there's something truly broken or something like that, I'll try to address it. I'm deep into trying to configure a new custom configured server build for SPT and my satisfaction with it really determines if I'm going to jump back in to the deep end of SPT.
- Also if you're here to ask about my trader mod and if I'm going to update it to SPT 3.11... I might. I'm not sure. I have really big plans for it that I currently don't have time to execute on, and I knew I wouldn't be satisfied with just updating to 3.11 with no new content. If an update is coming for it I'll post something on the mod page. (also if its your first time looking at that mod page, I need to apologize for how bat shit insane it is
SPT was kind of a madhouse when I dropped that mod, fresh off the chaos and mass exodus resulting from the unheard edition controversy, so I came at it with an energy that seems wildly unnecessary for the current (much chiller by comparison) SPT community. lolz)
Q1: Why isn't 'Modded Attachment X' appearing on 'Vanilla Item/Weapon Y'?
This mod only uses vanilla items as a reference point in calculating compatibility between modded items. It doesn't (or shouldn't) be affecting the filters of vanilla items. This is because in theory the mod authors of those modded items already have their items being added to the vanilla filters that they want them added to. This mod will absolutely not remove anything from vanilla filters either.
Q2: Manual Add is not adding 'Modded Item X' to 'Vanilla Item/Weapon Y'?
Essentially the same answer as Q1. As of right now ManualAdd does not override the core limitations of the mod to affect the filters of vanilla items. This may change in the future, but right now enabling modifications to vanilla item filters is a secondary objective.This has changed in v1.3.0 and manualAdd can be used to add to vanilla filters. This remains the only way this mod will touch vanilla filters, if you explicitly enter it in a manualAdd entry.
Q3: Can't you just accomplish the same thing this mod does with load order?
Answer is Yes and No; You can have your weapon mods load first in your load order then have the attachment mods load after, and as long as the attachment mod is compatible with the vanilla weapon from which the new modded weapon was cloned, the attachments should appear (I've had two people so far tell me its the other way around, but don't take my word for it, just try it yourself**). This is actually why some of my example images are bad examples, because yes, you could get the WTT WOS AR with those moxopixel attachments and EpicRangeTime attachments by just having the attachment mods load after WTT Armory.
First issue with this though, is that a lot of people don't know about the way load order works when it comes to this topic - And WTT Armory starting with a "W" means if people aren't actively editing their load order, they often never see other attachments added to WTT weapons, because it loads near the end of their server mods. I've also seen SPT staff actively discourage people (with good reason) from mucking around with their load order too much unless they know what they're doing. So that's point one of this mod, it seeks to be plug and play without needing to mess with your load order.
Now if you DO alter your load order to add compatibility, this works fine if you are only using a couple mods that handle mostly just weapons or mostly just attachments. The problem with this though is that the compatibility through load order is linear. So when you have a lot of mods, like I do, some adding weapons AND attachments in a single mod, only the weapon mod that loads first will receive the attachments from the mod that loads after and not the other way around; So on and so forth down the chain. For example: Take WTT Armory and Echoes of Tarkov, both add weapons AND attachments. If you load WTT first, its weapons may inherit attachments from EoT, but EoT's weapons will not inherit attachments from WTT, and vice versa if you flip the load order. This mod seeks to be omnidirectional in this regard, at the cost of accuracy and a (hopefully only) slight increase in the potential for cursed guns.
Oh and I'm not even going to get deep into the fact that even in your "strictly weapon" mods, most of those components are technically attachments. Like the lower receiver of an AR is "the gun" but even the upper receiver is technically an attachment, so even two "strictly gun" mods may have the potential for cross compatibility that would be limited by load order.
Case and point: If you want simple compatibility between a few mods and don't mind missing out on a few things, use load order to create that compatibility by loading weapons first, then the attachments you want propagated to those weapons after. If you're a goblin and want it ALL (at the cost of maybe a couple misses and some slightly spooky guns) with omnidirectional compatibility and no need to mess with load order, use this mod. Pros and cons to each. As always:
Q4: This:
Already addressed this at bullet point 4 under known issues. Its harmless. Another mod is trying to retroactively add compatibilities to its items at a later hook than mine, but ACF already added them.
**Technical details on this one point in case you are a dev (nerd) and are wondering why: So as I understand it, when you create a cloned item via custom item service it inherits everything from the item you clone it from, then you alter props and locales to meet the desired values of your new item. If you explicitly define, for example, new filters for "mod_scope" it overwrites the base items filters and now you've only whitelisted those attachments for "mod_scope". If you load your weapon first, you define that list, but things like the "name" (not the one from locales, that's the one you usually change) actually remain the same as the item you cloned from (I actually didn't realize this until I began developing this mod and output every detail of all my modded items to a log). So when you load attachments after your new weapons and parts they still show enough info from the original item to have those attachments added to their filters. BUT, if you load your new weapon AFTER the new attachments, and you explicitly defined the filters for those mod slots, it will overwrite whatever has been added and once again explicitly white list only the attachment id's that you've added. I hope this makes sense, I had to do a lot of digging and really figure out SPT's "order of operations" for this stuff to make this mod work the way it does.
So again, the response to this mod has definitely been greater than I expected. I uploaded on a whim because I though the mod worked okay enough and figured a few people might want to use it; fast forward to over 3000 downloads in about the first week, and now I feel like I should probably bring the mod up to a standard that I'm happy with so many people including in their modlists.
That said, my time is limited. Modding is just a hobby for me, I don't consider myself a real dev, just 'one who dabbles'; But I'll try to devote what time I can to making this mod as accurate and efficient as is allowed within the limitations of EFT/SPT. So with that...
The Roadmap:
- Phase 1:
- Squash as many bugs in 1.X.X as possible
- Improve core logic within the current 1.X.X build
- Reduce as many instances of erroneous propagation as possible within the current methodology
Improve ammo handling (calibers, cartridges, chambers)Fix applied in v1.3.0- Improve functions related to base item references (mostly in the instance of clones from unexpected items --- ex: mod mag that is essentially an AR mag, but is cloned from a base game AK mag)
- Add function for better handling "stacked" attachments (mod_scope that attaches to mod_scope that attaches to mod_scope...)
Refine or remove attachment conflict inheritance all together. Meant to reduce curse in generated weapons, but seems to be more of an inconvenience to people than anything. I would just have it hook into bot loadout generation, but I don't want to create conflicts with dedicated bot loadout mods like APBS, ALP, etc. TBDStill included, but disabled by default as of v1.3.0.- If necessary, improve manualAdd functionality and user experience for that feature in the config
- Added array support in 1.3.0
- Possibly implement a manualRemove function as a granular step before full blacklist, but...
- Ideally I want to reduce the need to use manualAdd, a manualRemove, blacklist, and/or whitelist, as much as possible so changes to these features/functions are a secondary focus.
- Phase 2:
- Experiment with some other methods for compatibility calculations
- I have a few in mind, but will need time to test them. Getting 1.X.X mostly stable comes first
- At this stage, these new methods would only be released in test builds if at all
- Added early version of file parsing in v1.3.0 to cover some omissions, but utility could be expanded.
- Incorporate caliber normalization
Briefly experimented with this, but kept breaking the function or impeding other functions. I intent to return to the idea though.- Rudimentary version in 1.3.0 in the form of a specific patch for Choccy .300 WinMag
- Phase 3:
- Take the results of Phase 2 and implement into build 2.0.0 combining with methods from 1.0.0 or supplanting them entirely depending on results.
- Bug fix 2.0.0 based on feedback
- TBD:
- Future stuff
- Add support for logical additions to vanilla filters that may be absent
- Added early version of file parsing in v1.3.0 to cover some omissions
Add support for manual additions to vanilla items/filtersalready done in v1.3.0- Add support for modded gear filters (probably mostly unnecessary, but could add a few compats)
Gallery
I was thinking it might be kinda cool to create a little community gallery of people's modded weapons with the extra compats from ACS.
(This is also a very funny way to let me know about weird parts being in places they shouldn't be.)
You can make submissions to be featured in the gallery by uploading to this Google Form.
Desert Tiger
Quick little black and tan build to get us started. WTT Armory Wages of Sin (yes I like building with this AR a lot). Lots of TGC parts on this one since they are working better with ACS in the new update. And of course we have parts from Epic's All in One.
Credits:
- AcidPhantasm --- Looking at their code really helped me figure out the best way to isolate modded items from vanilla ones in the script; Without that this mod probably wouldn't exist.
- MoxoPixel --- Again, some of the main reasons I wanted to make this was to use their mags with any weapon; But also because in development I looked at and reverse engineered some of their methods to use in propagating compatibilities.
- All the amazing modders making custom weapons and equipment for SPT. They drove me to do this. This is their fault.
- The heralds of the apocalypse. I mean, Copilot, Chat GPT, and Grok
; For helping me boil down my insanely over complicated approach to this mod into much more organized and condensed steps. I feel like I lost a bit in the process, but hey...
Finally,
If you like my mods and wanna show me a little support, you can:
Also in lieu of donations to me, I also fully endorse donating to the Lupus Foundation of America and the National MS Society. I personally have Systemic Lupus, and my mother had MS for most of her life before she passed - so these causes mean a lot to me. Giving is appreciated.
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()