fix(rules): scale Power Attack for two-handed weapons and apply its CMB penalty
This commit is contained in:
@@ -2260,7 +2260,14 @@ class CombatEngine:
|
||||
sum(c.formula.roll(self._rng) for c in weapon.damage) + weapon.damage_bonus
|
||||
)
|
||||
damage += resolve_modifiers(dmg_mods)
|
||||
damage += pa_amt * 2 if weapon.kind == "melee" else 0
|
||||
# PF1e (CRB Power Attack): +2X damage with a melee weapon, +3X (the
|
||||
# bonus increased by half) with a two-handed weapon, a one-handed
|
||||
# weapon used in two hands, or a primary natural with 1.5x Strength
|
||||
# (modeled via the weapon's `two_handed` flag). The off-hand /
|
||||
# secondary-natural halving (-50%, +1X) is NOT modeled: two-weapon
|
||||
# fighting is not in the engine (documented simplification).
|
||||
if weapon.kind == "melee":
|
||||
damage += pa_amt * (3 if weapon.two_handed else 2)
|
||||
if crit:
|
||||
damage *= weapon.crit_mult
|
||||
damage += sneak_total
|
||||
@@ -3607,7 +3614,13 @@ class CombatEngine:
|
||||
if not state.active:
|
||||
return
|
||||
|
||||
attacker_cmb = self._maneuver_cmb(state)
|
||||
# PF1e (CRB Power Attack): the -X penalty applies to all melee attack
|
||||
# rolls AND combat maneuver checks while the feat is active. The
|
||||
# escape option that substitutes an Acrobatics/Escape Artist skill
|
||||
# check is not penalized (a skill check is not a CMB check) — see
|
||||
# _maneuver_escape.
|
||||
pa_amt = self._power_attack_amt(state)
|
||||
attacker_cmb = self._maneuver_cmb(state) - pa_amt
|
||||
target_cmd = self._maneuver_cmd(target)
|
||||
roll = self._rng.d20()
|
||||
total = roll + attacker_cmb
|
||||
|
||||
@@ -239,7 +239,10 @@ class AttackSpec(_FrozenModel):
|
||||
the same entry twice. `reach_ft` applies to melee/touch kinds,
|
||||
`range_increment_ft` to ranged/touch kinds. `firearm` marks a ranged-touch
|
||||
weapon (gun) whose shots resolve against touch AC within the first range
|
||||
increment and against full AC beyond it.
|
||||
increment and against full AC beyond it. `two_handed` marks a weapon swung
|
||||
in two hands (two-handed weapon, one-handed weapon used two hands, or a
|
||||
primary natural with 1.5x Strength) — PF1e Power Attack rolls +50% damage
|
||||
with such a weapon (CRB "Power Attack").
|
||||
"""
|
||||
|
||||
id: str
|
||||
@@ -254,6 +257,7 @@ class AttackSpec(_FrozenModel):
|
||||
range_increment_ft: int | None = None
|
||||
count: int = Field(default=1, ge=1)
|
||||
firearm: bool = False
|
||||
two_handed: bool = False
|
||||
|
||||
|
||||
class DamageReduction(_FrozenModel):
|
||||
|
||||
Reference in New Issue
Block a user