Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

classes.2da defines the NWN class system. You can add new base and prestige classes. NWN:EE has expanded the "unhardcoded" parts of this 2da significantly.

Table of Contents

...

Cut Classes

There are two presitege prestige classes from lines 39 and 40 not implemented by Bioware for whatever reason (and were they going to be patched in or HotU content?), this is why they are dummied out and skipped for the Purple Dragon Disciple (which contains no engine specific coding). They contain special feats and even some engine-tied abilities in the case of the Shou Disciple since they act like a Monk.

...

Assessments of getting these back in the game and extent they're complete will come in the future. The Community Patch Project included versions of these. The notes below on hardcoded lines are where the notes are.

Hardcoded Lines

Lines with hardcoded effects, although there may be ruleset.2da entries you cannot change what lines these are applied to. If you want to replicate these features you have to reuse the line. NWN:EE has removed some of these limitations so they are not listed here but will be in the 2da documentation further down.

NOTE: Scripts that run (eg; Turn Undead or Lay on Hands) for feats are not considered hardcoded!

0 - Barbarian

Barbarians (very likely - need to confirm) get Movement Speed Bonuses applied, which is tied to the class line not feat - the feat just is a nice UI bonus for players. Not sure how this affects NPCs.

...

FEAT_BARBARIAN_ENDURANCE provides this amount of % EffectMovementSpeedIncrease. So 0.1f is 10% bonus. It is probably specially hardcoded to CLASS_TYPE_BARBARIAN as well.

Uncanny dodge II grants immunity to sneak attacks from a flanking attacker unless the attacker has at least four more combined class levels of rogue, assassin, and barbarian than the defender. (Shadowdancer and blackguard levels are not counted.) For example, a level 10 rogue would have this immunity when attacked by a level 13 rogue, but not when attacked by a level 14 rogue. This immunity does not apply when the defender is flat-footed.

Appears Barbarian Rage may have some hardcoded items; see https://nwn.fandom.com/wiki/Barbarian_rage

1 - Bard

In NWN:EE it has unhardcoded spellcasting tied to an Arcane spellbook and Charisma.

Bard Song is scripted.

Bardic Knowledge feat is tied to Bard and Harper class levels combined.

2 - Cleric

No known limitations. In NWN:EE it has unhardcoded Domains choice and spellcasting ability tied to Divine spellbook and Wisdom.

Turn Undead is scripted.

3 - Druid

No known limitations. In NWN:EE it has unhardcoded Animal Companions (the option to combine class levels for the Animal Companion level is a ruleset.2da entry) and spellcasting ability tied to Divine spellbook and Wisdom.

4 - Fighter

No known limitations.

5 - Monk

