# Lesson #4: .lst - Races (part 2)

By Professor Chris Chandler (Barak).

File(s) Covered: *races.lst

Tags used:

`BONUS:CHECKS, BONUS:COMBAT|AC, BONUS:COMBAT|BAB`

Not much to say before we jump into things this time. This is a continuation from lesson #3 in our look at creating race files.

`BONUS:COMBAT|AC`

Up next on our list to do is the race's armor class. In this section we'll deal with special bonuses that affect a races AC value. We won't worry about the effects of Dexterity and size adjustments because those are handled automatically by PCGen once we code in their dexterity score and size.

The first and most common of these is a race's natural armor. In the MM listings it can be found in parentheses after the total AC for the race. Looking at the entry for the Solar: "AC:35 (-1 size, +5 Dex, +21 natural)".

We would enter the bonus from natural armor for the Solar using the following tag "`BONUS:COMBAT|AC|21|TYPE=NaturalArmor.REPLACE`". Quite the tag, eh? :P

To break it down a bit further, "`BONUS:COMBAT|AC`" directs PCGen to apply the bonus to the character's/monster's AC. "21" is the value of the bonus to be applied of course. The "`TYPE=whatever`" sets the type of bonus for stacking purposes. It should be noted that "`TYPE=NaturalArmor`" is a special type in that it causes the program to separate those bonuses out from other AC bonuses when sent to the output sheet.

The ".REPLACE" is used to make sure that stacking with items and other things that affect natural armor, such as an amulet of Natural Armor, is allowed.

I think a bit of a digression is in order to explain how PCGen handles stacking issues.

1) If a bonus does not have a type associated with it, the program assumes it will stack with anything.

> Example:
> "`BONUS:COMBAT|AC|2`" and "`BONUS:COMBAT|AC|1`" will stack for a total bonus to the AC of +3.

2) If a bonus does have a type, it will stack with all different types, but not it's own type. When there are two bonuses with the same type (and no suffixes that modify this rule) the program will choose and apply the largest of them.

> Examples:
> a) "`BONUS:COMBAT|AC|2|TYPE=NaturalArmor`"
> and "`BONUS:COMBAT|AC|1|TYPE=Deflection`"
> will stack for a total bonus to the AC of +3.

> b) "`BONUS:COMBAT|AC|2|TYPE=NaturalArmor`"
> and "`BONUS:COMBAT|AC|1|TYPE=NaturalArmor`"
> will not stack and there will be a total bonus to the AC of +2.

> c) "`BONUS:COMBAT|AC|2|TYPE=NaturalArmor`"
> and "`BONUS:COMBAT|AC|1|TYPE=NaturalArmor`"
> and "`BONUS:COMBAT|AC|1|TYPE=Deflection`"
> will give you a total bonus to ac of +3.

3) When you use the "`.REPLACE`" suffix, the program takes all like bonuses that have "`.REPLACE`" appended and adds them together, and THEN compares that result to all other like bonuses to determine which to use.

> Examples:
> a) "`BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE`"
> and "`BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE`"
> will stack and there wil be a total bonus to the AC of +3.

> b) "`BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE`"
> and "`BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE`"
> and"`BONUS:COMBAT|AC|1|TYPE=NaturalArmor`"
> will give you a total bonus to ac of +4.

For further examples see the BONUS page of the documentation.

Back to creating our race file...

For the Ninja Monkey, we'll give them a natural armor of 2 for having a thick pelt. The tag for that would be:

> `BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE`

At this time we should also cover any other special AC enhancements the race might have. Looking through the MM write-up on the Solar, there is nothing else for them, so we're done there.

The Ninja Monkey however, I'm going to give a +2 divine bonus to their AC since they are the creation and favored race of a minor godlet in my world, and he tries to protect them. The tag for this would be:

> `BONUS:COMBAT|AC|2|TYPE=Divine`".

`BONUS:COMBAT|BAB`

Next comes one of the most important bits, but also one of the most involved. We need to set the BAB (Base Attack Bonus) of the race. What makes this so involved (at least when coding in other peoples creations) is that the BAB is not listed. You have to look at the attack bonuses given (in the attack line in the MM) and then work backwards from there, taking out any bonuses for size, stat (strength or dex), epic bonuses, and any feats that might affect it.

Looking to the Solar once again, we see the following listed for it's attacks: "Attacks: +5 dancing vorpal greatsword +35/+30... melee"

So, this tells us we start with a final value of 35. From that we need to subtract 5 (for the magic weapon), 9 (for his 28 strength), 1 (for his size). Then we add 1 since at 22 hit dice he is considered epic and gets a +1 epic bonus. The race has no feats that affect AC, so our BAB total is 35-5-9-1+1=21.

These values are only used when you are creating a "default monster" so we will append the `PREDEFAULTMONSTER:Y` tag to the bonus. This basically tells the program not to apply the bonus unless the user has selected "Use Default Monsters" in the preferences tab. This BAB bonus is also the base for the race and needs to stack with feats and other things that actually modify the base BAB, so we'll give it a "`TYPE=Base.REPLACE`". Our tag will look like this:

> `BONUS:COMBAT|BAB|21|PREDEFAULTMONSTER:Y|TYPE=Base.REPLACE`

The Ninja Monkey (since we are creating this race on the fly) we can just pick a number for. I'll just give him a +5. I may come back later and revise this if it's too much after I add all the other stuff. The tag for this will be:

> `BONUS:COMBAT|BAB|5|PREDEFAULTMONSTER:Y|TYPE=Base.REPLACE`

`BONUS:CHECKS`

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 dame 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 an 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:

> `BONUS:CHECKS|BASE.Fortitude,BASE.Reflex,BASE.Willpower|12|PREDEFAULTMONSTER:Y`

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:

> `BONUS:CHECKS|BASE.Reflex|5|PREDEFAULTMONSTER:Y`
> `BONUS:CHECKS|BASE.Fortitude,BASE.Willpower|2|PREDEFAULTMONSTER:Y`

And we'll call it a day at this point. I know that's only three more tags, but there's a lot to digest in those three tags and I'm sure there will be questions so I'm going to call that the end of this lesson.

I would heartily recommend looking up these tags in the docs to discover all of the ways in which they can be used.

Barak
LST Chimp