add puppet

This commit is contained in:
Mike Bloy 2024-05-25 23:18:51 -05:00
parent 864acdd722
commit e0cd1c640c
2 changed files with 89 additions and 0 deletions

View File

@ -43,6 +43,7 @@ import { ObjectReadingEffect } from './objectReading.js';
import { PlanarBindingEffect } from './planarBinding.js';
import { PlaneShiftEffect } from './planeShift.js';
import { ProtectionEffect } from './protection.js';
import { PuppetEffect } from './puppet.js';
const PowerClasses = {
'arcane-protection': ArcaneProtectionEffect,
@ -99,6 +100,7 @@ const PowerClasses = {
'planar-binding': PlanarBindingEffect,
'plane-shift': PlaneShiftEffect,
protection: ProtectionEffect,
puppet: PuppetEffect,
shrink: GrowthShrinkEffect,
};

View File

@ -0,0 +1,87 @@
import { PowerEffect } from './basePowers.js';
export class PuppetEffect extends PowerEffect {
get name() {
return 'Puppet';
}
get duration() {
return 5;
}
get icon() {
return 'icons/magic/control/control-influence-puppet.webp';
}
get hasAdditionalRecipients() {
return true;
}
get additionalRecipientCost() {
return 2;
}
get basePowerPoints() {
return 3;
}
get isTargeted() {
return true;
}
get modifiers() {
const mods = super.modifiers;
mods.push({
name: 'Strong',
type: 'checkbox',
id: 'strong',
value: 2,
epic: false,
effect: false,
});
return mods;
}
get isRaisable() {
return false;
}
get primaryEffectButtons() {
const mods = [];
if (this.data.strong) {
mods.push({ label: 'Strong', value: -2 });
}
return [
...super.primaryEffectButtons,
{
label: `Resist (Spirit${this.data.strong ? ' -2' : ''})`,
type: 'trait',
rollType: 'attribute',
rollDesc: 'Spirit',
flavor: 'Resist Puppet after unreasonable command',
mods,
},
];
}
get description() {
let text =
super.description +
`
<p>
Opposed roll vs the caster's Spirit. Success means the victim obeys
commands, but won't harm himself or those he cares about, including by
inaction. With a raise, the target will do so, but gets a free action
Spirit roll ${this.data.strong ? '(at -2)' : ''} to resist that
particular command, with a raise meaning he breaks the controller's hold
and the power ends.
</p>
`;
if (this.data.strong) {
text += `<p>Spirit rolls to resist are at -2. The caster may also use
<em>mind link</em> on the target to extend controll to any distance,
even out of sight.</p>`;
}
return text;
}
}