Files
uberwald ef7fe6e2bd Corrections et améliorations pour /gennpc - v1.3.0
Corrections critiques implémentées:
- Remplacement du cache global mutable par ModuleCache
- Binding des méthodes dans TravellerNpcDialog
- Suppression des ré-exports circulaires
- Validation complète des options
- Correction: Duplicate export de TravellerNpcDialog et openTravellerNpcDialog
- Correction: distributeSkillLevels ne supprime plus les spécialisations
  (ex: Pilot-Spacecraft ET Pilot-Small Craft sont maintenant conservées)

Améliorations majeures:
- Optimisation de l'algorithme de distribution des compétences (single-pass)
- Optimisation de la génération des caractéristiques (priorité-based)
- Gestion d'erreur améliorée avec TravellerNpcError
- Création de TravellerNpcUtils.js avec classes utilitaires

Améliorations mineures:
- CSS aligné avec les styles des dialogues /commerce et /pnj
- Thème clair cohérent (#f5f0e8 background, #222 text)
- Fieldset, onglets, formulaires alignés sur mgt2-npc-form
- Boutons et résultats stylisés comme mgt2-npc-result
- Suppression des styles inline redondants dans _applyThemeStyles
- Design réactif, accessibilité, impression
- Tests unitaires complets pour toutes les fonctions
- Version bumpée à 1.3.0

Traductions en français:
- Ajout de SKILL_LABELS_FR pour toutes les compétences Traveller
- Ajout de CHARACTERISTIC_LABELS_FR pour STR, DEX, END, INT, EDU, SOC
- Ajout de CITIZEN_CATEGORY_LABELS_FR, EXPERIENCE_LEVEL_LABELS_FR
- Ajout de ROLE_LABELS_FR, GENDER_LABELS_FR
- Mise à jour de generateTravellerNpc pour utiliser les libellés français
- Mise à jour du template traveller-npc-result.hbs pour afficher labelFr
- Mise à jour du template traveller-npc-dialog.hbs avec libellés français
- Mise à jour de TravellerNpcDialog._prepareContext pour utiliser les libellés FR

Fichiers ajoutés:
- scripts/utils/travellerNpcUtils.js
- scripts/tests/travellerNpcGenerator.test.js

Fichiers modifiés:
- scripts/data/travellerNpcGenerator.js (+ traductions FR)
- scripts/travellerNpcGenerator.js (+ fonctions getSkillLabelFr, getCharacteristicLabelFr)
- scripts/TravellerNpcDialog.js (libellés FR dans _prepareContext)
- scripts/npc.js
- styles/traveller-npc.css
- templates/traveller-npc-dialog.hbs
- templates/traveller-npc-result.hbs
- module.json

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-05-27 23:56:21 +02:00

66 lines
2.1 KiB
Handlebars

<div class="mgt2-npc-result traveller-npc-result">
<div class="npc-header">
<h3><i class="fas fa-user-astronaut"></i> PNJ Traveller généré</h3>
<div class="npc-name">{{name.fullName}}</div>
</div>
{{#if createdActor}}
<div class="npc-notice success">
<i class="fas fa-check-circle"></i>
Fiche d'acteur créée : {{createdActor.name}}
</div>
{{/if}}
<div class="npc-details-grid">
<div class="npc-detail">
<div class="npc-detail-label">Rôle</div>
<div class="npc-detail-value">{{display.roleLabel}}</div>
</div>
<div class="npc-detail">
<div class="npc-detail-label">Catégorie</div>
<div class="npc-detail-value">{{display.categoryLabel}}</div>
</div>
<div class="npc-detail">
<div class="npc-detail-label">Expérience</div>
<div class="npc-detail-value">{{display.experienceLabel}}</div>
</div>
<div class="npc-detail">
<div class="npc-detail-label">Genre</div>
<div class="npc-detail-value">{{display.genderLabel}}</div>
</div>
</div>
<div class="npc-section">
<h4><i class="fas fa-chart-bar"></i> Caractéristiques (UPP: {{upp}})</h4>
<div class="npc-characteristics">
{{#each UPP_ORDER}}
<div class="npc-characteristic">
<div class="npc-char-key">{{lookup ../display.characteristicLabels this}}</div>
<div class="npc-char-value">{{lookup ../characteristics this}}</div>
<div class="npc-char-dm">{{formatDm (lookup ../characteristics this)}}</div>
</div>
{{/each}}
</div>
</div>
{{#if skills}}
<div class="npc-section">
<h4><i class="fas fa-graduation-cap"></i> Compétences</h4>
<div class="npc-skills">
{{#each skills}}
{{#if (gt level 0)}}
<div class="npc-skill {{skillLevelClass level}}" title="{{labelFr}}">
<span class="npc-skill-name">{{labelFr}} {{level}}</span>
<span class="npc-skill-level">{{skillLevelSymbol level}}</span>
</div>
{{/if}}
{{/each}}
</div>
</div>
{{/if}}
<div class="npc-footer">
<small>Généré par le module {{MODULE_ID}}</small>
</div>
</div>