2024-05-26 16:55:47 -05:00

106 lines
2.3 KiB
JavaScript

import { PowerEffect } from './basePowers.js';
export class HealingEffect extends PowerEffect {
get name() {
return 'Healing';
}
get icon() {
return 'icons/magic/life/heart-cross-strong-flame-purple-orange.webp';
}
get duration() {
return 0;
}
get isTargeted() {
return true;
}
get usePrimaryEffect() {
return false;
}
get isDamaging() {
return false;
}
get basePowerPoints() {
return 3;
}
get hasAoe() {
return true;
}
get modifiers() {
const mods = super.modifiers;
mods.push(
{
name: 'Area of Effect',
id: 'aoe',
type: 'select',
default: 'none',
choices: {
none: 'None',
mbt: '⭐ Medium Blast Template',
lbt: '⭐ Large Blast Template',
},
effects: { none: null, mbt: null, lbt: null },
values: { none: 0, mbt: 2, lbt: 3 },
epic: false,
},
{
name: 'Neutralize Poison or Disease',
value: 1,
id: 'poison',
epic: false,
type: 'checkbox',
effect: false,
},
{
name: 'Crippling Injuries',
value: 15,
id: 'crippling',
epic: false,
type: 'checkbox',
effect: false,
},
{
name: 'Greater Healing',
value: 10,
id: 'greater',
epic: false,
type: 'checkbox',
effect: false,
},
);
return mods;
}
get description() {
const size =
this.data.aoe !== 'none'
? `all allies within a ${this.data.aoe.toUpperCase()} centered on the caster`
: 'a single subject';
let text =
super.description +
`
<p>Heal ${size} of ${this.data.raise ? '2 Wounds' : '1 Wound'}
${this.data.greater ? 'of any age' : 'sustained in the last hour'}.
`;
if (this.data.crippling) {
text += `This casting is the only one possible for this Crippling Injury by this
caster, and preparation took an hour. If successful, the subject is
Exhausted for 24 hours.
`;
}
if (this.data.poison) {
text += `Negate any poison or disease, taking into account the affects of
any penalty from the poison or disease on the arcane skill roll.`;
}
text += '</p>';
return text;
}
}