diff --git a/modules/mournblade-cyd2-actor.js b/modules/mournblade-cyd2-actor.js
index ea2be2e..0f6c25d 100644
--- a/modules/mournblade-cyd2-actor.js
+++ b/modules/mournblade-cyd2-actor.js
@@ -326,7 +326,7 @@ export class MournbladeCYD2Actor extends Actor {
}
/* -------------------------------------------- */
- editItemField(itemId, itemType, itemField, dataType, value) {
+ async editItemField(itemId, itemType, itemField, dataType, value) {
let item = this.items.find(item => item.id == itemId)
if (item) {
console.log("Item ", item, itemField, dataType, value)
@@ -336,7 +336,7 @@ export class MournbladeCYD2Actor extends Actor {
value = String(value)
}
let update = { _id: item.id, [`system.${itemField}`]: value };
- this.updateEmbeddedDocuments("Item", [update])
+ await this.updateEmbeddedDocuments("Item", [update])
}
}
@@ -465,7 +465,15 @@ export class MournbladeCYD2Actor extends Actor {
/* -------------------------------------------- */
getAttribute(attrKey) {
- return this.system.attributes[attrKey]
+ return this.system.attributs[attrKey]
+ }
+
+ /* -------------------------------------------- */
+ hasTalent(nameOrPattern) {
+ if (nameOrPattern instanceof RegExp) {
+ return !!this.items.find(i => i.type === "talent" && nameOrPattern.test(i.name.toLowerCase()))
+ }
+ return !!this.items.find(i => i.type === "talent" && i.name.toLowerCase() === nameOrPattern.toLowerCase())
}
/* -------------------------------------------- */
@@ -521,7 +529,7 @@ export class MournbladeCYD2Actor extends Actor {
const passedTresAffaibli = curr >= tresAffaibli && prev < tresAffaibli
if (passedAffaibli) {
- if (this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "encaissement")) {
+ if (this.hasTalent("encaissement")) {
ChatMessage.create({ content: `${this.name} ne subit pas les 2 adversités rouge (Affaibli) grâce à Encaissement. Pensez à les ajouter à la fin de la scène !` })
} else {
ChatMessage.create({ content: `${this.name} est Affaibli et subit 2 adversités rouge !` })
@@ -529,7 +537,7 @@ export class MournbladeCYD2Actor extends Actor {
}
}
if (passedTresAffaibli) {
- if (this.items.find(item => item.type == "talent" && item.name.toLowerCase().includes("vaillant"))) {
+ if (this.hasTalent(/vaillant/)) {
ChatMessage.create({ content: `${this.name} ne subit pas les 2 adversités rouge (Très Affaibli) grâce à Vaillant. Pensez à les ajouter à la fin de la scène !` })
} else {
ChatMessage.create({ content: `${this.name} est Très Affaibli et subit 2 adversités rouge supplémentaires !` })
diff --git a/modules/mournblade-cyd2-commands.js b/modules/mournblade-cyd2-commands.js
index 0a30c67..222815c 100644
--- a/modules/mournblade-cyd2-commands.js
+++ b/modules/mournblade-cyd2-commands.js
@@ -88,8 +88,8 @@ export class MournbladeCYD2Commands {
}
if (command && command.func) {
const result = command.func(content, msg, params);
- if (result == false) {
- RdDCommands._chatAnswer(msg, command.descr);
+ if (result === false) {
+ MournbladeCYD2Commands._chatAnswer(msg, command.descr);
}
return true;
}
@@ -98,8 +98,7 @@ export class MournbladeCYD2Commands {
/* -------------------------------------------- */
async createChar(msg) {
- game.system.MournbladeCYD2.creator = new MournbladeCYD2ActorCreate();
- game.system.MournbladeCYD2.creator.start();
+ ui.notifications.warn("La création automatique de personnage n'est pas disponible dans cette version.")
}
/* -------------------------------------------- */
diff --git a/modules/mournblade-cyd2-hud.js b/modules/mournblade-cyd2-hud.js
index a7c6bf4..576534d 100644
--- a/modules/mournblade-cyd2-hud.js
+++ b/modules/mournblade-cyd2-hud.js
@@ -17,6 +17,10 @@ export class MournbladeCYD2TokenHud {
static async addExtensionHud(app, html, tokenId) {
let token = canvas.tokens.get(tokenId)
+ if (!token) {
+ console.warn("MournbladeCYD2TokenHud.addExtensionHud : token introuvable", tokenId)
+ return
+ }
let actor = token.actor
app.hasExtension = true
diff --git a/modules/mournblade-cyd2-main.js b/modules/mournblade-cyd2-main.js
index 590a6d3..2ddaf79 100644
--- a/modules/mournblade-cyd2-main.js
+++ b/modules/mournblade-cyd2-main.js
@@ -41,7 +41,7 @@ Hooks.once("init", async function () {
/* -------------------------------------------- */
game.socket.on("system.fvtt-mournblade-cyd-2-0", data => {
- MournbladeCYD2Utility.onSocketMesssage(data)
+ MournbladeCYD2Utility.onSocketMessage(data)
});
/* -------------------------------------------- */
diff --git a/modules/mournblade-cyd2-utility.js b/modules/mournblade-cyd2-utility.js
index 86e9188..3e415d8 100644
--- a/modules/mournblade-cyd2-utility.js
+++ b/modules/mournblade-cyd2-utility.js
@@ -229,15 +229,6 @@ export class MournbladeCYD2Utility {
return undefined;
}
- /* -------------------------------------------- */
- static createDirectOptionList(min, max) {
- let options = {};
- for (let i = min; i <= max; i++) {
- options[`${i}`] = `${i}`;
- }
- return options;
- }
-
/* -------------------------------------------- */
static buildListOptions(min, max) {
let options = ""
@@ -279,13 +270,13 @@ export class MournbladeCYD2Utility {
}
/* -------------------------------------------- */
- static onSocketMesssage(msg) {
+ static onSocketMessage(msg) {
if (msg.msg == "msg_apply_combativite") {
let defender = game.canvas.tokens.get(msg.data.defenderTokenId)?.actor
if (defender) {
defender.changeEtatCombativite(msg.data.value)
} else {
- console.warn("MournbladeCYD2Utility.onSocketMesssage : Impossible de trouver le token pour appliquer la combativité", msg.defenderTokenId)
+ console.warn("MournbladeCYD2Utility.onSocketMessage : Impossible de trouver le token pour appliquer la combativité", msg.defenderTokenId)
}
}
}
@@ -347,9 +338,9 @@ export class MournbladeCYD2Utility {
/* -------------------------------------------- */
static computeResult(rollData) {
- rollData.diceResult = rollData.roll.terms[0].results[0].result
+ rollData.diceResult = rollData.roll?.terms?.[0]?.results?.[0]?.result ?? 0
if (rollData.mainDice.includes("d20")) {
- let diceValue = rollData.roll.terms[0].results[0].result
+ let diceValue = rollData.roll?.terms?.[0]?.results?.[0]?.result ?? 0
if (diceValue % 2 == 1) {
rollData.isD20Impair = true
rollData.finalResult -= rollData.roll.terms[0].results[0].result // Substract value
@@ -376,7 +367,12 @@ export class MournbladeCYD2Utility {
/* -------------------------------------------- */
static applyCombativite(rollData, value) {
if (game.user.isGM) {
- let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
+ const token = game.canvas.tokens.get(rollData.defenderTokenId)
+ const defender = token?.actor
+ if (!defender) {
+ console.warn("MournbladeCYD2Utility.applyCombativite : token défenseur introuvable", rollData.defenderTokenId)
+ return
+ }
defender.changeEtatCombativite(value)
} else {
game.socket.emit("system.fvtt-mournblade-cyd-2-0", { msg: "msg_apply_combativite", data: { defenderTokenId: rollData.defenderTokenId, value } });
@@ -533,8 +529,11 @@ export class MournbladeCYD2Utility {
this.applyCombativite(rollData, rollData.nbCombativitePerdu)
}
if (rollData.coupBas && rollData.isSuccess && rollData.defenderTokenId) {
- let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
- defender.incDecAdversite("bleue", -2)
+ const token = game.canvas.tokens.get(rollData.defenderTokenId)
+ const defender = token?.actor
+ if (defender) {
+ defender.incDecAdversite("bleue", -2)
+ }
}
}
@@ -620,7 +619,7 @@ export class MournbladeCYD2Utility {
rollData.bonusFormula = rollData.addedBonus
console.log("Bonus Roll MournbladeCYD2", rollData.bonusFormula)
- if (!Number(rollData.bonusFormula)) {
+ if (isNaN(Number(rollData.bonusFormula))) {
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)