Files
vermine2047/TRAITS_PLAN.md
T
uberwald ef01651b1d feat(traits): tâche 0 + phases 2-4 — automatisation complète des Traits
Tâche 0 :
- item.mjs : champ equipped sur items génériques + toggle fiche
- nouveau module/system/traits.mjs (helpers partagés : equippedItems, lourdMalus, mobilityHandicap, feticheItem…)

Phase 2 — Combat :
- Lourd : malus cumulés auto (Vigueur < n) dans le dialogue + pool
- Rapide : handicap (n) pré-rempli dans la défense (character + PNJ) + note carte
- Rafale : case tir en rafale (+2 difficulté), +n réussites si réussi (bonusOnSuccess)
- Portée : portée effective n × Vigueur affichée
- Maniable/Mobilité : note de rappel (dialogue + carte)
- Incapacitant : bouton « Jet de Santé (n) » sur la carte d'échange
- getLabel() : libellés caractéristiques/compétences localisés

Phase 3 — Jets d'action :
- Ponctuel : annule jusqu'à n Handicaps, consommé au jet (Traits supprimé à 0)
- Pratique : outil sélectionné +2D au lieu de +1D
- Intimidant : case « Brandit » → -1D Psychologie ou Relance 1D
- Malus : champ « Malus temporaires » manuel déduit du pool
- Durée : note « n tours » sur la carte de jet d'arme
- roll() : transmission effectiveRange/mobilityHandicap/ponctuelUsed/intimidant (corrige l'affichage Portée/Mobilité)

Phase 4 — Acteur :
- Fétiche : +1D Effort ET Sang-Froid (max dérivé, config corrigé), alerte 2+ fétiches, action « Perdre le fétiche » (-2D, max -1D persistant feticheLoss)
- Zone : note + bouton « Appliquer aux cibles de la zone » (#onApplyZone)

CSS : styles LESS pour les nouvelles classes (fetiche-block, exchange-reminder/zone, traits-reminder, tool-bonus/ponctuel, duree-note)
i18n : 29 clés fr/en
TRAITS_PLAN.md : plan complet cochée
2026-08-07 15:30:41 +02:00

4.1 KiB
Raw Blame History

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

  • 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)

  • 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)
  • Pratique : Handicap +I aux réparations (required +1, note sur la carte)
  • 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
  • É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 + pool breakdown (ligne « Malus Lourd »)
  • Rapide (n) : handicap (n) défenseur pré-rempli (locks.handicap) + note sur carte d'échange
  • Rafale (n) : case « Tir en rafale » → difficulté +2, +n réussites si réussi (bonusOnSuccess)
  • Portée : portée effective × Vigueur (n × vigor) affichée (dialogue + carte)
  • Maniable / Mobilité : note de rappel dialogue combat + carte (handicap de mobilité cumulé, Maniable l'annule)
  • Incapacitant (n) : bouton « Jet de Santé (n) » sur carte d'échange (RollDialog santé vs n)
  • getLabel() : libellés caractéristiques/compétences localisés dans le tchat (bonus du jet de Santé)

Phase 3 — Jets d'action (rollDialog.mjs + roll-dialog.hbs)

  • Ponctuel (n) : outil sélectionné → annule jusqu'à n Handicaps ; consommé au jet (décrément, Trait supprimé à 0) ; note carte
  • Pratique (jets) : outil sélectionné → +2D au lieu de +1D (badge « +2D » dans le dialogue)
  • Intimidant : case « Brandit (X) » → 1D Psychologie si compétence psychologie, sinon Relance 1D ; note carte
  • Malus (n) : champ « Malus temporaires » (saisie manuelle) déduit du pool + ligne carte
  • Durée (n) : note « effet pendant n tours de combat » sur carte de jet d'arme
  • Fix roll() : transmission des paramètres étendus (ponctuelUsed, intimidant, effectiveRange, mobilityHandicap) au message — corrige aussi l'affichage Portée/Mobilité en Phase 2

Phase 4 — Acteur (character.mjs + fiche)

  • Fétiche : config « ou »→« et » ; +1D Effort ET Sang-Froid (max dérivé) ; alerte 2+ fétiches (bandeau fiche) ; action « Perdre le fétiche » (2D valeurs, +1 perte max persistant experience.feticheLoss, retire le Trait)
  • Zone (n) : note carte d'échange + bouton « Appliquer aux cibles de la zone » (#onApplyZone : résout et applique la blessure à toutes les cibles)

Transverse

  • i18n fr/en pour la Phase 1
  • 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)
  • ESLint (0 erreur sur les fichiers modifiés) + tests navigateur Phase 2 (Lourd, Rapide+défense, Rafale conditionnel, Portée, Mobilité, Incapacitant, toggle equip)
  • ESLint (0 erreur sur les fichiers modifiés) + tests navigateur Phase 3 (Pratique +2D, Ponctuel annulation+consommation, Intimidant psychologie/relance, Malus temporaires, Durée, transmission roll())
  • ESLint (0 erreur sur les fichiers modifiés) + tests navigateur Phase 4 (Fétiche helpers + UI, Zone note/bouton + #onApplyZone) — modèle réserves + champ feticheLoss effectifs au reload