1. The problem.
Some NPC overhauls (like Bijin, for instance) and many custom followers, are set in a way that they will use their own textures for the skin. They usually do that by changing the Worn Armor (WNAM) that those NPCs will use. Other mods might use meshes not compatible with the textures that we need for this mod, like NPCs based on COtR. This mod will overwrite their skin, using our RSV textures. You might want to keep their original custom skin textures for whatever reason. Or, if you use NPCs based on COtR, you definitely have to keep them or you might find some issues.
The process is very simple when dealing with just a few NPCs by following SPID exclusion rules. Here I'll show you how. (For many NPCs I recommend to use the method described in point 3 of this article).
We'll use here Sofia - The Funny Fully Voiced Follower as an example of a follower mod that uses their own set of textures for the body and head.
2. Solution: those NPCs will use their own textures, without being affected by RSV.
If you want those NPCs to use their own custom textures set by the author of the NPC overhaul or the custom follower, follow these steps.
- Open SSEEdit, go to the plugin containing the NPC that we want to exclude and check its name. In this case is Sofia. (The NPC's name should be exactly the same as the one that it has in SSEEdit when we exclude it in the DISTR file. It also works with the EditorID, but we'll just use its name here).
- Go to RSV_DISTR.ini file included in RSV mod and open it with any text editor.
- In that file go to the penultimate line and after *RSV add or insert a minus sign and the name of the NPC. Like this: Spell = RSVHeadTexturePatch|*RSV,-Sofia (leave the rest of this line as it was, if there was something else).
- The NPCs that are valid to get their head textures changed (*RSV) will have them changed except if its name is Sofia (-Sofia).
- Now go to the last line and do the same. Like this: Skin = 0x818~Racial Skin Variance - SPID.esp|*RSV,-Sofia (leave the rest of the line as it was, in case there was something else).
- The NPCs that are valid to get their skin changed (*RSV) will have them changed except if its name is Sofia (-Sofia).
- So, you can exclude NPCs from getting their head textures changed to RSV by avoiding them to get the spell that does just that following SPID rules for exclusion. It is the same for their skin (the body).
- Those NPCs will get the custom textures for the head and body set in their own mods.
3. How to exclude many NPCs at once to let them use their own set of textures.
SPID distribution, as of now, cannot manage NPCs in bulk, except when they are added by a plugin. However, this only works when those NPCs are added into the game by that plugin. It doesn't work when the plugin is modifying already existing NPCs in the vanilla game or its DLCs. Unfortunately, this is exactly what NPCs overhauls do: they modify existing NPCs.
So here we have two options if we want those overhauls to keep their own textures. We can add every one of those NPCs manually to the exclusion list as we've seen above, which is very tedious to do if we have to exclude dozens of them. Or we can add a Keyword (KYWD) to those NPCs and then exclude that Keyword from the distribution. We cannot do that with SPID without having to write every NPC's name, so we have the same problem as we had with the first option. To avoid this and to add a Keyword to those NPCs in a few clicks, we'll use SSEEdit and the scripts provided in this mod's Miscelaneous Files, that DarthBlender has created and very generously given to us to this very same purpose. SO A THOUSAND THANKS AND KUDOS TO HIM!!
Download the script files and copy the folder Edit Scripts into SSEEdit main folder.
So follow these easy steps to create a patch for your NPCs overhauls if you want to keep their custom textures and not get overriden by RSV. For this, we are going to use Sons of Nirn - Whiterun by Lilson, as an example of an overhaul containing a lot of NPCs that uses its own custom textures. We can check if a mod uses its own textures by checking if it has a (or several) custom WNAM set for its NPCs by clicking in any of its NPCs records:

