diff --git a/module/rdd-calendrier.js b/module/rdd-calendrier.js index 3be674a6..df296080 100644 --- a/module/rdd-calendrier.js +++ b/module/rdd-calendrier.js @@ -325,11 +325,26 @@ export class RdDCalendrier extends Application { } } + findHeure(heure) { + heure = Grammar.toLowerCaseNoAccent(heure); + let parHeureOuLabel = Object.values(heuresDef).filter(it => (it.heure+1) == heure || Grammar.toLowerCaseNoAccent(it.label) == heure); + if (parHeureOuLabel.length == 1) { + return parHeureOuLabel[0]; + } + let parLabelPartiel = Object.values(heuresDef).filter(it => Grammar.toLowerCaseNoAccent(it.label).includes(heure)); + const matchLength = heure.length; + if(parLabelPartiel.length > 0) { + parLabelPartiel.sort((a,b)=> (a.label.length - matchLength)^2 - (b.label.length- matchLength)^2); + return parLabelPartiel[0]; + } + return undefined; + } + /* -------------------------------------------- */ - getAjustementAstrologique(heureNaissance, name = 'inconnu') { - let heure = Grammar.toLowerCaseNoAccent(heureNaissance); - if (heure && heuresDef[heure]) { - let hn = heuresDef[heure].heure; + getAjustementAstrologique(heureNaissance, name = undefined) { + let defHeure = this.findHeure(heureNaissance); + if (defHeure) { + let hn = defHeure.heure; let chiffreAstral = this.getCurrentNombreAstral() ?? 0; let heureCourante = this.calendrier.heureRdD; let ecartChance = (hn + chiffreAstral - heureCourante) % 12; @@ -340,9 +355,12 @@ export class RdDCalendrier extends Application { case 3: case 9: return -2; } } - else { + else if (name) { ui.notifications.warn(name + " n'a pas d'heure de naissance, ou elle est incorrecte : " + heureNaissance); } + else{ + ui.notifications.warn(heureNaissance+" ne correspond pas à une heure de naissance"); + } return 0; } diff --git a/module/rdd-commands.js b/module/rdd-commands.js index fe4c1cda..c6ff622f 100644 --- a/module/rdd-commands.js +++ b/module/rdd-commands.js @@ -79,9 +79,11 @@ export class RdDCommands {
/payer 10d permet d'envoyer un message pour payer 10 deniers` }); rddCommands.registerCommand({ - path: ["/astro"], func: (content, msg, params) => RdDUtility.afficherHeuresChanceMalchance(params[0]), - descr: `Affiche les heures de chance et de malchance selon l'heure de naissance donnée en argument. Exemples: -
/astro Lyre` + path: ["/astro"], func: (content, msg, params) => RdDUtility.afficherHeuresChanceMalchance(RdDCommands.toParamString(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: +
/astro 7 +
/astro Lyre +
/astro Lyr` }); rddCommands.registerCommand({ @@ -109,6 +111,10 @@ export class RdDCommands { this.commandsTable = {}; } + static toParamString(params) { + return params.length == 1 ? params[0] : params.reduce((a, b) => `${a} ${b}`, ''); + } + /* -------------------------------------------- */ registerCommand(command) { this._addCommand(this.commandsTable, command.path, '', command); diff --git a/module/rdd-utility.js b/module/rdd-utility.js index e275a5e1..88cd4ddd 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -830,13 +830,18 @@ export class RdDUtility { /* -------------------------------------------- */ static afficherHeuresChanceMalchance(heureNaissance) { if ( game.user.isGM) { - if (heureNaissance) { + let heure = game.system.rdd.calendrier.findHeure(heureNaissance); + if (heureNaissance && heure) { let ajustement = game.system.rdd.calendrier.getAjustementAstrologique(heureNaissance); + const current = game.system.rdd.calendrier.findHeure(game.system.rdd.calendrier.getCurrentHeure()); ChatMessage.create({ - content: `A l'heure ${game.system.rdd.calendrier.getCurrentHeure()}, le modificateur de Chance/Malchance pour l'heure de naissance ${heureNaissance} est de : ${ajustement}.`, + content: `A l'heure de ${current.label}, le modificateur de Chance/Malchance est de ${Misc.toSignedString(ajustement)} pour l'heure de naissance ${heure.label}.`, whisper: ChatMessage.getWhisperRecipients("GM") }); } + else if (heureNaissance) { + ui.notifications.warn(heureNaissance+" ne correspond pas à une heure de naissance"); + } else { ui.notifications.warn("Pas d'heure de naissance selectionnée"); }