Change Logs
Version history and release notes for Dynamic NPCs.
Newest releases appear at the top. Check back after updates to see what's changed.
Version 0.4.1a
Features
- NEW Logs page in MCM. See how many NPCs were changed, what was added or removed per category, and which NPCs had the most conflicts with FormIDs for xEdit.
- NEW Priority collision resolution. If two mods are set to the same face priority, the displaced mod is automatically bumped so every mod gets a unique rank.
Changes
- CHANGE Higher number now wins face priority. The priority system now matches your mod manager: the mod with the highest number wins, just like load order in MO2.
- CHANGE FaceGen has its own section. The face toggle is now under an "Appearance" header on the Features page, separate from the conflict resolution toggles.
Version 0.4a
Features
- NEW MCM menu. All settings are now configurable in-game through a Mod Configuration Menu (requires SkyUI and MCM Helper).
- NEW Plugin Priority page. The MCM auto-detects every mod that changes NPCs and lets you set FaceGen priority with sliders instead of editing the INI by hand.
- NEW Bracket-safe filenames. Mods with brackets, dots, or spaces in their filenames (like
[SomeTag] Mod.esp) now work correctly in the priority list. - NEW xEdit: ESP Creator mode. The companion script can now create the DynamicNPCs.esp file needed for the MCM menu.
Changes
- CHANGE Settings now use MCM Helper format. Old INI settings at
Data/SKSE/Plugins/DynamicNPCs.iniare still read as a fallback if MCM Helper is not installed. - CHANGE FaceGen priority uses numbers instead of list order. Lower number means higher priority. Two mods with the same number fall back to load order.
Version 0.3.7a
Features
- NEW xEdit: Added a "Copy for INI" button to the FaceGen override setup. Set up your appearance overrides in xEdit and copy paste them to your INI file.
Bug Fixes
- FIX Fixed FaceGen priority list sorting alphabetically instead of using the order you wrote. The list now respects your INI file order.
- FIX Fixed player character spells and perks disappearing. The player is now skipped entirely so mods can't accidentally remove abilities.
- FIX Fixed FaceGen override clearing fields the preferred mod didn't set, which made NPCs invisible. Only fields the mod actually includes are applied now.
- FIX Fixed FaceGen override making NPC faces invisible when applying head parts. Head parts are now replaced through the game engine instead of being swapped manually.
- FIX Fixed FaceGen override causing green or yellow body skin. Body tint and tint layers are now only applied when the preferred mod also provides a matching body skin.
Version 0.3.2a
Bug Fixes
- FIX Fixed appearance fields causing invisible bodies. Skin, hair color, and face texture are no longer changed by the normal conflict resolver.
- FIX Fixed a crash during script conflict resolution. Added a missing safety check in the Papyrus VM hookup.
- FIX Fixed FaceGen override not reading mod filenames from the INI. The parser now accepts plain filenames without
=signs.
Version 0.3.1a
Bug Fixes
- FIX Fixed INI file being overwritten every time the game is launched. Settings no longer revert to defaults on reload.
Version 0.3a
Features
- NEW FaceGen override. You can now pick which mod's appearance wins for each NPC. Hair, eyes, scars, face shape, skin, tint layers, head parts, and face texture are all covered. Configure it in the new
[FaceGen]section of the INI. List your preferred appearance mods there and the last one in the list takes priority. - NEW Papyrus script merge. When a mod attaches a Papyrus script to an NPC and another mod overwrites that NPC, the script is now restored automatically. Works at the whole-script level: adds and removes scripts using the same delta logic as other merge categories. NPCs with the "Use Script" template flag (
0x0200) are skipped, matching how the game handles inherited scripts. - NEW xEdit companion script. Added
ST - Dynamic NPCs.pasfor SSEEdit. Two modes: Info Mode scans NPC_ and OTFT records for broken references, null FormIDs, duplicates, and empty script names. Patch Mode creates a merged ESP using the same algorithm as the SKSE plugin. Merges everything: items, spells, perks, packages, factions, keywords, stats, flags, skills, AI data, traits, outfits, override packages, and scripts. - NEW OTFT merge in xEdit. Outfit records edited by multiple mods now have their item lists merged in the companion script, same as the SKSE plugin already did at runtime.
- NEW Three new trait fields. The trait merge now covers skin (WNAM), hair color (HCLF), and face texture (FTST) in addition to the original seven. When FaceGen override is active for an NPC, these three fields are handled by the override instead of normal first-loser-wins.
- NEW Override packages always merge. The four override package lists (spectator, observe dead body, guard warn, combat override) are no longer tied to the AI Data toggle. They always merge when a mod changes them, since no template flag governs these fields.
- NEW New INI toggles. Added
mergeScriptsandmergeFaceGensettings. Each can be turned on or off independently.
Bug Fixes
- FIX Fixed invisible NPCs and crash on save load. When a mod's trait reference (race, outfit, etc.) failed to resolve during ESP parsing, the merger treated the zero result as "this mod removed the field" and nulled the NPC's race or outfit. A null race means no body mesh, so the NPC turns invisible. A null race or class also crashes the engine when loading a save. The trait merge now skips any value that resolved to zero, and required fields (race, class) can never be set to null.
- FIX Fixed sleep outfit getting wiped. Same kind of issue. A failed FormID resolution during sleep outfit merge could set it to null. Now skips zero values and validates the lookup before applying.
- FIX Fixed inventory item memory allocation. New container items were allocated with the C++ heap instead of the game engine's own allocator. This could corrupt the heap when the engine later freed that memory. Now uses the engine allocator.
- FIX ESP parser safety guard. The parser could crash if a plugin's master file pointer array was null despite reporting a non-zero master count. Added a null check.
- FIX xEdit: Fixed script merge skipping when winner had no scripts. When a mod added a script to an NPC whose winning record had no VMAD at all, the patch would silently skip the addition. The code was trying to find a Scripts container that didn't exist yet instead of creating it. Now properly creates both the VMAD element and its Scripts container before adding the script.
- FIX xEdit: Fixed single-field merge skipping when winner lacked the field. Sleep outfit and override package merges in the xEdit script would silently fail if the winning record didn't already have the field.
SetEditValueon a nil element does nothing. Now creates the element first. - FIX xEdit: Fixed trait and single-field merges applying broken references. Both
MergeTraitFieldsandMergeSingleFormIDFieldnow validate that each value is non-empty and points to a real form before applying. Prevents the patch from writing null FormIDs.
Improvements
- IMPROVED Clearer log tags. Log entries now use readable names:
[SKILLS]instead of[DNAM],[AI]instead of[AIDT],[SLEEP]instead of[SOFT],[KEYWORD]instead of[KYWD]. Easier to scan when reading the log. - IMPROVED Safer trait assignment. Every form lookup in the trait setter is now validated before being written to the NPC. If a FormID points to something that doesn't exist or loaded as the wrong type, it's skipped instead of applied.
- IMPROVED Log summary now includes scripts and FaceGen. The end-of-run summary shows script additions/removals and FaceGen override counts alongside all the other categories.
Version 0.2.6a
Features
- NEW Stats merge. NPC stats like health, magicka, stamina, level, level ranges, speed, bleedout override, and all 18 skill values are now merged from overridden mods.
- NEW Actor flag merge. NPC flags like Essential, Protected, Unique, Respawn, IsGhost, and Invulnerable are now merged individually. Safe flags like gender and template settings are never touched.
- NEW AI data merge. NPC personality settings like aggression, confidence, energy level, morality, mood, and assistance from overridden mods are now merged. Each field is checked independently for conflicts.
- NEW Override package lists merge. NPC behavioral overrides for spectating, observing corpses, guard warnings, and entering combat from overridden mods are now restored.
- NEW Sleeping outfit merge. What an NPC wears to bed from overridden mods is now carried forward.
- NEW Trait merge. NPC identity fields like race, class, default outfit, combat style, crime faction, gift filter, voice type, height, weight, and display name from overridden mods are now carried forward.
- NEW Keyword merge. Keywords added or removed by overridden mods are now restored.
- NEW Conflict detection. When two mods both change the same field on the same NPC, it is now logged and counted in the summary instead of being silently skipped.
- NEW Localized plugin handling. Correctly handles official Bethesda plugins (like Skyrim.esm) that store names differently, preventing garbled NPC names.
- NEW New INI toggles. Added
mergeStats,mergeAIData,mergeTraits, andmergeKeywordssettings so you can turn each new category on or off.
Bug Fixes
- FIX AI data was being read incorrectly. The plugin file format stores AI data differently than the game uses it in memory. The old parser used the wrong format, which caused NPC confidence, morality, mood, assistance, energy level, and aggro radius values to be read as garbage. Rewritten to match the actual file format.
- FIX Removed phantom AI field. One AI field (noSlowApproach) doesn't actually exist in plugin files. It was always read as zero but could differ in memory, causing the merger to think a mod changed it when nothing did.
- FIX Fixed false skill and stat conflicts. The merger was comparing mod values against what the game had in memory, but the game sometimes changes values on its own after loading (e.g. recalculating skills from the NPC's class). This made the merger think the last mod changed something when it didn't, and skip valid merges. Now correctly compares plugin files against each other.
Improvements
- IMPROVED Log format matches xEdit. Records in detailed logs now show their type and ID in the same style as xEdit (e.g.
[PACK:1211EC63]), making it easy to look things up. - IMPROVED AI packages show names in logs. AI package changes now display the package's editor ID name instead of a hex number.
- IMPROVED AI data shows readable values. AI data changes now show names like
Unaggressive->Aggressiveinstead of raw numbers like0->1. - IMPROVED INI descriptions rewritten. All settings in the INI file now have plain English descriptions explaining what they do.
- IMPROVED More template info in logs. When an NPC uses templates, the log now shows which categories are inherited (traits, stats, AI data, keywords, etc.).
Version 0.1a - Initial Release
Features
- NEW Runtime NPC merge. Automatically merges NPC records from all mods when 3+ plugins edit the same NPC_ record.
- NEW Inventory merge. Items added or removed by overridden mods are restored or respected. Count changes are carried forward.
- NEW Spell merge. Spells, shouts, and leveled spells added or removed by overridden mods are merged back in.
- NEW Perk merge. Perks and perk rank changes from overridden mods are restored.
- NEW Outfit merge. Outfit item lists are merged across all mods that edit them.
- NEW AI package merge. AI packages (schedules, patrols, travel routines) from overridden mods are restored.
- NEW Faction merge. Faction memberships and rank changes from overridden mods are restored.
- NEW Template flag awareness. Automatically skips merging inventory, spells, packages, and factions when the NPC inherits those categories from a template.
- NEW Per-feature INI toggles. Every merge category can be individually enabled or disabled.
- NEW Direct ESP/ESM/ESL parsing. Reads plugin files from disk to reconstruct what each mod intended. Supports compressed records and light plugins.
- NEW Detailed per-NPC logging. Optional verbose logging shows every change per NPC.
- NEW SE, AE, and VR support. Single plugin binary covers all Skyrim editions via CommonLibSSE-NG.