import { moduleName } from '../globals.js'; import { PowerEffect } from './basePowers.js'; export class SmiteEffect extends PowerEffect { get name() { return 'Smite'; } get duration() { return 5; } get icon() { return 'systems/swade/assets/icons/status/status_smite.svg'; } get isDamaging() { return true; } get basePowerPoints() { return 2; } get isTargeted() { return true; } get hasAdditionalRecipients() { return true; } get additionalRecipientCost() { return 1; } get modifiers() { return [ ...super.modifiers, { type: 'checkbox', default: false, name: 'Greater Smite', id: 'greater', value: 2, epic: true, effect: false, }, ]; } async parseValues() { await super.parseValues(); this.baseDoc = await PowerEffect.getStatus('SWADE.Smite', 'Smite', false); this.baseDoc.flags = mergeObject(this.baseDoc.flags ?? {}, { [moduleName]: { powerEffect: true }, }); this.data.bonus = (this.data.raise ? 4 : 2) + (this.data.greater ? 2 : 0); this.baseDoc.changes = [...this.getPrimaryEffectChanges()]; } get basePrimaryEffect() { return this.baseDoc; } getPrimaryEffectChanges() { return [ ...super.getPrimaryEffectChanges(), { key: 'system.stats.globalMods.damage', value: this.data.bonus, priority: 0, mode: foundry.CONST.ACTIVE_EFFECT_MODES.ADD, }, ]; } get description() { let text = `

Increase damage by ${this.data.bonus} on one weapon or load of ammunition. `; if (this.data.greater) { text += 'The weapon is considered a Heavy Weapon.'; } text += '

'; return super.description + text; } }