feat(traits): phase 1 — réparations (Bien conçu, Pratique, Coque réparable)

- Coque : épuisée stockée {value:0, max:n} au lieu de null → réparable ; nouveau mode « Réparer la coque » (difficulté = coque.max) dans le dialogue ; affichage (0/n) sur la fiche
- Bien conçu : Réussite automatique en réparation classique (restauration complète) ; +1 Fiabilité à la 1ère réparation de fortune réussie (compteur traits.bien_conçu.value)
- Pratique : Handicap +I sur toutes les réparations (required +1, note sur la carte)
- i18n fr/en (9 clés)
- TRAITS_PLAN.md : suivi du plan d'automatisation des Traits
This commit is contained in:
2026-08-07 14:40:42 +02:00
parent ef86b2637c
commit 8dd5d02994
8 changed files with 169 additions and 31 deletions
+43
View File
@@ -0,0 +1,43 @@
# Plan d'automatisation des Traits — Suivi
Base : `regles/regles_traits.txt` (et KitDeSurvie p.70-71, 39).
Implémenté déjà : `cassant`, `coque` (absorption), `etanche` (immersion) dans `module/system/reliability.mjs`.
Décisions utilisateur : Fétiche +1D sur les **deux** Réserves · Malus/Durée = **saisie manuelle** · Handicap de Mobilité = **note de rappel** · Items génériques = **flag équipé OK**.
## Légende
- [x] fait
- [ ] à faire
- [~] en cours
## Tâche 0 — Prérequis communs
- [ ] `item.mjs` : champ `equipped` sur items génériques + toggle fiche `item-item-sheet.hbs`
- [ ] nouveau `module/system/traits.mjs` : helpers partagés (`equippedItems`, `lourdMalus`, `mobilityNote`, `feticheItem`…)
## Phase 1 — Réparations (reliability.mjs + dialogue)
- [x] **Bien conçu** : succès auto en réparation classique (restauration complète) + 1ʳᵉ réparation de fortune rend +1 Fiabilité (compteur `traits.bien_conçu.value`)
- [x] **Pratique** : Handicap +I aux réparations (required +1, note sur la carte)
- [x] **Coque réparable** : épuisement → `{ value: 0, max: n }` ; mode « Réparer la coque » dans le dialogue (jet vs `coque.max`) ; affichage `(0/n)` sur la fiche
- [x] **Étanche** : rien de plus (immersion gérée ; gaz/maladie hors scope)
## Phase 2 — Combat (combatDialog.mjs, exchange.mjs)
- [ ] **Lourd** : malus auto (`lourdMalus()`) dans dialogue combat
- [ ] **Rapide (n)** : handicap (n) défenseur pré-rempli + note carte d'échange
- [ ] **Rafale (n)** : case « Tir en rafale » → difficulté +2, +n réussites si réussi
- [ ] **Portée** : portée effective × Vigueur (archery/throwing) affichée
- [ ] **Maniable / Mobilité** : note de rappel dialogue combat + jets athlétiques
- [ ] **Incapacitant (n)** : bouton « Jet de Santé vs (n) » sur carte d'échange
## Phase 3 — Jets d'action (rollDialog.mjs + roll-dialog.hbs)
- [ ] **Ponctuel (n)** : select outil → annule n Handicaps, décrémente, supprime à 0
- [ ] **Pratique (jets)** : select d'outil → +1D / +2D si Pratique (remplace checkbox `usingTools`)
- [ ] **Intimidant** : case « Brandit » → malus 1D Psychologie ou note relance
- [ ] **Malus (n)** : champ « Malus temporaires » (saisie manuelle) déduit du pool
- [ ] **Durée (n)** : note « effet pendant n tours » sur carte de jet d'arme
## Phase 4 — Acteur (character.mjs + fiche)
- [ ] **Fétiche** : +1D Effort ET Sang-Froid (corriger config « ou » → « et ») ; alerte 2+ fétiches ; action « Perdre le fétiche » (2D, max 1D)
- [ ] **Zone (n)** : note carte d'échange + bouton « Appliquer aux cibles de la zone »
## Transverse
- [x] i18n fr/en pour la Phase 1
- [x] ESLint (0 erreur sur les fichiers modifiés) + tests navigateur Phase 1 (coque, réparation coque, Bien conçu classique/fortune, Pratique, dialogue, affichage fiche)