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 campaign (or book) it came from. e.g. phbclass.lst contains all the info on the classes detailed in the Players Handbook. 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.

CLASS.LST
Each class begins with
CLASS:$class_name$[tab]$alignments$[tab]$hitdie$[tab]$skillpoints$[tab]$feats$[tab]$spellstat$[tab]$spelltype$[tab] $attackrate$[tab]$fortsave$[tab]$reflexsave$[tab]$willsave$
where the $classname$ is the name of the class as it appears in the picklists within PCGen.
alignments is a string of numbers for which alignments are valid for this class (0=LG, 1=LN, 2=LE, 3=NG, 4=TN, 5=NE, 6=CG, 7=CN, 8=CE) If D is in this list then the class' alignment must match the chosen deity's ALIGN:tag (see deity.lst).
hit die is usually 4,6,8,10 or 12.
skill points is how many skill points the class gets per level.
feats is how many extra feats the class gets at first level.
spellcasters have a spellstat of CHA for Bards and Sorcerers, INT for Wizards and WIS for Druids, Clerics, Paladins and Rangers. spelltype is Arcane for Wizards and Sorcerors, Divine for the others. Both of these options are None for non-spellcasters.
attackrate is G for Good, M for Medium or B for Bad based on the base attack bonus. You can also use O (capital-O) in combination with a DEFINE:BAB|formula (see the DEFINE: discussion near the bottom of this document).
progression. See the formulas for these near the bottom of this documentation file.
fortsave, reflexsave and willsave are G(ood), M(edium) or B(ad) based upon the save progression. See the formulas for these near the bottom of this documentation file.
On that first line other options are available in the form of keyword:value(,value,value)
keywords available are:
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)
LANGAUTO:list these are languages the class automatically knows
LANGBONUS:list these are languages from which the class can pick one to know
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.
WEAPONAUTO:list these are weapons with which the class is automatically proficient
WEAPONBONUS:list these are weapons from which the class can pick one proficiency
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!
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.
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). Adjustment is what adjustment there is if this isn't the first class the character 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.
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.
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.
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).
PRExxx:tag see the PRExxx:tag description near the end of this section
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).
BONUS:tag see the BONUS:tag description near the end of this section.

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)
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.
SA:list upon gaining this level the character gains these special abilities (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). If your character already has this ability, then the number is added to your value, otherwise the special ability is added to your character with an initial value of number (in this example, 1, so Sneak Attack +1d6). The Shadow Dancer is a good example of this, as is the Rogue, Assassin and Bard.
SA:name(SPECIALS) This is listed separately, because there are some Special Abilities which may stack from Class to Class (e.g. Rogue, Barbarian Uncanny Dodge). These Special Abilities must have the same name and the sub-name (e.g. Dex bonus to AC) will appear in the SPECIALS.LST file. the (SPECIALS) tag tells PCGen to look for the appropriate ability in the SPECIALS.LST file.
SUBSA:list list of special abilities obsoleted by new special abilities (comma delimited)
CAST:list number of spells castable for each level per day (0 assumed for levels not given)
KNOWN:list number of spells knowable for each level (0 assumed for levels not given)
ADD:CLASSSKILLS(value)|number where value is type of skills you want to add from (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 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 campaign selection languages, and any selections made are added to the 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. 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.
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
$deity_name$[tab]$list_of_domains$[tab]$alignments$[tab]$title$[tab]$holyitem$[tab]$preferredweapon$
The alignments are exactly as they are for the class.lst file.
The holy item and preferred weapons fields are optional. The Preferred Weapon field only needs to be supplied if the deity includes a domain that has any powers or feats related to the weapon (e.g. War domain) - it can be a pipe delimited list of weapon proficiencies.
Optional arguments include:
ALIGN:string where string is the alignment of the deity
BONUS:tag see the BONUS:tag description near the end of this section.
SA:level:description where level is a number indicating the total level of the character at which they gain the ability. The description will be displayed in the Abilities tab and on the character sheet with the other special abilities.
PRExxx:tag see the PRExxx:tag description near the end of this section.

DOMAIN.LST
$domain_name$[tab]$grantedpower$
each domain entry is one line, and beyond the grantedpower can be other keyword:value
pairs separated by tabs as follows:
SKILL:list these skills are considered class-skills when purchasing skills for the cleric (comma delimited)
FEAT:list these feats are gained when choosing this domain (comma delimited)
SPELL:list these spells are gained when choosing this domain and are added to the cleric's first level spell list.
PRExxx:tag see the PRExxx:tag description near the end of this section.
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.)

