fix(rules): suppress attacks of opportunity through cover or total concealment

PF1e (CRB Cover): "You can't execute an attack of opportunity against an
opponent with cover relative to you"; (CRB Concealment): the same holds
against total concealment. _resolve_aoo now checks terrain cover
(cover_bonus_cells, melee line) and miss_chance >= 50 before striking,
logs the suppression and leaves the per-round budget unspent. Partial
concealment (blurred 20%) and normal attacks are unaffected.

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-11 23:23:11 +02:00
parent be2a755d17
commit 843cbf881c
3 changed files with 155 additions and 2 deletions
+5 -1
View File
@@ -676,7 +676,11 @@ Règles modélisées :
`_aoo_used`, réinitialisée au début du round) ; le budget restant est exposé
dans l'Observation via la clé `aoo_remaining` par combattant ; les AoO sont
toujours portées
(PF1e permet de les décliner, le simulateur ne le fait pas). Le pas de
(PF1e permet de les décliner, le simulateur ne le fait pas) — **sauf** si la
cible a un couvert ou une dissimulation totale par rapport à l'attaquant :
l'AoO est alors supprimée et non consommée (conformance A4, CRB « Cover » :
« You can't execute an attack of opportunity against an opponent with cover
relative to you » ; CRB « Concealment » : dissimulation totale). Le pas de
placement (5 ft) ne provoque jamais d'AoO (voir ci-dessous) ; la retraite ne
protège que la case de départ (voir ci-dessous).
- Charge : action à round complet. Le combattant se déplace en ligne droite