racialtypes.2da is used to define the different races in the game.
Hardcoded Notes
NWN:EE unhardcoded a chunk of game engine things to do with races, especially around the free feat for Humans. See column information below.
There may be other changes to stats and abilities hardcoded to specific lines, these need thoroughly testing however (a number of racial feats may be "fake feats" and the information hardcoded to a specific line instead).
The players races are meant to be only ever entries 0 through 6 (Dwarf, Elf, Gnome, Halfing, Half Elf, Half Orc and Human). If you allow players to be other races the game may not treat them equally - the main thing seems to be the voiced conjuration sounds in spells.2da which are not used if you are racial type 7 or above.
There is a limit to the amount of racial types, 254. 255 is RACIAL_TYPE_INVALID.
Also note the special line 28 "RACE_INVALID" - do not use this line! This appears to be used by the game internally (not in nwscript directly) at least in certain effect properties when determining if a race is invalid for the purposes of VersusRacialTypeEffect.
Halflings receive a hardcoded +1 attack bonus when using slings.
The skill Animal Empathy is tied to lines 8 (RACIAL_TYPE_ANIMAL), 9 (RACIAL_TYPE_BEAST), and 19 (RACIAL_TYPE_MAGICAL_BEAST).
Previously Hardcoded Aspects
The feats for favoured racial types for Ranger are now unlocked in 1.87.8193.35.
Cut Content Notes
There are 4 default lines dummied out as "DELETED". The only remains of them are the Abrev column. They are "Og", "On", "Oc" and "Ol". These are possibly simply "Outsider" but various alignments, since "Oe" is Outsider, and "e", "g", "c", "n" and "l" are all alignments (Evil, Good, Chaotic, Neutral and Lawful). As far as we're aware these lines contain absolutely no special coding in the engine.
Subraces
In 1.87.8193.35 you can now specify the Favoured Enemy of each racial type. This means finally subraces are able to be done reasonably well.
You still need to change scripts - eg spells that assume what racial types are "humanoid" for some spells like Charm Person.
There is a "Subrace" text field that the player can also fill in and can be set in nwscript but doesn't display on the chartsheet.
2da Column Information
Column Name | Example | Valid Values | Description |
---|---|---|---|
ID (no actual name) | Row numbers for the benefit of human readers. The game engine ignores the value in this field, instead generating sequential row numbers as the file is read. It is good practice to keep the entries in this field sequentially numbered to avoid confusion. | ||
Label | Text | The name of the race for the benefit of human readers. Unused by the game. | |
Abrev | Text | The two-letter abbreviation for this race. Not used in the game as far as we know. | |
Name | TLK entry | A StringRef for the name of this race (capitalized). | |
ConverName | TLK entry | A StringRef for the adjective form of this race (capitalized). | |
ConverNameLower | TLK entry | A StringRef for the adjective form of this race in lowercase. | |
NamePlural | TLK entry | A StringRef for the name of members of this race (capitalized, plural). | |
Description | TLK entry | A StringRef for the description of this race (shown during character creation). | |
Icon | Icon resref | New for NWN:EE presumably the icon used for the race at character select. | |
Appearance | appearance.2da line reference | The ID of the row in appearance.2da that defines the default appearance for members of this race. (In particular, this is the appearance given to player characters of this race during character creation.) | |
StrAdjust | Integer | The racial modifier to strength for members of this race. | |
DexAdjust | Integer | The racial modifier to dexterity for members of this race. | |
IntAdjust | Integer | The racial modifier to intelligence for members of this race. | |
ChaAdjust | Integer | The racial modifier to charisma for members of this race. | |
WisAdjust | Integer | The racial modifier to wisdom for members of this race. | |
ConAdjust | Integer | The racial modifier to constitution for members of this race. | |
Endurance | Ignored. This field contains remnants of a (pre-release) definition of the movement speeds of the playable races. However, by the time the game was released, race-based speed definitions were discarded in favor of creaturespeed.2da. | ||
Favored | classes.2da line reference | The ID of the row in classes.2da that defines the favored class of this race. | |
FeatsTable | 2da resref name | The name of the .2da file (without the extension) defining the racial feats gained from taking this race. Bioware used the naming format Note the feats listed here not always are functional just informational like Quick to Master. The unhardcoded columns allow some like Quick to Master to be retooled/changed now however. | |
Biography | TLK entry | A StringRef for the default biography of this race, which is the default description provided for player characters during character creation. | |
PlayerRace | 1 | 1 or 0 | 1 = playable race 0 = non-playable race Does not seem to affect the script command GetIsPlayableRacialType. |
Constant | Text | Ignored. The NWScript symbolic constant for this racial type. This is ignored by the game and is only for the reference of the human reader. | |
AGE | Integer | The default age for player characters of this race. | |
ToolsetDefaultClass | classes.2da line reference | The default class selected by the Toolset when creating a non-player character of this race. | |
CRModifier | 1 | Float value | Used for CR calculations in the toolset, which affect XP given for defeating monsters. |
NameGenTableA | dwarf elf gnome halfing halforc human | Resref of an LTR file minus the "f" or "m" | Unhardcoded random name generation file used for this race during PC character generation. From niv: "LTR files are relatively simple probability lists and letter lookup tables for various parts of the name. I can look into writing up some docs on it, but editing them comfortably will require more than a spec." These probably ommit the "f" and "m" part. So not sure if you can use "familiar" as an option here. Test and replace this line if you find you can (or can generate new ones). |
NameGenTableB | As above | As above. | Unhardcoded random name generation file used for this race during PC character generation. Half elves use this to have human and elf names available. |
ExtraFeatsAtFirstLevel | 1 | **** or Integer | If set it adds this many extra feats at first level - ie; human trait sets this to 1 |
ExtraSkillPointsPerLevel | 1 | **** or Integer | If set it adds this many extra skill points at each level up. ie; humans have this set to 1. |
FirstLevelSkillPointsMultiplier | 4 | Integer | The amount of skill points at first level are multiplied by this, for instance a 10 intelligence Human Cleric gets 4 * (2 + 1) = 12 skill points at level 1. A Half-Orc Cleric would get 4 * (2 + 0) = 8 skill points at level 1. You can set this to 0 to have level 1 characters not get any skill points. |
AbilitiesPointBuyNumber | 30 | Integer | Amount of points available for point buys. ruleset.2da contains some overarching options to do with this as well. |
NormalFeatEveryNthLevel | 3 | Integer | The amount of levels between normal feats. EG: 3 means you get a feat at level 1, 3, 6, 12, 15. 4 would mean 1, 4, 8, 12, 16. |
NumberNormalFeatsEveryNthLevel | 1 | Integer | Amount of feats gained when NormalFeatEveryNthLevel level occurs, plus level 1. |
SkillPointModifierAbility | INT | STR, DEX, CON, WIS, INT, CHA | 3 letter code for an ability modifier used to provide additional skill points on level up. If blanked (****) it will not provide any. If the column is missing it will default to INT. |
FavoredEnemyFeat | 261 | feat.2da line reference | The feat used for Favored Enemy. This unhardcodes the Favored Enemy feats. It is very useful to replicate Subraces pretty much entirely from an engine perspective. EG: Favored Enemy: Elf is 261. If you create the "Drow" racial type, you can then have that race be thought of as an Elf by Favoured Enemy: Elf. |
2da Contents
1.82.8169.20
2DA V2.0 Label Abrev Name ConverName ConverNameLower NamePlural Description Icon Appearance StrAdjust DexAdjust IntAdjust ChaAdjust WisAdjust ConAdjust Endurance Favored FeatsTable Biography PlayerRace Constant AGE ToolsetDefaultClass CRModifier NameGenTableA NameGenTableB ExtraFeatsAtFirstLevel ExtraSkillPointsPerLevel FirstLevelSkillPointsMultiplier AbilitiesPointBuyNumber NormalFeatEveryNthLevel NumberNormalFeatsEveryNthLevel SkillPointModifierAbility 0 Dwarf Dw 22 5583 5588 23 251 **** 0 0 0 0 -2 0 2 20 4 RACE_FEAT_DWARF 8157 1 RACIAL_TYPE_DWARF 50 4 1 dwarf **** **** **** 4 30 3 1 INT 1 Elf El 24 5584 5589 25 252 **** 1 0 2 0 0 0 -2 30 10 RACE_FEAT_ELF 8158 1 RACIAL_TYPE_ELF 120 10 1 elf **** **** **** 4 30 3 1 INT 2 Gnome Gn 26 26 4919 27 253 **** 2 -2 0 0 0 0 2 20 10 RACE_FEAT_GNOME 8159 1 RACIAL_TYPE_GNOME 45 10 1 gnome **** **** **** 4 30 3 1 INT 3 Halfling Hl 28 28 4920 29 254 **** 3 -2 2 0 0 0 0 20 8 RACE_FEAT_HALF 8160 1 RACIAL_TYPE_HALFLING 20 8 1 halfling **** **** **** 4 30 3 1 INT 4 HalfElf He 30 5586 5590 31 255 **** 4 0 0 0 0 0 0 30 **** RACE_FEAT_HFELF 8161 1 RACIAL_TYPE_HALFELF 21 4 1 elf human **** **** 4 30 3 1 INT 5 HalfOrc Ho 32 32 4922 33 256 **** 5 2 0 -2 -2 0 0 30 0 RACE_FEAT_HFORC 8162 1 RACIAL_TYPE_HALFORC 18 0 1 halforc **** **** **** 4 30 3 1 INT 6 Human Hu 34 34 4923 35 257 **** 6 0 0 0 0 0 0 30 **** RACE_FEAT_HUMAN 8163 1 RACIAL_TYPE_HUMAN 18 4 1 human **** 1 1 4 30 3 1 INT 7 Aberration Ab 525 525 5001 63235 525 **** 102 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_ABERRATION 25 11 1.3 **** **** **** **** 4 30 3 1 INT 8 Animal Am 526 526 5002 63236 526 **** 93 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_ANIMAL 20 12 0.95 **** **** **** **** 4 30 3 1 INT 9 Beast Be 527 527 5003 63237 527 **** 174 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_BEAST 20 21 **** **** **** **** **** 4 30 3 1 INT 10 Construct Ct 528 528 5004 63238 528 **** 92 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_CONSTRUCT 1000 13 1.3 **** **** **** **** 4 30 3 1 INT 11 Dragon Dg 529 529 5005 63239 529 **** 41 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_DRAGON 500 18 0.825 **** **** **** **** 4 30 3 1 INT 12 Humanoid_Goblinoid Gb 533 533 5006 63240 533 **** 86 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_HUMANOID_GOBLINOID 8 14 **** **** **** **** **** 4 30 3 1 INT 13 Humanoid_Monstrous Mn 536 536 100972 536 536 **** 119 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_HUMANOID_MONSTROUS 18 15 1 **** **** **** **** 4 30 3 1 INT 14 Humanoid_Orc Or 537 537 5008 63241 537 **** 140 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_HUMANOID_ORC 14 14 **** **** **** **** **** 4 30 3 1 INT 15 Humanoid_Reptilian Rp 538 538 100973 63242 538 **** 134 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_HUMANOID_REPTILIAN 20 14 1 **** **** **** **** 4 30 3 1 INT 16 Elemental Em 539 539 5010 63243 539 **** 60 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_ELEMENTAL 100 16 1.1 **** **** **** **** 4 30 3 1 INT 17 Fey Fe 540 540 5011 540 540 **** 51 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_FEY 100 17 1 **** **** **** **** 4 30 3 1 INT 18 Giant Gi 541 541 5012 63245 541 **** 78 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_GIANT 18 22 1 **** **** **** **** 4 30 3 1 INT 19 Magical_Beast Mb 542 542 100970 63246 542 **** 73 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_MAGICAL_BEAST 20 23 1 **** **** **** **** 4 30 3 1 INT 20 Outsider Oe 543 543 5014 63247 543 **** 38 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_OUTSIDER 300 24 1.1 **** **** **** **** 4 30 3 1 INT 21 DELETED Og **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** INT 22 DELETED On **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** INT 23 Shapechanger Sh 546 546 5017 63248 546 **** 171 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_SHAPECHANGER 18 25 **** **** **** **** **** 4 30 3 1 INT 24 Undead Un 547 547 5018 547 547 **** 186 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_UNDEAD 20 19 1.3 **** **** **** **** 4 30 3 1 INT 25 Vermin Vr 548 548 5019 548 548 **** 159 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_VERMIN 4 26 1.1 **** **** **** **** 4 30 3 1 INT 26 DELETED Oc **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** INT 27 DELETED Ol **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** INT 28 INVALID_RACE **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** INT 29 Ooze Oo 84437 84437 84438 84437 84437 **** 470 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_OOZE 100 38 1.1 **** **** **** **** 4 30 3 1 INT