From b4a4737d5b6351d137847a2c8cf26893c24b0504 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnier Date: Sun, 7 Jun 2026 20:54:02 +0200 Subject: [PATCH] Docs: Update CORRECTIONS.md with new refactoring details and fixes - Document code duplication elimination in item models - Document currency conversion logic centralization - Document new Handlebars helpers (localizeAllegiance, joinPredilections) - Fix monetary conversion rates in documentation (1 PO = 100 SC, 1 PA = 10 SC) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- CORRECTIONS.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/CORRECTIONS.md b/CORRECTIONS.md index 5112a03..bd43401 100644 --- a/CORRECTIONS.md +++ b/CORRECTIONS.md @@ -562,9 +562,9 @@ Les chemins doivent être **relatifs au répertoire `systems/`** : | Cases PO/PA/SC sur items | ✅ Déjà présent | Via partial-item-prix.hbs avec calcul automatique | | Sections blanches dans Profils | ✅ Complété | Remplacement des blocs simples par sheet-box | | Virgules après Prédilections | ✅ Complété | Plus de virgule finale lorsqu'il n'y a qu'une seule Prédilection | -| Valeurs d'Allégeance | ✅ Complété | Affichage propre : Tous, Chaos, Loi, Bêtes, Élémentaires | +| Valeurs d'Allégeance | ✅ Complété | Affichage propre : Tous, Chaos, Loi, Bêtes, Élémentaires (via helper localizeAllegiance) | | Orthographe Talent | ✅ Complété | "scéance" → "séance" | -| Totaux argent/équipement | ✅ Complété | Calcul automatique activé + conversion lore | +| Totaux argent/équipement | ✅ Complété | Calcul automatique activé avec conversion lore (1 PO = 100 SC, 1 PA = 10 SC) | --- @@ -611,6 +611,71 @@ Utilisation du helper `subtract` pour vérifier si c'est la dernière prédilect --- +### 18. ✅ Réduction de la duplication de code dans les modèles items + +**Problème :** +Les modèles `equipement.mjs`, `arme.mjs`, `protection.mjs`, et `monnaie.mjs` dupliquaient les champs communs : `prixpo`, `prixca`, `prixsc`, `rarete`, `quantite`, `equipped`, `description`. + +**Solution :** +Création d'une classe de base `BaseItemWithPriceDataModel` dans `base-item.mjs` qui contient tous les champs communs. Les 4 modèles étendent maintenant cette classe. + +**Avantages :** +- Élimination de la duplication de code +- Maintenance plus facile (changement dans un seul endroit) +- Cohérence garantie entre tous les items avec prix + +**Fichiers modifiés :** +- `modules/models/base-item.mjs` - Ajout de `BaseItemWithPriceDataModel` +- `modules/models/equipement.mjs` - Étend `BaseItemWithPriceDataModel` +- `modules/models/arme.mjs` - Étend `BaseItemWithPriceDataModel` +- `modules/models/protection.mjs` - Étend `BaseItemWithPriceDataModel` +- `modules/models/monnaie.mjs` - Étend `BaseItemWithPriceDataModel` + +--- + +### 19. ✅ Centralisation de la logique de conversion monétaire + +**Problème :** +La logique de conversion entre PO, PA et SC était dupliquée dans `computeRichesse()` et `computeValeurEquipement()`. + +**Solution :** +- Créé `MournbladeCYD2Utility.calculateItemValueSC(prixpo, prixca, prixsc)` - méthode statique pour calculer la valeur SC +- Créé `MournbladeCYD2Utility.getItemValueSC(item)` - méthode qui calcule la valeur totale d'un item (prix × quantité) +- Refactorisé les deux méthodes de l'Actor pour utiliser ces helpers +- Le helper Handlebars `calculateItemValueSC` utilise maintenant la méthode statique + +**Avantages :** +- Une seule source de vérité pour les conversions monétaires +- Maintenance plus facile +- Réutilisable dans tout le codebase +- Cohérent avec le lore Mournblade (1 PO = 100 SC, 1 PA = 10 SC) + +**Fichiers modifiés :** +- `modules/mournblade-cyd2-utility.js` - Ajout des méthodes statiques +- `modules/mournblade-cyd2-actor.js` - Refactorisation pour utiliser les helpers + +--- + +### 20. ✅ Amélioration des helpers Handlebars + +**Nouveaux helpers ajoutés :** + +1. **`localizeAllegiance(value)`** - Localise les valeurs d'allégeance + - Mappe : tous→MNBL.all, chaos→MNBL.chaos, loi→MNBL.law, betes→MNBL.betes, elementaires→MNBL.elementaires, balance→MNBL.balance + - Utilise `game.i18n.localize()` pour la traduction + +2. **`joinPredilections(predilections)`** - Joint les prédilections avec des virgules + - Filtre les prédilections acquises et non utilisées + - Retourne une chaîne vide si aucune prédilection applicable + - Évite la virgule finale superflue + +**Fichiers modifiés :** +- `modules/mournblade-cyd2-utility.js` - Ajout des helpers +- `templates/actor-sheet.hbs` - Utilisation de `joinPredilections` et `localizeAllegiance` +- `templates/creature-sheet.hbs` - Utilisation de `joinPredilections` + +--- + ## Auteurs Corrections réalisées par : Mistral Vibe (via Vibe CLI) @@ -695,7 +760,7 @@ Ajout des appels à ces méthodes dans `_prepareContext()` de la feuille personn - **Argent Total** : Somme de toutes les monnaies (type "monnaie") converties en SC - **Valeur Total Équipement** : Somme de tous les équipements, armes et protections converties en SC - Les deux utilisent `computeMonnaieDetails()` pour convertir une valeur SC en {po, pa, sc, valueSC} -- **Conversions :** 1 PO = 400 SC, 1 PA = 20 SC +- **Conversions :** 1 PO = 100 SC, 1 PA = 10 SC (selon le lore : 1 PO = 10 SA, 1 SA = 10 PB) **Code ajouté dans `mournblade-cyd2-personnage-sheet.mjs` :** ```javascript