Customisation Guide

Configuration files
PCC Files
Class.lst
Deity.lst
Domain.lst
Equipment.lst
Feat.lst
Language.lst
Load.lst
Race.lst
Template.lst
School.lst
Skill.lst
Specials.lst
Spell.lst
WeaponProf.lst
Color.lst
Trait.lst
XP.lst
bonusstacks.lst
eqModifier.lst
   
Specials
Charts
Alignment Syntax
PRExxx tags
BONUS tags
Global variables
CHOOSE tag
Formulas (DEFINE)
Adding your own lst files
Adding a Class
Sharing lst files
Over-riding existing objects
Global tags

PCC Files

These are the PCGen Campaign Configuration files. Here you can specify what you want included in this campaign (or excluded as the case may be).
CAMPAIGN:name Required, first line Must be first tag. 'name' is what you want this campaign to be called in PCGen.
GAME:name Required, second line Must be second tag. currently supported names are:
Deadlands, DnD, FadingSunsD20, HackMaster, L5R, Sidewinder, SovereignStoneD20, StarWars, WeirdWars, and WheelOfTime. This indicates which game mode the files are intended for, and this PCC will not be listed on the Source tab for any other game modes.
TYPE:(pub).(form).(setting) Required, third line Must be third tag.
'pub' is the name of the company or individual that produced the material that the data files are based on,
'form' is the format of that original material (e.g. Sourcebook, Web Enhancement, Magazine, Supplement, etc.),
'setting' (optional) is the "campaign setting" for the original material (such as the publisher's campaign realm)
RANK:number Optional, fourth line where number is the order in which this campaign will be loaded if you load more than one campaign. RANK:1 is the highest, and no ranking is the lowest.
LSTEXCLUDE:<LST file list> Optional, Before PCC/LST includes Allows you to customize which LST files are loaded. By adding LSTEXCLUDE:<LST file list> to your PCC file, before PCC/LST file includes, but after GAME/SOURCE/RANK info, then ALL of those files will NOT be loaded, even if referenced later by other included PCC files. The LST file list can be a single LST filename per entry, or can be separated by the "|" character.
PCC: Optional Use to include other PCGen Campaign Configuration files. It is recommended that you include this tag before any tags that load LST files.
When including data files (whether they be .lst or other .pcc files) you only need to use their filename if they are located in the same directory as the PCC file, itself. If not, you must include path information along with the filename.
You may use relative paths (e.g. "PCC:..\peerdirectory\myothersource.pcc") or a special absolute path (e.g. "PCC:@\wotc\sourcebooks\dungeonsanddragons\core\playershandbook\playershb.pcc"). Using the special character "@" indicates that you want to start the file search from the root data directory of PCGen (as defined in Preferences, but is <pcgen install directory>\data by default) instead of the directory where the current PCC file is located.
This allows great flexibility in how you can reference data files.
INCLUDE / EXCLUDE Optional You can include/exclude based on the following tags: RACE: SKILL: FEAT: DEITY: DOMAIN: SPELL: WEAPONPROF: EQUIPMENT: LANGUAGE: CLASS: CLASSSKILL: CLASSSPELL: for each of these you specify a pipe-delimited list indicating what specific items, or items from a file, you wish to include/exclude.
REQSKILL:list Optional the | delimited list can include UNTRAINED (which means that all untrained skills will be automatically included on any character as if the skill had the REQ tag - see SKILL.LST for details), ALL (which means all skills will have the REQ tag) or a list of specified skill names. If this tag is included it should be after the SKILL: tag.
NFO:text Optional This tag is used to hold information on the campaign and using it in PCGen. Any special instructions or sections of books users will need to refer to can be mentioned here. Notes on issues or limitations with the how the campaign is supported in PCGen are also appropriate here. The tag takes some html as well, such as the <P> <BR> <B> and <I> tags
lst file tags Optional These tags follow the format:
type:file.lst or type:file1.lst|file2.lst etc.
The 'type' is any of:
  • RACE
  • CLASS
  • SKILL
  • FEAT
  • DOMAIN
  • DEITY
  • SPELL
  • WEAPONPROF
  • EQUIPMENT
  • LANGUAGE
  • CLASSSKILL
  • CLASSSPELL
  • TEMPLATE
  • EQUIPMOD
  • COINS
The files are the appropriate lst files for that category.

Some examples would be:

RACE:phbrace.lst|(EXCLUDE:Human|Dwarf)|myrace.lst|(INCLUDE:Happy Elf)
This would first load all the races from the phbrace.lst file and exclude the Human from it, then add to that list all the races defined in myrace.lst but then include only the Happy Elf class from myrace.lst. The resulting list of races would then be available for character creation. The same is true for all the labels.

LSTEXCLUDE:playershbdeities.lst|playershbdomains.lst
This would allow you to load the PHB entries from your own campaign source file, but without the PHB deities and domains.

lst File Syntax

Adding your own lst files

Technically, PCGen doesn't care what the lst files are called - they don't even have to end with .lst - as long as you refer to the file in a campaign file. However, out of convention it is expected that all files that detail classes will end with class.lst - and the file's name will start with something to indicate what source (or book) it came from. e.g. playershbclass.lst contains all the info on the classes detailed in the Players Handbook (TM Wizards of the Coast). Also by convention, all material from each book is put into a different directory, so sharing a campaign with someone else is as easy as zipping up the pcc file from the PCGen directory and the subdirectory which contains all of its lst files. This way it's easy to guess that dmgclass.lst contains all the info on classes detailed in the DMG and is in the dmg directory and dmg.pcc file.

A Word about Sources
Giving credit to the proper source from which a specific class, feat, spell, race, etc. came from is crucial. It not only gives the creator credit for their work, but it also lets the user know where it came from. Hopefully PCGen will be used as a sort of marketing tool by both gaming companies and by users - you can load sources based on material you don't own, and can generate characters based on that information, but you don't quite get enough information to use it accurately or completely without actually buying the source material. This way PCGen can whet your appetite for the kinds of options that are available if you purchase book xyz. My hope is that users will not have given much thought to purchasing some book until they decided to play with it in PCGen, and discovered that they really liked what they saw and went out and bought that book. Since PCGen doesn't give all the details about the various options, it's important that it be easy to look up for those who do own the books. Giving credit to the creators and letting users know where the option came from if they want to look it up is all accomplished via the SOURCE: tag which is available in all the main lst files. Having
SOURCE:xyz
by itself on a line is a way to indicate what source the following items all came from - until the next time SOURCE: is by itself on a line. Items can have a SOURCE: tag as well to indicate where that item is specifically located. For example, suppose we have a file named xclass.lst and it contained
SOURCE:Basic X Book
CLASS:X5 blah blah SOURCE:p.12
SOURCE:Advanced X Book
CLASS:X7 blah blah SOURCE:p.36
The source for X5 would be displayed as "Basic X Book, p.12" and the source for X7 would be "Advanced X Book, p.36". Now you can also specify
SOURCEPAGE:blah|SOURCEWEB:url|SOURCELONG:longversion|SOURCESHORT:shortversion
and in the Options Menu there's a Source Display choice where you can select which of the above versions will be displayed in all the tabs and on the charactersheets when exported. If you have Long select, the SOURCELONG contents will be displayed with the SOURCEPAGE contents appended to the end, same with Short.

CLASS.LST

Each class begins with
CLASS:name
where name is the name of the class. If the class has a name identical to a class from another source, then the one which was released last will have its source abbreviated to distinguish them. Suppose book named "My Favorite Fighters" and another book "Swashbucklers Ahoy!" both have a Prestige Class in them named "Super Swab". The first book released would have the class entered as CLASS:Super Swab and the other source (we'll assume Swashbucklers Ahoy in this case) would have CLASS:Super Swab (SA) so PCGen (and our users!) can tell them apart.
The class data files can use any of the global tags.

On that first line other options are available in the form of tag:value(,value,value)
keywords available are:
ABB:name where name is the abbreviation for this class. If not specified, PCGen will use the first 3 characters of the class name as the abbreviation.
BAB:type where type is the base attack bonus rate of this class, which is one of G (for Good), M (for Medium), B (for Bad) or O (for Other which requires a DEFINE:BAB formula. Default value is O. Here's an explanation of what G, M and B mean.
AGESET:x where x is 0, 1 or 2. This refers to the index of the sides/num dice pair in the selected race's AGE tag. When a character advances its first class to first level, the character's age is determined by using this value (2 is the default if the tag is not specified) to determine which sides/number of dice pair is used to generate a random age value.
BONUS:tag see the BONUS:tag description near the end of this file.
CASTAS:name where name is the key name of another class whose list this class uses (e.g. Sorcerers use the Wizard list so they have CASTAS:Wizard)
DEFINEsee DEFINE discussion below
DEF:chart,adjustment This is the Star Wars Defense indicator. The chart is a number which determines how the class progresses in Defense (0=PC Best, 1 = PC Middle, 2 = PC Low, 3 = NPC,4 = Prestige Class). justment is what adjustment there is if this isn't the first class the haracter obtained. For all PC and NPC classes this is usually -2, for Prestige classes this is 0. Defense is the total of the race's natural armor + dex modifier + these class bonuses. See the Star Wars Charts further down in this document.
DEITY:list where list is a |-delimited list of the only deities that that class may follow. Default is ANY. (e.g. DEITY:Bocob|Palor)
DOMAIN:domain1[PRExxx tag|PRExxx tag]|domain2[PRExxx tag|PRExxx tag]|etc where domain1 is the name of a domain and [PRE...] is an optional list of prerequisites which must be met for this to be a valid domain. As many domains as desired can be added in this way, but you should probably include a BONUS:DOMAIN|NUMBER tag along with it so the appropriate number of domains can be set.
EXCLASS:classname this is the class to which all current class levels are converted if the class prerequisites are no longer met
EXCHANGELEVEL:classname|min_level|max_exchange|lowest_level allow exchange of max_exchange levels from classname as long as class level is at least min_level. The minimum level classname can be lowered to is min_level.

eg. EXCHANGELEVEL:Ex Paladin|11|10|1
This would allow the exchange of up to 10 levels of Ex Paladin as long as there were at least 11 levels of Ex Paladin available
FORTITUDECHECK:type and REFLEXCHECK:type and WILLPOWERCHECK:type where type a the check progression rate of G (for Good), M (for Medium), B (for Bad) or O (for Other). Default value is O. Here's an explanation of what G, M and B mean.
HD:num where num is usually 4,6,8,10 or 12. default value is 0.
ITEMCREATE:mult the class level will be multiplied by mult when calculating prices for potions, scrolls and wands (default is 1)
LANGBONUS:list list from which the character's intelligence modifier's worth of languages can be chosen. If list is a series of ',' deliminated languages then the character can choose from them.
If list is ALL then the character can select from all languages available in the selected sources.
If list is TYPE=x then the character can select from all languages of TYPE:x.
MAXLEVEL:num where num is the maximum level this class can become. There is an "Ignore Level Cap" checkbox in the Options tab which can ignore this. The default value is 20.
MEMORIZE:yn where yn is Y to indicate that the class does memorize spells (this is the default value if this keyword is not listed) or N to indicate that this class (e.g. Bard/Sorcerer) does not memorize spells (which means that they will only have a Default spellbook).
PROHIBITED:list where list is a comma-delimited list of schools or descriptors this class cannot access.
NOTE: The SUBCLASS: tag will override this tag, so don't use them in the same class!
REP:chart This is another Stars Wars indicator. chart is a number which represents the following progression (0=PC Best, 1 = PC Middle High, 2 = PC Middle Low, 3 = PC Low, 4 = NPC High, 5 = NPC Low, 6 = Prestige Class High, 7 = Prestige Class Low). See the Star Wars Charts further down in this document.
SKILLLIST:name or SKILLLIST:num|list name is the name of a class whose list of class-skills this class duplicates. list is a | delimited list of classes whose class skills this class also treats as class-skills. which are class-skills for this class and num is how many of the classes in this list this class can pick from. e.g. SKILLLIST:1|Hoover|Geek would let the class pick either the Hoover or Geek class' list of class-skills.
SPECIALS:name|class|adjusment|levelstring This tag is meant to contain special abilities which stack between classes (e.g. Uncanny Dodge). name is the name of the special ability exactly as it is found in the SPECIALS.LST file. class is the name of the class where the levelstring will be found (the other classes omit this parameter). adjustment is what level adjustment this class has on the ability in terms of the base-class' level advancement. e.g. Barbarians get the first Uncanny Dodge ability at level 2, whereas a Rogue gets it at level 3. A Rogue's adjustment is 0, and the Barbarian's is 1. All the classes a character has with this SPECIALS tag are summed, along with their adjustments. This total is compared to the levelstring, and the character gets each level of ability that their total is greater or equal to.
SPELLSTAT:stat where stat is the abbreviated name of the Stat upon which this class, if it's a spellcaster gets bonus spells and determines it's maximum level of spell it can cast. Typical options are INT, WIS and CHA. NONE is the default value and is used for non-spellcasters. SPELL is used for classes whose ability to cast a spell is based on the type of spell it is.
SPELLTYPE:type where type is the type of spells they cast, like Arcane, Divine, etc. Default is None.
STARTSKILLPTS:num where num is how many skill points this class gets per level. Default is 0.
SUBCLASS this is how you can pick a Specialist wizard.
It goes SUBCLASS:CHOICE|number of choices in subsequent list if this is chosen|CHOICE|number of choices in subsequent list if this is chosen|etc. a CHOICE can be a string or it can be FILE=filename (e.g. FILE=phb\Specialist.lst). The selection chosen is put into the class' specialty string, and if the FILE chosen has a COST field, the subsequent choices are placed in the prohibited string. This is kind of complex...
TYPE:classtype.classtype.etc where classtype is the type of class this is. It can be PC, Prestige, Monster or NPC, if this tag is not present it defaults to PC.
UATT (depricated) used for Monks... e.g. UATT:4,1 done more efficiently by using the same -5/melee attack code, only using a -3/unarmed attack.
WEAPONBONUS:list these are weapons from which the class can pick one proficiency

the following keyword pairs can also be placed on the first line and are meant as pre-requisites for Prestige classes.
MULTIPREREQS This isn't a keyword pair, but if this keyword appears then all Pre-Requisites are valid only if the character would be multi-classing into that class (i.e. there are no pre-reqs for choosing this as the first class at character creation time).
PRExxx tags The prestige requirement tags are described near the end of this file. PREALIGN: can be used to restrict alignments with access to this class.
XTRAFEATS:num where num is how many extra feats this class gets at first level. default value is 0.

The other lines in class.lst file start with a number indicating a level and then tabs between keyword:value (comma-delimited for some) pairs. The keywords available are:
FEAT:list upon gaining this level the character gains these feats (comma-delimited)
FEATAUTO:feat1[prereq1]..[prereqn]|feat2|...|featn upon gaining this level the character gains these feats (| delimited) which cannot be 'turned in' for other feats. eg. armor and weapon proficiencies.
FEATAUTO:.CLEAR and FEATAUTO:.CLEAR.featname .CLEAR removes all automatic feats, .CLEAR.featname removes the named automatic feat only.
VFEAT:list upon gaining this level the character gains these virtual feats (| delimited) See the Monk and Ranger class for examples of this.
GOLD:dice,sides,multiplier where dice is the number of dice rolled, sides is the number of sides on each die, and multiplier is what the total is multiplied to. This starting gold is generated for a character's first level in their fist class only.
CAST:list number of spells castable for each level per day (0 assumed for levels not given) (Comma delimited)
KNOWN:list number of spells knowable for each level (0 assumed for levels not given.) (Comma delimited)
KNOWNSPELLS:item|item|item where item can be the name of a spell which is automatically known by this class or item can be LEVEL=x to indicate that a class automatically knowns all spells of a certain level. In either case the spell is only automatically known if the spellcaster has an appropriately high-enough stat to cast that level of spell.
SPECIALTYKNOWN:list number of specialty spells knowable for each level (0 assumed for levels not given.) (Comma delimited)
ADD:label(choice1<PRExxx|PRExxx>,choice2<PRExxx|PREXXX>) this is how the generic ADD: labels work. You have some label (the possible entries for this are listed below), and the choices for this label re in a comma delimited list. Sometimes you only want a choice to be available if a character meets certain criteria. This can be done by including a set of PRExxx tags (just like is done for Prestige classes) within angle-brackets. The PRExxx tags themselves are pipe delimited and you can include any number of them.
ADD:CLASSSKILLS(value)|number where value is type of skills you want to add from (CROSSCLASSSKILLS, UNTRAINED, TRAINED, EXCLUSIVE, NONEXCLUSIVE, ANY) and number is the number of them that can be added. The Expert class is a good example of this.
ADD:FEAT all by itself means increment the number of feats the character knows by 1
ADD:FEAT(list) the character can choose one of the listed feats for which it qualifies. If TYPE=name is in the list, all feats of that type name will be included. (comma -delimited)
ADD:INIT|mod
(deprecated - use BONUS:COMBAT|Initiative instead)
where mod is a value that is added. These values are cumulative, so ADD:INIT|1 at first level and another ADD:INIT|1 at second level would give a +2 on initiative for second level and beyond.
ADD:Language(list) where list is a comma-delimited list of languages. The list of choices is filtered by the currently loaded selection of languages, and any selections made are added to the character's list of known languages.
ADD:LIST(list) where list is in the form item1_name[CHOOSE:tag][BONUS:tag],item2_name[CHOOSE:tag][BONUS:tag] the CHOOSE:tag is optional (but you can only have one of them), the BONUS:tag is also optional (but you can have any number of them). the itemx_names will show up in a list, and based on the user's selection another list of choices may be presented (if the item in question had a corresponding CHOOSE:tag). The bonuses associated with the choice will also be applied. See the discussion on the BONUS:SPELLCAST and BONUS:SPELLKNOWN near the end of this document for more details.
ADD:SPECIAL(list) the character can choose from one of the listed special abilities (comma -delimited)
ADD:SPELLCASTER(label) where label is one of ANY (to indicate that the class can choose from any spellcasting classes except for the one being leveled up) or a valid SpellType (currently that's Divine or Arcane to indicate which kind of spellcaster classes should be included in the list). The character selects a class to add a bonus level to in terms of spells known/castable. This is cumulative (see the Loremaster for example).
ADD:value(list) the character can choose from a list of choices titled value which will then be added to the list of special abilities as value(choice). e.g. ADD:Favored Enemy(Microsoft, Sun) produces a list titled "Favored Enemy" and if the character selects Microsoft, "Favored Enemy(Microsoft)" will be added to the special abilities for the character. (comma-delimited)
ADD:WEAPONBONUS(bonus_tag|bonus_mod|list) where:
bonus_tag is TOHIT, DAMAGE or TOHIT,DAMAGE to indicate what the character gets a bonus on with the selected weapon.
bonus_mod is the actual bonus modifier. You can put formulas in here as well.
list is a pipe-delimited list of the following possibilities: ALL (list all weapon profs); FEAT=name (list all weapon profs whose type is the named feat); PCFEAT=name (list all weapon profs the character has that is the named feat); or simply name a weapon prof.
e.g. ADD:WEAPONBONUS(TOHIT,DAMAGE|2|FEAT=Simple Weapon Proficiency|PCFEAT=Martial Weapon Proficiency|Greatclub) would make a list of all the Simple weapons, the martial weapons the character is proficient with, and add the Greatclub. This bonus stacks with all other bonuses. In this example the character would be +2 to hit and damage with the selected weapon prof.
ADD:FORCEPOINT Adds 1 forcepoint to the total number for the character.
ADD:.CLEAR and ADD:.CLEAR.LEVELx ADD:.CLEAR will remove all ADD: tags in the class (this is typically used in .MOD classes). ADD:.CLEAR.LEVELx (where x is a number, like 5) will remove all ADD: tags for the class which are associated with level x. This is also used for .MOD classes and can be useful when a modified class gets a different list of options than the regular class, you clear the ADD: tags for that level (ADD:.CLEAR.LEVELx) and then you can specify a new ADD: tag (the new ADD: tag would still need to occur on the appropriate level line for the .MOD class)
ADDDOMAINS:list where list is a | delimited list of prestige domains. e.g. ADDDOMAINS:name1|name2|name3 and all 3 names are valid domains found in a domain lst file
PRERACETYPE A race type.
For monster classes, the race must be of this type or they can't take the class. I made this seperate from the other prereqs because it does not count towards being a prestige class.
INTMODTOSKILLS Yes or No.
This is for monster types that don't get their int mods for skills they get from gaining hit dice.
LEVELSPERFEAT Number.
This is the number of levels it takes for a monster of this race type to gain a new feat. Not sure if this actually works right now.
TEMPLATE:String where String is a template that the character gains when taking this race. This may appear more than once in each race definition.
A Special case of CHOOSE:names will let you choose one from a list of '|' deliminated templates.
BONUS:tag see the BONUS:tag description near the end of this file.

Adding a Class

There are 3 files you need to modify when adding a class: the particular class.lst file you wish to add its data (for beginners, it's best to simply copy & paste an existing class that resembles your class as much as possible and simply modify it from there). If the class is a spellcaster, you'll need to add data to a classspell.lst file, and if it has any class skills, you'll need to add those to the classskill.lst. Make sure the class.lst, classskill.lst and classspell.lst files that you modify are used in your chosen pcc file. See the description of the CAMPAIGN.LST file for a discussion on adding a campaign for more notes.

DEITY.LST

The deity data files can use any of the global tags.

The name of the deity must be the first entry on each line. Other defined tags are:
ALIGN:string where string is the alignment of the deity
BONUS:tag see the BONUS:tag description near the end of this file.
DEITYWEAP:list where list is a | delimited list of favored weapons. Default value is ALL.
DOMAINS:list where list is a comma delimited list of domains to which this deity grants access.
DESC:description where description is the description of this deity.
FOLLOWERALIGN:alignments where alignments is a string of numeric alignments
eg. FOLLOWERALIGN:367
There is also a limited qualification test (currently only VARDEFINED is supported)
eg. FOLLOWERALIGN:[VARDEFINED=SuneLG=0]367
RACE:list (deprecated - use PRERACE:tag) where list is a comma-delimited list of Races (case sensitive) which can follow this deity. If this argument isn't found, then any Race can follow this deity.
PRExxx tags The prestige requirement tags are described near the end of this file.
PANTHEON:list where list is a pipe-delimited list of pantheons the deity belongs to.
A deity with no (or empty) PANTHEON tag is assumed to belong to all existing pantheons.
You may specify a pantheon in one of two ways: either General or Specific.
General: write the pantheon's name only, e.g. Elven.
Specific: write the pantheon's general name followed by the specific (sub-pantheon's) name in braces, e.g. Elven (Aquatic)
Example: PANTHEON:Faerunian|Elven (Sun)

DOMAIN.LST

The domain data files can use any of the global tags.

The name of the domain must be the first entry on each line. Other defined tags are:
BONUS:tag see the BONUS:tag description near the end of this file.
CHOOSE:WEAPONPROF|num|list[label] WEAPONPROF is the only working choice for Domains. num is the number of choices allowed. list is a pipe-delimited list of choices (which can include DEITYWEAPON to include the deity's favored weapon(s)). you can include 0 or more [labels], where label is either WEAPONPROF (meaning the chosen selection is made a weapon proficiency) or FEAT=name where the named feat then has the chosen selection associated with it (since WEAPONPROF is the only working choice, the Feat must require a weapon proficiency association, like Martial Weapon Proficiency, Exotic Weapon Proficiency, Weapon Focus, etc.)
DEFINEsee DEFINE discussion below
DESC:text where text is a description of the granted power associated with this domain.
FEAT:list these feats are gained when choosing this domain (comma-delimited)
PRExxx tags The prestige requirement tags are described near the end of this file.
RACE:list (deprecated - use PRERACE:) where list is a comma-delimited list of Races which can choose this domain.
SKILL:list these skills are considered class-skills when purchasing skills for the character (comma-delimited)

EQUIPMENT.LST

The equipment data files can use any of the global tags.

The first column is the item's name. The other fields are all optional tag:value pairs separated by tabs:
AC:number
(deprecated - use BONUS:COMBAT|AC|xx|TYPE=yyy instead)
where number is the AC adjustment this item gives to the character when it's equipped.
ACCHECK:number where number is the Armor Check penalty this item gives for certain skills.
ALTCRITICAL:string for double weapons the secondary attack's critical chance
ALTDAMAGE:string for double weapons the secondary attack's damage
ALTEQMOD:string where string is a decimal-delimited string containing the equipment modifiers for a weapon's secondary head. eg. ALTEQMOD:WEAP+2.Vorpal
ALTTYPE:subtype.subtype.etc where subtype is an identifier of the different types for the secondary head of a double weapon. See the TYPE tag
BASEQTY:number Where number is the number of items in this bundle. ie. Arrows (20) should have BASEQTY:20
BONUS:tag see the BONUS:tag description near the end of this file.
Cost:number where number is a value (in gp) of the item
CONTAINS:string where string is of the form: max Weight capacity|Type1=max #|Type2=max #...
the max weight capacity is the maximum weight a container can hold, each Type entry specifies a subtype which is compared to the TYPE string of items; if an Item has a subtype which matches one of the types listed in the CONTAINS tag, the container can hold that item. The special types Any and Total have special meaning. Any=5 means the container can hold any 5 items as long as the weight capacity is not exceeded. Total=10|Scroll=7|Potion=10 means the container can hold a maximum of 10 items, no more than 7 of which can be scrolls.
Setting the capacity or max # of a type to -1 gives the container an unlimited capacity of that type. Putting an * before the weight causes the contents of a container not effect the weight of the container, (aka. bag of holding).
CRITMULT:string Where string is the multiplier on damage for the weapon on a critical hit. e.g. CRITMULT:x2 is most common.
CRITRANGE:number where number is the range of criticals. a Crit on a 20 is a range of 1. A Crit on a range of 19-20 is a range of 2.
DAMAGE:string where string is the amount of damage the item does (not adjusted due to strength or other magical bonuses)
DEFINEsee DEFINE discussion below
EDR:number where number is the Damage Reduction Rating for the piece of equipment.
EQMOD:string where string is a decimal-delimited string containing the equipment modifiers for a weapon's primary head. eg. EQMOD:WEAP+3.Speed
HANDS:number where number is the minimum number of hands required for this item (default is 1, this is primarily used for Buckler shields which use 0 hands when equipped)
LONGNAME:name where name is the longer version of the name. Defaults to NAME if not supplied.
MAXDEX:number where number is the maximum dex modifier to AC this item allows.
MODS:value where value is one of Y, N, R.
N disallows any eqModifiers, Y (default) allows them, and R requires at least 1 before the item can be purchased.
MOVE:medium,small where medium is the movement rate for medium sized characters and small is the movement rate for small characters.
PRExxx tags The prestige requirement tags are described near the end of this file. Any requirements must be met before this item can be equipped.
PROFICIENCY:weapon Where weapon is a weapon from the weaponprofs.lst (i.e. you want to create a magical longsword  called Balmung. To tell PCGen that every character who is proficient with sword (long) also is proficient with Balmung, you have to add PROFICIENCY:Sword (Long)
REACH:value where value is an integer value indicating how much the reach of the weilder is extended when using this weapon. The default is 0.
SIZE:letter where letter is the size letter (just like for races) of the weapon.
SPELLFAILURE:number where number is the percent of arcane spell failure this item incurs. e.g. SPELLFAILURE:5 is 5% failure.
SPROP:special where special is a description of any special properties associated with the item.
TYPE:subtype.subtype.etc where subtype is an identifier of the different types this item is. The subtypes can be in any order and must be separated by a dot. PCGen knows that only a certain number of certain subtypes can be equipped ( e.g. you can only have two items with RING in their type list equipped, or 1 item with Armor as a listed subtype). The list of subtypes is what PCGen allows the user to pick from when they click on the Equipment List button. the subtype should indicate what kind of Armor it is, or what kind of weapon it is and what kind of damage it does.
VFEAT:feat|feat|feat this pipe-delimited list of feats is added to the character's virtual list of feats and can be used to meet the pre-requisites of other feats.
WT:number where number is the weight in pounds of the item.

FEAT.LST

The feat data files can use any of the global tags.

each feat takes one line and the first field must be the feat's name. Beyond that each tag:value pair can be any of the following separated by tabs:
ADD:type|subtype where type is WEAPONPROFS, FAVOREDCLASS, or SPECIAL
for WEAPONPROFS, subtype is one of SIMPLE, MARTIAL or EXOTIC to indicate what kind of weaponprof the character can add upon gaining this feat.
for FAVOREDCLASS is either a class name, or LIST, which yields the selection of a previous CHOOSE tag. For SPECIAL you can enter either a | deliminated list of special abilities that are added to the character upon gaining the feat or use LIST to pull one selection from a seperately defined CHOOSE list (CHOOSE:entry1|entry2|entry3|and so on).

Known BUG: Chooser allows for one too many choices and removing an item gives you extra feats.

ADD:FORCEPOINT|x Adds 1 to the Forcepoint total of the character.  The x is a dummy variable and can be anything without affecting the tag's results.
ADDSPELLLEVEL:num where num is the number of levels this feat adds to a spell.
ATT:value (deprecated - use PREATT:) pre-requisite base attack bonus minimum
BONUS:tag see the BONUS:tag description near the end of this file.
CHOOSE:WEAPONPROFS|label_list where label_list is a | delimited list with the following options: ADD.prof (adds prof to the list of choices), SpellCaster.prof (adds prof to the list of choices if the character is a spellcaster), LIST (adds all the characters weapon proficiencies to the list of choices), Size.M.prof (adds prof if the character is at least Size M - can use any size character), WSize.Light (adds all the character's light weapons to the list - can also use WSize.1 handed and WSize.2 handed), TYPE.label (where label is anything in the named equipment's TYPE string, like RANGED or MELEE) and prof (where prof will be added if the character has the weapon proficiency named prof). Note: WSize logic has been extended... WSize can now be of the form WSize.label.type.type.type where label is one of "Light", "1 handed" or "2 handed", and you can include 0 or more type strings. Any weapon prof which meets the criteria of the label and any *one* of the indicated type strings, will be added to the subsequent list of choices for the feat. For example, WSize.Light.Melee will add all weapon profs which are Light for the character and which have Melee in the associated weapon's TYPE: string - thus the list would include all light melee weapons.
KEYUNDOCUMENTED
DEFINEsee DEFINE discussion below
CHOOSE:COUNT=n|type|value COUNT=n is optional and specifies the number of selections to be chosen
type is one of
FEAT=UNDOCUMENTED
SPELLLEVELUNDOCUMENTED
FEATLISTUNDOCUMENTED
FEATSELECT(Only works at moment for value of TYPE=) choice of feats of TYPE=x
FEATADDUNDOCUMENTED
WEAPONFOCUSUNDOCUMENTED
HPhit points
WEAPONFOCUSWeapon Focus Feats
SPELLCLASSESspellcasting classes of character
SCHOOLSavailable Schools of magic
SPELLLISTknown spells
SKILLSknown skills
CSKILLScurrent class skills
SKILLLISTchoose any Skill to make it a class skill,
CCSKILLLISTchoose skills to become cross-class skills
NONCLASSSKILLLISTchoose cross-class skills to become class skills
SKILLSNAMEDindicate which skills are applicable. In a | delimited list you can specify a skill like Climb or you can use a wildcard like Craft% or TYPE.x to get all the skills that start with the name Craft or are of type 'x'
SKILLSNAMEDTOCSKILL choose skills from list (likes SKILLSNAMED) to become class skills
SKILLSNAMEDTOCCSKILL choose skills from list (likes SKILLSNAMED) to become cross-class skills
EXOTICExotic weapon proficiencies or
MARTIALMartial weapon proficiencies.
STAT|exclude_listchoose a stat. exclude_list is optional and '|' delimited.
eg. STAT|Con will list all stats excluding Constitution
value must exist (use a default value of 1 if nothing is applicable) but currently only used with the SKILLLIST, CCSKILLLIST, NONCLASSSKILLLIST, and SKILLSNAMED to indicate what list of SKILLS the character can choose from.
CLASS:classname:level (deprecated - use PRECLASS:) pre-requisite for this feat - classname can be Spellcaster meaning any class that can cast spells
COST:cost where cost is a value (like .5) to indicate how many feat points each choice (for multiple feats) costs. A cost of .5 means each choice costs .5 feats so you'd get 2 choices per feat spent on it.
DESC:value the description of the feat as it appears in the Feats tab of PCGen
FEAT:list (deprecated - use PREFEAT:) list of pre-requisite feats
LEVEL:number (deprecated - use PRELEVEL:) where number is the minimum number of levels required to acquire this Feat (default is 0)
MULT:value where value is YES or NO (default = NO) to indicate if this feat can be taken multiple times. If set to YES you must also use a CHOOSE: tag to indicate what choices are available.
PRExxx tags The prestige requirement tags are described near the end of this file.
REP:levels_per_increase where levels_per_increase is how often (in levels) this Feat increases the Reputation of the character. The number must be an integer. e.g. 5 would mean that at 5th, 10th etc. level the Reputation of the character goes up 1 due to this Feat.
SKILLRANK:list|minRank (deprecated - use PRESKILL:) where list is a comma-delimited list of Skill names and minRank is the minimum rank needed in these skills to qualify for the Feat.
STACK:value where value is YES or NO (default = NO) to indicate if the feat stacks.
STAT:NAME:value (deprecated - use PRESTAT:) pre-requisite where NAME is STR,DEX,CON,INT,WIS or CHA and value is the minimum value of that stat
TYPE:value what kind of feat is it (used in ADD:FEAT(TYPE=name) in the class.lst file).
VISIBLE:setting VISIBLE:Yes --- display in PCGen and on export (default)
VISIBLE:No --- hide from both PCGen display and export.
VISIBLE:Display --- display in PCGen but not on export.
VISIBLE:Export --- Hide from PCGen but display in export
This allows for hidden feats which are granted by other aspects of the character. All types save to the pcg files. Export refers to character sheets.

LANGUAGE.LST

each language takes one line.
name[tab]TYPE:type.type.type where name is the name of the Language
TYPE: can contain a list of types delimited by .
e.g. Common[tab]TYPE:Spoken.Written
would mean that a Language called "Common" would qualify as both a Spoken and a Written langauge. The TYPE: string's use is when combined with the CHOOSE:Language() tag in Skill.lst.

LOAD.LST

The first line is a list of Size letters with a pipe character separating it from its load limit multiplier. The second through next-to-last line contain a strength value (must be incremental starting at 1) and the last line indicates the multiplier and power escalation for every 10 strength points beyond the end of the list. This is to represent the multiplier of 4 for the first 10 beyond the end of the strength list in the PHB, 16 for the next 10 (4 to the power of 2), 64 for the next 10 (4 to the power of 3) and so on. Y ou can change the multiplier (4) if you wish or add to the list of strength/capacity lines, but they must be incremental (no skipping strength scores).

RACE.LST

The race data files can use any of the global tags.

The name of the race must be the first entry on each line. Other defined tags are:
AC:number
(deprecated - use BONUS:COMBAT|AC|xx|TYPE=yyy instead)
where number is the AC adjustment this item gives to the character when it's equipped.
AGE:min:dice:sides:dice:sides:dice:sides the minimum age for the race and the number of dice and sides used. There are 3 possible sets of dice/sides so each class can specify which pair it will use if it is the character's first class. The default is the last pair (AGESET:2 since this uses a 0-based index).
AL:list of alignments (e.g. Lawful Good|Lawful Neutral) (deprecated - use PREALIGN:) where list is a pipe-delimited list of alignments as they appear in the alignment box on the Stats tab. If this AL: does not exist, then the race can be any alignment, but if this does exist, then the alignment chosen must appear in this list.
BAB:num where num is the base attack bonus for this race.
BONUS:tag see the BONUS:tag description near the end of this file.
CR:num where num is the base Challenge Rating of this race.
Can either be an integer, or a fraction in the form 1/n
FAVCLASS:string where string is a | delimited list of the race's favored classes.
FEAT:list where list is a | delimited list of feats the race gets.
Multiple uses of this tag in the same race will overwrite each other NOT add to each other.
MFEAT:list where list is a | delimited list of feats the race gets if Use Default Monsters was checked in the Options Menu before loading in the campaign.
Multiple uses of this tag in the same race will overwrite each other NOT add to each other.
VFEAT:list where list is a | delimited list of virtual feats the race gets.
HEIGHT:M:min:dice:sides:bonus:F:min:dice:sides:bonus where M is for Male, min is the minimum height, dice is the number of dice used, sides is the number of sides on the dice and bonus is added to the ending roll
HITDICE:num,dice where dice is the number of sides on the dice (so d4 would be 4) and num is the number of those dice used to calculate hit points.
HITDICEADVANCEMENT:num,num,etc. where num,num is a comma-delimited list of HD at which the size of the race increases. The final number is the maximum hit dice this race can reach and if this list is not present this race can only advance through classes.
HITDIE: This locks the hit dice for a race that levels but uses it's own hit dice.
There are five settings:
HITDIE:num --- sets the hit die to num regardless of class.
HITDIE:%/num --- divides the classes hit die by num.
HITDIE:%*num --- multiplies the classes hit die by num.
HITDIE:%+num --- adds num to the classes hit die.
HITDIE:%-num --- subtracts num from the classes hit die.
HITDIE:%upnum --- moves the hit die num steps up the die size list d4,d6,d8,d10,d12. Stops at d12.
HITDIE:%downnum --- moves the hit die num steps down the die size list d4,d6,d8,d10,d12. Stops at d4.
Regardless of num it will never allow a hit die below 1.
INIT:number where number is the initiative mod for this race
CHOOSE:LANGAUTO:list list from which the character can choose (current limit of one) language which does not count against their intelligence limit. If list is a series of '|' deliminated languages then the character can choose from them.
If list is ALL then the character can select from all languages available in the selected sources.
If list is TYPE=x then the character can select from all languages of TYPE:x.
Note that ALL and TYPE=x work with LANGAUTO as well but the results of using them might not be desirable.
LANGBONUS:list list from which the character's intelligence modifier's worth of languages can be chosen. If list is a series of ',' deliminated languages then the character can choose from them.
If list is ALL then the character can select from all languages available in the selected sources.
If list is TYPE=x then the character can select from all languages of TYPE:x.
LEVELADJUSTMENT:num where num is the number of levels added due to being this race. Now includes limited support for formulae.
MOVE:number the walking movement rate in feet for this race. You can optionally specify additional movement rates like MOVE:Walk,30,Fly,20,Swim,20 to indicate a Walk movement rate of 30 and Fly and Swim movement rates of 20.
NATURALATTACKS:Primary natural Weapon|Secondary1|Secondary2|... any natural attacks (Claw, etc.) that the race has. Each weapon is of the format:
Weapon Name,Weapon Type,# of attacks at BAB,damage/attack
each weapon name must have an entry in a WeaponProf.lst file consisting of Weapon Name     TYPE:Natural
Weapon type should be of the form: Weapon.Natural.Melee.Slashing.Piercing.
# of attacks at BAB can be prepended with an * to prevent normal attack progression; ie. a *2 means 2 attacks at a BAB (of 12), whereas a 2 gives 4 attacks (12/12/7/2)
damage is the damage caused by the natural attack.
PRExxx tags The prestige requirement tags are described near the end of this file. Character must meet these requirements to be able to select this race.
PROF:type|list where type is what type of weapon proficiency this race has an adjustment for (must match the TYPE tag from the weaponprof.lst file - e.g. SIMPLE, MARTIAL, etc.) and list is a | delimited list of weapon profs. For example, the Dwarf has PROF:MARTIAL|Waraxe (dwarven) because it's usually an exotic weapon, but for Dwarves it's a martial weapon.
RACENAME:String If set this value will appear as the name of the race on character sheet output. If not set the value that appears on the menu in PCGen for choosing the race will output. This is handy for distinguishing same named races in multiple campaigns when you don't know which one the person will load in first.
REACH:num where num is an integer indicating the race's reach. This defaults to 5 feet.
SAVES:fort,ref,will where fort is the base Fortitude, ref is the base Reflex and will is the base Willpower save for this race.
SIZE:value One of these values (T,F,D,S,M,L,G,H,C)
SKILL:list=bonus=list=bonus (e.g. SKILL:Chew Gum=1=Whistle,Hum=2 would give a +1 on Chewing Gum and +2 on Hum and Whistle. list of skills for which the character gets the indicated bonus. Please use BONUS:SKILL instead of this tag.
SKILLMULT:mult where mult is the skill multiplier at first level (for most races this is 4, which is the default value if this keyword pair is not supplied)
STARTFEATS:num where num is the number of feats this race starts with at first level. Default is 0.
STATADJx:num where x is the index of the stat to be adjusted and y is the actual adjustment. Valid x values are: 0=STR, 1=DEX, 2=CON, 3=INT, 4=WIS and 5=CHA, so a race with a Strength adjustment of +2 would have STATADJ0:2 (don't use +). A race with a Charisma adjustment of -2 wuold have STATADJ5:-2 (- are ok). You can include any number of STATADJx: tags.
TEMPLATE:String where String is a template that the character gains when taking this race. This may appear more than once in each race definition.
A Special case of CHOOSE:names will let you choose one from a list of '|' deliminated templates.
TYPE:type where type is Monster type such as Abberation, Dragon, Undead, etc. Default is Humanoid.
VISION:value the kind of vision the race has (default = Normal).
WEIGHT:M:min:dice:sides:F:min:dice:sides is interpreted the same as HEIGHT
WEAPONAUTO:list list of weapon proficiencies the character gains for this race
WEAPONBONUS:list list from which the character can choose one proficiency for this race
XTRASKILLPTSPERLVL:num where num is the number of extra skillpoints this race gets per level

TEMPLATE.LST

The template data files can use any of the global tags.

each template takes one line. The first fields must be the template name
All of the following fields are optional and can appear in any order:
BONUS:tag see the BONUS:tag description near the end of this file.
DEFINEsee DEFINE discussion below
GENDERLOCK:String Sets the character's Gender and disables the ability to change it as long as 'String' is one of three arguments:
Female, Male, or Neuter.
The Gender will be set to the appropriate value for your language property settings.
This is useful for races where each Gender has different abilities, such as Dark Elves.
HITDICESIZE:number where number is what all of the characters hit dice are increased to. (Not yet fully supported)
SR:number where number is the SR granted by this template. This may appear more than once in a template, but all but one must appear inside a LEVEL or HITDICE tag
TYPE:type The type of critter you're dealing with. Default is Humanoid. Other examples are things like Vermin, Animal, Fey, Giant, Outsider, and so on. It only reads the type of the last template you have with a type setting.
CHOOSE:LANGAUTO:list list from which the character can choose (current limit of one) language which does not count against their intelligence limit. If list is a series of '|' deliminated languages then the character can choose from them.
If list is ALL then the character can select from all languages available in the selected sources.
If list is TYPE=x then the character can select from all languages of TYPE:x.
CR:number where number is the amount the characters CR is increased by this template. This may appear more than once in a template, but all but one must appear inside a LEVEL or HITDICE tag
LANGAUTO:list these are languages the template automatically knows
There are three special cases for removing languages from other sources.
.CLEARALL will clear out all languages loaded into the character BEFORE this template.
.CLEARRACIAL will clear out all racial languages loaded into the character.
.CLEARTEMPLATES will clear out all languages loaded into the character from templates loaded BEFORE this template.
Be sure to test loading order when using these tags. They will remove languages loaded before them but not after. One trick to ensure the order is to put these tags in the same template that loads a template that might have a language you wish to remove, but to put the tag just after the template loader:
The following has the character pick a region, which might give them a language this kind of Elf is not allowed and so clears the language list, then gives them Elven.
TEMPLATE:KalamarPG Regions LANGAUTO:.CLEARTEMPLATES LANGAUTO:Elven (High)
LANGBONUS:list list from which the character's intelligence modifier's worth of languages can be chosen. If list is a series of ',' deliminated languages then the character can choose from them.
If list is ALL then the character can select from all languages available in the selected sources.
If list is TYPE=x then the character can select from all languages of TYPE:x.
BONUSSKILLPOINTS:number number*4 is added to skill points at level 1, and number is added every level after.
BONUSFEATS:number number additional feats allowed.
LEVELSPERFEAT:number This is the number of levels it takes to gain a new feat. Not sure if this actually works right now.
LEVELADJUSTMENT:number where number is the amount the characters ECL is increased for taking this template. (Not yet fully supported) Now includes limited support for formulae.
PRExxx a prequisite for the template. See the full list of PRE tags later in this document
STR:number where number is a bonus to Strength
DEX:number where number is a bonus to Dexterity
CON:number where number is a bonus to Constitution
INT:number where number is a bonus to Inteligence
WIS:number where number is a bonus to Wisdom
CHA:number where number is a bonus to Charisma
HEIGHT:entry Replaces racial height.
see HEIGHT under race for desription.
WEIGHT:entry Replaces racial weight.
see WEIGHT under race for desription.
SIZE:x Replaces racial size.
For instance:
SIZE:L
would change the characters size to Medium
x can be one of T, F, D, S, M, L, G, H, C
AGE:entry Replaces racial age.
see AGE under race for desription.
POPUPALERT:entry Pops ups a window with the message 'entry'. Not properly functional yet...
FEAT:String Where String is a list of feats granted by the template seperated by commas. This may appear more than once in a template.
FAVOREDCLASS:String Where String is the favored classes granted by the template.
GOLD:entry|flag entry can be a straight number to add or dice,sides,multiplier
if flag is present as '1' this gold will replace the class gold. If it is not present or is 0 this gold will add to the class gold.
where dice is the number of dice rolled, sides is the number of sides on each die, and multiplier is what the total is multiplied to.
This is added to a characters gold by class.
Warning: If a template is removed after a save and reopen it will fail to remove the gold.
MOVE:type,rate Where type is Type of movement and rate is the speed it is set to. A special type of ALL set all movement types the character has to rate.
MOVEA:type,rate Where type is Type of movement and rate is amount added to it. Will only add to existing movement types. A special type of ALL adds to all movement types the character has.
MOVECLONE:Movement type,rate,[Movement type,rate,][Movement type,rate,]

All 'Movement type's are names of movement types. 'rate' is an integer number.
Takes the -before template- rate of 'Movement type' and sets all of the succeeding rates to that value. Then it adds the corrosponding 'rate' value to each rate. 'rate' can be 0 if the only desire is to set all rates to 'cr's rate. Will add new movement types if they are already present. Case 'All' does NOT exist for this tag and will cause incorrect results.

Special case for 'rate': multiplication and division.
if rate is in the form '*number' or '/number' where number is an integer number, then the value for that rate is (first movement rate * number) or (first movement rate / number) as appropriate.
Example:

MOVECLONE:Walk,0,Fly,*2
would set the characters Fly move to twice his walking rate. Applied to a human, this would result in a Fly move of 60'.
NONPP:number number must be <=0. Sets the character's penalty for non proficiency in a weapon to this number.
WEAPONAUTO:list list of weapon proficiencies the character gains for this template
WEAPONBONUS:list these are weapons from which the template can pick one proficiency
REGION:String Default is None. Special case: Yes
Sets the name of the character's region. Can be output onto character sheets with |REGION|. If String is set to the special value of Yes then it will place the name of the template in paranthesis after the race on character sheet output.
SUBREGION:String Default is None. Special case: Yes
Sets the name of the character's region. Can be output onto character sheets with |SUBREGION|. If String is set to the special value of Yes then it will place the name of the template in paranthesis after the race on character sheet output.
KIT:class|kit This tag REQUIRES a class and a kit seperated by | or you will cause errors in character sheet output.
class is the class the kit is for. kit is the name of the kit.
This tag will cause the class line of a character sheet to show class (kit) rather than class in the section for that class. With a multiclassed character the (kit) will only show right after the class it applies to. If the character somehow has this template but not the matching class nothing will show. A template with a kit tag should always have a matching PRECLASS:class tag.
SUBRACE:String Default is None. Special case: Yes
If set this will place String in parenthesis after the race on the character sheet output. If String is set to the special value of Yes then it will place the name of the template in paranthesis after the race on character sheet output. If None no value will appear.
VISIBLE:setting VISIBLE:Yes --- display in PCGen and on export (default)
VISIBLE:No --- hide from both PCGen display and export.
VISIBLE:Display --- display in PCGen but not on export.
VISIBLE:Export --- Hide from PCGen but display in export
This allows for hidden templates which are granted by other aspects of the character. All types save to the pcg files. Export refers to character sheets.
REMOVABLE:Yes or No If No this template will not be able to be removed from any character who takes it.
NATURALARMOR:number Where number is the natural armor bonus this template gives to a character. This may appear more than once in a template, but all but one must appear inside a LEVEL or HITDICE tag
TEMPLATE:String Where String is the name of a template to be added when this template is added. This may appear more than once in a template
A Special case of CHOOSE:names will let you choose one from a list of '|' deliminated templates.

TEMPLATE:.CLEAR will clear the list of templates
TEMPLATE:ADDCHOICE:choice will add another choice to the end of the first CHOOSE: found in the template list
LEVEL:number:String where number is the level at which an ability is granted to the character. The String may contain the following tags: DR,SR,CR,SA,FEAT. This may appear more than once in a template.
HITDICE:number-number or number+:String where the numbers are a range or minimum hit dice the character must have before an ability is granted to the character. The String may contain the following tags: DR,SR,CR,SA,FEAT. This may appear more than once in a template.

SCHOOL.LST

$school_name$[tab]$school_cost$[tab]$class_name$
where school_cost is usually 1,2 or 4
and class_name is what those who choose this specialty are called.

SKILL.LST

The skill data files can use any of the global tags.

The name of the skill must be the first entry on each line. Other defined tags are:
ACHECK:label where label indicates when the Armor Check penalties associated with any equipped armor applies (Y for Yes [always], N for Never, P for only when not proficient with the armor, or W for 1 per 5 pounds carried).
BONUS:tag see the BONUS:tag description near the end of this file.
CHOOSE:Language(type.type.type,type.type) You can create a list of languages from which to choose by adding languages of a certain type, or by filtering them by type. e.g. CHOOSE:Language(Written.Sword Pass,Spoken.Hajimar) would present to the user a list of langauges which had either both Written AND Sword Pass in their TYPE: string, OR had Spoken AND Hajimar in their TYPE: string. In addition, if the first type specified is "PC", then the list is created from the character's own list of languages. Thus, CHOOSE:Language(PC.Spoken) would present a list of all the character's languages with Spoken in its TYPE: string. This way one can only allow a character to write languages that they can first speak, or vice versa.
CLASSES:list list is a | delimited list of the names of classes who treat this skill as a class-skill. list can also include ALL to indicate that all classes get this skill as a class-skill. If any class names in list are preceded by a !, e.g. CLASSES:!Geek then the class specified can never have this skill as a class-skill.
DEFINEsee DEFINE discussion below
KEYSTAT:stat where stat is the stat whose modifier applies to this skill. e.g. STR, INT, DEX, etc.
PRExxx tags The prestige requirement tags are described near the end of this file. These requirements must be met before the character can have access to this skill.
REQ indicates that this skill is added to all classes whether they add any ranks or not. This way it will show up on the character sheet without being selected specifically.
ROOT:name where name is the root of the skill that is displayed instead of all the varieties of this skill. For example, Craft() has many varieties but are treated as one skill, so they all have ROOT:Craft.
SYNERGY:list=minRank=bonus where list is a comma-delimited list of skill names. If the character has at least the indicated ranks (minRanks) in all the skills in the list then this skill receives the indicated synergy bonus. Situational synergies (like Use Rope and Escape Artist) cannot be implemented in this fashion.
BONUS:tag see the BONUS:tag description near the end of this file.
TYPE:value Where value is the type of skill it falls under. All Skill TYPE tags should use the skill's key attribute as the first type ("None" is an acceptable option). Multiple types can be specified using the period as a separator. (For example: TYPE:Wisdom.Force.Alter would apply to certain Star Wars skills, or TYPE:Charisma.Spy might apply to skills like Disguise, Bluff, etc.)
USEUNTRAINED:yn where yn is Y or N to indicate if this skill can be used untrained. Default is Y.
EXCLUSIVE:yn where yn is Y or N to indicate if this skill is exclusive (can be used by those for whom it is not a class-skill). Default is N.

SPECIALS.LST

$Name[tab]$Sub-Name where Name is the name of the Ability (e.g. Uncanny Dodge) and Sub-Name is the modifier name of the ability (e.g. Dex bonus to AC). When you add or subtract a level with (SPECIALS) tag on the SpecialAbility, PCGen will adjust the ability according to the order the ability is found in the SPECIALS.LST file. The first time you gain an ability, you get the first reference to it in the SPECIALS.LST file, the second time you get the second listing, and so on. Within the SPECIALS.LST file, additions to the different special abilities can be mixed, but the ordering within the file for each special ability is important.

SPELL.LST

The spell data files can use any of the global tags.

The name of the spell must be the first entry on each line. Other defined tags are:
CASTTIME:text where text indicates the amount of time it takes to cast this spell.
COMPS:list is a list of the spell components.
COST:number where number is the cost (in gp) of the spell components
CT:integer Where integer is a number that is the Casting Threshold of the spell for use in Sovereign Stone.
DURATION:text where text indicates the duration of the spell.
EFFECTS:text where text indicates the effect of the spell.
EFFECTTYPE:text where text indicates the effect-type of the spell.
ITEM:list eg. ITEM:Potion
LVLRANGE:minLvl|maxLvl Where minLvl is a number <= maxLvl. The two number for the level range of the spell for use in Wheel of Time.
DESCRIPTOR:list where list is a pipe-delimited list of descriptors that act like pseudo-school. specialist wizards who don't choose their specialty among schools can make selections from the descriptors.
ITEM:list eg. ITEM:Potion
PRExxx tags The prestige requirement tags are described near the end of this file. These requirements must be met before the character can have access to this skill.
RANGE:text where text indicates the Range of the spell.
SAVINFO:text where text indicates the Save Info of the spell.
SCHOOL:name where name is the name of the School to which this spell belongs.
SUBSCHOOL:name where name is the name of the Sub-School to which this spell belongs.
SPELLRES:text where text indicates the Spell Resistance of the spell.
VARIANTS:list where list is a pipe-delimited list
eg. VARIANTS:cold|electricity|fire|acid|sonic
XPCOST:number where number is the XP cost to cast the spell

WEAPONPROF.LST

The weaponprof data files can use any of the global tags.

$weapon_name$[tab] and then the following options:
BONUS:tag see the BONUS:tag description near the end of this file.
DEFINEsee DEFINE discussion below
HANDS:number where number is the minimum number of hands required to use these weapons. Default value is 1.
PRExxx tags The prestige requirement tags are described near the end of this file. These requirements must be met before the character can have access to this skill.
SIZE:value same as SIZE: for race. This determines if the weapon is light, one-handed or two-handed for the character's race
TYPE:value where value is SIMPLE,MARTIAL or EXOTIC

COLOR.LST

This file contains a list of colors. The second column contains any combination of E,H and S. E if it's a valid Eye color, H if it's a valid Hair color and S if it's a valid Skin color. When the Random button is clicked in the Traits tab, PCGen will determine which attributes are blank, and then randomly pick one from the appropriate list.

TRAIT.LST

This is a list of traits. When the Random button is clicked in the Traits tab, PCGen will pick items from this list to place in the blank Personality fields. I have two personality fields since most people have more than one in the list.

XP.LST

Used in the XP tracker, to convert CRs to XP reward amounts. The format is 17 lines, comma-delimited.
Each row is the xp for a different level - there are 17 rows because the first row combines levels 1-3 (so, row 1 corresponds to PC levels 1-3, row 2 = PC level 4, etc.)
Column 0 is the starting CR for that row - for that particular party level, anything less than the start counts as "too weak" of an encounter, and should be dealt with on an ad-hoc basis. (these are CRs 8 levels lower than the party level.)
Columns 1-9 contains enough data to extrapolate out the rest of the table - I could have left out a bunch of columns for the first few rows, but they stayed in to make coding things easier. The extrapolation from there is double the XP from CR - 2 (and if that's not there, double the xp from (CR - 2) - 2). This theoretically could continue forever, but there's a "too strong" limit put on XP rewards (8 levels higher than the PCs) to correspond with the "too weak" limit.

EQMODIFIER.LST

The eqmodifier data files can use any of the global tags.

$modifier_name$[tab] and then the following options:
ADDPROF:type.tag A new weapon proficiency based on the base item's required proficiency will be created and assigned to the weapon.
eg. ADDPROF:Exotic.Heavy
If this modifier were applied to Sword (Long) the resulting weapon proficiency would be Sword (Long/Heavy) and would have type Exotic. The size is determined by the weapon's size.
The above example generates an equivalent result to a WeaponProf.lst entry of:
Sword (Long/Heavy)[tab]TYPE:Exotic[tab]SIZE:M
ARMORTYPE:old_type|new_type This modifier will change the type of armor from old_type to new_type.
eg. ARMORTYPE:Medium|Light
ASSIGNTOALL:flag For double weapons, if flag = Y, then the modifier will be applied to both heads.
BONUS:tag
EQM|WEIGHTADD|mod adds mod to item's weight
EQM|WEIGHTDIV|div divides item weight by div
EQM|WEIGHTMULT|mult multiplies item weight by mult
COMBAT|AC|mod|TYPE=Armor.ENHANCEMENT adds mod to the armor's AC value
EQMARMOR|ACCHECK|mod modifies armor check of armor by mod
EQMARMOR|MAXDEX|mod modifies max dex of armor by mod
EQMARMOR|SPELLFAILURE|mod modifies armor spell failure by mod
EQMWEAPON|CRITRANGEADD|mod adds mod to the weapon's critical range
EQMWEAPON|CRITRANGEDOUBLE|times doubles the weapon's critical range times times
EQMWEAPON|DAMAGESIZE|mod modifies the weapon's apparent size for damage by mod steps
EQMWEAPON|RANGEADD|mod adds mod to the weapon's range
EQMWEAPON|RANGEMULT|mult multiplies weapon's range by mult
SKILL|%CHOICE|mod|TYPE=Circumstance adds mod to the first skill chosen with CHOOSE
see the BONUS:tag description near the end of this file.
CHOOSE:title|choice_list title will be displayed as the title on the Chooser. choice_list is a list of valid selections from which to choose.
eg. CHOOSE:Designated Foe|Aberrations|Animals|Beasts|Constructs|Dragons|Elementals
eg. CHOOSE:SKILL|TYPE=Craft
eg. CHOOSE:SKILL|TYPE=LASTCHOICE
COST:value The cost in gp to be applied after resizing.
Variables usable in formulas: BASECOST, CRITMULT, DMGDICE, DMGDIE, RANGE, SIZE, WT
COSTPRE:value The cost in gp to be applied before resizing.
See COST above for usable variables
DEFINEsee DEFINE discussion below
IGNORES:ignore_list A list of KEYs of modifiers that this modifier will cause to be ignored.
eg. IGNORES:ARMRMW,WEAPMW
ITYPE:type_list A list of the types this modifier will grant to the item.
eg. ITYPE:Magic.Ranged.Thrown
KEY:tag A unique descriptor for the modifier. Allows modifiers with the same name to function properly. Defaults to modifier_name.
eg. KEY:WEAPMW
NAMEOPT:option Option is one of NOLIST, NONAME, NORMAL
eg. with the modifier: Craft[tab]CHOOSE:SKILL|TYPE=CRAFT[tab]BONUS:SKILL|%CHOICE|2[tab]...
selecting "Craft (Armorsmithing)" in the chooser would normally generate "Craft (Craft (Armorsmithing))" as the name. Using the NOLIST option, the name generated would be "Craft", and the NONAME option would give a name of "Craft (Armorsmithing)"
PLUS:number Number is the plus bonus used in calculating magic item costs. See DMG p.180,184
PRExxx tags Prerequisite tags are described near the end of this file. These requirements must be met before the modifier can be assigned to the item.
REPLACES:replacement_list A list of the item KEYs this modifier replaces.
eg. Masterwork REPLACES:WEAP+1,WEAP+2,WEAP+3,WEAP+4,WEAP+5
TYPE:type_list A list of the types of items this modifier can be applied to.
eg. TYPE:Armor.Shield

NOTE: In the Item Customizer, when adding a modifier with BaseMaterial or MagicalEnhancement in its type, any other currently selected modifier with a similar type will be replaced.
VISIBLE:setting Yes --- always (default)
No --- never
Qualify --- only if base item qualifies

BONUSSTACKS.LST

This file contains a list of all bonuses which stack. BONUS: tags which do not have a TYPE=label parameter are assumed to stack.

Charts

Star Wars Charts

Reputation
For multi-class characters, sum them according to their levels in each class.
value formula
0 (PC Best) 3 + classlevel/2
1 (PC Middle High) 1 + classlevel/2
2 (PC Middle Low) classlevel/2
3 (PC Low) classlevel/3
4 (NPC High) (classlevel +1)/3
5 (NPC Low) classlevel/4
6 (Prestige Class High) +1 for every level not divisible by 3
7 (Prestige Class Low) classlevel/2
8 (Prestige Class v3) +1 / 2 levels
9 (Prestige Class v4) +1 for every level not divisible by 4
10 (Prestige Class v5) Progression: +1,+1,0,0,+1,+1,0,0,+1,+1
11 (Wheel of TIme) classlevel/5 + (classlevel+3)/5
In the Revised SW Rulebook, the Reputation starts at 0 and goes up from there where in the CRB, it started at 1.
Defense
If any armor is worn, the armor value replaces the Defense bonus due to class. Add to the Defense bonus (from class or armor) the Dexterity modifier and the race's natural AC. As with Reputation, for multi-class characters sum the values for each class. For all base classes the adjustment part of the Defense formula should be -2 (0 for Prestige classes). For every class beyond the first this adjustment is subtracted from the total.
value formula
0 (PC Best) 4 + classlevel/2
1 (PC Middle) 3 + classlevel/5. If that result>2 then add (3 + classlevel)/5.
2 (PC Low) 2 + classlevel/3
3 (NPC) classlevel/3
4 (Prestige Class) Same as 1 (PC Middle) except 2 points lower.
5 (Prestige Class v2) Same as 1 (PC Middle) except 1 point lower.
6 (Prestige Class v3) Same as 0 (PC High) except 1 point lower.
7 (Prestige Class v4) Same as 0 (PC High) except 2 points lower.
8 (Prestige Class v5) 2 + ( ( (classlevel + 1) + 3) / 3)
9 (Prestige Class v6) 2 + ( ( classlevel + 3) / 3) ; If classlevel is 8 then add 1 to the result.
10 (Prestige Class v7) 1 + ( (classlevel + 1) / 2)
11 (Prestige Class v8) 2 + ( (classlevel + 1) / 2)
12 (Prestige Class v9) Progression: +1,+2,+2,+2,+3,+3,+4,+4,+4,+5,+5,.......
The Following are for the new Revised SW Rulebook
20 2 + ((2 * (classlevel + 3)) / 5)
21 1 + ((2 * (classlevel + 3)) / 5)
22 1  + ( (classlevel + 1) / 2)
23 2 + ( (classlevel + 1) / 2)
24 ((2 * (classlevel + 3)) / 5)
25 1 + (classlevel / 2)
The Following are used in Spycraft
30 1 + (((classlevel - 1) * 3) / 5)
31 (classlevel + 4/3) * (3/4) ; if classlevel = 4 or 8 additional -1, if classlevel = 17 +1 additional
32 (2 * ((classlevel - 2) + 3)) / 5

Save and To Hit Charts

The following formulas are summed for all classes. To Reflex the Dexterity Mod is applied, to Will the Wisdom Mod is applied and to Fortitude the Constitution Mod is applied.
value formula
G (Good Save) 2+classlevel/2
M (Middle Save) 1 + classlevel/5 + (classlevel +3)/5
B (Bad Save) classlevel/3
G (Good Attack) classlevel
M (Middle Attack) (3 * classlevel)/4
B (Bad Attack) classlevel/2

Alignment Syntax

A string containing numbers which refer to valid alignments.

(0=LG, 1=LN, 2=LE, 3=NG, 4=TN, 5=NE, 6=CG, 7=CN, 8=CE)

PRExxx tags

This is the generic way to talk about the pre-requisite tags - the way you can restrict access to a class, feat, deity, domain or anything else in a lst file. The same PRExxx tags are used in every lst file to make crafting restrictions as easy as possible. These pre-requisite tags are often referred to as PRExxx tags because they all begin with the prefix "PRE" to make finding them easy.
Any PRExxx tag may be prefixed with a "!" character (i.e., !PRExxx) in order to invert the requirement logic. The PRExxx tag will be evaluated like normal, then the result inverted (by inverted, this means you CAN NOT have the things listed in this tag) when determining whether the prerequisite is passed or not.
Tag Description
PREALIGN:list is a comma-delimited list of the alignments that can use this item. 0-8 as above, 10 = Deity's alignment
eg. PREALIGN:3,6,9
There is also a limited qualification test (currently only VARDEFINED is supported)
eg. PREALIGN:[VARDEFINED=SuneLG=0],3,6,7
PREATT:number number indicates the minimum base attack bonus (e.g. PREATT:6)
PREUATT:number where number indicates the minimum unarmed base attack bonus
PRECLASS:list=level where list is a comma-delimited list of class names and level is the minimum level in the class this character must be. The character only needs to be at least this level in one of the classes listed. (e.g. PRECLASS:Fighter,Spellcaster=2 would mean character must have 2 levels in Fighter or in any spellcasting class)
PRECLASSLEVELMAX:list=level where list is a comma-delimited list of class names and level is the maximum level in the class this character can be. All of the listed classes must be under their maximum level to meet the requirements. (e.g. PRECLASSLEVELMAX:Fighter,Spellcaster=2 would mean character cannot have over 2 levels in Fighter or in any spellcasting class)
PREDEITY:list where list is either Y (the character must have a Deity chosen), N (the character must not have a deity chosen) or a comma-delimited list of deity names - the character must have chosen one of the deities in the list.
PREDEITYALIGN:list where list is a comma-delimited list of deity alignments that can use this item. 0-8 as above.
PREDEITYDOMAIN:num,list where num is the number of deity domains which need to be matched, and list is a comma-delimited list of domains. This tag applies to the domains of the PC's deity, and not the domains that the PC has selected for itself.
PREFEAT:number,featnames|CHECKMULT where num is the number of matches in this list of feats you need to find, and featnames is a comma-delimited list of feats.  For feats which can be taken multiple times you can specify the choices within that feat by using parentheses. To match on these choices use the % character.  You can also specify TYPE= to match on a type of a feat instead of a feat name. Include the |CHECKMULT portion if a feat can be counted more than once against the number of feats required (e.g. an Archmage requires 2 Spell Focus feats, so this is done with PREFEAT:2,Spell Focus|CHECKMULT without the CHECKMULT PCGen would only consider it one feat and the character could not meet the criteria.) The Fighter, Loremaster, Arcane Archer and Archmage are good examples of Prestige classes to see how to setup this pre-requisite
PREFORT:#, PREWILL:# , PREREFLEX:# the minimum adjusted save needed
PREFORTBASE:#, PREWILLBASE:#, PREREFBASE:# the minimum base save needed
PREGENDER:gender where gender is the Gender this character must be (M, Male, F or Female are valid choices)
PREHANDS[label]:num where [label] is EQ (equals), LTEQ (less than or equal to), LT (less than), GTEQ (greater than or equal to), GT (greater than) or NEQ (not equal to) and num is the number of hands required. For example if a feat requires more than 2 hands to be usable then it would be PREHANDSGT:2
PRELEVEL:num where num is the total number of levels a character must have.
PREITEM:number,list where list is a comma-delimited list of items the character must possess. The character must posses at least the indicated number of items matching the list criteria. list can also include TYPE=x where x is a particular type of equipment. (e.g., TYPE=Armor or TYPE=Wooden). If you require multiples of that type, you need to add TYPE=x for each instance in the comma delimited list. (i.e. PREITEM:2,TYPE=Armor,TYPE=Armor for two sets of armor.) Individual items can also be terminated with a "%" as a wildcard character.
PRELANG:number,list where list is a comma-delimited list of Languages. The character must know at least the indicated number of the languages in the list in order to qualify for the prestige class. You can specify ANY for the list and then you will pass this test if the character knows at least the specified number of languages.
PRELEVEL:# the minimum level needed regardless of class.
PRELEVELMAX:# where #  is the most levels a character can have.
PREMOVE:type=amount,type=amount etc. where type is a movement type (e.g. Walk, Fly) and amount is a number (e.g. 30, 20) and this test is passed if the character passes any one of these requirements.
PRERACE:list where list is a | delimited list of Race names. The character must be one of the listed races. You can also exclude races by encasing the name in []'s. e.g. PRERACE:[Elf (aquatic)]|Elf would exclude aquatic elves, but include all other sorts ( any other race whose name began with Elf).
PREREPUTATION:# Reputation of at least #.
PREREPUTATIONLTEQ:# Reputation no greater than #.
PRESIZE[label]:letter where [label] is EQ (equals), LTEQ (less than or equal to), LT (less than), GTEQ (greater than or equal to), GT (greater than) or NEQ (not equal to) and letter is the letter that represents the size of the comparator. For example, if a feat cannot be used by anyone less than Huge in size, then it would be PRESIZEGTEQ:H (must be greater than or equal to H (Huge) in size).
PRESKILL:num,skill_list=rank where num is the number of skills which need to be matched, and skill_list is a comma-delimited list of skill names that are required, and rank is a number indicating the minimum rank for these skills. Shadow Dancer and Loremaster are good examples that use skill pre-requisites. skill_list can also include TYPE.x where x is a skill of a particular type. (TYPE.Force or TYPE.Spy from the examples under the Skills.lst above).  If you require multiples of that type, you need to add TYPE.x for each instance in the comma delimited list. (i.e. PRESKILL:2,TYPE.Spy,TYPE.Spy=2 for two spy skills at level 2 each.)
PRESKILLMULT:num,skill_list=rank Similar to PRESKILL.
This tag will set a flag on the character. It only works as a prereq if the rank in the skill divided by the rank needed is equal to the flag.
The flag starts at 1, but goes up by one everytime the prereq is met.
So the first feat would require 'rank' in the skill, the second feat 'rank*2', and so on...
That would support the way regional feats are described in FR.

However for now this is merely a dummy tag that works like PRESKILL so we don't have to redesign the lst files when this tag gets working.

PRESKILLTOT:skill_list=# where skill_list is a comma-delimited list of skill names and # is the total number of ranks among those skills.  Can also include TYPE.X as part of the skill list as well.
PRESPELLCAST:label=value,label=value,etc. where label is either MEMORIZE (and then value can either be Y or N) or TYPE (and then value can be a | delimited list of acceptable spelltypes for this class). Basically each label=value pair is processed, and as the character's classes fail to meet that pair, the class is removed from the list. After all the label=value pairs have been processed, if the character has any classes remaining (meaning they meet all the requirements), then this prerequisite is met.
PRESPELLTYPE:type,num,minimum_level where type is a | delimited list of type of spells cast (use Arcane if only Arcane spells are applicable, use Any if any kind of spell is applicable, use Arcane|Divine if either Arcane or Divine spells are applicable, use two PRESPELLTYPE tags if more than one spell type is required), num is the minimum number of spells of this type that need to be found, and minimum_level is the minimum level of these spells which will be counted. Loremaster is a good example of this kind of pre-requisite
PRESPELLSCHOOL:school,num,minimum_level and PRESPELLSCHOOLSUB:school,num,minimum_level where school is the name of the school (or subschool) of spells counted, num is the number of spells which are required, and minimum_level is the minimum level of the spells that will be counted.  Loremaster is a good example of this pre-requisite
PRESPELL:num,list where num is the number of spells to be matched in the comma-delimited list of spells (e.g. PRESPELL:1,Magic Missile,Lightning Bolt would be true if the character had either Magic Missile or Lightning Bolt in their spell list.
PRESA:number,list where number is the number of specialabilities to be matched in the comma-delimited list of Special Ability names. (e.g. PRESA:1,Turn undead,Rebuke undead,Smite Evil would be true if the character had either Turn undead, Rebuke undead, or Smite Evil.)
PRESTAT:stat=min where stat is the name of the stat and min is the minimum value of that stat. (e.g. PRESTAT:INT=15 would mean that character must have a minimum INT of 15). The available stats are STR,DEX,CON,INT,WIS and CHA
PRETEMPLATE:template Where template is a '|' delimited list of template names.  If one of the template names in the list matches, then the prerequisite is met.
PRETEXTUNDOCUMENTED
PREVAR[cond]:var_name,value,var_name,value,... where var_name is something found either in DEFINE:var_name|value1 or BONUS:VAR|var_name|value2 and value is less than the calculated value for the requested variable after any bonuses are accounted for.
If present, [cond] must be one of GT, GTEQ, LT, LTEQ, EQ, NEQ.
NOTE: PREVAR: has been deprecated, use PREVARGT: instead.
PREWEAPONPROF:list where list is a comma-delimited list of weapon proficiencies the character must have. The list can include DEITYWEAPON to indicate that the weapon proficiency in question must be the chosen deity's favored weapon.
PREFORCEPTS:# where # is the number of Force Points that the character must have.
PREDSIDEPTS:# where # is the number of Darkside Points that the character must have.
RESTRICT:name,name,name This is a PRExxx tag even though it doesn't start with PRE. The character passes this pre-req if they have any one of the classes in list - no matter what level it is.
QUALIFY:String|String The opposite of PRExxx tags. A | deliminated string. Anything listed here will ignore all PRE tags and be a valid selection for the character. Currently only functional in template.lst
PRExxx:Q:data This is a variation on any PRE tag listed above. Adding a Q: between the tag and it's data will cause it to take precedence over the QUALIFY tag. Thus allowing QUALIFY to null out some but not all prereqs.
PRETYPE:type_list where type_list contains the prerequisite types.
eg. PRETYPE:Magic,Piercing|Slashing means that type must be Magic AND (Piercing OR Slashing).

EqModifier.lst Specifics

Use PRETYPE:EQMODTYPE=eqmodtype to test for any modifier with "eqmodtype" type or PRETYPE:EQMOD=specific_eqmod to test for a specific eqModifier.
You can also use conditionals.
eg. PRETYPE:.IF.TYPE=Armor.Shield.Weapon.THEN.EQMODTYPE=MagicalEnhancement
NOTE: .IF.TYPE= is the only condition currently supported for eqModifiers

Global Tags

There are a number of tags which are available in all data-files (excluding the pcc, classskill and classspell files). There are:

The prereq values can be any of the PRExxx tags.
Tag Description
BONUS: Bonus tags are used to modify numerical values within PCGen.
CCSKILL:field|field|field List of cross-class skills. field can be the name of a skill, .CLEAR to remove all cross-class skill references in this particular item, or TYPE=something to include all skills with a certain TYPE value.
CSKILL:field|field|field List of class skills. field can be the name of a skill, .CLEAR to remove all cross-class skill references in this particular item, or TYPE=something to include all skills with a certain TYPE value.
DR:value/type This indicates the damage resistance this feat/class/template/etc. bestows. To add to a kind of DR you can use BONUS:DR|type|x. For example, BONUS:DR|+1|5 would take an already existing DR +1/10 and make it +1/15.
DEFINE: This is a way to define a variable usable in any of the PREVARxxx tags and in any tags which allow formulas. When determining the value of the named variable, PCGen uses the DEFINE: for the variable that results in the highest value. To add to this base variable value, you can use BONUS:VAR|variablename|x.
LANGAUTO:field,field,field Automatically known languages. e.g. LANGAUTO:French,English,German You can also use LANGAUTO:ALL to include all languages and LANGAUTO:TYPE=Written to include all languages with a certain TYPE value (in this case, Written). In a template file you can also include .CLEARALL, .CLEARRACIAL and .CLEARTEMPLATE.
PRExxx tags Pre-Requisite, or Restriction tags are commonly referred to as PRExxx tags.
SA:list list is comma delimited. The list may contains a string in the form name%end|number (e.g. Sneak Attack +%d6|1 would have a name value of Sneak Attack + and end would have a value of d6 and number would be 1). For classes you gain the listed special abilities once advancing to the level on which the SA: tag is defined. For deities you can specify the special ability in the form of levelnum:ability e.g. SA:3:Good Kisser would mean that the character with this deity would gain the Good Kisser special ability once they achieved 3 total levels. For .MOD items you can have SA:.CLEAR which would clear all special abilities related to the original version of the item.
SPELL:name|times|type|name|times|type List of spell-like abilities. name is the name of the spell. times is an integer value of how many times per day this spell can be cast. type is what type of ability this is - for many creatures this is Innate. e.g. SPELL:Murphy's Law|3|Innate is a valid tag. All the SPELL: tag abilities are aggregated and displayed as 0-level spells for the race of the character, even if it's a special handaxe that has the SPELL: tag.
SR:formula This indicates the base spell resistance this feat/class/template/etc. bestows. e.g. SR:TL+10 would indicate a spell resistance of the character's total levels + 10. To add to the base spell resistance you can use BONUS:MISC|SR|x where x is the actual bonus to the spell resistance.
UDAM:damage_list e.g. UDAM:1,1d2,1d3,1d4,1d6,1d8,1d10,1d12,2d8 specified by size in the following order: Fine, Diminutive, Tiny, Small, Medium, Large, Huge, Gigantic, Colossal. In class data-files this must be present for each level, not just at the levels where the damage changes.
UMULT:multiplier e.g. UMULT:3 indicates that your unarmed critical hit multiplier is x3 (in class data-files it would be x3 at that level). This tag only works when a UDAM: tag is also present on the same level (in class data-files) or on the same object. PCGen cycles through all the UDAM: tags present on a character and picks the best one - it then picks the UMULT: tag value associated with that UDAM: tag to get the unarmed damage multiplier (which may or may not be the best one).
VISION: This tag can be used to add modes of vision to a character. The syntax is VISION:flag,type and you can specify as many VISION tags as you want and you can combine them like VISION:flag,type|flag,type|flag,type. The type field is in the form Darkvision (60'). The distance portion can be omitted as in Darkvision and you can use formulas for the distance as in Darkvision (10*TL+INT'). The flag field can be .SET, which means to remove all previous forms of vision from this object and use only this one, or .REPLACE, which means replace this form of vision with this distance only if this form of vision already existed, and .ADD which means add this form of vision and use this distance if it's greater than the previously given distance is less. You can omit the flag field and simply have VISION:x-ray (100')
WEAPONAUTO:prof1[prereq1]..[prereqn]|prof2|...|profn these are weapons with which the class is automatically proficient. This can include prof,sizelist to restrict what character sizes get this proficiency. e.g. Kama,SML would mean that only S(mall), M(edium) and L(arge) characters the the Kama proficiency added to their weapon prof list. The size letters possibilities are "FDTSMLHGC"

Globals Variables

There are a number of variables which PCGen already knows about and can be used in any of the datafiles. This section will list them.

BONUS:tag

It seems like the BONUS: tag will be undergoing a lot of additions, so I'll try to keep an outline of what all it can do and what kinds of things it affects. First - the files which can use the BONUS: tag:
class,lst, deity.lst, domain.lst, equipment.lst, equipmod.lst, feat.lst, race.lst and skill.lst.
There are 3 parts to a BONUS: tag
1. Type - general area of what it affects (if %LIST occurs here the list of items associated with the feat will be searched for a match).
2. Name - exactly what it affects (if Name is LIST then the list of items associated with the feat will be searched for a match).
3. bonus - applied to total if match for Type and Name is found - which can take several forms:
   1, -1, STR, -STR (negate the STR mod, so a -1 str mod would actually become 1, and +1 would become -1),
   STR+ (take the greater of 0 or the STR mod),
   1MAXSTR (take the greater of 1 or STR mod),
   STRMINDEX (take the lesser of STR or DEX mods).

The syntax is described like this: [- ][n/stat[SCORE][.BASE]][MIN/MAX][n/stat[SCORE][.BASE]/+].

Using stat.BASE (eg. CHA.BASE) returns the value of the stat modifier including racial and template modifiers, but not modifiers from equipment, feats or other sources (essentially, any modifiers from the BONUS tag). Using statSCORE.BASE (eg. STRSCORE.BASE) returns the value of the stat without any BONUS modifiers.
The tag combinations currently handled (and where if not the whole list of lst files)
At the end of the BONUS: tag you can include some additional tags to restrict the bonuses. You can do this via the PRExxx tags (exactly as detailed in the section above). For example: BONUS:STAT|STR|3|PRERACE:Gnome|PREALIGN:0 would add 3 to a character's strength score if they were a Lawful Good (PREALIGN:0) Gnome. You can include any number of PRExxx tags, all separated with the | character.
In addition to associating PRExxx tags with BONUS: tags, you can also specify the "TYPE" of the bonus via TYPE=name. Only one TYPE= label per BONUS: tag is allowed. Thus BONUS:STAT|STR|1|PREALIGN:4|TYPE=Morale would mean that the character would get a +1 to Strength due to Morale if his alignment were TN. The bonuses which can stack are defined by the contents of the system\bonusstacks.lst file. BONUS: tags which do not have a TYPE=label parameter are assumed to stack.

NOTE: BONUS: tags only effect numbers... nothing else!

Type Sub-Type Notes
CHECKS Comma delimited list of: Fortitude Reflex Willpower All files.
CLASS Comma delimited list of: DEFENSE REPUTATION DEFENSE in class.lst and feat.lst only. REPUTATION in race, equipment, class and feat.lst.
COMBAT Initiative,TOHIT-PRIMARY (bonus for primary weapon only), TOHIT-SECONDARY, SECONDARYATTCKS (how many attacks the secondary weapon gets if a primary weapon is equipped) All files.
COMBAT AC
e.g. BONUS:COMBAT|AC|2|TYPE=Enhancement
All files - only the TYPE that are in bonusstacks.lst stack with one another.
COMBAT ATTACKS (# of primary hand attacks), SECONDARYATTACKS (# of off-hand attacks) All files.
COMBAT SECONDARYDAMAGE (Bonus to Off-hand Damage) All files.
CCSKILL LIST where the bonus applies to all cross-class skills selected for this feat All files.
CCSKILL skillname,skillname or STAT=label (where label is STR, DEX, CON, INT, WIS or CHA and the bonus would apply to all cross-class skills based on that stat) All files.
CCSKILL TYPE=label (where label is any possible skill type, such as Knowledge, Craft, Profession, etc.) where the bonus applies to all cross-class skills of the type selected for this feat All files.
CSKILL LIST where the bonus applies to all class skills selected for this feat All files.
CSKILL skillname,skillname or STAT=label (where label is STR, DEX, CON, INT, WIS or CHA and the bonus would apply to all class skills based on that stat) All files.
CSKILL TYPE=label (where label is any possible skill type, such as Knowledge, Craft, Profession, etc.) where the bonus applies to all class skills of the type selected for this feat All files.
DAMAGE TYPE=type where type is a type of weapon (like MELEE or SLASHING) All files.
DOMAIN NUMBER class.lst, feat.lst - adds to number of domains character has access to.
DR type all files - adds to a type of Damage Reduction. e.g. BONUS:DR|2|4 would add 4 points to your +2 damage reduction
ESIZE NUMBER
ESIZE only effects the AC and HIDE check bonuses. It does not effect str, carry capacity, etc.
For example: BONUS:ESIZE|NUMBER|-1 would decrease your characters size by one category (Small to Tiny or Medium to Small) for AC and HIDE checks calculations.
Class Files.
SIZEMOD NUMBER
SIZEMOD effects all size related attributes (including str, carry capacity, AC, HIDE, etc)
For example: BONUS:SIZEMOD|NUMBER|-1 would decrease your characters size by one category (Small to Tiny or Medium to Small)
BONUS:SIZEMOD|NUMBER|+2 would increase your characters size by two categories (Medium to Huge)
Template, Equipment and Class Files.
HD MIN (adds to the minimum roll for a hit die) or MAX (adds to the maximum roll for a hit die). (BONUS:HD|MIN|2 for a d8 roll would mean the range would be 3-8, BONUS:HD|MAX|6 on the same d8 would make it a d14.)
HP CURRENTMAX or WOUNDPOINTS All files.
LANGUAGES NUMBER All Files. Adds to the number of languages the character can learn.
MISC SPELLFAILURE all files - affects total spell failure percent
MISC SR all files - adds to spell resistance
MOVE one of LIGHT,LIGHTMEDIUM,LIGHTMEDIUMHEAVY or LIGHTMEDIUMHEAVYOVERLOAD
to indicate the largest array of loads or armors for which the bonus applies
All files.
PCLEVEL name - where name is the class which receives the bonus number of levels in terms of spellcasting ability. class.lst only.
RANGEADD PROJECTILE, THROWN
eg. RANGEADD|PROJECTILE|10 adds 10 ft. to the range increment of projectile weapons
eg. RANGEADD|THROWN|20 adds 20 ft. to the range increment of thrown weapons
NOTE: RANGEADD is applied before RANGEMULT
All files.
RANGEMULT PROJECTILE, THROWN
eg. RANGEMULT|PROJECTILE|50 adds 50 percent to the range increment of projectile weapons
eg. RANGEMULT|THROWN|100 adds 100 percent to the range increment of thrown weapons (i.e. doubles it)
All files.
POSTRANGEADD PROJECTILE, THROWN
eg. POSTRANGEADD|PROJECTILE|10 adds 10 ft. to the range increment of projectile weapons
eg. POSTRANGEADD|THROWN|20 adds 20 ft. to the range increment of thrown weapons
NOTE: POSTRANGEADD is applied after RANGEMULT
All files.
SKILL LIST where the bonus applies to all skills selected for this feat All files.
SKILL skillname,skillname or STAT=label (where label is STR, DEX, CON, INT, WIS or CHA and the bonus would apply to all skills based on that stat) All files.
SKILL TYPE=label (where label is any possible skill type, such as Knowledge, Craft, Profession, etc.) where the bonus applies to all skills of the type selected for this feat All files.
SKILLRANK skillname,skillname
where skillname is the name of the skill(s) for which the bonus ranks are accrued.
All files.
SKILLMAXRANK skillname,skillname
where skillname is the name of the skill(s) whose maximum rank is adjusted by the bonus.
All files.
SKILLPOINTS NUMBER
adds to the number of skill ranks gained when the character gains a level. Not retroactive.
All files.
SPELLCAST and SPELLKNOWN TYPE=type;LEVEL=num or CLASS=name;LEVEL=num
This means that BONUS:SPELLCAST|CLASS=Wizard;LEVEL=1|1 means the character can cast 1 more level 1 Wizard spells each day. If combined with the CHOOSE:tag (see discussion about this after this table) you can specify CLASS=%;LEVEL=% and the appropriate values will be inserted. Additionally, at the end of the mod for the BONUS tag you can append .LOCK which means that the ending value for the bonus is locked in place: so STR.LOCK would be calculated an converted to an actual number and stored that way instead of letting the value fluctuate as the character's STR bonus changes.
All files.
SPELLCASTMULT TYPE=type;LEVEL=num or CLASS=name;LEVEL=num
This means that BONUS:SPELLCASTMULT|TYPE=Arcane;LEVEL=2|2 means the character can cast twice as many level 2 Arcane spells each day.
All files.
SPELL DC All files.
STAT one of STR,DEX,CON,INT,WIS,CHA (you can append a + to any of these to indicate positive only values) or BASESPELLSTAT (you get the bonus on the associated class' base spell stat - so INT for Wizards, etc. only with regards to getting bonus spells and determining DCs) or CAST=label (label is STR, DEX, CON, INT, WIS or CHA) which would add to the specified stat to determine bonus spells. All files.
TOHIT TOHIT All files.
VAR variablename All Files - where variablename is something that has been defined in the DEFINE: tag. see DEFINE discussion below.
VISION type (e.g. Darkvision) All files. Adds specified bonus range to type of vision only if the character has that type of vision.
WEAPON DAMAGE,TOHIT All files.
WEAPONPROF=profname where profname is the proficiency with which the bonus occurs DAMAGE,TOHIT,CRITMULTADD (add to crit multiplier), CRITRANGEDOUBLE (multiples of crit range), CRITRANGEADD (add to crit range) All files.

Special CHOOSE: tag which can be used with the ADD:LIST tag in class.lst and BONUS:SPELLCAST and BONUS:SPELLKNOWN
The syntax works like this:
CHOOSE:SPELLLEVEL|num|label|min_level|max_level
SPELLLEVEL is the only one that works with ADD:LIST currently.
num is the number of choices the character can make from the list. This can be a number or a Stat(STR, DEX, etc.).
label is either CLASS=name (e.g. CLASS=Wizard) or TYPE=name (TYPE=Arcane)
min_level is a number indicating the lowest level of spells from the class(es) specified to be included in the list
max_level is a number indicate the highest level of spell - or it's MAXLEVEL to indicate the maximum level of spells a character of that level in the selected class can cast. To either a number or MAXLEVEL you can append a .A to indicate that only 1 of the highest-level spell indicated can be chosen. e.g. 2.A would mean only 1 2nd level spell.
You can include multiple combinations of the |label|min_level|max_level portions, so
CHOOSE:SPELLLEVEL|2|CLASS=Wizard|0|MAXLEVEL|TYPE=Divine|1|3
would present a list of the character's castable Wizard levels of spells (e.g. Wizard 0 Wizard 1 Wizard 2 for a 5th level Wizard) and Cleric 1 Cleric 2 Cleric 3 if the character had Cleric as a class.

CHOOSE:COUNT=1|STAT|Con[tab]BONUS:HP|CURRENTMAX|(%VAR-CON)
will allow the selection of a stat (excluding constitution) and then use that stat modifier to adjust the HP total. %VAR is replaced with the value of the stat modifier before calculations.

DEFINE|variablename|formula
For example: Clerics have DEFINE:Turn Undead|3+CHA
Clerics use this to determine how many times they can turn undead (3 + their charisma modifier). You can define any variable you want - if it's defined more than once where there's a difference in the formula (say the Cleric adds a Undead Hunter class that can turn 5+CHA, or DEFINE:Turn Undead|5+CHA then the variable Turn Undead is defined for that character twice. The one that's used depends on the character sheet token to output the result.
How can I get the BONUS: tag to work with DEFINE: variables?
BONUS:VAR|Turn Undead|3 is used with the Extra Turning feat in phbfeat.lst, and it adds 3 to the DEFINE:Turn Undead|3+CHA formula. So BONUS:VAR|variablename|formula adds to DEFINE:variablename|formula2.

What options do I have with the formula?
Do not use any spaces. You can use parentheses (nest them too!), + for add, - for minus, / for divide and * for multiply. You can also use STR, DEX, CON, INT, WIS and CHA for the appropriate stat's modifier (as in the 3+CHA example). In the class.lst files you can use CLASS=name to get a 1 if they have the class or 0 if not, CL=name to represent that class's level, and in any file you can use TL to represent the character's total level. Any file can use SIZE to refer to their size (Fine=0, Dim=1, Tiny=2, Small=3, Medium=4, Large=5, Huge=6, Gargantuan=7 and Collosal=8), and MOVEBASE to refer to their racial base movement rate.

Can I use any conditional logic?
Glad you asked! Yes... you can use IF THEN ELSE logic. e.g. BONUS:STAT|STR|.IF.formula1.label.formula2.THEN.formula3.ELSE.formula4 would compare the results of formula1 and formula2 using the label, which can be one of EQ (equals), NEQ (not equals), LTEQ (less than equals to), LT (less than), GT (greater than) or GTEQ (greater than equal to), and if it's true then return a value of formula 3, otherwise return a value of formula4. So BONUS:STAT|STR|.IF.TL.GTEQ.4.THEN.5.ELSE.1 would mean that if a character has 5 or more total levels, then they would get a +5 to their strength, otherwise they get a +1.

VARDEFINED:varname is useful for adding to a variable only if it has been DEFINE'd. As in:
BONUS:VAR|Sneak Attack|.IF.VARDEFINED:Sneak Attack.EQ.0.THEN.0.ELSE.(TL/5)
which would add 1 to the Sneak Attack dice for every 5 character levels.

Can I apply any restrictions to the bonus formulas?
Yup - after the BONUS: tag's 3 fields (type, subtype, mod) you can attach any number of PRExxx tags. This way it works just like it does for prestige classes, or prereqs for feats, etc. e.g. BONUS:SKILL|Climb|4|PREFEAT:1,Alertness|PRERACE:Halfling would give the character a +4 on their Climb skill if they were a Halfling with the Alertness feat.

Are there any additional operators allowed in the formula?
If you have formula_1MINformula_2 the result will be the lesser of the two, same if you have formula_1MAXformula_2 you'll get the max of the two. At the end of the formula you can include .INTVAL to truncate any decimals at that point - so (3+2)/2.INTVAL will result in 2.5 which will be truncated to 2.

What order are the math operations done in?
Innermost parentheses are done first, but once all parentheses have been evaluations, everything is done from left to right, so 3+4/2 equals 3.5 since it's basically 7/2. If you really want natural ordering (* and / done first) you can specify 3+(4/2).

Are there any 'special' defined variables?
So far there is: BAB, REFLEXBASE, WILLBASE and FORTBASE. To use a formula instead of the ones defined by "G", "M" or "B", use an "O" and then DEFINE: the formula. e.g. If a class gets +2 to hit per level, you could use "O" for the attack rate, and then DEFINE:BAB|2*CL to get the classes base attack bonus.

How can I display the results of the formula in a character sheet?
Use a token like |VAR.variablename[.INTVAL][.MINVAL]|. [.INTVAL] means that .INTVAL is an optional argument, which displays the result with no decimal points (as an integer), default is with one decimal place of precision. .MINVAL should be included if instead of the default maximum of multiple defines, you want the minimum. For the Cleric/Undead Hunter class above, |VAR.Turn Undead| would normally return 5.0 (if the CHA bonus was 0), |VAR.Turn Undead.MINVAL.INTVAL| would return 3.

Sharing lst files

One of my hopes is that users will change lst files for their own purposes. If they add something they really like, or think others would like to have access to (e.g. Prestige classes, races, feats, etc.) they can post their modified lst files to www.yahoogroups.com/group/pcgen. There's a growing list of these campaign-oriented lst files growing in the Campaign+Central folder. Check it out - and make your own additions! If you notice any errors or omissions in any existing lst files, you can go ahead and report it to the yahoogroup, but it would also be nice if you could fix it and upload the fixed file to the Campaign+Central folder so others can take advantage of your fix. I like putting users to work. :)

Over-riding existing objects

Suppose you have a house rule that modifies something... a common example is a house rule where Skill Focus grants a +3 instead of a +2 to the chosen skills. Instead of having to create your own Skill Focus feat, you can modify the existing one. Create a source file (pcc) and place it in a new directory (must be a subdirectory of PCGen's data directory so PCGen will find it and list it when you launch PCGen). We'll call our example file house.pcc and place it in a directory named house which is a subdirectory of data. In it we will place the following lines:
CAMPAIGN:My House Rules
RANK:9
GAME:DnD
SOURCE:myself
FEAT:housefeat.lst

Then in the same directory create a file named housefeat.lst which contains the following:
Skill Focus.MOD[tab]BONUS:SKILL|LIST|1
and that will effectively tell PCGen to modify the existing Skill Focus feat and simply add a BONUS:SKILL|LIST|1 to it. Since the existing one already grants a +2, this is an additional +1 adding to a total of +3.
What files is this available in, you ask? Good question! Just about all of them (class, deity, domain, equipment, equipmentmodifier, template, feat, language, skill, race, spell and weaponprof. You can just include the tags you want to override - though there are 2 important caveats:
1. in all files you do not specify the required fields (the first few that don't have tags)
2. tags that can be included any number of times (like BONUS: ADD: FEAT: etc.) you can't remove previously existing entries - you can only add new ones.

Special Case: .CLEAR will empty out the old entries for that object. It is currently supported as PRE:.CLEAR (NOT PRExxx) , LANGAUTO:.CLEAR and SA:.CLEAR for races, TEMPLATE for templates, and KNOWNSPELLS: for classes (but as CLEAR instead of .CLEAR). Templates also has a special .CLEARALL, .CLEARTEMPLATES, and .CLEARRACIAL in it's LANGAUTO tag.
Example:
Elf.MOD    SA:.Clear    SA:Pixie Dust 2/day    LANGAUTO:.CLEAR    LANGAUTO:Pixie
Creates and elf race without any of the old special abilities or languages which has pixie dust 2/day and speaks Pixie.