Skyrim Special Edition

File information

Last updated

Original upload

Created by

Nightfallstorm

Uploaded by

Nightfallstorm

Virus scan

Safe to use

Tags for this mod

About this mod

SKSE Framework plugin to allow distribution of custom races to NPC across Skyrim. Have you found a cool custom race mod for sharks, khajiit, dragonborn, kobold, etc. but wish you could see NPCs like them in the world? With this mod you can!

Requirements
Permissions and credits
Changelogs


Think SPID, but instead of getting an outfit or a perk, you distribute an entire race or the exact look of an NPC. Useful for mods that use custom races to avoid compatibility problems, or for changing the looks of an NPC without actually editing the records of the NPC. Patches be gone!

Also useful for fun mods like "replace every character with Nazeem". Cause who doesn't want every character to look like Nazeem?



Features

For mod users:
  • If a mod requires this mod, just install it as normal. Nothing for you to do but install and play!.

For mod authors:
  • Distribute custom races (think COTR, SkyFurry, Project Ja-Kha'jay) 
  • Distribute custom looks (an NPC replacer that requires NO patches?) Hell yeah!
  • Complete reworking of how armor races (RNAM) work for custom races (See below for more information)


VIDEO SHOWCASE
Do you get to the cloud district often?



How to Make a Plugin for RDF (For Mod Authors/Advanced Users)

If you're familiar with SPID, KID and similar, you'll have no problem making your own submods for RDF. I recommend downloading the example (in the optional files) to understand how to make your own replacers.

  • Create a new txt file in SKSE/Plugins/RaceSwap folder.
  • You will want the base ID for the character/race you intend to change.
  • Let's say we're making a mod to replace Jarl Balgruuf (BaseID: 13BBD) with the looks of Ulfric (BaseID D0575).
  • Your first line in your txt file should look like this (without quotes): "match=13BBD swap=D0575"

Notes:
- Matches accept any combination of the following: NPC, Race, Faction, Probability (Probability is how likely the match will apply to a given NPC, default 100%). Note: The match setup is exclusive (eg: Race + Faction means only NPCs that match both race/faction will apply)
- Swaps accept only one race/NPC. Swaps also accept a weight, which determines how likely a given swap will apply over another one (default 10)
- Excludes accepts any combination of any amount the following: NPC, Race, Faction. These are inclusive (eg: matching the race or the faction will exclude the NPC from the entry), and you can include multiple races/factions/npcs per entry
- Vampires NPCs are treated as their non-vampire counterparts when determining what entries to use. This means that an NPC who becomes a vampire, or is cured of vampirism, will retain the appropriate vampire/non-vampire swap respectively
- Check out the example config in the miscellaneous section of files to better see how these entries work

Armor Race Rework

Background:
If you ever made a custom race, you will likely run into the issue of armors not showing on the character when equipped. This is fixed by adding an "armor race" (RNAM) entry which contains some vanilla race (Nord, Khajiit, etc.). The armor race entry essentially does the following:
- Whenever an armor is loaded, if the NPC/Player's race has an RNAM entry, load the armor as if it was the armor race

This enables the custom race to load all armors as if it were the RNAM race (ex: Shark race loads armors like a Khajiit)

This has 1 problem:
1.  Armor addons cannot be made to support a custom race, as the armors will always load as the armor race only (No cool-designed guard helmet just for XYZ race for example)

Rework:
Now, armor race's will function differently:
- Whenever an armor is loaded, if any of the addons support the custom race, load the armor as that race instead.
- If the armor has zero addons supporting the custom race, check if any of the addons support the armor race. If so, load the armor as the armor race instead
-
If the armor has zero addons supporting the armor race, repeat this process by recursively checking the armor race for one to load (AKA check in order of custom race -> armor race -> it's armor race -> etc.). This means, for example, SuperSpecialKhajiit custom race could have SpecialKhajiit armor race, which itself specifies Khajiit as it's armor race, allowing armors have custom addons tailored to SpecialKhajiit or SuperSpecialKhajiit easily.

This will allow any armor addons explicitly supporting a custom race to load as it should for that race, while letting all other armors load normally like in vanilla, allowing armors to have cool addons for given custom race without breaking the custom race's compatibility with other armors.

Compatibility

SE,AE,VR compatible

RDF will switch up NPC to aesthetically look like another race. For all other purposes, the NPC will function/behave as their original defined race.

As an example, Nord NPCs who are Khajiits will not get any of the Khajiit buffs, and will keep all the Nord buffs. This means

- Papyrus mods should be fully compatible, they will always see the NPC as their original race
- SKSE mods will also always see the NPC as their original race

For mods that rely on an NPC's appearance (like SOS mods), RDF comes with a Papyrus Script to fetch appearance data at runtime:

scriptname raceswapper

# Always outputs true unless Race Distribution Framework is not present
bool function IsRaceSwapperActive() global native

# Gets the appearance race of an actor.
# NOTE: If the actor was not 3D rendered once, the actor will not be modified by RDF
Race Function GetAppearanceRaceOfActor(Actor akActor) global native

# Same as actor, but for the base NPC
# Same caveat apply, if no actor for that NPC was rendered once, the NPC will not be modified
Race Function GetAppearanceRaceOfNPC(ActorBase akNPC) global native


Any mods that also change appearances of NPCs at runtime will likely conflict with RDF


FAQ

  • Safe to install mid-game? ESL flagged?
    This is an SKSE file, no plugins are needed. Yes, safe to install mid-game.

  • Are the changes permanent?
    No, uninstalling the mod will revert NPCs back to their original appearance. The changes are only applied during runtime, and are specifically coded to not get baked in saves
          This also means you can change/modify configs on the fly, and the NPCs will take on their new appearances next time you load the game ;)

  • Can I replace an NPC with an animal or a dragon?
    Absolutely, but there will be issues if you are swapping an NPC to one with a different skeleton/animation set (eg: Dragon -> Wolf, Human -> Troll). I recommend only swapping animals for the sake of adding variety. A good example for swapping animals would be swapping 50% of chickens to an alternative chicken that is colored differently (same body parts, skeleton and animations, so no issues)


Credits

NukuNookee - So so so much testing
CharderoTheLupe - Thumbnail and moral support

Skyfurry users/team - So much testing/feedback to make the mod as good as it is today
wskeever - Modpage background
SesamePaste - Original code that made any of this possible

SOURCE

  • https://github.com/Nightfallstorm/RaceSwapper