Monks get a wide array of "Monk Bonuses". These equally apply to the missing "Shou Disciple" line below. These include a different Base Attack Bonus progression, Unarmed Strike damage and ability to use "Monk abilities" in armour (just giving the feat doesn't seem to work in many cases).

Monk feats - like Ki Strike, Quivering Palm etc. may be tied to having a particular class level, or that the DC includes monk class levels, or sometimes they just fail altogether. Need to document all of these limitations (so you don't go adding Ki Strike to a monster NPC and expect it to work properly).

...

6 - Paladin

In NWN:EE it has unhardcoded Divine spellbook based on Wisdom.

Champion of Torm and paladin levels are added together to determine the bonus damage to Smite Evil.

Other abilities such as Lay on Hands and Turn Undead are scripted.

7 - Ranger

In NWN:EE it has unhardcoded Animal Companions (the option to combine class levels for the Animal Companion level is a ruleset.2da entry) and spellcasting ability tied to Divine spellbook and Wisdom.

Note according to nwn.fandom.com the class choosing a Favoured Enemy determines the class level associated with it.

8 - Rogue

Having a single rogue class level unlocks these two "high DC" for disarming and detecting traps.

Note that Flagging, Examining and even Recovering are still possible actions if the trap is found from some means (commonly Find Traps being altered to not disable traps, only detect them).

...

Uncanny dodge II grants immunity to sneak attacks from a flanking attacker unless the attacker has at least four more combined class levels of rogue, assassin, and barbarian than the defender. (Shadowdancer and blackguard levels are not counted.) For example, a level 10 rogue would have this immunity when attacked by a level 13 rogue, but not when attacked by a level 14 rogue. This immunity does not apply when the defender is flat-footed.

9 - Sorcerer

In NWN:EE it has unhardcoded Familiar availability (and they stack with other Familiar compatible classes) and spellcasting ability tied to Arcane spellbook and Charisma.

10 - Wizard

In NWN:EE it has unhardcoded Familiar availability (and they stack with other Familiar compatible classes) and spellcasting ability tied to Arcane spellbook and Intelligence.

11 - 26 - NPC Classes

Aberration, Animal, Construct, Humanoid, Monstrous, Elemental, Fey, Dragon, Undead, Commoner, Beast, Giant, MagicBeast, Outsider, Shapechanger, Vermin have no special qualities at all.

27 - Shadowdancer

No known hardcoded things, go mad adding Hide in Plain Sight feat to things.

28 - Harper

Worth noting: NWN:EE now allows this class to have a proper spellbook.

Bardic Knowledge feat is tied to Bard and Harper class levels combined.

29 - Arcane Archer

No known hardcoded things.

30 - Assassin

Uncanny dodge II grants immunity to sneak attacks from a flanking attacker unless the attacker has at least four more combined class levels of rogue, assassin, and barbarian than the defender. (Shadowdancer and blackguard levels are not counted.) For example, a level 10 rogue would have this immunity when attacked by a level 13 rogue, but not when attacked by a level 14 rogue. This immunity does not apply when the defender is flat-footed.

Assassins Death Attack is tied to Assassin levels.

31 - Blackguard

Class levels of Blackguard are tied to the Feat: Smite Evil.

32 - Champion of Torm

Champion of Torm and paladin levels are added together to determine the bonus damage to Smite Evil.

33 - Weapon Master

Superior Weapon Focus bonus is tied to Weapon Master Levels.

Ki Damage uses/day are tied to Weapon Master.

34 - Pale Master

The start changes should be unhardcoded in NWN:EE. See cls_stat_palema.2da

Deathless Vigor is tied to Pale Master levels, and has some ruleset.2da alterations for the values:

...

Undead Graft may also be tied to this class line - the uses/day part that is.

35 - Shifter

No known specific hardcoded things. All abilities are scripted or not tied to the class lines.

36 - Dwarven Defender

The Defensive Stance uses and the level tied to the feat is this class line. Some of the amounts can be altered using

...

37 - Dragon Disciple

The stat increases of this class should be now be unhardcoded to more or less degrees; see cls_stat_dradis.2da

38 - Ooze

NPC class not used specially (note the racial type doesn't even have a favoured enemy type!).

39 - Eye of Grummsh

Not included in the base game - unknown why.

Class Eye of Gruumsh information for reference:

Expand

Blinding Spittle
Type of Feat: Class
Prerequisite: Eye of Gruumsh level 4.
Specifics: At 4th level, an Eye of Gruumsh can launch blinding spittle at any opponent within 20 feet. Using a ranged touch attack (at a -4 penalty), he spits his stomach acid into the target's eyes. An opponent who fails a Reflex save (DC 10 + eye of Gruumsh level + eye of Gruumsh's Constitution bonus) is blinded until he or she can rinse away the spittle. This attack has no effect on creatures that don't have eyes or don't depend on vision.  Blinding spittle is usable 2/day at 4th level and 4/day at 7th level.
Use: Combat Mode.
(PRESTIGE CLASS)
Worshipers of the Orc deity Gruumsh that have put out their own right eye in a bloody and painful ritual. These living martyrs to Gruumsh are some of the toughest orcs and half-orcs in the world.
The eye of Gruumsh is a true prestige class in the sense that all orcs respect those who achieve it.
Barbarians gain the most value from this prestige class, since it encourages raging as a fighting style

- Hit Die: d12
- Proficiencies: Simple and Martial Weapons, Light, and Medium Armor Proficiency, Shields
- Skill Points: 2 + Int Modifier.

REQUIREMENTS:

Alignment: Chaotic evil, choatic neutral, or neutral evil.
Race: Half-Orc or Orc
Feats: Exotic Weapon Proficiency (Double Axe), Weapon Focus (Double Axe).
Base Attack Bonus: +6

ABILITIES:

Level
1: Blind-Fight.
 Command the Horde
 Rage 1/day.
2. Swing Blindly - The character's rage's become more powerful granting a +4 strength bonus, while also suffering a -4 armor bonus while raging.
3: Ritual Scarring - Through frequent disfiguration of his own skin, the eye of Gruumsh gains a +1 natural armor bonus.
4: Blinding Spittle - The character can spit their stomach acid into a target's eyes 2/day.
 Rage 2/day.
5: Blindsight - The character gains blindsight in a 5 foot radius.
6: Ritual Scarring - The eye of Gruumsh's natural armor bonus increases to +2.
7: Blinding Spittle 4/day.
8: Blindsight 10 foot radius.
 Rage 3/day.
9: Ritual Scarring - The eye of Gruumsh's natural armor bonus increases to +3.
10: Sight of Gruumsh - The character gains a +2 morale bonus on all saving throws.

Book Information: https://www.realmshelps.net/charbuild/classes/prestige/general/eyeofgruumsh.shtml

Basically a Barbarian prestige class for Half-Orcs only, so very narrow focus (possibly better if it was made more generic? although there are some specific bonuses for other Half-Orcs too!). Some slight Rage bonuses, and Blindsight 5 and 10 feet distances, and some other bits and bobs.

40 - Shou Disciple

Book Information: https://www.realmshelps.net/charbuild/classes/prestige/realms/shoudisciple.shtmlClass Shou Disciple for reference:

Expand

Shou disciples are martial artists who have studied or observed the monks of Kara-Tur and seek to emulate their style. Focusing more on the martial aspects of a monk's training, they sacrifice the enlightenment and supernatural abilities of the true ascetic. Shou disciples fight with martial weapons and often wear armor, instantly marking them as different from monks.

- Hit Die: d10
- Proficiencies: Martial and Monk Weapons, Light Armor Proficiency.
- Skill Points: 2 + Int Modifier.

REQUIREMENTS:

Feats: Dodge, Improved Unarmed Strike, Weapon Focus (Unarmed Strike)
Base Attack Bonus: +3
Skills: Tumble 4 ranks
Base Reflex Save: +2

ABILITIES:

Level
1: Shou Disciple Dodge Bonus +1 (replaces the normal +1 dodge feat bonus).
 Unarmed Strike - The character deals 1d6 of unarmed damage. A Shou disciple with levels in the monk class will use the better of the two damage ranges, or the unarmed damage calculated by combining his Shou disciple and monk levels and using the unarmed damage of a monk of the resulting level if it produces a better result.
 Wearing light armor does not interfere with any of the Shou disciple's class abilities, but shields and medium or heavy armor do.
2: Unarmed Strike - The character deals 1d8 of unarmed damage.
 Shou Disciple Dodge Bonus +2
 Bonus Feat - Chosen from the following list if the prerequisites are met: Deflect Arrows, Expertise, Improved Initiative, Improved Knockdown, Mobility, Power Attack, Spring Attack, Weapon Finesse and Weapon Specialization.
3: Unarmed Strike - The character deals 1d10 of unarmed damage.
 Martial Flurry (light) - The character gains the ability to use any light melee weapon for his flurry of blows.
4: Shou Disciple Dodge Bonus +3
 Bonus Feat - Chosen from the following list if the prerequisites are met: Deflect Arrows, Expertise, Improved Initiative, Improved Knockdown, Mobility, Power Attack, Spring Attack, Weapon Finesse and Weapon Specialization.
5: Unarmed Strike - The character deals 2d6 of unarmed damage.
 Martial Flurry (any) - The character gains the ability to use any melee weapon for his flurry of blows.

Basically a Monk Prestige Class that can use light weapons instead of fists. Has a variety of ruleset.2da entries for the other bonuses it has tied to feats that are dummied out. See the Monk line for further information on hardcoded aspects of this class.

...

You can also find more information in Hardcoded classes.2da lines and Cut Feats.

There is also a placeholder icon suggesting that the "Weapon Master" was originally "Kensei" - ir_kensei.png - Image Addedand also you can see this with cls_pres_kensei.2da (now unused) which also has the script variable X2_AllowKensei.

Hardcoded Lines

See Hardcoded classes.2da lines. Boy are there are a lot of them.

Line Limits

You can use 0 through 254 for class lines, due to engine limitations. 255 is reserved for CLASS_TYPE_INVALID in the game engine/nwscript.

2da Columns

For more information on the NWN:EE caster spellbooks see Custom Spellbooks using classes.2da and spells.2da

Column LabelExampleValid ValuesDescription and Notes
ID (Blank)00-254

Max Class is defined as 255 and is an unusable line.

Many of the default 0-40 lines have hardcoded features and it is not recommended to reuse these. See above.

LabelBarbarianTextThe name of the class (without spaces, as required by .2da files). This value is usually just for reference purposes, but can be displayed in game if the value in the Name column is ****.
Name5213TLK referenceA StringRef indicating a string that will be displayed in the game as the name of the class ("Bard", "Barbarian") etc.)
Plural1TLK referenceA StringRef indicating a string that will be displayed in the game as the plural form of the name of the class. ("Bards", "Barbarians", etc.)
Lower4890TLK referenceA StringRef indicating a string that will be displayed in the game as the name of the class in lowercase. ("bard", "barbarian", etc.)
Description240TLK referenceA StringRef indicating a string that will be displayed in the game as the class description.
Iconir_barbarianResref: TextureA ResRef specifying the icon displayed in the game for this class. By convention, these start with "ir_", followed by the class name, abbreviated if necessary to fit the ResRef limit of 16 characters.
HitDie10IntegerThis determines what size of die is used to roll hit points on level-up. (4, 6, 8, 10, 12, etc.)
AttackBonusTablecls_atk_1Resref: 2da name, usually cls_atk_xxx.2daThe name of the .2da file (without the extension) to be consulted for the base attack bonus progression of this class. The format of this .2da must match that of the cls_atk_*.2da files. The standard values for this column are cls_atk_1 (full progression), cls_atk_2 (3/4 progression), and cls_atk_3 (1/2 progression).
FeatsTablecls_feat_barbResref: 2da name, usually cls_feat_xxx.2daThe name of the .2da file (without the extension) defining the class feats. The format of this .2da must match that of the cls_feat_*.2da files. The standard values for this column are "CLS_FEAT_" followed by the class name, possibly abbreviated.
SavingThrowTablecls_savthr_barbResref: 2da name, usually cls_savthr_xxx.2daThe name of the .2da file (without the extension) defining the saving throw progression of this class at pre-epic levels. The format of this .2da must match that of the cls_savthr_*.2da files. The standard values for this column are "CLS_SAVTHR_" followed by a base class name (or "CONS" or "WILD"), possibly abbreviated. Toolset won't start unless the file listed here exists.
SkillsTablecls_skill_barbResref: 2da name, usually cls_skill_xxx.2daThe name of the .2da file (without the extension) defining the skills available to this class, including specifying which ones are class skills. The format of this .2da must match that of the cls_skill_*.2da files. The standard values for this column are "CLS_SKILL_" followed by the class name, possibly abbreviated.
BonusFeatsTablecls_bfeat_barbResref: 2da name, usually cls_bfeat_xxx.2daThe name of the .2da file (without the extension) defining the class levels at which this class receives bonus feats. The format of this .2da must match that of the cls_bfeat_*.2da files. The standard values for this column are "CLS_BFEAT_" followed by the class name, possibly abbreviated.
SkillPointBase4Integer

This is number of skill points gained per level (before the intelligence modifier and before quadrupling at character level 1).

This appears to be read as a minimum of 1 although the stat associated with skill points can be blanked in racialtypes.2da by setting SkillPointModifierAbility to ****

SpellGainTablecls_spgn_bardResref: 2da name, usually cls_spgn_xxx.2daThe name of the .2da file (without the extension) defining how many spell slots this class has at each level. The format of this .2da must match that of the cls_spgn_*.2da files. The standard values for this column are "CLS_SPGN_" followed by the class name, possibly abbreviated.
SpellKnownTablecls_spkn_bardResref: 2da name, usually cls_spkn_xxx.2daThe name of the .2da file (without the extension) defining how many spells are known by this class at each level (for classes with a limited number of known spells, specifically bards and sorcerers). The format of this .2da must match that of the cls_spkn_*.2da files. The standard values for this column are "CLS_SPKN_BARD" and "CLS_SPKN_SORC".
PlayerClass1

1 = Available to players

0 = Only available in the toolset to NPCs

Controls whether or not this class is available for players in the game, else if 0 it will restrict it to NPC classes in the toolset. If setting the vanilla classes to 0, they will be permanently grayed out, whereas for custom content, this setting determines if it shows up in the class list. If you want to hide the vanilla classes from showing up, you'd need to make sure this is 0 and that the Name column is set to a non-default value.

Prestige classes even if not initially available to choose from need this setting to 1.

SpellCaster01, 0

Leave as 0 for custom classes that add to existing spell casting classes. If you set to 1, this will prevent the DivSpellLvlMod and ArcSpellLvlMod from working.

Set to 1 for a custom class with its own spell list, as with the new NWN:EE columns below.

Str16IntegerThe value given to strength when a player uses the recommended button during character creation.
Dex15IntegerThe value given to dexterity when a player uses the recommended button during character creation.
Con14IntegerThe value given to constitution when a player uses the recommended button during character creation.
Wis10IntegerThe value given to wisdom when a player uses the recommended button during character creation.
Int10IntegerThe value given to intelligence when a player uses the recommended button during character creation.
Cha10IntegerThe value given to charisma when a player uses the recommended button during character creation.
PrimaryAbilSTRSTR, DEX, CON, WIS, INT, CHA

The primary ability of this class.

In pre-NWN:EE it was used to determine a spellcasters save DC. Spellbooks now use the SpellcastingAbil column (although it is safest to set this to the same value).

Although rarely if ever used by Bioware this applies to GetSpellSaveDC when class feats are used too (eg; a Harper casting Harper Sleep), see: Spells and Abilities.

AlignRestrict0x02

0x01 = neutral (with the axis determined by the AlignRestrictType column)

0x02 = lawful

0x04 = chaotic

0x08 = good

0x10 = evil

Specifies the alignments that are not allowed to obtain levels in this class. All the options here are:

  • 0x00 = No Restrictions
  • 0x01 = No Neutral
  • 0x02 = No Lawful
  • 0x03 = No Lawful, No Neutral
  • 0x04 = No Chaotic
  • 0x05 = No Chaotic, No Neutral
  • 0x06 = No Chaotic, No Lawful
  • 0x07 = No Chaotic, No Lawful, No Neutral
  • 0x08 = No Good
  • 0x09 = No Good, No Neutral
  • 0x0A = No Good, No Lawful
  • 0x0B = No Good, No Lawful, No Neutral
  • 0x0C = No Good, No Chaotic
  • 0x0D = No Good, No Chaotic, No Neutral
  • 0x0E = No Good, No Chaotic, No Lawful
  • 0x0F = No Good, No Chaotic, No Lawful, No Neutral
  • 0x10 = No Evil
  • 0x11 = No Evil, No Neutral
  • 0x12 = No Evil, No Lawful
  • 0x13 = No Evil, No Lawful, No Neutral
  • 0x14 = No Evil, No Chaotic
  • 0x15 = No Evil, No Chaotic, No Neutral
  • 0x16 = No Evil, No Chaotic, No Lawful
  • 0x17 = No Evil, No Chaotic, No Lawful, No Neutral
  • 0x18 = No Evil, No Good
  • 0x19 = No Evil, No Good, No Neutral
  • 0x1A = No Evil, No Good, No Lawful
  • 0x1B = No Evil, No Good, No Lawful, No Neutral
  • 0x1C = No Evil, No Good, No Chaotic
  • 0x1D = No Evil, No Good, No Chaotic, No Neutral
  • 0x1E = No Evil, No Good, No Chaotic, No Lawful
  • 0x1F = No Evil, No Good, No Chaotic, No Lawful, No Neutral
AlignRstrctType0x1

law-chaos axis (0x1)

good-evil axis (0x2)

both (0x3)

neither (0x0)

Specifies if the alignment restriction specified in the AlignRestrict column applies to the law-chaos axis (0x1), the good-evil axis (0x2), both (0x3), or neither (0x0).

InvertRestrict01, 0If set to 1 (the default is 0), the alignments specified in the AlignRestrict and AlignRestrictType columns are the only alignments allowed to gain levels in this class, rather than being the alignments prohibited from gaining them.
ConstantCLASS_TYPE_BARBARIANTextThe NWScript symbolic constant for this class. This is for the reference of human readers and is ignored by the game engine.

EffCRLvl01

...

EffCRLvl20

1Positive Integer

Official docs: Effective level of character for purposes of encounter challenge rating calculations used by original NWN Official Campaign. Ignored if not playing original Official Campaign.

Expanded: The effective character level for each of the first 20 levels in this class. The actual class level minus this number is the bonus added to the challenge rating of monsters killed when determining experience point awards if the current module was created without the expansion packs installed.

Levels past 20 presumably count as 1 per class level, since they all get to 20 in the column EffCRLvl20.

PreReqTableCLS_PRES_SHADOWResref: cls_pres_xxx.2da file, although can be named anything.

The name of the .2da file (without the extension) defining the prerequisites for this class (making this class a prestige class). The format of this .2da must match that of the cls_pres_*.2da files. The standard values for this column are "CLS_PRES_" followed by the class name, possibly abbreviated.

Note you have an option in these to restrict a class by variable name.

Usual classes can use most of the options in the 2da file for base classes (non-prestige) eg to limit Wizards to Elves or requiring a certain feat - so only available level 2 and up. This needs further testing however on what options work fully at character generation and level up.

MaxLevel5Integer 0 - 40The maximum level of this class that can be taken, or 0 for no limit. Usually only applies to prestige classes (although most are set to 40). Only Harper and Purple Dragon Knight in the base game are restricted. Base classes can also be restricted in this fashion (See the PRC8 Duskblade as an example.)
XPPenalty11, 0Determines if this class is counted when determining if a multiclass penalty applies. 1 = counted (normal for base classes); 0 = not counted (normal for prestige classes).
ArcSpellLvlMod2**** or a positive integer

This cannot be used if SpellCaster is set to 1.

If positive, this specifies the number of levels in this class that together add one level to an arcane class when determining the spell slots based on class level.

It does not add on any known spells and does not automatically increase caster level (the latter can be fixed a bit in scripting in the base game, although not entirely).

That is, the number of levels in this class are divided by this number, with fractions of half or more rounded up. The result is added to an arcane class level before the spell slots for that class are determined. For example, the pale master has this set to 2.

Example of progression, sadly you can't get wholly accurate PnP progressions (eg 1, 2, 2, 3, 4, 5, 5, 6, 7, 7 for Dragon Disciple).

Prestige Class LevelArcSpellLvlMod 1ArcSpellLvlMod 2ArcSpellLvlMod 3ArcSpellLvlMod 4ArcSpellLvlMod 5
111111
221111
332111
442211
553221
663222
774322
884322
995332
10105432

The Arcane column set to 1 determines Arcane spellcasting classes for the purposes of this column

For this and DivSpellLvlMod these notes apply:

  • It is possible to combine both columns for one class, making that class expand both arcane and divine spellcasting.
  • If a character has two arcane or divine classes, the engine adds spells only to the class that has the higher level. In case of a tie, the most recently leveled class gets the spells.
DivSpellLvlMod0**** or a positive integer

This cannot be used if SpellCaster is set to 1.

If positive, this specifies the number of levels in this class that together add one level to a divine class when determining the spell slots based on class level. That is, the number of levels in this class are divided by this number, with fractions of half or more rounded up. The result is added to a divine class level before the spell slots for that class are determined.

The Arcane column set to 0 determines the Divine spellcasting classes for the purposes of this column.

EpicLevel10

-1 - No limit

0 - Cannot be taken pre-epic

1+ - Amount of levels that can be taken pre-Epic

The number of levels of this class that can be taken pre-epic (before character level 21; c.f. prestige class). A value of -1 indicates that there is no limit.

Most prestige classes are set to 10.

Package0packages.2da line ID

The ID of the row in packages.2da that is the default package for this class (used in scripting, specifically by the LevelUpHenchman() command).

It is not used at chargen the list will auto select the first entry (lowest ID in packages.2da) so lining up your base classes with the first package being the top most selectable one is sensible.

StatGainTablecls_stat_palema

**** or Resref: 2da file, usually cls_stat_xxx.2da

The name of the .2da file (without the extension) defining the ability and natural AC gains for this class at each level. (Currently only implemented for red dragon disciples and pale masters.) This column value is only used in singleplayer; in multiplayer, the server's classes.2da column is used (the values aren't relayed from client → server and checked by ELC).

