diff --git a/scripts/rollHandlers/swade/swade-br2sw.js b/scripts/rollHandlers/swade/swade-br2sw.js index 510084f..9175635 100644 --- a/scripts/rollHandlers/swade/swade-br2sw.js +++ b/scripts/rollHandlers/swade/swade-br2sw.js @@ -84,13 +84,16 @@ export class RollHandlerBR2SWSwade extends RollHandler { update.data.status[status] = !actor.data.data.status[status]; await actor.update(update); - - const effect = CONFIG.SWADE.statusEffects.find(e=>e.id===actionId); - const existingOnToken = actor.effects.find(e => e.getFlag("core", "statusId") === actionId); - - if (!existingOnToken == !existingOnSheet) { - canvas.tokens.get(tokenId).toggleEffect(effect); - } + // SWADE system will eventually set the active effect on the token, this future-proofs it so duplicate effects don't occur + setTimeout(() => { + const existingOnToken = actor.effects.find(e => e.getFlag("core", "statusId") === actionId); + + if (!existingOnToken == !existingOnSheet) { + const effect = CONFIG.SWADE.statusEffects.find(e=>e.id===actionId); + effect["flags.core.statusId"] = actionId; + canvas.tokens.get(tokenId).toggleEffect(effect); + } + }, 10); } /** @private */