Dynamic Form Lists Wiki
When multiple mods change the same form list (adding new items, spells, races, or anything else to a shared list), Skyrim only keeps the last mod's version and throws away everyone else's additions. This plugin fixes that. It finds the missing entries and adds them back. Install it, forget about it.
Quick Start: Install with your mod manager, launch the game. That's it. Check Data/SKSE/Plugins/DynamicFormLists.log if you want to see what it did.
Requirements
- Skyrim SE (1.5.97+), AE (1.6.x), or VR
- SKSE64 (matching your game version)
- Address Library for SKSE Plugins
What Are Form Lists?
A form list (FLST record) is a list of things the game uses behind the scenes. Mods use them to register new content with the game's systems. For example, a form list might hold all the races that can use beast race animations, all the keywords a crafting system checks, or all the spells in a specific school. When a mod adds something new, it often needs to put a reference in one of these lists so the game knows about it.
The Problem
Skyrim has a simple rule: if two mods edit the same form list, the last one in your load order wins and the other gets thrown out. So if Mod A adds three new races to a form list and Mod B adds two new keywords to that same list, you only get the keywords. The races are gone. No warning, no error. Just silently deleted.
This is especially common with mods that add new content to shared game systems. The more mods you have, the more entries vanish.
The Fix
Dynamic Form Lists looks at every mod that touched each form list, figures out what each one added or removed, and restores the missing entries at startup. The result is the same as if you had manually built a compatibility patch for every form list conflict in your load order, except you don't have to do anything.
How It Works
- Runs once when the game starts, before you reach the main menu
- Finds every form list that more than one mod tried to change
- Reads each mod's version to see what they added or removed
- Restores missing entries so nothing gets lost
- Respects intentional removals. If a mod specifically removed an entry, it stays removed.
- Done. You play the game normally.
Features
INI Settings
The config file is at Data/SKSE/Plugins/DynamicFormLists.ini. If it doesn't exist, it gets created automatically the first time you launch the game.
General
[General] ;Write detailed per-list info to the log file. Useful for troubleshooting. enablelogs = false ;Master toggle. Set to false to disable form list restoration entirely. mergeformlists = true
Exclusions
[Exclusions] ;Comma-separated list of plugin filenames to skip entirely. ;Example: skipMods = SomePlugin.esp, AnotherMod.esp skipMods = ;Comma-separated list of form list EditorIDs to skip entirely. ;Example: skipFormLists = SomeFormListEditorID, AnotherFormList skipFormLists =
Settings Reference
enablelogs
Default: false
Logs every form list that was checked and every entry that was added or restored. Helpful if you want to see exactly what changed, but makes startup slower. Leave it off unless you're curious or troubleshooting.
mergeformlists
Default: true
Master toggle for the entire plugin. Set to false to disable all form list restoration without uninstalling the plugin.
skipMods
Default: (empty)
Comma-separated list of plugin filenames (e.g. SomePlugin.esp). Any mod in this list will be completely ignored. Its additions won't be restored and its removals won't be tracked.
skipFormLists
Default: (empty)
Comma-separated list of form list EditorIDs to skip. Any form list in this list won't be touched at all, regardless of how many mods edit it.
xEdit Companion Script
The plugin comes with an xEdit (SSEEdit) script called ST - Dynamic Form Lists.pas. It has two modes:
- Info Mode: Scans your load order for form list problems. Finds broken references, null FormIDs, duplicate entries, and empty lists. Run this to check your load order for issues before playing.
- Patch Mode: Creates a merged ESP that resolves form list conflicts the same way the SKSE plugin does at runtime. Useful if you want a traditional patch file instead of (or alongside) the runtime plugin.
Tip: You can use the xEdit script and the SKSE plugin together. The script builds a patch file, and the plugin catches anything the patch missed. They don't conflict.
Compatibility
- Wrye Bash / Mator Smash: Works fine alongside them. They patch things ahead of time, this catches whatever they missed at startup.
- Dynamic Container Loot / Dynamic Leveled Lists / Dynamic NPCs: Companion mods. DCL handles containers, DLL handles leveled lists, DNPC handles NPCs, this handles form lists. They work on completely different record types and do not interfere.
- Load order: Doesn't matter. Safe with any load order. It just reads your mods, it doesn't change them.
- Other SKSE plugins: No conflicts. This plugin doesn't hook into any game functions, so it won't fight with anything.
Credits
- CommonLibSSE-NG for making SKSE plugins possible across SE, AE, and VR
- SKSE Team for the Script Extender that none of this works without
- powerof3 for CLib utility library
- herumi for xbyak (JIT assembler)
- brofield for SimpleINI (config file parsing)
Link to This Page
Copy a link to share this wiki from your Nexus description or documentation:
