Tables#
pathfinder2e_stats.tables reproduces a variety of tables from the Player Core and GM Core manuals.
All tables are either DataArray or Dataset objects with at least an integer level dimension, plus extra table-specific dimensions.
PC tables#
PC#
These tables let us calculate a typical baseline of the various bonuses for most common Player Character (PC) builds for each level.
For example, let’s use them to calculate the attack bonus progression of a typical Rogue as they gain levels, not counting any temporary buffs/debuffs they may have:
import pathfinder2e_stats as pf2
rogue_atk_bonus = (
# Start with DEX+4 at level 1 and always increase it
pf2.tables.PC.ability_bonus.boosts.sel(initial=4, drop=True)
# Get an Apex item at level 17 for +1 DEX
+ pf2.tables.PC.ability_bonus.apex
# Upgrade weapons as soon as possible: +1 at level 2, +2 at level 10, etc.
+ pf2.tables.PC.attack_item_bonus.potency_rune
# Trained (+2) at level 1, Expert (+4) at level 5, Master (+6) at level 13
+ pf2.tables.PC.weapon_proficiency.rogue
# Add level to proficiency
+ pf2.tables.PC.level
)
rogue_atk_bonus.display("attack bonus", transpose=True)
| level | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| variable | ||||||||||||||||||||
| attack bonus | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 26 | 27 | 28 | 30 | 32 | 33 | 34 | 36 |
The PC tables are Datasets in a container which can be accessed by attribute:
pf2.tables.PC
- ability_bonus
- attack_item_bonus
- class_proficiency
- level
- polymorph_attack
- rage
- skill_item_bonus
- skill_proficiency
- spell_proficiency
- untamed_druid_attack
- weapon_dice
- weapon_proficiency
- weapon_specialization
PC.ability_bonus#
Ability bonus (strength, dexterity, etc.) of a typical optimized PC.
Coordinates:
level (int): PC level in the range [1, 20]
initial (int): 4, 3, 2, 1. Number of boosts at level 1 for a given ability
Data variables:
boosts (level, initial) (int): Ability bonus from boosts at level 1, 5, 10, 15, 20
apex (level) (int): Apex item. A character can invest only one; typically it is chosen for the key ability (although it’s not uncommon for Alchemists and Inventors to boost STR or DEX instead of INT).
pf2.tables.PC.ability_bonus.display()
| variable | boosts | apex | |||
|---|---|---|---|---|---|
| initial | 4 | 3 | 2 | 1 | |
| level | |||||
| 1 | 4 | 3 | 2 | 1 | 0 |
| 2 | 4 | 3 | 2 | 1 | 0 |
| 3 | 4 | 3 | 2 | 1 | 0 |
| 4 | 4 | 3 | 2 | 1 | 0 |
| 5 | 4 | 4 | 3 | 2 | 0 |
| 6 | 4 | 4 | 3 | 2 | 0 |
| 7 | 4 | 4 | 3 | 2 | 0 |
| 8 | 4 | 4 | 3 | 2 | 0 |
| 9 | 4 | 4 | 3 | 2 | 0 |
| 10 | 5 | 4 | 4 | 3 | 0 |
| 11 | 5 | 4 | 4 | 3 | 0 |
| 12 | 5 | 4 | 4 | 3 | 0 |
| 13 | 5 | 4 | 4 | 3 | 0 |
| 14 | 5 | 4 | 4 | 3 | 0 |
| 15 | 5 | 5 | 4 | 4 | 0 |
| 16 | 5 | 5 | 4 | 4 | 0 |
| 17 | 5 | 5 | 4 | 4 | 1 |
| 18 | 5 | 5 | 4 | 4 | 1 |
| 19 | 5 | 5 | 4 | 4 | 1 |
| 20 | 6 | 5 | 5 | 4 | 1 |
PC.attack_item_bonus#
Item bonus to attack rolls.
Coordinates:
level (int): Item level in the range [1, 20]. It is assumed players will acquire this item as soon as their level allows.
Data variables:
potency_rune (level) (int): Item bonus obtained from a permanent Weapon Potency runes or Weapon Potency Solarian crystals. Before the rune/crystal becomes available at level 2, item bonus of non-magical weapons.
improvement (level) (int): Item bonus obtained from a permanent Starfinder weapon improvement
bomb (level) (int): Item bonus for Alchemist’s bombs
bestial_mutagen (level) (int): Item bonus gained from Bestial Mutagen
fury_cocktail (level) (int): Item bonus gained from Fury Cocktail
runic_weapon (level) (int): Item bonus gained from Runic Weapon
gate_attenuator (level) (int): Item bonus gained from Gate Attenuator. Note: does not increase impulse DC; only impulse attack modifier.
Notes:
See PC.weapon_dice for extra damage dice from items.
pf2.tables.PC.attack_item_bonus.display()
| variable | potency_rune | improvement | bomb | bestial_mutagen | fury_cocktail | runic_weapon | gate_attenuator |
|---|---|---|---|---|---|---|---|
| level | |||||||
| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
| 2 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
| 3 | 1 | 1 | 1 | 2 | 0 | 1 | 1 |
| 4 | 1 | 1 | 1 | 2 | 2 | 1 | 1 |
| 5 | 1 | 1 | 1 | 2 | 2 | 1 | 1 |
| 6 | 1 | 1 | 1 | 2 | 2 | 1 | 1 |
| 7 | 1 | 1 | 1 | 2 | 2 | 1 | 1 |
| 8 | 1 | 1 | 1 | 2 | 2 | 1 | 1 |
| 9 | 1 | 1 | 1 | 2 | 2 | 1 | 1 |
| 10 | 2 | 2 | 1 | 2 | 2 | 1 | 1 |
| 11 | 2 | 2 | 2 | 3 | 2 | 2 | 2 |
| 12 | 2 | 2 | 2 | 3 | 3 | 2 | 2 |
| 13 | 2 | 2 | 2 | 3 | 3 | 2 | 2 |
| 14 | 2 | 2 | 2 | 3 | 3 | 2 | 2 |
| 15 | 2 | 2 | 2 | 3 | 3 | 2 | 2 |
| 16 | 3 | 3 | 2 | 3 | 3 | 2 | 2 |
| 17 | 3 | 3 | 3 | 4 | 3 | 3 | 3 |
| 18 | 3 | 3 | 3 | 4 | 4 | 3 | 3 |
| 19 | 3 | 3 | 3 | 4 | 4 | 3 | 3 |
| 20 | 3 | 3 | 3 | 4 | 4 | 3 | 3 |
PC.class_proficiency#
Proficiency bonus to class DC, not including level.
Coordinates:
level (int): PC level in the range [1, 20]
doctrine (str): Cleric doctrines
Data variables:
cleric (level, doctrine) (int): Cleric, depending on their doctrine
(class name) (level) (int): All other Pathfinder and Starfinder classes
kineticist_dedication (level) (int): Kineticist Archetype
pf2.tables.PC.class_proficiency.display()
| variable | alchemist | animist | barbarian | bard | champion | cleric | commander | druid | exemplar | fighter | guardian | gunslinger | inventor | investigator | kineticist | magus | monk | oracle | psychic | ranger | rogue | sorcerer | summoner | swashbuckler | thaumaturge | witch | wizard | envoy | mystic | operative | solarian | soldier | witchwarper | kineticist_dedication | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| doctrine | battle creed | cloistered cleric | warpriest | |||||||||||||||||||||||||||||||||
| level | ||||||||||||||||||||||||||||||||||||
| 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 5 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 6 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 7 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 4 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 4 | 2 |
| 8 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 4 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 4 | 2 |
| 9 | 4 | 2 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 2 | 2 | 4 | 2 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 2 | 4 | 4 | 4 | 2 |
| 10 | 4 | 2 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 2 | 2 | 4 | 2 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 2 | 4 | 4 | 4 | 2 |
| 11 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 2 |
| 12 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 |
| 13 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 |
| 14 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 |
| 15 | 4 | 2 | 4 | 2 | 4 | 6 | 6 | 6 | 6 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 6 | 2 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 4 | 6 | 6 | 4 |
| 16 | 4 | 2 | 4 | 2 | 4 | 6 | 6 | 6 | 6 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 6 | 2 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 4 | 6 | 6 | 4 |
| 17 | 6 | 2 | 4 | 2 | 6 | 6 | 6 | 6 | 6 | 2 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 2 | 4 | 2 | 2 | 6 | 4 | 2 | 2 | 4 | 6 | 2 | 2 | 4 | 2 | 4 | 6 | 6 | 6 | 4 |
| 18 | 6 | 2 | 4 | 2 | 6 | 6 | 6 | 6 | 6 | 2 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 2 | 4 | 2 | 2 | 6 | 4 | 2 | 2 | 4 | 6 | 2 | 2 | 4 | 2 | 4 | 6 | 6 | 6 | 4 |
| 19 | 6 | 2 | 6 | 2 | 6 | 8 | 8 | 8 | 8 | 2 | 6 | 6 | 6 | 6 | 6 | 6 | 8 | 2 | 6 | 2 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 2 | 4 | 2 | 6 | 6 | 8 | 6 | 4 |
| 20 | 6 | 2 | 6 | 2 | 6 | 8 | 8 | 8 | 8 | 2 | 6 | 6 | 6 | 6 | 6 | 6 | 8 | 2 | 6 | 2 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 2 | 4 | 2 | 6 | 6 | 8 | 6 | 4 |
PC.polymorph_attack#
Fixed attack bonus of Polymorph spells, heightened to the top rank available to a full caster character. Only used if higher than the character’s own unarmed attack bonus.
Coordinates:
level (int): PC level in the range [1, 20]
Data variables:
animal (level) (int): Animal Form / Untamed Form
insect (level) (int): Insect Form / Insect Shape1
dinosaur (level) (int): Dinosaur Form / Ferocious Shape1
aerial (level) (int): Aerial Form / Soaring Shape1
plant (level) (int): Plant Form / Plant Shape1
elemental (level) (int): Elemental Form / Elemental Shape1
dragon (level) (int): Dragon Form / Dragon Shape1
monstrosity (level) (int): Monstrosity Form / Monstrosity Shape1
ooze (level) (int): Ooze Form
fey (level) (int): Fey Form
aberrant (level) (int): Aberrant Form
daemon (level) (int): Daemon Form
demon (level) (int): Demon Form
devil (level) (int): Devil Form
sacred (level) (int): Sacred Form
angel (level) (int): Angel Form
cosmic (level) (int): Cosmic Form
avatar (level) (int): Avatar
element_embodied (level) (int): Element Embodied
nature_incarnate (level) (int): Nature Incarnate / True Shapeshifter1
Notes:
1 This form is available as a focus spell through a feat one level after the slot spell becomes available.
See PC.untamed_druid_attack below.
pf2.tables.PC.polymorph_attack.display()
| variable | animal | insect | dinosaur | aerial | plant | elemental | dragon | monstrosity | ooze | fey | aberrant | daemon | demon | devil | sacred | angel | cosmic | avatar | element_embodied | nature_incarnate |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| level | ||||||||||||||||||||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 5 | 14 | 13 | 0 | 0 | 0 | 0 | 0 | 0 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 6 | 14 | 13 | 0 | 0 | 0 | 0 | 0 | 0 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 7 | 16 | 16 | 16 | 16 | 0 | 0 | 0 | 0 | 16 | 16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 8 | 16 | 16 | 16 | 16 | 0 | 0 | 0 | 0 | 16 | 16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9 | 18 | 18 | 18 | 18 | 17 | 18 | 0 | 0 | 18 | 16 | 18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 10 | 18 | 18 | 18 | 18 | 17 | 18 | 0 | 0 | 18 | 16 | 18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 11 | 18 | 18 | 18 | 21 | 21 | 23 | 22 | 0 | 18 | 16 | 22 | 21 | 22 | 20 | 21 | 0 | 0 | 0 | 0 | 0 |
| 12 | 18 | 18 | 18 | 21 | 21 | 23 | 22 | 0 | 18 | 16 | 22 | 21 | 22 | 20 | 21 | 0 | 0 | 0 | 0 | 0 |
| 13 | 18 | 18 | 25 | 21 | 21 | 25 | 22 | 0 | 18 | 16 | 22 | 21 | 22 | 20 | 21 | 25 | 25 | 0 | 0 | 0 |
| 14 | 18 | 18 | 25 | 21 | 21 | 25 | 22 | 0 | 18 | 16 | 22 | 21 | 22 | 20 | 21 | 25 | 25 | 0 | 0 | 0 |
| 15 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 28 | 28 | 16 | 22 | 21 | 22 | 20 | 21 | 25 | 25 | 0 | 0 | 0 |
| 16 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 28 | 28 | 16 | 22 | 21 | 22 | 20 | 21 | 25 | 25 | 0 | 0 | 0 |
| 17 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 | 28 | 16 | 22 | 21 | 22 | 20 | 21 | 30 | 25 | 0 | 0 | 0 |
| 18 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 | 28 | 16 | 22 | 21 | 22 | 20 | 21 | 30 | 25 | 0 | 0 | 0 |
| 19 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 | 28 | 16 | 22 | 21 | 22 | 20 | 21 | 30 | 25 | 33 | 34 | 34 |
| 20 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 | 28 | 16 | 22 | 21 | 22 | 20 | 21 | 30 | 25 | 33 | 34 | 34 |
PC.rage#
Rage damage bonus
Coordinates:
level (int): PC level in the range [1, 20]
drained (int): Drained condition, for Bloodrager instinct
vs (str): [spellcasters, others]: target type for Superstition instinct
Data variables:
bloodrager_weapon (level) (int): Bloodrager’s bonus damage to weapon Strikes
bloodrager_bleed (level) (int): Bloodrager’s bonus persistent bleed damage to weapon Strikes
bloodrager_spells (level, drained) (int): Bloodrager’s bonus damage to attack spells
superstition (level, vs) (int): Superstition instinct’s damage against different types of targets
(other instincts) (level): flat damage bonus for all other instincts
pf2.tables.PC.rage.display()
| variable | animal | bloodrager_weapon | bloodrager_bleed | bloodrager_spells | dragon | elemental | fury | giant | spirit | superstition | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| drained | 0 | 1 | 2 | ||||||||||
| vs | spellcasters | others | |||||||||||
| level | |||||||||||||
| 1 | 2 | 2 | 1 | 0 | 0 | 0 | 4 | 4 | 3 | 6 | 3 | 4 | 3 |
| 2 | 2 | 2 | 1 | 2 | 2 | 2 | 4 | 4 | 3 | 6 | 3 | 4 | 3 |
| 3 | 2 | 2 | 1 | 2 | 2 | 2 | 4 | 4 | 3 | 6 | 3 | 4 | 3 |
| 4 | 2 | 2 | 1 | 2 | 3 | 3 | 4 | 4 | 3 | 6 | 3 | 4 | 3 |
| 5 | 2 | 2 | 1 | 2 | 3 | 3 | 4 | 4 | 3 | 6 | 3 | 4 | 3 |
| 6 | 2 | 2 | 1 | 2 | 3 | 3 | 4 | 4 | 3 | 6 | 3 | 4 | 3 |
| 7 | 5 | 4 | 2 | 4 | 5 | 5 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 8 | 5 | 4 | 2 | 4 | 5 | 5 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 9 | 5 | 4 | 2 | 4 | 5 | 5 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 10 | 5 | 4 | 2 | 4 | 5 | 5 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 11 | 5 | 4 | 2 | 4 | 5 | 5 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 12 | 5 | 4 | 2 | 4 | 5 | 7 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 13 | 5 | 4 | 2 | 4 | 5 | 7 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 14 | 5 | 4 | 2 | 4 | 5 | 7 | 8 | 6 | 7 | 10 | 7 | 8 | 7 |
| 15 | 12 | 8 | 4 | 8 | 9 | 11 | 16 | 12 | 13 | 18 | 13 | 16 | 13 |
| 16 | 12 | 8 | 4 | 8 | 9 | 11 | 16 | 12 | 13 | 18 | 13 | 16 | 13 |
| 17 | 12 | 8 | 4 | 8 | 9 | 11 | 16 | 12 | 13 | 18 | 13 | 16 | 13 |
| 18 | 12 | 8 | 4 | 8 | 9 | 22 | 16 | 12 | 13 | 18 | 13 | 16 | 13 |
| 19 | 12 | 8 | 4 | 8 | 9 | 22 | 16 | 12 | 13 | 18 | 13 | 16 | 13 |
| 20 | 12 | 8 | 4 | 8 | 9 | 22 | 16 | 12 | 13 | 18 | 13 | 16 | 13 |
PC.skill_item_bonus#
Permanent item bonus from items that give blanket +1/+2/+3 to all actions of that skill.
Note: this table is for Pathfinder only.
Coordinates:
level (int): Item level in the range [1, 20]. It is assumed players will acquire this item as soon as their level allows.
Data variables:
(skill) (level) (int): Item bonus applied to the skill
Notes:
For Disarm, Grapple, Trip, and Shove checks made through a weapon with the matching trait, use
PC.attack_item_bonusinstead.This table does not include items that only grant a bonus to one action or only in specific circumstances.
This table does not include item bonuses from consumables, which are typically available when an Alchemist is in the party.
pf2.tables.PC.skill_item_bonus.display()
| variable | acrobatics | arcana | athletics | craft | deception | diplomacy | intimidation | medicine | nature | occultism | performance | religion | society | stealth | survival | thievery |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| level | ||||||||||||||||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
| 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
| 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
| 6 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 7 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 9 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 1 | 2 | 2 | 2 |
| 10 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 11 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 12 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 13 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 14 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 15 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 16 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 17 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 3 | 3 | 2 | 3 | 2 | 3 |
| 18 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 3 | 2 | 3 |
| 19 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 3 | 2 | 3 |
| 20 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 3 | 2 | 3 |
PC.skill_proficiency#
Skill Proficiency bonus, not including level. This table assumes that important skills are Trained at level 1 and then they are increased at every possible occasion, in order of importance.
Coordinates:
level (int): PC level in the range [1, 20]
priority (int): [1, 2, 3, 4, 5, 6]; smallest is highest. E.g. Priority 1 is the one that will be increased first.
Data variables:
envoy (level, priority) (int): Skill progression for Starfinder Envoys.
rogue (level, priority) (int): Skill progression for Pathfinder Rogues.
others (level, priority) (int): Skill progression for all other Pathfinder and Starfinder classes.
spellcaster_dedication (level, priority) (int) Skill progression for a class other than Envoy or Rogue with a Spellcaster dedication, who needs to make room to satisfy the Prerequisites for Expert Spellcasting by level 12 and Master Spellcasting by level 18, and the skill associated with the spellcasting dedication has the lowest possible priority (3) without delaying feat acquisition.
Notes:
This table does not cover suboptimal choices, like sacrificing the increase of a skill to Expert in order to get an extra skill at Trained.
As classes other than Envoy and Rogue can only maximize 3 skills, priority 4, 5, and 6 are padded with 0s for them due to the design constraints of
xarray.Dataset.
pf2.tables.PC.skill_proficiency.display()
| variable | envoy | rogue | others | spellcaster_dedication | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| priority | 1 | 2 | 3 | 4 | 5 | 6 | 1 | 2 | 3 | 4 | 5 | 6 | 1 | 2 | 3 | 4 | 5 | 6 | 1 | 2 | 3 | 4 | 5 | 6 |
| level | ||||||||||||||||||||||||
| 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 0 | 0 | 0 | 2 | 2 | 0 | 0 | 0 | 0 |
| 2 | 4 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 0 | 0 | 0 | 2 | 2 | 2 | 0 | 0 | 0 |
| 3 | 4 | 4 | 2 | 2 | 2 | 2 | 4 | 4 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 0 | 0 | 4 | 2 | 2 | 0 | 0 | 0 |
| 4 | 4 | 4 | 4 | 2 | 2 | 2 | 4 | 4 | 4 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 0 | 0 | 4 | 2 | 2 | 0 | 0 | 0 |
| 5 | 4 | 4 | 4 | 4 | 2 | 2 | 4 | 4 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 0 | 0 | 0 | 4 | 4 | 2 | 0 | 0 | 0 |
| 6 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 | 2 | 0 | 0 | 0 | 4 | 4 | 2 | 0 | 0 | 0 |
| 7 | 6 | 4 | 4 | 4 | 4 | 2 | 6 | 4 | 4 | 4 | 4 | 2 | 6 | 4 | 2 | 0 | 0 | 0 | 6 | 4 | 2 | 0 | 0 | 0 |
| 8 | 6 | 6 | 4 | 4 | 4 | 2 | 6 | 6 | 4 | 4 | 4 | 2 | 6 | 4 | 2 | 0 | 0 | 0 | 6 | 4 | 2 | 0 | 0 | 0 |
| 9 | 6 | 6 | 6 | 4 | 4 | 2 | 6 | 6 | 6 | 4 | 4 | 2 | 6 | 6 | 2 | 0 | 0 | 0 | 6 | 4 | 4 | 0 | 0 | 0 |
| 10 | 6 | 6 | 6 | 6 | 4 | 2 | 6 | 6 | 6 | 6 | 4 | 2 | 6 | 6 | 2 | 0 | 0 | 0 | 6 | 4 | 4 | 0 | 0 | 0 |
| 11 | 6 | 6 | 6 | 6 | 6 | 2 | 6 | 6 | 6 | 6 | 6 | 2 | 6 | 6 | 4 | 0 | 0 | 0 | 6 | 4 | 6 | 0 | 0 | 0 |
| 12 | 6 | 6 | 6 | 6 | 6 | 4 | 6 | 6 | 6 | 6 | 6 | 4 | 6 | 6 | 4 | 0 | 0 | 0 | 6 | 4 | 6 | 0 | 0 | 0 |
| 13 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 0 | 0 | 0 | 6 | 6 | 6 | 0 | 0 | 0 |
| 14 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 0 | 0 | 0 | 6 | 6 | 6 | 0 | 0 | 0 |
| 15 | 8 | 6 | 6 | 6 | 6 | 6 | 8 | 6 | 6 | 6 | 6 | 6 | 8 | 6 | 6 | 0 | 0 | 0 | 8 | 6 | 6 | 0 | 0 | 0 |
| 16 | 8 | 8 | 6 | 6 | 6 | 6 | 8 | 8 | 6 | 6 | 6 | 6 | 8 | 6 | 6 | 0 | 0 | 0 | 8 | 6 | 6 | 0 | 0 | 0 |
| 17 | 8 | 8 | 8 | 6 | 6 | 6 | 8 | 8 | 8 | 6 | 6 | 6 | 8 | 8 | 6 | 0 | 0 | 0 | 8 | 6 | 8 | 0 | 0 | 0 |
| 18 | 8 | 8 | 8 | 8 | 6 | 6 | 8 | 8 | 8 | 8 | 6 | 6 | 8 | 8 | 6 | 0 | 0 | 0 | 8 | 6 | 8 | 0 | 0 | 0 |
| 19 | 8 | 8 | 8 | 8 | 8 | 6 | 8 | 8 | 8 | 8 | 8 | 6 | 8 | 8 | 8 | 0 | 0 | 0 | 8 | 8 | 8 | 0 | 0 | 0 |
| 20 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 0 | 0 | 0 | 8 | 8 | 8 | 0 | 0 | 0 |
PC.spell_proficiency#
Proficiency bonus to Spell DC and attack, not including level.
Coordinates:
level (int): PC level in the range [1, 20]
doctrine (str): Cleric doctrines
Data variables:
cleric (level, doctrine) (int): Progression for clerics, depending on their doctrine
(class name) (level) (int): Progression for all other Pathfinder and Starfinder spellcasting classes
dedication (level) (int): Progression for all spellcaster dedications
pf2.tables.PC.spell_proficiency.display()
| variable | animist | bard | cleric | druid | magus | oracle | psychic | sorcerer | summoner | witch | wizard | mystic | witchwarper | dedication | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| doctrine | battle creed | cloistered cleric | warpriest | |||||||||||||
| level | ||||||||||||||||
| 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 5 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 6 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 7 | 4 | 4 | 2 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 2 |
| 8 | 4 | 4 | 2 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 2 |
| 9 | 4 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 |
| 10 | 4 | 4 | 2 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 |
| 11 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 |
| 12 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
| 13 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
| 14 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
| 15 | 6 | 6 | 4 | 6 | 4 | 6 | 4 | 6 | 6 | 6 | 4 | 6 | 6 | 6 | 6 | 4 |
| 16 | 6 | 6 | 4 | 6 | 4 | 6 | 4 | 6 | 6 | 6 | 4 | 6 | 6 | 6 | 6 | 4 |
| 17 | 6 | 6 | 4 | 6 | 4 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 4 |
| 18 | 6 | 6 | 4 | 6 | 4 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
| 19 | 8 | 8 | 4 | 8 | 6 | 8 | 6 | 8 | 8 | 8 | 6 | 8 | 8 | 8 | 8 | 6 |
| 20 | 8 | 8 | 4 | 8 | 6 | 8 | 6 | 8 | 8 | 8 | 6 | 8 | 8 | 8 | 8 | 6 |
PC.untamed_druid_attack#
Fixed attack bonus of Polymorph spells as they are made available by the Untamed Form focus spell and its upgrade feats. This table differs from PC.polymorph_attack_bonus as the levels where a form starts being available are those given by the Feat that unlocks it as a Focus spell, rather than the levels where they become available as slot spells (which is one level earlier).
Coordinates:
level (int): PC level in the range [1, 20]
Data variables:
animal (level) (int): Animal Form / Untamed Form
insect (level) (int): Insect Form / Insect Shape
dinosaur (level) (int): Dinosaur Form / Ferocious Shape
aerial (level) (int): Aerial Form / Soaring Shape
plant (level) (int): Plant Form / Plant Shape
elemental (level) (int): Elemental Form / Elemental Shape
dragon (level) (int): Dragon Form / Dragon Shape
monstrosity (level) (int): Monstrosity Form / Monstrosity Shape
pf2.tables.PC.untamed_druid_attack.display()
| variable | animal | insect | dinosaur | aerial | plant | elemental | dragon | monstrosity |
|---|---|---|---|---|---|---|---|---|
| level | ||||||||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 5 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 6 | 14 | 13 | 0 | 0 | 0 | 0 | 0 | 0 |
| 7 | 16 | 16 | 0 | 0 | 0 | 0 | 0 | 0 |
| 8 | 16 | 16 | 16 | 16 | 0 | 0 | 0 | 0 |
| 9 | 18 | 18 | 18 | 18 | 0 | 0 | 0 | 0 |
| 10 | 18 | 18 | 18 | 18 | 17 | 18 | 0 | 0 |
| 11 | 18 | 18 | 18 | 21 | 21 | 23 | 0 | 0 |
| 12 | 18 | 18 | 18 | 21 | 21 | 23 | 22 | 0 |
| 13 | 18 | 18 | 25 | 21 | 21 | 25 | 22 | 0 |
| 14 | 18 | 18 | 25 | 21 | 21 | 25 | 22 | 0 |
| 15 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 0 |
| 16 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 28 |
| 17 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 |
| 18 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 |
| 19 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 |
| 20 | 18 | 18 | 25 | 21 | 21 | 25 | 28 | 31 |
PC.weapon_dice#
Weapon damage dice. This table assumes that players will acquire the best items available as soon as their level allows.
Coordinates:
level (int): Item level in the range [1, 20]
Data variables:
striking_rune (level) (int): Number of weapon dice from a permanent Striking rune or Striking Solarian crystal. Before the rune/crystal becomes available at level 4, weapon dice of non-magical weapons.
improvement (level) (int): Number of weapon dice from a permanent Starfinder weapon improvement
bomb (level) (int): Number of weapon dice for all alchemical bombs
bestial_mutagen_dice (level) (int): Number of weapon dice for Bestial Mutagen.
bestial_mutagen_faces (level) (int): Dice size for Bestial Mutagen
Notes:
See PC.attack_item_bonus for item attack bonuses.
pf2.tables.PC.weapon_dice.display()
| variable | striking_rune | improvement | bomb | bestial_mutagen_dice | bestial_mutagen_faces |
|---|---|---|---|---|---|
| level | |||||
| 1 | 1 | 1 | 1 | 1 | 6 |
| 2 | 1 | 1 | 1 | 1 | 6 |
| 3 | 1 | 1 | 2 | 2 | 8 |
| 4 | 2 | 2 | 2 | 2 | 8 |
| 5 | 2 | 2 | 2 | 2 | 8 |
| 6 | 2 | 2 | 2 | 2 | 8 |
| 7 | 2 | 2 | 2 | 2 | 8 |
| 8 | 2 | 2 | 2 | 2 | 8 |
| 9 | 2 | 2 | 2 | 2 | 8 |
| 10 | 2 | 2 | 2 | 2 | 8 |
| 11 | 2 | 2 | 3 | 3 | 10 |
| 12 | 3 | 3 | 3 | 3 | 10 |
| 13 | 3 | 3 | 3 | 3 | 10 |
| 14 | 3 | 3 | 3 | 3 | 10 |
| 15 | 3 | 3 | 3 | 3 | 10 |
| 16 | 3 | 3 | 3 | 3 | 10 |
| 17 | 3 | 3 | 4 | 4 | 10 |
| 18 | 3 | 3 | 4 | 4 | 10 |
| 19 | 4 | 4 | 4 | 4 | 10 |
| 20 | 4 | 4 | 4 | 4 | 10 |
PC.weapon_proficiency#
Proficiency in weapon Strikes, not including level.
Coordinates:
level (int): PC level in the range [1, 20]
doctrine (str): Cleric doctrines
mastery (bool) Superior proficiency of fighters, gunslingers, and operatives in some weapons
category (str): [martial, advanced]. Use
martialfor simple weapons and unarmed attacks, as well as for advanced weapons with ancestral weapon familiarity.
Data variables:
cleric (level, doctrine) (int): Cleric, depending on their doctrine
fighter (level, category, mastery) (int): Fighter proficiency in their mastery weapons vs. all other weapons.
category="advanced"is for Advanced weapons without ancestral weapon familiarity; it is assumed one takes the level 6 feat Advanced Weapon Training to boost proficiency. Everything else should fall intocategory="martial".gunslinger (level, category, mastery) (int): Gunslinger proficiency in firearms, crossbows and combination weapons vs. all other weapons.
category="advanced"is for Advanced weapons without ancestral weapon familiarity; it is assumed one takes the level 6 feat Advanced Shooter to boost proficiency. Everything else should fall intocategory="martial".operative (level, category, mastery) (int): Operative proficiency in firearms vs. all other weapons.
category="advanced"is for Advanced weapons without ancestral weapon familiarity. Everything else should fall intocategory="martial".(class name) (level) (int): All other Pathfinder and Starfinder classes
fighter_dedication (level) (int): Fighter Archetype
operative_dedication (level) (int): Operative Archetype
weapon_proficiency (level) (int): Weapon Proficiency feat
pf2.tables.PC.weapon_proficiency.display()
| variable | alchemist | animist | barbarian | bard | champion | cleric | commander | druid | exemplar | fighter | guardian | gunslinger | inventor | investigator | kineticist | magus | monk | oracle | psychic | ranger | rogue | sorcerer | summoner | swashbuckler | thaumaturge | witch | wizard | envoy | mystic | operative | solarian | soldier | witchwarper | fighter_dedication | operative_dedication | weapon_proficiency | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| doctrine | battle creed | cloistered cleric | warpriest | ||||||||||||||||||||||||||||||||||||||||||||
| category | martial | advanced | martial | advanced | martial | advanced | |||||||||||||||||||||||||||||||||||||||||
| mastery | True | False | True | False | True | False | True | False | True | False | True | False | |||||||||||||||||||||||||||||||||||
| level | |||||||||||||||||||||||||||||||||||||||||||||||
| 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 4 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 |
| 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 4 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 |
| 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 4 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 |
| 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 4 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 2 | 2 | 0 | 2 | 2 | 2 | 2 | 2 | 2 |
| 5 | 2 | 2 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 6 | 4 | 4 | 2 | 4 | 6 | 4 | 4 | 0 | 4 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 2 | 4 | 2 | 6 | 2 | 4 | 0 | 4 | 4 | 2 | 2 | 2 | 2 |
| 6 | 2 | 2 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 2 | 4 | 6 | 4 | 6 | 4 | 4 | 6 | 4 | 6 | 0 | 4 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 2 | 4 | 2 | 6 | 2 | 4 | 0 | 4 | 4 | 2 | 2 | 2 | 2 |
| 7 | 4 | 2 | 4 | 2 | 4 | 4 | 2 | 4 | 4 | 2 | 4 | 6 | 4 | 6 | 4 | 4 | 6 | 4 | 6 | 0 | 4 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 2 | 4 | 2 | 6 | 2 | 4 | 0 | 4 | 4 | 2 | 2 | 2 | 2 |
| 8 | 4 | 2 | 4 | 2 | 4 | 4 | 2 | 4 | 4 | 2 | 4 | 6 | 4 | 6 | 4 | 4 | 6 | 4 | 6 | 0 | 4 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 2 | 4 | 2 | 6 | 2 | 4 | 0 | 4 | 4 | 2 | 2 | 2 | 2 |
| 9 | 4 | 2 | 4 | 2 | 4 | 4 | 2 | 4 | 4 | 2 | 4 | 6 | 4 | 6 | 4 | 4 | 6 | 4 | 6 | 0 | 4 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 2 | 4 | 2 | 6 | 2 | 4 | 0 | 4 | 4 | 2 | 2 | 2 | 2 |
| 10 | 4 | 2 | 4 | 2 | 4 | 4 | 2 | 4 | 4 | 2 | 4 | 6 | 4 | 6 | 4 | 4 | 6 | 4 | 6 | 0 | 4 | 4 | 2 | 4 | 4 | 2 | 2 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 2 | 4 | 2 | 6 | 2 | 4 | 0 | 4 | 4 | 2 | 2 | 2 | 2 |
| 11 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 6 | 4 | 6 | 4 | 4 | 6 | 4 | 6 | 0 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 6 | 2 | 4 | 0 | 4 | 4 | 4 | 2 | 2 | 4 |
| 12 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 6 | 4 | 6 | 4 | 4 | 6 | 4 | 6 | 0 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 6 | 2 | 4 | 0 | 4 | 4 | 4 | 4 | 4 | 4 |
| 13 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 4 | 6 | 8 | 6 | 8 | 6 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 6 | 0 | 6 | 4 | 4 | 4 | 4 | 4 |
| 14 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 4 | 6 | 8 | 6 | 8 | 6 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 6 | 0 | 6 | 4 | 4 | 4 | 4 | 4 |
| 15 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 4 | 6 | 8 | 6 | 8 | 6 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 6 | 0 | 6 | 6 | 4 | 4 | 4 | 4 |
| 16 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 4 | 6 | 8 | 6 | 8 | 6 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 6 | 0 | 6 | 6 | 4 | 4 | 4 | 4 |
| 17 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 4 | 6 | 8 | 6 | 8 | 6 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 6 | 0 | 6 | 6 | 4 | 4 | 4 | 4 |
| 18 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 4 | 6 | 8 | 6 | 8 | 6 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 6 | 0 | 6 | 6 | 4 | 4 | 4 | 4 |
| 19 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 6 | 6 | 4 | 6 | 8 | 8 | 8 | 8 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 8 | 0 | 8 | 6 | 4 | 4 | 4 | 4 |
| 20 | 4 | 4 | 6 | 4 | 6 | 6 | 4 | 6 | 6 | 4 | 6 | 8 | 8 | 8 | 8 | 6 | 8 | 6 | 8 | 0 | 6 | 6 | 4 | 6 | 6 | 4 | 4 | 6 | 6 | 4 | 6 | 6 | 6 | 4 | 4 | 6 | 4 | 8 | 4 | 8 | 0 | 8 | 6 | 4 | 4 | 4 | 4 |
PC.weapon_specialization#
Bonus damage from Weapon Specialization.
Coordinates:
level (int): PC level in the range [1, 20]
doctrine (str): Cleric doctrines
mastery (bool): Superior proficiency of fighters and gunslingers in some weapons
category (str): [martial, advanced]. Use
martialfor simple weapons and unarmed attacks, as well as for advanced weapons with ancestral weapon familiarity.
Data variables:
cleric (level, doctrine) (int): Clerics, depending on their doctrines
fighter (level, mastery) (int): Fighters in their mastery weapons and vs. all other martial weapons. For advanced weapons, it is assumed one takes either ancestral weapon familiarity or Advanced Weapon Training to boost proficiency.
gunslinger (level, mastery) (int): Gunslingers in firearms, crossbows, and combination weapons vs. all other weapons. For advanced weapons, it is assumed one takes either ancestral weapon familiarity or Advanced Shooter to boost proficiency.
operative (level, category, mastery) (int): Operatives in guns vs. all other weapons. Note that, unlike fighter and operative, there is no level 6 feat to boost proficiency with advanced guns, so the category impacts damage too.
(class name) (level) (int): All other Pathfinder and Starfinder classes
pf2.tables.PC.weapon_specialization.display()
| variable | alchemist | animist | barbarian | bard | champion | cleric | commander | druid | exemplar | fighter | guardian | gunslinger | inventor | investigator | kineticist | magus | monk | oracle | psychic | ranger | rogue | sorcerer | summoner | swashbuckler | thaumaturge | witch | wizard | envoy | mystic | operative | solarian | soldier | witchwarper | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| doctrine | battle creed | cloistered cleric | warpriest | |||||||||||||||||||||||||||||||||||||
| mastery | True | False | True | False | True | False | ||||||||||||||||||||||||||||||||||
| category | martial | advanced | martial | advanced | ||||||||||||||||||||||||||||||||||||
| level | ||||||||||||||||||||||||||||||||||||||||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 7 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 3 | 2 | 0 | 3 | 2 | 2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 2 | 0 | 2 | 2 | 2 | 0 | 0 | 2 | 0 | 3 | 2 | 0 | 0 | 2 | 2 | 0 |
| 8 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 3 | 2 | 0 | 3 | 2 | 2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 2 | 0 | 2 | 2 | 2 | 0 | 0 | 2 | 0 | 3 | 2 | 0 | 0 | 2 | 2 | 0 |
| 9 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 3 | 2 | 0 | 3 | 2 | 2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 2 | 0 | 2 | 2 | 2 | 0 | 0 | 2 | 0 | 3 | 2 | 0 | 0 | 2 | 2 | 0 |
| 10 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 3 | 2 | 0 | 3 | 2 | 2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 2 | 0 | 2 | 2 | 2 | 0 | 0 | 2 | 0 | 3 | 2 | 0 | 0 | 2 | 2 | 0 |
| 11 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 3 | 2 | 2 | 3 | 2 | 2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 2 | 0 | 2 | 2 | 2 | 0 | 0 | 2 | 0 | 3 | 2 | 0 | 0 | 2 | 2 | 0 |
| 12 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 3 | 2 | 2 | 3 | 2 | 2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 2 | 0 | 2 | 2 | 2 | 0 | 0 | 2 | 0 | 3 | 2 | 0 | 0 | 2 | 2 | 0 |
| 13 | 2 | 2 | 3 | 2 | 3 | 3 | 2 | 2 | 3 | 2 | 3 | 4 | 3 | 3 | 4 | 3 | 3 | 3 | 2 | 3 | 3 | 2 | 2 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 2 | 3 | 2 | 4 | 3 | 2 | 0 | 3 | 2 | 2 |
| 14 | 2 | 2 | 3 | 2 | 3 | 3 | 2 | 2 | 3 | 2 | 3 | 4 | 3 | 3 | 4 | 3 | 3 | 3 | 2 | 3 | 3 | 2 | 2 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 2 | 3 | 2 | 4 | 3 | 2 | 0 | 3 | 2 | 2 |
| 15 | 3 | 2 | 6 | 2 | 6 | 3 | 2 | 2 | 6 | 2 | 6 | 8 | 6 | 3 | 8 | 6 | 6 | 6 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 6 | 6 | 6 | 2 | 2 | 6 | 2 | 8 | 6 | 4 | 0 | 6 | 3 | 2 |
| 16 | 3 | 2 | 6 | 2 | 6 | 3 | 2 | 2 | 6 | 2 | 6 | 8 | 6 | 3 | 8 | 6 | 6 | 6 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 6 | 6 | 6 | 2 | 2 | 6 | 2 | 8 | 6 | 4 | 0 | 6 | 3 | 2 |
| 17 | 3 | 2 | 6 | 2 | 6 | 3 | 2 | 2 | 6 | 2 | 6 | 8 | 6 | 6 | 8 | 6 | 6 | 6 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 6 | 6 | 6 | 2 | 2 | 6 | 2 | 8 | 6 | 4 | 0 | 6 | 3 | 2 |
| 18 | 3 | 2 | 6 | 2 | 6 | 3 | 2 | 2 | 6 | 2 | 6 | 8 | 6 | 6 | 8 | 6 | 6 | 6 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 6 | 6 | 6 | 2 | 2 | 6 | 2 | 8 | 6 | 4 | 0 | 6 | 3 | 2 |
| 19 | 3 | 2 | 6 | 2 | 6 | 3 | 2 | 3 | 6 | 2 | 6 | 8 | 8 | 6 | 8 | 6 | 6 | 6 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 6 | 6 | 6 | 2 | 2 | 6 | 2 | 8 | 8 | 4 | 0 | 8 | 3 | 2 |
| 20 | 3 | 2 | 6 | 2 | 6 | 3 | 2 | 3 | 6 | 2 | 6 | 8 | 8 | 6 | 8 | 6 | 6 | 6 | 2 | 6 | 6 | 2 | 2 | 6 | 6 | 2 | 6 | 6 | 6 | 2 | 2 | 6 | 2 | 8 | 8 | 4 | 0 | 8 | 3 | 2 |
PC.level#
This is a DataArray that just contains the level, to be added to proficiency bonuses.
Coordinates:
level (int): PC level in the range [1, 20]
pf2.tables.PC.level.display(transpose=True)
| level | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| variable | ||||||||||||||||||||
| values | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
SIMPLE_PC#
Because adding up all the components of a PC’s bonuses can be tedious and error-prone, the variant tables SIMPLE_NPC make a bunch of (opinable) choices for you, presenting you with just the total.
pf2.tables.SIMPLE_PC
- area_fire_DC
- class_DC
- impulse_DC
- impulse_attack_bonus
- spell_DC
- spell_attack_bonus
- weapon_attack_bonus
For example, we can rebuild our rogue’s progression from before much quicker (but with less control):
pf2.tables.SIMPLE_PC.weapon_attack_bonus.rogue.sum("component").display(transpose=True)
| level | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| variable | ||||||||||||||||||||
| rogue | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 26 | 27 | 28 | 30 | 32 | 33 | 34 | 36 |
SIMPLE_PC.weapon_attack_bonus#
Typical total bonus to weapon strikes, by class and level.
Coordinates:
level (int): PC level in the range [1, 20]
component (str): Breakdown of each bonus, for debugging purposes. You typically want the total of all components:
pf2.tables.SIMPLE_PC.weapon_attack_bonus.sum("component")research_field (str): Alchemist subclass
doctrine (str): Cleric subclass
mastery (bool): Superior proficiency of fighters and gunslingers in some weapons
category (str): [martial, advanced]. Use
martialfor simple weapons and unarmed attacks, as well as for advanced weapons with ancestral weapon familiarity.ability (str): Ability used for the attack bonus (STR or DEX). Only used in classes where it makes sense to have both.
Data variables:
alchemist (level, component, research_field) (int): Attack bonus for the Alchemist, by subclass
cleric (level, component, doctrine) (int): Attack bonus for the Cleric, by subclass
fighter (level, component, category, mastery) (int): Attack bonus for the Fighter. On/off mastery is presented side by side; this can be useful e.g. to Double Slice with a sword and shield. It is assumed that the class ability, the apex item, and all weapons are either STR or DEX.
category="advanced"is for Advanced weapons without ancestral weapon familiarity; it is assumed one takes the level 6 feat Advanced Weapon Training to boost proficiency. Everything else should fall intocategory="martial".gunslinger (level, component, category, mastery, ability) (int): Attack bonus for the Gunslinger:
mastery=True, ability=DEX: firearms, crossbows, and finesse melee combination weapons. Uses apex item.
mastery=True, ability=STR: other melee combination weapons (not finesse).
mastery=False, ability=DEX: finesse melee weapons (not combination). Uses apex item.
mastery=False, ability=STR: other melee weapons (not finesse, not combination)
category="advanced"is for Advanced weapons without ancestral weapon familiarity; it is assumed one takes the level 6 feat Advanced Shooter to boost proficiency. Everything else should fall intocategory="martial".operative (level, component, category, mastery) (int): Attack bonus for the Operative:
mastery=True: guns.
mastery=False: other weapons (finesse if melee).
category="advanced"is for Advanced weapons without ancestral weapon familiarity; everything else should fall intocategory="martial".(class name) (level, component) (int): Attack bonus for all other Pathfinder and Starfinder classes
Assumptions:
Martial classes dedicate their best ability boosts (+4 at level 1 whenever possible) and their apex item to boost their STR or DEX
Pure spellcasting classes use their second-best ability boosts (+3 at level 1), but reserve the apex item to improve their spellcasting DC
Alchemists, Maguses, Inventors, Investigators, Thaumaturges and Envoys use their apex items to boost STR or DEX (at the expense of their class DC / spell DC).
Kineticists and Soldiers start with 3 boosts in their attack attribute (either STR or DEX), but reserve the apex item to improve their CON.
pf2.tables.SIMPLE_PC.weapon_attack_bonus
<xarray.Dataset> Size: 42kB
Dimensions: (component: 5, level: 20, research_field: 4, doctrine: 3,
category: 2, mastery: 2, ability: 2)
Coordinates:
* component (component) <U14 280B 'level' 'proficiency' ... 'item'
* level (level) int64 160B 1 2 3 4 5 6 7 8 ... 14 15 16 17 18 19 20
* research_field (research_field) <U12 192B 'bomber' ... 'toxicologist'
* doctrine (doctrine) <U17 204B 'battle creed' ... 'warpriest'
* category (category) <U8 64B 'martial' 'advanced'
* mastery (mastery) bool 2B True False
* ability (ability) <U3 24B 'DEX' 'STR'
Data variables: (12/33)
alchemist (level, component, research_field) int64 3kB 1 1 1 ... 3 4 3
animist (level, component) int64 800B 1 2 3 0 0 2 2 ... 3 20 4 5 0 3
barbarian (level, component) int64 800B 1 2 4 0 0 2 2 ... 3 20 6 6 1 3
bard (level, component) int64 800B 1 2 3 0 0 2 2 ... 3 20 4 5 0 3
champion (level, component) int64 800B 1 2 4 0 0 2 2 ... 3 20 6 6 1 3
cleric (level, component, doctrine) int64 2kB 1 1 1 2 2 ... 0 3 3 3
... ...
summoner (level, component) int64 800B 1 2 4 0 0 2 2 ... 3 20 6 6 0 3
swashbuckler (level, component) int64 800B 1 2 4 0 0 2 2 ... 3 20 6 6 1 3
thaumaturge (level, component) int64 800B 1 2 3 0 0 2 2 ... 3 20 6 5 1 3
witch (level, component) int64 800B 1 2 3 0 0 2 2 ... 3 20 4 5 0 3
witchwarper (level, component) int64 800B 1 2 3 0 0 2 2 ... 3 20 4 5 0 3
wizard (level, component) int64 800B 1 2 3 0 0 2 2 ... 3 20 4 5 0 3For example, a typical barbarian’s attack bonus is broken down as follows:
pf2.tables.SIMPLE_PC.weapon_attack_bonus.barbarian.display()
| variable | barbarian | ||||
|---|---|---|---|---|---|
| component | level | proficiency | ability_boosts | ability_apex | item |
| level | |||||
| 1 | 1 | 2 | 4 | 0 | 0 |
| 2 | 2 | 2 | 4 | 0 | 1 |
| 3 | 3 | 2 | 4 | 0 | 1 |
| 4 | 4 | 2 | 4 | 0 | 1 |
| 5 | 5 | 4 | 4 | 0 | 1 |
| 6 | 6 | 4 | 4 | 0 | 1 |
| 7 | 7 | 4 | 4 | 0 | 1 |
| 8 | 8 | 4 | 4 | 0 | 1 |
| 9 | 9 | 4 | 4 | 0 | 1 |
| 10 | 10 | 4 | 5 | 0 | 2 |
| 11 | 11 | 4 | 5 | 0 | 2 |
| 12 | 12 | 4 | 5 | 0 | 2 |
| 13 | 13 | 6 | 5 | 0 | 2 |
| 14 | 14 | 6 | 5 | 0 | 2 |
| 15 | 15 | 6 | 5 | 0 | 2 |
| 16 | 16 | 6 | 5 | 0 | 3 |
| 17 | 17 | 6 | 5 | 1 | 3 |
| 18 | 18 | 6 | 5 | 1 | 3 |
| 19 | 19 | 6 | 5 | 1 | 3 |
| 20 | 20 | 6 | 6 | 1 | 3 |
SIMPLE_PC.spell_attack_bonus#
Typical total bonus to spell attacks, by class and level.
Coordinates:
level (int): PC level in the range [1, 20]
component (str): Breakdown of each bonus, for debugging purposes. You typically want the total of all components:
pf2.tables.SIMPLE_PC.spell_attack_bonus.sum("component")doctrine (str): Cleric subclass
Data variables:
cleric (level, component, doctrine) (int): Attack bonus for the Cleric, by subclass
(class name) (level, component) (int): Attack bonus for all other classes
Assumptions:
Pure spellcasting classes use their best ability boosts (+4 at level 1) and an apex item to improve their spellcasting DC.
Martial classes take up all the feats of a spellcaster archetype and use their second-best ability boosts (+3 at level 1) for the spellcasting ability.
Alchemists, Inventors, and Investigators choose an INT-based spellcasting dedication, to benefit from 4 boosts at level 1.
Thaumaturges and Envoys choose a CHA-based spellcasting dedication for the same reason.
All but pure spellcasters reserve their apex item to boost STR, DEX, or CON. This choice is coherent with the
weapon_attack_bonustable.
pf2.tables.SIMPLE_PC.spell_attack_bonus
<xarray.Dataset> Size: 23kB
Dimensions: (component: 4, level: 20, doctrine: 3)
Coordinates:
* component (component) <U14 224B 'level' 'proficiency' ... 'ability_apex'
* level (level) int64 160B 1 2 3 4 5 6 7 8 ... 13 14 15 16 17 18 19 20
* doctrine (doctrine) <U17 204B 'battle creed' ... 'warpriest'
Data variables: (12/33)
alchemist (level, component) int64 640B 1 2 4 0 2 2 4 ... 6 5 0 20 6 6 0
animist (level, component) int64 640B 1 2 4 0 2 2 4 ... 8 5 1 20 8 6 1
barbarian (level, component) int64 640B 1 2 3 0 2 2 3 ... 6 5 0 20 6 5 0
bard (level, component) int64 640B 1 2 4 0 2 2 4 ... 6 5 1 20 6 6 1
champion (level, component) int64 640B 1 2 3 0 2 2 3 ... 6 5 0 20 6 5 0
cleric (level, component, doctrine) int64 2kB 1 1 1 2 2 ... 6 6 0 1 1
... ...
summoner (level, component) int64 640B 1 2 4 0 2 2 4 ... 6 5 0 20 6 6 0
swashbuckler (level, component) int64 640B 1 2 4 0 2 2 4 ... 6 5 1 20 6 6 1
thaumaturge (level, component) int64 640B 1 2 3 0 2 2 3 ... 6 5 0 20 6 5 0
witch (level, component) int64 640B 1 2 3 0 2 2 3 ... 8 5 0 20 8 5 0
witchwarper (level, component) int64 640B 1 2 3 0 2 2 3 ... 8 5 0 20 8 5 0
wizard (level, component) int64 640B 1 2 4 0 2 2 4 ... 8 5 1 20 8 6 1For example, a Wizard’s bonus is broken down as follows:
pf2.tables.SIMPLE_PC.spell_attack_bonus.wizard.display()
| variable | wizard | |||
|---|---|---|---|---|
| component | level | proficiency | ability_boosts | ability_apex |
| level | ||||
| 1 | 1 | 2 | 4 | 0 |
| 2 | 2 | 2 | 4 | 0 |
| 3 | 3 | 2 | 4 | 0 |
| 4 | 4 | 2 | 4 | 0 |
| 5 | 5 | 2 | 4 | 0 |
| 6 | 6 | 2 | 4 | 0 |
| 7 | 7 | 4 | 4 | 0 |
| 8 | 8 | 4 | 4 | 0 |
| 9 | 9 | 4 | 4 | 0 |
| 10 | 10 | 4 | 5 | 0 |
| 11 | 11 | 4 | 5 | 0 |
| 12 | 12 | 4 | 5 | 0 |
| 13 | 13 | 4 | 5 | 0 |
| 14 | 14 | 4 | 5 | 0 |
| 15 | 15 | 6 | 5 | 0 |
| 16 | 16 | 6 | 5 | 0 |
| 17 | 17 | 6 | 5 | 1 |
| 18 | 18 | 6 | 5 | 1 |
| 19 | 19 | 8 | 5 | 1 |
| 20 | 20 | 8 | 6 | 1 |
SIMPLE_PC.spell_DC#
This table is the same as spell_attack_bonus, plus 10 for the base DC offset.
pf2.tables.SIMPLE_PC.spell_DC.sum("component").display()
| variable | alchemist | animist | barbarian | bard | champion | cleric | commander | druid | envoy | exemplar | fighter | guardian | gunslinger | inventor | investigator | kineticist | magus | monk | mystic | operative | oracle | psychic | ranger | rogue | solarian | soldier | sorcerer | summoner | swashbuckler | thaumaturge | witch | witchwarper | wizard | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| doctrine | battle creed | cloistered cleric | warpriest | ||||||||||||||||||||||||||||||||
| level | |||||||||||||||||||||||||||||||||||
| 1 | 17 | 17 | 16 | 17 | 16 | 17 | 17 | 17 | 16 | 17 | 16 | 16 | 16 | 16 | 16 | 17 | 16 | 16 | 16 | 17 | 17 | 16 | 16 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 16 | 16 | 16 | 17 |
| 2 | 18 | 18 | 17 | 18 | 17 | 18 | 18 | 18 | 17 | 18 | 17 | 17 | 17 | 17 | 17 | 18 | 17 | 17 | 17 | 18 | 18 | 17 | 17 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 17 | 17 | 17 | 18 |
| 3 | 19 | 19 | 18 | 19 | 18 | 19 | 19 | 19 | 18 | 19 | 18 | 18 | 18 | 18 | 18 | 19 | 18 | 18 | 18 | 19 | 19 | 18 | 18 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 18 | 18 | 18 | 19 |
| 4 | 20 | 20 | 19 | 20 | 19 | 20 | 20 | 20 | 19 | 20 | 19 | 19 | 19 | 19 | 19 | 20 | 19 | 19 | 19 | 20 | 20 | 19 | 19 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 19 | 19 | 19 | 20 |
| 5 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 |
| 6 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 |
| 7 | 23 | 25 | 23 | 23 | 23 | 23 | 25 | 23 | 23 | 25 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 25 | 23 | 25 | 25 | 23 | 23 | 23 | 23 | 25 | 23 | 23 | 23 | 25 | 25 | 25 |
| 8 | 24 | 26 | 24 | 24 | 24 | 24 | 26 | 24 | 24 | 26 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 26 | 24 | 26 | 26 | 24 | 24 | 24 | 24 | 26 | 24 | 24 | 24 | 26 | 26 | 26 |
| 9 | 25 | 27 | 25 | 25 | 25 | 25 | 27 | 25 | 25 | 27 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 27 | 25 | 27 | 25 | 27 | 27 | 25 | 25 | 25 | 25 | 27 | 27 | 25 | 25 | 27 | 27 | 27 |
| 10 | 27 | 29 | 26 | 27 | 26 | 27 | 29 | 27 | 26 | 29 | 26 | 26 | 26 | 26 | 26 | 27 | 26 | 26 | 28 | 27 | 29 | 26 | 28 | 29 | 27 | 27 | 27 | 27 | 29 | 29 | 27 | 26 | 28 | 28 | 29 |
| 11 | 28 | 30 | 27 | 28 | 27 | 30 | 30 | 30 | 27 | 30 | 27 | 27 | 27 | 27 | 27 | 28 | 27 | 27 | 29 | 28 | 30 | 27 | 29 | 30 | 28 | 28 | 28 | 28 | 30 | 30 | 28 | 27 | 29 | 29 | 30 |
| 12 | 31 | 31 | 30 | 31 | 30 | 31 | 31 | 31 | 30 | 31 | 30 | 30 | 30 | 30 | 30 | 31 | 30 | 30 | 30 | 31 | 31 | 30 | 30 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 30 | 30 | 30 | 31 |
| 13 | 32 | 32 | 31 | 32 | 31 | 32 | 32 | 32 | 31 | 32 | 31 | 31 | 31 | 31 | 31 | 32 | 31 | 31 | 31 | 32 | 32 | 31 | 31 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 31 | 31 | 31 | 32 |
| 14 | 33 | 33 | 32 | 33 | 32 | 33 | 33 | 33 | 32 | 33 | 32 | 32 | 32 | 32 | 32 | 33 | 32 | 32 | 32 | 33 | 33 | 32 | 32 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 32 | 32 | 32 | 33 |
| 15 | 34 | 36 | 34 | 34 | 34 | 34 | 36 | 34 | 34 | 36 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 36 | 34 | 36 | 36 | 34 | 34 | 34 | 34 | 36 | 34 | 34 | 34 | 36 | 36 | 36 |
| 16 | 35 | 37 | 35 | 35 | 35 | 35 | 37 | 35 | 35 | 37 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 37 | 35 | 37 | 37 | 35 | 35 | 35 | 35 | 37 | 35 | 35 | 35 | 37 | 37 | 37 |
| 17 | 36 | 39 | 36 | 37 | 36 | 36 | 39 | 37 | 36 | 39 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 36 | 38 | 37 | 39 | 36 | 38 | 39 | 37 | 36 | 36 | 37 | 39 | 38 | 37 | 36 | 38 | 38 | 39 |
| 18 | 39 | 40 | 39 | 40 | 39 | 37 | 40 | 38 | 39 | 40 | 39 | 39 | 39 | 39 | 39 | 39 | 39 | 39 | 39 | 40 | 40 | 39 | 39 | 40 | 40 | 39 | 39 | 40 | 40 | 39 | 40 | 39 | 39 | 39 | 40 |
| 19 | 40 | 43 | 40 | 41 | 40 | 38 | 43 | 41 | 40 | 43 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 41 | 43 | 40 | 42 | 43 | 41 | 40 | 40 | 41 | 43 | 40 | 41 | 40 | 42 | 42 | 43 |
| 20 | 42 | 45 | 41 | 43 | 41 | 40 | 45 | 43 | 41 | 45 | 41 | 41 | 41 | 41 | 41 | 42 | 41 | 41 | 41 | 43 | 45 | 41 | 43 | 45 | 43 | 42 | 42 | 43 | 45 | 42 | 43 | 41 | 43 | 43 | 45 |
SIMPLE_PC.class_DC#
Typical total bonus to class DC, by class and level.
Coordinates:
level (int): PC level in the range [1, 20]
component (str): Breakdown of each bonus, for debugging purposes. You typically want the total of all components:
pf2.tables.SIMPLE_PC.spell_attack_bonus.sum("component")doctrine (str): Cleric subclass
Data variables:
cleric (level, component, doctrine) (int): Attack bonus for the Cleric, by subclass
(class name) (level, component) (int): Attack bonus for all other classes
Assumptions:
Alchemists, Inventors, Investigators, Thaumaturges, and Envoys use their apex items to boost STR or DEX, at the expense of their class DC.
pf2.tables.SIMPLE_PC.class_DC.sum("component").display()
| variable | alchemist | animist | barbarian | bard | champion | cleric | commander | druid | envoy | exemplar | fighter | guardian | gunslinger | inventor | investigator | kineticist | magus | monk | mystic | operative | oracle | psychic | ranger | rogue | solarian | soldier | sorcerer | summoner | swashbuckler | thaumaturge | witch | witchwarper | wizard | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| doctrine | battle creed | cloistered cleric | warpriest | ||||||||||||||||||||||||||||||||
| level | |||||||||||||||||||||||||||||||||||
| 1 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 | 17 |
| 2 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 | 18 |
| 3 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 |
| 4 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 |
| 5 | 21 | 21 | 21 | 21 | 21 | 23 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 |
| 6 | 22 | 22 | 22 | 22 | 22 | 24 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 |
| 7 | 23 | 23 | 23 | 23 | 23 | 25 | 23 | 25 | 25 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 25 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 25 | 23 | 23 | 23 | 23 | 23 | 25 | 23 |
| 8 | 24 | 24 | 24 | 24 | 24 | 26 | 24 | 26 | 26 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 26 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 24 | 26 | 24 | 24 | 24 | 24 | 24 | 26 | 24 |
| 9 | 27 | 25 | 25 | 25 | 27 | 27 | 25 | 27 | 27 | 25 | 27 | 27 | 25 | 27 | 27 | 27 | 27 | 27 | 25 | 27 | 25 | 25 | 25 | 25 | 27 | 25 | 27 | 27 | 25 | 25 | 27 | 27 | 25 | 27 | 25 |
| 10 | 29 | 27 | 27 | 27 | 29 | 29 | 27 | 29 | 29 | 27 | 29 | 29 | 27 | 29 | 29 | 29 | 29 | 29 | 27 | 29 | 27 | 27 | 27 | 27 | 29 | 27 | 29 | 29 | 27 | 27 | 29 | 29 | 27 | 29 | 27 |
| 11 | 30 | 28 | 30 | 28 | 30 | 30 | 30 | 30 | 30 | 28 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 28 | 30 | 28 | 30 | 28 | 28 | 30 | 30 | 30 | 30 | 28 | 28 | 30 | 30 | 28 | 30 | 28 |
| 12 | 31 | 29 | 31 | 29 | 31 | 31 | 31 | 31 | 31 | 29 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 31 | 29 | 31 | 29 | 31 | 29 | 29 | 31 | 31 | 31 | 31 | 29 | 29 | 31 | 31 | 29 | 31 | 29 |
| 13 | 32 | 30 | 32 | 30 | 32 | 32 | 32 | 32 | 32 | 30 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 30 | 32 | 30 | 32 | 30 | 30 | 32 | 32 | 32 | 32 | 30 | 30 | 32 | 32 | 30 | 32 | 30 |
| 14 | 33 | 31 | 33 | 31 | 33 | 33 | 33 | 33 | 33 | 31 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 31 | 33 | 31 | 33 | 31 | 31 | 33 | 33 | 33 | 33 | 31 | 31 | 33 | 33 | 31 | 33 | 31 |
| 15 | 34 | 32 | 34 | 32 | 34 | 36 | 36 | 36 | 36 | 32 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 36 | 32 | 34 | 32 | 34 | 32 | 32 | 34 | 34 | 34 | 36 | 32 | 32 | 34 | 34 | 32 | 36 | 32 |
| 16 | 35 | 33 | 35 | 33 | 35 | 37 | 37 | 37 | 37 | 33 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 37 | 33 | 35 | 33 | 35 | 33 | 33 | 35 | 35 | 35 | 37 | 33 | 33 | 35 | 35 | 33 | 37 | 33 |
| 17 | 38 | 35 | 37 | 35 | 39 | 39 | 39 | 39 | 39 | 35 | 36 | 39 | 37 | 37 | 39 | 38 | 36 | 39 | 35 | 37 | 35 | 37 | 35 | 35 | 39 | 37 | 39 | 39 | 35 | 35 | 37 | 38 | 35 | 39 | 35 |
| 18 | 39 | 36 | 38 | 36 | 40 | 40 | 40 | 40 | 40 | 36 | 37 | 40 | 38 | 38 | 40 | 39 | 37 | 40 | 36 | 38 | 36 | 38 | 36 | 36 | 40 | 38 | 40 | 40 | 36 | 36 | 38 | 39 | 36 | 40 | 36 |
| 19 | 40 | 37 | 41 | 37 | 41 | 43 | 43 | 43 | 43 | 37 | 38 | 41 | 41 | 41 | 41 | 40 | 40 | 43 | 37 | 41 | 37 | 41 | 37 | 37 | 41 | 41 | 41 | 43 | 37 | 37 | 41 | 40 | 37 | 41 | 37 |
| 20 | 42 | 39 | 43 | 39 | 43 | 45 | 45 | 45 | 45 | 39 | 40 | 43 | 43 | 43 | 43 | 42 | 42 | 45 | 39 | 43 | 39 | 43 | 39 | 39 | 43 | 43 | 43 | 45 | 39 | 39 | 43 | 42 | 39 | 43 | 39 |
SIMPLE_PC.area_fire_DC#
Typical total bonus to Starfinder Area Fire or Auto-Fire DC, by class and level. This table includes all Pathfinder classes as well, for the sake of future-proofing and mixing.
This table is the same as class_DC plus the weapon’s tracking bonus.
For example, a Soldier’s bonus is broken down as follows:
pf2.tables.SIMPLE_PC.area_fire_DC.soldier.display()
| variable | soldier | |||||
|---|---|---|---|---|---|---|
| component | level | base_DC | proficiency | ability_boosts | ability_apex | tracking |
| level | ||||||
| 1 | 1 | 10 | 2 | 4 | 0 | 0 |
| 2 | 2 | 10 | 2 | 4 | 0 | 1 |
| 3 | 3 | 10 | 2 | 4 | 0 | 1 |
| 4 | 4 | 10 | 2 | 4 | 0 | 1 |
| 5 | 5 | 10 | 2 | 4 | 0 | 1 |
| 6 | 6 | 10 | 2 | 4 | 0 | 1 |
| 7 | 7 | 10 | 4 | 4 | 0 | 1 |
| 8 | 8 | 10 | 4 | 4 | 0 | 1 |
| 9 | 9 | 10 | 4 | 4 | 0 | 1 |
| 10 | 10 | 10 | 4 | 5 | 0 | 2 |
| 11 | 11 | 10 | 4 | 5 | 0 | 2 |
| 12 | 12 | 10 | 4 | 5 | 0 | 2 |
| 13 | 13 | 10 | 4 | 5 | 0 | 2 |
| 14 | 14 | 10 | 4 | 5 | 0 | 2 |
| 15 | 15 | 10 | 6 | 5 | 0 | 2 |
| 16 | 16 | 10 | 6 | 5 | 0 | 3 |
| 17 | 17 | 10 | 6 | 5 | 1 | 3 |
| 18 | 18 | 10 | 6 | 5 | 1 | 3 |
| 19 | 19 | 10 | 8 | 5 | 1 | 3 |
| 20 | 20 | 10 | 8 | 6 | 1 | 3 |
SIMPLE_PC.impulse_attack_bonus#
Attack bonus with Kineticist impulses, by class and level. Includes gate attenuator.
Coordinates:
level (int): PC level in the range [1, 20]
component (str): Breakdown of each bonus, for debugging purposes. You typically want the total of all components:
pf2.tables.SIMPLE_PC.impulse_attack_bonus.sum("component")
Data variables:
kineticist (level, component) (int): Attack bonus for the Kineticist
kineticist_dedication (level, component) (int): All other classes through the Kineticist Archetype
Assumptions:
Other classes are expected to dedicate their second-best ability score (3 boosts at level 1) to CON.
Only pure kineticists use their Apex item to boost CON.
pf2.tables.SIMPLE_PC.impulse_attack_bonus.sum("component").display(transpose=True)
| level | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| variable | ||||||||||||||||||||
| kineticist | 7 | 8 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 20 | 22 | 23 | 24 | 25 | 28 | 29 | 32 | 33 | 36 | 38 |
| kineticist_dedication | 6 | 7 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 22 | 23 | 24 | 26 | 27 | 29 | 30 | 31 | 32 |
SIMPLE_PC.impulse_DC#
DC for Kineticist impulses, by class and level.
The difference from SIMPLE_PC.impulse_attack_bonus is not a flat 10, because there is no gate attenuator available.
pf2.tables.SIMPLE_PC.impulse_DC.sum("component").display(transpose=True)
| level | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| variable | ||||||||||||||||||||
| kineticist | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 39 | 40 | 43 | 45 |
| kineticist_dedication | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 30 | 31 | 32 | 34 | 35 | 36 | 37 | 38 | 39 |
NPC tables#
NPC#
All tables from the Building Creatures chapter of the GM Core.
Coordinates:
level (int): NPC level in the range [-1, 24]
challenge (str): [Extreme, High, Moderate, Low, Terrible]. Several tables don’t have all challenge levels; when missing the values are padded with zeros due to design constraints of
xarray.Dataset.limited (bool): Limited or unlimited use
mm (str): [max, min, mean] values bracket
rarity (str): [Common, Uncommon, Rare, Unique] creature rarity
Data variables:
abilities (level, challenge) (int): Table 2-1 Ability Modifier Scales
perception (level, challenge) (int): Table 2-2 Perception
skills (level, challenge) (int): Table 2-3 Skills
AC (level, challenge) (int): Table 2-5 Armor Class
saving_throws (level, challenge) (int): Table 2-6 Saving Throws
HP (level, challenge, mm) (int): Table 2-7 Hit Points
resistances (level, mm) (int): Table 2-8 Resistances and Weaknesses
strike_attack (level, challenge) (int): Table 2-9 Strike Attack Bonus
strike_damage_dice (level, challenge) (str): Table 2-10 Strike Damage typical dice
strike_damage_mean (level, challenge) (int): Table 2-10 Strike Damage mean roll
spell_attack (level, challenge) (int): Table 2-11 Spell DC and Spell Attack Bonus
spell_DC (level, challenge) (int): Table 2-11 Spell DC and Spell Attack Bonus; note that here the DC equals attack +8 instead of the usual +10.
area_damage_dice (level, limited) (str): Table 2-12 Area Damage; typical dice
area_damage_mean (level, limited) (int): Table 2-12 Area Damage; mean roll
recall_knowledge (level, rarity) (int): Recall Knowledge using Level-based DCs
pf2.tables.NPC
<xarray.Dataset> Size: 19kB
Dimensions: (level: 26, challenge: 5, mm: 3, limited: 2, rarity: 4)
Coordinates:
* level (level) int64 208B -1 0 1 2 3 4 5 ... 19 20 21 22 23 24
* challenge (challenge) <U8 160B 'Extreme' 'High' ... 'Terrible'
* mm (mm) <U4 48B 'max' 'min' 'mean'
* limited (limited) bool 2B False True
* rarity (rarity) <U8 128B 'Common' 'Uncommon' 'Rare' 'Unique'
Data variables: (12/15)
abilities (level, challenge) int64 1kB 4 3 2 0 0 4 ... 13 12 9 7 0
saving_throws (level, challenge) int64 1kB 9 8 5 2 0 ... 42 38 36 32
perception (level, challenge) int64 1kB 9 8 5 2 0 ... 42 38 36 32
skills (level, challenge) int64 1kB 8 5 4 2 1 ... 45 40 38 33
AC (level, challenge) int64 1kB 18 15 14 12 ... 51 50 48 0
HP (level, challenge, mm) int64 3kB 0 0 0 9 9 ... 375 0 0 0
... ...
spell_DC (level, challenge) int64 1kB 19 16 13 0 0 ... 48 45 0 0
spell_attack (level, challenge) int64 1kB 11 8 5 0 0 ... 44 40 37 0 0
area_damage_dice (level, limited) <U4 832B '1d4' '1d6' ... '11d6' '25d6'
area_damage_mean (level, limited) int64 416B 2 4 4 6 5 ... 81 38 84 39 88
resistances (level, mm) int64 624B 1 1 1 3 1 2 ... 25 13 19 26 13 20
recall_knowledge (level, rarity) int64 832B 13 15 18 23 ... 48 50 53 58For example, these are the recommended stats for a level 5 NPC:
pf2.tables.NPC.sel(level=5).display(transpose=True)
| challenge | Extreme | High | Moderate | Low | Terrible | |
|---|---|---|---|---|---|---|
| variable | mm | |||||
| abilities | 6 | 5 | 4 | 2 | 0 | |
| saving_throws | 17 | 15 | 12 | 9 | 7 | |
| perception | 17 | 15 | 12 | 9 | 7 | |
| skills | 16 | 13 | 12 | 10 | 8 | |
| AC | 25 | 22 | 21 | 19 | 0 | |
| HP | max | 0 | 97 | 78 | 59 | 0 |
| min | 0 | 91 | 72 | 53 | 0 | |
| mean | 0 | 94 | 75 | 56 | 0 | |
| strike_attack | 17 | 15 | 13 | 11 | 0 | |
| strike_damage_dice | 2d12+7 | 2d8+7 | 2d6+6 | 2d4+6 | 0 | |
| strike_damage_mean | 20 | 16 | 13 | 11 | 0 | |
| spell_DC | 26 | 22 | 19 | 0 | 0 | |
| spell_attack | 18 | 14 | 11 | 0 | 0 |
| limited | False | True |
|---|---|---|
| variable | ||
| area_damage_dice | 2d10 | 6d6 |
| area_damage_mean | 12 | 21 |
| mm | max | min | mean |
|---|---|---|---|
| variable | |||
| resistances | 8 | 4 | 6 |
| rarity | Common | Uncommon | Rare | Unique |
|---|---|---|---|---|
| variable | ||||
| recall_knowledge | 20 | 22 | 25 | 30 |
SIMPLE_NPC#
Very frequently, when simulating a PC’s effectiveness in combat, one does not care about the full gamut of combinations offered by the NPC tables.
pf2.tables.SIMPLE_NPC offers a simplified variant of it where a player is only offered three targets.
In this table, the level coordinate is the player’s level instead of the creature’s level.
The three targets are ordered along the challenge coordinate:
|
|
Creature level |
mm |
rarity |
|---|---|---|---|---|
Weak |
Low |
Player level - 2 |
min |
Common |
Matched |
Moderate |
Player level |
mean |
Common |
Boss |
High |
Player level + 2 |
max |
Uncommon |
These are considered typical interesting targets. There are notable exceptions which are not covered by this table; for example:
Oozes and zombies have notoriously extremely poor AC, so Deadly and Fatal weapons will display a peculiar damage distribution;
You may be faced with an extreme boss (party level +4) and target their best defenses; this is a sadly frequent situation e.g. for martial characters who didn’t invest in anything other than their attack bonus, or spellcasters that didn’t differentiate their saving throws. In this situation, the target DCs will exceed the ‘Boss’ challenge of the
SIMPLE_NPCtable.
pf2.tables.SIMPLE_NPC
<xarray.Dataset> Size: 11kB
Dimensions: (challenge: 3, level: 20, limited: 2)
Coordinates:
* challenge (challenge) object 24B 'Weak' 'Matched' 'Boss'
* level (level) int64 160B 1 2 3 4 5 6 7 ... 15 16 17 18 19 20
* limited (limited) bool 2B False True
Data variables: (12/15)
abilities (level, challenge) int64 480B 0 3 4 0 3 ... 6 10 5 7 10
saving_throws (level, challenge) int64 480B 2 7 12 3 8 ... 38 27 33 39
perception (level, challenge) int64 480B 2 7 12 3 8 ... 38 27 33 39
skills (level, challenge) int64 480B 2 6 10 3 7 ... 40 29 34 42
AC (level, challenge) int64 480B 12 15 19 13 ... 39 44 48
HP (level, challenge) int64 480B 5 20 59 11 ... 247 375 544
... ...
spell_DC (level, challenge) int64 480B 0 14 20 0 ... 44 0 39 45
spell_attack (level, challenge) int64 480B 0 6 12 0 7 ... 36 0 31 37
area_damage_dice (level, challenge, limited) <U4 2kB '1d4' ... '23d6'
area_damage_mean (level, challenge, limited) int64 960B 2 4 5 ... 36 81
resistances (level, challenge) int64 480B 1 2 6 1 4 ... 23 10 16 24
recall_knowledge (level, challenge) int64 480B 13 15 20 14 ... 38 40 46For example, here are three opponents appropriate to a level 5 PC:
pf2.tables.SIMPLE_NPC.sel(level=5).display(transpose=True)
| challenge | Weak | Matched | Boss | |
|---|---|---|---|---|
| variable | limited | |||
| abilities | 1 | 4 | 6 | |
| saving_throws | 6 | 12 | 18 | |
| perception | 6 | 12 | 18 | |
| skills | 7 | 12 | 17 | |
| AC | 16 | 21 | 25 | |
| HP | 31 | 75 | 148 | |
| strike_attack | 8 | 13 | 18 | |
| strike_damage_dice | 1d6+5 | 2d6+6 | 2d10+9 | |
| strike_damage_mean | 8 | 13 | 20 | |
| spell_DC | 0 | 19 | 25 | |
| spell_attack | 0 | 11 | 17 | |
| area_damage_dice | False | 2d8 | 2d10 | 4d6 |
| True | 4d6 | 6d6 | 8d6 | |
| area_damage_mean | False | 9 | 12 | 15 |
| True | 14 | 21 | 28 | |
| resistances | 3 | 6 | 10 | |
| recall_knowledge | 18 | 20 | 25 |
Other tables#
DC#
Difficulty Classes tables from the GM Core.
Coordinates:
level (int): target level in the range [0, 25]
rank (int): spell or effect rank in the range [1, 10]
difficulty (str): task difficulty
rarity (str): creature or item rarity
proficiency (str): target skill proficiency
Data variables:
simple (proficiency) (int): 10-4 Simple DCs
by_level (level) (int): 10-5 DCs by Level, by level
by_rank (rank) (int): 10-5 DCs by Level, by rank
difficulty_adjustment (level) (int): 10-6 DC adjustments, by difficulty
rarity_adjustment (level) (int): 10-6 DC adjustments, by rarity
pf2.tables.DC
<xarray.Dataset> Size: 832B
Dimensions: (proficiency: 5, level: 26, rank: 10, difficulty: 7,
rarity: 4)
Coordinates:
* proficiency (proficiency) object 40B 'Untrained' ... 'Legendary'
* level (level) int64 208B 0 1 2 3 4 5 ... 20 21 22 23 24 25
* rank (rank) int64 80B 1 2 3 4 5 6 7 8 9 10
* difficulty (difficulty) object 56B 'Incredibly easy' ... 'Inc...
* rarity (rarity) object 32B 'Common' 'Uncommon' ... 'Unique'
Data variables:
simple (proficiency) int64 40B 10 15 20 30 40
by_level (level) int64 208B 14 15 16 18 19 ... 42 44 46 48 50
by_rank (rank) int64 80B 15 18 20 23 26 28 31 34 36 39
difficulty_adjustment (difficulty) int64 56B -10 -5 -2 0 2 5 10
rarity_adjustment (rarity) int64 32B 0 2 5 10EARN_INCOME#
Pathfinder Table 4-2 Income Earned and Starfinder Table 4-2 Income Earned. These tables are also used to Craft and for a variety of similar Downtime activities.
Coordinates:
level (int): Task level in the range [0, 21]
proficiency (str): Failed, Trained, Expert, Master, Legendary.
Data variables:
DC (level) (int): The DC for the task
pathfinder (level, proficiency) (float): Pathfinder income earned per day of labour, in gold pieces
starfinder (level, proficiency) (int): Starfinder income earned per day of labour, in credits
pf2.tables.EARN_INCOME
<xarray.Dataset> Size: 2kB
Dimensions: (level: 22, proficiency: 5)
Coordinates:
* level (level) int64 176B 0 1 2 3 4 5 6 7 ... 14 15 16 17 18 19 20 21
* proficiency (proficiency) <U9 180B 'Failed' 'Trained' ... 'Legendary'
Data variables:
DC (level) int64 176B 14 15 16 18 19 20 22 ... 35 36 38 39 40 42
pathfinder (level, proficiency) float64 880B 0.01 0.05 ... 175.0 300.0
starfinder (level, proficiency) int64 880B 1 1 1 1 1 ... 500 900 1750 3000pf2.tables.EARN_INCOME.display()
| variable | DC | pathfinder | starfinder | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| proficiency | Failed | Trained | Expert | Master | Legendary | Failed | Trained | Expert | Master | Legendary | |
| level | |||||||||||
| 0 | 14 | 0.01 | 0.05 | 0.05 | 0.05 | 0.05 | 1 | 1 | 1 | 1 | 1 |
| 1 | 15 | 0.02 | 0.20 | 0.20 | 0.20 | 0.20 | 1 | 2 | 2 | 2 | 2 |
| 2 | 16 | 0.04 | 0.30 | 0.30 | 0.30 | 0.30 | 1 | 3 | 3 | 3 | 3 |
| 3 | 18 | 0.08 | 0.50 | 0.50 | 0.50 | 0.50 | 1 | 5 | 5 | 5 | 5 |
| 4 | 19 | 0.10 | 0.70 | 0.80 | 0.80 | 0.80 | 1 | 7 | 8 | 8 | 8 |
| 5 | 20 | 0.20 | 0.90 | 1.00 | 1.00 | 1.00 | 2 | 9 | 10 | 10 | 10 |
| 6 | 22 | 0.30 | 1.50 | 2.00 | 2.00 | 2.00 | 3 | 15 | 20 | 20 | 20 |
| 7 | 23 | 0.40 | 2.00 | 2.50 | 2.50 | 2.50 | 4 | 20 | 25 | 25 | 25 |
| 8 | 24 | 0.50 | 2.50 | 3.00 | 3.00 | 3.00 | 5 | 25 | 30 | 30 | 30 |
| 9 | 26 | 0.60 | 3.00 | 4.00 | 4.00 | 4.00 | 6 | 30 | 40 | 40 | 40 |
| 10 | 27 | 0.70 | 4.00 | 5.00 | 6.00 | 6.00 | 7 | 40 | 50 | 60 | 60 |
| 11 | 28 | 0.80 | 5.00 | 6.00 | 8.00 | 8.00 | 8 | 50 | 60 | 80 | 80 |
| 12 | 30 | 0.90 | 6.00 | 8.00 | 10.00 | 10.00 | 9 | 60 | 80 | 100 | 100 |
| 13 | 31 | 1.00 | 7.00 | 10.00 | 15.00 | 15.00 | 10 | 70 | 100 | 150 | 150 |
| 14 | 32 | 1.50 | 8.00 | 15.00 | 20.00 | 20.00 | 15 | 80 | 150 | 200 | 200 |
| 15 | 34 | 2.00 | 10.00 | 20.00 | 28.00 | 28.00 | 20 | 100 | 200 | 280 | 280 |
| 16 | 35 | 2.50 | 13.00 | 25.00 | 36.00 | 40.00 | 25 | 130 | 250 | 360 | 400 |
| 17 | 36 | 3.00 | 15.00 | 30.00 | 45.00 | 55.00 | 30 | 150 | 300 | 450 | 550 |
| 18 | 38 | 4.00 | 20.00 | 45.00 | 70.00 | 90.00 | 40 | 200 | 450 | 700 | 900 |
| 19 | 39 | 6.00 | 30.00 | 60.00 | 100.00 | 130.00 | 60 | 300 | 600 | 1000 | 1300 |
| 20 | 40 | 8.00 | 40.00 | 75.00 | 150.00 | 200.00 | 80 | 400 | 750 | 1500 | 2000 |
| 21 | 42 | NaN | 50.00 | 90.00 | 175.00 | 300.00 | 0 | 500 | 900 | 1750 | 3000 |