diff --git a/module/actor.js b/module/actor.js
index a01c6909..95e599d5 100644
--- a/module/actor.js
+++ b/module/actor.js
@@ -1960,7 +1960,7 @@ export class RdDActor extends Actor {
ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`)
return;
}
- const competence = this.getCompetence(compName);
+ const competence = this.getCompetence(compName);
if (compName && !competence) {
ui.notifications.warn(`${this.name} n'a pas de compétence correspondant à ${compName}`)
return;
@@ -1970,14 +1970,14 @@ export class RdDActor extends Actor {
caracValue: Number(carac.value),
selectedCarac: carac,
competence: competence,
- finalLevel: (competence?.data.niveau??0) + diff,
+ finalLevel: (competence?.data.niveau ?? 0) + diff,
diffLibre: diff,
showDice: true,
show: { title: "Jets multiples" }
};
await RdDResolutionTable.rollData(rollData);
this.appliquerExperience(rollData);
- RdDResolutionTable.displayRollData( rollData, this )
+ RdDResolutionTable.displayRollData(rollData, this)
}
/* -------------------------------------------- */
@@ -2294,7 +2294,7 @@ export class RdDActor extends Actor {
if (destinee > 0) {
ChatMessage.create({ content: `${this.name} a fait appel à la Destinée !` });
destinee--;
- await this.updateCompteurValue( "destinee", destinee);
+ await this.updateCompteurValue("destinee", destinee);
onSuccess();
}
else {
@@ -2345,7 +2345,7 @@ export class RdDActor extends Actor {
}
if (xpCarac > 0) {
let carac = duplicate(Misc.templateData(this).carac);
- let selectedCarac = RdDActor._findCaracByName(carac, caracName);
+ let selectedCarac = RdDCarac.findCarac(carac, caracName);
if (!selectedCarac.derivee) {
selectedCarac.xp = Misc.toInt(selectedCarac.xp) + xpCarac;
await this.update({ "data.carac": carac });
@@ -2392,49 +2392,17 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
- getCaracByName(caracName) {
- switch (caracName) {
- case 'reve-actuel': case 'Rêve actuel':
- return {
- label: 'Rêve actuel',
- value: this.getReveActuel(),
- type: "number"
- };
- case 'chance-actuelle': case 'Chance actuelle':
- return {
- label: 'Chance actuelle',
- value: this.getChanceActuel(),
- type: "number"
- };
- }
- return RdDActor._findCaracByName(Misc.templateData(this).carac, caracName);
+ getCaracAndActuel() {
+ let caracs = {
+ 'reve-actuel': { label: 'Rêve actuel', value: this.getReveActuel(), type: "number" },
+ 'chance-actuelle': { label: 'Chance actuelle', value: this.getChanceActuel(), type: "number" }
+ };
+ mergeObject(caracs, Misc.templateData(this).carac);
+ return caracs
}
- /* -------------------------------------------- */
- static _findCaracByName(carac, name) {
- name = Grammar.toLowerCaseNoAccent(name);
- switch (name) {
- case 'reve-actuel': case 'rêve actuel':
- return carac.reve;
- case 'chance-actuelle': case 'chance actuelle':
- return carac.chance;
- }
- const keys = Object.entries(carac)
- .filter(it => it[0].includes(name) || Grammar.toLowerCaseNoAccent(it[0]).includes(name))
- .map(it => it[0]);
- if (keys.length>1){
- const names = keys.reduce((a, b) => `${a}
${b}`);
- ui.notifications.info(`Plusieurs caractéristiques possibles:
${names}
La première sera choisie.`);
- }
- if (keys.length>0){
- return carac[keys[0]];
- }
- // for (const [key, value] of Object.entries(carac)) {
- // if (key.includes(name) || Grammar.toLowerCaseNoAccent(value.label).includes('name')) {
- // return carac[key];
- // }
- // }
- return undefined; // Per default
+ getCaracByName(caracName) {
+ return RdDCarac.findCarac(this.getCaracAndActuel(), caracName);
}
/* -------------------------------------------- */
diff --git a/module/item-competence.js b/module/item-competence.js
index dacf1b9f..e65ad8a2 100644
--- a/module/item-competence.js
+++ b/module/item-competence.js
@@ -191,14 +191,14 @@ export class RdDItemCompetence extends Item {
return undefined;
}
let competence = competences.find(it => Grammar.toLowerCaseNoAccent(it.name) == name);
- if (!competence) {
- competence = competences[0];
- if (competences.length>1) {
- const names = competences.map(it => it.name).reduce((a, b) => `${a}
${b}`);
- ui.notifications.info(`Plusieurs compétences possibles:
${names}
La première sera choisie: ${competence.name}`);
- }
+ if (competence) {
+ return competence;
}
- return competence;
+ if (competences.length>1) {
+ const names = competences.map(it => it.name).reduce((a, b) => `${a}
${b}`);
+ ui.notifications.info(`Plusieurs compétences possibles:
${names}
La première sera choisie: ${competences[0].name}`);
+ }
+ return competences[0];
}
/* -------------------------------------------- */
diff --git a/module/rdd-carac.js b/module/rdd-carac.js
index 6dbe169c..77d41ff4 100644
--- a/module/rdd-carac.js
+++ b/module/rdd-carac.js
@@ -38,6 +38,29 @@ const tableCaracDerivee = {
export class RdDCarac {
+ /* -------------------------------------------- */
+ static findCarac(carac, name) {
+
+ const pairs = Object.entries(carac)
+ .filter(([key, value]) => key.includes(name) || Grammar.toLowerCaseNoAccent(value.label).includes(name));
+
+ let c = pairs.find(([key, value]) => key == name || Grammar.toLowerCaseNoAccent(value.label) == name);
+ if (c) {
+ return c[1];
+ }
+
+ pairs.sort((a, b) => a[0].length- b[0].length);
+ if (pairs.length > 0) {
+ c = pairs[0][1];
+ if (pairs.length > 1) {
+ const labels = pairs.map(pair => pair[1].label).reduce((a, b) => `${a}
${b}`);
+ ui.notifications.info(`Plusieurs caractéristiques possibles:
${labels}
La première sera choisie: ${c.label}.`);
+ }
+ return c;
+ }
+ return undefined;
+ }
+
static isAgiliteOuDerivee(selectedCarac) {
return selectedCarac?.label.match(/(Agilité|Dérobée)/);
}