diff --git a/CHANGELOG.md b/CHANGELOG.md index d1d3ab5..da3cd0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Optional Visual Active Effect integration for power descriptions +- Add VAE helper buttons for breaking free from Bound/Entangled ### Changed diff --git a/src/module/helpers.js b/src/module/helpers.js index 1af691c..d1d9a34 100644 --- a/src/module/helpers.js +++ b/src/module/helpers.js @@ -158,3 +158,24 @@ export async function deleteActiveEffectsFromToken(sceneId, tokenId, effectIds) const token = scene.tokens.get(tokenId); await token.actor.deleteEmbeddedDocuments('ActiveEffect', effectIds); } + +export function SwadeVAEbuttons(effect, buttons) { + if (['Bound', 'Entangled'].includes(effect?.name)) { + buttons.push({ + label: 'Break Free (Athletics)', + callback: function () { + const skillId = effect.parent.items.find((i) => i.type === 'skill' && i.system.swid === 'athletics')?.id; + effect.parent.rollSkill(skillId, { flavor: 'Breaking Free' }); + }, + }); + buttons.push({ + label: 'Break Free (Strength -2)', + callback: function () { + effect.parent.rollAttribute('strength', { + flavor: 'Breaking Free', + additionalMods: [{ label: 'Breaking Free with Strength', value: -2 }], + }); + }, + }); + } +} diff --git a/src/module/powers/powers.js b/src/module/powers/powers.js index c5fde19..9c49d72 100644 --- a/src/module/powers/powers.js +++ b/src/module/powers/powers.js @@ -92,7 +92,7 @@ export function visualActiveEffectPowerButtons(effect, buttons) { flavor: button?.flavor ?? `${effect.name} ${rollDesc} roll`, }; if (button?.mods) { - options.mods = button.mods; + options.additionalMods = button.mods; } effect.parent[rollFunc](rollId, options); }; diff --git a/src/module/swade-mb-helpers.js b/src/module/swade-mb-helpers.js index 568be5d..0e3bdcd 100644 --- a/src/module/swade-mb-helpers.js +++ b/src/module/swade-mb-helpers.js @@ -4,7 +4,7 @@ import { registerSettings } from './settings.js'; import { preloadTemplates } from './preloadTemplates.js'; import { api } from './api.js'; import { initVisionModes } from './visionModes.js'; -import { requestTokenRoll, addActiveEffectsToToken, deleteActiveEffectsFromToken } from './helpers.js'; +import { requestTokenRoll, addActiveEffectsToToken, deleteActiveEffectsFromToken, SwadeVAEbuttons } from './helpers.js'; import { preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js'; import { log, moduleHelpers } from './globals.js'; import { powerEffectManagementHook, visualActiveEffectPowerButtons } from './powers/powers.js'; @@ -45,6 +45,7 @@ Hooks.on('swadePreRollSkill', preTraitRollModifiers); Hooks.on('swadeRollDamage', preDamageRollModifiers); Hooks.on('deleteActiveEffect', powerEffectManagementHook); Hooks.on('visual-active-effects.createEffectButtons', visualActiveEffectPowerButtons); +Hooks.on('visual-active-effects.createEffectButtons', SwadeVAEbuttons); Hooks.once('socketlib.ready', () => { const _socket = socketlib.registerModule('swade-mb-helpers');