Other user's assetsAll the assets in this file belong to the author, or are from free-to-use modder's resources
Upload permissionYou can upload this file to other sites but you must credit me as the creator of the file
Modification permissionYou are allowed to modify my files and release bug fixes or improve on the features so long as you credit me as the original creator
Conversion permissionYou can convert this file to work with other games as long as you credit me as the creator of the file
Asset use permissionYou are allowed to use the assets in this file without permission as long as you credit me
Asset use permission in mods/files that are being soldYou are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms
Asset use permission in mods/files that earn donation pointsYou are allowed to earn Donation Points for your mods if they use my assets
Author notes
The framework is licensed under Apache 2.0. In short, open perms.
The images are taken from game-icons.net, and are under a CC-BY license. https://game-icons.net/1x1/lorc/locked-chest.html https://game-icons.net/1x1/delapouite/switch-weapon.html
File credits
This author has not credited anyone else in this file
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
Bugfix: If a condition is present, but is empty, the rule is not applied anymore. Fixes issues like C.O.I.N. distributing Ayleid Mala to all containers if AE content is missing.
Significant performance improvements. Rules now distribute (on average) 100% faster.
New: Rule inversions are now possible. Prefexing any condition field (except quests) with an exclamation point ("!references") will invert the rule ("!reference" -> NOT these references, "!worldspaces" -> NOT these worldspaces
Actor Value conditions now work for Actor Values generated by Actor Value Generator. Additionally, they have been made into "AND" conditions ("Conjuration|50" and "OneHanded|50" will only apply if both values are above 50).
Improved startup speed and memory usage. This is extremely minor, since the startup already took sub-second times to execute.
Version 2.2.1
[DLL - Fixes]
Fixed worldspace settings not being respected.
Fixed allowvendors setting being controlled by the unsafe container distribution setting.
Version 2.2.0
[DLL - Core]
Fully implemented quest conditions.
Version 2.1.1
Removed test file
Version 2.1.0
[DLL - Core]
Added "randomAdd" as a condition. Random Add is a setting that changes how the default "add" field functions. Instead of adding 1 of each item in the add field, random will add only one random choice in the add field.
Added quest conditions. Those are not fully tested, so they will not be added to the documentation right away. Want to know more? Shoot me a DM.
[DLL - Fixes]
Fixed an issue where "locations" was not read.
Version 2.0.0
[DLL - Core]
Removed all events and serialization.
Instead, the mod now uses the init inventory hook to distribute, making it faster and more accurate to vanilla.
Massively boosted distribution speed.
Add now adds ALL specified items to the specified count, instead of random entries up to the count.
[DLL - Fixes]
Containers now respond to resetinventory calls, be that from papyrus or the console (or the area resetting).
Fixed an issue where the cache building would take an inordinate amount of time in certain setups.
[Settings - Additions]
New condition added: "allowVendors". This allows distributing to vendor containers.
New Feature: DistributeOnlyToVendors
New Feature: PlayerSkills
New Feature: Globals
[Update Notes]
Merchant containers are more complex than I expected. They pull from nearby containers AND distribute to them. For example, in the riverwood trader, adding things in the closet behind Lucan will cause Lucan to SELL these items. Additionally, it seems that certain references can also count as being in the merchant's inventory, but I didn't look into that much.
Version 1.7.0
[DLL - Core]
Added a cache system for leveled list results. This makes distributing in complex containers with multiple rules several times faster.
Version 1.6.0
[DLL - Core]
Added the ability to use EditorIDs instead of FormID|Modname for formatted strings. If you use that setting, PO3's Tweaks become a requirement.
Dramatically improved logging.
Dramatically improved addition handling. Instead of adding one of the options, the framework will pick a new object to add for each count above 1.
[DLL - Fixes]
Fixed edge case were only 1 leveled list was distributed.
Version 1.5.0
[DLL - Settings]
Added a new setting for distributing to unsafe containers. Unsafe containers are containers that are either marked as "no respawn" or are in a no reset zone.
Version 1.4.0
[DLL - Fixes]
Fixed a crash related to markers without a location.
Fixed a crash related to swap rules that didn't use "removeByKeywords".
Version 1.3.0
Much better Leveled List handling
Version 1.2.0
Fixed critical CTD that occured after saving and changing cells related to object serialization.
Updated version number in the DLL
Version 1.1.1
Removed some leftover logging from testing
Updated version number in the DLL
Version 1.1.0
Added better leveled list logic.
Version 1.0.0
Initial Release.
Container Distribution Framework is an SKSE plugin that allows mod authors to dynamically add items to container references without the need to replace the entire container. In addition, thanks to a robust rule system, it can also dynamically distribute to non-specific containers based on location, type of container, while leaving merchant containers untouched.
All in one Address Library (Anniversary Edition) version, regardless of whether or not you have purchased the AE DLC.
A note on runtime: As stated above, this requires Skyrim SE version 1.6.1130+, sometimes called Skyrim AE. Please do not ask me to support older versions, I don't want to have multiple Skyrim installations.