By Eric C Smith (Maredudd) and Andrew McDougall (Tir Gwaith)
File(s) Covered: *_domains.lst
Tags used:
CSKILL
,
BONUS:CASTERLEVEL
,
PRExxx
,
SPELLS
,
VFEAT
This is a continuation of the material presented in Lesson 15, Domains, The Basics. In this lesson I will go over a handful of global tags needed to implement the domain powers as described in our sample domains. As with the previous lesson on domains, I will be using several domains as examples. Four drawn from the Revised Standard Reference Document (RSRD) and one I have made up for this class in order to more completely demonstrate a few specific global tags. The domains we'll look from the RSRD are Animal, Law, Trickery and War, as well as the new domain of 'Poetry'. Our new domain is presented below in the standard RSRD format so you can follow along.
Granted Powers: You add all Perform skills to your cleric class skills and automatically gain the ability to Scribe Scrolls at 3rd level. You cast mind-affecting spells at +1 caster level, and are graced by Great Intelligence every four levels to a maximum of 20th level. If you have a charisma score of 12 or greater you may use Ventriloquism once a day as a spell-like ability.
Poetry Domain Spells
NOTE: The Poetry Domain is a little overdone, but I wanted to demonstrate a number of global tags. I would not recommend using the Poetry Domain in your campaign, unless of course you believe the pen is mightier than the sword . . .
Before we begin we must first identify which 'Granted Powers' need to be implemented. Our source for these powers is the text following the DESC
tag. Looking at the Poetry domain listed above, we get the following powers:
Add all Perform skills to your cleric class skills.
You may automatically Scribe Scrolls at 3rd level.
You cast mind-affecting spells at +1 caster level.
Graced by Great Intelligence every four levels to a maximum of 20th level.
May use Ventriloquism once a day as a spell-like ability (If you have a charisma score of 12 or greater)
Finally, a quick note on a few general conventions used within this class before we jump into it:
1) I have used the angle brackets, 'Less Than' and 'Greater Than' symbols, to indicate where your text will be entered when building a domain file. Unless explicitly stated in the text of my explanation, you will not include the angle brackets in your tags.
2) Coding examples and PCGen tags are identified by <code>
style.
3) When referencing a specific PCGen object, i.e. domain,
feat, weapon, etc., I have included the name as EMPHASISED
text, except for when the object is part of a <code>
example or in the case of the class 'Cleric', which is used throughout
this article.
Without further adieu, lets jump right into the lesson.
CSKILL
This tag is used to add skills to the cleric's list of class skills. The new class skills may include a single skill or may be a pipe (|) delimited list of skills to be added. An example of this is the Trickery domain which adds the three skills of Bluff, Disguise, and Hide to the Cleric's list of class skills. The first example below gives the form of this tag.
The skills being added may also be designated by TYPE
,
taking the form of TYPE.<skill type>
.
Our new domain is a good example of this as the domain adds all Perform
type skills to the Cleric's class skills list. See the example below to
see the tag in action.
Example:
Trickery
<tab> . . . <tab> CSKILL:Bluff|Disguise|Hide
Poetry
<tab> . . . <tab> CSKILL:TYPE.Perform
BONUS:CASTERLEVEL
This tag grants a bonus to the character's caster level. This
bonus is dependent upon specific qualifying parameters, which are
identified within the tag itself. The tag only requires two arguments,
the qualifying tag and the number of levels the caster level is
increased, with a third optional argument in the form of a PRExxx
tag. The general form this tag and its argument take as as follows:
BONUS:CASTERLEVEL|<qualifying
tag>|<level bonus>|PRExxx
There are several different types of qualifying tags,
including the class name, a spell DESCRIPTOR
,
a DOMAIN
, a RACE
, a
SCHOOL
, a SPELL
, a SUBSCHOOL
,
and a TYPE
. Each of these tags, except for
the class name, take the form of <TAG>.text
,
with the text being appropriate for the tag, i.e. RACE.Elf%
,
SCHOOL.Abjuration
, TYPE.Arcane
,
etc. The class name is a simple text entry giving the name of the
appropriate class, i.e. Cleric
. Looking at
the Domain of Law in the RSRD, the rsrd_domains.lst
file, we find, that a divine spell caster with this domain receives a
bonus when casting lawful based spells. The specific spell descriptor
of 'Lawful' is used in this tag taking the form: DESCRIPTOR.Lawful
.
Examining the list of granted powers for the Domain of Poetry
above, we see a divine spell caster with this domain receives a bonus
when casting 'Mind-Affecting' spells. The qualifying tag for the bonus
takes the following form: DESCRIPTOR.Mind-Affecting
.
The second argument in our tag is the level bonus. This is a number, variable, or formula that represent the number of levels that is added to the divine casters level for the purposes of determining the effects, DC, etc. In both the domain of Law and the domain of Poetry, the bonus level is '1'.
Finally, this tag can take PRExxx
tags, with the most common tag being the PRERULE
tag which checks the state of rule as set in PCGen's 'House Rule'
preferences. The rule must be defined in the rules.lst
file in the 'system/gameModes' folder within PCGen. The particular rule
we are interested in for the BONUS:CASTERLEVEL
tag applies Casterlevel Bonuses from Domains to all Spells and is
referenced by the VAR:SYS_DOMAIN
tag, as
defined in the rules.lst
file.
Taking all of this together, the BONUS:CASTERLEVEL
tag for our two sample domains take the form shown below.
Example:
Law
<tab> . . . <tab>
BONUS:CASTERLEVEL|DESCRIPTOR.Lawful|1|PRERULE:SYS_DOMAIN
Poetry
<tab> . . . <tab> BONUS:CASTERLEVEL|DESCRIPTOR.Mind-Affecting|1|PRERULE:SYS_DOMAIN
PRExxx
This tag is a global tag that applies specific prerequisites
to the character before granting the selected domain and its granted
powers and spells. You may include as many of these tags as you like
and each of them will be applied to the domain as a whole. If the
character does not meet ALL PRExxx
tags, the
domain cannot be selected. Unfortunately, there are too many PRExxx
tags to go over in this class so I will restrict my coverage to the
most likely tag. That is the PREALIGN
tag.
The PREALIGN
tag applies an alignment
requirement to the cleric. The form this tag takes is:
PREALIGN:<alignment list>
.
The alignment list is a comma-delimited list of alignment
abbreviations as follows: Lawful Good=NG
,
Lawful Neutral=LN
, Lawful Evil=LE
,
Neutral Good=NG
, True Neutral=TN
,
Neutral Evil=NE
, Chaotic Good=CG
,
Chaotic Neutral=CN
, and Chaotic Evil=CE
.
An additional identifier is Deity
,
representing the alignment of the characters deity.
Note: The alignments have been assigned specific numbers, which can also be used. The numbers are: 0=LG, 1=LN, 2=LE, 3=NG, 4=TN, 5=NE, 6=CG, 7=CN, 8=CE, and 10=Deities alignment. These values can be used instead of the abbreviations
An example of this usage can be seen below for the domain of
Law. As there are no restrictions to be applied, either for alignment
or by any other cr criteria, for the domain of
Poetry, we will not be including a PRExxx
tag in our Poetry
domain line.
As a final note, this tag provides prerequisites that are
separate from the prerequisites used in conjunction with the DOMAINS
tag.
Example:
Law
<tab> . . . <tab> PREALIGN:LG,LN,LE
SPELLS
This tag grants the cleric spell-like abilities. This tag has a number of arguments that we will explain below but first, the general form of this tag and its many arguments are as follows:
SPELLS:<spellbook>|TIMES=<number
or formula>|CASTERLEVEL=<number
of formula>|<spell name>,<spell
DC>|<PRExxx tag>
The first argument in the SPELLS
tag
is the name of the spellbook that the spell-like ability will be
displayed in within PCGen and on the character sheet. This may include
any name you can imagine, though the several examples of this tag in
the RSRD use either 'Innate' or the name of the domain granting the
ability as can be seen in the Animal
domain example given below. It is very important though that the
spellbook name NOT be the same as any Class names, i.e. 'Cleric',
'Sorcerer', etc. Using an existing class name will cause PCGen to throw
an exception and it will not function properly. For our purposes, the
spell book entered is the domain name and takes the form of <domain
name> Domain
. For the poetry domain we would enter Poetry
Domain
.
The TIMES
tag is an optional tag
that identifies the number of times a day the spell-like ability may be
used. If it's not included in the domain line, PCGen will default to 1
time per day. You may enter a specific value, a variable, or a formula
in this tag. It is important to note that within the domain file the SPELLS
tag is not associated with any specific class, therefore, the variable CL
will not work. (For more information about formulas within PCGen, see
the Math
Operators and Formulas section in the PCGen Documentation.) A
special value that may be entered is the value '-1', which will cause
an output on the character sheet of 'At Will'. Both the Animal and
Poetry domains grant spell-like abilities that are usable once per day
so both domain entries will include the TIMES=1
tag.
CASTERLEVEL
is an optional tag that
sets the level at which the spell-like ability is cast. As with the TIMES
tag, you may enter any value, variable, or formula as desired. If it is
not included, PCGen will default to 1. Only one CASTERLEVEL
tag is allowed in each SPELLS
tag entry. For
the Animal and Poetry
domains, we base the caster level on the total level of the character,
including the PC, NPC, and Monster levels but not including any level
adjustments, so we will be using the TL
variable as the basis for the caster level. Unfortunately, there may be
circumstances where the total level is reduced to zero or below, i.e.
with the application of a template that applies negative levels. In
this case, we still want the spell-like ability to function, even if at
a minimum level. Therefore, we will use the max()
formula tag. The entry for the casterlevel for both of our example
domains becomes CASTERLEVEL=max(TL,1)
,
setting the caster level of the spell-like ability to the character's
total level with a minimum level of 1.
Besides the spell book, the <spell
name>
is the only other mandatory argument for the SPELLS
tag as it provides, as the tag implies, the name of the spell being
granted as a spell-like ability. This spell must exist in the loaded
datasets and must appear exactly as it does in the first position on
the spell line in the spell file. The optional <spell
DC>
value may be a number, variable, or formula. I
will establish the DC for the Poetry
domain as 12+WIS
, meaning a base score of
twelve (12) plus the wisdom modifier. The RSRD gives the DC value for
the Animal domain as
11+WIS
, being a base score of eleven (11) plus
the wisdom modifier.
The last argument to discuss is the global PRExxx
tag. These are used to set prerequisites for the spell-like ability
such as alignment requirements or minimum stat requirements. If a SPELLS
tag requires multiple PRExxx
statements they
are included as a pipe (|) delimited list at the end of the SPELLS
tag. Some of the PRExxx
statements have pipe
(|) delimiting in them, in which case you simply put that PRExxx
statement in a separate SPELLS
tag by itself.
The Speak with Animals
ability granted by the Animal
domain does not carry a prerequisite so you will not find a PRExxx
tag attached to the SPELLS
tag. The Poetry
domain, on the other hand, does require a minimum wisdom before the Ventriloquism
ability is granted. This prerequisite is coded using the PRESTAT
tag which takes two arguments; 1) the number of stats which must
qualify, one in our case, and 2) the stat and its value, identified by
the stat abbreviation defined in the statsandchecks.lst
file and a numeric value representing the minimum stat value. Our PRESTAT
tag takes this form: PRESTAT:1,WIS=12
Ok, so we've gone over all the arguments allowed in the SPELLS
tag. The only thing left to do is put them al together so we can see
the final tag, and this we have done below.
Example:
Animal
<tab> . . . <tab>
SPELLS:Animal Domain|TIMES=1|CASTERLEVEL=max(TL,1)|
Speak with Animals,11+WIS
Poetry
<tab> . . . <tab>
SPELLS:Poetry Domain|TIMES=1|CASTERLEVEL=max(TL,1)|
Ventriloquism,12+WIS|PRESTAT:1,WIS=12
VFEAT
The VFEAT
tag grants a feat, or a
list of feats, to a character, even if the character would not normally
meet the requirements for that feat. The tag takes a pipe-delimited
list and can be as long as desired, but must contain at least one feat.
The feats included in the feat list must exist and you should NOT use
the feats OUPUTNAME
, if one exists for the
feat you are granting. Also keep in mind that some feats have a CHOOSE
built into them, such as Weapon Focus,
while most don't. Weapon Focus,
when applied, calls a chooser to allow the player to choose which
weapon the focus will apply to. Let us assume the character selects the
Longsword, which will
be displayed as Weapon Focus(Longsword).
This causes some confusion when it comes to listing a feat with a
parenthetical element, i.e. Armor Proficiency
(Heavy), which is a unique feat with no CHOOSE
command, and the afore mentioned Weapon
Focus(Longsword). PCGen differentiates
between these two cases by the inclusion, or exclusion, of a space
between the 'open' parentheses and the preceding alpha-character. For a
feat with a built in CHOOSE
command, there is
NO intervening space while a unique feat with a parenthetical element
has an intervening space.
As stated before, the VFEAT
tag
applies a feat irrespective of the prerequisites for that feat, but the
VFEAT
tag also allows the application of new
prerequisites through the use of the PRExxx
tag. The new prerequisite will be applied to all feats listed in the VFEAT
tag. This could cause a problem if you wanted to apply two feats, each
with their own prerequisites, but fortunately, not only can we include
as many feats in the VFEAT
tag as we need, we
can also include as many VFEAT
tags in the
domain line as we need, each with its own PRExxx
tag. If you browse through the PRExxx
section
of the global tag documentation, you will find many tags that can be
used when applying virtual feats, but I will be going over only one of
them here. That is the PRELEVEL
tag.
The PRELEVEL
tag establishes a
prerequisite for a character to have a minimum number of levels. Its
form is simple, having as a single argument the minimum level required.
The tag takes the following form: PRELEVEL:<minimum
level>
With all of this in mind, the form the VFEAT tag takes in this file, with our selected PRExxx tag, is as follows:
VFEAT:<feat
list>|PRELEVEL:<minimum level>
For the Poetry
domain, we are applying two feats: the Scribe
Scolls feat, which is granted a third level,
and the Great Intelligence
feat, which normally requires that the character have at least 21
levels. Additionally, we will apply the Great
Intelligence feat several times, specifically
when the character is at 4th, 8th, 12th, 16th, and 20th levels.
Fortunately, the Great Intelligence
feat is stackable so our application of the feat five times as the
character advances from 1st to 20th level can be accommodated by simply
including five VFEAT
tags, each with an
appropriate PRELEVEL
tag, five time. See our
example below for the final VFEAT
tag entries.
Example:
Poetry
<tab> . . . <tab> VFEAT:Scribe
Scrolls|PRELEVEL:3
<tab> VFEAT:Great
Intelligence|PRELEVEL:4
<tab> VFEAT:Great Intelligence|PRELEVEL:8
<tab> VFEAT:Great Intelligence|PRELEVEL:12
<tab> VFEAT:Great Intelligence|PRELEVEL:16
<tab> VFEAT:Greater Intelligence|PRELEVEL:20
<tab>
My domain entry for the Domain of Poetry, adding the tags discussed above to those discussed in lesson 14, now looks like this (all on a single line.):
Poetry
<tab>
CSKILL:TYPE.Perform
<tab>
BONUS:CASTERLEVEL|DESCRIPTOR.Mind-Affecting|1|PRERULE:SYS_DOMAIN<
tab>
SPELLS:Poetry Domain|TIMES=1|CASTERLEVEL=max(TL,1)|Ventriloquism,12+WIS|PRESTAT:1,WIS=12
<tab>
SOURCEPAGE:SpellListI.rtf
<tab>
VFEAT:Scribe Scrolls|PRELEVEL:3
<tab>
VFEAT:Great Intelligence|PRELEVEL:4
<tab>
VFEAT:Great Intelligence|PRELEVEL:8
<tab>
VFEAT:Great Intelligence|PRELEVEL:12
<tab>
VFEAT:Great Intelligence|PRELEVEL:16
<tab>
VFEAT:Great Intelligence|PRELEVEL:20
<tab>
DESC:You are graced by Great Intelligence and gain the ability
<tab>
to Scribe Scrolls at 3rd level. You may use Ventriloquism once a day as a
spell-like ability and add all Perform skills to your cleric
class skills. You cast mind-affectng spells at +1 caster level.
SPELLLEVEL:DOMAIN|
Poetry=1|Hypnotism|
Poetry=2|Suggestion|
Poetry=3|Geas (Lesser)|
Poetry=4|Modify Memory|
Poetry=5|Song of Discord|
Poetry=6|Irresistible Dance|
Poetry=7|Hold Person (Mass)|
Poetry=8|Charm Monster (Mass)|
Poetry=9|Hold Monster (Mass)
And that's everything you need to know to add new, full feature, domains to your campaign.
Maredudd