diff --git a/scripts/powers.js b/scripts/powers.js index 69370a3..35142ca 100644 --- a/scripts/powers.js +++ b/scripts/powers.js @@ -633,6 +633,7 @@ class CurseEffect extends PowerEffect { get duration () { return 500*24*60*6 } get isTargeted () { return true } get oneTarget () { return true } + get isRaisable () { return false } get basePowerPoints () { return 5 } get modifiers () { const mods = super.modifiers @@ -662,6 +663,59 @@ class CurseEffect extends PowerEffect { } } +class DamageFieldEffect extends PowerEffect { + get name () { return 'Damage Field' } + get icon () { return 'icons/magic/defensive/shield-barrier-blades-teal.webp' } + get duration () { return 5 } + get basePowerPoints () { return 4 } + get isTargeted () { return true } + get oneTarget () { return true } + get isRaisable () { return false } + get modifiers () { + const mods = super.modifiers + mods.push({ name: 'Area of Effect', value: 2, id: 'aoe', epic: false, effect: false }) + mods.push({ name: 'Damage', value: 2, id: 'damage', epic: false, effect: false }) + mods.push({ name: 'Greater Damage Field', value: 4, id: 'greater', epic: true, effect: false }) + mods.push({ name: 'Mobile', value: 2, id: 'mobile', epic: false, effect: false }) + return mods + } + get description () { + let desc = super.description + let area = 'all adjacent creatures' + let damage = '2d4' + if (this.data.mods.has('greater')) { + damage = '3d6 (heavy weapon)' + } else if (this.data.mods.has('damage')) { + damage = '2d6' + } + if (this.data.mods.has('aoe')) { + area = 'all creatures within a MBT' + } + desc += `
At the end of the recipient's turn, ${area} + automatically take ${damage} damage.` + if (this.data.mods.has('mobile')) { + desc += `The caster may detach the damage field from the recipient and + move it up to his Smarts die type each round, as a limited free action.` + } + desc += '
' + return desc + } + getPrimaryEffectChanges () { + const base = 'flags.swade.auras.damagefield' + const priority = 0 + const mode = foundry.CONST.ACTIVE_EFFECT_MODES.OVERRIDE + const changes = [ + { key: `${base}.enabled`, value: true, priority, mode }, + { key: `${base}.walls`, value: true, priority, mode }, + { key: `${base}.color`, value: '#ffcc00', priority, mode }, + { key: `${base}.alpha`, value: 0.1, priority, mode }, + { key: `${base}.radius`, value: (this.data.mods.has('aoe') ? 1.5 : 0.5), priority, mode }, + { key: `${base}.visibleTo`, value: [-1, 0, 1], priority, mode }, + ] + return changes + } +} + const PowerClasses = { "arcane-protection": ArcaneProtectionEffect, banish: BanishEffect, @@ -676,6 +730,7 @@ const PowerClasses = { burst: BurstEffect, confusion: ConfusionEffect, curse: CurseEffect, + "damage-field": DamageFieldEffect, "lower-trait": BoostLowerTraitEffect, }