Beamdog used cls_stat_ as the prefix so check there for info on layout.

MemorizesSpells1**** or 1, 0When set to 1 (including when SpellCaster is 1), indicates this class gains spells by memorization (e.g. clerics, wizards but not sorcerers or bards)
SpellbookRestricted1**** or 1, 0When set to 1 (including when SpellCaster is 1), indicates that the spell caster is restricted to selecting spells from a spellbook (e.g. sorcerers, wizards, but not clerics or druids who know all spells in their spellbooks)
PickDomains1**** or 1, 0

When set to 1 (including when SpellCaster is 1), indicates that the spell caster can choose clerical domains as part of their class

This value is hardcoded for the vanilla classes; changing it is only relevant for new custom content/classes (NB: This might no longer be true needs further testing!)

PickSchool1**** or 1, 0When set to 1 (including when SpellCaster is 1), indicates that the spell caster can choose a spell school as part of their class and gain the benefits / penalties from it (1 more spell slot vs. one school they cannot use)
LearnScroll1**** or

41 - Purple Dragon Knight

No hardcoded lines this is essentially a custom content class added in a Bioware patch, coded by the PrC by Stratovarius, and first used in the Wyvern Crown of Corymr Premium Module.

2da Contents

Specifies the alignments that are not allowed to obtain levels in this class. This is a bit field with the alignments defined as follows.

