fix(rules): README/abilities wording - grapple applies only grappled (pin out of scope), pinned/nauseated cant_attack, confused no-AoO, Weapon Focus group matching

This commit is contained in:
2026-09-16 20:31:49 +02:00
parent 3a5948c35c
commit e89ea42168
3 changed files with 21 additions and 7 deletions
+4 -1
View File
@@ -37,7 +37,10 @@ class AbilitySpec:
# ── Passive combat feats ─────────────────────────────────────────────────────
# Weapon Focus: +1 attack with a specific weapon (untyped, CRB)
# Weapon Focus: +1 attack with the named weapon GROUP (untyped, CRB) — the
# filter matches a weapon name case-insensitively as a substring (the engine
# resolves it in CombatEngine._weapon_filter_matches), so "Pistol" covers
# sheets that name individual pistols (e.g. "... (pistolet, masterwork)").
def weapon_focus(weapon_name: str) -> AbilitySpec:
return AbilitySpec(
name=f"Weapon Focus ({weapon_name})",
+4 -2
View File
@@ -2571,8 +2571,10 @@ class CombatEngine:
"""Collect all StatModifiers for ``target`` from all sources.
``weapon_name`` filters out modifiers with a ``weapon_filter`` that
doesn't match (e.g. Weapon Focus (Pistol) only applies to "Pistol").
Modifiers without a ``weapon_filter`` are always included.
doesn't match (e.g. Weapon Focus (Pistol) only applies to weapons
whose name contains "Pistol", case-insensitively — see
``_weapon_filter_matches``). Modifiers without a ``weapon_filter``
are always included.
Modifiers whose ``condition`` is set are only included when the named
runtime condition holds for ``state`` (evaluated via