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 <vibe@mistral.ai>
This commit is contained in:
2026-06-07 20:54:02 +02:00
parent 4c33607b2b
commit b4a4737d5b
+68 -3
View File
@@ -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 | | 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 | | 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 | | 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" | | 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 ## Auteurs
Corrections réalisées par : Mistral Vibe (via Vibe CLI) 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 - **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 - **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} - 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` :** **Code ajouté dans `mournblade-cyd2-personnage-sheet.mjs` :**
```javascript ```javascript