Step 1. Create a patch-plugin (this step is not extrictly necessary, but this way we don't need to modify the original mod).
- Open SSEEdit and go to Sons of Nirn - Whiterun.esp. Open the Non-Player Character (Actor) tab and select all NPCs (or those that you don't want to get modified by RSV).
- Once selected, right click of them and in the pop-up window select Copy as override into...

- In the new window, select <new file>.esp [template] ESL

- Write the name of the new plugin. (Something you can easily identify later).

- Now you have a new plugin that will serve us as a patch without having to modify the original mod.

Step 2. Set RSV as master of the patch we just created.
- Right click on the plugin that we have just created and in the pop-up window click on Add Masters...

- Now, select the main RSV plugin.

Step 3. Apply the script to the NPCs of the patch.
- Select all NPCs of our patch and right click on them. Then select Apply Script...

- On the new window, search for the script in the scroll down menu. *Since v. 2.0 there's only one script for males and females both. You have to select the one for both, no matter your selection in the FOMOD of RSV.

Step 4. Check that the keyword is correctly applied.
- Check the NPCs and see that the keyword RSVignore* has being included into their records. *This is the keyword that RSV is using since v. 2.0. Do not mind the one (DoNotSwap) that appears in the following picture. The keyword that should be there is RSVignore.

Step 5. Save the new plugin.
- Click on the top left corner of SSEEdit and save the file.


- If you used MO2, the new plugin should be in Override. (I don't know where it ends up if using Vortex... I don't use it xD)
Step 6. Create the new mod and check the Load Order.
- Now create a new mod containing our just created and modified plugin and write a name for it that you can easily indentify later.
- Make sure that this patch has higher priority than RSV and the NPC overhaul that it patches (in this case, Sons of Nirn - Whiterun.esp).
Now you're done. You don't need to do anything else. The distribution files for SPID provided in this mod, already have included the exclusion for the new keyword that we just added to those NPCs.
4. SPID rules
To exclude NPCs for the distribution, simply add a minus sign before their name separated by a comma.
To add for the distribution, follow the same rules, but don't add the minus sign. It's that simple!
You can also apply the keyword RSVignore to exclude any NPC from distribution with SPID. You can use a new DISTR file for it or just add as many lines as you want to the already existent DISTR files. If you want to include several NPCs at the same time, simply separate their names by a comma.
Keyword = RSVignore|Sofia,Serana
If you want to exclude any NPC but just from teeth distribution, then you can use the same method but using the keyword RSVIgnoreTeeth.
(This mod is wonderful if you want to use this method but for a bunch of NPCs at the same time: Copy Records to Clipboard. Thanks a lot to AizenV to point that out).
By following very simple SPID rules, we can adapt our custom NPCs selection to our liking. We can have NPCs with custom textures and others with RSV textures... Whatever we like. The examples shown here can give you an idea of what you can do.
I recommend you to check SPID mod page to learn more about it.
43 comments
and read the official documentation SPID: The Complete Reference
Also be aware that every file in your Data directory which ends in _DISTR.ini gets read by SPID.
There could be duplicates or false positives or what else not in other files.
SPID takes also a good amount of time to swap all the stuff in all DISTR-files in your system.
So your changes will not immediately be visible after you load the game for your next test.
Also in RSV_DISTR.ini they define Keywords containing Stringfilters and Formfilters interchangeably.
But in the resulting distribution rules for Spell and Skin they reference only the Stringfilter list of SPID. The second column.
The proclaimed logical interconnection between Stringfilters and
Formfilters is an AND. As within the comma seperated expressions it
should be an OR.
This is the statement in the SPID manual:
All Filters sections are multiplicative (combined using logical AND
operation), while expressions within the same section are additive
(combined using logical OR operation).
Regarding to this logic the DISTR-rules we see should not work at all. But obviously they do.
For my own use case the following works reliably:
EDID Editor ID: AAA_SweeneyFollower
Base Form ID: FE089807
Plugin Name: Sweeney_follower.esp
I would not suggest to use the NPC names in Stringfilters with wildcards as it could be ambigous.
The most unique addressing scheme would be the Form ID like e.g.:
Form ID light plugin: 807~Sweeney_follower.esp
But the Editor ID works also fine.
For the Body Data/RSV_DISTR.ini:
Keyword = RSVignore||AAA_SweeneyFollower
For the Head Data/RSVBnPteeth_DISTR.ini:
Keyword = RSVignoreTeeth||AAA_SweeneyFollower
And this should work for multiple followers or npcs:
Keyword = RSVignore||EditorID1,EditorID2,...
Any of these alternatives work as well:
Keyword = RSVignore|*sweeney
Keyword = RSVignore||AAA_SweeneyFollower
Keyword = RSVignore||807~Sweeney_follower.esp
In contrast to my earlier statement SPID is really fast and distributes within milliseconds after you load the game.
To get detailed information about your npc ingame I use More Informative Console
You can also quickly check in the texture section if your NPC uses the desired texture filenames and paths.
When I create a new game it works correctly.
It tells a bit what its doing. Maybe the debug level can be increased to show what its distributing to each individual npc.
Within each type forms are distributed in the same order that they were loaded with a few exceptions:
Keywords are additionally sorted to make sure that keywords that depend on other
keywords will be distributed later than their dependencies. This allows
you to freely use keywords as requirements for other keywords without
manually ordering them.
So I would say order within the same DISTR file doesn't matter.
I didn't check for conflicts with equal rules or dependencies in other DISTR files but po3_SpellPerkItemDistributor.log tells you what its doing.
Keyword = RSVignore|Sofia,Serana
it's as simple as that.the author also recommend to check SPID mod page to learn more about it.
Keyword = RSVignore||JRLucien
in RSV_DISTR.ini helped.
https://www.nexusmods.com/skyrimspecialedition/mods/127860?tab=posts
Following all the steps in Part 3 here and nothing has changed at all. Has anybody else tried it? I feel like it must be an issue on my end but I followed all of the instructions exactly. Thanks!
Edit: Well I've either fixed the issue myself or it fixed itself.
i got the same problem, cant figure out what to do...
When I put this mod in my line up, they all start using the baseline body meshes. I discovered this several hours after launching a new game with the RSV SPID (their clothing showed the correct bodyslide preset, but when I went to change it, discovered their bodies no longer matched - I have used these followers in other playthroughs without this SPID, so I know they work.)
I'm guessing I can use RSVIGNORE for those particular followers, but some of them use the baseline textures.
In a perfect world, I would like to have my followers use their assigned body meshes yet SPID-in the RSV textures with this mod. Can this be done?
Finally, as mentioned, I discovered this several hours after launching a new game with the RSV SPID. If I go into the DISTR and RSVIGNORE these followers as a fix, Can I load an existing save and see these followers as if this SPID never loaded them? If not, can I recycleactor or Disable/enable to reload with them ignored? ... Or do I have to restart the whole playthrough?
TIA.
[EDIT] Bad news for me. I added my followers to RSVIGNORE and RSVIGNORETEETH and 1) the textures did swap back to normal with disable/enable BUT ... 2) The meshes did not update to the ones assigned in their mod. Not sure how to fix this mid playthrough ...
[2nd Edit] More bad news - for all mods that have unique body meshes - whether they be new followers or NPC remakes. RSVIgnore and RSVIgnoreTeeth will work to keep their unique textures BUT their unique body meshes will revert to the baseline body meshes. I tested this by starting a new game in the ASLAL Prison cell without the RSV SPID, spawned a follower with body meshes, and removed their clothes - follower was using their unique body meshes. Tried the same with the RSV SPID and the follower put in the RSVIgnore line of the RSV_DISTR.ini - RSV textures did not load on follower, but they had the baseline body mesh.
Unless there are different ways to have this SPID ignore followers/NPCs, this mod appears incompatible with follower/NPC mods that have unique body meshes.
Bummed.
that means they should all be excluded from RSV to begin with, in the manner already described above.
Skin = 0x818~Racial Skin Variance - SPID.esp|*RSV,-RSVasian,-RSVafflicted,-RSVfantasymer,-RSVvampirebeast,-RSVsnow,-RSVignore|NONE|NONE|F
Skin = 0xDDD~Racial Skin Variance - SPID.esp|RSVfantasymer,-RSVvampire,-RSVasian,-RSVvampirebeast,-RSVignore|NONE|NONE|F
Skin = 0xDDE~Racial Skin Variance - SPID.esp|RSVafflicted,-RSVignore|NONE|NONE|F
Skin = 0xDDF~Racial Skin Variance - SPID.esp|RSVvampirebeast,-RSVasian,-RSVfantasymer,-RSVignore|NONE|NONE|F
Skin = 0xDE0~Racial Skin Variance - SPID.esp|RSVasian,-RSVvampire,-RSVfantasymer,-RSVvampirebeast,-RSVignore|NONE|NONE|F
Skin = 0x84F~Racial Skin Variance - SPID.esp|RSVsnow,-RSVignore|NONE|NONE|F
Where and what do I change to exclude Camilla for example?
So in the ini look for RSVignore and then add the line
Keyword = RSVignore|Sofia
to add the keyword to Sofia. It works, just tested in my game.