Barrow’s Edge#
How reliable is the healing provided by the Exemplar’s Barrow’s Edge? Let’s test it with a Greatpick.
# Install in JupyterLite
%pip install -q pathfinder2e-stats
import matplotlib as mpl # noqa: F401 # Needed by JupyterLite
import xarray
import pathfinder2e_stats as pf2
Note: you may need to restart the kernel to use updated packages.
level = 4
half_health_enemy = True
atk = (
pf2.tables.SIMPLE_PC.weapon_attack_bonus.exemplar.sum("component")
.sel(level=level)
.item()
)
atk
11
weapon_dice = pf2.tables.PC.weapon_dice.striking_rune.sel(level=level).item()
damage_bonus = (
(
pf2.tables.PC.ability_bonus.boosts.sel(initial=4)
+ pf2.tables.PC.weapon_specialization.exemplar
)
.sel(level=level)
.item()
)
immanence = 3 if half_health_enemy else 1
weapon = (
pf2.armory.pathfinder.melee.greatpick(weapon_dice, damage_bonus)
+ pf2.armory.runes.auto(level=level)
+ pf2.Damage("spirit", 0, 0, immanence * weapon_dice)
)
weapon
AC = pf2.tables.SIMPLE_NPC.AC.sel(level=level)
AC.display()
| variable | AC |
|---|---|
| challenge | |
| Weak | 15 |
| Matched | 20 |
| Boss | 24 |
Let’s compare hitting an enemy without any buffs/debuffs vs. when they’re flanked, grabbed, or prone:
off_guard = xarray.DataArray(
[0, -2], dims="off-guard", coords={"off-guard": [False, True]}
)
Both the challenge of the enemy and the off-guard conditions are what-if analyses: let’s roll our Strike only once and compare the output against all of them.
pf2.set_config(
check_dependent_dims=["challenge", "off-guard"],
damage_dependent_dims=["challenge", "off-guard"],
)
Let’s Strike the enemy! On a hit or critical hit, we will Spark Transcendence to heal ourselves.
atk_roll = pf2.check(atk, DC=AC + off_guard)
dmg_roll = pf2.damage(atk_roll, weapon)
barrows_edge_heal = dmg_roll.total_damage // 2
pf2.outcome_counts(atk_roll).display()
| variable | values | |||||
|---|---|---|---|---|---|---|
| challenge | Weak | Matched | Boss | |||
| off-guard | False | True | False | True | False | True |
| outcome | ||||||
| Critical success | 0.34996 | 0.44976 | 0.09888 | 0.19948 | 0.04992 | 0.04992 |
| Success | 0.49928 | 0.49971 | 0.50140 | 0.50144 | 0.34975 | 0.44966 |
| Failure | 0.10023 | 0.00000 | 0.34919 | 0.24855 | 0.44957 | 0.44989 |
| Critical failure | 0.05053 | 0.05053 | 0.05053 | 0.05053 | 0.15076 | 0.05053 |
Damage distribution#
barrows_edge_heal.display()
| variable | total_damage | |||||
|---|---|---|---|---|---|---|
| challenge | Weak | Matched | Boss | |||
| off-guard | False | True | False | True | False | True |
| count | 100000.000000 | 100000.00000 | 100000.00000 | 100000.000000 | 100000.000000 | 100000.000000 |
| mean | 14.216850 | 16.81701 | 7.70719 | 10.322810 | 4.881320 | 5.908030 |
| std | 9.924312 | 9.37972 | 8.05557 | 9.396203 | 7.034005 | 7.026836 |
| min | 0.000000 | 0.00000 | 0.00000 | 0.000000 | 0.000000 | 0.000000 |
| 25% | 8.000000 | 10.00000 | 0.00000 | 0.000000 | 0.000000 | 0.000000 |
| 50% | 11.000000 | 13.00000 | 8.00000 | 10.000000 | 0.000000 | 0.000000 |
| 75% | 23.000000 | 25.00000 | 11.00000 | 13.000000 | 10.000000 | 11.000000 |
| max | 40.000000 | 40.00000 | 40.00000 | 40.000000 | 40.000000 | 40.000000 |
total_heal = barrows_edge_heal.stack(col=["challenge", "off-guard"])
means = total_heal.mean("roll").to_pandas()
stds = total_heal.std("roll").to_pandas()
_ = means.plot.barh(xerr=stds)
bins = barrows_edge_heal.max().item() + 1
_ = (
barrows_edge_heal.stack(col=["challenge", "off-guard"])
.to_pandas()
.hist(bins=bins, figsize=(10, 10))
)
Conclusions#
Barrow’s Edge provides a solid health drip when fighting against extras, effectively allowing the Exemplar to take on an entire army and just keep going indefinitely. However, both its reliability and mean effect drastically drop when tanking a boss - which is also what hits the hardest. So you should consider complementing it with Scar of the Survivor or be backed by a dedicated healer.