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");
}