diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 10d50301..cde7d280 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -660,7 +660,6 @@ export default class DhCharacter extends DhCreature { prepareDerivedData() { super.prepareDerivedData(); - let baseHope = this.resources.hope.value; if (this.companion) { for (let levelKey in this.companion.system.levelData.levelups) { const level = this.companion.system.levelData.levelups[levelKey]; @@ -675,7 +674,6 @@ export default class DhCharacter extends DhCreature { } this.resources.hope.max -= this.scars; - this.resources.hope.value = Math.min(baseHope, this.resources.hope.max); this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait; this.resources.armor = { diff --git a/module/data/actor/creature.mjs b/module/data/actor/creature.mjs index 601068ad..88646301 100644 --- a/module/data/actor/creature.mjs +++ b/module/data/actor/creature.mjs @@ -60,4 +60,14 @@ export default class DhCreature extends BaseDataActor { } } } + + prepareDerivedData() { + const minLimitResource = resource => { + if (resource) resource.value = Math.min(resource.value, resource.max); + }; + + minLimitResource(this.resources.stress); + minLimitResource(this.resources.hitPoints); + minLimitResource(this.resources.hope); + } } diff --git a/module/data/fields/actorField.mjs b/module/data/fields/actorField.mjs index 76c24319..a3c17281 100644 --- a/module/data/fields/actorField.mjs +++ b/module/data/fields/actorField.mjs @@ -83,19 +83,20 @@ class ResourcesField extends fields.TypedObjectField { return data; } - /** + /** * Foundry bar attributes are unable to handle finding the schema field nor the label normally. * This returns the element if its a valid resource key and overwrites the element's label for that retrieval. */ _getField(path) { - if ( path.length === 0 ) return this; + if (path.length === 0) return this; const first = path.shift(); if (first === this.element.name) return this.element_getField(path); - + const resources = CONFIG.DH.RESOURCE[this.actorType].all; if (first in resources) { - this.element.label = resources[first].label; - return this.element._getField(path); + const field = this.element._getField(path); + field.label = resources[first].label; + return field; } return undefined;