- combat-tracker.hbs + fight.mjs : alignés sur le CSS core v14 (header/tracker/footer, boutons <button>), attitudes/couleurs PJ-PNJ conservées, menu contextuel combatant réparé
- less/combat.less (nouveau) : styles custom tracker + footer sticky des dialogues
- handicap des 3 dialogues de jet étendu jusqu'à III
- dialogue d'attaque : champ « Malus temporaires » (malus sur les jets)
- checkbox/radio : flex: 0 0 auto global (fin des icônes étirées — ex. « Deuxième action » 228px → 24px)
- TEST_COMBAT.md : plan de test combat rejouable (S1-S8, tout PASS)
- 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
- min: 0 sur reliability (l'update à 0 était clippé à 1 par le schéma —
l'état 'détruit' était inatteignable)
- réparation de fortune (règles p. 39) : +1D si le personnage possède la
Compétence requise, sinon Handicap de Rareté de cette Compétence
(rarity du skill de l'acteur) ; select toujours visible (compétence requise)
et pré-rempli depuis needSkill/skill de l'item
- dés marqués 'dommage' uniquement pour les Dommages réellement comptés
(Étanche/Coque absorbe → dés non marqués)
- destruction : damages.value réel conservé (difficulté de réparation
honnête au lieu de 5 forcé)
- états de panne localisés (VERMINE.damages_state_N), aussi dans panneState()
- ReliabilityDialog invoqué via .create() (convention du codebase)
- module/system/reliability.mjs : VermineReliability
- Test de Fiabilité : jet Xd10 (Mineurs 1D / Graves 3D / Critiques 5D),
chaque dé >= Fiabilité inflige 1 Dommage ; réduit Fiabilité et dommages
cumulés (panne/état/effet) ; destruction à 0
- Traits appliqués : Coque (absorbe n puis se perd), Cassant (+1 perte),
Étanche (Dommages d'immersion ignorés si Fiabilité au max)
- Réparations : classique (Précision + Artisanat/Mécanique/Technologie/
Armurerie vs Fiabilité d'origine + Handicap de panne, +1 Fiabilité/Réussite)
et de fortune (Précision + Bricolage, panne réparée sans gain de Fiabilité)
- ReliabilityDialog (test/réparation) + cartes de chat dédiées
- Boutons Test de Fiabilité / Réparer sur les fiches d'items (weapon/defense/item)
- i18n fr/en + styles des cartes et boutons
- VermineTotemDice : influence Humain/Adapté (+1D/-1D par domaine, règles
p. 121), gains/pertes via Instincts/Interdits avec limites (3D/totem,
5D total) et règles d'échange.
- roll.mjs applique l'influence selon le Totem dominant (au lieu de
l'ancienne logique basée sur identity.totem).
- Dialogue TotemDiceDialog (instinct Humain/autre totem, interdit Humain,
acte grave ±2D) + bouton et ligne d'influence sur la fiche personnage.
- Dés de Totem gagnés en cas d'échec à l'apprentissage Dé d'Évolution
(dés dépensés, garde capacité vide).
- Couleur de texte @color-text-light-2 assombrie (#c9e0c0 → #3f9b55)
pour la lisibilité dans tous les dialogues.
fix: robustesse et visibilité des évolutions
- buyEvolutionDialog : n'efface les Dés d'Évolution que si l'item est créé.
- Flag mutation éditable sur la fiche item evolution + badge
Adaptation/Mutation dans la liste du personnage.
- loseDie : applique aussi la limite totale de 5 dés au gain Adapté.
- Case "acte grave" conservée entre les rendus du dialogue.
- #getSpecialtyName accédait à this.#el sans garde : fermer le dialogue
pendant l'animation du jet levait "Uncaught (in promise)". Chaînage
optionnel sur l'élément (le jet se résout quand même et dépense le dé).
- Les Dés d'Expérience du Groupe sont désormais dépensés que le jet
d'apprentissage soit réussi ou raté (cohérent avec l'apprentissage
de personnage et les règles ; le décompte est sorti de #applySuccess).
- Garde sur le type Capacité : si aucune Capacité de Groupe n'est
sélectionnée, le jet est bloqué avec un avertissement (avant, il
marquait learned.ability et dépensait les dés sans rien apprendre).
- Limites de Capacités de Totem (personnage) : seules les Capacités du
Totem courant du personnage comptent dans les compteurs
3×N1 / 1×N2-N3 / max 5.
- Dialogue d'apprentissage personnage : 4 nouveaux types d'achat.
- Capacité de Totem : options filtrées (mode de jeu, niveau de
groupe, totem, non-apprises), difficulté = valeur d'Apprentissage,
limites 3×N1 / 1×N2-N3 / max 5, marque system.learned de l'item
(convention type character) et learned.ability du personnage.
- Élément d'Historique : difficulté 9, handicap 1 si astérisque
(background.asterisk), marque learned.background + item.
- Test de Réputation (réduire/augmenter) : réduire = difficulté
10 − score visé (−1 pt), augmenter = difficulté = réputation
actuelle (+1 par succès), bornes 0-10, marque learned.reputation.
- Évolution : option Dé de Totem Adapté ×2 quand Adapté > Humain
(1D remplacé par un dé adapté compté ×2 via VermineUtils.roll).
- Correction règles : les Dés d'Expérience sont dépensés même en cas
d'échec du jet d'apprentissage (décompte hors #applySuccess).
- Expérience de Groupe : nouveau dialogue d'apprentissage de Groupe
(niveau, réserve, capacité de totem), réserve d'expérience et phase
dans system.experience, boutons sur la fiche Groupe, reset des
limites par phase (level/reserve/ability).
- Phase d'expérience : filtre par groupe sélectionné, associe chaque
personnage à son premier groupe, reset des limites de tous les
nouveaux types d'apprentissage.
- Corrections : l'attaque de créature n'ajoute plus la Réaction du Rôle
(regles_creatures.txt), suppression de la case XP des en-têtes PJ
(legacy et AppV2).
- Divers : .eslintrc.js (règles inexistantes/obsolètes retirées),
libellé jaune de dialogue en couleur chitine, i18n FR/EN, chips
« appris » sur l'onglet expérience du personnage.
- Nouvel item Capacité de créature (creaturecapacity) : DataModel, fiche
AppV2, chat card, types Base/Survie/Cauchemar/Apocalypse, liste sur
l'onglet Informations de la créature avec drag&drop et post au chat.
- Blessures : coches séquentielles respectant la gravité (onClickWound),
malus de blessure -1D/-2D/-3D appliqué aux jets (Règles p.42),
montée en gravité automatique si les cercles sont pleins.
- Fiche Groupe : objectifs majeurs/mineurs éditables, liste de membres
simplifiée, notes de voyage (roadNotes), totem qui remplit
instinct/interdits, refonte visuelle des onglets.
- Créature : Réaction lançable, seuils/cercles de blessures corrigés
(Taille cumulée, Groupe sans seuil), libellés Taille/Meute.
- Corrections : icône de carte de chat plafonnée à 64px, slash orphelin
d'entrave à 0, notes de matériel du Groupe éditable (formInput),
bonus de Réaction non double-compté.
- Divers : suppression des captures de débogage, licence README.
- phase d'expérience (récompenses collectives et individuelles, objectifs, traumatisme)
- jets d'apprentissage (compétences, spécialités, caractéristiques, réserves, évolution)
- bonus de réserve acquis par apprentissage intégré au max dérivé
- transferts de dés individuels <-> groupe dans le dialogue de jet
- onglet expérience sur la fiche personnage
- guide utilisateur combat (docs/user/COMBAT.md)
- équipement des armes et protections (champ equipped, liste des équipés, toggle)
- échanges de coups automatisés (attaque/défense/résolution/blessures dans le chat)
- dialogue d'attaque par type (personnage/PNJ/créature), portées et difficultés
- conservation du scroll des fiches lors des modifs (option scrollable + classe active)
- verrouillage des compétences PNJ en mode jeu
- corrections review combat (défenseur, difficulté >10, multi-cibles, permissions)
- Fix constructor in rollDialog.mjs (spread operator for options)
- Remove all console.log statements from production code
- Add comprehensive JSDoc comments for all public APIs
- Convert French comments to English for consistency
- Use parseInt with radix parameter (10) throughout
- Replace let with const where appropriate
- Use Set for O(1) lookups in group-link.mjs methods
- Use spread operators for array cloning
- Optimize removeActorFromAllGroups with Set lookups
- Improve registerHooks with better comments and Set usage
- Simplify roll-message.hbs template logic
- Fix duplicate VERMINE key in lang/fr.json
- Add missing error translations
- Add .eslintrc.js with FoundryVTT-compatible linting config
Compatibility: FoundryVTT v11-v14
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Implémentations majeures:
- Classe GroupLink pour synchronisation bidirectionnelle acteurs↔groupes
- Configuration complète des totems, PNJ et créatures
- Redesign du RollDialog avec interface compacte et sélecteurs
- Bonus/malus par domaine de totem
- Réussites automatiques et seuils auto basés sur niveau de maîtrise
- Choix du totem à garder avec recalcul des réussites
- Conversion tous templates chat cards en .hbs
- Fiches PNJ et Créature avec sélecteurs pour tous les niveaux
- Documentation technique (ARCHITECTURE.md) et utilisateur (GUIDE_UTILISATEUR.md)
- Mise à jour system.json pour compatibilité v14
- Tous les TODOs du README.md complétés
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>