fix(rules): treat a blinded attacker as facing total concealment

CRB 'Conditions - Blinded': 'All opponents are considered to have total concealment (50% miss chance) against the blinded character.' The sneak-attack gate and the AoO suppression gate now apply the same max(target_concealment, 50) convention as _resolve_hit_damage: a blinded attacker cannot sneak attack and its AoOs are suppressed without spending the budget.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-09-12 13:26:52 +02:00
parent d152d42af9
commit 35c8d101b5
4 changed files with 100 additions and 12 deletions
+11 -5
View File
@@ -897,11 +897,17 @@ Règles modélisées :
victime d'une attaque sournoise ; une dissimulation partielle (flou 20 %) ne
bloque plus la sournoise (conformance A7 — CRB rogue « Sneak Attack » :
« cannot sneak attack while striking a creature with total concealment »).
Attaquant aveugle (V5a) : un attaquant portant `blinded` considère tous ses
adversaires comme ayant un concealment total — le même jet unique de d100 est
tiré avec `miss_chance = max(concealment de la cible, 50)` et journalisé
« attacker blinded » ; l'attaque peut donc rater même contre une cible sans
concealment.
Attaquant aveugle (V5a) : un attaquant portant `blinded` considère tous ses
adversaires comme ayant un concealment total — le même jet unique de d100 est
tiré avec `miss_chance = max(concealment de la cible, 50)` et journalisé
« attacker blinded » ; l'attaque peut donc rater même contre une cible sans
concealment. Conformance L2 (CRB « Conditions — Blinded » : « All opponents
are considered to have total concealment (50% miss chance) against the
blinded character ») : la même convention `max(cible, 50)` s'applique aux
deux autres portes de concealment de l'attaquant — l'attaque sournoise est
**impossible** pour un aveugle (dissimulation totale) et ses attaques
d'opportunité sont **supprimées** contre toute cible (`suppressed (total
concealment)`, budget d'AoO non consommé).
- Attaquant invisible (V5a) : un attaquant portant `invisible` gagne **+2 à ses
jets d'attaque et de confirmation de critique** et sa cible **perd son bonus
de Dextérité à la CA** (même chemin `denies_dex_to_ac` que flat-footed/course).