Fixed old origin logic

This commit is contained in:
WBHarry 2025-08-07 00:49:58 +02:00
parent df6cea61b2
commit 0b8338d4bc
2 changed files with 5 additions and 5 deletions

View file

@ -302,9 +302,8 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
} }
async applyEffect(effect, actor) { async applyEffect(effect, actor) {
const actorOrigin = effect.parent?.parent ? effect.parent.parent.uuid : effect.parent.uuid; const existingEffect = actor.effects.find(e => e.origin === effect.uuid);
// Enable an existing effect on the target if it originated from this effect if (existingEffect) {
if (effect.transfer) {
return effect.update( return effect.update(
foundry.utils.mergeObject({ foundry.utils.mergeObject({
...effect.constructor.getInitialDuration(), ...effect.constructor.getInitialDuration(),
@ -318,7 +317,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
...effect.toObject(), ...effect.toObject(),
disabled: false, disabled: false,
transfer: false, transfer: false,
origin: actorOrigin origin: effect.uuid
}); });
await ActiveEffect.implementation.create(effectData, { parent: actor }); await ActiveEffect.implementation.create(effectData, { parent: actor });
} }

View file

@ -75,7 +75,8 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect {
if (isOriginTarget && change.effect.origin) { if (isOriginTarget && change.effect.origin) {
change.value = change.value.replaceAll(/origin\.@/gi, '@'); change.value = change.value.replaceAll(/origin\.@/gi, '@');
try { try {
const doc = foundry.utils.fromUuidSync(change.effect.origin); const effect = foundry.utils.fromUuidSync(change.effect.origin);
const doc = effect.parent?.parent;
if (doc) parseModel = doc; if (doc) parseModel = doc;
} catch (_) {} } catch (_) {}
} }