PFRPG2 - PC Feature Automation
Basics
If enabled in the campaign options, an automation field will appear in various different types of Fantasy Grounds (FG) data records. Currently supported records are:
Feats
Class Features
Items
Lookup data and lookup data features
Ancestry features
Enabling view/editing of the automation data
To view and/or edit data record automation data the “Show Ability Automation Field” in the Campaign Options “Experimental Development” section needs to be changed from “Off”.
The options are:
Off - the automation field is never shown. Note - this does not disable automation.
On - the automation field is shown all the time. It will not be shown if the NPC record is locked and there is no data in the field.
Edit Only - the automation field will only be shown when the NPC record is unlocked. It will be hidden when the NPC record is locked, even if there is data in the field.ield.
Editing the automation field
The automation field is a string field that contains text which is used by the ruleset to carry out certain actions (see Automation Actions below) when the record is first added to the PC, with some record/automation combinations having additional functionality.
The data takes the form of:
One or more automation actions
Each automation action is enclosed in square brackets [automation action string]
The automation actions includes one keyword at the beginning of the string and then one or more additional data entries - some separated by spaces, some using a pipe symbol “|”
For example:[Will trained] will set the PC’s will save proficiency level to trained, unless it is already trained or higher.
Item Automation
Automation gets applied when an item is added to a PC and also as an item is equipped. If the automation type supports deletion the deletion automation is also ran when the item is unequipped or removed - some automation types have specific handling of item carried state, this is detailed in the automation type “Item support?” details below.
Multiple automation actions in the same record
An ability can have multiple actions - simply put each individual actions within the square brackets.
For example:[Will trained][Fortitude trained]
XREF (Cross Reference) Functionality
Character effects (in the Combat tab of the PC sheet) allow substitution of various values using curly brackets {...} One of these substitution values is {XABC} where ABC is a three digit upper case code that refers to the Cross Reference data stored in the PC sheet.
Referring to the screenshot below:
Clicking on the three-bars icon at the bottom of the Character Effects section on the PC Combat tab will open the X-Ref Variables window.
This character has one x-ref variable: BIR = fire
Whenever {XBIR} is used in a PC effect in this section of the character sheet, not in the combat tracker, the value for BIR will be substituted. In this case, DMG: 4 melee, {XBIR}; AC: -1 becomes DMG: 4 melee, fire; AC: -1
X-Ref variables in use
The current variables known to be in use are detailed in the table below.
X-Ref Variable | Use | Source |
BIR | Barbarian Instinct Rage | Core Rules |
DVH | Dwarven Vengeful Hatred | Core Rules |
SDA Old version = KDA | Suli Dualborn “A” = First energy resistance | Lost Omens Ancestry Guide |
SDB Old version = KDB | Suli Dualborn “B” = Second energy resistance | Lost Omens Ancestry Guide |
KDE | Kobold Draconic Exemplar | Advanced Player’s Guide |
DFR | Deep Fetchling Resistance | Lost Omens Ancestry Guide |
Action keywords
The PFRPG2 ruleset currently supports many different types of action keywords, with others being added during testing and ongoing development. The following is a list of the main keyword types:
Saving throw proficiency level - the names of the saving throw: fort, Fortitude, Ref, Reflex, Will.
Skill proficiency level - the name of the skill - Acrobatics, Athletics, etc..
Speed - modifies the speed of a PC by a numerical value.
Movement- adds a string to the PC special movement field if it doesn’t already exist.
Size - sets the size of the PC.
Bulk - modifies the encumbrance bulk limits by a numerical value.
Senses - adds a string to the PC senses field if it doesn’t already exist.
Trait - adds a string to the PC traits field if it doesn’t already exist.
HP - modifies a specific HP field with a numerical value.
Feat - adds a feat to the PC
Spell - adds a spell to a specified spell class.
Spellclass - adds a spell class to the PC’s actions tab.
Spellslot - adds to the current available spells in the specified spell slot rank
Skill - sets the proficiency level of a names skill (same as “skill proficiency level” above, needed for custom skills.
Defense - sets a specific defense proficiency level
Attack - sets a specific attack/weapon proficiency level
Save - sets a specific saving throw proficiency level (same as “saving throw proficiency” above.
Choice - presents the user with a data selection choice. Primarily used for class options.
Options - presents the user with a number of options encoded within the automation string; also used for matching deity or XRef data to options.
Effect - adds a character (“char”) effect to the PC or an “item” effect (active when an item is equipped) or a weapon “use” effect that is active during an attack or damage action.
Item - adds an item to the character inventory.
Weapon - adds a weapon entry to the character. Primarily used for adding ancestry or features based unarmed attacks.
Delete - used as the last entry in a record automation data. Indicates that the base record should be removed after all automation is processed. Primarily used for class kits, to remove the base class kit item record once all items in the kit have been added.
Special handling of unique cases - currently supports the “armor proficiency” and “weapon proficiency” feats and the “divine font” class feature.
Message - sends a ruleset string resource message to the chargen tracker.
None - used to indicate that there is no appropriate automation in the record. This allows correct messaging in the chargen tracker log window.
Proficiency levels
If a proficiency level is being set the full name must be used: trained, expert, master or legendary.
Note: only a higher proficiency level than the currently set value will be applied.
Each automation action is detailed below. Fields highlighted in blue are optional.
Automation removal
Some automation actions support the removal of the automation when the record is deleted from the PC. This relies on being able to reliably remove the automation added. Some automation can’t be reliably removed - usually the automation that sets a specific value rather than numerically adjusts a current one or adds a one-off feature - e.g. proficiency level can’t be reliably removed because other features may have changed the base proficiency level after the automation was applied, but a numerical adjustment to speed (e.g. [SPEED +5] can be removed. Automation removal support is detailed in each action below.
“Or” functionality
Some string additional actions support “or” functionality - using the “/” operator. This usually means that two values are provided, the first will be added to the target field unless it already exists in the field, if so the second value will be added to the field. If both values already exist then nothing will be added. For example: “/Low-light vision/Darkvision”. If the first string “Low-light vision” doesn’t exist in the target field it will be added to that field, but if “Low-light vision” already exists in the field then “Darkvision” will be added.
FILTER functionality
Automation entries can have a FILTER:Class=XXXX entry within the automation field. Currently only “Class” is supported. This allows all automation after the FILTER keyword to be applied only to a character who has a specific class.
For example: [Athletics trained]FILTER:Class=Druid[FEAT add animal companion|no|druid][SPELL add heal animal|focus spells|1]
This results in every PC being trained in athletics, but only PCs whose class is “druid” will also get the additional automation (FEAT and SPELL) applied when the record with the automaton is added to the character.
Saving throw proficiency level
Sets the proficiency level of the named saving throw if the new value is higher than the existing value.
Keyword = short or long saving throw name - Fortitude, Fort, Ref, Reflex, Will
Additional data - the proficiency level
Remove supported? No
Skill proficiency level
Sets the proficiency level of the named saving throw if the new value is higher than the existing value.
Keyword = short or long saving throw name - Fortitude, Fort, Ref, Reflex, Will
Additional data - the proficiency level
Remove supported? No
Examples:
[Fort trained]
[Reflex expert]
[Will master]
Speedmisc (old = Speed)
Modifies the speed of a PC by a numerical value. The older “speed” should be replaced with “speedmisc”, both will still work but “speedmisc” is preferred.
Keyword = Speedmisc
Additional data - the numerical number to adjust the speed miscellaneous modifier. Supports an operator of = (set - default) + (add) or - (subtract).
Remove supported? Yes - (not for set “=” operator)
Examples:
[SPEEDMISC +5] - adds five to the current speed miscellaneous modifier.
[SPEEDMISC 10] - sets the speed miscellaneous modifier to ten.
[SPEEDMISC -10] - subtracts 10 from the current speed miscellaneous modifier.
Speedbase
Sets the speed of a PC by a numerical value.
Keyword = Speedbase
Additional data - the numerical number to set or adjust the speed miscellaneous modifier. Supports an operator of = (set - default) + (add) or - (subtract).
Remove supported? Yes - (not for set “=” operator)
Examples:
[SPEEDBASE 25] - sets the base speed to 25.
[SPEEDBASE +5] - adds five to the current base speed
[SPEEDBASE -10] - subtracts 10 from the current base speed.
Movement
Adds a string to the special movement field of the PC if it doesn’t already exist.
Keyword = Movement
Additional data - the string of the movement name
Remove supported? Yes
Examples:
[MOVEMENT Swim 20 feet]
Size
Sets the Size string of the PC.
Keyword = Size
Additional data - the string of the creature size
Remove supported? No
Examples:
[SIZE small]
Bulk
Modifies the encumbrance bulk limits by a numerical value.
Keyword = Bulk
Additional data - the numerical number to adjust the encumbrance bulk modifier. Supports an operator of = (set - default) + (add) or - (subtract).
Remove supported? Yes - (not for set “=” operator)
Examples:
[BULK +2] - adds two to the current encumbrance bulk limits modifier.
[BULK 3] - sets the encumbrance bulk limits modifier to 3.
[BULK -1] - subtracts 1 from the current encumbrance bulk limits modifier.
Senses
Adds a string to the senses field of the PC if it doesn’t already exist.
Keyword = Senses
Additional data - the string of the sense name
Supports “or” functionality.
Remove supported? Yes
Examples:
[SENSES Darkvision]
[SENSES Low-light Vision]
[SENSES /Low-light vision/Darkvision] - uses “or” functionality - will add “Low-light vision” to the PC senses field, but will add “Darkvision” if “Low-light vision” already exists
Trait
Adds a string to the traits field of the PC if it doesn’t already exist. Can also be used to remove a trait - [TRAIT remove <traitname>]
Keyword = Trait
Additional data - the string of the trait name to add the trait, “remove” then the string of the trait name to remove the trait if present in the current PC traits string.
[TRAIT abc] - adds the trait “abc” to the PC traits string if it doesn’t already exist.
[TRAIT remove abc] - removes the trait “abc” from the PC straits string if it exists.
Supports “or” functionality.
Remove supported? Yes
Examples:
[TRAIT Elf]
[TRAIT Half-Elf]
[TRAIT remove Plant]
HP
Sets a value in, or adds a value to, an HP field.
Keyword = HP
Additional data - the HP field and the value
HP Field = “ancestry” (sets the Ancestry HP value), “miscperlevel” (modifies the miscellaneous per level modifier value) or “misc” (modifies the miscellaneous modifier).
Value = the number to set (ancestry) or adjust (miscperlevel) the target field.
Remove supported? Yes (from R18t2)
Item support? Yes. Applied when equipped. Removed when not carried, or item deleted while equipped.
Examples:
[HP ancestry 10]
[HP miscperlevel 1]
[HP misc 5]
Feat
-- Handle feat automation.
-- Must include type of automation action. ADD currently supported.
-- Format: <action> <feat name>|<multiple (opt)>|<distinguishing trait (optional)>
-- <feat name> - the feat name to match within the loaded data.
-- <stack/multiple (opt)> - indicates if multiple versions of this feat can be added. Default = no.
-- Currently only supports a single trait name to distinguish the trait to select. Is this enough?
-- An example of a feat that needs the trait is the sorcerer and wizard "counterspell" first level class feat. Using "wizard" or "sorcerer" as trait match name will give the correct feat match.
Keyword = Feat
Additional data - operation - currently “add” only supported.
More data - <feat name>|<multiple (opt)>|<distinguishing trait (optional)>
Remove supported? Yes
Spell
-- Spell functionality - "add" currently supported
-- Format: SPELL <action> <spell name>|<spell class name>|<spell slot level> (optional)
-- <spell name> - matches against campaign and loaded modules.
-- <spell class name> - The name of the spell class on the actions tab to add the spell to.
-- <spell slot level> - an optional spell slot level to add the spell to, if this is not specified then the spell level will be used.
-- <uses per day> - only relevant for prepared spell classes and for spells other than cantrips (which don't have daily use restrictions). Allows the number of times the spell is prepared to be specified - requires <spell slot level> to be present - even if blank.
Keyword = Spell
Additional data -
Remove supported? Yes
Spellclass
-- Spell class functionality - "add" action currently supported