diff --git a/src/module/powers/powers.js b/src/module/powers/powers.js index c0d2f62..edd59f2 100644 --- a/src/module/powers/powers.js +++ b/src/module/powers/powers.js @@ -60,6 +60,7 @@ import { SummonAllyEffect } from './summon.js'; import { TelekinesisEffect } from './telekinesis.js'; import { TeleportEffect } from './teleport.js'; import { TimeStopEffect } from './timeStop.js'; +import { WallWalkerEffect } from './wallWalker.js'; const PowerClasses = { 'arcane-protection': ArcaneProtectionEffect, @@ -140,6 +141,7 @@ const PowerClasses = { telekinesis: TelekinesisEffect, teleport: TeleportEffect, 'time-stop': TimeStopEffect, + 'wall-walker': WallWalkerEffect, }; /* ---------------------------------------------------------------- */ diff --git a/src/module/powers/wallWalker.js b/src/module/powers/wallWalker.js new file mode 100644 index 0000000..156d4b7 --- /dev/null +++ b/src/module/powers/wallWalker.js @@ -0,0 +1,60 @@ +import { PowerEffect } from './basePowers.js'; + +export class WallWalkerEffect extends PowerEffect { + get name() { + return 'WallWalker'; + } + + get duration() { + return 5; + } + + get icon() { + return 'icons/creatures/invertebrates/bug-sixlegged-gray.webp'; + } + + get hasAdditionalRecipients() { + return true; + } + + get additionalRecipientCost() { + return 1; + } + + get basePowerPoints() { + return 2; + } + + get isTargeted() { + return true; + } + + get effectName() { + return `${this.name} (${this.data.raise ? 'full' : 'half'} pace)`; + } + + get description() { + let text = + super.description + + `
Walk along vertical or horizontal surfaces. Move at ${this.data.raise ? 'full' : 'half'} + pace. May${this.data.raise ? '' : ' not'} run. +
If an athletics check is needed to climb or stay on the surface, it is at +4. +
`; + return text; + } + + get primaryEffectButtons() { + const mods = [{ label: 'Wall Walker', value: 4 }]; + return [ + ...super.primaryEffectButtons, + { + label: 'Athletics +4 (to climb or stay on a surface)', + type: 'trait', + rollType: 'skill', + rollDesc: 'Athletics', + flavor: 'Hanging on to the surface', + mods, + }, + ]; + } +}