diff --git a/lang/en.json b/lang/en.json index 987911d4..3e7889cf 100755 --- a/lang/en.json +++ b/lang/en.json @@ -2225,7 +2225,9 @@ }, "Resource": { "single": "Resource", - "plural": "Resources" + "plural": "Resources", + "unloaded": "The weapon is not loaded", + "loaded": "The weapon is loaded" }, "Roll": { "attack": "Attack Roll", diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index 5006e9d6..1a4ecafa 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -3,7 +3,7 @@ import DhDeathMove from '../../dialogs/deathMove.mjs'; import { CharacterLevelup, LevelupViewMode } from '../../levelup/_module.mjs'; import DhCharacterCreation from '../../characterCreation/characterCreation.mjs'; import FilterMenu from '../../ux/filter-menu.mjs'; -import { getArmorSources, getDocFromElement, getDocFromElementSync, sortBy } from '../../../helpers/utils.mjs'; +import { getArmorSources, getDocFromElement, getDocFromElementSync, itemAbleRollParse, sortBy } from '../../../helpers/utils.mjs'; /**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */ @@ -29,6 +29,7 @@ export default class CharacterSheet extends DHBaseActorSheet { toggleResourceDice: CharacterSheet.#toggleResourceDice, handleResourceDice: CharacterSheet.#handleResourceDice, advanceResourceDie: CharacterSheet.#advanceResourceDie, + toggleItemReload: CharacterSheet.#onToggleItemReload, cancelBeastform: CharacterSheet.#cancelBeastform, toggleResourceManagement: CharacterSheet.#toggleResourceManagement, useDowntime: this.useDowntime, @@ -954,11 +955,21 @@ export default class CharacterSheet extends DHBaseActorSheet { }); } - /** */ static #advanceResourceDie(_, target) { this.updateResourceDie(target, true); } + static async #onToggleItemReload(_, target) { + const item = await getDocFromElement(target); + if (!item || !item.system.resource?.type === 'simple' || !item.system.resource.max) + return; + + const isReloaded = item.system.resource.value > 0; + await item.update({ + 'system.resource.value': isReloaded ? 0 : itemAbleRollParse(item.system.resource.max, this.document, item) + }) + } + lowerResourceDie(event) { event.preventDefault(); event.stopPropagation(); diff --git a/module/data/action/attackAction.mjs b/module/data/action/attackAction.mjs index 6ebc262f..a1030c24 100644 --- a/module/data/action/attackAction.mjs +++ b/module/data/action/attackAction.mjs @@ -70,12 +70,12 @@ export default class DHAttackAction extends DHDamageAction { game.dice3d.showForRoll(roll, game.user, true); } - const needsToReload = roll.total === 1; + const needsToReload = true; + // const needsToReload = roll.total === 1; if (needsToReload) { - // TODO: Update item resource value when the functionality has been added to the system - // this.item.update({ 'system.resource.value': 0 }); + this.item.update({ 'system.resource.value': 0 }); } - return true; + return needsToReload; } diff --git a/styles/less/global/inventory-item.less b/styles/less/global/inventory-item.less index 2e6cc863..b80be41b 100644 --- a/styles/less/global/inventory-item.less +++ b/styles/less/global/inventory-item.less @@ -144,6 +144,10 @@ display: flex; align-items: center; gap: 4px; + + .unloaded { + opacity: 0.5; + } } } diff --git a/templates/sheets/global/partials/item-resource.hbs b/templates/sheets/global/partials/item-resource.hbs index fbcf02ca..21e268cf 100644 --- a/templates/sheets/global/partials/item-resource.hbs +++ b/templates/sheets/global/partials/item-resource.hbs @@ -1,7 +1,14 @@ + {{#if (eq item.system.resource.type 'simple')}}