From 9f72948d2324cea31a85ef6a67c759d30d7a1de7 Mon Sep 17 00:00:00 2001 From: ctan Date: Sun, 20 Sep 2026 14:34:33 +0200 Subject: [PATCH] docs(rules): README - component/ASF data now encoded, dedup snapshot bullet The components/ASF bullet no longer defers the data encoding (done in the two preceding commits): 107/108 registry spells carry their KB components (Create Alcool is a homebrew cantrip with no KB entry) and all 15 combatants carry arcane_caster plus an effective armor_spell_failure - zero everywhere because the shipped arcane casters are unarmored or wear light armor whose ASF their magus/bard feature annuls for their own-list spells. Also collapses an accidental duplicated armor_spell_failure/arcane_caster description in the observation snapshot bullet. --- README.md | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index f8b15f5..5112daf 100644 --- a/README.md +++ b/README.md @@ -1695,11 +1695,7 @@ Règles modélisées : pourcentage 0-100 d'échec d'incantation arcanique dû à l'armure, authored sur le JSON — le modèle n'a pas d'équipement) et arcane_caster (bool : vrai = incanteur arcanse exposé à l'ASF, faux = incanteur divin jamais - exposé), armor_spell_failure (int 0-100 — pourcentage d'échec - d'incantation arcanique de l'armure, SRD « Arcane Spells and Armor », - authored sur le JSON faute de modèle d'équipement) et arcane_caster - (bool — vrai pour un incanteur arcanse exposé à l'ASF, faux pour un - incanteur divin), + exposé), dr {amount, bypass} ou None (C1), creature_type (C3), bab (E1), initiative_mod (E2) et initiative_total (U2 : total du jet d'initiative courant = d20 + mod, 0 si pas encore de clé — invocation @@ -1854,8 +1850,8 @@ plutôt que bricolées) : large ones, may present an obstacle even when helpless. In such cases, each square you move through counts as 2 squares » — les cases d'une créature inactive ne bloquent pas et ne coûtent pas double). -- **Composantes des sorts et échecs d'incantation associés — moteur en - place, encodage des données en cours** (SRD « Cast a Spell — Spell +- **Composantes des sorts et échecs d'incantation associés — moteur et + données en place** (SRD « Cast a Spell — Spell Components » : « A spellcaster who has been deafened has a 20% chance to spoil any spell he tries to cast if that spell has a verbal component » ; SRD « Arcane Spells and Armor » : « If you cast an arcane spell with a @@ -1875,10 +1871,19 @@ plutôt que bricolées) : `arcane spell failure`) ; convention `<=` miroir du jet de dissimulation. Chaque jet n'est joué que si sa condition tient : un lanceur non-sourd et dépourvu d'ASF garde un flux RNG bit-identique. - Reste hors périmètre (tâche de suivi) : l'encodage des composantes sur - les 108 sorts du registre `data/spells/` (aucun sort ne déclare encore - de composante, donc aucun échec ne peut partir dans les combats - dorés) ; le jet de Perception DD 20 basé sur le son du sourd et son + Données encodées : les 108 sorts du registre `data/spells/` portent leur + ligne `components` issue du KB (107 encodés ; Create Alcool, cantrip + maison sans fiche KB, reste sans composante déclarée — pas d'échec + possible) ; les 15 combattants de `data/pcs/` et `data/monsters/` + portent `arcane_caster` (vrai : misty magus/bard, nairda sorcière, + liche, agent de Thrune) et un `armor_spell_failure` **effectif** — tous à + 0 dans les données actuelles : les incanteurs arcanes encodés sont soit + sans armure (nairda, liche), soit en armure légère dont l'ASF est annulée + par leur classe pour leurs sorts de liste (misty : chemise de mithral, + sorts de barde/magus — classes/bard.md, classes/magus.md ; agent de + Thrune : cuir clouté +1, sorts de magus — classes/magus.md). Aucun + combat doré ne joue donc de jet de composante. Reste hors périmètre : + le jet de Perception DD 20 basé sur le son du sourd et son échec automatique associé ne sont pas modélisés. Le soin des morts-vivants par les sorts de soin (`cure`) est en revanche modélisé : SRD « Cure Light Wounds » — « this spell deals damage to them instead of