File information
Last updated
Original upload
Created by
ThirdEyeSqueegeeUploaded by
ThirdEye3301Virus scan
Safe to use
Tags for this mod
Current section
About this mod
Add/remove items and leveled lists to/from containers at runtime à la SPID
- Requirements
-
Nexus requirements
Mod name Notes Address Library for SKSE Plugins powerofthree's Tweaks Off-site requirements
Mod name Notes Latest Visual C++ Redistributables (x86/x64) Skyrim Script Extender (SKSE64) Mods requiring this file
- Permissions and credits
-
Credits and distribution permission
- Other user's assets All the assets in this file belong to the author, or are from free-to-use modder's resources
- Upload permission You can upload this file to other sites but you must credit me as the creator of the file
- Modification permission You 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 permission You can convert this file to work with other games as long as you credit me as the creator of the file
- Asset use permission You 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 sold You 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 points You are allowed to earn Donation Points for your mods if they use my assets
Author notes
This author has not provided any additional notes regarding file permissions
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
- Changelogs
-
-
Version 2.1.3
- Fix unnecessary logfile generation
-
Version 2.1.2
- Fix CTD introduced in v2.1.1
-
Version 2.1.1
- Fix duplicate items being added after loading a save
-
Version 2.1.0
- Add support for filtering by location or location keyword
-
Version 2.0.4
- Fix container reset handling
- Fix parsing of REMOVE ALL statements with a defined chance
-
Version 2.0.3
- Fix inventory count lookup related CTD
-
Version 2.0.2
- Fix items not being distributed to merchant chests
-
Version 2.0.1
- Fix form lookup related CTD
-
Version 2.0.0
- Add support for distributing to container references
- Fix chance-based distribution
- Fix leveled list handling
- Fix container reset handling
- Remove REPLACE and REPLACE ALL distribution
-
Version 1.2.0
- Add chance-based distribution
-
Version 1.1.4
- Fix leveled list distribution bug accidentally introduced in previous version
- Fix CTDs on death and when loading a save
-
Version 1.1.3
- Fix CTD before main menu caused by files with non-Latin characters in their name
- Fix(?) CTDs on death or loading a save--unconfirmed, needs testing
-
Version 1.1.2
- Add support for REPLACE ALL without count (not specifying a count replaces all of the lhs item with the same number of the rhs item)
-
Version 1.1.1
- Fix REMOVE parsing accidentally picking up plugins with "-" in their name
- Improve performance
- Improve logging
-
Version 1.1.0
- Rewrite mod (previous implementation was written in less than a day lol)
- Add support for distributing to containers by FormID
- Improve conflict checking
- Improve logging
- (Hopefully) fix the very hard to track down CTDs that some people are experiencing
-
Version 1.0.1
- Add REMOVE ALL and SWAP ALL support
-
Version 1.0.0
- Initial release
-
Container Item Distributor
Add/remove items and leveled lists to/from containers at runtime à la SPID. Uses distributions defined in _CID.ini files found in the root folders of mods, similar to other distributors.
NOTE: A container is any object whose inventory can be accessed by the player--this includes chests, end tables, NPCs, etc.
When reporting bugs, please make sure you enable debug logging in ContainerItemDistributor.ini, replicate the bug, and post the debug log along with your report.
Usage
_CID.ini files consist of key-value pairs where the key is the FormID and Plugin Name OR EditorID of the container to distribute to and the value is a Distribution String.
Distribution String:
- <DISTR> := <identifier>|<count>[|<location>][@<location_keyword>][?<chance>]
- Tokens in brackets are optional
- Tokens in brackets are optional
- <identifier> := FormID~PluginName OR EditorID
- FormID~PluginName example: 0x3301~Skyrim.esm
- FormID~PluginName example: 0x3301~Skyrim.esm
- <count> := a natural number
- <location> := FormID~PluginName OR EditorID (optional)
- <location_keyword> := FormID~PluginName OR EditorID (optional)
- <chance> := a natural number (optional, defaults to 100 if not specified)
NOTE:
- An optional <location> token can be used to skip containers whose current location doesn't match the given location
- An optional <location_keyword> token can be used to skip containers whose current location doesn't have the given keyword
Distribution strings can be used to define ADD, REMOVE, and REMOVE ALL statements:
ADD syntax:
- <ADD> := <DISTR>
- Example: 0x9e2af~Skyrim.esm|50
- Example: 0x9e2af~Skyrim.esm|50?50 will add 50 Spell Tomes of Healing with 50% probability to all instances of the given container
- Example: 0x9e2af~Skyrim.esm|50|RiftenMistveilKeepLocation?50 will add 50 Spell Tomes of Healing with 50% probability to all instances of the given container that are in RiftenMistveilKeepLocation
REMOVE syntax:
- <REMOVE> := -<DISTR>
- A leading - identifies a REMOVE statement
- Example: -BearCavePelt|50
- Example: -BearCavePelt|50@LocTypeStore?75 will remove 50 BearCavePelt from all instances of the given container with 75% probability if their current location has the LocTypeStore keyword
REMOVE ALL syntax:
- <REMOVE ALL> := -<identifier>[|location][@location_keyword][?<chance>]
- Excluding a count will cause CID to remove all of the given item from all instances of the given container
- Example: -BearCavePelt
INI Syntax:
- <identifier> = <ADD>
- <identifier> = <REMOVE>
- <identifier> = <REMOVE ALL>
Where <identifier> to the left of the equals sign is the FormID and Plugin Name or EditorID of the container to distribute to. Note that you may specify both base containers as well as container references on the left side of the equals sign.
Further notes:
- REMOVE and REMOVE ALL statements do not work with leveled lists, as leveled lists are resolved and their items added to containers while loading into the game. As a workaround, you may supply REMOVE or REMOVE ALL statements for items found in the leveled lists you'd like to remove
- _CID.ini files must begin with [General] at the top of the file
- Comma-separated lists of values are not supported. Please provide only one value per key (you may include multiple instances of the same key to distribute different items to the same container)
Source code: GitHub
Built with CommonLibSSE NG. Should work for all versions of Skyrim (SE, AE, and VR).
Compatibility
- Compatible with everything
- Always safe to install/update/uninstall
Check out my other mods
Credits
- powerofthree for powerofthree
- CharmedBaryon, fudgyduff, and everyone involved in Skyrim reverse engineering
- colinswrath for fielding my dumbass questions about SKSE development
- Skyrim RE Discord server for helping with all sorts of stuff