From 058c0641961f16407581540fd186932a97a079c0 Mon Sep 17 00:00:00 2001 From: Vlyan Date: Thu, 7 Jan 2021 16:53:16 +0100 Subject: [PATCH] Fix for babele and properties --- system/scripts/actors/base-sheet.js | 13 ------------- system/scripts/helpers.js | 28 +++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/system/scripts/actors/base-sheet.js b/system/scripts/actors/base-sheet.js index ef17b5b..de27a78 100644 --- a/system/scripts/actors/base-sheet.js +++ b/system/scripts/actors/base-sheet.js @@ -91,19 +91,6 @@ export class BaseSheetL5r5e extends ActorSheet { } } - // Babele and properties specific - if (item.data.data.properties && typeof Babele !== "undefined") { - item.data.data.properties = await Promise.all( - item.data.data.properties.map(async (property) => { - const gameProp = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack(property.id, "Item"); - if (gameProp) { - return { id: gameProp._id, name: gameProp.name }; - } - return property; - }) - ); - } - // Item subtype specific switch (item.data.type) { case "advancement": // no break diff --git a/system/scripts/helpers.js b/system/scripts/helpers.js index 8bb0714..450a43e 100644 --- a/system/scripts/helpers.js +++ b/system/scripts/helpers.js @@ -96,6 +96,7 @@ export class HelpersL5r5e { break; } if (item) { + await HelpersL5r5e.refreshItemProperties(item); return item; } @@ -122,15 +123,14 @@ export class HelpersL5r5e { * Make a temporary item for compendium drag n drop */ static async createItemFromCompendium(data) { - if ( - data instanceof ItemL5r5e || - !["item", "armor", "weapon", "technique", "peculiarity", "property"].includes(data.type) - ) { + if (!["item", "armor", "weapon", "technique", "peculiarity", "property"].includes(data.type)) { return data; } let item; - if (game.user.hasPermission("ACTOR_CREATE")) { + if (data instanceof ItemL5r5e) { + item = data; + } else if (game.user.hasPermission("ACTOR_CREATE")) { // Fail if a player do not have the right to create object (even if this is a temporary) item = await ItemL5r5e.create(data, { temporary: true }); @@ -140,9 +140,27 @@ export class HelpersL5r5e { // Quick object item = new ItemL5r5e(data); } + await HelpersL5r5e.refreshItemProperties(item); return item; } + /** + * Babele and properties specific + */ + static async refreshItemProperties(item) { + if (item.data.data.properties && typeof Babele !== "undefined") { + item.data.data.properties = await Promise.all( + item.data.data.properties.map(async (property) => { + const gameProp = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack(property.id, "Item"); + if (gameProp) { + return { id: gameProp._id, name: gameProp.name }; + } + return property; + }) + ); + } + } + /** * Convert (op), (ex)... to associated symbols for content/descriptions */