This is a SKSE plugin for Skyrim Special Edition that allows you to manipulate lists and containers, items, effects and so on at startup runtime with configuration files.
No more patch hell for things like WACCF or CACO!
The configuration files are written in ini format and are loaded from the root Data folder of the game with a suffix _LIEM(.ini).
This allows you to mass change many values that might not be supposed to be changed (for example Armors ARMO used as "skins" fx for thralls, meaning that adding rating value buffs them inadvertently).
This is thought mostly as a companion to mods which adds and sets up keywords to all forms correctly, eventually even more than the base game so that you can really create a carefully patch-less world (e.g. KID and related are a good example).
Still very much a WIP. Plan to cover all possible forms and records within them where make sense (containers or leveled lists for items, ingredients or consumables for effects).
NOTE: Everything is case-insensitive.
In general the syntax is the one described below, similar to the one used in SPID or KID, and specialised on the key type.
#--Type----|-What to do-|------------Where to do it------------|-----When to do it-----|
<RuleType> = <Modifiers>|<StringFilters>|<FormFilters>|<Traits>|<Chance>|<LoadCondition>Think of a rule as a set of "type", "what to do", "where to do it" and "when to do it".
Use NONE key (or blank) to ignore the value that should be provided.
The "modifier" part refers to the "what to do" part, which is almost always specialised for the rule type (Armor-specific, Weapon-specific, ...).
<empty>Empty (or blank) means absolute modifier, thus overwriting the target with the value provided.+Plus sign means relative adding modifier, thus adding the value to the target.-Minus sign means relative substraction modifier, thus substracting the value from the target.
Examples:
# nerfs all cuirass armors tagged as Iron by adding 5 more weight and removing 2 points of rating
# E.g. "Iron Armor" becomes 35 of weight and 23 of rating (see table https://elderscrolls.fandom.com/wiki/Iron_Armor_(Skyrim)#Attributes_by_piece)
Armor = NONE,+5,-2|ArmorMaterialIron+ArmorCuirass
# buffs all helmets tagged as Iron by making their weight be 4
# E.g. "Iron Helmet" has it's weight set to 4 (instead of previous 5)
Armor = NONE,4,|ArmorMaterialIron+ArmorHelmetForm: <digits>
A natural number written with digits.
Form: <digits>[.<digits>]
A real number written with digits and optionally a deciaml part.
Note: Trailing
0is required..5is not valid but0.5is.
The "appliers" part refers to "where" and "when" to do it parts. It encludes many different ways of filtering the final target records.
Because this is common and/or true for most rules, it can also be enclosed in an expansable/reusable rule Alias at the top of your file and use a special syntax in StringFilters to expand it. (see Alias)
Used to filter the records to apply the rule to and multiple rules are separated by a comma (,).
- Rules are normally applied as "OR"
- e.g.
ArmorMaterialIron,ArmorMaterialSteelmeans apply to all armors that have eitherArmorMaterialIronorArmorMaterialSteelkeyword
- e.g.
- Use
+to make it "AND" on multiple words- e.g.
ArmorMaterialIron+ArmorHelmetmeans apply to all armors that have bothArmorMaterialIronandArmorHelmetkeywords
- e.g.
- Use
-to make it "NOT" on a single word- e.g.
-ArmorMaterialSteelmeans apply to all armors that do not haveArmorMaterialSteelkeyword
- e.g.
- Use
*to make it a "wildcard" on a single word- e.g.
*Ironmeans apply to all armors that have the wordIronin their keywords, edids, ...
- e.g.
- Use
@<name>to expand an alias (see Alias)
Refer to each individual rule type for the supported string filters.
Generally you can filter on keywords, form editor ids and form names.
Used to filter the records to apply the rule to and multiple rules are separated by a comma (,).
- Rules are normally applied as "OR"
- e.g.
LItemClothesAll,BeggarWithHatOutfitmeans apply to all armors that are either inLItemClothesAlllist orBeggarWithHatOutfitoutfit
- e.g.
- Use
+to make it "AND" on multiple words- e.g.
LItemClothesAll+LItemClothesPoormeans apply to all armors that are in bothLItemClothesAllandLItemClothesPoorlists
- e.g.
- Use
-to make it "NOT" on a single word- e.g.
-LItemClothesPoormeans apply to all armors that are not inLItemClothesPoorlist
- e.g.
FormIDs are supported but discoraged to use (e.g. 0x800~MyMod.esp or 0x2D202 without esp/esl for base game and DLCs).
Refer to each individual rule type for the supported form filters.
Used to filter the records to apply the rule to and multiple rules are separated by a forward slash (/).
- Rules are normally applied as "AND"
- e.g.
E/Xmeans apply to all armors that areEnchantedandX <as example>
- e.g.
- Use
-to make it "NOT" on a single trait- e.g.
-Emeans apply to all armors that are notEnchanted
- e.g.
Refer to each individual rule type for the supported traits.
Note: This is deterministic for each record, so the "randomness" is always the same across saves.
A natural number between 0 and 100 that represents the chance of the rule to be applied.
100 represents "always" (same as NONE) and 0 "never".
Supported special rules:
Aliasfor aliasing the right part of rules ("Appliers") [Alias]
Supported types related to game form records:
Armorfor armors and clothing (including shields and jewelry) [ARMO]Weaponfor weapons [WEAP]Ammofor ammonitions (bolts and arrows) [AMMO]
Alias = name|...
It's a simple name to "Appliers" expansion rule. In StringFilters use @<name> to target an alias and have it expanded.
Note: It should not matter but aliases gets expanded and added at the end before storing the appliers.
Example:
Alias = IronHelmets|ArmorMaterialIron+ArmorHelmet
# buff all values of iron helmets to 100 but MySpecialHelmet (edid)
Armor = 100|@IronHelmets,-MySpecialHelmet
# is equivalent to
Armor = 100|-MySpecialHelmet,ArmorMaterialIron+ArmorHelmetArmor = value,weight,rating|...
| Operation | Name | Type | Description |
|---|---|---|---|
| <empty>/+/- | value | integer | Value of the armor |
| <empty>/+/- | weight | real number | Weight of the armor |
| <empty>/+/- | rating | real number | Rating of the armor |
It supports the following string filters:
- Keywords it has (e.g.
ArmorMaterialIron) - Armor editorID (e.g.
ArmorIronShield) - Armor name (e.g.
Iron Shield)
It supports the following form filters:
- Leveled list it is in (e.g.
LItemClothesAll) - Outfit it belongs to (e.g.
BeggarWithHatOutfit) - Form list it is in (e.g.
WICommentCollegeRobesList)
It supports the following traits:
Efor enchanted
Weapon = value,weight,damage,critDamage,speed,reach,stagger|...
| Operation | Name | Type | Description |
|---|---|---|---|
| <empty>/+/- | value | integer | Value of the weapon |
| <empty>/+/- | weight | real number | Weight of the weapon |
| <empty>/+/- | damage | integer | Damage of the weapon |
| <empty>/+/- | critDamage | integer | Critical damage of the weapon |
| <empty>/+/- | speed | real number | Speed of the weapon |
| <empty>/+/- | reach | real number | Reach of the weapon |
| <empty>/+/- | stagger | real number | Stagger of the weapon |
It supports the following string filters:
- Keywords it has (e.g.
WeapMaterialIron) - Weapon editorID (e.g.
IronWarhammer) - Weapon name (e.g.
Iron Warhammer)
It supports the following form filters:
- Leveled list it is in (e.g.
LItemWeaponBattleAxe) - Form list it is in (e.g.
MineOreToolsList)
It supports the following traits:
Efor enchanted
Ammo = value,weight,damage|...
| Operation | Name | Type | Description |
|---|---|---|---|
| <empty>/+/- | value | integer | Value of the ammo |
| <empty>/+/- | weight | real number | Weight of the ammo |
| <empty>/+/- | damage | real number | Damage of the ammo |
It supports the following string filters:
- Keywords it has (e.g.
WeapMaterialOrcish) - Ammo editorID (e.g.
OrcishArrow) - Ammo name (e.g.
Orcish Arrow)
It supports the following form filters:
- Leveled list it is in (e.g.
LItemAmmo) - Form list it is in (e.g.
Bolts)
None.
- Visual Studio 2022 (the free Community edition)
vcpkg-
- Clone the repository using git OR download it as a .zip
-
- Go into the
vcpkgfolder and double-click onbootstrap-vcpkg.bat
- Go into the
-
- Edit your system or user Environment Variables and add a new one:
- Name:
VCPKG_ROOT
Value:C:\path\to\wherever\your\vcpkg\folder\is
-
- DKUtil
-
- Clone the repository using git
-
- Point an ENV variable to its folder
- Name:
DKUtilPathValue:C:\path\to\wherever\your\DKUtil\folder\is
-
There is a CMake rule to automatically deploy the plugin to MO2's own plugin folder if you have set the MO2SkyrimSEPath environment variable to the path of your MO2 installation.