fix(rules): a missed melee touch attack holds the charge instead of expending the spell (SRD Holding the Charge: re-attempted at the start of later turns, dissipated by casting another spell; ranged touch still expended on a miss)

This commit is contained in:
2026-09-19 11:40:02 +02:00
parent 81a09c88f0
commit 418fdc826b
3 changed files with 208 additions and 14 deletions
+15 -3
View File
@@ -1003,9 +1003,21 @@ Règles modélisées :
différent) exige une attaque de contact de mêlée — d20 + BAB + mod de Force
du lanceur contre la CA de contact de la cible (amputée du modificateur de
Dextérité si la cible perd son bonus de Dextérité, même chemin que
`resolve_attack`) ; en cas d'échec le sort n'a aucun effet (l'emplacement
est brûlé). Simplifications documentées : Weapon Finesse et les autres
bonus situationnels de jet de contact ne sont pas modélisés. Une cible
`resolve_attack`) ; en cas d'échec le sort **n'est pas dépensé** : le
lanceur **garde la charge** (SRD « Holding the Charge » : « If the attack
misses, you are still holding the charge [...] You can continue to make
touch attacks round after round ») — l'état `held_charge` du lanceur
(sort, cible, métamagie, niveau d'emplacement) est rejoué automatiquement
au **début de chacun de ses tours suivants** tant que la cible vit et
reste à portée de contact ; une nouvelle incantation **dissipe** la charge
(« If you cast another spell, the touch spell dissipates ») et une cible
morte la dissipe aussi (journalisé `dissipates`). L'emplacement reste
brûlé (dépensé à l'incantation). Simplifications documentées : Weapon
Finesse et les autres bonus situationnels de jet de contact ne sont pas
modélisés ; la re-tentative est pilotée par le moteur au début du tour
(coût RAW : action standard) ; la décharge sur tout contact (même
involontaire) et les attaques à l'arme tenue pendant la charge ne sont pas
modélisés ; la charge n'est pas exposée dans l'Observation. Une cible
volontaire (soi ou un allié du même camp) ne demande aucun jet. Sorts à
contact à distance (CRB « Magic — Ranged Touch Attacks ») : un sort dont le
JSON déclare `requires_ranged_touch: true` (les rayons du SRD — Ray of