add object reading, planar binding, plane shift

This commit is contained in:
Mike Bloy 2024-05-25 15:44:50 -05:00
parent 1cd4a08990
commit f80e551835
4 changed files with 190 additions and 0 deletions

View File

@ -0,0 +1,66 @@
import { PowerEffect } from './basePowers.js';
export class ObjectReadingEffect extends PowerEffect {
get name() {
return 'Object Reading';
}
get icon() {
return 'icons/skills/trades/academics-investigation-study-blue.webp';
}
get duration() {
return 0;
}
get isTargeted() {
return false;
}
get basePowerPoints() {
return 2;
}
get usePrimaryEffect() {
return false;
}
get isRaisable() {
return true;
}
get modifiers() {
return [
...super.modifiers,
{
type: 'checkbox',
default: false,
name: 'Projection',
value: 2,
epic: true,
effect: false,
id: 'projection',
},
];
}
get description() {
let text = super.description;
text += `<p>Get visions of the past from an object.
`;
if (this.data.raise) {
text += `With a raise, the object yields specific and more actionable
information related to the caster's investigation.`;
} else {
text += `On success, the caster gets a vague impression of whatever
information they're looking for.`;
}
text += '</p>';
if (this.data.projection) {
text += `<p>The caster projects the vision out into a space the size of a
small room, allowing anyone present to see and hear the events and examine
the projection.</p>`;
}
return text;
}
}

View File

@ -0,0 +1,41 @@
import { PowerEffect } from './basePowers.js';
export class PlanarBindingEffect extends PowerEffect {
get name() {
return 'Planar Binding';
}
get icon() {
return 'icons/magic/control/debuff-chains-orb-movement-blue.webp';
}
get duration() {
return 0;
}
get isTargeted() {
return false;
}
get basePowerPoints() {
return 8;
}
get usePrimaryEffect() {
return false;
}
get isRaisable() {
return false;
}
get description() {
let text =
super.description +
`
<p>Opposed roll vs the entity's Spirit. The entity is bound until it breaks
free or agrees to complete a task.</p>
`;
return text;
}
}

View File

@ -0,0 +1,77 @@
import { PowerEffect } from './basePowers.js';
export class PlaneShiftEffect extends PowerEffect {
get name() {
return 'Plane Shift';
}
get icon() {
return 'icons/magic/movement/trail-streak-zigzag-yellow.webp';
}
get duration() {
return this.data.foe ? (this.data.raise ? 5 : 3) : 0;
}
get isTargeted() {
return true;
}
get usePrimaryEffect() {
return this.data.foe;
}
get isDamaging() {
return true;
}
get basePowerPoints() {
return 4;
}
get hasAdditionalRecipients() {
return true;
}
get additionalRecipientCost() {
return 1;
}
get modifiers() {
return [
...super.modifiers,
{
name: 'Extra-Dimensional Space',
value: 2,
id: 'extra',
epic: true,
type: 'checkbox',
effect: false,
},
{
name: 'Transport Foe',
value: 2,
id: 'foe',
epic: true,
type: 'checkbox',
effect: false,
},
];
}
get description() {
let text = super.description;
if (this.data.foe) {
text += `<p>Opposed roll vs Spirit to transport the foe to another plane for
${this.duration} rounds, before it returns.</p>`;
} else if (this.data.extra) {
text += `<p>Transport the recipient to the caster's semi-permanant
extra-dimensional space, with basic necessities for 5 people.</p>`;
} else {
text += `<p>Transport the recipient to another dimension. If the desired
location is known, the recipient arrives within
[[/r ${this.data.raise ? 5 : 10}d10]] of the location.</p>`;
}
return text;
}
}

View File

@ -39,6 +39,9 @@ import { LocateEffect } from './locate.js';
import { MindLinkEffect } from './mindLink.js'; import { MindLinkEffect } from './mindLink.js';
import { MindReadingEffect } from './mindReading.js'; import { MindReadingEffect } from './mindReading.js';
import { MindWipeEffect } from './mindWipe.js'; import { MindWipeEffect } from './mindWipe.js';
import { ObjectReadingEffect } from './objectReading.js';
import { PlanarBindingEffect } from './planarBinding.js';
import { PlaneShiftEffect } from './planeShift.js';
const PowerClasses = { const PowerClasses = {
'arcane-protection': ArcaneProtectionEffect, 'arcane-protection': ArcaneProtectionEffect,
@ -91,6 +94,9 @@ const PowerClasses = {
'mind-link': MindLinkEffect, 'mind-link': MindLinkEffect,
'mind-reading': MindReadingEffect, 'mind-reading': MindReadingEffect,
'mind-wipe': MindWipeEffect, 'mind-wipe': MindWipeEffect,
'object-reading': ObjectReadingEffect,
'planar-binding': PlanarBindingEffect,
'plane-shift': PlaneShiftEffect,
shrink: GrowthShrinkEffect, shrink: GrowthShrinkEffect,
}; };