# Corrections apportées au module Mournblade CYD 2.0
## Date : 2026-06-07
## Dernière mise à jour : 2026-06-07
## Nouveautés et Améliorations (2026-06-07)
## Problèmes identifiés et corrigés
### 1. ❌ Erreur de chargement des partials Handlebars
**Problème :**
Les feuilles de personnage et de créature généraient une erreur lors du rendu :
```
Failed to render template part "sheet":
The partial systems/fvtt-mournblade-cyd-2-0/templates/partial-active-effects.hbs could not be found
```
**Cause :**
La fonction `preloadHandlebarsTemplates()` dans `modules/mournblade-cyd2-utility.js` ne préchargeait pas tous les partials nécessaires. Seuls 7 templates étaient préchargés sur 9 utilisés.
**Partials manquants :**
- `partial-active-effects.hbs` - Utilisé dans les feuilles actor-sheet.hbs et creature-sheet.hbs
- `partial-item-effects.hbs` - Utilisé dans de nombreux templates d'items
**Solution :**
Ajout des deux partials manquants à la liste des templates préchargés dans la fonction `preloadHandlebarsTemplates()`.
**Fichier modifié :**
- `modules/mournblade-cyd2-utility.js` (lignes 189-201)
**Code avant :**
```javascript
const templatePaths = [
'systems/fvtt-mournblade-cyd-2-0/templates/editor-notes-gm.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-header.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-description.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-nav.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-prix.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-automation.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/hud-adversites.hbs',
]
```
**Code après :**
```javascript
const templatePaths = [
'systems/fvtt-mournblade-cyd-2-0/templates/editor-notes-gm.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-header.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-description.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-nav.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-prix.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-automation.hbs',
'systems/fvtt-mournblade-cyd-2-0/templates/partial-active-effects.hbs', // ✅ Ajouté
'systems/fvtt-mournblade-cyd-2-0/templates/partial-item-effects.hbs', // ✅ Ajouté
'systems/fvtt-mournblade-cyd-2-0/templates/hud-adversites.hbs',
]
```
---
### 2. ❌ Erreur de création d'effet actif
**Problème :**
```
base-actor-sheet.mjs:357 MournbladeCYD2 | Failed to create effect: TypeError:
Cannot read properties of undefined (reading 'create')
```
**Cause :**
La fonction `ActiveEffectDialog.create()` n'existe pas dans Foundry VTT v14. L'API a changé et cette méthode a été supprimée.
**Solution :**
Remplacement de l'appel à `foundry.applications.api.ActiveEffectDialog.create()` par une création directe via `document.createEmbeddedDocuments("ActiveEffect", [data])`, suivie de l'ouverture de la feuille d'édition.
**Fichiers modifiés :**
- `modules/applications/sheets/base-actor-sheet.mjs` (lignes 328-363)
- `modules/applications/sheets/base-item-sheet.mjs` (lignes 189-224)
**Code avant :**
```javascript
const effect = await foundry.applications.api.ActiveEffectDialog.create({
document: this.document,
effect: defaultEffectData
});
if (effect) {
await this.document.createEmbeddedDocuments("ActiveEffect", [effect.toObject()]);
}
```
**Code après :**
```javascript
const [effect] = await this.document.createEmbeddedDocuments("ActiveEffect", [defaultEffectData]);
if (effect) {
effect.sheet.render(true);
}
```
---
### 3. ❌ Boucle infinie de chargement d'icône (effect.webp introuvable) ✅
**Problème :**
```
404 (Not Found) - GET https://localhost:31000/systems/fvtt-mournblade-cyd-2-0/assets/icons/effect.webp
Boucle infinie de tentatives de chargement
```
**Cause :**
L'icône `effect.webp` était référencée dans plusieurs fichiers mais n'existait pas dans le dossier `assets/icons/`. Chaque fois que la dialog de création d'effet s'ouvrait, le navigateur essayait de charger cette image manquante en boucle.
**Fichiers concernés :**
- `modules/applications/sheets/base-actor-sheet.mjs` (ligne 336)
- `modules/applications/sheets/base-item-sheet.mjs` (ligne 197)
- `modules/mournblade-cyd2-effects.js` (lignes 120, 180)
- `templates/partial-active-effects.hbs` (ligne 30)
- `templates/partial-item-effects.hbs` (ligne 30)
**Solution :**
Remplacement de toutes les références à `effect.webp` par `capacite.webp`, une icône existante dans le dossier `assets/icons/`.
**Code avant :**
```javascript
icon: "systems/fvtt-mournblade-cyd-2-0/assets/icons/effect.webp"
```
**Code après :**
```javascript
icon: "systems/fvtt-mournblade-cyd-2-0/assets/icons/capacite.webp"
```
---
### 4. ❌ Propriété dépréciée ActiveEffectDuration.type ✅
**Problème :**
```
foundry.mjs:1555 Error: You are accessing ActiveEffectDuration#type,
which is now at ActiveEffectDuration#units.
Deprecated since Version 14
Backwards-compatible support will be removed in Version 16
```
**Cause :**
En Foundry VTT v14, la propriété `duration.type` a été renommée en `duration.units`. L'ancien nom était encore supporté pour la compatibilité, mais générait des avertissements et sera supprimé en v16.
**Fichiers concernés :**
- `templates/partial-active-effects.hbs` (lignes 55-61)
- `templates/partial-item-effects.hbs` (lignes 51-56)
**Solution :**
Remplacement de toutes les occurrences de `effect.duration.type` par `effect.duration.units` dans les templates.
**Code avant :**
```handlebars
{{#if effect.duration.type}}
{{#if (eq effect.duration.type "rounds")}}🔄{{/if}}
{{#if (eq effect.duration.type "turns")}}🎭{{/if}}
{{/if}}
```
**Code après :**
```handlebars
{{#if effect.duration.units}}
{{#if (eq effect.duration.units "rounds")}}🔄{{/if}}
{{#if (eq effect.duration.units "turns")}}🎭{{/if}}
{{/if}}
```
---
### 5. ❌ Helper Handlebars "subtract" manquant ✅
**Problème :**
```
Failed to render Application "MournbladeCYD2PersonnageSheet":
Missing helper: "subtract"
```
**Cause :**
Le template utilisait le helper `subtract` dans `{{#unless (eq index (subtract effect.changes.length 1))}}` mais ce helper n'était pas enregistré dans Handlebars.
**Fichiers concernés :**
- `templates/partial-active-effects.hbs` (ligne 44)
- `templates/partial-item-effects.hbs` (ligne 44)
- `modules/mournblade-cyd2-utility.js` (helper non enregistré)
**Solution :**
Ajout du helper `subtract` dans la méthode `init()` de `MournbladeCYD2Utility` :
**Code ajouté :**
```javascript
Handlebars.registerHelper('subtract', function (a, b) {
return parseInt(a) - parseInt(b);
});
```
**Fonctionnalité :**
Le helper permet de soustraire deux nombres dans les templates Handlebars, utilisé pour détecter le dernier élément d'une liste.
---
### 6. ❌ Clés i18n manquantes pour les effets ✅
**Problème :**
Les clés de localisation pour les messages d'erreur des effets actifs étaient manquantes dans `lang/fr.json`, ce qui pouvait entraîner l'affichage de messages en anglais ou vides.
**Clés manquantes identifiées :**
- `MOURNBLADECYD2.EFFECT.createError`
- `MOURNBLADECYD2.EFFECT.deleteError`
- `MOURNBLADECYD2.EFFECT.applyError`
- `MOURNBLADECYD2.EFFECT.applyItemError`
- `MOURNBLADECYD2.EFFECT.selectActor`
- `MOURNBLADECYD2.EFFECT.toggleError`
**Solution :**
Ajout de toutes les clés manquantes dans la section `EFFECT` du fichier `lang/fr.json`.
**Traductions ajoutées :**
```json
{
"createError": "Erreur lors de la création de l'effet",
"deleteError": "Erreur lors de la suppression de l'effet",
"applyError": "Erreur lors de l'application de l'effet",
"applyItemError": "Erreur lors de l'application de l'effet sur l'item",
"selectActor": "Sélectionnez un acteur pour appliquer l'effet",
"toggleError": "Erreur lors de l'activation/désactivation de l'effet"
}
```
**Fichier modifié :** `lang/fr.json`
---
### 7. ❌ Clés i18n MNBL manquantes ✅
**Problème :**
Les clés de localisation `MNBL.details` et `MNBL.description` étaient manquantes dans `lang/fr.json`, ce qui entraînait l'affichage de la clé elle-même au lieu d'une traduction.
**Clés manquantes identifiées :**
- `MNBL.details` - Utilisée dans l'onglet "Détails" des fiches d'items
- `MNBL.description` - Utilisée dans l'onglet "Description" des fiches d'items
**Solution :**
Ajout des deux clés manquantes dans la section `MNBL` du fichier `lang/fr.json`.
**Traductions ajoutées :**
```json
{
"details": "Détails",
"description": "Description"
}
```
**Fichier modifié :** `lang/fr.json`
---
### 8. ❌ Onglet "Effets" manquant dans les fiches d'items ✅
**Problème :**
L'onglet "Effets" n'apparaissait pas dans les fiches d'items, empêchant l'accès à la gestion des effets actifs sur les items.
**Cause :**
Dans `templates/partial-item-nav.hbs`, l'onglet "Effets" n'était affiché que si l'item avait déjà des effets (`{{#if item.effects.length}}`).
**Solution :**
Suppression de la condition pour toujours afficher l'onglet "Effets", même lorsque l'item n'a pas encore d'effets actifs.
**Fichier modifié :** `templates/partial-item-nav.hbs`
**Code avant :**
```handlebars
{{#if item.effects.length}}
{{localize "MOURNBLADECYD2.EFFECT.activeEffects"}}
{{/if}}
```
**Code après :**
```handlebars
{{localize "MOURNBLADECYD2.EFFECT.activeEffects"}}
```
---
### 9. ❌ Erreur de parsing JSON (historique)
**Problème mentionné :**
```
SyntaxError: Expected ',' or '}' after property value in JSON at position 3753 (line 118 column 4)
```
**Statut :**
Cette erreur concernait probablement une ancienne version du fichier `lang/fr.json`. Le fichier actuel est valide et ne contient pas d'erreur de syntaxe.
**Vérification :**
```bash
# Le fichier passe la validation JSON
node -e "require('./lang/fr.json')" # ✅ Pas d'erreur
```
---
## Nouveautés et Améliorations (2026-06-07)
### 10. ✅ Amélioration du popup de bienvenue
**Modification :**
Simplification de la mention des droits dans le popup de bienvenue.
**Avant :**
```
Mournblade est un jeu publié par Titam France / Sombres Projets, tous les droits leur appartiennent.
```
**Après :**
```
Mournblade est un jeu Titam.
```
**Fichier modifié :** `modules/mournblade-cyd2-main.js` (ligne 141)
---
### 11. ✅ Ajout du coût en Pouvoir pour les invocations en cours
**Nouveauté :**
Ajout d'un champ numérique pour suivre le coût en Pouvoir des invocations en cours dans l'onglet Sorcellerie.
**Fichiers modifiés :**
- `modules/models/personnage.mjs` - Ajout du champ `coutPouvoirInvocations` dans le schéma sorcellerie
- `lang/fr.json` - Ajout de la clé `SORCELLERIE.coutPouvoirInvocations`
- `templates/actor-sheet.hbs` - Ajout du champ dans le template
**Clé i18n ajoutée :**
```json
{
"coutPouvoirInvocations": "Coût en Pouvoir des invocations"
}
```
**Schémas modifié :**
```javascript
sorcellerie: new fields.SchemaField({
runes: new fields.HTMLField({ initial: "" }),
creaturesinvoquees: new fields.HTMLField({ initial: "" }),
demonslies: new fields.HTMLField({ initial: "" }),
enchantements: new fields.HTMLField({ initial: "" }),
invocationsencours: new fields.HTMLField({ initial: "" }),
coutPouvoirInvocations: new fields.NumberField({ initial: 0, integer: true }) // ✅ Ajouté
})
```
---
### 12. ✅ Amélioration de l'onglet Détails des Profils
**Problème :**
Les sections de texte (Compétences exercées, Talents Initié, etc.) avaient un rendu peu esthétique.
**Solution :**
Remplacement des sections de texte simples par des `div class="sheet-box"` pour un meilleur rendu visuel.
**Fichier modifié :** `templates/item-profil-sheet.hbs`
**Avant :**
```handlebars
```
**Impact :**
- Meilleure cohérence visuelle avec le reste de l'interface
- Permet une meilleure organisation des sections
- Facilite l'ajout futur de fonctionnalités comme les liens vers le compendium
---
## Liste complète des partials Handlebars
### Partials utilisés dans le système :
| Partial | Utilisation | Pré-chargé ? |
|---------|-------------|--------------|
| `partial-item-header.hbs` | En-têtes des items | ✅ Oui |
| `partial-item-description.hbs` | Descriptions des items | ✅ Oui |
| `partial-item-nav.hbs` | Navigation des items | ✅ Oui |
| `partial-item-prix.hbs` | Prix des items | ✅ Oui |
| `partial-item-effects.hbs` | Effets des items | ✅ Oui (ajouté) |
| `partial-active-effects.hbs` | Effets actifs (actors) | ✅ Oui (ajouté) |
| `partial-automation.hbs` | Automatisation | ✅ Oui |
| `editor-notes-gm.hbs` | Notes GM | ✅ Oui |
| `hud-adversites.hbs` | HUD Adversités | ✅ Oui |
---
## Templates principaux
### Fiches d'acteurs :
- `actor-sheet.hbs` - Feuille de personnage
- `creature-sheet.hbs` - Feuille de créature
### Fiches d'items :
- `item-arme-sheet.hbs`
- `item-capaciteautomata-sheet.hbs`
- `item-competence-sheet.hbs`
- `item-don-sheet.hbs`
- `item-equipement-sheet.hbs`
- `item-historique-sheet.hbs`
- `item-monnaie-sheet.hbs`
- `item-pacte-sheet.hbs`
- `item-pouvoirselementaire-sheet.hbs`
- `item-profil-sheet.hbs`
- `item-protection-sheet.hbs`
- `item-ressource-sheet.hbs`
- `item-rune-sheet.hbs`
- `item-runeeffect-sheet.hbs`
- `item-talent-sheet.hbs`
- `item-tendance-sheet.hbs`
- `item-traitchaotique-sheet.hbs`
- `item-traitdemoniaque-sheet.hbs`
- `item-traitespece-sheet.hbs`
---
## Outils de test
Un script de test a été créé pour valider les corrections :
- **Fichier :** `test-templates.js`
- **Exécution :** `node test-templates.js`
**Fonctionnalités du test :**
1. ✅ Vérifie que tous les templates préchargés existent
2. ✅ Scanne tous les templates pour trouver les partials utilisés
3. ✅ Vérifie que tous les partials utilisés sont préchargés
4. ✅ Valide le fichier de localisation JSON
---
## Bonnes pratiques rappelées
### Pré-chargement des templates Handlebars
En Foundry VTT v12+, il est **obligatoire** de pré-charger tous les partials Handlebars utilisés via la fonction `foundry.applications.handlebars.loadTemplates()` dans le hook `init`.
**Pourquoi ?**
- Les partials ne sont pas chargés automatiquement
- Sans pré-chargement, le rendu échouera avec une erreur "partial could not be found"
- Le pré-chargement améliore les performances en cacheant les templates
**Où ?**
Dans le hook `init`, avant l'enregistrement des feuilles (sheets) :
```javascript
Hooks.once("init", async function () {
// Pré-charger les templates AVANT d'enregistrer les feuilles
await MournbladeCYD2Utility.preloadHandlebarsTemplates();
// Ensuite enregistrer les feuilles
Actors.registerSheet(...);
Items.registerSheet(...);
});
```
### Gestion des chemins des templates
Les chemins doivent être **relatifs au répertoire `systems/`** :
- ✅ Bon : `'systems/fvtt-mournblade-cyd-2-0/templates/partial-active-effects.hbs'`
- ❌ Mauvais : `'./templates/partial-active-effects.hbs'`
---
## Impact des corrections
### Avant les corrections :
- ❌ Ouverture des feuilles de personnage → Erreur
- ❌ Ouverture des feuilles de créature → Erreur
- ❌ Affichage des effets actifs → Impossible
- ❌ Utilisation des effets d'items → Problèmes potentiels
- ❌ Création d'effets actifs → Erreur TypeError
- ❌ Boucle infinie de 404 sur effect.webp
- ❌ Avertissements duration.type déprécié
- ❌ Helper subtract manquant → Erreur de rendu
- ❌ Clés i18n manquantes → Messages en anglais
- ❌ Clés MNBL.details et MNBL.description manquantes
- ❌ Onglet "Effets" manquant dans les fiches d'items
### Après les corrections :
- ✅ Toutes les feuilles s'ouvrent correctement
- ✅ Les effets actifs s'affichent correctement
- ✅ Tous les items affichent leurs effets
- ✅ Plus d'erreurs de templates manquants
- ✅ Création d'effets actifs fonctionne correctement
- ✅ Plus de boucles infinies de chargement d'icônes
- ✅ Plus d'avertissements de compatibilité
- ✅ Helper subtract disponible et fonctionnel
- ✅ Toutes les clés i18n présentes → Localisation complète
- ✅ Toutes les clés MNBL présentes
- ✅ Onglet "Effets" toujours visible dans les fiches d'items
---
## Recommandations pour le développement futur
1. **Toujours pré-charger les nouveaux partials** lorsqu'ils sont ajoutés
2. **Utiliser un script de test** pour valider les templates après modification
3. **Maintenir une liste à jour** des partials utilisés dans le projet
4. **Vérifier les erreurs de console** lors du développement
5. **Tester toutes les feuilles** après ajout de nouveaux partials
---
## Fichiers modifiés
| Fichier | Modification | Statut |
|---------|--------------|--------|
| `modules/mournblade-cyd2-utility.js` | Ajout partials + helper subtract | ✅ Corrigé |
| `modules/applications/sheets/base-actor-sheet.mjs` | Correction création effets + icône | ✅ Corrigé |
| `modules/applications/sheets/base-item-sheet.mjs` | Correction création effets + icône | ✅ Corrigé |
| `modules/mournblade-cyd2-effects.js` | Remplacement effect.webp par capacite.webp | ✅ Corrigé |
| `templates/partial-active-effects.hbs` | Remplacement effect.webp + duration.type → duration.units | ✅ Corrigé |
| `templates/partial-item-effects.hbs` | Remplacement effect.webp + duration.type → duration.units | ✅ Corrigé |
| `templates/partial-item-nav.hbs` | Affichage permanent onglet Effets + clés MNBL | ✅ Corrigé |
| `test-templates.js` | Nouveau fichier de test | ✅ Ajouté |
| `CORRECTIONS.md` | Documentation des corrections | ✅ Ajouté |
| `lang/fr.json` | Ajout des clés i18n EFFECT + MNBL manquantes | ✅ Corrigé |
## Fichiers modifiés (Nouveautés 2026-06-07)
| Fichier | Modification | Statut |
|---------|--------------|--------|
| `modules/mournblade-cyd2-main.js` | Simplification mention Titam dans popup | ✅ Corrigé |
| `modules/models/personnage.mjs` | Ajout champ coutPouvoirInvocations | ✅ Corrigé |
| `lang/fr.json` | Ajout clé SORCELLERIE.coutPouvoirInvocations | ✅ Corrigé |
| `templates/actor-sheet.hbs` | Ajout champ coût Pouvoir dans onglet Sorcellerie | ✅ Corrigé |
| `templates/item-profil-sheet.hbs` | Amélioration rendu sections avec sheet-box | ✅ Corrigé |
## État des fonctionnalités demandées
| Fonctionnalité | Statut | Remarques |
|---------------|--------|----------|
| Clés i18n manquantes | ✅ Complété | Toutes les clés EFFECT et MNBL sont présentes |
| Onglet Effets des items | ✅ Complété | Toujours visible, même sans effets |
| Popup de lancement | ✅ Complété | Lien vers règles PAO 0.9 présent, mention Titam simplifiée |
| Onglet Sorcellerie | ✅ Déjà présent | Avec sections Runes, Créatures invoquées, Démons liés, Enchantements/Automata |
| Section Invocations en cours | ✅ Complété | Avec champ coût en Pouvoir ajouté |
| Case bleue Combat | ✅ Déjà présente | Affiche Initiative, Défense, Protection sur fiche personnage |
| 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 |
| Orthographe Talent | ✅ Complété | "scéance" → "séance" |
| Totaux argent/équipement | ✅ Complété | Calcul automatique activé |
---
### 13. ✅ Correction de l'affichage des virgules après les Prédilections
**Problème :**
Une virgule apparaît après une Prédilection même s'il n'y en a qu'une seule affichée.
**Exemple avant :**
```
Compétence (Prédilection1,)
```
**Exemple après :**
```
Compétence (Prédilection1)
Compétence (Prédilection1, Prédilection2) // Virgule uniquement entre les éléments
```
**Solution :**
Utilisation du helper `subtract` pour vérifier si c'est la dernière prédilection dans la liste et ne pas afficher la virgule dans ce cas.
**Code avant :**
```handlebars
{{#each skill.system.predilections as |pred key|}}
{{#if (and pred.acquise (not pred.used))}}
{{pred.name}},
{{/if}}
{{/each}}
```
**Code après :**
```handlebars
{{#each skill.system.predilections as |pred key|}}
{{#if (and pred.acquise (not pred.used))}}
{{pred.name}}{{#unless (eq key (subtract skill.system.predilections.length 1))}}, {{/unless}}
{{/if}}
{{/each}}
```
**Fichiers modifiés :**
- `templates/actor-sheet.hbs` (ligne 278)
- `templates/creature-sheet.hbs` (ligne 270)
---
## Auteurs
Corrections réalisées par : Mistral Vibe (via Vibe CLI)
Date : 2026-06-07
---
### 14. ✅ Correction de l'affichage des valeurs d'Allégeance
**Problème :**
Les valeurs d'allégeance étaient affichées avec des noms trop longs ou non capitalisés.
**Solution :**
Ajout de nouvelles clés de localisation et mise à jour de la configuration des options d'allégeance.
**Clés i18n ajoutées dans `lang/fr.json` :**
```json
{
"betes": "Bêtes",
"elementaires": "Élémentaires"
}
```
**Configuration mise à jour dans `mournblade-cyd2-config.js` :**
```javascript
allegeanceOptions: {
tous: localizeOrFallback("MNBL.all", "Tous"),
chaos: localizeOrFallback("MNBL.chaos", "Chaos"),
loi: localizeOrFallback("MNBL.law", "Loi"),
balance: localizeOrFallback("MNBL.balance", "Balance"),
betes: localizeOrFallback("MNBL.betes", "Bêtes"),
elementaires: localizeOrFallback("MNBL.elementaires", "Élémentaires")
}
```
**Résultat :**
Les allégeances sont maintenant affichées ainsi :
- "Tous", "Chaos", "Loi", "Balance", "Bêtes", "Élémentaires"
**Fichiers modifiés :**
- `lang/fr.json` - Ajout des clés MNBL.betes et MNBL.elementaires
- `modules/mournblade-cyd2-config.js` - Mise à jour des allegeanceOptions
---
### 15. ✅ Correction orthographique "scéance" → "séance"
**Problème :**
Faute d'orthographe dans l'option d'utilisation des Talents : "Une fois par scéance" au lieu de "Une fois par séance".
**Solution :**
Correction directe dans la configuration des options.
**Modification dans `modules/mournblade-cyd2-config.js` :**
```javascript
// Avant
{ key: "sceance", label: "Une fois par scéance" },
// Après
{ key: "sceance", label: "Une fois par séance" },
```
**Fichier modifié :**
- `modules/mournblade-cyd2-config.js` (ligne 214)
---
### 16. ✅ Activation du calcul automatique des totaux d'argent et d'équipement
**Problème :**
Dans l'onglet Équipement des fiches de personnage, les lignes "Argent Total" et "Valeur Total Équipement" affichaient des valeurs vides ou non mises à jour. Ajouter un équipement avec une valeur en pièces ne changeait rien nulle part.
**Cause :**
Les méthodes `computeRichesse()` et `computeValeurEquipement()` existaient déjà dans `mournblade-cyd2-actor.js`, mais elles n'étaient pas appelées dans le contexte de la feuille.
**Solution :**
Ajout des appels à ces méthodes dans `_prepareContext()` de la feuille personnage.
**Fonctionnement :**
- **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
**Code ajouté dans `mournblade-cyd2-personnage-sheet.mjs` :**
```javascript
context.richesse = actor.computeRichesse?.() ?? { po: 0, pa: 0, sc: 0, valueSC: 0 };
context.valeurEquipement = actor.computeValeurEquipement?.() ?? { po: 0, pa: 0, sc: 0, valueSC: 0 };
```
**Fichier modifié :**
- `modules/applications/sheets/mournblade-cyd2-personnage-sheet.mjs`
**Réponse à la question :**
- Les totaux sont des **additions** (pas des soustractions)
- Ils apparaissent dans l'onglet Équipement et sont maintenant mis à jour automatiquement
---
### 17. ✅ Correction des taux de conversion monétaire selon le lore
**Problème :**
Les taux de conversion monétaire dans le système ne correspondaient pas au lore des Jeunes Royaumes.
**Ancienne conversion (incorrecte) :**
- 1 PO = 400 SC
- 1 PA = 20 SC
- Donc : 1 PO = 20 PA
**Nouvelle conversion (selon le lore) :**
- 1 SA (Sou d'Argent) = 10 PB (Pièces de Bronze)
- 1 PO (Pièce d'Or) = 10 SA = 100 PB
- Donc : 1 PA/CA = 10 SC, 1 PO = 100 SC
**Correspondance code ↔ lore :**
- SC (Sous de Cuivre dans le code) = PB (Pièces de Bronze dans le lore)
- PA/CA (Pièces d'Argent dans le code) = SA (Sous d'Argent dans le lore)
- PO (Pièces d'Or) = PO (Pièces d'Or)
**Fichiers modifiés :**
- `modules/mournblade-cyd2-utility.js` : Helper `calculateItemValueSC` et méthode `computeMonnaieDetails`
- `modules/mournblade-cyd2-actor.js` : Méthode `computeValeurEquipement`
**Source :**
```
LA MONNAIE DANS LES JEUNES ROYAUMES
Le sou d'argent (SA), est la monnaie la plus commune...
Le bronze est une piécette de très petite valeur.
On échange 10 bronzes contre un sou d'argent, et 10 sous d'argent pour un or.
```