- 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.)
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. The file listed here must exist, or the toolset cannot be opened. |
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) |
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 (e.g. wizards) |
SpellBookRestricted | When set to 1 (including when Spellcaster is 1), indicates that the spell caster is restricted to selecting spells from a spellbook (e.g. wizards) |
PickDomains | When set to 1 (including when Spellcaster is 1), indicates that the spell caster can choose clerical domains as part of their class |
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 |
LearnScroll | When set to 1 (including when Spellcaster is 1), indicates that the spell caster can learn spells from reading scrolls (e.g. wizards) |
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 | Minimum level for the class to receive their Animal Companion and increase its level (Does not work for Familiars) |
CanCastSpontaneously | Indicates that spells can be cast spontaneously |
SkipSpellSelection | When set to 1, spellcasters can select the spells they gain when levelling up, otherwise they can only learn spells the normal way |
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 was leveled last.