EQUIPMENT.LST
The first column is the item's name. The other fields are all optional keyword:value pairs separated by tabs:
Cost:number where number is a value (in gp) of the item
AC:number 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
PRExxx:tag see the PRExxx:tag description near the end of this section.
BONUS:tag see the BONUS:tag description near the end of this file.
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)
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)
MAXDEX:number where number is the maximum dex modifier to AC this item allows.
MOVE:medium,small where medium is the movement rate for medium sized characters and small is the movement rate for small characters.
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)
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.
TYPE:subtype.subtype.etc where subtype is an identifier of the different types this item is. The subtypes 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. Check below for proper syntax for TYPE:tags.
WT:number where number is the weight in pounds of the item.

FEAT.LST
each feat takes one line and the first field must be the feat's name. Beyond that each keyword:value pair can be any of the following separated by tabs:
ADD:type|subtype where type is WEAPONPROFS (only kind available now) and subtype is one of SIMPLE, MARTIAL or EXOTIC to indicate what kind of weaponprof the character can add upon gaining this feat.
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).
CHOOSE:type|value where type is one of HP (hit points), WEAPONFOCUS (Weapon Focus Feats, SPELLCLASSES (spellcasting classes of character), SCHOOLS (available Schools of magic), SPELLLIST (known spells), SKILLS (known skills), SKILLLIST (choose any Skill to make it a class skill), CCSKILLLIST (choose skills to become cross-class skills), NONCLASSSKILLLIST (choose cross-class skills to become class skills), SKILLNAMED, EXOTIC (Exotic weapon proficiencies) or MARTIAL (Martial weapon proficiencies). value must exist (use a default value of 1 if nothing is applicable) but currently only used with the SKILLLIST, CCSKILLLIST and NONCLASSSKILLLIST type to indicate what list of SKILLS the character can choose from to become a Class Skill, and with SKILLSNAMED to indicate which skills are applicable (in a | delimited list you can specify a skill like Climb or you can use a wildcard like Craft% to get all the skills that start with the name Craft).
CSKILL:list where list is a | delimited list of Skills that are purchasable as Class Skills. You can also specify something like Knowledge% to indicate that all Skills that start with Knowledge are class skills.
CCSKILL:list where list is a | delimited list of Skills that are purchasable as Cross-Class Skills. You can also specify something like Knowledge% to indicate that all Skills that start with Knowledge are cross-class skills.
DESC:value the description of the feat as it appears in the Feats tab of PCGen
MULT:value where value is YES or NO (default = NO). Can this feat be taken multiple times?
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.
STACK:value where value is YES or NO (default = NO). Does this feat stack?
TYPE:value what kind of feat is it (used in ADD:FEAT(TYPE=name) in the class.lst file).
PRExxx:tag see the PRExxx:tag description near the end of this section.
BONUS:tag see the BONUS:tag description near the end of this file.

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. You 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
each race takes one line. The first 10 fields must be exactly so:
The first fields is the race's name.
the next 6 fields are the race's stat modifiers in this order: STR, DEX, CON, INT, WIS, CHA
the next field is the preferred class.
the next field is the number of bonus feats the race gets at first level (1 for humans).
the next field is the number of bonus skill points the race gets each level (1 for humans).
Except for HEIGHT, WEIGHT and AGE, the following fields are all optional:
AC:number where number is the base AC for this race. The default value is 10.
AGE:min:dice:sides:dice:sides:dice:sides the minimum age for the race and the number of dice and sides used - the first dice:sides pair is used for Barbarian, Rogue and Sorcerer. The second pair is used for Bard, Fighter, Paladin and Ranger. The last pair is used for Cleric, Druid, Monk and Wizard
AL:list of alignments (e.g. Lawful Good|Lawful Neutral) 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.
CSKILL:list where list is a | delimited list of skills which are considered class skills.
FEAT:list where list is a | delimited list of feats the race gets.
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
INIT:number where number is the initiative mod for this race
LANGAUTO:list list of automatically known languages.
LANGBONUS:list list from which the character's intelligence modifier's worth of languages can be chosen. If list is ALL then the race can select from all languages available in the selected campaigns.
MOVE:number the movement rate in feet for 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.
SA:list list of special abilities for this race
SIZE:value One of these values (T,F,D,S,M,L,G,H,C)
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
SKILL:list=bonus list of skills for which the character gets the indicated bonus
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)
PRExxx:tag see the PRExxx:tag description near the end of this section.
BONUS:tag see the BONUS:tag description near the end of this file.

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
$skill_name$[tab]$key_stat$[tab]$class_lst$[tab]$untrained$[tab]$exclusive$
where key_stat is STR,DEX,CON,INT,WIS or CHA upon which the skill is based.
class_list is an obsolete field and should always be NONE
untrained Y or N. Y means the skill can be used by those not trained in it.
exclusive Y or N. Y means only those in the class_list can use the skill, others cannot.
The other fields are all optional and are the keyword:value pairs such as:
ACHECK:label where label indicates when the Armor Check penalties associated with any equipped armor applies (Y for Yes [always], N for Never, or P for only when not proficient with the armor).
CHOOSE:Language(list) where list is a comma delimited list of languages the character can choose from. I plan on expanding the number of choices from just Languages at some point. Currently this is just for the Speak Language 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.
PRExxx:tag see the PRExxx:tag description near the end of this section.
BONUS:tag see the BONUS:tag description near the end of this file.

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
$spell_name$[tab]$school$[tab]$subschool$[tab]$class_levels$[tab]$components$[tab]$castingtime$[tab]$range$[tab]$effect$[tab]$effect_type$[tab]$duration$[tab]$save_info$[tab]$SR$
e.g.
Animate Dead    Necromancy    None    NONE    V S M    1 action     Touch    corpses    None     Instantaneous    None    No
where spell_name is the name of the spell
school is the school of the spell (found in school.lst)
subschool is the subschool of the spell (creation, charm, etc) or None
class_levels is a space delimited listing of classes/domains and levels. This field has been rendered obsolete with the classspell.lst file, so this field should always be NONE.
components is a space delimited listing of component types (Verbal, Material, Somatic,Focus, Divine Focus)
castingtime is the time it takes to cast the spell
range is the range of the spell (e.g Touch, Close, Medium, etc.)
effect is the effect of the spell
effect_type is the kind of effect the spell has
duration is how long the spell lasts
save_info is what kind of save is allowed
SR is whether Spell Resistance is applicable.
There is one optional argument:
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.

