From bfa51605bc91643411342db9ad431fbc51fb0a9f Mon Sep 17 00:00:00 2001 From: Byroks Date: Fri, 15 Dec 2023 21:34:32 +0100 Subject: [PATCH] Add Consumable Items (#62) Changes: + add Quantity value for items + add plus and minus buttons for list + add roll button if item contains formulas + decrease quantity by 1 if rolled --- source/module/actors/M5Character.ts | 10 +++++ source/module/sheets/M5CharacterSheet.ts | 54 ++++++++++++++++++++++++ templates/sheets/character/gear.hbs | 8 ++++ templates/sheets/item/item.hbs | 10 +++++ 4 files changed, 82 insertions(+) diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index bed7d9a..e067c62 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -171,7 +171,15 @@ export class M5Character extends Actor { if (item.system.magic) { label += "*"; } + let rollable = false; + // console.log(item.system.rolls.formulas.map((p) => p.enabled)); + for (let key in item.system.rolls.formulas) { + rollable = item.system.rolls.formulas[key].enabled; + if (rollable) { + break; + } + } ret.gear.items[item.id] = { label: label, magic: item.system.magic, @@ -179,6 +187,8 @@ export class M5Character extends Actor { equipped: item.system?.equipped, value: item.system.value || 0, currency: item.system.currency || "", + quantity: item.system.quantity || 0, + rollExist: rollable, }; }); } diff --git a/source/module/sheets/M5CharacterSheet.ts b/source/module/sheets/M5CharacterSheet.ts index d847e42..e98a1ae 100644 --- a/source/module/sheets/M5CharacterSheet.ts +++ b/source/module/sheets/M5CharacterSheet.ts @@ -97,6 +97,60 @@ export default class M5CharacterSheet extends ActorSheet { item.sheet.render(true); }); + html.find(".quantity-increase").on("click", async (event) => { + let row = event.target.parentElement; + let itemId = row.dataset["item"]; + while (!itemId) { + row = row.parentElement; + if (!row) return; + itemId = row.dataset["item"]; + } + + const context = this.actor as any; + const item = context.items.get(itemId); + if (!item.system.quantity) { + item.system.quantity = 0; + } + item.system.quantity += 1; + this.render(); + }); + + html.find(".quantity-decrease").on("click", async (event) => { + let row = event.target.parentElement; + let itemId = row.dataset["item"]; + while (!itemId) { + row = row.parentElement; + if (!row) return; + itemId = row.dataset["item"]; + } + + const context = this.actor as any; + const item = context.items.get(itemId); + if (item.system.quantity > 0) { + item.system.quantity -= 1; + } + this.render(); + }); + + html.find(".roll-consumable-item").on("click", async (event) => { + let row = event.target.parentElement; + let itemId = row.dataset["item"]; + while (!itemId) { + row = row.parentElement; + if (!row) return; + itemId = row.dataset["item"]; + } + + const context = this.actor as any; + const item = context.items.get(itemId); + if (item.system.quantity > 0) { + item.system.quantity -= 1; + } + + await item.roll(); + this.render(); + }); + html.find(".item-delete").on("click", async (event) => { let row = event.target.parentElement; let itemId = row.dataset["item"]; diff --git a/templates/sheets/character/gear.hbs b/templates/sheets/character/gear.hbs index c4597e7..e2dc767 100644 --- a/templates/sheets/character/gear.hbs +++ b/templates/sheets/character/gear.hbs @@ -123,8 +123,10 @@ {{localize "TYPES.Item.item"}} + {{localize "midgard5.item-quantity"}} {{localize "midgard5.item-value"}} + @@ -137,11 +139,17 @@ {{localize "midgard5.equipped"}} {{/if}} + + + {{item.quantity}} + + {{#unless (or (eq item.value 0) (eq item.currency ""))}} {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}} {{/unless}} + {{#if item.rollExist}}{{/if}} {{/each}} diff --git a/templates/sheets/item/item.hbs b/templates/sheets/item/item.hbs index e2690f4..2add63f 100644 --- a/templates/sheets/item/item.hbs +++ b/templates/sheets/item/item.hbs @@ -19,6 +19,14 @@ + + +
+ {{localize "midgard5.item-quantity"}} + +
+ +
@@ -36,6 +44,8 @@ + + {{> "systems/midgard5/templates/sheets/item/rolls.hbs"}} {{> "systems/midgard5/templates/sheets/partial/mod.hbs" mods=data.mods calc=data.calc}}