# MgT2e — Compendium Amiral Denisov Module **FoundryVTT** pour **Mongoose Traveller 2e (MgT2e)**, regroupant des compendiums de référence et une suite d'outils d'aide au MJ (commerce, PNJ, rencontres, missions, cartes stellaires, calendrier impérial). **Compatibilité :** FoundryVTT v13 et v14 --- ## ✨ Fonctionnalités ### Commandes de chat | Commande | Rôle | |---|---| | `/commerce` | Génération d'offres de commerce (3 onglets) | | `/pnj` | Génération de PNJ rapide (4 onglets) | | `/rencontre` | Rencontres aléatoires | | `/mission` | Contrats / missions aléatoires | | `/sector` | Carte stellaire interactive (Traveller Map) | | `/subsector` | Carte d'un sous-secteur | | `/cal` | Fenêtre du calendrier impérial | ### Génération de PNJ - **PNJ rapide** : nom, carrière, caractéristiques, compétences (localisées en français), relations - **PNJ détaillé (Traveller)** : génération selon les règles du générateur officiel, création de fiche `npc` MgT2e avec spécialités de compétences natives - **Alliés & Ennemis** : relations générées via tables D66, modificateurs d'affinité/inimité, caractéristiques spéciales - **Création d'acteur** : possibilité de créer directement une fiche PNJ et de l'ouvrir ### Import par lot de PNJ - **`scripts/batchNpcCreator.js`** : importe un répertoire d'images (fichiers) comme PNJs, grille de raccourcis dans la barre latérale *Acteurs* (Commerce, PNJ, Rencontre, Mission), bouton *Traveller Map* dans la barre latérale *Scènes* ### Carte stellaire (Traveller Map) - Carte interactive en IFRAME avec recherche de mondes - Carte de chat complète : UWP (avec détail), importance, économie, culture, population, noblesse, bases, remarques, allégeance, étoiles - **Synchronisation** : le MJ peut partager la vue actuelle (hex, zoom) avec tous les joueurs via socket - **Vue joueur** en lecture seule, mise à jour en temps réel - **Synchronisation du canvas** : le MJ peut aligner la vue des joueurs sur la sienne ### Calendrier impérial - Fenêtre compacte affichant la date impériale (`Wonday, 234-1116 IC ─ 14:30`) - **Configurable par le MJ** : année, jour (1-365), heure:minute locale, planète - Boutons rapides `+1 jour` et `+1 heure` (report 24 h → jour, 365 → 1) - **Conversions calendaires** : Solomani, Vilani, Zhodani (Olympiades), Aslan, K'Kree, Hiver (formules approximatives de [Date_Conversion](https://wiki.travellerrpg.com/Date_Conversion)) - **Synchronisé pour les joueurs** en temps réel via socket - **Auto-ouverture** au démarrage (désactivable) et **sauvegarde de la position** de la fenêtre - **Notes de bord** : bouton crayon → saisie d'une note datée (date impériale + date réelle), ajoutée à un journal de session ### Compendiums 14 compendiums organisés en dossiers thématiques : | Dossier | Contenu | |---|---| | **Équipements** | armures, objets, équipement, ordinateur, contenants, armes | | **Références** | compétences, maladie/poison/blessure, espèces, talents psioniques, carrières | | **PNJ & Items** | tables PNJ, PNJ, compétences, maladies, espèces, talents, carrières | | **Journaux** | journal psioniques | --- ## 📦 Installation 1. **Copie manuelle** : placer le dossier dans `FoundryVTT/Data/modules/mgt2-compendium-amiral-denisov/` 2. **Manifest** : dans FoundryVTT, *Add-on Modules → Install Module* avec l'URL du manifest Activer ensuite le module dans la configuration du monde. --- ## 🎮 Utilisation ### Commencer une partie Tapez une commande dans le chat (ex. `/pnj`) ou utilisez les raccourcis de la barre latérale. Le message d'accueil au lancement rappelle les commandes disponibles. ### Calendrier impérial 1. `/cal` (ou auto-ouverture au démarrage) 2. Clic sur la roue dentée **⚙** (MJ) pour configurer la date 3. Clic sur le crayon **✎** (MJ) pour ajouter une note au journal de bord ### Paramètres du monde Dans *Configuration → Réglages → Module Settings* : | Réglage | Description | |---|---| | **Calendrier impérial : auto-ouverture** | Ouvrir automatiquement la fenêtre au démarrage | | **Journal de bord** | Nom du journal utilisé pour les notes de session (créé automatiquement) | --- ## 🛠 Développement ### Structure ``` module.json Manifeste du module (source de vérité pour la version) scripts/ data/ Tables de données (NPC, commerce, alliés/ennemis, générateur Traveller) tests/ Tests unitaires (Jest) *.js Logique des outils *.css → styles/ Styles templates/ Templates Handlebars packs/ Compendiums (niveau de base de données) ``` ### Prérequis - Aucun gestionnaire de paquets, aucun build — JavaScript ESM chargé directement par FoundryVTT - `package.json` créé uniquement pour les tests (`"type": "module"`) ### Tests Deux styles de tests coexistent (pas de configuration Jest, `package.json` n'existe que pour `"type": "module"` + mock FoundryVTT fait main) : - **`allyEnemyGenerator.test.js`** — mini-runner maison (`test()`/`assertEqual`), à lancer avec Node directement : ```sh node scripts/tests/allyEnemyGenerator.test.js # "All N tests passed" ``` - **`travellerNpcGenerator.test.js`** — Jest (`describe`/`it`), à lancer avec le flag ESM : ```sh NODE_OPTIONS="--experimental-vm-modules" npx jest scripts/tests/travellerNpcGenerator.test.js ``` ### Conventions - Tout le contenu (libellés, commentaires, messages de commit) est en **français** - Dialogs : `ApplicationV2` + `HandlebarsApplicationMixin` - Compatibilité v13/v14 : certains hooks doivent gérer les API jQuery (v13) et DOM (v14) - Dés à lancer : toujours `await new Roll(formula).evaluate()` --- ## 📄 Licence & Crédits - Contenu Traveller © Mongoose Publishing — sous licence pour *Mongoose Traveller 2e* - Cartes stellaire via [Traveller Map](https://www.travellermap.com) - Règles de conversion calendaires d'après [Traveller Wiki](https://wiki.travellerrpg.com/Date_Conversion) - Module initié par **JdR.Ninja**