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