add socket based active effect handling for powers
This commit is contained in:
parent
4c00d7116e
commit
3357145ea9
@ -146,3 +146,15 @@ export async function requestTokenRoll(sceneId, tokenId, rollType, rollDesc, opt
|
||||
const result = await token.actor[rollFunc](rollId, options);
|
||||
return { sceneId, tokenId, result };
|
||||
}
|
||||
|
||||
export async function addActiveEffectsToToken(sceneId, tokenId, effectDocuments) {
|
||||
const scene = game.scenes.get(sceneId);
|
||||
const token = scene.tokens.get(tokenId);
|
||||
await token.actor.createEmbeddedDocuments('ActiveEffect', effectDocuments);
|
||||
}
|
||||
|
||||
export async function deleteActiveEffectsFromToken(sceneId, tokenId, effectIds) {
|
||||
const scene = game.scenes.get(sceneId);
|
||||
const token = scene.tokens.get(tokenId);
|
||||
await token.actor.deleteEmbeddedDocuments('ActiveEffect', effectIds);
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { moduleName, moduleHelpers } from '../globals.js';
|
||||
import { firstOwner, addActiveEffectsToToken } from '../helpers.js';
|
||||
import { templates } from '../preloadTemplates.js';
|
||||
import { moduleName } from '../globals.js';
|
||||
|
||||
const MAINTAIN_ICON = 'icons/magic/symbols/runes-star-blue.webp';
|
||||
|
||||
@ -16,7 +17,7 @@ export class PowerFormApplication extends FormApplication {
|
||||
template: templates['powerDialog.html'],
|
||||
id: ['mbSwadePowerEffectsApplication'],
|
||||
title: 'Power Effects',
|
||||
width: 350,
|
||||
width: 400,
|
||||
});
|
||||
}
|
||||
|
||||
@ -131,7 +132,14 @@ export class PowerEffect {
|
||||
}
|
||||
|
||||
async applyActiveEffects(token, effectDocuments) {
|
||||
await token.actor.createEmbeddedDocuments('ActiveEffect', effectDocuments);
|
||||
const owner = firstOwner(token);
|
||||
await moduleHelpers.socket.executeAsUser(
|
||||
addActiveEffectsToToken,
|
||||
owner.id,
|
||||
token.scene.id,
|
||||
token.id,
|
||||
effectDocuments,
|
||||
);
|
||||
}
|
||||
|
||||
get name() {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { moduleName } from '../globals.js';
|
||||
import { moduleName, moduleHelpers } from '../globals.js';
|
||||
import { firstOwner, deleteActiveEffectsFromToken } from '../helpers.js';
|
||||
import { ArcaneProtectionEffect } from './arcaneProtection.js';
|
||||
import { BanishEffect } from './banish.js';
|
||||
import { BarrierEffect } from './barrier.js';
|
||||
@ -63,7 +64,14 @@ export async function powerEffectManagementHook(effect, data, userId) {
|
||||
if (effectIds.length === 0) {
|
||||
continue;
|
||||
}
|
||||
await target.actor.deleteEmbeddedDocuments('ActiveEffects', effectIds);
|
||||
const owner = firstOwner(target);
|
||||
await moduleHelpers.socket.executeAsUser(
|
||||
deleteActiveEffectsFromToken,
|
||||
owner.id,
|
||||
target.scene.id,
|
||||
target.id,
|
||||
effectIds,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@ import { registerSettings } from './settings.js';
|
||||
import { preloadTemplates } from './preloadTemplates.js';
|
||||
import { api } from './api.js';
|
||||
import { initVisionModes } from './visionModes.js';
|
||||
import { requestTokenRoll } from './helpers.js';
|
||||
import { requestTokenRoll, addActiveEffectsToToken, deleteActiveEffectsFromToken } from './helpers.js';
|
||||
import { preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js';
|
||||
import { log, moduleHelpers } from './globals.js';
|
||||
import { powerEffectManagementHook } from './powers/powers.js';
|
||||
@ -49,5 +49,7 @@ Hooks.on('deleteActiveEffect', powerEffectManagementHook);
|
||||
Hooks.once('socketlib.ready', () => {
|
||||
const _socket = socketlib.registerModule('swade-mb-helpers');
|
||||
_socket.register('requestTokenRoll', requestTokenRoll);
|
||||
_socket.register('addActiveEffectsToToken', addActiveEffectsToToken);
|
||||
_socket.register('deleteActiveEffectsFromToken', deleteActiveEffectsFromToken);
|
||||
moduleHelpers._socket = _socket;
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user