Added DestroyOnEmpty property

This commit is contained in:
WBHarry 2025-08-28 09:16:45 +02:00
parent 4dfc18f727
commit 7082cc009f
65 changed files with 87 additions and 20 deletions

View file

@ -2125,7 +2125,8 @@
} }
}, },
"Consumable": { "Consumable": {
"consumeOnUse": "Consume On Use" "consumeOnUse": "Consume On Use",
"destroyOnEmpty": "Destroy On Empty"
}, },
"DomainCard": { "DomainCard": {
"type": "Type", "type": "Type",

View file

@ -199,14 +199,16 @@ export default class CostField extends fields.ArrayField {
switch (r.key) { switch (r.key) {
case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id: case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id:
return { return {
'system.resource.value': r.target.system.resource.value + r.value path: 'system.resource.value',
value: r.target.system.resource.value + r.value
}; };
case CONFIG.DH.GENERAL.itemAbilityCosts.quantity.id: case CONFIG.DH.GENERAL.itemAbilityCosts.quantity.id:
return { return {
'system.quantity': r.target.system.quantity + r.value path: 'system.quantity',
value: r.target.system.quantity + r.value
}; };
default: default:
return {}; return { path: '', value: undefined };
} }
} }

View file

@ -1,5 +1,4 @@
import BaseDataItem from './base.mjs'; import BaseDataItem from './base.mjs';
import { ActionField } from '../fields/actionField.mjs';
export default class DHConsumable extends BaseDataItem { export default class DHConsumable extends BaseDataItem {
/** @inheritDoc */ /** @inheritDoc */
@ -19,7 +18,8 @@ export default class DHConsumable extends BaseDataItem {
const fields = foundry.data.fields; const fields = foundry.data.fields;
return { return {
...super.defineSchema(), ...super.defineSchema(),
consumeOnUse: new fields.BooleanField({ initial: false }) consumeOnUse: new fields.BooleanField({ initial: true }),
destroyOnEmpty: new fields.BooleanField({ initial: true })
}; };
} }
@ -27,14 +27,4 @@ export default class DHConsumable extends BaseDataItem {
/**@override */ /**@override */
static DEFAULT_ICON = 'systems/daggerheart/assets/icons/documents/items/round-potion.svg'; static DEFAULT_ICON = 'systems/daggerheart/assets/icons/documents/items/round-potion.svg';
async _preUpdate(changes, options, userId) {
const allowed = await super._preUpdate(changes, options, userId);
if (allowed === false) return;
if (changes.system?.quantity !== undefined && Number(changes.system.quantity) === 0) {
this.parent.delete();
return;
}
}
} }

View file

@ -660,10 +660,21 @@ export default class DhpActor extends Actor {
resources.forEach(r => { resources.forEach(r => {
if (r.itemId) { if (r.itemId) {
const { path, value } = game.system.api.fields.ActionFields.CostField.getItemIdCostUpdate(r);
if (
r.key === 'quantity' &&
r.target.type === 'consumable' &&
value === 0 &&
r.target.system.destroyOnEmpty
) {
r.target.delete();
} else {
updates.items[r.key] = { updates.items[r.key] = {
target: r.target, target: r.target,
resources: game.system.api.fields.ActionFields.CostField.getItemIdCostUpdate(r) resources: { [path]: value }
}; };
}
} else { } else {
switch (r.key) { switch (r.key) {
case 'fear': case 'fear':

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -48,6 +48,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -89,6 +89,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -71,6 +71,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -134,6 +134,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -84,6 +84,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -91,6 +91,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -71,6 +71,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -89,6 +89,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -84,6 +84,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -84,6 +84,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -84,6 +84,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -84,6 +84,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -85,6 +85,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -85,6 +85,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -84,6 +84,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -71,6 +71,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -64,6 +64,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -159,6 +159,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 62, "page": 62,

View file

@ -91,6 +91,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -85,6 +85,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -40,6 +40,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 60, "page": 60,

View file

@ -45,6 +45,7 @@
} }
}, },
"consumeOnUse": true, "consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": { "attribution": {
"source": "Daggerheart SRD", "source": "Daggerheart SRD",
"page": 61, "page": 61,

View file

@ -10,5 +10,8 @@
<span>{{localize "DAGGERHEART.ITEMS.Consumable.consumeOnUse"}}</span> <span>{{localize "DAGGERHEART.ITEMS.Consumable.consumeOnUse"}}</span>
{{formField systemFields.consumeOnUse value=source.system.consumeOnUse}} {{formField systemFields.consumeOnUse value=source.system.consumeOnUse}}
<span>{{localize "DAGGERHEART.ITEMS.Consumable.destroyOnEmpty"}}</span>
{{formField systemFields.destroyOnEmpty value=source.system.destroyOnEmpty}}
</fieldset> </fieldset>
</section> </section>