diff --git a/src/module/powers/deflection.js b/src/module/powers/deflection.js new file mode 100644 index 0000000..463abbb --- /dev/null +++ b/src/module/powers/deflection.js @@ -0,0 +1,58 @@ +import { PowerEffect } from './basePowers.js'; + +export class DeflectionEffect extends PowerEffect { + get name() { + return 'Deflection'; + } + + get icon() { + return 'icons/magic/defensive/shield-barrier-deflect-teal.webp'; + } + + get duration() { + return 5; + } + + get basePowerPoints() { + return 2; + } + + get isTargeted() { + return true; + } + + get hasAdditionalRecipients() { + return true; + } + + get additionalRecipientCost() { + return 1; + } + + get menuButtons() { + const data = [ + { label: 'Melee', value: 'melee' }, + { label: 'Ranged', value: 'ranged' }, + { label: 'Raise (both)', value: 'raise' }, + { label: 'Cancel', value: 'cancel' }, + ]; + return data; + } + + async parseValues() { + await super.parseValues(); + this.data.affects = this.data.button === 'raise' ? 'all' : this.data.button; + } + + get effectName() { + return `Deflection (${this.data.affects})`; + } + + get description() { + return ( + super.description + + `
Attackers subtract -2 from ${this.data.affects} + attacks when targeting this creature.
` + ); + } +} diff --git a/src/module/powers/powers.js b/src/module/powers/powers.js index 90ca075..373e193 100644 --- a/src/module/powers/powers.js +++ b/src/module/powers/powers.js @@ -15,63 +15,7 @@ import { ConfusionEffect } from './confusion.js'; import { CurseEffect } from './curse.js'; import { DamageFieldEffect } from './damageField.js'; import { DarksightEffect } from './darksight.js'; - -class DeflectionEffect extends PowerEffect { - get name() { - return 'Deflection'; - } - - get icon() { - return 'icons/magic/defensive/shield-barrier-deflect-teal.webp'; - } - - get duration() { - return 5; - } - - get basePowerPoints() { - return 2; - } - - get isTargeted() { - return true; - } - - get hasAdditionalRecipients() { - return true; - } - - get additionalRecipientCost() { - return 1; - } - - get menuButtons() { - const data = [ - { label: 'Melee', value: 'melee' }, - { label: 'Ranged', value: 'vulnerable' }, - { label: 'Raise (both)', value: 'raise' }, - { label: 'Cancel', value: 'cancel' }, - ]; - return data; - } - - async parseValues() { - await super.parseValues(); - this.data.affects = this.data.button === 'raise' ? 'all' : this.data.button; - } - - get effectName() { - return `Deflection (${this.data.affects})`; - } - - get description() { - return ( - super.description + - `Attackers subtract -2 from ${this.data.affects} - attacks when targeting this creature.
` - ); - } -} +import { DeflectionEffect } from './deflection.js'; class DetectConcealArcanaEffect extends PowerEffect { get name() {