Column LabelExampleValid ValuesDescription and Notes
ID (Blank)00-254

Max Class is defined as 255 and is an unusable line.

Many of the default 0-40 lines have hardcoded features and it is not recommended to reuse these. See above.

LabelBarbarianTextThe name of the class (without spaces, as required by .2da files). This value is usually just for reference purposes, but can be displayed in game if the value in the Name column is ****.
Name5213TLK referenceA StringRef indicating a string that will be displayed in the game as the name of the class ("Bard", "Barbarian") etc.)
Plural1TLK referenceA StringRef indicating a string that will be displayed in the game as the plural form of the name of the class. ("Bards", "Barbarians", etc.)
LowerTLK referenceA StringRef indicating a string that will be displayed in the game as the name of the class in lowercase. ("bard", "barbarian", etc.)DescriptionTLK referenceA StringRef indicating a string that will be displayed in the game as the class description.IconResref: TextureA ResRef specifying the icon displayed in the game for this class. By convention, these start with "ir_", followed by the class name, abbreviated if necessary to fit the ResRef limit of 16 characters.
HitDie10IntegerThis determines what size of die is used to roll hit points on level-up. (4, 6, 8, 10, 12, etc.)
AttackBonusTablecls_atk_1Resref: 2da nameThe name of the .2da file (without the extension) to be consulted for the base attack bonus progression of this class. The format of this .2da must match that of the cls_atk_*.2da files. The standard values for this column are cls_atk_1 (full progression), cls_atk_2 (3/4 progression), and cls_atk_3 (1/2 progression).
FeatsTableResref: 2da nameThe name of the .2da file (without the extension) defining the class feats. The format of this .2da must match that of the cls_feat_*.2da files. The standard values for this column are "CLS_FEAT_" followed by the class name, possibly abbreviated.SavingThrowTableResref: 2da nameThe name of the .2da file (without the extension) defining the saving throw progression of this class at pre-epic levels. The format of this .2da must match that of the cls_savthr_*.2da files. The standard values for this column are "CLS_SAVTHR_" followed by a base class name (or "CONS" or "WILD"), possibly abbreviated.SkillsTableResref: 2da nameThe name of the .2da file (without the extension) defining the skills available to this class, including specifying which ones are cross-class skills. The format of this .2da must match that of the cls_skill_*.2da files. The standard values for this column are "CLS_SKILL_" followed by the class name, possibly abbreviated.BonusFeatsTableResref: 2da nameThe name of the .2da file (without the extension) defining the class levels at which this class receives bonus feats. The format of this .2da must match that of the cls_bfeat_*.2da files. The standard values for this column are "CLS_BFEAT_" followed by the class name, possibly abbreviated.SkillPointBaseIntegerThis is number of skill points gained per level (before the intelligence modifier and before quadrupling at character level 1).SpellGainTableResref: 2da nameThe name of the .2da file (without the extension) defining how many spell slots this class has at each level. The format of this .2da must match that of the cls_spgn_*.2da files. The standard values for this column are "CLS_SPGN_" followed by the class name, possibly abbreviated.SpellKnownTableResref: 2da nameThe name of the .2da file (without the extension) defining how many spells are known by this class at each level (for classes with a limited number of known spells, specifically bards and sorcerers). The format of this .2da must match that of the cls_spkn_*.2da files. The standard values for this column are "CLS_SPKN_BARD" and "CLS_SPKN_SORC".
PlayerClass11, 0Controls whether or not this class is visible during initial character creation and leveling up. 1 = shown; 0 = not shown.
SpellCaster01, 0Leave as 0 for custom classes that add to existing spell casting classes. If you set to 1, this will prevent the DivSpellLvlMod and ArcSpellLvlMod from working. Possibly set to 1 for a custom class with its own spell list?
Str16IntegerThe value given to strength when a player uses the recommended button during character creation.
Dex15IntegerThe value given to dexterity when a player uses the recommended button during character creation.
Con14IntegerThe value given to constitution when a player uses the recommended button during character creation.
Wis10IntegerThe value given to wisdom when a player uses the recommended button during character creation.
Int10IntegerThe value given to intelligence when a player uses the recommended button during character creation.
Cha10IntegerThe value given to charisma when a player uses the recommended button during character creation.
PrimaryAbilThe primary ability of this class.AlignRestrict

