shape change done
This commit is contained in:
parent
4ffed673db
commit
0c0fb1a3a8
@ -147,18 +147,32 @@ export async function requestTokenRoll(sceneId, tokenId, rollType, rollDesc, opt
|
||||
return { sceneId, tokenId, result };
|
||||
}
|
||||
|
||||
export async function addActiveEffectsToToken(sceneId, tokenId, effectDocuments) {
|
||||
function _getSceneToken(sceneId, tokenId) {
|
||||
const scene = game.scenes.get(sceneId);
|
||||
const token = scene.tokens.get(tokenId);
|
||||
return token;
|
||||
}
|
||||
|
||||
export async function addActiveEffectsToToken(sceneId, tokenId, effectDocuments) {
|
||||
const token = _getSceneToken(sceneId, 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);
|
||||
const token = _getSceneToken(sceneId, tokenId);
|
||||
await token.actor.deleteEmbeddedDocuments('ActiveEffect', effectIds);
|
||||
}
|
||||
|
||||
export async function updateOwnedToken(sceneId, tokenId, updates, options = {}) {
|
||||
const token = _getSceneToken(sceneId, tokenId);
|
||||
return token.update(updates, options);
|
||||
}
|
||||
|
||||
export async function deleteToken(sceneId, tokenId) {
|
||||
const token = _getSceneToken(sceneId, tokenId);
|
||||
return token.delete();
|
||||
}
|
||||
|
||||
export function SwadeVAEbuttons(effect, buttons) {
|
||||
if (['Bound', 'Entangled'].includes(effect?.name)) {
|
||||
buttons.push({
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { moduleName, moduleHelpers } from '../globals.js';
|
||||
import { firstOwner, deleteActiveEffectsFromToken } from '../helpers.js';
|
||||
import { firstOwner, deleteActiveEffectsFromToken, deleteToken } from '../helpers.js';
|
||||
import { ArcaneProtectionEffect } from './arcaneProtection.js';
|
||||
import { BanishEffect } from './banish.js';
|
||||
import { BarrierEffect } from './barrier.js';
|
||||
@ -190,7 +190,7 @@ export async function powerEffectManagementHook(effect, data, userId) {
|
||||
const isSpawned = effect.getFlag(moduleName, 'spawnedTempToken') ?? false;
|
||||
if (isSpawned) {
|
||||
const token = effect.parent.token;
|
||||
await token.delete();
|
||||
await moduleHelpers.socket.executeAsGM(deleteToken, token.parent.id, token.id);
|
||||
}
|
||||
const targetIds = effect.getFlag(moduleName, 'targetIds') || [];
|
||||
for (const targetId of targetIds) {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { log, moduleName } from '../globals.js';
|
||||
import { log, moduleHelpers, moduleName } from '../globals.js';
|
||||
import { firstOwner, updateOwnedToken } from '../helpers.js';
|
||||
import { ActorFolderEffect } from './basePowers.js';
|
||||
|
||||
export class ShapeChangeEffect extends ActorFolderEffect {
|
||||
@ -99,7 +100,11 @@ export class ShapeChangeEffect extends ActorFolderEffect {
|
||||
}
|
||||
this.data.tokenUpdates = {
|
||||
flags: {
|
||||
[moduleName]: { 'shapeChange.srcTokenUuid': this.target.document.uuid },
|
||||
[moduleName]: {
|
||||
'shapeChange.srcTokenUuid': this.target.document.uuid,
|
||||
'shapeChange.srcTokenId': this.target.document.id,
|
||||
'shapeChange.srcTokenSceneId': this.target.scene.id,
|
||||
},
|
||||
},
|
||||
actorLink: false,
|
||||
name: `${this.target.name} (${this.targetActor.prototypeToken.name} form)`,
|
||||
@ -136,7 +141,6 @@ export class ShapeChangeEffect extends ActorFolderEffect {
|
||||
y: target.y - ((protoHeight - target.height) * size) / 2,
|
||||
elevation: target.elevation,
|
||||
hidden: target.hidden,
|
||||
alpha: target.alpha,
|
||||
});
|
||||
return this.source.scene.createEmbeddedDocuments('Token', [this.targetTokenDoc]);
|
||||
}
|
||||
@ -182,10 +186,15 @@ export class ShapeChangeEffect extends ActorFolderEffect {
|
||||
}
|
||||
|
||||
async sideEffects() {
|
||||
// await this.target.document.update({
|
||||
// hidden: true,
|
||||
// alpha: 0.1,
|
||||
// });
|
||||
const owner = firstOwner(this.target);
|
||||
moduleHelpers.socket.executeAsUser(
|
||||
updateOwnedToken,
|
||||
owner.id,
|
||||
this.target.document.parent.id,
|
||||
this.target.document.id,
|
||||
{ hidden: true, x: 0, y: 0 },
|
||||
{ animate: false },
|
||||
);
|
||||
}
|
||||
|
||||
get description() {
|
||||
@ -196,6 +205,25 @@ export class ShapeChangeEffect extends ActorFolderEffect {
|
||||
}
|
||||
}
|
||||
|
||||
export function shapeChangeTokenDeleteHandler(token, options, userId) {
|
||||
export async function shapeChangeTokenDeleteHandler(token, options, userId) {
|
||||
log('TOKEN DELETED |', token, options, userId);
|
||||
const sourceInfo = token.getFlag(moduleName, 'shapeChange');
|
||||
if (!sourceInfo?.srcTokenId) {
|
||||
return;
|
||||
}
|
||||
if (sourceInfo.srcTokenSceneId !== token.parent.id) {
|
||||
return;
|
||||
}
|
||||
const srcToken = await fromUuid(sourceInfo.srcTokenUuid);
|
||||
const size = token.parent.dimensions.size;
|
||||
const owner = firstOwner(srcToken);
|
||||
const updates = {
|
||||
x: token.x - ((srcToken.width - token.width) * size) / 2,
|
||||
y: token.y - ((srcToken.height - token.height) * size) / 2,
|
||||
elevation: token.elevation,
|
||||
hidden: token.hidden,
|
||||
};
|
||||
moduleHelpers.socket.executeAsUser(updateOwnedToken, owner.id, srcToken.parent.id, srcToken.id, updates, {
|
||||
animate: false,
|
||||
});
|
||||
}
|
||||
|
||||
@ -4,7 +4,14 @@ import { registerSettings } from './settings.js';
|
||||
import { preloadTemplates } from './preloadTemplates.js';
|
||||
import { api } from './api.js';
|
||||
import { initVisionModes } from './visionModes.js';
|
||||
import { requestTokenRoll, addActiveEffectsToToken, deleteActiveEffectsFromToken, SwadeVAEbuttons } from './helpers.js';
|
||||
import {
|
||||
addActiveEffectsToToken,
|
||||
deleteActiveEffectsFromToken,
|
||||
deleteToken,
|
||||
requestTokenRoll,
|
||||
SwadeVAEbuttons,
|
||||
updateOwnedToken,
|
||||
} from './helpers.js';
|
||||
import { preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js';
|
||||
import { log, moduleHelpers } from './globals.js';
|
||||
import { powerEffectManagementHook, visualActiveEffectPowerButtons } from './powers/powers.js';
|
||||
@ -52,6 +59,8 @@ Hooks.on('visual-active-effects.createEffectButtons', SwadeVAEbuttons);
|
||||
Hooks.once('socketlib.ready', () => {
|
||||
const _socket = socketlib.registerModule('swade-mb-helpers');
|
||||
_socket.register('requestTokenRoll', requestTokenRoll);
|
||||
_socket.register('updateOwnedToken', updateOwnedToken);
|
||||
_socket.register('deleteToken', deleteToken);
|
||||
_socket.register('addActiveEffectsToToken', addActiveEffectsToToken);
|
||||
_socket.register('deleteActiveEffectsFromToken', deleteActiveEffectsFromToken);
|
||||
moduleHelpers._socket = _socket;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user