89 lines
1.8 KiB
JavaScript

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 = `
<p>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 += '</p>';
return super.description + text;
}
}