import { PowerEffect } from './basePowers.js'; export class LightDarknessEffect extends PowerEffect { get name() { return 'Light/Darkness'; } get duration() { return 100; } get icon() { return this?.data?.direction === 'Darkness' ? 'icons/commodities/gems/pearl-purple-dark.webp' : 'icons/magic/light/light-lantern-lit-white.webp'; } get isTargeted() { return false; } get basePowerPoints() { return 2; } get usePrimaryEffect() { return false; } get modifiers() { return [ ...super.modifiers, { sortOrder: -2, name: 'Light or Darkness?', id: 'direction', type: 'radio', default: 'Light', epic: false, choices: { Light: 'Light', Darkness: 'Darkness' }, effects: { Light: null, Darkness: null }, values: { Light: 0, Darkness: 0 }, }, { name: 'Area Effect (Light only)', id: 'area', type: 'checkbox', default: false, value: 2, epic: true, effect: false, }, { name: 'True Darkness (Darkness only)', id: 'truedark', type: 'checkbox', default: false, value: 2, epic: true, effect: false, }, { name: 'Mobile', id: 'mobile', type: 'checkbox', default: false, value: 1, epic: false, effect: false, }, ]; } get effectName() { return this.data.direction; } get description() { let text = super.description; if (this.data.direction === 'Light') { const size = this.data.area ? "with a radius of the caster's Smarts ×2" : 'in a LBT'; text += `

Bright illumination ${size}. ${this.data.raise ? 'Optionally with a raise, light is focused into a 5" beam.' : ''}`; } else { text += `

Block illumination ${this.data.truedark ? ', Infravision, Low Light Vision, and Darkvision' : ''} in an area the size of a LBT, making the area ${this.data.raise ? 'Pitch Dark' : 'Dark'}`; } if (this.data.mobile) { text += ` The power can move as a limited free action at a pace of the caster's arcane skill die. Alternately, it may be attached to an inanimate object`; } text += '

'; return text; } }