89 lines
1.8 KiB
JavaScript
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;
|
|
}
|
|
}
|