diff --git a/system/scripts/items/advancement-sheet.js b/system/scripts/items/advancement-sheet.js index ddbb163..3cbca7c 100644 --- a/system/scripts/items/advancement-sheet.js +++ b/system/scripts/items/advancement-sheet.js @@ -95,46 +95,55 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e { * @private */ async _updateChoice(oldChoice, newChoice) { - let skillCatId = null; - const actor = duplicate(this.actor.data.data); let xp_used = this.object.data.data.xp_used; let name = this.object.data.name; let img = this.object.data.img; - // Old choices - if (oldChoice.ring) { - actor.rings[oldChoice.ring] = Math.max(1, actor.rings[oldChoice.ring] - 1); - } - if (oldChoice.skill) { - skillCatId = CONFIG.l5r5e.skills.get(oldChoice.skill); - actor.skills[skillCatId][oldChoice.skill] = Math.max(0, actor.skills[skillCatId][oldChoice.skill] - 1); - } - - // new choices + // Modify image to reflect choice if (newChoice.ring) { - actor.rings[newChoice.ring] = actor.rings[newChoice.ring] + 1; - xp_used = actor.rings[newChoice.ring] * CONFIG.l5r5e.xp.ringCostMultiplier; - name = - game.i18n.localize(`l5r5e.rings.${newChoice.ring}`) + - ` +1 (${actor.rings[newChoice.ring] - 1} -> ${actor.rings[newChoice.ring]})`; img = `systems/l5r5e/assets/icons/rings/${newChoice.ring}.svg`; - } - if (newChoice.skill) { - skillCatId = CONFIG.l5r5e.skills.get(newChoice.skill); - actor.skills[skillCatId][newChoice.skill] = actor.skills[skillCatId][newChoice.skill] + 1; - xp_used = actor.skills[skillCatId][newChoice.skill] * CONFIG.l5r5e.xp.skillCostMultiplier; - name = - game.i18n.localize(`l5r5e.skills.${skillCatId}.${newChoice.skill}`) + - ` +1 (${actor.skills[skillCatId][newChoice.skill] - 1} -> ${ - actor.skills[skillCatId][newChoice.skill] - })`; + } else if (newChoice.skill) { img = `systems/l5r5e/assets/dices/default/skill_blank.svg`; } - // Update Actor - await this.actor.update({ - data: diffObject(this.actor.data.data, actor), - }); + // Object embed in actor ? + if (this.actor) { + const actor = duplicate(this.actor.data.data); + let skillCatId = null; + + // Old choices + if (oldChoice.ring) { + actor.rings[oldChoice.ring] = Math.max(1, actor.rings[oldChoice.ring] - 1); + } + if (oldChoice.skill) { + skillCatId = CONFIG.l5r5e.skills.get(oldChoice.skill); + actor.skills[skillCatId][oldChoice.skill] = Math.max(0, actor.skills[skillCatId][oldChoice.skill] - 1); + } + + // new choices + if (newChoice.ring) { + actor.rings[newChoice.ring] = actor.rings[newChoice.ring] + 1; + xp_used = actor.rings[newChoice.ring] * CONFIG.l5r5e.xp.ringCostMultiplier; + name = + game.i18n.localize(`l5r5e.rings.${newChoice.ring}`) + + ` +1 (${actor.rings[newChoice.ring] - 1} -> ${actor.rings[newChoice.ring]})`; + } + if (newChoice.skill) { + skillCatId = CONFIG.l5r5e.skills.get(newChoice.skill); + actor.skills[skillCatId][newChoice.skill] = actor.skills[skillCatId][newChoice.skill] + 1; + xp_used = actor.skills[skillCatId][newChoice.skill] * CONFIG.l5r5e.xp.skillCostMultiplier; + name = + game.i18n.localize(`l5r5e.skills.${skillCatId}.${newChoice.skill}`) + + ` +1 (${actor.skills[skillCatId][newChoice.skill] - 1} -> ${ + actor.skills[skillCatId][newChoice.skill] + })`; + } + + // Update Actor + await this.actor.update({ + data: diffObject(this.actor.data.data, actor), + }); + } // Update object await this.object.update({