Modathon
Recast - SKSE Runtime Visual NPC Replacement mod for The Elder Scrolls V: Skyrim Special Edition

Recast

Latest25 May 2026
Uploaded25 May 2026
Version1.0

An SKSE Runtime NPC Replacement System

798.64 KB
File Size
63
Unique DLs
68
Total DLs
161

Your file is ready

Download your mod

Login to download

Any issue downloading your file ? Contact us.

Go Premium

Level up your game with a GGmods pro subscription.

Ad-Free Browsing
Instant Download

Go Premium Now

Requirements

Instructions

How to Use Recast


Recast is an SKSE plugin that replaces NPC faces using simple TOML files. This guide shows you how to write your own patches.


What You Need


Before you start:

  1. Skyrim Special Edition, Anniversary Edition, or VR
  2. SKSE (Skyrim Script Extender)
  3. Address Library
  4. Po3's Tweaks (only needed if you use EditorID names instead of FormIDs)


Where Your Files Go


Recast looks for patches at:


Data/SKSE/Plugins/Recast/Patches/


You can organize them however you like. Recast scans the folder recursively, so subfolders work fine. Drop your TOML files anywhere under that path.


Basic File Structure


Every patch file has two parts: a manifest at the top, and your replacements below.


[manifest]
name = "My Replacements"
priority = 100
api_version = 1

[replacements]
Lydia = "MyMod_NewLydia"


The manifest tells Recast which version of the patch format you are using and how to break ties if two files target the same NPC. Higher priority wins.


The replacements section is where you list each NPC you want to swap.


Method 1: Using EditorIDs (Easiest)


EditorIDs are the readable names mod authors give NPCs in the Creation Kit. They are the most readable way to identify NPCs.


[manifest]
name = "EditorID Example"
priority = 100
api_version = 1

[replacements]
Lydia = "MyMod_NewLydia"
AelaTheHuntress = "MyMod_NewAela"
Mjoll = "MyMod_NewMjoll"


This method requires Po3's Tweaks to be installed, because Skyrim does not normally keep EditorIDs in memory after loading. Po3's Tweaks fixes that, and most modern modlists already include it.


Method 2: Using FormIDs


FormIDs are the eight-digit hex codes you see in xEdit. Use them when you do not have Po3's Tweaks, or when an NPC does not have a unique EditorID.


[manifest]
name = "FormID Example"
priority = 100
api_version = 1

[replacements]
"0x000A2C8E~Skyrim.esm" = "MyMod_NewLydia"
"0x0001A696~Skyrim.esm" = "MyMod_NewAela"
"0x0001B07F~Skyrim.esm" = "MyMod_NewMjoll"


The format is the FormID, a tilde character, then the plugin filename. The quotes around the key are required because the tilde and the 0x prefix are not allowed in TOML's bare-key syntax.


Mixing Both Methods


You can mix EditorIDs and FormIDs in the same file. Recast detects which one you used by looking at the syntax of each string.


[manifest]
name = "Mixed Example"
priority = 100
api_version = 1

[replacements]
Lydia = "MyMod_NewLydia"
"0x0001A696~Skyrim.esm" = "MyMod_NewAela"
Mjoll = "MyMod_NewMjoll"


The source side (the value on the right) also accepts both forms.


Multiple NPCs in One File


You can put as many entries as you want in a single TOML. There is no practical limit. A file with 200 NPCs is fine.


[manifest]
name = "My Big Replacer Pack"
priority = 100
api_version = 1

[replacements]
Lydia = "MyMod_NewLydia"
Aela = "MyMod_NewAela"
Mjoll = "MyMod_NewMjoll"
Uthgerd = "MyMod_NewUthgerd"
Ria = "MyMod_NewRia"
Njada = "MyMod_NewNjada"


One TOML Per NPC (For FOMOD Installers)


If you ship your mod with a FOMOD installer and want users to pick individual NPCs to install, give each NPC its own TOML file. The FOMOD can then include or exclude each file based on user choice.


YourMod/
SKSE/
Plugins/
Recast/
Patches/
Lydia/
1-Lydia_Face.toml
Aela/
1-Aela_Face.toml


Each file contains a single entry.


[manifest]
name = "Lydia Face"
priority = 100
api_version = 1

[replacements]
Lydia = "MyMod_NewLydia"


How Priority Works


If two patch files both replace the same NPC, only one wins. The winner is the file with the higher priority number. Default priority is 0, so set yours to 100 or 200 if you want to override default-priority patches.


If priorities tie, Recast uses the filename and then the line number as deterministic tiebreakers. The loser is logged so you can see what got overridden and why.


Verifying It Works


After you launch the game, check the Recast log at:


Documents/My Games/Skyrim Special Edition/SKSE/Recast.log


You should see lines like this:


TomlLoader: parsed 1 file(s), 3 entry(ies) after conflict resolution, 0 diagnostic(s).
FormResolver: 3 entry(ies) resolved, dropped: 0 unresolved, 0 non-NPC, 0 self-recast, 0 duplicate; 0 cross-race accepted.
VisualCopy: 3 applied, 0 failed.


The applied count tells you how many NPCs Recast is now driving. Any error lines name the exact TOML file and line that had the problem, so fixing them is straightforward.


Common Errors


If you see "form not found", the source NPC's plugin probably is not loaded. Check your load order.

If you see "duplicate target", two of your entries point at the same NPC. Pick one, or use the priority field to decide which wins.

If you see "non-NPC", you accidentally pointed at a weapon or armor record instead of an NPC. Double check the FormID or EditorID.

If you see "cross-race accepted" as a warning (not an error), that just means you replaced an NPC's face with an NPC of a different race.


Recast still applies the swap. The warning is there in case the cross-race pairing was unintentional.


A Complete Example


Here is a full working example you can adapt:


[manifest]
name = "Beautiful Whiterun Replacer"
priority = 100
api_version = 1

[replacements]

# Lydia replaced using EditorID
Lydia = "BWR_LydiaReplacement"

# Carlotta replaced using FormID (because there are several Carlottas in mods)
"0x000133D8~Skyrim.esm" = "BWR_CarlottaReplacement"

# Olfina replaced using EditorID
OlfinaGrayMane = "BWR_OlfinaReplacement"

# Adrianne replaced using EditorID
AdrianneAvenicci = "BWR_AdrianneReplacement"


That is everything you need to know to get started. Recast handles the rest.