From 8c2b114a04452bf24c71d8d85af51d65f2b3fe27 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Tue, 30 Jun 2026 13:02:04 +0200 Subject: [PATCH] Improved logic --- module/data/fields/action/summonField.mjs | 2 +- module/helpers/utils.mjs | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/module/data/fields/action/summonField.mjs b/module/data/fields/action/summonField.mjs index 6c35c779..6845d2ba 100644 --- a/module/data/fields/action/summonField.mjs +++ b/module/data/fields/action/summonField.mjs @@ -44,7 +44,7 @@ export default class DHSummonField extends fields.ArrayField { const actor = await getWorldActor(await foundry.utils.fromUuid(summon.actorUUID)); /* Extending summon data in memory so it's available in actionField.toChat. Think it's harmless, but ugly. Could maybe find a better way. */ - summon.actor = actor; + summon.actor = actor.toObject(); const countNumber = Number.parseInt(count); for (let i = 0; i < countNumber; i++) { diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 98777f2b..cb79a76b 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -893,13 +893,15 @@ export function shouldUseHopeFearAutomation(options = { gmAsPlayer: true }) { export async function getWorldActor(baseActor) { if (baseActor.inCompendium) { - const worldActorCopy = - game.actors.find(x => x._stats.compendiumSource === baseActor.uuid && x.name === baseActor.name); + const worldActorCopy = game.actors.find(x => + x._stats.compendiumSource === baseActor.uuid && + (!x.prototypeToken.actorLink || x.name === baseActor.name) + ); if (worldActorCopy) - return worldActorCopy.toObject(); + return worldActorCopy; - const baseActorData = baseActor.toObject(); + const baseActorData = baseActor; return await game.system.api.documents.DhpActor.create({ ...baseActorData, _stats: { @@ -909,5 +911,5 @@ export async function getWorldActor(baseActor) { }); } - return baseActor.toObject(); + return baseActor; } \ No newline at end of file