diff --git a/scripts/api.js b/scripts/api.js index baa5bd2..073ae55 100644 --- a/scripts/api.js +++ b/scripts/api.js @@ -9,7 +9,10 @@ export class api { static globals () { globalThis.swadeMBHelpers = { DEBUG: true, - runOnTargetOrSelectedTokens: helpers.runOnTargetOrSelectedTokens + runOnTargetOrSelectedTokens: helpers.runOnTargetOrSelectedTokens, + createEffectDocument: helpers.createEffectDocument, + createMutationWithEffect: helpers.createMutationWithEffect, + defaultMutationOptions: helpers.defaultMutationOptions } } } diff --git a/scripts/helpers.js b/scripts/helpers.js index 82a3e35..1aaca6b 100644 --- a/scripts/helpers.js +++ b/scripts/helpers.js @@ -13,4 +13,40 @@ export class helpers { ui.notifications.error('Please select or target a token') } } + + static createEffectDocument (icon, name, durationRounds, changes) { + const effectData = { + icon, + id: name, + label: name, + duration: { rounds: 5 }, + flags: { + swade: { + expiration: CONFIG.SWADE.CONST.STATUS_EFFECT_EXPIRATION.EndOfTurnPrompt, + loseTurnOnHold: true + } + }, + changes + } + return effectData + } + + static createMutationWithEffect (icon, name, durationRounds, changes) { + const effect = helpers.createEffectDocument(icon, name, durationRounds, changes) + const mutate = { + embedded: { ActiveEffect: {} } + } + mutate.embedded.ActiveEffect[name] = effect + return mutate + } + + static defaultMutationOptions (name) { + const mutateOptions = { + comparisonKeys: { ActiveEffect: 'label' }, + name, + permanent: false, + description: name + } + return mutateOptions + } }