WEAPONPROF.LST
$weapon_name$[tab] and then the following options:
HANDS:number where number is the minimum number of hands required to use these weapons. Default value is 1.
SIZE:value same as SIZE: for race. This determines if the weapon is light, one-handed or two-handed for the character's race
PRExxx:tag see the PRExxx:tag description near the end of this section.
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.

PRExxx: tags.
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,Rogue=2 would mean character must have 2 levels in Fighter or in Rogue) Spellcaster is a valid class.
PREDEITY:list where list is either Y (the character must have a Deity chosen), Y (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.
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
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
PREGENDER:gender where gender is the Gender this character must be (M, Male, F or Female are valid choices)
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).
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
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, use), 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:list where list is a comma delimited list of Special Ability names. e.g. PRESA:Turn or rebuke undead,Smite Evil
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.
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't deity's favored weapon.
PREVAR:variablename,value,variablename,value,etc. where variablename is something found either in DEFINE:variablename|value1 or BONUS:VAR|variablename|value2 and value is less than the calculated value for the requested variable after any bonuses are accounted for.
PREITEM:list where list is a comma delimited list of items the character must possess.
PREFORT:# , PREWILL:# , PREREFLEX:# where # is the minimum adjusted save needed.
PREFORTBASE:# , PREWILLBASE:# , PREREFBASE:# where # is the minimum base save needed.
PREALIGN:# where # is the alignment the character must possess
PRELEVEL:# where # is the minimum character level the character must be.
   

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:
deity.lst, domain.lst, equipment.lst, feat.lst and race.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][MIN/MAX][n/stat/+].
The tag combinations currently handled (and where if not the whole list of lst files)
CHECKS Fortitude,Reflex,Willpower All files
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 All files - only if armor not worn.
DOMAIN NUMBER class.lst, feat.lst - adds to number of domains character has access to.
HP CURRENTMAX,WOUNDPOINTS All files.
MISC SPELLFAIL all files - affects total spell failure percent
MOVE one of LIGHT,LIGHTMEDIUM,LIGHTMEDIUMHEAVY or LIGHTMEDIUMHEAVYOVERLOAD to indicate the largest array of loads or armors for which the bonus applies All files
SKILL LIST where the bonus applies to all skills selected for this feat All files.
SKILL skillname,skillname 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
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) All files
TOHIT TOHIT All Files - gives bonus to hit with whatever weapon is being used.
VAR variablename All Files - where variablename is something that has been defined in the DEFINE: tag. see DEFINE discussion below.
WEAPON DAMAGE,TOHIT All files
WEAPONPROF=profname where profname is the proficiency with which the bonus occurs DAMAGE,TOHIT,CRITMULTADD (add to crit multiplier), CRITRANGEMULT (multiples of crit range), CRITRANGEADD (add to crit range) All files

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

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

