This commit is contained in:
Gergely Bräutigam 2026-07-18 18:33:28 +02:00 committed by GitHub
commit 01dbc14207
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 117 additions and 20 deletions

View file

@ -197,11 +197,29 @@ export default class CostField extends fields.ArrayField {
static getItemIdCostUpdate(r) {
switch (r.key) {
case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id:
case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id: {
const resource = r.target.system.resource;
let max = Number(resource.max);
if (!Number.isFinite(max) && resource.max) {
try {
max = Roll.safeEval(Roll.replaceFormulaData(resource.max, r.target.getRollData()));
} catch {
max = null;
}
}
const hasMax = Number.isFinite(max) && max > 0;
if (r.clear) {
return {
path: 'system.resource.value',
value: hasMax ? max : resource.value
};
}
const newValue = resource.value + r.value;
return {
path: 'system.resource.value',
value: r.target.system.resource.value + r.value
value: Math.max(hasMax ? Math.min(newValue, max) : newValue, 0)
};
}
case CONFIG.DH.GENERAL.itemAbilityCosts.quantity.id:
return {
path: 'system.quantity',

View file

@ -45,9 +45,10 @@ export default class DamageField extends fields.SchemaField {
return;
let formulas = this.damage.parts.map(p => ({
formula: DamageField.getFormulaValue.call(this, p, config).getFormula(this.actor),
formula: p.fullRestore ? '0' : DamageField.getFormulaValue.call(this, p, config).getFormula(this.actor),
damageTypes: p.applyTo === 'hitPoints' && !p.type.size ? new Set(['physical']) : p.type,
applyTo: p.applyTo
applyTo: p.applyTo,
fullRestore: p.fullRestore
}));
if (!formulas.length) return false;
@ -67,6 +68,7 @@ export default class DamageField extends fields.SchemaField {
if (DamageField.getAutomation() === CONFIG.DH.SETTINGS.actionAutomationChoices.always.id)
damageConfig.dialog.configure = false;
if (formulas.every(f => f.fullRestore)) damageConfig.dialog.configure = false;
if (config.hasSave) config.onSave = damageConfig.onSave = this.save.damageMod;
damageConfig.source.message = messageId;
@ -305,6 +307,10 @@ export class DHResourceData extends foundry.abstract.DataModel {
initial: false,
label: 'DAGGERHEART.ACTIONS.Settings.resultBased.label'
}),
fullRestore: new fields.BooleanField({
initial: false,
label: 'DAGGERHEART.ACTIONS.Settings.fullRestore.label'
}),
value: new fields.EmbeddedDataField(DHActionDiceData),
valueAlt: new fields.EmbeddedDataField(DHActionDiceData)
};