From ef57b1cb2e2f984d60a5081a2016fe159c2f10c1 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Sun, 16 Nov 2025 11:14:20 +0100 Subject: [PATCH] . --- module/data/activeEffect/beastformEffect.mjs | 3 +++ module/data/item/beastform.mjs | 1 + module/helpers/utils.mjs | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/module/data/activeEffect/beastformEffect.mjs b/module/data/activeEffect/beastformEffect.mjs index 3d3ada39..769b8153 100644 --- a/module/data/activeEffect/beastformEffect.mjs +++ b/module/data/activeEffect/beastformEffect.mjs @@ -6,6 +6,7 @@ export default class BeastformEffect extends BaseEffect { const fields = foundry.data.fields; return { characterTokenData: new fields.SchemaField({ + usesDynamicToken: new fields.BooleanField({ initial: false }), tokenImg: new fields.FilePathField({ categories: ['IMAGE'], base64: false, @@ -49,6 +50,7 @@ export default class BeastformEffect extends BaseEffect { src: this.characterTokenData.tokenImg }, ring: { + enabled: this.characterTokenData.usesDynamicToken, subject: { texture: this.characterTokenData.tokenRingImg } @@ -58,6 +60,7 @@ export default class BeastformEffect extends BaseEffect { const updateToken = token => ({ ...baseUpdate, 'texture': { + enabled: this.characterTokenData.usesDynamicToken, src: token.flags.daggerheart.beastformTokenImg }, 'ring': { diff --git a/module/data/item/beastform.mjs b/module/data/item/beastform.mjs index bbb7653e..51ca298d 100644 --- a/module/data/item/beastform.mjs +++ b/module/data/item/beastform.mjs @@ -174,6 +174,7 @@ export default class DHBeastform extends BaseDataItem { ], system: { characterTokenData: { + usesDynamicToken: this.parent.parent.prototypeToken.ring.enabled, tokenImg: this.parent.parent.prototypeToken.texture.src, tokenRingImg: this.parent.parent.prototypeToken.ring.subject.texture, tokenSize: { diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 24e9e294..f1bec45c 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -251,6 +251,12 @@ export const adjustRange = (rangeVal, decrease) => { return range[rangeKeys[newIndex]]; }; +/** + * + * @param {DhActor} actor - The actor for which all tokens will run a data update. + * @param {string} update - The data update to be applied to all tokens. + * @param {func} updateToken - Optional, specific data update for the non-prototype tokens as a function using the token data. Useful to handle wildcard images where each token has a different image but the prototype has a wildcard path. + */ export const updateActorTokens = async (actor, update, updateToken) => { await actor.prototypeToken.update({ ...update });