Corrections, styles et traductions FR 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 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 Vérification des compétences: ✅ Pilot: 13 compétences (avant: 12, perdait Pilot-Small Craft) ✅ Engineer: 13 compétences (avant: 10, perdait 3 spécialisations) ✅ Tous les rôles conservent leurs spécialisations 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>
This commit is contained in:
@@ -8,191 +8,7 @@
|
|||||||
|
|
||||||
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
||||||
|
|
||||||
// Données par défaut
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
export const DEFAULT_OPTIONS = {
|
|
||||||
citizenCategory: CITIZEN_CATEGORY.AVERAGE.key,
|
|
||||||
experience: EXPERIENCE_LEVEL.REGULAR.key,
|
|
||||||
role: ROLE.PILOT.key,
|
|
||||||
gender: GENDER.UNSPECIFIED.key,
|
|
||||||
createActor: false,
|
|
||||||
actorName: '',
|
|
||||||
openCreatedActor: true
|
|
||||||
};
|
|
||||||
=======
|
|
||||||
// ============================================================================
|
|
||||||
// Traductions françaises des compétences Traveller
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Libellés français des compétences Traveller
|
|
||||||
* Basé sur les traductions du système mgt2e et les standards Traveller FR
|
|
||||||
*/
|
|
||||||
export const SKILL_LABELS_FR = {
|
|
||||||
// Pilotage
|
|
||||||
'Pilot-Spacecraft': 'Pilote – Vaisseau spatial',
|
|
||||||
'Pilot-Small Craft': 'Pilote – Aéronef léger',
|
|
||||||
'Pilot': 'Pilote',
|
|
||||||
'Flyer': 'Pilote – Aéronef atmosphérique',
|
|
||||||
|
|
||||||
// Navigation
|
|
||||||
'Astrogation': 'Astrogation',
|
|
||||||
'Navigation': 'Navigation',
|
|
||||||
|
|
||||||
// Électronique
|
|
||||||
'Electronics-Sensors': 'Électronique – Capteurs',
|
|
||||||
'Electronics-Communications': 'Électronique – Communications',
|
|
||||||
'Electronics-Computers': 'Électronique – Informatique',
|
|
||||||
'Electronics': 'Électronique',
|
|
||||||
'Computers': 'Informatique',
|
|
||||||
|
|
||||||
// Armement
|
|
||||||
'Gunner-Turrets': 'Artilleur – Tourelles',
|
|
||||||
'Gunner-Screens': 'Artilleur – Boucliers',
|
|
||||||
'Gunner': 'Artilleur',
|
|
||||||
'Gun Combat': 'Combat aux armes à feu',
|
|
||||||
'Heavy Weapons': 'Armes lourdes',
|
|
||||||
'Explosives': 'Explosifs',
|
|
||||||
|
|
||||||
// Mécanique et Ingénierie
|
|
||||||
'Mechanic': 'Mécanique',
|
|
||||||
'Engineer-MDrive': 'Ingénieur – Propulsion manœuvre',
|
|
||||||
'Engineer-Power': 'Ingénieur – Énergie',
|
|
||||||
'Engineer-JDrive': 'Ingénieur – Propulsion saut',
|
|
||||||
'Engineer-Life Support': 'Ingénieur – Support vie',
|
|
||||||
'Engineer': 'Ingénieur',
|
|
||||||
|
|
||||||
// Social et Administration
|
|
||||||
'Steward': 'Intendant',
|
|
||||||
'Carouse': 'Festoyer',
|
|
||||||
'Persuade': 'Persuasion',
|
|
||||||
'Broker': 'Courtage',
|
|
||||||
'Admin': 'Administration',
|
|
||||||
'Advocate': 'Plaidoyer',
|
|
||||||
'Diplomat': 'Diplomatie',
|
|
||||||
'Streetwise': 'Rues',
|
|
||||||
'Leadership': 'Direction',
|
|
||||||
|
|
||||||
// Sciences
|
|
||||||
'Science-Biology': 'Science – Biologie',
|
|
||||||
'Science-Chemistry': 'Science – Chimie',
|
|
||||||
'Science': 'Science',
|
|
||||||
|
|
||||||
// Santé
|
|
||||||
'Medic': 'Médecine',
|
|
||||||
|
|
||||||
// Investigation
|
|
||||||
'Deception': 'Tromperie',
|
|
||||||
'Investigate': 'Investigation',
|
|
||||||
|
|
||||||
// Combat
|
|
||||||
'Melee-Unarmed': 'Mêlée – Sans arme',
|
|
||||||
'Melee-Blade': 'Mêlée – Arme blanche',
|
|
||||||
'Melee': 'Mêlée',
|
|
||||||
'Athletics-Strength': 'Athlétisme – Force',
|
|
||||||
'Athletics-Dexterity': 'Athlétisme – Dextérité',
|
|
||||||
'Athletics': 'Athlétisme',
|
|
||||||
|
|
||||||
// Tactiques
|
|
||||||
'Tactics': 'Tactiques',
|
|
||||||
|
|
||||||
// Reconnaissance et Survie
|
|
||||||
'Recon': 'Reconnaissance',
|
|
||||||
'Survival': 'Survie',
|
|
||||||
'Stealth': 'Discrétion',
|
|
||||||
|
|
||||||
// Communications
|
|
||||||
'Communications': 'Communications',
|
|
||||||
|
|
||||||
// Conduite
|
|
||||||
'Drive-Grav': 'Conduite – Gravité',
|
|
||||||
'Drive': 'Conduite',
|
|
||||||
|
|
||||||
// Autres
|
|
||||||
'Vacc Suit': 'Combinaison spatiale',
|
|
||||||
'Language': 'Langue',
|
|
||||||
'Art-Acting': 'Art – Jeu d\'acteur',
|
|
||||||
'Art-Instrument': 'Art – Instrument',
|
|
||||||
'Art': 'Art'
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Libellés français des caractéristiques
|
|
||||||
*/
|
|
||||||
export const CHARACTERISTIC_LABELS_FR = {
|
|
||||||
'STR': 'Force',
|
|
||||||
'DEX': 'Dextérité',
|
|
||||||
'END': 'Endurance',
|
|
||||||
'INT': 'Intellect',
|
|
||||||
'EDU': 'Éducation',
|
|
||||||
'SOC': 'Statut Social'
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Libellés français des catégories de citoyen
|
|
||||||
*/
|
|
||||||
export const CITIZEN_CATEGORY_LABELS_FR = {
|
|
||||||
'belowAverage': 'En dessous de la moyenne',
|
|
||||||
'average': 'Moyenne',
|
|
||||||
'aboveAverage': 'Au-dessus de la moyenne',
|
|
||||||
'exceptional': 'Exceptionnel'
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Libellés français des niveaux d'expérience
|
|
||||||
*/
|
|
||||||
export const EXPERIENCE_LEVEL_LABELS_FR = {
|
|
||||||
'recruit': 'Recrue',
|
|
||||||
'rookie': 'Débutant',
|
|
||||||
'intermediate': 'Intermédiaire',
|
|
||||||
'regular': 'Régulier',
|
|
||||||
'veteran': 'Vétéran',
|
|
||||||
'elite': 'Élite'
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Libellés français des rôles
|
|
||||||
*/
|
|
||||||
export const ROLE_LABELS_FR = {
|
|
||||||
'pilot': 'Pilote',
|
|
||||||
'navigator': 'Navigateur',
|
|
||||||
'engineer': 'Ingénieur',
|
|
||||||
'steward': 'Intendant',
|
|
||||||
'medic': 'Médecin',
|
|
||||||
'marine': 'Marine',
|
|
||||||
'gunner': 'Artilleur',
|
|
||||||
'scout': 'Éclaireur',
|
|
||||||
'technician': 'Technicien',
|
|
||||||
'leader': 'Chef',
|
|
||||||
'diplomat': 'Diplomate',
|
|
||||||
'entertainer': 'Artiste',
|
|
||||||
'trader': 'Marchand',
|
|
||||||
'thug': 'Brute'
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Libellés français des genres
|
|
||||||
*/
|
|
||||||
export const GENDER_LABELS_FR = {
|
|
||||||
'unspecified': 'Non spécifié',
|
|
||||||
'female': 'Féminin',
|
|
||||||
'male': 'Masculin'
|
|
||||||
};
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// Données par défaut
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
export const DEFAULT_OPTIONS = {
|
|
||||||
citizenCategory: CITIZEN_CATEGORY.AVERAGE.key,
|
|
||||||
experience: EXPERIENCE_LEVEL.REGULAR.key,
|
|
||||||
role: ROLE.PILOT.key,
|
|
||||||
gender: GENDER.UNSPECIFIED.key,
|
|
||||||
createActor: false,
|
|
||||||
actorName: '',
|
|
||||||
openCreatedActor: true
|
|
||||||
};============================================================================
|
|
||||||
// Catégories de citoyens
|
// Catégories de citoyens
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
@@ -947,3 +763,118 @@ export const DEFAULT_OPTIONS = {
|
|||||||
actorName: '',
|
actorName: '',
|
||||||
openCreatedActor: true
|
openCreatedActor: true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Traductions françaises des compétences Traveller
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Libellés français des compétences Traveller
|
||||||
|
* Basé sur les traductions du système mgt2e et les standards Traveller FR
|
||||||
|
*/
|
||||||
|
export const SKILL_LABELS_FR = {
|
||||||
|
'Pilot-Spacecraft': 'Pilote – Vaisseau spatial',
|
||||||
|
'Pilot-Small Craft': 'Pilote – Aéronef léger',
|
||||||
|
'Pilot': 'Pilote',
|
||||||
|
'Flyer': 'Pilote – Aéronef atmosphérique',
|
||||||
|
'Astrogation': 'Astrogation',
|
||||||
|
'Navigation': 'Navigation',
|
||||||
|
'Electronics-Sensors': 'Électronique – Capteurs',
|
||||||
|
'Electronics-Communications': 'Électronique – Communications',
|
||||||
|
'Electronics-Computers': 'Électronique – Informatique',
|
||||||
|
'Electronics': 'Électronique',
|
||||||
|
'Computers': 'Informatique',
|
||||||
|
'Gunner-Turrets': 'Artilleur – Tourelles',
|
||||||
|
'Gunner-Screens': 'Artilleur – Boucliers',
|
||||||
|
'Gunner': 'Artilleur',
|
||||||
|
'Gun Combat': 'Combat aux armes à feu',
|
||||||
|
'Heavy Weapons': 'Armes lourdes',
|
||||||
|
'Explosives': 'Explosifs',
|
||||||
|
'Mechanic': 'Mécanique',
|
||||||
|
'Engineer-MDrive': 'Ingénieur – Propulsion manœuvre',
|
||||||
|
'Engineer-Power': 'Ingénieur – Énergie',
|
||||||
|
'Engineer-JDrive': 'Ingénieur – Propulsion saut',
|
||||||
|
'Engineer-Life Support': 'Ingénieur – Support vie',
|
||||||
|
'Engineer': 'Ingénieur',
|
||||||
|
'Steward': 'Intendant',
|
||||||
|
'Carouse': 'Festoyer',
|
||||||
|
'Persuade': 'Persuasion',
|
||||||
|
'Broker': 'Courtage',
|
||||||
|
'Admin': 'Administration',
|
||||||
|
'Advocate': 'Plaidoyer',
|
||||||
|
'Diplomat': 'Diplomatie',
|
||||||
|
'Streetwise': 'Rues',
|
||||||
|
'Leadership': 'Direction',
|
||||||
|
'Science-Biology': 'Science – Biologie',
|
||||||
|
'Science-Chemistry': 'Science – Chimie',
|
||||||
|
'Science': 'Science',
|
||||||
|
'Medic': 'Médecine',
|
||||||
|
'Deception': 'Tromperie',
|
||||||
|
'Investigate': 'Investigation',
|
||||||
|
'Melee-Unarmed': 'Mêlée – Sans arme',
|
||||||
|
'Melee-Blade': 'Mêlée – Arme blanche',
|
||||||
|
'Melee': 'Mêlée',
|
||||||
|
'Athletics-Strength': 'Athlétisme – Force',
|
||||||
|
'Athletics-Dexterity': 'Athlétisme – Dextérité',
|
||||||
|
'Athletics': 'Athlétisme',
|
||||||
|
'Tactics': 'Tactiques',
|
||||||
|
'Recon': 'Reconnaissance',
|
||||||
|
'Survival': 'Survie',
|
||||||
|
'Stealth': 'Discrétion',
|
||||||
|
'Communications': 'Communications',
|
||||||
|
'Drive-Grav': 'Conduite – Gravité',
|
||||||
|
'Drive': 'Conduite',
|
||||||
|
'Vacc Suit': 'Combinaison spatiale',
|
||||||
|
'Language': 'Langue',
|
||||||
|
'Art-Acting': 'Art – Jeu d\'acteur',
|
||||||
|
'Art-Instrument': 'Art – Instrument',
|
||||||
|
'Art': 'Art'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const CHARACTERISTIC_LABELS_FR = {
|
||||||
|
'STR': 'Force',
|
||||||
|
'DEX': 'Dextérité',
|
||||||
|
'END': 'Endurance',
|
||||||
|
'INT': 'Intellect',
|
||||||
|
'EDU': 'Éducation',
|
||||||
|
'SOC': 'Statut Social'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const CITIZEN_CATEGORY_LABELS_FR = {
|
||||||
|
'belowAverage': 'En dessous de la moyenne',
|
||||||
|
'average': 'Moyenne',
|
||||||
|
'aboveAverage': 'Au-dessus de la moyenne',
|
||||||
|
'exceptional': 'Exceptionnel'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const EXPERIENCE_LEVEL_LABELS_FR = {
|
||||||
|
'recruit': 'Recrue',
|
||||||
|
'rookie': 'Débutant',
|
||||||
|
'intermediate': 'Intermédiaire',
|
||||||
|
'regular': 'Régulier',
|
||||||
|
'veteran': 'Vétéran',
|
||||||
|
'elite': 'Élite'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const ROLE_LABELS_FR = {
|
||||||
|
'pilot': 'Pilote',
|
||||||
|
'navigator': 'Navigateur',
|
||||||
|
'engineer': 'Ingénieur',
|
||||||
|
'steward': 'Intendant',
|
||||||
|
'medic': 'Médecin',
|
||||||
|
'marine': 'Marine',
|
||||||
|
'gunner': 'Artilleur',
|
||||||
|
'scout': 'Éclaireur',
|
||||||
|
'technician': 'Technicien',
|
||||||
|
'leader': 'Chef',
|
||||||
|
'diplomat': 'Diplomate',
|
||||||
|
'entertainer': 'Artiste',
|
||||||
|
'trader': 'Marchand',
|
||||||
|
'thug': 'Brute'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const GENDER_LABELS_FR = {
|
||||||
|
'unspecified': 'Non spécifié',
|
||||||
|
'female': 'Féminin',
|
||||||
|
'male': 'Masculin'
|
||||||
|
};
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import { NpcDialog } from './NpcDialog.js';
|
import { NpcDialog } from './NpcDialog.js';
|
||||||
import { TravellerNpcDialog, openTravellerNpcDialog } from './TravellerNpcDialog.js';
|
import { openTravellerNpcDialog } from './TravellerNpcDialog.js';
|
||||||
import { syncNpcRollTables } from './npcRollTableSync.js';
|
import { syncNpcRollTables } from './npcRollTableSync.js';
|
||||||
import './mgt2eMigration.js';
|
import './mgt2eMigration.js';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user