diff --git a/module/data/actor/adversary.mjs b/module/data/actor/adversary.mjs index 62bed7c7..2053ac99 100644 --- a/module/data/actor/adversary.mjs +++ b/module/data/actor/adversary.mjs @@ -187,6 +187,7 @@ export default class DhpAdversary extends DhCreature { } prepareDerivedData() { + super.prepareDerivedData(); this.attack.roll.isStandardAttack = true; } diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index c606e17b..cc9801a3 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -658,6 +658,7 @@ 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) { @@ -677,6 +678,7 @@ export default class DhCharacter extends DhCreature { this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait; this.resources.armor = { + label: 'DAGGERHEART.GENERAL.armor', value: this.armor?.system?.marks?.value ?? 0, max: this.armorScore, isReversed: true diff --git a/module/data/actor/companion.mjs b/module/data/actor/companion.mjs index 45bd8395..ae85ff69 100644 --- a/module/data/actor/companion.mjs +++ b/module/data/actor/companion.mjs @@ -157,6 +157,7 @@ export default class DhCompanion extends DhCreature { } prepareDerivedData() { + super.prepareDerivedData(); /* Partner Related Setup */ if (this.partner) { this.levelData.level.changed = this.partner.system.levelData.level.current; diff --git a/module/data/actor/creature.mjs b/module/data/actor/creature.mjs index 33b47415..9b96a5b5 100644 --- a/module/data/actor/creature.mjs +++ b/module/data/actor/creature.mjs @@ -15,7 +15,6 @@ export default class DhCreature extends BaseDataActor { resource.max, resource.initial, resource.label, - resource.reverse, resource.maxLabel ); } else { @@ -54,6 +53,17 @@ export default class DhCreature extends BaseDataActor { return !vulnerableAppliedByOther; } + prepareDerivedData() { + super.prepareDerivedData(); + const resources = CONFIG.DH.ACTOR[`${this.parent.type}Resources`]; + if (resources) { + for (const [key, value] of Object.entries(this.resources)) { + value.label = resources[key]?.label; + value.isReversed = resources[key]?.reverse; + } + } + } + async _preUpdate(changes, options, userId) { const allowed = await super._preUpdate(changes, options, userId); if (allowed === false) return; diff --git a/module/data/fields/actorField.mjs b/module/data/fields/actorField.mjs index db1faad4..5aa55ee6 100644 --- a/module/data/fields/actorField.mjs +++ b/module/data/fields/actorField.mjs @@ -6,7 +6,7 @@ const attributeField = label => tierMarked: new fields.BooleanField({ initial: false }) }); -const resourceField = (max = 0, initial = 0, label, reverse = false, maxLabel) => +const resourceField = (max = 0, initial = 0, label, maxLabel) => new fields.SchemaField( { value: new fields.NumberField({ initial: initial, min: 0, integer: true, label }), @@ -17,7 +17,6 @@ const resourceField = (max = 0, initial = 0, label, reverse = false, maxLabel) = maxLabel ?? game.i18n.format('DAGGERHEART.GENERAL.maxWithThing', { thing: game.i18n.localize(label) }) }), - isReversed: new fields.BooleanField({ initial: reverse }) }, { label } ); diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index be213f4a..21280c8c 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -380,29 +380,17 @@ export const arraysEqual = (a, b) => export const setsEqual = (a, b) => a.size === b.size && [...a].every(value => b.has(value)); export function getScrollTextData(actor, resource, key) { - const actorType = actor.type; - const resources = actor.system.resources; - const { reverse, label } = { - armor: { - label: 'DAGGERHEART.GENERAL.armor', - reverse: true - }, - ...(actorType === 'character' - ? characterResources - : actorType === 'adversary' - ? adversaryResources - : companionResources) - }[key]; - const { BOTTOM, TOP } = CONST.TEXT_ANCHOR_POINTS; + + const resources = actor.system.resources; const increased = resources[key].value < resource.value; const value = -1 * (resources[key].value - resource.value); + const { label, isReversed } = resources[key]; const text = `${game.i18n.localize(label)} ${value.signedString()}`; - - const stroke = increased ? (reverse ? 0xffffff : 0x000000) : reverse ? 0x000000 : 0xffffff; - const fill = increased ? (reverse ? 0x0032b1 : 0xffe760) : reverse ? 0xffe760 : 0x0032b1; - const direction = increased ? (reverse ? BOTTOM : TOP) : reverse ? TOP : BOTTOM; + const stroke = increased ? (isReversed ? 0xffffff : 0x000000) : isReversed ? 0x000000 : 0xffffff; + const fill = increased ? (isReversed ? 0x0032b1 : 0xffe760) : isReversed ? 0xffe760 : 0x0032b1; + const direction = increased ? (isReversed ? BOTTOM : TOP) : isReversed ? TOP : BOTTOM; return { text, stroke, fill, direction }; }