# 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

Sub-classes can be implemented with the inclusion of the `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

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 there 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
- Spellcaster Tags
- Sub-Class Tags
- Substitution Level Tags
- Other Optional Tags
- Monster Specific Tags.

### Tags Required for all Classes

Tag Name: ABB:x

Variables Used (x): Text

What it does:

This is a 3-5 letter abbreviation of the class name.

Example:

`ABB:Rgr`

The class abbreviation is "Rgr".

Where it is used:

Class Line.

*** Updated 5.11.6

Tag Name: ATTACKCYCLE:x

Variables Used (x): BAB, RAB, or UAB

What it does:

- This sets the Melee/Grapple (BAB - yes, misleading), Ranged (RAB), or Unarmed Attack (UAB) cycles.
- Default is 5 for all.
- Once a Cycle is reached, the character gets another attack (+6/+1 is one 5 cycle.)

Example:

`ATTACKCYCLE:UAB|3`

Grants another attack ever 3 bonus points of BAB from the class to the Unarmed attack cycle.

Where it is used:

Class Line.

*** Updated 5.13.6

Tag Name: CLASS:x

Variables Used (x): Text

What it does:

- This tells PCgen the class name and sets up the relationships with skills and spells.
- This line can be entered twice in a single class entry (appear on 2 separate lines) for purposes of making the lines easier to read in an editor (so as to not have to scroll forever to reach the end of the class line).
- THIS MUST BE THE FIRST TAG!!!
- Symbols that should not be used: , / - + & If you need to use those symbols, put them in an OUTPUTNAME tag.
- For class variants from other sources, the norm seen is 'Base Class Name (Source)' ex. Cleric (Fey).

Example:

`CLASS:Ranger`

The full class name is "Ranger".

`CLASS:Defender.MOD <tab> TEMPLATE:Maximum Spell Level`

Adds the TEMPLATE:Maximum Spell Level to the class "Defender".

`CLASS:Rogue.COPY=Rogueless`

Copys the Class "Rogue" and renames to "Rogueless".

`CLASS:Fighter.FORGET`

Removes the Class "Fighter" from the dataset.

Where it is used:

Beginning of Class Line.

Tag Name: HD:x

Variables Used (x): Number (4, 6, 8, 10, 12. default is 0)

What it does:

This is the Hit Die used to determine hit points at each level gained.

Example:

`HD:10`

The hit dice per level is 10.

Where it is used:

Class Line.

Tag Name: MAXLEVEL:x

Variables Used (x): Number (Maximum allowed level of this class)

Variables Used (x): NOLIMIT (No upper limit to the number of levels in this class)

What it does:

- This is maximum number of levels a character can take in this class.
- If no MAXLEVEL tag is supplied for a class, no limit is imposed.
- There is a checkbox in the Preferences|Character section of the menu to allow this to be overridden.

Example:

`MAXLEVEL:10`

The maximum class level is 10.

`CLASS:Barbarian.MOD <tab> MAXLEVEL:100`

The maximum class level is modified to 100.

`CLASS:Barbarian.MOD <tab> MAXLEVEL:NOLIMIT`

Remove the previously specified maximum class level for barbarian.

Where it is used:

Class Line.

Tag Name: STARTSKILLPTS:x

Variables Used (x): Number

What it does:

This is how many skill points a character gains per level.

Formulas can be used as well.

Example:

`STARTSKILLPTS:4`

Class gets 4 skill points per level, before any modifiers.

`STARTSKILLPTS:4+INT`

Class gets 4 skill points per level plus the INT Bonus points, before any modifiers.

`STARTSKILLPTS:4/CHA`

Class gets 4 skill points per level divided by the CHA Bonus points, before any modifiers.

`CLASS:Blackguard.MOD <tab> STARTSKILLPTS:2 <tab> CSKILL:.CLEAR|Handle Animal|Ride <tab> CSKILL:Concentration|TYPE.Craft|Diplomacy|Heal|Intimidate|Knowledge (Religion) |TYPE.Profession|Climb|Jump|Listen|Spot|Swim|Pilot <tab> CCSKILL:Handle Animal|Ride`

Modified Class that changes all of these Tags from their starting values..

Where it is used:

Class Line.

Tag Name: XTRAFEATS:x

Variables Used (x): Number

What it does:

This is used to determine how many extra feats the class will get at first level only.

Example:

`XTRAFEATS:1`

The class will gets 1 extra feat.

Where it is used:

Class Line.

## Spell Casters Tags

*** Updated 5.14.1RC2

Tag Name: ADDDOMAINS:x.x

Variables Used (x): Text (Domain Name)

What it does:

- This grants additional domain choices to the character, it is a decimal (.) delimited list of names.
- It does not add them to the character's domains, but merely adds them to the list they can choose from.
- If the character gets a choice for a bonus domain, it may need to be paired with a BONUS:DOMAIN|NUMBER|x tag.
- If used in the Class Level block it should be put on the third line with the SPELLSTAT:and SPELLTYPE: entries.
- It can contain PRExxx tags, in brackets ([PRExxx]), immediately after the domain name.

Examples:

`CLASS:Foo <tab> ADDDOMAINS:Travel.Sun <tab> SPELLSTAT:CHA <tab> SPELLTYPE:Arcane`

The class gets the Travel and Sun domains as a choice regardless of the deity selected.

`ADDDOMAINS:Sun`

The class gets the Sun domain as a choice regardless of the deity selected.

`ADDDOMAINS:Sun.Law`

The class gets the Sun & Law domains as a choice regardless of the deity selected.

`ADDDOMAINS:Sun[PREDIETY:Ra].Law`

The class gets a to choose between the Sun domain, if the character follows the diety Ra & the Law domain regardless of the deity selected.

Where it is used:

Class Level and Class Level Line.

*** Added 5.4

Tag Name: BONUS:CASTERLEVEL|x|y

Variables Used (x): Text (Class name)

Variables Used (y): Number (Number to add class level)

What it does:

- Each spellcasting class should have a CASTERLEVEL bonus associated with it.
- If no CASTERLEVEL bonus is present for a spell casting class, it will default to class level.
- This tag is listed here for this specific use but it is a Global tag and has wider uses including raising the caster level of racial spells. See the BONUS:CASTERLEVEL entry in Global tags for more information.

Example:

`BONUS:CASTERLEVEL|Wizard|CL`

Sets the Wizards spell caster level to his class level.

`BONUS:CASTERLEVEL|Paladin|CL/2|PRECLASSLEVEL:Paladin=4`

Sets the Paladins spell caster level to half his class level after he reaches level 4.

Where it is used:

Class Level Line.

*** Added 4.3.1

Tag Name: BONUSSPELLSTAT:x

Variables Used (x):Text (Abbreviated name of stat from statsandchecks.lst or "None")

What it does:

- Changes the Stat used to determine Bonus spells that a spell caster get from high ability score from the SPELLSTAT named Stat.
- If not present, the SPELLSTAT will determine DCs and bonus spells.
- If set to NONE no bonus spells will be granted.

Example:

`BONUSSPELLSTAT:STR`

The class uses Strength to determine bonus spells.

`CLASS:Defender.MOD <tab> SPELLSTAT:INT <tab> BONUSSPELLSTAT:NONE <tab> SPELLTYPE:Arcane <tab> SPELLBOOK:NO <tab> BONUS:CASTERLEVEL|Defender|TL <tab> SPELLLIST:1|Channeler`

Modifying the class Defender changes all of these tags to determine bonus spells and maximum casting level.

Where it is used:

Class Line.

*** Updated 5.8

Tag Name: CAST:x

Variables Used (x): Number or Formula

What it does:

- Tells PCGen how many spell per day the caster has (displayed on the Spells Tab).
- If no Value is assigned at a given level, the tag defaults to 0.
- Note: The formula used cannot have commas (,) embedded in it. If a formula requires a comma use a DEFINE to set a variable and use the variable in the CAST progression.

Example:

`CAST:3,3,1`

Class can cast 3 0th level spells, 3 1st level spells and 1 2nd level spell.

Example:

`DEFINE:CastLvl0|min(6,4+CL) <tab> CAST:CastLvl0`

Sets the cast progression to the value of the variable `CastLvl0` for 0 level spells.

Where it is used:

Class Level Line.

Tag Name: DEITY:x

Variables Used (x): Text

What it does:

The list that the character may follow, it is | (pipe) delimited and defaults to ANY if not present

Examples:

`DEITY:Zeus`

Class may only have "Zeus" as its Deity.

`DEITY:Zeus|Athena`

Class may have "Zeus" or "Athena" as its Deity.

Where it is used:

Class Line.

*** Updated 5.14.1

Tag Name: DOMAIN:x|x

Variables Used (x): Text

What it does:

- This grants additional domains, as listed, directly to the character.
- It is a pipe-delimited (|) list of domain names and can contain PRExxx tags, within square brackets (e.g. [PRExxx]), immediately after the domain name.
- This forces choices, ie. it forces one or more of the users choices to the listed domain(s).
- If a domain is added on top of the characters other normal domains, it will need to be paired with a `BONUS:DOMAIN|NUMBER|x`.

Example:s

`7 <tab> DOMAIN:Sun`

At the seventh level class gets the Sun domain added.

`15 <tab> DOMAIN:Sun|Law`

At fifteenth level class gets the Sun or law domain added.

`11 <tab> DOMAIN:Sun[PREDEITY:Ra]|Law`

At eleventh level class gets the Sun or Law domain added if their deity is "Ra" or only Law if the deity is not "Ra".

Where it is used:

Class and Class Level Line.

*** Deprecated 5.14.0 - Remove 6.0

Tag Name: HASSPELLFORMULA:x

Variables Used (x): Yes (Ignored)

What it does:

Specifies that this class uses a formula for its `KNOWN` and/or `CAST` progressions.

Example:

`HASSPELLFORMULA:Yes`

Where it is used:

Class Line.

Tag Name: ITEMCREATE:x

Variables Used: Number or formula

What it does:

- This tag provides a multiplier by which the class level of the character will be multiplied for calculating potions, scrolls, and wands.
- This tag is optional and if not provided the multiplier used will default to a value of 1.

Example:

`ITEMCREATE:2`

The class level is doubled when calculating potions, scrolls and wands.

`CLASS:Paladin ITEMCREATE:CL/3.3`

The class level is calculated to the follwoing values at different Character Levels; 1=.3, 2=.6, 3=.9, 4=1.2, 5=1.5, 6=1.8, 7=2.1, 8=2.4, 9=2.7, 10=3.0 when calculating potions, scrolls and wands.

Where it is used:

Class Line.

*** Updated 5.8

Tag Name: KNOWN:x

Variables Used (x): Number

What it does:

- Tells PCGen how many spell known the caster has (displayed on the Spells Tab).
- If no Value is assigned at a given level, the tag defaults to 0.
- Note: The formula used cannot have commas (,) embedded in it. If a formula requires a comma use a DEFINE to set a variable and use the variable in the KNOWN progression.

Example:

`KNOWN:6,4,3`

The class knows 6 0th level spells, 4 1st level spells and 3 2nd level spells.

Example:

`DEFINE:KnownLvl0|min(9,4+(CL/2)) <tab> KNOWN:KnownLvl0`

Sets the known progression to the value of the variable `KnownLvl0` for 0 level spells.

Where it is used:

Class Level Line.

*** Updated 5.11.4

Tag Name: KNOWNSPELLS:x

Variables Used (x): Text and/or Number

What it does:

- Used to automatically give spells, by name or level, to the spell caster.
- All spells granted by name or level will be given as long as the spell caster has a high enough prerequisite attribute score.
- The main entries are pipe delimited, and if an entry contains a comma delimited list, all the entries in the comma delimited list must be met.
- LEVEL=3,TYPE=Custom would be met only for level 3 spells which had Custom in its TYPE: string.
- The main use of the above would be to add TYPE:Divine to all the divine spells.
- Add TYPE:Divine.BasicCleric to all the clerical spells (Players Rules only), TYPE:Arcane to all the arcane spells, TYPE:Psionic to all the psionic powers etc.
- In the cleric class we could then have KNOWNSPELLS:TYPE=BasicCleric and be done with it (no need for LEVEL=0|LEVEL=1|LEVEL=2|LEVEL=3|etc......).
- Anyone who wanted clerics to know all divine spells anyway could have CLASS:Cleric.MOD[tab] KNOWNSPELLS:TYPE=Divine
- .CLEAR will clear all spells awarded on Class or Class Level line 0.
- NOTE: Level 0 Class Level Line acts as a Class Level Line, otherwise Class Level Lines are NOT allowed.

Example:

`0 TAB KNOWNSPELLS:Acid Fog`

The class knows the spell "Acid Fog" at 6th Level.

`0 TAB KNOWNSPELLS:Acid Fog|Alarm`

The class knows the spell "Acid Fog" at 6th Level; and "Alarm" at 1st Level.

`0 TAB KNOWNSPELLS:LEVEL=3`

The class knows all level 3 spells available.

`CLASS:Monkey Cleric TAB KNOWNSPELLS:TYPE:Divine`

The class knows all divine spells AT 0 Level available.

`CLASS:Monkey Mage TAB KNOWNSPELLS:LEVEL=3,TYPE=Arcane`

The class Monkey Mage knows all level 3 arcane spells available.

Where it is used:

Class Line Only.

Tag Name: MEMORIZE

Variables Used: YES (Default)

Variables Used: NO

What it does:

Determines if the class is required to memorize spells as a wizard does.

Example:

`MEMORIZE:YES`

The class memorizes spells as a wizard does.

Where it is used:

Class Line.

Tag Name: PROHIBITED:x,x

Variables Used: Text

What it does:

This is a comma delimited list of spell schools that are prohibited to the class (no spells from that school can be taken).

Example:

`PROHIBITED:Divination,Necromancy`

The class cannot use Divination or Necromancy.

Where it is used:

Class Line.

*** Updated 5.11.6

Tag Name: PROHIBITSPELL:x

Variables Used (x): ALIGNMENT.Text (Alignment name)

Variables Used (x): DESCRIPTOR.Text (Descriptor name)

Variables Used (x): SCHOOL.Text (School name)

Variables Used (x): SUBSCHOOL.Text (Subschool name)

Variables Used (x): SPELL.Text (Spell name)

What it does:

- Prohibits characters from using certain spells.
- Alignment, descriptor, school, and subschool names are period-delimited (.) lists of the appropriate parameter.
- Spell name is a comma-delimited (,) list of individual spell names.
- Alignment restrictions imposed by this tag can be turned off by the PROHIBITSPELLS house rule preference.
- This tag can be qualified with PRExxx statements using a pipe (|) as the delimiter.

Example:

`PROHIBITSPELL:ALIGNMENT.Evil`

Prohibits the character from taking spells with the "Evil" descriptor.

`PROHIBITSPELL:ALIGNMENT.Chaotic.Evil`

Prohibits the character from taking spells that have both the "Chaotic" and the "Evil" descriptors.

`PROHIBITSPELL:DESCRIPTOR.Fear`

Prohibits the character from taking spells with the "Fear" descriptor.

`PROHIBITSPELL:SCHOOL.Illusion`

Prohibits the character from taking spells from the "Illusion" school.

`PROHIBITSPELL:SUBSCHOOL.Healing`

Prohibits the character from taking spells from the "Healing" subschool.

> `1 <tab> PROHIBITSPELL:ALIGNMENT.Good|PREALIGN:LE,NE,CE <tab> PROHIBITSPELL:ALIGNMENT.Evil|PREALIGN:LG,NG,CG <tab> PROHIBITSPELL:ALIGNMENT.Lawful|PREALIGN:CG,CN,CE <tab> PROHIBITSPELL:ALIGNMENT.Chaotic|PREALIGN:LG,LN,LE <tab> PROHIBITSPELL:ALIGNMENT.Good|PREDEITYALIGN:LE,NE,CE <tab> PROHIBITSPELL:ALIGNMENT.Evil|PREDEITYALIGN:LG,NG,CG <tab> PROHIBITSPELL:ALIGNMENT.Lawful|PREDEITYALIGN:CG,CN,CE <tab> PROHIBITSPELL:ALIGNMENT.Chaotic|PREDEITYALIGN:LG,LN,LE`

Prohibits the character from taking "Good" spells if alignment is LE,NE,CE; taking "evil" spells if alignment is LG,NG,CG; taking "Lawful" spells if alignment is CG,CN,CE; taking "Chaotic" spells if alignment is LG,LN,LE; taking "Good" spells if Deity alignment is LE,NE,CE; taking "evil" spells if Deity alignment is LG,NG,CG; taking "Lawful" spells if Deity alignment is CG,CN,CE; taking "Chaotic" spells if Deity alignment is LG,LN,LE.

`PROHIBITSPELL:SPELL.Fireball,Lightning Bolt`

Prohibits the character from taking either "Fireball" or "Lightening Bolt" spells.

Where it is used:

Class Line and Class Level Line.

Tag Name:SPELLBOOK:x

Variables Used: YES or NO

What it does:

Means that the class is required to use a spellbook as a wizard does.

Example:

`SPELLBOOK:YES`

The class uses a spellbook.

`CLASS:Defender.MOD <tab> SPELLSTAT:INT <tab> BONUSSPELLSTAT:NONE <tab> SPELLTYPE:Arcane <tab> SPELLBOOK:NO <tab> BONUS:CASTERLEVEL|Defender|TL <tab> SPELLLIST:1|Channeler`

Modifying the class Defender changes all of these tags to determine bonus spells and maximum casting level.

Where it is used:

Class Level Line.

Default Value:

`NO`

*** Updated 5.11.4 ***

Tag Name: SPELLLIST:x|y|y

Variables Used (x): Number (number of choices)

Variables Used (y): Text (Class Name)

Variables Used (y): DOMAIN.Text (Domain Name)

What it does:

- This is an optional tag with PCGen defaulting to the class name as the name of the spell list if this tag is not included.
- Following the number of choices (x), this is a pipe-delimited (|) list of class names (y) that the class can choose from to duplicate spell casting ability.
- For a spellcasting class with subclasses that have separate spell lists, the `SPELLLIST` tag should be included in the subclass line only.

Example:

`CLASS:Faemancer <tab> SPELLLIST:1|Ranger`

The class uses the ranger spell list.

`SUBCLASS:Egoist <tab> SPELLLIST:1|Ranger|Druid`

The subclass uses either the ranger or druid spell list.

`CLASS:War Mind <tab> SPELLLIST:2|Ranger|Druid|Barabarian`

The class uses 2 of the ranger, Druid or Barbarian spell lists.

`CLASS:Blood Witch <tab> SPELLLIST:1|DOMAIN.Animal`

The class uses the Animal Domain spell list.

`CLASS:Rogue.COPY=Blood Witch <tab> SPELLLIST:1|DOMAIN.Animal`

Copy class Rogue to Blood Witch useing the Animal Domain spell list.

`CLASS:Defender.MOD <tab> SPELLSTAT:INT <tab> BONUSSPELLSTAT:NONE <tab> SPELLTYPE:Arcane <tab> SPELLBOOK:NO <tab> BONUS:CASTERLEVEL|Defender|TL <tab> SPELLLIST:1|Channeler`

Modifying the class Defender changes all of these tags to determine bonus spells and maximum casting level.

Deprecated Syntax: Deprecated 5.11.4 - Remove 6.0

`SPELLLIST:<name>`

Where it is used:

Class Line, SubClass line or SubClassLevel line.

Tag Name: SPELLSTAT:x

Variables Used: abbreviated name of stat (from statsandchecks.lst)

What it does:

Used to tell PCGen what attribute/stat to use for determining bonus spells and maximum level the character can cast

Example:

`SPELLSTAT:INT`

The class uses Intelligence to determine bonus spells and maximum casting level.

`SPELLSTAT:SPELL`

Tells the program to look for a STAT:tag in the spells the class uses, and use that for each spell. For example used with psionic classes, where the spellstat depends on the powers used and not on the class.

`CLASS:Defender.MOD <tab> SPELLSTAT:INT <tab> BONUSSPELLSTAT:NONE <tab> SPELLTYPE:Arcane <tab> SPELLBOOK:NO <tab> BONUS:CASTERLEVEL|Defender|TL <tab> SPELLLIST:1|Channeler`

Modifying the class Defender changes all of these tags to determine bonus spells and maximum casting level.

Where it is used:

Class Line.

Tag Name: SPELLTYPE:x

Variables Used (x): Text (Spell type)

What it does:

The type of spells the character casts

Example:

`SPELLTYPE:Arcane`

The class uses arcane spells.

`CLASS:Defender.MOD <tab> SPELLSTAT:INT <tab> BONUSSPELLSTAT:NONE <tab> SPELLTYPE:Arcane <tab> SPELLBOOK:NO <tab> BONUS:CASTERLEVEL|Defender|TL <tab> SPELLLIST:1|Channeler`

Modifying the class Defender changes all of these tags to determine bonus spells and maximum casting level.

Where it is used:

Class Line.

*** Updated 5.11.4

Tag Name: SPECIALTYKNOWN:x,x,x,x,...

Variables Used (x): Number

What it does:

Adds the numeric value given to the number of specialty school spells that the class can cast per spell level. If not listed, the default value is 0.

Example:

`19 <tab> SPECIALTYKNOWN:1,1,1,1,1,1,1,1,1,1`

At 19 level the specialist can prepare one additional Zero thru ninth level spell (of the school selected as a specialty) per spell level each day.

`12 <tab> SPECIALTYKNOWN:1,1,1`

At 12 level the Paladin can prepare one third level spell per spell level each day, he already had a first and second.

Where it is used:

Class Level Line.

### Sub-Class Tags

*** Updated 5.13.x

Tag Name: ALLOWBASECLASS:x

Variables Used (x): Boolean (Default "YES")

What it does:

- Determies whether the base class will be presented as a choice when selecting a subclass.
- Used with classes which have subclasses.
- This tag is optional.

Examples:

`ALLOWBASECLASS:NO`

The base class cannot be selected, only subclasses are allowed.

Where it is used:

Class Line

*** Updated 5.13.x

Tag Name: CHOICE:x|y

Variables Used (x): DESCRIPTOR

Variables Used (x): SCHOOL

Variables Used (x): SUBSCHOOL

Variables Used (y): Text (Descriptor, school, or subschool name)

What it does:

- Indicates the specialty, by descriptor, school, or subschool, applicable to the subclass/specialty selected.
- All descriptors, schools, and subschools used within the loaded lst files are valid choices.
- Note: Due to the diversity of publishers and material we support, we cannot list all descriptors, schools, or subschools available.

Examples:

`SUBCLASS:Illusionist <tab> CHOICE:SCHOOL|Illusion`

For an Illusionist.

`SUBCLASS:Abjure <tab> CHOICE:SCHOOL|Abjuration`

For an Abjurer.

`SUBCLASS:Diviner <tab> CHOICE:SCHOOL|Divination`

For a Diviner.

`SUBCLASS:Savant <tab> CHOICE:SCHOOL|Psychokinesis`

For a Psychokinesis.

`SUBCLASS:Shaper <tab> CHOICE:SCHOOL|Illusion.CLEAR`

Removes the coice for an Illusionist.

`SUBCLASS:Nomad <tab> CHOICE:SCHOOL|Abjuration.MOD <tab> CHOICE:SCHOOL|Divination`

Replaces the choice for an Abjurer with Diviner.

Where it is used:

Subclass Line.

*** New 5.3.3

Tag Name: COST:x

Variables Used (x): Number

What it does:

Indicates the cost (how many prohibited schools must be selected) of this specialty or subclass (0 is default).

Example:

`COST:2`

The subclass has a cost of 2.

Where it is used:

Subclass Line (REQUIRED to be on each SUBCLASS line).

*** Deprecated 5.15.11 - Remove 6.0

Tag Name: HASSUBCLASS:x

Variables Used (x): Boolean (YES or NO)

What it does:

Indicates whether or not this class can choose a specialty or subclass.

Note: This tag is no longer required for sublasses.

Example:

`HASSUBCLASS:YES`

The class has subclasses.

`CLASS:Druid.MOD <tab> HASSUBCLASS:YES`

The class has been modified to include subclasses.

Where it is used:

Class Line

Tag Name: KNOWNSPELLSFROMSPECIALTY:x

Variables Used (x): Number (Number of spells)

What it does:

Indicates the number of spells from their specialty this class gets in addition to their regular allotment.

Example:

`KNOWNSPELLSFROMSPECIALTY:1`

The subclass has 1 spell from their specialty in addition to normal.

Where it is used:

Subclass Line.

*** Added 5.4

Tag Name: PROHIBITCOST:x

Variables Used (x): Integer

What it does:

Determines the redeemed value (against COST) of this school if selected as prohibited. Allows a prohibited cost to be set independently of the cost.

Optional tag. If PROHIBITCOST is not present in the SUBCLASS line the value will default to COST. A value of 0 prevents this school from being prohibited.

Example:

`PROHIBITCOST:2`

The subclass has a prohibited cost of 2.

Where it is used:

Subclass Line.

Tag Name: SPELLSTAT:x

Variables Used (x): Text (abbreviated name of stat from statsandchecks.lst)

What it does:

- Indicates what stat this subclass/specialty uses to determine what maximum level of spells they can cast.
- Overwrites any SPELLSTAT tag in the main CLASS line.
- The stat specified can be any stat defined in statsandchecks.lst system file.

Examples:

`SPELLSTAT:STR`

This subclass uses Strength to determine maximum level of spells.

`SPELLSTAT:INT`

This subclass uses Intelligence to determine maximum level of spells.

`SPELLSTAT:SPELL`

Tells the program to look for a STAT:tag in the spells the class uses, and use that for each spell. For example used with psionic classes,where the spellstat depends on the powers used and not on the class.

`CLASS:Defender.MOD <tab> SPELLSTAT:INT <tab> BONUSSPELLSTAT:NONE <tab> SPELLTYPE:Arcane <tab> SPELLBOOK:NO <tab> BONUS:CASTERLEVEL|Defender|TL <tab> SPELLLIST:1|Channeler`

Modifying the class Defender changes all of these tags to determine bonus spells and maximum casting level.

Where it is used:

Subclass Line.

Tag Name: SUBCLASS:x

Variables Used (x): Text (name of subclass or specialty)

What it does:

- Defines a subclass or specialty choice.
- First tag of a line between the Class Lines and the level definition lines for the class which can choose these subclasses or specialties.

Example:

`SUBCLASS:Illusionist`

The class has Illusionist as a subclass.

Where it is used:

Subclass Line.

*** Added 4.3.1

Tag Name: SUBCLASSLEVEL:x

Variables Used (x): Number

What it does:

- Defines a subclass level at which a particular Special Ability is granted.
- This tag should MUST be the first tag on a line, and will define a Subclass level dependent ability for the SUBCLASS immediately above it.
- Located before the Class Level Lines.

Example:

`SUBCLASSLEVEL:3 <tab> SA:Angelfire`

would add SA:Angelfire at level 3

Where it is used:

Subclass Line.

### Substitution Level Tags

*** Deprecated 5.15.11 - Remove 6.0

Tag Name: HASSUBSTITUTIONLEVEL:x

Variables Used (x): Boolean (YES or NO)

What it does:

Indicates whether or not this class can choose substitution levels.

Note: This tag is no longer required for substitution levels.

Example:

`HASSUBSTITUTIONLEVEL:YES`

The class has substitution levels.

Where it is used:

Class Line

*** Added 5.11.0

Tag Name: SUBSTITUTIONCLASS:x

Variables Used (x): Text (name of substitution levels)

What it does:

- Defines a group of substitution levels.
- First tag of a line between the Class Lines and the level definition lines for the class which can choose these substitution levels.

Example:

`SUBSTITUTIONCLASS:Orc Ranger`

The class has Orc Ranger substitution levels.

Where it is used:

Substitutionclass Line.

*** Added 5.11.0

Tag Name: SUBSTITUTIONLEVEL:x

Variables Used (x): Number

What it does:

- Defines a substitution level at which a particular Special Ability is granted.
- This tag MUST be the first tag on a line, and will define a substitution level dependent ability for the SUBSTITUTIONCLASS immediately above it.
- Located before the Class Level Lines.

Example:

`SUBSTITUTIONLEVEL:4 <tab> SA:Goblin Slave (Ex)`

would add SA:Goblin Slave (Ex) at level 4 instead of the standard level 4 class abilities.

Where it is used:

Substitutionclass Line.

### Other Optional Tags

*** Added 5.11.11

Tag Name: ADD:CLASSSKILLS|x|y,y

Variables Used (x): Number, Variable or Formula (Number of choices granted. Optional)

Variables Used (y): Text (Name of skill)

Variables Used (y): TYPE=Text (Type of skill)

Variables Used (y): ALL

Variables Used (y): ANY

Variables Used (y): CROSSCLASSSKILLS

Variables Used (y): UNTRAINED

Variables Used (y): TRAINED

Variables Used (y): EXCLUSIVE

Variables Used (y): NONEXCLUSIVE

Variables Used (y): AUTORANK=Number (Number of ranks)

What it does:

- Adds a number (x) of skills selected from the presented list (y) to the characters class skills list.
- If a number (x) of choices allowed is not included, "1" is assumed.
- The skills list (y) is a comma-delimited (",") list of skills.
- If `ANY` or `ALL` are used, the list of skills to select from will include all skills.
- If `CROSSCLASSSKILLS` is used, the list of skills to select from will include all cross-class skills.
- If `UNTRAINED` is used, the list of skills to select from will include all untrained skills.
- If `TRAINED` is used, the list of skills to select from will include all trained skills.
- If `EXCLUSIVE` is used, the list of skills to select from will include all skills exclusive to the associated class.
- If `NONEXCLUSIVE` is used, the list of skills to select from will include all skills that are not exclusive to the assiciated class.
- AUTORANK will assign free ranks to any chosen skills.

Example:

`ADD:CLASSSKILLS|Knowledge (Reverie)`

Add "Knowledge (Reverie)" skill to the characters list of class skills.

`ADD:CLASSSKILLS|Knowledge (nature),Survival,AUTORANK=3`

Add "Knowledge (nature)" and "Survival" skills to the characters list of class skills and grant 2 free ranks in each.

`ADD:CLASSSKILLS|TYPE=Craft`

Add one skill from the list of "Craft" type skills to the characters list of class skills.

`ADD:CLASSSKILLS|3|ANY`

Add three skills from the full list of skills to the characters list of class skills.

`ADD:CLASSSKILLS|3|ALL`

Add three skills from the full list of skills to the characters list of class skills.

`ADD:CLASSSKILLS|CROSSCLASSSKILLS`

Add one skill from the list of cross-class skills to the characters list of class skills.

`ADD:CLASSSKILLS|UNTRIANED`

Add one skill from the list of skills that can be used untrained to the characters list of class skills.

`ADD:CLASSSKILLS|3|TRAINED`

Add three skills from the list of skills that require training to the characters list of class skills.

`ADD:CLASSSKILLS|2|EXCLUSIVE`

Add two skills from the list of exclusive skills to the characters list of class skills.

`ADD:CLASSSKILLS|2|NONEXCLUSIVE`

Add two skills from the list of non-exclusive skills to the characters list of class skills.

*** Added 5.3.9

Tag Name: BONUS:SKILLPOOL|NUMBER|x

Variables Used (x): Number, variable or formula (Number to add to skill pool)

What it does:

- Adds to the number of skill points to the class at the level that the bonus appears in
- PRExxx tags may be used with this tag.
- This tag is valid in only class and class level lines.

Examples:

`BONUS:SKILLPOOL|NUMBER|1`

Adds one skill point to the skill pool.

`BONUS:SKILLPOOL|NUMBER|1|PREFEAT:1,Scribe Scroll`

Adds one skill point to the skill pool if the character has the Scribe Scroll Feat.

Where it is used:

Class Line.

Tag Name: EXCLASS:x

Variables Used (x): Text (Class Name)

What it does:

This is the class to which all current class levels are converted if the class prerequisites are no longer met.

Example:

`EXCLASS:Ex Monk`

If prerequisites are no longer met, the character becomes an "Ex Monk".

Where it is used:

Class Line.

Tag Name: EXCHANGELEVEL:w|x|y|z

Variables Used (w): Text (Class Name)

Variables Used (x): Number (Class level, minimum level required in donating class)

Variables Used (y): Number (Class level, maximum levels donated from class)

Variables Used (z): Number (Class level, lowest that donation can lower donating class level to)

What it does:

Allows the exchange of levels from the current class to the specified class.

Example:

`EXCHANGELEVEL:Ex Paladin|11|10|1`

Up to 10 levels of Ex Paladin can be exchanged as long as there were at least 11 levels of Ex Paladin available.

Where it is used:

Class Line.

*** Updated 5.13.6

Tag Name: HITDIE:x

Variables Used (x): Number (Hit Die size)

Variables Used (x): %+Number (Amount added to Hit Die)

Variables Used (x): %-Number (Amount subtracted from Hit Die)

Variables Used (x): %*Number (Amount Hit Die is multiplied by)

Variables Used (x): %/Number (Amount Hit Die is divided by)

Variables Used (x): %upNumber (Amount Hit Die size is stepped up by)

Variables Used (x): %downNumber (Amount Hit Die size is stepped down by)

Variables Used (x): %HupNumber (Amount Hit Die size is stepped up by)

Variables Used (x): %HdownNumber (Amount Hit Die size is stepped down by)

What it does:

- This tag can be used on a Class level line, a SUBCLASSLEVEL line or a SUBSTITUTIONLEVEL line to specify a Hit Die size which will be applied only that level.
- The scale used by the functions which raise or lower Hit Die in steps is defined by the DIESIZES gameMode tag.
- The scale used in most gameModes is: 1,2,3,MIN=4,6,8,10,MAX=12,20,100,1000
- When using the step up function (%upNumber) or step down function (%downNumber) the minimum and maximum steps are set by the MIN and MAX tags in the DIESIZES tag.
- The step up function (%Hup) and step down functions (%Hdown) will ignore the MIN and MAX settings and use the full range of die sizes specified by the DIESIZES tag.
- Regardless of the number it will never allow a hit die below 1.
- HITDIE may also be used in Race and Template files.

Example:

`HITDIE:12`

The character now has a Hit Dice of 12.

`HITDIE:%+2`

Adds 2 to the current Hit Dice size.

`HITDIE:%-4`

Subtracts 4 from the current Hit Dice size.

`HITDIE:%*3`

Multiplies the current Hit Dice size by 3.

`HITDIE:%/2`

Divides the current Hit Dice size by 2.

`HITDIE:%up2`

Steps up the Hit Dice size by two steps. If the class has a Hit Die of d6 it will be stepped up to d10.

`HITDIE:%down1`

Steps down the Hit Dice size by one step. If the class has a Hit Die of d6 it will be stepped down to d4.

`HITDIE:%Hup4`

Steps up the Hit Dice size by four steps. If the class has a Hit Die of d6 it will be stepped up to d20.

`HITDIE:%Hdown3`

Steps down the Hit Dice size by three step. If the class has a Hit Die of d6 it will be stepped down to d2.

Where it is used:

Class Level Line.

Tag Name: LANGBONUS:x,x

Variables Used (x): Text (Languages)

Variables Used (x): TYPE=Text (Language Type)

Variables Used (x): Text ('Any')

Variables Used (x): .CLEAR

What it does:

This is a comma (,) delimited list of the languages a character can choose from based upon their Intelligence stat.

When using 'Any', no other language designation is necessary.

Examples:

`LANGBONUS:Draconic`

The class can choose "Draconic" as one of their languages.

`LANGBONUS:Draconic,Elven`

The class can choose "Draconic" or "Elven" as one of their languages.

`LANGBONUS:ALL`

The class can choose any language loaded from sources as one of their languages.

`LANGBONUS:TYPE=Written`

The class can choose any written language as one of their languages.

`LANGBONUS:TYPE=Spoken,Draconic`

The class can choose any written language or "Draconic" as one of their languages.

`LANGBONUS:.CLEAR,Dwarven,Gnomish,Orcish`

The class has all bonus languages cleared then can choose "Dwarvish", "Gnomish" or "Orcish" as one of their languages.

Where it is used:

Class Level Line.

*** Added 5.13.3

Tag Name: w:REPEATLEVEL:x|y|z

Variables Used (w): Number (Class level)

Variables Used (w): SUBCLASSLEVEL:Number (Class level)

Variables Used (w): SUBSTITUTIONLEVEL:Number (Class level)

Variables Used (x): Number (Level interval)

Variables Used (y): SKIP=Number (Number of intervals before skipping one interval, use 0 for no skip, Optional)

Variables Used (z): MAX=Number (Maximum level, Optional)

What it does:

- When included, this tag must be the first tag on the line.
- All the tags included on the line will be applied again at later levels at intervals specified by the tag.
- The progression begins at the level the REPEATLEVEL tag is encountered in.
- Variable x specifies the interval that the line will be repeated, so if you specified 3 at level one the line would repeat again at level 4, 7, 10, etc...
- Variable y specifies the interval with the first interval where it will skip one interval, to continue the above example if you specified 3 (variable x) at level one and 2 for variable y the line would repeat again at level 4, 10, 13, 19, 22, 28, etc...
- Variable z specifies the level at which the progression ends.
- Variables y and z are optional but if you use z you must also use y which can be set to 0 if it is not otherwise used.
- Any valid class tags may be used on the line to be repeated.
- The REPEATLEVEL tag can be used on the SUBCLASSLEVEL and SUBSTITUTIONLEVEL lines.

Example:

`5:REPEATLEVEL:5 <tab> ADD:FEAT(ABonusFeat)`

Would add at levels 5,10,15,20,... up to the MAXLEVEL defined by class.

`1:REPEATLEVEL:1|SKIP=4 <tab> ADD:FEAT(ABonusFeat)`

Would add at levels 1,2,3,4,6,7,8,9,11,12,13,14,... up to the MAXLEVEL defined by class.

`2:REPEATLEVEL:2|SKIP=0|MAX=20 <tab> ADD:FEAT(ABonusFeat)`

Would add at levels 2,4,6,8,... up to level 20.

Derecated Syntax:

`5 <tab> REPEATLEVEL:5 <tab> ADD:FEAT(ABonusFeat)`

Where it is used:

Class Level Lines, Sub-class Level Lines, Substitution Level Lines.

Tag Name: SKILLLIST:x|y|y

Variables Used (x): Number (Number of choices)

Variables Used (y): Text (Class Name)

What it does:

This is a | (pipe) delimited list of class names that the class can choose from to duplicate class skills.

Examples:

`SKILLLIST:1|Ranger`

The class can choose from Ranger class skills.

`SKILLLIST:1|Ranger|Druid`

The class can choose either from Ranger or Druid class skills.

`SKILLLIST:2|Ranger|Druid|Barabarian`

The class can choose from 2 of Ranger, Druid or Barbarian class skills.

Where it is used:

Class Line.

Tag Name: TEMPLATE:x|x

Variables Used (x): Text (Template Name)

What it does:

This is a pipe-delimited (|) list of templates that are granted to the class.

Example:

`TEMPLATE:Incorporeal|Undead|Celestial`

The class uses the "Incorporeal", "Undead" and "Celestial" templates.

Where it is used:

Class Level Line

Tag Name: TEMPLATE:ADDCHOICE:x|x

Variables Used (x): Text (Template Name)

What it does:

- This is a pipe-delimited list of template choices that are added to the list presented by the original TEMPLATE:CHOOSE tag.
- When using the `TEMPLATE:ADDCOICE` tag as part of a `.MOD` of a class that containes multiple `TEMPLATE:CHOOSE` tags, all instances of the `TEMPLATE:CHOOSE` tag will be modified.

Example:

`TEMPLATE:ADDCHOICE:Demihuman|Beast`

The class can choose previously defined templates plus the "Demihuman" or "Beast" templates.

Where it is used:

Class Level Line

Tag Name: TEMPLATE:CHOOSE:x|x

Variables Used (x): Text (Template Name)

What it does:

- Will present a popup window of the choices provided in the pipe-delimited (|) list, allowing the user to pick ONE from the list.
- Multiple `TEMPLATE:CHOOSE` tags can be used in the same LST object but PCGen's current Data Standard os to include no more that one in each LST object.

Example:

`TEMPLATE:CHOOSE:Celestial|Outsider`

The class can choose either the "Celestial" or "Outsider" template.

Where it is used:

Class Level Line

*** Added 4.3.9

Tag Name: VISIBLE:x

Variables Used (x): Boolean (YES/NO)

What it does:

- This determines whether the class is shown on the Classes and Summary tabs as a valid choice for selection.
- VISIBLE:NO is used mainly for EXCLASS classes.
- Default is YES.

Example:

`VISIBLE:NO`

The class is not visible for selection on the Classes and Summary tabs.

Where it is used:

Class Line.

*** Updated 5.7.12

Tag Name: WEAPONBONUS:x|x

Variables Used (x): Text (Weapon Proficiency Name)

Variables Used (x): TYPE.Text (Weapon Type)

What it does:

- This is a pipe-delimited (|) list of weapons or weapon types that are granted to the class as a choice of ONE of the listed weapons.
- This tag does not use a CHOOSE pop-up to make a selection. You nust use the "Lang, Weapon, and SA" dialog found on the "Summary" tab.

Example:

`WEAPONBONUS:Dagger|Staff|Club|Mace|Sword (Short)|Shortbow (Composite)`

The class can choose from a weapon proficiency from "Dagger", "Staff", "Club", "Mace", "Sword (Short)" or "Shortbow (Composite)".

`WEAPONBONUS:TYPE.Simple`

The class receives bonus proficiency in any one Simple weapon.

Where it is used:

Class Level Line.

### Monster Specific Tags

Tag Name: LEVELSPERFEAT:x

Variables Used (x): Number

What it does:

This is the number of levels it takes for a monster to gain a new feat.

Example:

`LEVELSPERFEAT:2`

The class gets 1 feat per 2 levels.

Where it is used:

Class Line.

Tag Name: MODTOSKILLS:x

Variables Used (x): YES or NO

What it does:

This is either YES or NO for monster types that do not get their Intelligence modifiers for skills they get from gaining hit dice

Example:

`MODTOSKILLS:YES`

The class gets the intelligence modifier for skills they get for gaining hit dice.

Where it is used:

Class Line.

Default Value:

`YES`

*** Added 5.7.9

Tag Name: MONNONSKILLHD:x

Variables Used (x): Number (Number of hit dice)

What it does:

Defines the number of hit dice the monster does not get skill points for. This is normally defined by size, so the tag is normally seen with a PRESIZE requirement.

Example:

`MONNONSKILLHD:32|PRESIZEEQ:C`

A colossal monster would not get skill points for the first 32 levels/hit dice of this class.

Where it is used:

Class Line.

*** Added 5.7.9

Tag Name: MONSKILL:x

Variables Used (x): Number or Formula (Skill points per level/hit die)

What it does:

Defines the number of skill points a monster gets per level/hit die of this class. It can be either a formula or a number.

Example:

`MONSKILL:6+INT`

Each level the monster will receive 6 + int bonus skill points.

Where it is used:

Class Line.

*** Updated 5.9.4

Tag Name: PRERACETYPE:x

Variables Used (x): Text (Race Name)

What it does:

- As of version 5.9.4 the function of setting Creature Type for a race is being moved from the Race tag TYPE to the new race tag RACETYPE.
- The PRERACETYPE tag checks both the TYPE and RACETYPE race entries (if they exist) to preserve backwards compatibility.
- The PRERACETYPE tag checks the RACETYPE entry in the race line only and not the currently active RACETYPE, this is because a race should always qualify for it's base type monster class regardless of any acquired Types.
- For monster classes the race must be of this type or they can not take the class.
- This is a separate PRExxx tag from other PRExxx tag because it does not count towards being a prestige class.

Where it is used:

Class Line.

Example:

`PRERACETYPE:Animal`

This class can only be taken by "Animal" races.