From 09fe695777e28530542fb8097cc0bd527b508c21 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 28 May 2021 18:30:05 +0200 Subject: [PATCH 1/2] Fix: un conteneur peut contenir un id manquant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Parfois, un conteneur peut contenir l'id d'un objet qui a été supprimé (potion bue? objets groupés?) Dans ce cas, la feuille ne s'ouvrait plus correctement. Une méthode de cleanup permet d'éliminer ces ids incorrects. --- module/actor.js | 13 ++++++++++++- module/rdd-utility.js | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/module/actor.js b/module/actor.js index 105a9bef..de93a0ae 100644 --- a/module/actor.js +++ b/module/actor.js @@ -172,6 +172,7 @@ export class RdDActor extends Actor { // Initialize empty items RdDCarac.computeCarac(actorData.data); this.computeIsHautRevant(); + await this.cleanupConteneurs(); await this.computeEncombrementTotalEtMalusArmure(); this.computePrixTotalEquipement(); this.computeEtatGeneral(); @@ -179,6 +180,16 @@ export class RdDActor extends Actor { await this.checkMonnaiePresence(actorData.items); } + /* -------------------------------------------- */ + async cleanupConteneurs() { + let updates = this.listItemsData('conteneur') + .filter(c => c.data.contenu.filter(id => this.getObjet(id) == undefined).length > 0) + .map(c => { return { _id: c._id, 'data.contenu': c.data.contenu.filter(id => this.getObjet(id) != undefined) } }); + if (updates.length > 0) { + await this.updateEmbeddedDocuments("Item", updates) + } + } + /* -------------------------------------------- */ async checkMonnaiePresence(items) { // Ajout opportuniste si les pièces n'existent pas. if (!items) return; // Sanity check during import @@ -4060,7 +4071,7 @@ export class RdDActor extends Actor { notifyGestionTeteSouffleQueue(item, manualMessage = true) { ChatMessage.create({ whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), - content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré automatiquement. ${manualMessage ?? ''}` + content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré(e) automatiquement. ${manualMessage ? manualMessage : ''}` }); } } diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 75cca74b..f3c36f7c 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -357,7 +357,8 @@ export class RdDUtility { static calculEncContenu(conteneur, objets) { const itemData = Misc.data(conteneur); const contenuDatas = (itemData.data.contenu ?? []).filter(id => id != undefined) - .map(id => Misc.data(objets.find(it => (id == it._id)))); + .map(id => Misc.data(objets.find(it => (id == it._id)))) + .filter(it => it); let enc = Number(itemData.data.encombrement ?? 0) * Number(itemData.data.quantite ?? 1); for (let itemData of contenuDatas){ if (itemData.type == 'conteneur') { From 8807ba01dc9146ef1721944f6cca9d1fbee08ddb Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sat, 29 May 2021 20:20:30 +0200 Subject: [PATCH 2/2] Fix: commandes /rdd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La sélection de difficultés est de nouveau disponible dans la table de résolution Les jets 'numériques' /rdd 12 0 sont de nouveau pris en compte --- module/rdd-commands.js | 4 ++-- module/rdd-roll-resolution-table.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/module/rdd-commands.js b/module/rdd-commands.js index cf4c2322..fe4c1cda 100644 --- a/module/rdd-commands.js +++ b/module/rdd-commands.js @@ -13,7 +13,7 @@ import { RdDUtility } from "./rdd-utility.js"; import { TMRRencontres } from "./tmr-rencontres.js"; import { TMRUtility } from "./tmr-utility.js"; -const rddRollNumeric = /$(\d+)\s*([\+\-]?\d+)?\s*(s)?/; +const rddRollNumeric = /^(\d+)\s*([\+\-]?\d+)?\s*(s)?/; /* -------------------------------------------- */ export class RdDCommands { @@ -283,7 +283,7 @@ export class RdDCommands { finalLevel: diff, showDice: true, diviseurSignificative: significative ? 2 : 1, - show: { title: "Table de résolution" } + show: { title: "Table de résolution"} }; await RdDResolutionTable.rollData(rollData); RdDCommands._chatAnswer(msg, await RdDResolutionTable.buildRollDataHtml(rollData)); diff --git a/module/rdd-roll-resolution-table.js b/module/rdd-roll-resolution-table.js index 8521e1b1..271e6a05 100644 --- a/module/rdd-roll-resolution-table.js +++ b/module/rdd-roll-resolution-table.js @@ -29,6 +29,7 @@ export class RdDRollResolutionTable extends Dialog { finalLevel: 0, diffConditions: 0, diffLibre: 0, + use: { conditions:true, libre:true } } mergeObject(rollData, defRollData, { overwrite: false }); for (let i = 1; i < 21; i++) {