fix(rules): apply cover concealment and criticals to touch attacks

CRB 'Cast a Spell - Touch Attacks': 'You can score critical hits with either type of attack as long as the spell deals damage'; CRB 'Range - Touch': a touch spell threatens on a natural 20 and deals double damage on a successful confirmation. The melee and ranged spell-touch gates now add the target's cover bonus to touch AC (new _attack_cover_bonus helper shared with resolve_attack), roll the concealment miss chance after the hit (blinded attacker = total concealment convention), and resolve crit threat/confirm with damage doubling for damage-dealing touch spells. Non-damage touch spells do not threaten (no die consumed). Golden transcript 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-12 13:47:03 +02:00
parent 35c8d101b5
commit ec2088ab90
3 changed files with 323 additions and 59 deletions
+13 -1
View File
@@ -844,7 +844,19 @@ Règles modélisées :
n'y a donc **pas** de pénalité par incrément de portée ; en cas d'échec le
sort n'a aucun effet (l'emplacement est brûlé). Simplifications documentées
(miroir du contact de mêlée) : le modificateur de taille et Weapon Finesse
ne sont pas modélisés. Magic Missile (touche automatiquement), les sorts de
ne sont pas modélisés. Conformance L3 (CRB « Cast a Spell — Touch Attacks »,
« Cover », « Concealment », « Range — Touch ») : le jet de contact (mêlée ou
distance) est une **attaque** — la CA de contact inclut le **couvert** de la
cible (terrain +2/+4/+8 et couvert mou +4 à distance, même chemin
`_attack_cover_bonus` que `resolve_attack` ; mêlée = ligne terrain seule), la
**dissimulation** peut faire rater l'attaque après la touche (jet de d100,
convention `max(concealment de la cible, 50)` si l'attaquant est `blinded`,
journalisé « spell lost » / « spell delivered »), et un sort de contact qui
**inflige des dégâts** menace le critique sur un 20 naturel et **double ses
dégâts** sur confirmation réussie (le jet de confirmation est un jet
d'attaque contre la même CA ; un sort de contact sans dégâts — Grace,
Ray of Enfeeblement — ne menace pas, aucun dé consommé). Magic Missile
(touche automatiquement), les sorts de
zone et les sorts à sauvegarde simple ne sont pas concernés. Un sort ciblé avec sauvegarde fait pleins dégâts
sur un échec et **aucun dégât sur un succès** (la sauvegarde annule) ; le
demi-dégât sur sauvegarde réussie ne s'applique que là où l'effet le déclare