fix(spells): backfill casting times for all imported spells

This commit is contained in:
2026-09-11 15:01:42 +02:00
parent b3398c16ce
commit 24af1687ab
111 changed files with 147 additions and 12 deletions
+9 -6
View File
@@ -414,17 +414,20 @@ Règles modélisées :
`one_round` → **round complet par clamp** — approximation documentée : le
moteur ne tient pas d'incantation en cours entre les tours, le sort
d'1 round se résout au bout du tour courant au lieu du suivant ;
`long` (≥ 1 minute) → **jeté avant le filtre de budget**, rapporté comme
`long` (> 1 round : 3 rounds, 10 minutes, 1 heure — cast multi-round non
planifiable dans un tour) → **jeté avant le filtre de budget**, rapporté comme
`ActionResult(kind="cast_spell", ok=False, reason="downgraded:cast_time")`
(seule `default_policy` s'en préserve : `_choose_spell_action` ne sélectionne
jamais un sort à temps long). Le moteur résout le code via sa registry
(`_cast_time_of`, repli `standard` pour un nom inconnu) et le passe aux
filtres purs sous forme de résolveur `CastTimeResolver`. Seuls
`Summon Monster I/II` déclarent `"1 round"` dans `data/spells/` ; les autres
sorts exotiques (Bladed Dash, Silence…) restent au défaut `standard` — hors
du périmètre de ce paquet. Hors du périmètre (hook futur, commenté dans
filtres purs sous forme de résolveur `CastTimeResolver`. Les 107 sorts
importés de `data/spells/` déclarent tous leur `cast_time` (codes normalisés,
backfillés depuis le SRD) : 95 `standard`, 6 `one_round` (Enhance Water,
Silence, Sleep, Summon Instrument, Summon Monster I/II), 2 `immediate`
(Grasp, Saving Finale) et 4 `long` (Make Whole, Masterwork Transformation,
Mending, Restoration Lesser). Hors du périmètre (hook futur, commenté dans
`_cast_time_of`) : la métamagie d'incanteur spontané qui allonge le temps
d'incantation à un round complet sans don Quickened — le signature
d'incantation à un round complet sans don Quickened — la signature
`Callable[[Action], CastTime]` du résolveur l'accommodera sans changement.
- Retard (`Action(kind="delay")`, action standard) : le combattant renonce à
agir maintenant et agit plus tard dans le **même round** — en fin d'ordre si