From 59116027364aa40692c5aad06282265f92b01522 Mon Sep 17 00:00:00 2001 From: ctan Date: Sun, 20 Sep 2026 16:10:00 +0200 Subject: [PATCH] docs(rules): conformance journal round 13 - objects/inventory (out of scope -> modeled) Sunder now uses object hardness/HP with the SRD broken condition (usable at -2), steal transfers real carried items and unarmed disarm auto-picks up the dropped weapon. Objects/inventory leave the out-of-scope list; skills, nonlethal, splash, 3D flight and the transcript remain. Gate 1861. --- README.md | 2 +- docs/conformance-srd.md | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 625b6c5..1faed75 100644 --- a/README.md +++ b/README.md @@ -2092,7 +2092,7 @@ Limites de sorts (conformance D6-D9, documentées plutôt que bricolées) : La gate de validation complète (tests + lint + types) : ```bash -uv run pytest -q # 1850 tests +uv run pytest -q # 1861 tests uv run ruff check src tests uv run basedpyright src # mode strict ``` diff --git a/docs/conformance-srd.md b/docs/conformance-srd.md index f5f23fe..10e049e 100644 --- a/docs/conformance-srd.md +++ b/docs/conformance-srd.md @@ -26,7 +26,7 @@ résiduel**. | Contrôle | Résultat | |---|---| -| `uv run pytest -q` | 1850 tests verts | +| `uv run pytest -q` | 1861 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é | @@ -203,6 +203,13 @@ Une passe de vérification adversariale a confirmé que les 15 correctifs High/M | `f6292f8` | `arcane_caster` / `armor_spell_failure` posés depuis les feuilles (liche, Thrune, misty, nairda arcaniques) | | `9f72948` | README synchronisé | +### Correctifs de la passe 13 — objets / inventaire (sortis du hors-périmètre) + +| Commit | Objet | +|---|---| +| `74f5d64` | **Sunder réel** : statistiques d'objet par arme (dureté/PV SRD, +2/+2 par point d'amélioration) ; dégâts réels de l'attaque moins la dureté ; arme *broken* à ≤ moitié des PV, détruite à 0 ; **arme cassée utilisable à −2** avec critique sur 20 naturel ×2 (réconcilié avec le *misfire*/*quick_clear*) | +| `d0f7f3a` | **`carried_items`** (objets portés, non tenus) sur le modèle + données depuis les feuilles ; **Steal** transfère réellement un objet porté ; **récupération** d'une arme lâchée (pickup au désarmement à mains nues) | + > **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 »). ### Passe 1 — sorts de buff, mouvement/grille, morts-vivants, armes naturelles @@ -330,7 +337,6 @@ ne pas être confondues avec des bogues. |---|---| | **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 | -| **Objets / inventaire** (`Steal`, `Sunder`) | Le modèle n'a pas de piste d'objets (tenu vs porté, PV/dureté d'objet) — seule l'usure d'arme simplifiée existe | | **Système de compétences** (Perception opposée, Discrétion, Acrobaties) | Pas de sous-système de compétences (hors `dex_skills`/bonus statiques) | | **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 | @@ -391,7 +397,8 @@ Constats explicitement contrôlés et **confirmés conformes** : | 10 | Sorts utilitaires résiduels (lot 4) : guidance, resistance, virtue, stabilize, spiritual_weapon, saving_finale | `bg_9c989e12` | 4 implémentés, 2 différés | 4 correctifs (`08f9af9`..`f788613`) | | 11 | **Hors périmètre — alignement** : champ + dérivées, Shard of Chaos / Spear of Purity, Protection from Evil/Law (+communales) | `bg_1a3b0faa`, `bg_6980098f`, `bg_07b3d604` | 3 correctifs | Alignement **sorti du hors-périmètre** | | 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 restant : objets/inventaire (Steal/Sunder), compétences, pv non létaux, armes à éclaboussures, vol 3D, rendu du transcript | — | — | À reprendre | +| 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+ | Hors périmètre restant : compétences, pv non létaux, armes à éclaboussures, vol 3D, rendu du transcript | — | — | À reprendre | ---