feat(combat): allow point-targeted spell areas
This commit is contained in:
@@ -368,7 +368,9 @@ Règles modélisées :
|
||||
`ok=True, reason="ready"` ; relèvement sans `prone` → `ok=False,
|
||||
reason="not_prone"` ; se jeter à terre déjà `prone` → `ok=False,
|
||||
reason="already_prone"` ; attaque avec un `weapon_id` choisi inutilisable →
|
||||
`ok=False, reason="weapon_unavailable"`.
|
||||
`ok=False, reason="weapon_unavailable"` ; incantation avec un `target_pos`
|
||||
hors carte ou sans ligne d'effet → `ok=False, reason="invalid_destination"`
|
||||
(U7b).
|
||||
- Attaques multiples par action : une arme avec `count` > 1 (« 2x Talons »)
|
||||
résout `count` balayages indépendants dans la même action ; les balayages
|
||||
restants sont perdus si la cible tombe (inconsciente ou morte) en cours de
|
||||
@@ -515,7 +517,18 @@ Règles modélisées :
|
||||
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
|
||||
(`half_on_save: true` pour les rayons/lignes/cônes, `AreaEffect.save_for_half`
|
||||
pour les explosions). `default_policy` choisit soin / offensif / buff via
|
||||
pour les explosions). Ciblage par point (U7b) : `Action(kind="cast_spell",
|
||||
target_pos=(r, c))` centre l'`AreaEffect` de niveau supérieur du sort sur la
|
||||
case `(r, c)` désignée au lieu de la position de la cible créature — poser un
|
||||
Fireball au sol, pas seulement sur une tête. Le point doit être dans la carte
|
||||
et avoir une ligne d'effet depuis le jeteur (sinon rejet `invalid_destination`,
|
||||
aucun sort lancé). Avec `target_pos` et pas de cible résolue, l'incantation se
|
||||
fait sur le point : la sauvegarde primaire est sautée et chaque créature de la
|
||||
zone effectue sa propre sauvegarde (SR incluse). `target_pos` n'a de sens que
|
||||
pour un sort à zone : pour un sort ciblé sans `AreaEffect`, il est ignoré et
|
||||
la cible résolue est utilisée normalement. Sans `target_pos`, le comportement
|
||||
centré sur la créature est inchangé. `default_policy` ne choisit pas de point
|
||||
(disponible via une politique personnalisée). `default_policy` choisit soin / offensif / buff via
|
||||
`_find_heal_spell`, `_find_offensive_spell` et `_find_ally_needing_heal`.
|
||||
- Résistance aux sorts (SR) et résistances/immunités énergétiques : un combattant
|
||||
avec `spell_resistance > 0` oppose sa SR à chaque sort qui le cible — jet
|
||||
|
||||
Reference in New Issue
Block a user