# Class Files

Class files are where each class is listed, given it’s important information for the correct output and functioning of the class.

This section consists of two major sections: Class Building 101 and the Tag List .

## Class Building 101

Classes have three types of elements. These consist of the Class and Class Level Lines, the Sub-Class and Sub-Class Level Lines, and the Subsitution Class and Substitution Level Lines.

### Class and Class Level Lines

The Class and Class Level Lines are mandatory for all classes.

The Main Class Line

- Begins with the `CLASS:<class name>` tag.
- Multiple Class Lines may exist for each class being created.
- Only tags identified as Class Line tags should be used on this line.

The Class Level Line

- Begins with a numeric (i.e. 1, 2, 3, etc.) identifying the level that the line represents.
- Only tags identified as Class Level Line tags may be used on ths line.

A Basic Class Example

> `CLASS:Rogue . . .`
> `CLASS:Rogue . . .`
> `1 . . .`
> `2 . . .`
> `.`
> `.`
> `.`
> `19 . . .`
> `20 . . .`

### Sub-Class and Sub-Class Level Lines

The Subclass tags were designed to implement the wizard subclasses and has primary application in such rules mechanisms, i.e. take the subclass and gain ‘spell’ related advantages and disadvantages in comparison to the base class. You pick a subclass and your characters abilities are changed throughout as defined by the subclass tags; `SUBCLASS` and `SUBCLASSLEVEL` tags.

The Sub-Class Line

- NOTE: `HASSUBCLASS` is no longer required to create sub-classes.
- Begins with the `SUBCLASS:<sub-class name>` tag.
- Placed between the Class Lines and the Sub-Class Level Lines that define the levels for the sub- class.
- Only tags identified as Sub-Class Line or Class Line tags should be used on this line.

The Sub-Class Level Line

- Begins with the `SUBCLASSLEVEL:<level number>` tag.
- Placed after the Sub-Class Level Lines that define the associated sub-class.
- Only the Sub-Class Level Lines that contain tags need to be included.
- Only tags identified as Sub-Class Line or Class Line tags should be used on this line.
  - `SPELLLIST` does not work on Class Line if a subclass or substitution class is present. In these cases, the `SPELLLIST` tag must be placed on each SubClass or Substitution Class Line (Not the SubClass/Substitution Level Line).

A Sub-Class Example

> `CLASS:Wizard . . .`
> `CLASS:Wizard . . . ALLOWBASECLASS:NO`
> `CLASS:Wizard . . .`
> `SUBCLASS:Abjurer <tab> COST:2 <tab> CHOICE:SCHOOL|Abjuration <tab> KNOWNSPELLSFROMSPECIALTY:1`
> `SUBCLASSLEVEL:1 <tab> FEATAUTO:Abjurer Learning Bonus`
> `SUBCLASSLEVEL:10 <tab> SA:Immune to Acid`
> `1 . . .`
> `2 . . .`
> `.`
> `.`
> `.`
> `19 . . .`
> `20 . . .`

### Substitution Class and Substitution Level Lines

The Substitution Level tags were added to PCGen to support the substitution level mechanism used by WotC in their race books. Substitution levels are used to replace a standard levels, removing and replacing abilities with a different set without effecting any previous or subsequent levels. You can have as many substitution levels as you desire in your set and when your character reaches a level with a substitution level he/she will be able to select the substitution level or the standard level as he/she desires. Substitution levels can be implemented with the inclusion of the `SUBSTITUTIONCLASS` and `SUBSTITUTIONLEVEL` tags.

The Substitution Class Line

- NOTE: `HASSUBSTITUTIONLEVEL` is no longer required to create a substitution level.
- Begins with the `SUBSTITUTIONCLASS:<substitution class name>` tag.
- Placed between the Class Lines and the Substitution Level Lines that define the levels for the substitution class.
- Only tags identified as Substitution Class Line or Class Line tags should be used on this line.

The Substitution Level Line

- Begins with the `SUBSTITUTIONLEVEL:<level number>` tag.
- Placed after the Substitution Class Lines that define the associated substitution class.
- Only the Substitution Level Lines that contain tags need to be included.
- Only tags identified as Substitution Level Line or Class Level Line tags should be used on this line.
  - SPELLLIST does not work on CLASS Line IF SUBCLASS or SUBSTITUTIONCLASS is present. In those cases, the SPELLLIST tag must be placed ON EACH SUBCLASS or SUBSTITUTION class line (Not Level Line).
  - Another noted behavior - mainly code bug: Such classes will NOT display their Known Spells OR cast information on the spells tab.
  - This behavior is expected to be fixed once CDOM is operational.

A Substitution Level Example: Part of a Base Class Entry

> `CLASS:Ranger . . .`
> `CLASS:Ranger . . .`
> `SUBSTITUTIONCLASS:Orc Ranger`
> `SUBSTITUTIONLEVEL:4 <tab> HITDIE:12 <tab> SA:Goblin Slave (Ex)`
> `SUBSTITUTIONLEVEL:10 <tab> HITDIE:12`
> `1 . . .`
> `2 . . .`
> `.`
> `.`
> `.`
> `19 . . .`
> `20 . . .`

A Substitution Level Example: A .MODed Class Entry

> `CLASS:Ranger.MOD`
> `SUBSTITUTIONCLASS:Orc Ranger`
> `SUBSTITUTIONLEVEL:4 <tab> HITDIE:12 <tab> SA:Goblin Slave (Ex)`
> `SUBSTITUTIONLEVEL:10 <tab> HITDIE:12`

## Tag List

The tag list is broken down into six parts:

### Tags Required for all Classes

- ABB (Obsolete - use FACT)
- ATTACKCYCLE
- CLASS
- CLASSTYPE (Deprecated)
- HD
- MAXLEVEL
- STARTSKILLPTS
- XTRAFEATS

### Tags for spell-casting classes

- ADDDOMAINS
- CASTERLEVEL
- BONUSSPELLSTAT
- CAST
- DEITY
- DOMAIN
- ITEMCREATE
- KNOWN
- KNOWNSPELLS
- MEMORIZE
- PROHIBITED
- PROHIBITSPELL
- ROLE
- ROLE
- SPELLBOOK
- SPELLLIST
- SPELLSTAT
- SPELLTYPE (Deprecated - use FACT)
- SPECIALTYKNOWN

### Tags for sub-classes

- ALLOWBASECLASS
- CHOICE
- COST
- KNOWNSPELLSFROMSPECIALTY
- PROHIBITCOST
- SUBCLASS
- SUBCLASSLEVEL

### Tags for substitution classes

- SUBSTITUTIONCLASS
- SUBSTITUTIONLEVEL

### Other optional tags for classes

- CLASSSKILLS
- BONUSSKILLPOOL
- DONOTADD
- EXCLASS
- EXCHANGELEVEL
- HITDIE
- LANGBONUS
- REPEATLEVEL
- SKILLLIST
- TEMPLATE
- TEMPLATEADDCHOICE
- TEMPLATECHOOSE
- VISIBLE
- WEAPONBONUS

### Monster-specific tags

- LEVELSPERFEAT
- MODTOSKILLS
- MONNONSKILLHD
- MONSKILL
- PRERACETYPE

Documentation built with Hugo using the Material theme.