b34857325d
Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
615 lines
21 KiB
Markdown
615 lines
21 KiB
Markdown
# 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}}
|
|
<a class="item" data-tab="effects" ...>{{localize "MOURNBLADECYD2.EFFECT.activeEffects"}}</a>
|
|
{{/if}}
|
|
```
|
|
|
|
**Code après :**
|
|
```handlebars
|
|
<a class="item" data-tab="effects" ...>{{localize "MOURNBLADECYD2.EFFECT.activeEffects"}}</a>
|
|
```
|
|
|
|
---
|
|
|
|
### 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
|
|
<h3>{{localize "MNBL.exercisedskills"}}</h3>
|
|
<div class="small-editor item-text-long-line">
|
|
{{editor competences target="system.competences" button=true owner=owner editable=editable}}
|
|
</div>
|
|
```
|
|
|
|
**Après :**
|
|
```handlebars
|
|
<div class="sheet-box">
|
|
<h3><label class="items-title-text">{{localize "MNBL.exercisedskills"}}</label></h3>
|
|
<div class="small-editor item-text-long-line">
|
|
{{editor competences target="system.competences" button=true owner=owner editable=editable}}
|
|
</div>
|
|
</div>
|
|
```
|
|
|
|
**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 |
|
|
|
|
---
|
|
|
|
### 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
|