let choice1 = [ { type : "armour", name : "Mail Chausses" }, { type : "armour", name : "Mail Coat" }, { type : "armour", name : "Mail Coif" }, ] let choice2 = [ { type : "armour", name : "Mail Chausses" }, { type : "armour", name : "Mail Coat" }, { type : "armour", name : "Mail Coif" }, { type : "armour", name : "Leather Leggings" }, { type : "armour", name : "Leather Skullcap" }, { type : "armour", name : "Leather Jack" }, ] let choice3 = [ { type : "armour", name : "Plate Breastplate" }, { type : "armour", name : "Plate Bracers" }, { type : "armour", name : "Plate Helm" }, { type : "armour", name : "Plate Leggings" }, ] let choice = await Dialog.wait({ title : "Choice", content : `

Select your choice

  1. Mail
  2. Mail & Leather
  3. Plate
`, buttons : { 1 : { label : "Mail", callback : () => { return choice1 } }, 2 : { label : "Mail & Leather", callback : () => { return choice2 } }, 3 : { label : "Plate", callback : () => { return choice3 } } } }) let updateObj = this.actor.toObject(); let items = [] for (let c of choice) { let existing if (c.type == "skill") { existing = updateObj.items.find(i => i.name == c.name && i.type == c.type) if (existing && c.diff?.system?.advances?.value) { existing.system.advances.value += c.diff.system.advances.value } } if (!existing) { let item = await game.wfrp4e.utility.find(c.name, c.type) if (item) { item = item.toObject() equip(item); items.push(mergeObject(item, (c.diff || {}))) } else ui.notifications.warn(`Could not find ${c.name}`, {permanent : true}) } } await this.actor.update(updateObj) this.actor.createEmbeddedDocuments("Item", items); function equip(item) { if (item.type == "armour") item.system.worn.value = true else if (item.type == "weapon") item.system.equipped = true else if (item.type == "trapping" && item.system.trappingType.value == "clothingAccessories") item.system.worn = true }