Lesson #5: .lst - Races (part 3)

By Professor Chris Chandler (Barak).

File(s) Covered: *races.lst

Tags used:


This lesson will cover Special Attack and Special Qualities and all the tags that are involved in putting them into PCGen.  As with most things in PCGen there are a number of different ways to accomplish the same thing.  We will try and cover the preferred methods and simply note that there maybe other ways to do what you want. As always, you should check the documentation for more information.


This is the tag we use for any special abilities, attacks or qualities the race may have. Things that would be noted here are immunities, bonuses to skills that are conditional ("+8 to spot in daylight" is a good example of this type) and other things of that kind. If the type of special ability/quality is listed it should be added in parens. "(Ex)" for extraordinary, "(Sp)" for Spell or Spell-like, "(Su)" for supernatural. We wouldn't list anything that has a tag like Spell Resistance or Damage Reduction or spells.

The Solar has several abilities such a Aura of Menace, Protective Aura, etc. (essentially his celestial qualities) that we should list. So his set of SA
tags (separated by tabs of course) would look like:

SA:Aura of Menace (Su)
SA:Magic Circle against Evil (Su)
SA:Protective Aura (Su)
SA:Teleport (Su)
SA:Tongues (Su)
SA:Immunity to electricity/petrification/cold/acid (Ex)
SA:Fire resistance 20 (Ex)
SA:Keen Vision (Ex)

The Ninja Monkey is a hardy race so I'll give him immunity to poison. Being a monkey, I'll also give him +2 to Hide in forested areas. So we would put:

SA:Posion Immunity (Ex)
SA:+2 to Hide in forested areas


At times a creature's special abilities have additional behavior we would like to encode into the program.  A good example of this would be a creature that gets an ability that is the same as a class feature, like Sneak Attack or Rage.  These abilities are already in PCGen in what is called a "Hidden Feat".  They can be found in the file xsrd_feats_hidden.lst.  Basically they are exactly like normal feats except they are not visible in the GUI so you can't select them as a feat choice for your character.  We use the " FEAT " to grant these abilities to a monster. It should be noted that only a single " FEAT " tag can be present in a race line so if multiple feats need to be granted they should be separated with a "|" (pipe) character.

Suppose we had a variation of our Ninja Monkey race that received the Rage special ability as a Barbarian equal to their HD. We could code this like so:



Similar to the FEAT tag, the VFEAT is used to grant feats to a creature.  It is generally used to grant bonus feats particularly ones that a creature may not ordinarily qualify for.  In the creature description in the SRD, the feat will be noted as a bonus feat.

Neither the Solar nor our Ninja Monkey have any bonus feats so we won't enter anything for either for this tag.

Just to illustrate if we look at the Marilith in the SRD, it is noted as having both the Multidexterity and Multiweapon Fighting feats as bonus feats.  We would therefore enter:

VFEAT:Multidexterity<tab>VFEAT:Multiweapon Fighting


We use the VISION tag to define the various types of vision a creature has.  You can have more than one type of vision listed by using "|" (pipe) character to separate them.  That makes the tag format "VISION:type  (distance)|type (distance)".  Note that the (distance) part is optional.

A creature's vision is (in most cases) defined by the type of creature it is, unless it's description states otherwise.  In the case of the Solar, it has no information on it's vision in it's description, but there is  information in the section about ALL Celestials, so we'll use that information. It says that all Celestials  have Darkvision with a range of 60 feet and Low-light vision.  The tag for the vision of a Solar would be:

