|
|
|
@ -21,73 +21,84 @@ const rddRollNumeric = /^(\d+)\s*([\+\-]?\d+)?\s*(s)?/;
|
|
|
|
|
export class RdDCommands {
|
|
|
|
|
|
|
|
|
|
static init() {
|
|
|
|
|
if (!game.system.rdd.commands) {
|
|
|
|
|
const rddCommands = new RdDCommands();
|
|
|
|
|
rddCommands.registerCommand({ path: ["/aide"], func: (content, msg, params) => rddCommands.help(msg), descr: "Affiche l'aide pour toutes les commandes" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/help"], func: (content, msg, params) => rddCommands.help(msg), descr: "Affiche l'aide pour toutes les commandes" });
|
|
|
|
|
game.system.rdd.commands = new RdDCommands();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({ path: ["/liste", "comp"], func: (content, msg, params) => RdDRollTables.getCompetence('liste'), descr: "Affiche la liste des compétences" });
|
|
|
|
|
constructor() {
|
|
|
|
|
this.commandsTable = undefined;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "queue"], func: (content, msg, params) => RdDRollTables.getQueue('liste'), descr: "Affiche la table des Queues de Dragon" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "ombre"], func: (content, msg, params) => RdDRollTables.getOmbre('liste'), descr: "Affiche la table des Ombres de Thanatos" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "tetehr"], func: (content, msg, params) => RdDRollTables.getTeteHR('liste'), descr: "Affiche la table des Têtes de Dragon pour Hauts Revants" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "tete"], func: (content, msg, params) => RdDRollTables.getTete('liste'), descr: "Affiche la table des Tête de Dragon pour tous" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "souffle"], func: (content, msg, params) => RdDRollTables.getSouffle('liste'), descr: "Affiche la table des Souffles de Dragon" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "tarot"], func: (content, msg, params) => RdDRollTables.getTarot('liste'), descr: "Affiche la table les cartes du Tarot Draconique" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "ideefixe"], func: (content, msg, params) => RdDRollTables.getIdeeFixe('liste'), descr: "Affiche la table des Idées fixes" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/table", "desir"], func: (content, msg, params) => RdDRollTables.getDesirLancinant('liste'), descr: "Affiche la table des Désirs Lancinants" });
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/table", "rencontre"], func: (content, msg, params) => rddCommands.tableRencontres(msg, params),
|
|
|
|
|
_registerCommands() {
|
|
|
|
|
this.commandsTable = {}
|
|
|
|
|
this.registerCommand({ path: ["/aide"], func: (content, msg, params) => this.help(msg), descr: "Affiche l'aide pour toutes les commandes" });
|
|
|
|
|
this.registerCommand({ path: ["/help"], func: (content, msg, params) => this.help(msg), descr: "Affiche l'aide pour toutes les commandes" });
|
|
|
|
|
|
|
|
|
|
this.registerCommand({ path: ["/liste", "comp"], func: (content, msg, params) => RdDRollTables.getCompetence('liste'), descr: "Affiche la liste des compétences" });
|
|
|
|
|
|
|
|
|
|
this.registerCommand({ path: ["/table", "queue"], func: (content, msg, params) => RdDRollTables.getQueue('liste'), descr: "Affiche la table des Queues de Dragon" });
|
|
|
|
|
this.registerCommand({ path: ["/table", "ombre"], func: (content, msg, params) => RdDRollTables.getOmbre('liste'), descr: "Affiche la table des Ombres de Thanatos" });
|
|
|
|
|
this.registerCommand({ path: ["/table", "tetehr"], func: (content, msg, params) => RdDRollTables.getTeteHR('liste'), descr: "Affiche la table des Têtes de Dragon pour Hauts Revants" });
|
|
|
|
|
this.registerCommand({ path: ["/table", "tete"], func: (content, msg, params) => RdDRollTables.getTete('liste'), descr: "Affiche la table des Tête de Dragon pour tous" });
|
|
|
|
|
this.registerCommand({ path: ["/table", "souffle"], func: (content, msg, params) => RdDRollTables.getSouffle('liste'), descr: "Affiche la table des Souffles de Dragon" });
|
|
|
|
|
this.registerCommand({ path: ["/table", "tarot"], func: (content, msg, params) => RdDRollTables.getTarot('liste'), descr: "Affiche la table les cartes du Tarot Draconique" });
|
|
|
|
|
this.registerCommand({ path: ["/table", "ideefixe"], func: (content, msg, params) => RdDRollTables.getIdeeFixe('liste'), descr: "Affiche la table des Idées fixes" });
|
|
|
|
|
this.registerCommand({ path: ["/table", "desir"], func: (content, msg, params) => RdDRollTables.getDesirLancinant('liste'), descr: "Affiche la table des Désirs Lancinants" });
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/table", "rencontre"], func: (content, msg, params) => this.tableRencontres(msg, params),
|
|
|
|
|
descr: `Affiche la table des Rencontres
|
|
|
|
|
<br><strong>/table rencontre deso</strong> affiche la table des rencontres en Désolation
|
|
|
|
|
<br><strong>/table rencontre mauvaise</strong> affiche la table des mauvaises rencontres` });
|
|
|
|
|
<br><strong>/table rencontre mauvaise</strong> affiche la table des mauvaises rencontres`
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "comp"], func: (content, msg, params) => RdDRollTables.getCompetence('chat'), descr: "Tire une compétence au hasard" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "queue"], func: (content, msg, params) => RdDRollTables.getQueue('chat'), descr: "Tire une Queue de Dragon" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "ombre"], func: (content, msg, params) => RdDRollTables.getOmbre('chat'), descr: "Tire une Ombre de Thanatos" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "tetehr"], func: (content, msg, params) => RdDRollTables.getTeteHR('chat'), descr: "Tire une Tête de Dragon pour Hauts Revants" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "tete"], func: (content, msg, params) => RdDRollTables.getTete('chat'), descr: "Tire une Tête de Dragon" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "souffle"], func: (content, msg, params) => RdDRollTables.getSouffle('chat'), descr: "Tire un Souffle de Dragon" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "tarot"], func: (content, msg, params) => RdDRollTables.getTarot('chat'), descr: "Tire une carte du Tarot Draconique" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "ideefixe"], func: (content, msg, params) => RdDRollTables.getIdeeFixe('chat'), descr: "Tire une Idée fixe" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "desir"], func: (content, msg, params) => RdDRollTables.getDesirLancinant('chat'), descr: "Tire un Désir Lancinant" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/tirer", "rencontre"], func: (content, msg, params) => rddCommands.getRencontreTMR(params), descr: `Détermine une rencontre dans les TMR (synonyme de "/tmrr")` });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "comp"], func: (content, msg, params) => RdDRollTables.getCompetence('chat'), descr: "Tire une compétence au hasard" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "queue"], func: (content, msg, params) => RdDRollTables.getQueue('chat'), descr: "Tire une Queue de Dragon" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "ombre"], func: (content, msg, params) => RdDRollTables.getOmbre('chat'), descr: "Tire une Ombre de Thanatos" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "tetehr"], func: (content, msg, params) => RdDRollTables.getTeteHR('chat'), descr: "Tire une Tête de Dragon pour Hauts Revants" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "tete"], func: (content, msg, params) => RdDRollTables.getTete('chat'), descr: "Tire une Tête de Dragon" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "souffle"], func: (content, msg, params) => RdDRollTables.getSouffle('chat'), descr: "Tire un Souffle de Dragon" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "tarot"], func: (content, msg, params) => RdDRollTables.getTarot('chat'), descr: "Tire une carte du Tarot Draconique" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "ideefixe"], func: (content, msg, params) => RdDRollTables.getIdeeFixe('chat'), descr: "Tire une Idée fixe" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "desir"], func: (content, msg, params) => RdDRollTables.getDesirLancinant('chat'), descr: "Tire un Désir Lancinant" });
|
|
|
|
|
this.registerCommand({ path: ["/tirer", "rencontre"], func: (content, msg, params) => this.getRencontreTMR(params), descr: `Détermine une rencontre dans les TMR (synonyme de "/tmrr")` });
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({ path: ["/meteo"], func: (content, msg, params) => rddCommands.getMeteo(msg, params), descr: "Propose une météo marine" });
|
|
|
|
|
rddCommands.registerCommand({ path: ["/nom"], func: (content, msg, params) => RdDNameGen.getName(msg, params), descr: "Génère un nom aléatoire" });
|
|
|
|
|
this.registerCommand({ path: ["/meteo"], func: (content, msg, params) => this.getMeteo(msg, params), descr: "Propose une météo marine" });
|
|
|
|
|
this.registerCommand({ path: ["/nom"], func: (content, msg, params) => RdDNameGen.getName(msg, params), descr: "Génère un nom aléatoire" });
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/tmr"], func: (content, msg, params) => rddCommands.findTMR(msg, params),
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/tmr"], func: (content, msg, params) => this.findTMR(msg, params),
|
|
|
|
|
descr: `Cherche où se trouve une case des Terres médianes
|
|
|
|
|
<br><strong>/tmr sord</strong> indique que la cité Sordide est en D13
|
|
|
|
|
<br><strong>/tmr foret</strong> donne la liste des TMR dont le nom contient "foret" (donc, toutes les forêts)` });
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/tmra"], func: (content, msg, params) => rddCommands.getTMRAleatoire(msg, params),
|
|
|
|
|
<br><strong>/tmr foret</strong> donne la liste des TMR dont le nom contient "foret" (donc, toutes les forêts)`
|
|
|
|
|
});
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/tmra"], func: (content, msg, params) => this.getTMRAleatoire(msg, params),
|
|
|
|
|
descr: `Tire une case aléatoire des Terres médianes
|
|
|
|
|
<br><strong>/tmra forêt</strong> détermine une 'forêt' aléatoire
|
|
|
|
|
<br><strong>/tmra</strong> détermine une case aléatoire dans toutes les TMR` });
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/tmrr"], func: (content, msg, params) => rddCommands.getRencontreTMR(params),
|
|
|
|
|
<br><strong>/tmra</strong> détermine une case aléatoire dans toutes les TMR`
|
|
|
|
|
});
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/tmrr"], func: (content, msg, params) => this.getRencontreTMR(params),
|
|
|
|
|
descr: `Détermine une rencontre dans les TMR
|
|
|
|
|
<br><strong>/tmrr forêt</strong> détermine une rencontre aléatoire en 'forêt'
|
|
|
|
|
<br><strong>/tmrr mauvaise</strong> détermine une mauvaise rencontre aléatoire
|
|
|
|
|
<br><strong>/tmrr for 47</strong> détermine la rencontre en 'forêt' pour un jet de dé de 47` });
|
|
|
|
|
<br><strong>/tmrr for 47</strong> détermine la rencontre en 'forêt' pour un jet de dé de 47`
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/xp", "comp"], func: (content, msg, params) => rddCommands.getCoutXpComp(msg, params),
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/xp", "comp"], func: (content, msg, params) => this.getCoutXpComp(msg, params),
|
|
|
|
|
descr: `Détermine le coût d'expérience pour augmenter une compétence. Exemples:
|
|
|
|
|
<br>/xp comp -6 1: pour passer de -6 à +1
|
|
|
|
|
<br>/xp comp +4: pour atteindre le niveau 4 (depuis +3)`
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/xp", "carac"], func: (content, msg, params) => rddCommands.getCoutXpCarac(msg, params),
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/xp", "carac"], func: (content, msg, params) => this.getCoutXpCarac(msg, params),
|
|
|
|
|
descr: `Détermine le coût d'expérience pour augmenter une caractéristique. Exemples:
|
|
|
|
|
<br>/xp carac 15: coût pour atteindre 15 (depuis 14)`
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/rdd"], func: (content, msg, params) => rddCommands.rollRdd(msg, params),
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/rdd"], func: (content, msg, params) => this.rollRdd(msg, params),
|
|
|
|
|
descr: `Effectue un jet de dés dans la table de résolution. Exemples:
|
|
|
|
|
<br><strong>/rdd</strong> ouvre la table de résolution
|
|
|
|
|
<br><strong>/rdd 10 3</strong> effectue un jet 10 à +3
|
|
|
|
@ -97,15 +108,15 @@ export class RdDCommands {
|
|
|
|
|
<br><strong>/rdd vol déser +2</strong> effectue un jet de Volonté/Survie en désert à +2 pour les tokens sélectionnés
|
|
|
|
|
`
|
|
|
|
|
});
|
|
|
|
|
rddCommands.registerCommand({ path: ["/ddr"], func: (content, msg, params) => rddCommands.rollDeDraconique(msg), descr: "Lance un Dé Draconique" });
|
|
|
|
|
this.registerCommand({ path: ["/ddr"], func: (content, msg, params) => this.rollDeDraconique(msg), descr: "Lance un Dé Draconique" });
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/payer"], func: (content, msg, params) => RdDUtility.afficherDemandePayer(params[0], params[1]),
|
|
|
|
|
descr: `Demande aux joueurs de payer un montant. Exemples:
|
|
|
|
|
<br><strong>/payer 5s 10d</strong> permet d'envoyer un message pour payer 5 sols et 10 deniers
|
|
|
|
|
<br><strong>/payer 10d</strong> permet d'envoyer un message pour payer 10 deniers`
|
|
|
|
|
});
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/astro"], func: (content, msg, params) => RdDUtility.afficherHeuresChanceMalchance(Misc.join(params, ' ')),
|
|
|
|
|
descr: `Affiche les heures de chance et de malchance selon l'heure de naissance donnée en argument. Exemples pour l'heure de la Lyre:
|
|
|
|
|
<br><strong>/astro 7</strong>
|
|
|
|
@ -113,18 +124,18 @@ export class RdDCommands {
|
|
|
|
|
<br><strong>/astro Lyr</strong>`
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/signe", "+"], func: (content, msg, params) => rddCommands.creerSignesDraconiques(),
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/signe", "+"], func: (content, msg, params) => this.creerSignesDraconiques(),
|
|
|
|
|
descr: "Crée un signe draconique et l'ajoute aux haut-rêvants choisis."
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/signe", "-"], func: (content, msg, params) => rddCommands.supprimerSignesDraconiquesEphemeres(),
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/signe", "-"], func: (content, msg, params) => this.supprimerSignesDraconiquesEphemeres(),
|
|
|
|
|
descr: "Supprime les signes draconiques éphémères"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
path: ["/stress"], func: (content, msg, params) => rddCommands.distribuerStress(params),
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/stress"], func: (content, msg, params) => this.distribuerStress(params),
|
|
|
|
|
descr: `Distribue du stress aux personnages. Exemples:
|
|
|
|
|
<br><strong>/stress</strong> : Ouvre une fenêtre pour donner du stress ou de l'expérience à un ensemble de personnages
|
|
|
|
|
<br><strong>/stress 6</strong> : Distribue 6 points des Stress à tout les personnages joueurs, sans raison renseignée
|
|
|
|
@ -132,21 +143,22 @@ export class RdDCommands {
|
|
|
|
|
<br><strong>/stress 6 Glou Paulo</strong> : Distribue 6 points de Stress au personnage Paulon ou au personnage joueur Paulo, à cause d'un Glou`
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rddCommands.registerCommand({
|
|
|
|
|
this.registerCommand({
|
|
|
|
|
path: ["/chrono"], func: (content, msg, params) => DialogChronologie.create(),
|
|
|
|
|
descr: `Enregistre une entrée de chronologie dans un article de journal`
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
game.system.rdd.commands = rddCommands;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
constructor() {
|
|
|
|
|
this.commandsTable = {};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
registerCommand(command) {
|
|
|
|
|
this._addCommand(this.commandsTable, command.path, '', command);
|
|
|
|
|
this._addCommand(this.getCommands(), command.path, '', command);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getCommands() {
|
|
|
|
|
if (!this.commandsTable){
|
|
|
|
|
this._registerCommands();
|
|
|
|
|
}
|
|
|
|
|
return this.commandsTable;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
@ -194,7 +206,7 @@ export class RdDCommands {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
process(command, params, content, msg) {
|
|
|
|
|
return this._processCommand(this.commandsTable, command, params, content, msg);
|
|
|
|
|
return this._processCommand(this.getCommands(), command, params, content, msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async _processCommand(commandsTable, name, params, content = '', msg = {}, path = "") {
|
|
|
|
@ -225,7 +237,7 @@ export class RdDCommands {
|
|
|
|
|
}
|
|
|
|
|
async help(msg, table) {
|
|
|
|
|
let commands = []
|
|
|
|
|
this._buildSubTableHelp(commands, table || this.commandsTable);
|
|
|
|
|
this._buildSubTableHelp(commands, table ?? this.getCommands());
|
|
|
|
|
|
|
|
|
|
let html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/settings/dialog-aide-commands.html", { commands: commands });
|
|
|
|
|
let d = new Dialog(
|
|
|
|
@ -265,7 +277,7 @@ export class RdDCommands {
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
async getRencontreTMR(params) {
|
|
|
|
|
if (params.length == 1 || params.length == 2) {
|
|
|
|
|
return game.system.rencontresTMR.rollRencontre(params[0], params[1])
|
|
|
|
|
return game.system.rdd.rencontresTMR.rollRencontre(params[0], params[1])
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
@ -358,7 +370,7 @@ export class RdDCommands {
|
|
|
|
|
if (solvedTerrain == undefined) {
|
|
|
|
|
return RdDCommands._chatAnswer(msg, 'Aucune TMR correspondant à ' + search);
|
|
|
|
|
}
|
|
|
|
|
return game.system.rencontresTMR.chatTable(solvedTerrain);
|
|
|
|
|
return game.system.rdd.rencontresTMR.chatTable(solvedTerrain);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|