Add quantity field for all items
Release Creation / build (release) Successful in 2m8s

This commit is contained in:
2026-06-06 09:21:01 +02:00
parent 0d3cc5bbe0
commit 58db55d1ad
20 changed files with 276 additions and 87 deletions
+29 -2
View File
@@ -30,6 +30,8 @@ export default class PrismRPGCharacterSheet extends PrismRPGActorSheet {
hpTempMinus: PrismRPGCharacterSheet.#onHpTempMinus,
postItemToChat: PrismRPGCharacterSheet.#onPostItemToChat,
useConsumable: PrismRPGCharacterSheet.#onUseConsumable,
quantityPlus: PrismRPGCharacterSheet.#onQuantityPlus,
quantityMinus: PrismRPGCharacterSheet.#onQuantityMinus,
toggleContainerEquipped: PrismRPGCharacterSheet.#onToggleContainerEquipped,
toggleEquipped: PrismRPGCharacterSheet.#onToggleEquipped,
assignToContainer: PrismRPGCharacterSheet.#onAssignToContainer,
@@ -129,7 +131,7 @@ export default class PrismRPGCharacterSheet extends PrismRPGActorSheet {
]
const burdenEquipped = equippableTypes
.filter(i => i.system.equipped)
.reduce((sum, i) => sum + (i.system.encLoad ?? 0), 0)
.reduce((sum, i) => sum + (i.system.encLoad ?? 0) * (i.system.quantity ?? 1), 0)
context.burdenUsed = burdenEquipped
// Excess equipped burden reduces Movement Rating
const excessBurden = Math.max(0, burdenEquipped - context.burdenMax)
@@ -202,7 +204,7 @@ export default class PrismRPGCharacterSheet extends PrismRPGActorSheet {
// Pack burden = items stored in an existing container
context.packBurdenUsed = allStorable
.filter(i => i.system.containerId && containerGroups[i.system.containerId])
.reduce((sum, i) => sum + (i.system.encLoad ?? 0), 0)
.reduce((sum, i) => sum + (i.system.encLoad ?? 0) * (i.system.quantity ?? 1), 0)
break
case "biography":
context.tab = context.tabs.biography
@@ -365,6 +367,31 @@ export default class PrismRPGCharacterSheet extends PrismRPGActorSheet {
await item.update({ "system.equipped": !item.system.equipped })
}
static async #onQuantityPlus(event, target) {
const itemElement = target.closest("[data-item-id]")
if (!itemElement) return
const item = this.document.items.get(itemElement.dataset.itemId)
if (!item) return
await item.update({ "system.quantity": (item.system.quantity ?? 1) + 1 })
}
static async #onQuantityMinus(event, target) {
const itemElement = target.closest("[data-item-id]")
if (!itemElement) return
const item = this.document.items.get(itemElement.dataset.itemId)
if (!item) return
const newQty = (item.system.quantity ?? 1) - 1
if (newQty < 1) {
const confirmed = await foundry.applications.api.DialogV2.confirm({
window: { title: game.i18n.localize("PRISMRPG.Dialog.deleteItem") },
content: `<p>${game.i18n.format("PRISMRPG.Dialog.deleteItemContent", { name: item.name })}</p>`,
})
if (confirmed) await item.delete()
return
}
await item.update({ "system.quantity": newQty })
}
static async #onAssignToContainer(event, target) {
const itemElement = target.closest("[data-item-id]")
if (!itemElement) return