shape change done

This commit is contained in:
2024-06-01 16:37:36 -05:00
parent 4ffed673db
commit 0c0fb1a3a8
4 changed files with 65 additions and 14 deletions
+2 -2
View File
@@ -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) {
+36 -8
View File
@@ -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,
});
}