0x01 = neutral (with the axis determined by the AlignRestrictType column)

0x02 = lawful

0x04 = chaotic

0x08 = good

0x10 = evil

AlignRstrctType

law-chaos axis (0x1)

good-evil axis (0x2)

both (0x3)

neither (0x0)

Specifies if the alignment restriction specified in the AlignRestrict column applies to the law-chaos axis (0x1), the good-evil axis (0x2), both (0x3), or neither (0x0).
InvertRestrict01, 0If set to 1 (the default is 0), the alignments specified in the AlignRestrict and AlignRestrictType columns are the only alignments allowed to gain levels in this class, rather than being the alignments prohibited from gaining them.
ConstantThe NWScript symbolic constant for this class. This is for the reference of human readers and is ignored by the game engine.EffCRLvl01

The effective character level for each of the first 20 levels in this class. The actual class level minus this number is the bonus added to the challenge rating of monsters killed when determining experience point awards if the current module was created without the expansion packs installed.

Levels past 20 presumably count as 1 per class level, since they all get to 20 in the column EffCRLvl20.

EffCRLvl02EffCRLvl03EffCRLvl04EffCRLvl05EffCRLvl06EffCRLvl07EffCRLvl08EffCRLvl09EffCRLvl10EffCRLvl11EffCRLvl12EffCRLvl13EffCRLvl14EffCRLvl15EffCRLvl16EffCRLvl17EffCRLvl18EffCRLvl19EffCRLvl20PreReqTableResref: 2da fileThe name of the .2da file (without the extension) defining the prerequisites for this class (making this class a prestige class). The format of this .2da must match that of the cls_pres_*.2da files. The standard values for this column are "CLS_PRES_" followed by the class name, possibly abbreviated.MaxLevelInteger 0 - 40The maximum level of this class that can be taken, or 0 for no limit.XPPenalty1, 0Determines if this class is counted when determining if a multiclass penalty applies. 1 = counted (normal for base classes); 0 = not counted (normal for prestige classes).ArcSpellLvlMod

