let caster = this.effect.sourceActor let targetedItem = this.actor.items.get(this.effect.flags.wfrp4e.itemTargets[0]) let qualities = foundry.utils.deepClone(game.wfrp4e.config.itemQualities); let flaws = foundry.utils.deepClone(game.wfrp4e.config.itemFlaws); if (targetedItem.type == "weapon") { mergeObject(qualities, game.wfrp4e.config.weaponQualities) mergeObject(flaws, game.wfrp4e.config.weaponFlaws) } else if (targetedItem.type == "armour") { mergeObject(qualities, game.wfrp4e.config.armorQualities) mergeObject(flaws, game.wfrp4e.config.armorFlaws) } for(let q in qualities) { // If the weapon already has a flaw, don't put it in the dialog if (targetedItem.system.properties.qualities[q]) { delete qualities[q] } } for(let f in flaws) { // If a weapon doesn't have a flaw, don't put it in the dialog if (!targetedItem.system.properties.flaws[f]) { delete flaws[f] } } let added = await ItemDialog.create(ItemDialog.objectToArray(qualities), "unlimited", "Choose Qualities to add"); let removed = [] if (!foundry.utils.isEmpty(flaws)) { removed = await ItemDialog.create(ItemDialog.objectToArray(flaws), "unlimited", "Choose Flaws to remove"); } this.effect.updateSource({"flags.wfrp4e.propertiesChanged" : {added : added.map(i => i.id), removed : removed.map(i => i.id)}})