docs(rules): conformance journal round 15 - nonlethal, splash, skills and flight (out of scope -> modeled)
Brings in the last four out-of-scope mechanics: the nonlethal damage track (unarmed strikes, minimum damage), splash weapons (direct + scatter), combat skills (skill checks, Acrobatics Tumbling, Stealth/opposed Perception) and 3D flight over ground terrain (vertical line of effect deferred). Updates the out-of-scope and residual tables to drop the now-modeled items and marks the round-2 disposition tables as historical. Gate 1981.
This commit is contained in:
+25
-8
@@ -26,7 +26,7 @@ résiduel**.
|
||||
|
||||
| Contrôle | Résultat |
|
||||
|---|---|
|
||||
| `uv run pytest -q` | 1900 tests verts |
|
||||
| `uv run pytest -q` | 1981 tests verts |
|
||||
| `uv run ruff check src tests` (`select=ALL`) | conforme |
|
||||
| `uv run basedpyright src` (strict) | 0 erreur |
|
||||
| Transcript doré depuis la passe 1 | inchangé |
|
||||
@@ -35,6 +35,10 @@ résiduel**.
|
||||
|
||||
## 1. Écarts corrigés
|
||||
|
||||
> Les tableaux de disposition ci-dessous (passe 2) sont **historiques** : les
|
||||
> constats marqués « à corriger » / « résiduel assumé » ont depuis été corrigés
|
||||
> ou reclassés dans les passes suivantes (voir les tableaux de commits ci-après).
|
||||
|
||||
### Correctifs de la passe 2 (commits)
|
||||
|
||||
| Commit | Objet |
|
||||
@@ -231,6 +235,19 @@ Audit read-only de la dernière zone non vérifiée (`cli.py` rendu du transcrip
|
||||
| `ee22f75` | Clés YAML dupliquées rejetées (SafeLoader dédié) |
|
||||
| `dd0b42b` | `move_cost` omis documenté explicitement comme infranchissable |
|
||||
|
||||
### Correctifs de la passe 15 — hors-périmètre : non-létal, éclaboussures, compétences, vol
|
||||
|
||||
| Commit | Objet |
|
||||
|---|---|
|
||||
| `cba7bbf` | **Piste de dégâts non létaux** séparée ; *staggered* à non-létal = PV, *inconscient* au-delà ; immunité morts-vivants/artificiels ; le soin au-dessus du non-létal rend conscient |
|
||||
| `83c6e54` | Sources non létales : **unarmed strikes** non létaux par défaut ; **minimum de dégâts** = 1 **non-létal** exact |
|
||||
| `9cfcd67` / `2e60bbb` / `a1b1c29` / `678a4d8` | **Armes à éclaboussures** : touche directe = dégâts + 1 aux créatures à 5 ft ; échec = dispersion (d8) ; énergie (résistance/immunité), pas de RD ni de critique ; RNG inchangé pour les autres armes |
|
||||
| `e0fb5be` | **Jet de compétence** général (d20 + rangs + car. + classe +3 si rangs + ACP) |
|
||||
| `61686b5` | **Acrobaties « Tumbling »** : esquive d'AoO (DC = CMD, +5 si plus grand, +2 par adversaire), demi-vitesse, échec = l'AoO part et le déplacement s'arrête |
|
||||
| `2c40994` | **Discrétion / Perception opposée** : action de se cacher, `hidden_from` par observateur (concealment total + +2/déni Dex), brisée en attaquant/courant |
|
||||
| `2ae86ab` | **Vol au-dessus du terrain** : un volant ignore le terrain difficile et franchit les cases infranchissables au sol, sauf les murs `blocks_los` (pleine hauteur) ; LoE/couvert/high ground inchangés |
|
||||
| `9210a54` | Documentation du vol et de la **LoE verticale/falaise différée** (pas de hauteur de mur dans les données) |
|
||||
|
||||
> Vérifiés conformes par l'audit : largeur d'affichage (accents NFC/NFD, CJK), repli en ligne brute sans perte, parsing des lignes conformes, capture du premier combat (`seed+0`), sémantique des nuls, normalisation du couvert (`cover_bonus`, `cover: true` → +4, `blocks_los` → +4), validations de déploiement/markers, ordre `(ligne, colonne)`, bande 3σ bornée.
|
||||
|
||||
> **Registre des sorts clos** : les 35 derniers sorts ont été vérifiés champ par champ contre le KB — **0 divergence** (niveaux, sauvegardes, RM, portées, zones, formules conformes). Seuls 2 sorts sont absents du KB (`create_alcool`, `hidden_diplomacy`) et 1 nit de description subsiste (`detect_poison` mentionne « acid »).
|
||||
@@ -359,14 +376,13 @@ ne pas être confondues avec des bogues.
|
||||
| Sujet | Raison |
|
||||
|---|---|
|
||||
| **Squeeze** (se serrer dans un passage étroit) | La largeur de couloir n'est pas comparée à la taille ; une créature bloquée par son footprint l'est sans option de squeeze payante |
|
||||
| **Acrobatics « Tumbling »** (traverser une case ennemie sans AoO) | Le moteur n'a pas de système de compétences |
|
||||
| **Système de compétences** (Perception opposée, Discrétion, Acrobaties) | Pas de sous-système de compétences (hors `dex_skills`/bonus statiques) |
|
||||
| **Compétences hors combat** (Escalade, Natation, Diplomatie, Sabotage, Connaissances, Art de la magie…) | Seules les compétences utiles au combat sont modélisées (Acrobaties Tumbling, Discrétion/Perception, Évasion) |
|
||||
| **Créature inerte très grande = obstacle à 2 cases** | Les cases d'une créature inactive ne bloquent pas et ne coûtent pas double |
|
||||
| **Échec d'incantation du personnage sourd (20 %)** | Modélisé : composante verbale + condition `deafened` → jet de d20% ≤ 20 |
|
||||
| **Échec d'incantation du personnage sourd (20 %)** | Modélisé (composante verbale + `deafened`) |
|
||||
| **Incantation multi-round (`long` : 3 rounds, 10 min, 1 h)** | Non planifiable dans un tour ; jetée du budget (`downgraded:cast_time`) plutôt qu'approximée |
|
||||
| **Co-occupation au-delà de Tiny vs plus grand** | Deux créatures Small+ ne partagent jamais une case ; plusieurs Tiny sur une case non gérés |
|
||||
| **Combat à deux armes / arme en main secondaire (×0,5 Force)** | Hors du modèle d'attaque actuel |
|
||||
| **Vol 3D / vol par-dessus les obstacles** | La vitesse de vol est un budget au sol ; pas de maniabilité ni de survol du terrain |
|
||||
| **Vol — LoE verticale / falaise** | Le survol du terrain est modélisé ; la ligne d'effet verticale et les falaises ne le sont pas (les données n'expriment pas de hauteur de mur) |
|
||||
| **`markers`** (points nommés de la carte) | Validés à la lecture, non appliqués à la résolution |
|
||||
|
||||
---
|
||||
@@ -377,8 +393,8 @@ ne pas être confondues avec des bogues.
|
||||
|---|---|---|
|
||||
| **Origine des bursts** | Mesure **centre-à-centre** au lieu d'**intersection-à-intersection** avec la règle du bord lointain (SRD « Aiming a Spell ») ; l'exactitude exigerait une coordonnée d'intersection dans le contrat d'observation et un choix de coin du lanceur | Différé, documenté précisément (`areas.py`, `_creatures_in_range`) |
|
||||
| **Course en armure lourde (×3)** | Le modèle n'a pas de champ d'armure ; la course est désormais bornée par la CON et le don Run est modélisé | Hors périmètre (reclassé) |
|
||||
| **Dégâts non létaux** | Aucune source dans les données ; le minimum de dégâts est approximé en dégâts normaux | Hors périmètre (aucune source) |
|
||||
| **Armes à éclaboussures** | Aucun objet concerné dans les données | Hors périmètre |
|
||||
| **Dégâts non létaux** | **Modélisé** (piste séparée, sources unarmed, minimum de dégâts non létal) | Sorti du hors-périmètre |
|
||||
| **Armes à éclaboussures** | **Modélisées** (touche directe + éclaboussure, dispersion d8) | Sorties du hors-périmètre |
|
||||
| **Sorts utilitaires différés** | `spiritual_weapon` (attaque flottante persistante — pas d'attaquant sans porteur dans le moteur) et `saving_finale` (reroll immédiat — pas de crochet de réaction sur un jet de sauvegarde) restent hors d'atteinte ; `guidance`, `resistance`, `virtue` et `stabilize` sont désormais **modélisés** | Différés (raison moteur consignée) |
|
||||
| **Non vérifiable (KB)** | `create_alcool`, `hidden_diplomacy` absents du KB ; nit de description de `detect_poison` (« acid ») | Indéterminé / nit |
|
||||
| **Couverture d'audit** | Rendu du transcript et formats de données désormais **audités** (passe 14, 14 bogues corrigés) ; toutes les zones sont couvertes | Couverture complète |
|
||||
@@ -422,7 +438,8 @@ Constats explicitement contrôlés et **confirmés conformes** :
|
||||
| 12 | **Hors périmètre — composantes & ASF** : composantes sur 107 sorts, sourd 20 %, échec d'armure, `arcane_caster` | `bg_02d4b4e3`, `bg_84baec1d` | 4 correctifs | Composantes/ASF **sortis du hors-périmètre** |
|
||||
| 13 | **Hors périmètre — objets/inventaire** : Sunder réel (dureté/PV), Steal, récupération d'arme | `bg_f9c69e32`, `bg_44d81a98` | 2 correctifs | Objets/inventaire **sortis du hors-périmètre** |
|
||||
| 14 | Audit du rendu du transcript + formats (cli/map/loader) | `bg_dc36ad2f` | 14 bogues (4 Med, 10 Low), 0 High | 14 correctifs (`9656ae8`..`dd0b42b`) |
|
||||
| 15+ | Hors périmètre restant : compétences, pv non létaux, armes à éclaboussures, vol 3D | — | — | En cours (sans demande d'arrêt) |
|
||||
| 15 | **Hors périmètre — non-létal, éclaboussures, compétences, vol** | `bg_388b9b98`, `bg_22a32075`, `bg_137eb485`, `bg_edd042b7` | 15 correctifs | 4 chantiers **sortis du hors-périmètre** |
|
||||
| 16+ | Reste structurel : LoE verticale/falaise, deux armes, multi-round `long`, squeeze, compétences hors combat, markers | — | — | Documenté (hors périmètre) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user