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);
|
const result = await token.actor[rollFunc](rollId, options);
|
||||||
return { sceneId, tokenId, result };
|
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 { templates } from '../preloadTemplates.js';
|
||||||
import { moduleName } from '../globals.js';
|
|
||||||
|
|
||||||
const MAINTAIN_ICON = 'icons/magic/symbols/runes-star-blue.webp';
|
const MAINTAIN_ICON = 'icons/magic/symbols/runes-star-blue.webp';
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ export class PowerFormApplication extends FormApplication {
|
|||||||
template: templates['powerDialog.html'],
|
template: templates['powerDialog.html'],
|
||||||
id: ['mbSwadePowerEffectsApplication'],
|
id: ['mbSwadePowerEffectsApplication'],
|
||||||
title: 'Power Effects',
|
title: 'Power Effects',
|
||||||
width: 350,
|
width: 400,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +132,14 @@ export class PowerEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async applyActiveEffects(token, effectDocuments) {
|
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() {
|
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 { ArcaneProtectionEffect } from './arcaneProtection.js';
|
||||||
import { BanishEffect } from './banish.js';
|
import { BanishEffect } from './banish.js';
|
||||||
import { BarrierEffect } from './barrier.js';
|
import { BarrierEffect } from './barrier.js';
|
||||||
@ -63,7 +64,14 @@ export async function powerEffectManagementHook(effect, data, userId) {
|
|||||||
if (effectIds.length === 0) {
|
if (effectIds.length === 0) {
|
||||||
continue;
|
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 { preloadTemplates } from './preloadTemplates.js';
|
||||||
import { api } from './api.js';
|
import { api } from './api.js';
|
||||||
import { initVisionModes } from './visionModes.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 { preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js';
|
||||||
import { log, moduleHelpers } from './globals.js';
|
import { log, moduleHelpers } from './globals.js';
|
||||||
import { powerEffectManagementHook } from './powers/powers.js';
|
import { powerEffectManagementHook } from './powers/powers.js';
|
||||||
@ -49,5 +49,7 @@ Hooks.on('deleteActiveEffect', powerEffectManagementHook);
|
|||||||
Hooks.once('socketlib.ready', () => {
|
Hooks.once('socketlib.ready', () => {
|
||||||
const _socket = socketlib.registerModule('swade-mb-helpers');
|
const _socket = socketlib.registerModule('swade-mb-helpers');
|
||||||
_socket.register('requestTokenRoll', requestTokenRoll);
|
_socket.register('requestTokenRoll', requestTokenRoll);
|
||||||
|
_socket.register('addActiveEffectsToToken', addActiveEffectsToToken);
|
||||||
|
_socket.register('deleteActiveEffectsFromToken', deleteActiveEffectsFromToken);
|
||||||
moduleHelpers._socket = _socket;
|
moduleHelpers._socket = _socket;
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user