fix(rules): Combat Casting's +4 no longer applies to the entangled concentration check (SRD combat-casting: the feat covers only casting defensively or while grappled)
This commit is contained in:
@@ -3809,14 +3809,19 @@ class CombatEngine:
|
||||
damage_taken: int,
|
||||
*,
|
||||
dc_override: int | None = None,
|
||||
combat_casting_applies: bool = True,
|
||||
) -> bool:
|
||||
"""Concentration check: DC depends on situation.
|
||||
|
||||
PF1e (CRB): the check is d20 + caster level + the ability modifier
|
||||
used to determine bonus spells (Int/Wis/Cha) — NOT Constitution.
|
||||
Combat Casting's +4 applies only when casting defensively, while
|
||||
grappled/pinned, or while entangled, never for damage taken while
|
||||
casting. ``dc_override`` pins the DC (used by the entangled gate).
|
||||
Combat Casting's +4 applies only when casting defensively or while
|
||||
grappled (SRD feats/combat-casting.md: "a +4 bonus on concentration
|
||||
checks made to cast a spell or use a spell-like ability when
|
||||
casting on the defensive or while grappled") - never for damage
|
||||
taken while casting, never while entangled. ``combat_casting_applies``
|
||||
is passed False by the situations outside the feat (entangled);
|
||||
``dc_override`` pins the DC (used by the entangled gate).
|
||||
"""
|
||||
dc = (
|
||||
self._concentration_dc(caster, spell_level, damage_taken)
|
||||
@@ -3824,7 +3829,9 @@ class CombatEngine:
|
||||
else dc_override
|
||||
)
|
||||
injured_while_casting = damage_taken > 0 and caster.grappled_with is None
|
||||
has_combat_casting = self._has_feat(caster, _COMBAT_CASTING_FEAT)
|
||||
has_combat_casting = (
|
||||
combat_casting_applies and self._has_feat(caster, _COMBAT_CASTING_FEAT)
|
||||
)
|
||||
bonus = 0 if injured_while_casting else (4 if has_combat_casting else 0)
|
||||
roll = self._rng.d20()
|
||||
total = (
|
||||
@@ -6168,9 +6175,14 @@ class CombatEngine:
|
||||
if self._has_condition_named(caster, "entangled"):
|
||||
# PF1e (SRD Table 9-1 Concentration Check DCs): "Entangled while
|
||||
# casting" requires a DC 15 + spell level check or the spell is
|
||||
# lost. Combat Casting's +4 applies (not an injury check).
|
||||
# lost. Combat Casting's +4 does NOT apply: the feat covers only
|
||||
# "casting on the defensive or while grappled" (SRD
|
||||
# feats/combat-casting.md).
|
||||
dc = self._entangled_concentration_dc(spell_level)
|
||||
if not self._check_concentration(caster, spell_level, 0, dc_override=dc):
|
||||
if not self._check_concentration(
|
||||
caster, spell_level, 0,
|
||||
dc_override=dc, combat_casting_applies=False,
|
||||
):
|
||||
self._log(
|
||||
f"round {self._current_round} {caster.combatant.id}: "
|
||||
f"casting while entangled: concentration failed (DC {dc}), "
|
||||
|
||||
Reference in New Issue
Block a user