fix(rules): minimum damage - a landed hit reduced below 1 by DR/energy resistance deals 1 (CRB Damage - Minimum Damage, nonlethal approximated as normal)
This commit is contained in:
@@ -180,6 +180,7 @@ _CHARGE_AC_PENALTY = 2 # PF1e: -2 AC until start of next turn after charging
|
||||
_CHARGE_MIN_CELLS = 2 # PF1e: charge must move at least 10 ft (2 squares)
|
||||
_UP_CLOSE_RANGE_FT = 30 # PF1e: Up Close and Deadly works within 30 ft
|
||||
_GRAPPLED_CMB_PENALTY = 2 # PF1e: grappled/pinned -2 on non-grapple/escape CMB
|
||||
_MINIMUM_HIT_DAMAGE = 1 # PF1e (CRB "Damage" - Minimum Damage): a hit deals >= 1
|
||||
_DISARM_RETALIATION_MARGIN = 10 # PF1e SRD: disarm fails by 10 -> attacker drops
|
||||
# PF1e: Point-Blank Shot grants +1/+1 within 30 ft with ranged weapons
|
||||
_POINT_BLANK_RANGE_FT = 30
|
||||
@@ -2981,9 +2982,15 @@ class CombatEngine:
|
||||
)
|
||||
physical = max(0, damage - energy_share)
|
||||
damage = self._apply_dr(physical, weapon, target) + energy_share
|
||||
return crit, False, self._apply_energy_resistance_per_component(
|
||||
final = self._apply_energy_resistance_per_component(
|
||||
damage, weapon, rolls, target=target
|
||||
)
|
||||
# PF1e (CRB "Damage" — Minimum Damage): "If penalties reduce the
|
||||
# damage result to less than 1, a hit still deals 1 point of
|
||||
# nonlethal damage." The engine has no nonlethal damage track
|
||||
# (documented approximation): the floor is applied as 1 point of
|
||||
# normal damage on a landed hit.
|
||||
return crit, False, max(_MINIMUM_HIT_DAMAGE, final)
|
||||
|
||||
def _attack_cover_bonus(
|
||||
self, attacker: CombatantState, target: CombatantState, *, ranged: bool
|
||||
|
||||
Reference in New Issue
Block a user