Skyrim Special Edition

v2.10beta2 or newer
v2.59 instructions updated


    I've tried to make the procedure for adding support for custom races or modifying the spawned children and babies as simple as possible.   I don't know how to make it any easier.   I'm not saying that to sound arrogant or condescending- it's simply the best way I could come up with.   If you have better ideas, feel free to provide feedback!  It's quite possible there are easier ways and I just didn't think of them!

The list of supported races is found in FormID List FExxxD68:
0     Argonian
1     Breton
2     Dark Elf
3     High Elf
4     Imperial
5     Khajiit
6     Nord
7     Orc
8     Redguard
9     Snow Elf*
10   Wood Elf
*at the time of this writing, Snow elves are only partially supported.  Baby Snow Elves will use the High Elf model, and trained Warriors or Mages will also be High Elves.  Snow Elf children, however, will have their own unique appearance.

The list of baby armors to use is found in FormID List FExxxD5C:
These directly correspond to the supported races, above.
For Supported Race entry 0 Argonian, use armor 0 _JSW_BB_BabyArgonian
For Supported Race entry 1 Breton, use armor 1 _JSW_BB_BabyDefault
etc

The list of children to spawn is found in FormID List FExxxD5A:
the entries in this list are [2 * (the race index, from the supported races list above) + sex]
i.e. 2*raceindex for males, 2*raceindex + 1 for females
Khajiit are raceindex 5, so male khajiit are (2*5)=10, female khajiit are (2*5)+1=11

Making Custom Baby Armor Items:
All the current ones use slot 57.   Technically, that's not even necessary.  
Make your custom baby armor as you'd normally make armor, and replace the entry/entries in the FormID List with your new armor.  Done.

Making Custom Spawnable Children:
There's only a few things this mod cares about:
- Faction
- Packages
- Keywords
The easiest thing to do is copy that from one of the existing Breton children in this mod.  (the bretons are the templates the others are based on)
Edit v2.18: - They also now have an attached script in their actor record.   It's the same script for each child.  As with the above, just copy it from a Breton child's record.  You do not need to make a custom script for them- just assign the same script I use for all the other children.
Other than that, make the kids however you normally do so.
Find the child you want to replace in the FormID List, and replace his/her FormID with your custom child NPC's FormID.  Done.


Adding Support for Custom Races:

Case A) If your custom race is based on a vanilla race and largely similar to them, you may not have to do anything
-- I do a "Contains" search on the parent's race name with the name from the first FormID List, Supported Races.   Meaning, if you named your race "My custom Version of Bretons" when I do a search in the name for "Breton" from the first list, it will find it in your race name and consider it a match.  Congratulations, you're done.
Example: Charmers of the Reach : no patch necessary

Case B) No Match - this is only slightly more involved than the above
1) make a new record where its Full Name is the search string to use.  I use ammo records because they're small.   It really can be any type of record.
-- if the name of your race is "Purple Antelopes" the name of this new record can be "Purple" or "Antelope" or even "ple Ant" any of them will be a match
2) Add a new entry to the FMSupportedRaces FormID List and add the form you just created in step #1 to it
3) Add a new entry to the FMBabyBirthRace FormID List and specify what baby armor to use for your race
- you can make your own (see Making Custom Baby Armor Items, above) or use an existing one
4) Add two new entries to the FMAdoptableChildren FormID List (boy and girl) and specify which NPCs to spawn for each
- you can make your own (see Making Custom Spawnable Children, above) or use existing ones
-- the mod requires both a male and a female NPC.   If your race is genderless, you can specify the same NPC for both entries

IMPORTANT: Two changes as of v2.50+:
1) there are now two scripts attached to each spawnable child:
  _SUB_ChildActorScript - this one has no properties to set, and is used if the PC chooses to rename the child
 _SUB_FM_ChildActorOrphanageScript - if the child is not taken in by the PC< this handles them moving into the Honorhall Orphanage, or despawning after five game days.  It has a single property, an array, which must be filled with these three forms in this order:
    0: _JSW_SUB_TrackedChild [KYWD:FExxx85D]
    1: _JSW_SUB_ChildManager "FM+ Quest for managing children spawned by this mod" [QUST:FExxx84E]
    2: BYOHRelationshipAdoptable [QUST:03004291]
The easiest way to fill this property, is still going to be by copying it in xEdit from one of the existing Breton children in the mod.
Note: the scripts are already included in this mod.   You do not need to add them to your mod.

2) The children must be spawned in cell Fexxx806 which was added by this plugin.
 - They should be placed "initially disabled".   When needed, this mod will move them to their mother and Enable them.

Preemptive Q & A:
Question: Why FormID Lists instead of editing Quest Records directly?
Answer 1: It prevents a patch/mod from being "version locked" to my mod.  If a patch edited the Quest record, and I updated the quest record in a future release, then a new version of the patch would be required.  This should prevent that.   You should be able to make a patch once, and have it work indefinitely.
Answer 2: Script properties are persistent when attached to running quests.   The "normal" way to update the script properties on a quest is to stop/reset the quest.   But that would have the effect of clearing a player's entire progress with this mod- clearing all tracked actors, pregnancies, etc so not desireable.  These FormLists aren't used directly by the quest.   They're used by a Magic Effect, one that only activates momentarily on a new game or upon loading a save.   Since the Magic Effect isn't constantly active, each time it runs it reads that record from the plugin and pushes the updated data to the script attached to the quest.  This allows the info on those FormLists to update the mod without requiring a new game or clean save.
To clarify: adding a patch mid-game should not be a problem.  Removing one, however, will likely result in missing art assets and "black faces" or a CTD.

Article information

Added on

Edited on

Written by

subhuman0100

2 comments

  1. Redshiftja
    Redshiftja
    • premium
    • 332 kudos
    I gotta say, patching your mod was way easier to do than the original FM lol. I HATED making FM patches for my race mods because of how annoyingly complex they were (to me at least). For your FM FIxes, it's just as easy as adding to some formlists. I went the extra mile and made custom childraces with recolored RS textures (that match their parent races) for my Ancient Falmer and Timelost Dwemer, and so far the patches seem to be working fine. 

    Thanks for these easy instructions and the documentation! 
    1. subhuman0100
      subhuman0100
      • member
      • 340 kudos
      Sorry for the slow reply, I didn't get any notification of your comment.
      I'm glad you found it easy to do and follow.   That was one of my main goals.
      The second, was to do it in a way that didn't require frequent patching or updates.  Whereas the old way of editing scripts and/or quest properties may require a new patch with each version update, this shouldn't.   I can't guarantee I'll never change how it works, but I can say I have no plans to change it, and if it does change it won't be a frequent occurrence.
      Third, was conflict resolution.  xEdit will usually merge formlists successfully when making a Merged Patch, but in the event that it fails to do so, most users should be able to resolve it on their own with only basic knowledge of xEdit and not require the CK at all.