shape change done
This commit is contained in:
@@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user