Fix: un conteneur peut contenir un id manquant
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.
This commit is contained in:
parent
1f77c6227b
commit
09fe695777
@ -172,6 +172,7 @@ export class RdDActor extends Actor {
|
|||||||
// Initialize empty items
|
// Initialize empty items
|
||||||
RdDCarac.computeCarac(actorData.data);
|
RdDCarac.computeCarac(actorData.data);
|
||||||
this.computeIsHautRevant();
|
this.computeIsHautRevant();
|
||||||
|
await this.cleanupConteneurs();
|
||||||
await this.computeEncombrementTotalEtMalusArmure();
|
await this.computeEncombrementTotalEtMalusArmure();
|
||||||
this.computePrixTotalEquipement();
|
this.computePrixTotalEquipement();
|
||||||
this.computeEtatGeneral();
|
this.computeEtatGeneral();
|
||||||
@ -179,6 +180,16 @@ export class RdDActor extends Actor {
|
|||||||
await this.checkMonnaiePresence(actorData.items);
|
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.
|
async checkMonnaiePresence(items) { // Ajout opportuniste si les pièces n'existent pas.
|
||||||
if (!items) return; // Sanity check during import
|
if (!items) return; // Sanity check during import
|
||||||
@ -4060,7 +4071,7 @@ export class RdDActor extends Actor {
|
|||||||
notifyGestionTeteSouffleQueue(item, manualMessage = true) {
|
notifyGestionTeteSouffleQueue(item, manualMessage = true) {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
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 : ''}`
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -357,7 +357,8 @@ export class RdDUtility {
|
|||||||
static calculEncContenu(conteneur, objets) {
|
static calculEncContenu(conteneur, objets) {
|
||||||
const itemData = Misc.data(conteneur);
|
const itemData = Misc.data(conteneur);
|
||||||
const contenuDatas = (itemData.data.contenu ?? []).filter(id => id != undefined)
|
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);
|
let enc = Number(itemData.data.encombrement ?? 0) * Number(itemData.data.quantite ?? 1);
|
||||||
for (let itemData of contenuDatas){
|
for (let itemData of contenuDatas){
|
||||||
if (itemData.type == 'conteneur') {
|
if (itemData.type == 'conteneur') {
|
||||||
|
Loading…
Reference in New Issue
Block a user