NWNWiki
Advertisement
NWNWiki
3,718
pages
This article covers the layout of the file; for the default contents, see classes.2da (contents).

The classes.2da file controls the available classes that are included in the game. It specifies any restrictions the class has and any other information governing the use of the class.

Patch 1.80 (of the Enhanced Edition) added columns to this file to allow customization of some details that had previously been hardcoded. Most of these details configure spellcasters, but there is also support for configuring ability and armor class increases. The new columns start with StatGainTable and run to the end (CanCastSpontaneously).

This file has less of an impact during character creation than some would like, as the game is hardcoded to allow (at most) only the first eleven rows (the standard base classes) as choices for a new character. (The Player Resource Consortium circumvented this restriction by developing a character creator that is external to the game.)

Columns of classes.2da
Name 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 The 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 ****.
Name A StringRef indicating a string that will be displayed in the game as the name of the class.
Plural A StringRef indicating a string that will be displayed in the game as the plural form of the name of the class. ("Bards", "Barbarians", etc.)
Lower A StringRef indicating a string that will be displayed in the game as the name of the class in lowercase. ("bard", "barbarian", etc.)
Description A StringRef indicating a string that will be displayed in the game as the class description.
Icon A 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.
HitDie This determines what size of die is used to roll hit points on level-up. (4, 6, 8, 10, 12, etc.)
AttackBonusTable The 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).
FeatsTable The 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.
SavingThrowTable The 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.
SkillsTable The 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.
BonusFeatsTable The 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.
SkillPointBase This is number of skill points gained per level (before the intelligence modifier and before quadrupling at character level 1).
SpellGainTable The 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.
SpellKnownTable The 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".
PlayerClass Controls whether or not this class is visible during initial character creation and leveling up. 1 = shown; 0 = not shown.
SpellCaster 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. Possibly set to 1 for a custom class with its own spell list?
Str The value given to strength when a player uses the recommended button during character creation.
Dex The value given to dexterity when a player uses the recommended button during character creation.
Con The value given to constitution when a player uses the recommended button during character creation.
Wis The value given to wisdom when a player uses the recommended button during character creation.
Int The value given to intelligence when a player uses the recommended button during character creation.
Cha The value given to charisma when a player uses the recommended button during character creation.
PrimaryAbil The primary ability of this class.
AlignRestrict Specifies the alignments that are not allowed to obtain levels in this class. This is a bit field with the alignments defined as follows.

0x01 = neutral (with the axis determined by the AlignRestrictType column)
0x02 = lawful
0x04 = chaotic
0x08 = good
0x10 = evil

AlignRestrictType 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).
InvertRestrict If 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.
Constant The 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.
EffCRLvl02
EffCRLvl03
EffCRLvl04
EffCRLvl05
EffCRLvl06
EffCRLvl07
EffCRLvl08
EffCRLvl09
EffCRLvl10
EffCRLvl11
EffCRLvl12
EffCRLvl13
EffCRLvl14
EffCRLvl15
EffCRLvl16
EffCRLvl17
EffCRLvl18
EffCRLvl19
EffCRLvl20
PreReqTable 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.
MaxLevel The maximum level of this class that can be taken, or 0 for no limit.
XPPenalty Determines 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.
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.
EpicLevel 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.
Package The ID of the row in packages.2da that is the default package for this class (used in scripting, specifically by the LevelUpHenchman() command).
StatGainTable 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)
MemorizesSpells When set to 1 (including when Spellcaster is 1), indicates this class gains spells by memorization (i.e. wizards vs. sorcerers/clerics)
SpellBookRestricted When set to 1 (including when Spellcaster is 1), indicates that the spell caster is restricted from selecting spells they have in a spellbook (i.e. wizards vs. sorcerers/clerics)
PickDomains When set to 1 (including when Spellcaster is 1), indicates that the spell caster can choose clerical domains as part of their class (i.e. clerics vs. other casters)
PickSchools When set to 1 (including when Spellcaster is 1), indicates that the spell caster can choose a spell school as part of their class (i.e. wizards vs. sorcerers/clerics)
LearnScroll When set to 1 (including when Spellcaster is 1), indicates that the spell caster can learn spells from reading scrolls (i.e. wizards vs. sorcerers)
Arcane When set to 1, indicates that the spell caster uses arcane spells (otherwise they are divine spell casters)
ASF When set to 1, indicates that the spell caster is subject to the effects of arcane spell failure
SpellCastingAbil Ability score used as the primary source of their magical powers
SpellTableColumn Column in the spells.2da file indicating which level the spell is. Values can be: Bard,  Cleric, Druid, Paladin, Ranger and Wiz_Sorc
CLMultiplier Caster Level multiplier
MinCastingLevel Minimum level required to cast spells
MinAssociateLevel
CanCastSpontaneously Indicates that spells can be cast spontaneously

Column notes

ArcSpellLvlMod and DivSpellLvlMod:

  • 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.
Advertisement