From bafc52a151514fa42d05bae06b3187c32a713269 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 8 Jul 2022 01:22:53 +0200 Subject: [PATCH] Fix: recherches incorrectes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * cas rare d'un personnage avec carac reve-actuel défini, mais sans label, qui rend impossible de trouver une autre caractéristique, ce qui empêche tout jet de caractéristique * '/rdd ', quand plusieurs compétences peuvent correspondre, la première devrait être choisie... mais en pratique, échec et rien ne se passe --- module/actor.js | 2 +- module/item-competence.js | 5 ++++- module/misc.js | 4 ++-- module/rdd-commands.js | 8 +++++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/module/actor.js b/module/actor.js index 26364e91..ea056810 100644 --- a/module/actor.js +++ b/module/actor.js @@ -3148,7 +3148,7 @@ export class RdDActor extends Actor { return carac.chance; } let entry = Misc.findFirstLike(name, Object.entries(carac), { mapper: it => it[1].label, description: 'caractéristique' }); - return entry.length > 0 ? carac[entry[0]] : undefined; + return entry && entry.length > 0 ? carac[entry[0]] : undefined; } /* -------------------------------------------- */ diff --git a/module/item-competence.js b/module/item-competence.js index 5c7f3156..0bfe17b1 100644 --- a/module/item-competence.js +++ b/module/item-competence.js @@ -212,8 +212,11 @@ export class RdDItemCompetence extends Item { /* -------------------------------------------- */ static findCompetence(list, idOrName, options = {}) { + if (idOrName == undefined) { + return undefined; + } options = mergeObject(options, { - filter: it => RdDItemCompetence.isCompetence(it), + preFilter: it => RdDItemCompetence.isCompetence(it), description: 'compétence', }); return list.find(it => it.id == idOrName && RdDItemCompetence.isCompetence(it)) diff --git a/module/misc.js b/module/misc.js index 59fc080c..3b6dbb40 100644 --- a/module/misc.js +++ b/module/misc.js @@ -192,7 +192,7 @@ export class Misc { if (!single) { single = subset[0]; const choices = Misc.join(subset.map(it => options.mapper(it)), '
'); - options.info(`Plusieurs choix de ${options.description}s possibles:
${choices}
Le premier sera choisi: ${mapToValue(single)}`); + options.onMessage(`Plusieurs choix de ${options.description}s possibles:
${choices}
Le premier sera choisi: ${options.mapper(single)}`); } return single; } @@ -211,7 +211,7 @@ export class Misc { } value = Grammar.toLowerCaseNoAccent(value); const subset = elements.filter(options.preFilter) - .filter(it => Grammar.toLowerCaseNoAccent(options.mapper(it)).includes(value)); + .filter(it => Grammar.toLowerCaseNoAccent(options.mapper(it))?.includes(value)); if (subset.length == 0) { options.onMessage(`Pas de ${options.description} correspondant à ${value}`); } diff --git a/module/rdd-commands.js b/module/rdd-commands.js index fdddcb05..4aecbcbf 100644 --- a/module/rdd-commands.js +++ b/module/rdd-commands.js @@ -276,9 +276,11 @@ export class RdDCommands { diff = 0; } const caracName = params[0]; - const compName = length > 1 ? Misc.join(params.slice(1, length), ' ') : undefined; - for (let actor of actors) { - await actor.rollCaracCompetence(caracName, compName, diff); + let competence = length > 1 ? actors[0].getCompetence(Misc.join(params.slice(1, length), ' ')) : undefined; + if (competence) { + for (let actor of actors) { + await actor.rollCaracCompetence(caracName, competence.name, diff); + } } return; }