swadeMBHelpers.runOnTargetOrSelectedTokens(main) async function main (tokens) { const tokenList = tokens.map(t => t.name).join(', ') const dialogOptions = { title: 'Shroud', content: `Apply Shroud to ${tokenList}`, default: 'cancel', buttons: [ { label: 'OK', value: 'ok' }, { label: 'Cancel', value: 'cancel' } ] } const choice = await warpgate.buttonDialog(dialogOptions) if (choice === 'ok') { await createEffect(tokens) } } async function createEffect (tokens) { const icon = 'icons/magic/perception/silhouette-stealth-shadow.webp' const effectName = 'Shroud' for (const token of tokens) { const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, 5, []) const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName) mutate.token = { light: { alpha: 0.5, angle: 360, attenuation: 0.1, animation: { intensity: 5, reverse: false, speed: 5, type: 'roiling' }, bright: 0, color: null, coloration: 0, contrast: 0, dim: 0.1, luminosity: -0.15, saturation: 0, shadows: 0.25 } } await warpgate.mutate(token.document, mutate, {}, mutateOptions) } }