feat(conditions): add blinded/invisible/helpless/fascinated combat rules

This commit is contained in:
2026-09-10 18:00:41 +02:00
parent 79ac190728
commit b3bff85215
4 changed files with 379 additions and 14 deletions
+22
View File
@@ -217,6 +217,20 @@ ASLEEP = Condition(
)
# Helpless: helpless for all intents, treated as Dex 0 (loses Dex to AC),
# can't act; melee attackers gain +4 (engine logic in resolve_attack) (CRB)
HELPLESS = Condition(
name="helpless",
denies_dex_to_ac=True,
cant_act=True,
)
# Fascinated: distracted, takes no actions other than paying attention (CRB)
FASCINATED = Condition(
name="fascinated",
cant_act=True,
)
# Grappled: -4 Dex, -2 attack, no movement, no AoO, can't cast without concentration (CRB)
GRAPPLED = Condition(
name="grappled",
@@ -267,6 +281,13 @@ DISPLACED = Condition(
miss_chance=50,
)
# Invisible: total concealment against attacks targeting it; the attacker-side
# +2 on attack rolls and the target's lost Dex bonus are engine logic (CRB)
INVISIBLE = Condition(
name="invisible",
miss_chance=50,
)
# ── Registry ─────────────────────────────────────────────────────────────────
CONDITIONS_BY_NAME: dict[str, Condition] = {
c.name: c
@@ -275,5 +296,6 @@ CONDITIONS_BY_NAME: dict[str, Condition] = {
BLINDED, DEAFENED, FLAT_FOOTED, PRONE, STUNNED, PARALYZED,
NAUSEATED, DAZED, STAGGERED, FRIGHTENED, PANICKED, COWERING,
ASLEEP, GRAPPLED, PINNED, BLURRED, DISPLACED,
HELPLESS, FASCINATED, INVISIBLE,
]
}