VISION:Darkvision (60')|Low-light

The Ninja Monkey I'm going to classify as a Monstrous Humanoid. According to the section on Monstrous  Humanoids in the SRD (srdcreatureoverview.rtf), Monstrous Humanoids get Darkvision with a range of 60 feet.  Their tag will read:

VISION:Darkvision (60')


For races that have Spell Resistance, we use the SR tag. This can take a plain number or a formula for those races that get better SR with more levels. So SR:12 is valid as is SR:11+TL.

The Solar has a spell resistance of 32, so we would enter " SR:32 " for him.

The Ninja Monkey has no SR so we'll skip this tag for them.


To indicate Damage Reduction for races we use the DR tag. It takes the format of DR:<reduction>|<bonus to bypass>. So a creature with a damage reduction of 5 unless you have a +1 weapon would be "DR:5/+1". For a creature that has damage reduction of 10 unless it's a silver weapon you would use "DR:10/Silver". If the race gets the damage reduction regardless of what kind of weapon is used (such as a high level barbarian gets) you use a "-" in the second position.

The Solar has a damage reduction of 35 and only a +4 or better weapon can get through it, so the tag would read " DR:35/+4 ".

The Ninja Monkey has a very strong connection with the earth and gains a small damage reduction of 3 with no special weapons that can ignore it, so the tag would be " DR:3/- ".


We use templates (and the "TEMPLATE" tag) to apply all the bonuses that creatures get from being a certain type of creature (ie: no CON score for undead, etc.). The standard PCGen distribution has templates created for all the creature types that are called out in the R/SRD.

The format is TEMPLATE:<templatename>. Despite what the documentation says currently, you cannot apply multiple templates by using a "|" to separate them, you must use a separate TEMPLATE tag for each template you wish to apply.

The Solar is an outsider so we would add a " TEMPLATE:Outsider " to his listing.

The Ninja Monkey is a Monstrous Humanoid and would get " TEMPLATE:Monstrous Humanoid ".

Note: It is no longer necessary to add a template just for the monster's type as it is handled by the monster's class. Some templates are still required, like "Mindless" for creatures without and Int score or "Incorporeal" for creatures without a corporeal form.


Note: The PCGen data team is moving away from using the "Default Monster" setting.  Default Monster Kits are being used instead.

Now we are going to deal with coding in the race's bonuses to saving throws.

For this part, like the Base Attack Bonus, we have to do a little back-figuring. We find the final values in the race listing. For the Solar it is "Saves: Fort +18, ref +18, Will +20". From these final numbers we need to subtract the appropriate stat bonus (CON for Fortitude, DEX for Reflex, and WIS for Willpower), feat bonuses, and epic bonuses.

The Solar's Fortitude Save bonus will be 18 (final)-5 (CON mod)-1 (epic bonus)=12. His Reflex Save bonus would be 18 (final)-5 (DEX mod)-1 (epic bonus)=12. The Willpower Save bonus would be 20 (final)-7 (WIS mod)-1 (epic bonus)=12.

The tag we use to enter these values is BONUS:CHECKS . This tag has two forms. The first is " BONUS:CHECKS|checkname|# " which would add "#" as bonus that would appear in the "Misc" box on the output sheet. The second form (and the one we will use in our race files almost always) is " BONUS:CHECKS|BASE.checkname|# ", which adds to the base bonus and makes it appear in the "Base Save" column on the output sheets. If the bonus is the same for multiple checks, you can do them in one tag by separating them with a comma like this " BONUS:CHECKS|BASE.checkname1,BASE.checkname2|# ".

Our good luck is that all of the Solar's bonuses are the same so we can use one tag instead of three. Like the BAB, these values are only to be used for default monsters, so we'll use the " PREDEFAULTMONSTER:Y " suffix with it. The tag for the Solar would thus be:


For the Ninja Monkey, my concept of him is that he's really quick and agile, so we'll give him a +5 for his reflex saves, and a +2 to Fortitude and Willpower. Since the bonuses are different we need to use two tags. The tags would be:



Now we come to the ability scores for the race.

This is complicated a bit by certain rules WotC has implemented.  If a race is used as a character the odd scores need to be dropped  by one to become even, while the "default monster" should have the additional 1 to the stat.

Our first assumption when doing ability scores for races is that they will be built on a starting ability  score of 10 in each stat. So we need to subtract 10 from each score right off that bat.  Then, if the ability  score is odd, subtract one more to make it even.  (For the Solar these values would be STR 18, DEX 10, CON 10,  INT 12, WIS 14, CHA 14 with INT, WIS and CHA being odd). Now that we have the non-monster values, we can put  them into the BONUS:STAT tag.

To designate which stat gets the bonus we use the abbreviations.  So for strength it would be BONUS:STAT|STR|# .   Like the BONUS:SKILL tag, you can apply the same bonus to more than one stat at once by making a comma separated list such as BONUS:STAT|STR,CON|# .  One last note, if the final stat value is 10 then there is no  need to add a bonus tag for it.

Finally, to take care of the extra 1 stat point for certain stats for default monsters we add one more tag,  lumping together all the stats that were odd and adding a " PREDEFAULTMONSTER:Y ".

Note: The PCGen data team is moving away from using the "Default Monster" setting.  Default Monster Kits are being used instead.

Bearing all the above rules, procedures and gotchas in mind, lets put together the stat bonuses for the Solar:


For the Ninja Monkey we need to pick stats and then apply the same logic to them to code into the .lst file.   I think I'll go with final stat values of
STR:17 DEX:18 CON:14 INT:11 WIS:15 CHA:10.  Our list of bonus tags  in the race file would be:


And we'll end lesson #5 here. Example files for this lesson can be found in the LSTFileClass Lesson file folder here .

Thanks for reading along everyone.

LST Chimp