diff --git a/scripts/powers.js b/scripts/powers.js index c74fc98..9b56ba8 100644 --- a/scripts/powers.js +++ b/scripts/powers.js @@ -19,10 +19,19 @@ class ArcaneProtectionEffect extends PowerEffect { }) return mods } + get _penaltyAmount () { + return (this.data.raise ? -4 : -2) + (this.data.mods.has('greater') ? -2 : 0) + } + getPrimaryEffectDescription () { + let text = super.getPrimaryEffectDescription() + text += `

Hostile powers are at ${this._penaltyAmount} + targeting or damaging this character.

` + return text + } get effectName () { const greater = this.data.mods.has('greater') const raise = this.data.raise - const amount = (raise ? -4 : -2) + (greater ? -2 : 0) + const amount = this._penaltyAmount return `${greater ? 'Greater ' : ''}Arcane Protection (${raise ? 'major, ' : ''}${amount})` } } @@ -69,12 +78,10 @@ class BanishEffect extends PowerEffect { list.push("If target incapacitated by this, banishment to home plane") return list } - async parseValues () { await super.parseValues() this.data.aoe = this.data.values.shift() } - } class BarrierEffect extends PowerEffect { @@ -96,15 +103,41 @@ class BarrierEffect extends PowerEffect { mods.push({ name: 'Size', id: 'size', value: 1, epic: false, effect: false }) return mods } + get _length () { + let height = 10 + if (this.data.raise) { height *= 2 } + if (this.data.mods.has('size')) { height *= 2} + return `${height}" (${height*2} yards)` + } + get _height () { + return `${this.data.mods.has('size') ? '2" (4' : '1" (2'} yards` + } + get _hardness () { + return (this.data.raise ? 12 : 10) + (this.data.mods.has('hardened') ? 2 : 0) + } + getPrimaryEffectDescription () { + let text = super.getPrimaryEffectDescription() + text += `

A barrier ${this._height} tall and ${this._length} long, of hardness ${this._hardness}.` + if (this.data.mods.has('deadly')) { + text += 'It does 2d6 damage to anyone who contacts it.' + } else if (this.data.mods.has('damage')) { + text += 'It does 2d4 damage to anyone who contacts it.' + } + if (this.data.mods.has('shaped')) { + text += 'It was shaped into a circle, square, or rectangle.' + } + text += '

' + return text + } get chatMessageEffects () { const list = [] - const hardness = (this.data.raise ? 12 : 10) + (this.data.mods.has('hardened') ? 2 : 0) - list.push(`The Barrier is hardness ${hardness}`) - if (this.data.mods.has('damage')) { - list.push('Damage: 2d4 to anyone who contacts') - } + list.push( + `The Barrier is ${this._height} tall and ${this._length} long, of hardness ${this._hardness}.` + ) if (this.data.mods.has('deadly')) { list.push('Deadly: 2d6 to anyone who contacts') + } else if (this.data.mods.has('damage')) { + list.push('Damage: 2d4 to anyone who contacts') } if (this.data.mods.has('shaped')) { list.push('Shaped (circle, square, or rectangle)') @@ -133,6 +166,18 @@ class BeastFriendEffect extends PowerEffect { ) return mods } + getPrimaryEffectDescription () { + let text = super.getPrimaryEffectDescription() + if (this.data.raise) { + text += '

Creatures will overcome instincts to follow orders.' + } else { + text += '

Creatures obey simple commands, subject to their insticts.' + } + if (this.data.mods('bestiarium')) { + text += ' The caster may even effect magical beasts.' + } + return text + } get chatMessageEffects () { const list = [] if (this.data.mods.has('bestiarium')) { @@ -299,6 +344,21 @@ class BurrowEffect extends PowerEffect { return `${this.name} ${this.data.mods.has('power') ? '[Power] ' : ''}` + `(${this.data.raise ? 'full' : 'half'} pace)` } + getPrimaryEffectDescription() { + let text = super.getPrimaryEffectDescription() + + `

Meld into the ground. Move at ${this.data.raise ? 'full' : 'half'} pace. May not run.

` + if (this.data.mods.has('power')) { + text += `

Can burrow through solid stone, concrete, etc

` + } + return text + } + get chatMessageEffects () { + const list = super.chatMessageEffects + if (this.data.mods.has('Power')) { + list.push('Power: Burrow through solid stone, concrete') + } + return list + } } const PowerClasses = {