If positive, this specifies the number of levels in this class that together add one level to an arcane class when determining the spell slots based on class level. That is, the number of levels in this class are divided by this number, with fractions of half or more rounded up. The result is added to an arcane class level before the spell slots for that class are determined. For example, the pale master has this set to 2.

The Arcane column set to 1 determines Arcane spellcasting classes for the purposes of this column

For this and DivSpellLvlMod these notes apply:

  • It is possible to combine both columns for one class, making that class expand both arcane and divine spellcasting.
  • If a character has two arcane or divine classes, the engine adds spells only to the class that has the higher level. In case of a tie, the most recently leveled class gets the spells.
DivSpellLvlMod

If positive, this specifies the number of levels in this class that together add one level to a divine class when determining the spell slots based on class level. That is, the number of levels in this class are divided by this number, with fractions of half or more rounded up. The result is added to a divine class level before the spell slots for that class are determined.

The Arcane column set to 0 determines the Divine spellcasting classes for the purposes of this column.

EpicLevelIntegerThe number of levels of this class that can be taken pre-epic (before character level 21; c.f. prestige class). A value of -1 indicates that there is no limit.Packagepackages.2da line IDThe ID of the row in packages.2da that is the default package for this class (used in scripting, specifically by the LevelUpHenchman() command).StatGainTableResref: 2da fileThe name of the .2da file (without the extension) defining the ability and natural AC gains for this class at each level. (Currently only implemented for red dragon disciples and pale masters.)MemorizesSpells 1, 0When set to 1 (including when Spellcaster SpellCaster is 1), indicates this class gains spells by memorization that the spell caster can learn spells from reading scrolls (e.g. wizards). You also gain 3 + intelligence bonus spells each level (the intelligence stat is hardcoded) rather than the 2 per level as most casters.
Arcane1**** or SpellbookRestricted 1, 0When set to 1 (including when Spellcaster is 1), indicates that the spell caster is restricted to selecting spells from a spellbook (e.g. wizards)PickDomainsuses arcane spells (otherwise they are divine spell casters). This primarily affects the familiar/animal companion choice and what ArcSpellLvlMod and DivSpellLvlMod affects.
ASF1**** or 11, 0When set to 1 (including when Spellcaster is 1), indicates that the spell caster can choose clerical domains as part of their classPickSchool1, 0When set to 1 (including when Spellcaster is 1), indicates that the spell caster can choose a spell school as part of their classLearnScroll1, 0When set to 1 (including when Spellcaster is 1), indicates that the spell caster can learn spells from reading scrolls (e.g. wizards)Arcane1, 0When set to 1, indicates that the spell caster uses arcane spells (otherwise they are divine spell casters)ASF1, 0When set to 1, indicates that the spell caster is subject to the effects of arcane spell failureSpellcastingAbilSTR, DEX, CON, WIS, INT, CHAAbility score used as the primary source of their magical powersSpellTableColumnColumn name in spells.2daColumn in the spells.2da file indicating which level the spell is. Values can be: Bard,  Cleric, Druid, Paladin, Ranger and Wiz_Sorcis subject to the effects of arcane spell failure (ie casting in armour), unaffected by Arcane setting above.
SpellcastingAbilCHA**** or STR, DEX, CON, WIS, INT, CHAAbility score used as the primary source of their magical powers, used for the level of spells they can use/learn, spell save DCs and extra spell slots and feat requirements.
SpellTableColumnBard**** or Column name in spells.2daColumn in the spells.2da file indicating which level the spell is. Default values are Bard,  Cleric, Druid, Paladin, Ranger and Wiz_Sorc. You can add new columns, see: Custom Spellbooks using classes.2da and spells.2da. Existing classes can also make use of new columns but obviously this may break imported characters.
CLMultiplier1.0**** or Float

Caster Level multiplier. It is applied to the GetCasterLevel function and the default caster level applied to effects. The value is turned into an integer so is essentially floored (as in how FloatToInt works).

EE has a mistake where Paladins and Rangers got a small buff where it was left as 1.0 for them instead of the Bioware intended 0.5.

MinCastingLevel1**** or IntegerMinimum level required to cast spells, primarily used for Paladin and Ranger style classes.
MinAssociateLevel6**** or Integer1 to enable associate (Familar for Arcane casters, Animal Companion for Divine casters). 255 to disable adding one (eg; Cleric). If you have something other than 1 to enable, it becomes a minimum CLMultiplierFloatCaster Level multiplierMinCastingLevelIntegerMinimum level required to cast spellsMinAssociateLevelIntegerMinimum level for the class to receive their Animal Companion and increase its level (Does not work for Familiars).
CanCastSpontaneously11, 0

Indicates that spells can be cast spontaneously. This specifically means casting spells marked as "Spontaneous" in spells.2da, not spontaneous casters like Sorcerers and Bards (who can pick any spell they know to cast).