TYPE:tag format:

TYPE:subtype1.subtype2.subtype3.etc

If you have more than one of the same subtype just put them next to each other I.e. TYPE:subtype1.subtype2.subtype3.subtype3.subtype4 You may also leave a subtype blank I.e. TYPE:subtype1.subtype3

Weapons Follow this order:
subtype1 Weapon
subtype2 Simple,Martial,Exotic
subtype3 Melee,Ranged
subtype4 Unarmed,Tiny,Small,Medium,Large,Huge
subtype5 Bludgeoning,Piercing,Slashing
subtype6 Masterwork,Double,Monk,Futuristic,Firearms,etc

Armor Follow this order:
subtype1 Armor,Shield
subtype2 Light,Medium,Heavy
subtype3 Extra,Suit
subtype4 Masterwork,Monk,Futuristic,Firearms,etc.

If there is a weapon or armor that has types of both, i.e. armor spikes, then just either one or the other first with there respective subtypes. I.e. TYPE:Armor.Extra.Weapon.Martial.Melee.Piercing

Mundane items Follow this order:
subtype1 Goods,Services
subtype2 Gear,Class,Clothing,Sustenance,Mounts,Alchemy,Gem
subtype3 Masterwork,Monk,Futuristic,Firearms,etc

Magic items Follow this order:
subtype1 Magic
subtype2 Wondrous,Ring,Potion,Armor,Weapon,Rod,Scroll,Staff,Wand
subtype3 Clothing,Books,Instrument,Artifact,etc

For magic arms and armor, after the subtype Armor or Weapon enter the subtypes relevant to them, and then continue with the Magic subtypes.

Psionics Follow this order:
subtype1 Psionic
subtype2 Armor,Weapon,Capacitor,Dorjes,Stone,Tattoo,Universal
subtype3 Masterwork,Monk,Futuristic,Firearms,etc

Try to avoid multiple word subtypes, if you have to have both words, break them up into two subtypes or combine them into one word.

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

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 charactersheet 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 multiple. 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 CL to represent that class's level, and in any file you can use TL to represent the character's total level.
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?
The only one so far is BAB. If a class has it's attack rate set to O (capital-O) instead of G, M or B, then PCGen will assume that class has a DEFINE:BAB|formula which it should evaluate 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!