Support /astro avec noms partiels ou numériques

=> fix /astro Château Dromant
=> support /astro chat
=> support /astro 12
This commit is contained in:
Vincent Vandemeulebrouck 2021-06-04 18:30:06 +02:00
parent 3a8a8fa5fb
commit 080a8b51b3
3 changed files with 39 additions and 10 deletions

View File

@ -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;
}

View File

@ -79,9 +79,11 @@ export class RdDCommands {
<br><strong>/payer 10d</strong> 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:
<br><strong>/astro Lyre</strong>`
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:
<br><strong>/astro 7</strong>
<br><strong>/astro Lyre</strong>
<br><strong>/astro Lyr</strong>`
});
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);

View File

@ -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 <strong>${current.label}</strong>, le modificateur de Chance/Malchance est de <strong>${Misc.toSignedString(ajustement)}</strong> pour l'heure de naissance <strong>${heure.label}</strong>.`,
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");
}