Ajout de la commande /gennpc pour générer des PNJ Traveller
Implémentation complète du générateur de PNJ Traveller basé sur : https://github.com/carloscasalar/traveller-npc-generator Fonctionnalités : - Génération de caractéristiques selon 4 catégories de citoyens - Distribution des compétences selon 6 niveaux d'expérience - 14 rôles différents avec priorités de caractéristiques spécifiques - Génération de noms aléatoires (masculin/féminin/neutre) - Création de fiche d'acteur mgt2e avec toutes les compétences - Interface utilisateur avec dialogue Handlebars - Commande /gennpc dans le chat Fichiers ajoutés : - scripts/data/travellerNpcGenerator.js (données et constantes) - scripts/travellerNpcGenerator.js (logique métier) - scripts/TravellerNpcDialog.js (interface utilisateur) - templates/traveller-npc-dialog.hbs (template dialogue) - templates/traveller-npc-result.hbs (template résultat) - styles/traveller-npc.css (styles spécifiques) Fichiers modifiés : - scripts/npc.js (intégration de la commande) - module.json (ajout des nouveaux scripts et styles) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
<form class="mgt2-traveller-npc-form">
|
||||
<h3><i class="fas fa-user-astronaut"></i> Générateur de PNJ Traveller</h3>
|
||||
<p class="traveller-npc-intro">
|
||||
Génère un personnage non-joueur selon les règles du générateur Traveller,
|
||||
avec caractéristiques, compétences et rôle aléatoires ou personnalisés.
|
||||
</p>
|
||||
|
||||
<fieldset>
|
||||
<legend>Identité du PNJ</legend>
|
||||
|
||||
<div class="form-group checkbox-group">
|
||||
<label>
|
||||
<input type="checkbox" name="useRandomName" {{#if useRandomName}}checked{{/if}}>
|
||||
Utiliser un nom aléatoire
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group-row name-fields {{#if useRandomName}}hidden{{/if}}">
|
||||
<div class="form-group">
|
||||
<label for="firstName">Prénom</label>
|
||||
<input id="firstName" name="firstName" type="text" value="{{firstName}}" placeholder="John">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="surname">Nom de famille</label>
|
||||
<input id="surname" name="surname" type="text" value="{{surname}}" placeholder="Smith">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="button" class="btn-small" data-action="randomize-name" title="Générer un nom aléatoire">
|
||||
<i class="fas fa-dice-d6"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group-row">
|
||||
<div class="form-group">
|
||||
<label for="gender">Genre</label>
|
||||
<select id="gender" name="gender">
|
||||
{{#each genders}}
|
||||
<option value="{{key}}" {{#if (eq ../gender key)}}selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="role">Rôle <span class="required">*</span></label>
|
||||
<select id="role" name="role" required>
|
||||
{{#each roles}}
|
||||
<option value="{{key}}" {{#if (eq ../role key)}}selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Caractéristiques et Expérience</legend>
|
||||
|
||||
<div class="form-group-row">
|
||||
<div class="form-group">
|
||||
<label for="citizenCategory">Catégorie de citoyen</label>
|
||||
<select id="citizenCategory" name="citizenCategory">
|
||||
{{#each citizenCategories}}
|
||||
<option value="{{key}}" {{#if (eq ../citizenCategory key)}}selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<div class="hint">{{description}}</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="experience">Niveau d'expérience</label>
|
||||
<select id="experience" name="experience">
|
||||
{{#each experienceLevels}}
|
||||
<option value="{{key}}" {{#if (eq ../experience key)}}selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<div class="hint">{{description}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Création de fiche d'acteur</legend>
|
||||
|
||||
<div class="form-group checkbox-group">
|
||||
<label>
|
||||
<input type="checkbox" name="createActor" {{#if createActor}}checked{{/if}}>
|
||||
Créer une fiche PNJ dans les Acteurs
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group-row">
|
||||
<div class="form-group">
|
||||
<label for="actorName">Nom de la fiche <span class="hint">(facultatif)</span></label>
|
||||
<input id="actorName" name="actorName" type="text" value="{{actorName}}" placeholder="PNJ — Pilote">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group checkbox-group">
|
||||
<label>
|
||||
<input type="checkbox" name="openCreatedActor" {{#if openCreatedActor}}checked{{/if}}>
|
||||
Ouvrir automatiquement la fiche créée
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-footer">
|
||||
<button type="button" class="btn-calculate" data-action="generate-traveller-npc">
|
||||
<i class="fas fa-dice-d6"></i> Générer le PNJ Traveller
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
Reference in New Issue
Block a user