mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-22 10:29:54 +02:00
Merge 8082cb3a18 into 4b651836ff
This commit is contained in:
commit
01dbc14207
14 changed files with 117 additions and 20 deletions
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue