Starfield
0 of 0

File information

Last updated

Original upload

Created by

ermakysion

Uploaded by

ermakysion

Virus scan

Safe to use

Tags for this mod

About this mod

A mod that realistically resizes all human NPCs in the game, plus tools for customizing character heights to suit one's preferences.

Requirements
Permissions and credits
Changelogs
Introduction
The NPC Height Variation Toolkit randomly but realistically resizes human NPCs so that their heights aren't all the same (as in the vanilla game), plus provides tools for customizing individual characters' heights to suit one's preferences. The objective of the kit is to automate as much of the tedium of resizing characters as possible. It accomplishes this using the following items:
  • A Pascal script that can be used by those comfortable with SF1Edit to generate an esm file containing adjusted height values for all human NPCs in the game. This script can additionally be modified by those familiar with Pascal to, for example, change the mean heights and/or standard deviations for male, female, and child characters.
  • A pregenerated plugin file, created with the above script, for those who'd like to simply install the mod and immediately start playing.
  • A spreadsheet, in both Excel and LibreOffice formats, containing a list of all Lodge and companion NPCs (plus lots of empty rows for manually entered NPCs), along with their IDs and formulas for outputting GetScale, SetScale, and MoveTo console commands for each. (The MoveTo command doesn't pertain to height, but is useful for recovering lost or stuck NPCs.) The sheet also outputs strings that can be copied and pasted into a txt file (which can then be run as a bat in the command console) or toml file (for use with Console Command Runner).
  • Pregenerated txt and toml files, made using the above spreadsheet.

I recommend using the Toolkit in conjunction with No Rescale on Interact.

Installation & Use

Plugin File
1. Download the mod.
2. Extract RandomNPCHeights.esm to %userprofile%\Documents\My Games\Starfield\Data.
3. Download and install Plugin.txt Enabler.
4. Create a Plugin.txt file in %localappdata%\Starfield and add *RandomNPCHeight.esm to it.
5. Play the game.

Txt Files
The set_heights.txt and reset_heights.txt files can be extracted directly into the main game directory. They can be run from the command console by entering bat set_heights or bat reset_heights, respectively.

TOML File
The SetNPCHeights.toml file can be extracted to the Data\SFSE\plugins\ConsoleCommandRunner folder of your game installation directory.

Spreadsheet
1. Extract the NPC Height Calculator.xlsx and/or NPC Height Calculator.ods file(s) wherever you like.
2. Manually enter custom data into cells outlined in green. Do not enter data in any other cells! (I've left the other cells unprotected for those who'd like to examine and/or modify their contents, but I don't recommend fiddling with them unless you know what you're doing.) For the Age column, "A" stands for adult and "C" for child. For the Sex column, "M" stands for male and "F" for female.
3. Copy the relevant cells and paste their contents into the game console as needed. (See below for details.)

Pascal Script
1. Extract Randomize NPC Heights.pas to the Edit Scripts folder of your SF1Edit installation directory.
2. Open SF1Edit and wait for it to initialize.
3. Open the Starfield.esm records tree.
4. Select the Non-Player Character (Actor) and Race groups.
5. Right click and select Deep Copy as Override Into. Name the new file created from the copied records.
6. Right click on the newly created ESM file. Select Apply Script and choose Randomize NPC Heights.
7. Wait for the script to finish running. It shouldn't take long at all.
8. Save the file, then clean it with SF1EditQuickAutoClean64.exe. This will remove duplicate records that weren't changed by the script and cut down on file size.

How Height Works in Starfield
All actors in Starfield have a height that is the product of two factors: a Reference (or Ref) scale and a Base scale. The Base scale is in turn the product of a Race scale and an Actor scale. Or, in other words:

Height = Ref scale × Base scale = Ref scale × (Race scale × Actor scale)

The Race scale differs by sex. Each Race has a male and a female height value assigned to it; however, in all cases in the vanilla game, these are the same (1.00 for adults, 0.86 for children). The Actor scale is a randomly assigned value between a minimum and a maximum height. Again, in the vanilla game, these are both usually just set to 1.00; however, there are exceptions (e.g., the Adoring Fan has a min/max height of 0.97). Consequently, almost all adult actors in Starfield have a Base scale of 1.00; all child actors, a Base scale of 0.86.

The Ref scale, meanwhile, is just an additional multiplier applied to the Base, which can be changed using the SetScale console command. When Starfield first released, the Ref scale seemed to always be set to 1.00, but with patch 1.8.86, I've noticed that some NPCs now have unique Ref scales.

The plugin included with the NPC Height Variation Toolkit works by changing the Race and Actor scales to account for real-world height distributions. The races are adjusted so that age and sex affect mean height (men are taller on average than women, adults are taller on average than children); the actors, so that their min and max heights are within a few standard deviations of the mean. For unique actors (which often have actual names, rather than descriptive titles), the min and max heights are kept the same, so that their appearances remain consistent across saves.

How to Use the Console Commands
With all this in mind, it becomes possible to manually adjust individual characters' heights using the GetScale and SetScale console commands. There are a couple of ways to go about doing this.

Target NPC in Console
The most straightforward method is to open the command console and target (by clicking on) an NPC with the mouse. It may be necessary to use the scroll wheel to cycle through records until you see an NPC_ signature. Example: NPC_ 'AndromedaKeplerRef' (0016B3D0).

Once you've successfully targeted the NPC, you can type getscale into the console (without any ID -- the game should automatically pass the targeted character's ID to the console), which will output something like the following:

GetScale >> ( REF * BASE = CURRENT ) (1.00 * 0.93 = 0.93)

Here we see that Andromeda has a Ref scale of 1.00 and a Base scale of 0.93, for a Current scale of 0.93. If you wanted to further adjust her height, you'd open the NPC Height Calculator spreadsheet, input the desired new height (in inches) in Column D and the Base scale in Column H, then copy (Ctrl-C) the SetScale command in Column L and paste (Ctrl-V) and enter it into the console.

Look Up ID in Console
Alternatively, in the command console, enter help [name of NPC with no spaces]. For example: help SarahMorgan. You'll get back quite a bit of text, but the line to pay attention to will start with ACHR. Example: ACHR: SarahMorganREF (00005986). The alphanumeric sequence inside the parentheses is the character's (Reference or Ref) ID. This can be inputted into the spreadsheet in Column J. The outputted GetScale command in Column K can then be copied and pasted into the console to get the scale components, which can then be fed back to the spreadsheet to calculate a new SetScale command, as described above.

Inspiration
The NPC Height Variation Toolkit draws inspiration from the Statistically Accurate NPC Height Randomizer for Skyrim Special Edition, and credit is given to sinanonline for the original plugin concept.

My Other Mods
No Rescale on Interact
More NPC Names
Real Time