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 };
|
return { sceneId, tokenId, result };
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function addActiveEffectsToToken(sceneId, tokenId, effectDocuments) {
|
function _getSceneToken(sceneId, tokenId) {
|
||||||
const scene = game.scenes.get(sceneId);
|
const scene = game.scenes.get(sceneId);
|
||||||
const token = scene.tokens.get(tokenId);
|
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);
|
await token.actor.createEmbeddedDocuments('ActiveEffect', effectDocuments);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteActiveEffectsFromToken(sceneId, tokenId, effectIds) {
|
export async function deleteActiveEffectsFromToken(sceneId, tokenId, effectIds) {
|
||||||
const scene = game.scenes.get(sceneId);
|
const token = _getSceneToken(sceneId, tokenId);
|
||||||
const token = scene.tokens.get(tokenId);
|
|
||||||
await token.actor.deleteEmbeddedDocuments('ActiveEffect', effectIds);
|
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) {
|
export function SwadeVAEbuttons(effect, buttons) {
|
||||||
if (['Bound', 'Entangled'].includes(effect?.name)) {
|
if (['Bound', 'Entangled'].includes(effect?.name)) {
|
||||||
buttons.push({
|
buttons.push({
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { moduleName, moduleHelpers } from '../globals.js';
|
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 { ArcaneProtectionEffect } from './arcaneProtection.js';
|
||||||
import { BanishEffect } from './banish.js';
|
import { BanishEffect } from './banish.js';
|
||||||
import { BarrierEffect } from './barrier.js';
|
import { BarrierEffect } from './barrier.js';
|
||||||
@ -190,7 +190,7 @@ export async function powerEffectManagementHook(effect, data, userId) {
|
|||||||
const isSpawned = effect.getFlag(moduleName, 'spawnedTempToken') ?? false;
|
const isSpawned = effect.getFlag(moduleName, 'spawnedTempToken') ?? false;
|
||||||
if (isSpawned) {
|
if (isSpawned) {
|
||||||
const token = effect.parent.token;
|
const token = effect.parent.token;
|
||||||
await token.delete();
|
await moduleHelpers.socket.executeAsGM(deleteToken, token.parent.id, token.id);
|
||||||
}
|
}
|
||||||
const targetIds = effect.getFlag(moduleName, 'targetIds') || [];
|
const targetIds = effect.getFlag(moduleName, 'targetIds') || [];
|
||||||
for (const targetId of 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';
|
import { ActorFolderEffect } from './basePowers.js';
|
||||||
|
|
||||||
export class ShapeChangeEffect extends ActorFolderEffect {
|
export class ShapeChangeEffect extends ActorFolderEffect {
|
||||||
@ -99,7 +100,11 @@ export class ShapeChangeEffect extends ActorFolderEffect {
|
|||||||
}
|
}
|
||||||
this.data.tokenUpdates = {
|
this.data.tokenUpdates = {
|
||||||
flags: {
|
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,
|
actorLink: false,
|
||||||
name: `${this.target.name} (${this.targetActor.prototypeToken.name} form)`,
|
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,
|
y: target.y - ((protoHeight - target.height) * size) / 2,
|
||||||
elevation: target.elevation,
|
elevation: target.elevation,
|
||||||
hidden: target.hidden,
|
hidden: target.hidden,
|
||||||
alpha: target.alpha,
|
|
||||||
});
|
});
|
||||||
return this.source.scene.createEmbeddedDocuments('Token', [this.targetTokenDoc]);
|
return this.source.scene.createEmbeddedDocuments('Token', [this.targetTokenDoc]);
|
||||||
}
|
}
|
||||||
@ -182,10 +186,15 @@ export class ShapeChangeEffect extends ActorFolderEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async sideEffects() {
|
async sideEffects() {
|
||||||
// await this.target.document.update({
|
const owner = firstOwner(this.target);
|
||||||
// hidden: true,
|
moduleHelpers.socket.executeAsUser(
|
||||||
// alpha: 0.1,
|
updateOwnedToken,
|
||||||
// });
|
owner.id,
|
||||||
|
this.target.document.parent.id,
|
||||||
|
this.target.document.id,
|
||||||
|
{ hidden: true, x: 0, y: 0 },
|
||||||
|
{ animate: false },
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
get description() {
|
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);
|
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 { 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, addActiveEffectsToToken, deleteActiveEffectsFromToken, SwadeVAEbuttons } from './helpers.js';
|
import {
|
||||||
|
addActiveEffectsToToken,
|
||||||
|
deleteActiveEffectsFromToken,
|
||||||
|
deleteToken,
|
||||||
|
requestTokenRoll,
|
||||||
|
SwadeVAEbuttons,
|
||||||
|
updateOwnedToken,
|
||||||
|
} 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, visualActiveEffectPowerButtons } from './powers/powers.js';
|
import { powerEffectManagementHook, visualActiveEffectPowerButtons } from './powers/powers.js';
|
||||||
@ -52,6 +59,8 @@ Hooks.on('visual-active-effects.createEffectButtons', SwadeVAEbuttons);
|
|||||||
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('updateOwnedToken', updateOwnedToken);
|
||||||
|
_socket.register('deleteToken', deleteToken);
|
||||||
_socket.register('addActiveEffectsToToken', addActiveEffectsToToken);
|
_socket.register('addActiveEffectsToToken', addActiveEffectsToToken);
|
||||||
_socket.register('deleteActiveEffectsFromToken', deleteActiveEffectsFromToken);
|
_socket.register('deleteActiveEffectsFromToken', deleteActiveEffectsFromToken);
|
||||||
moduleHelpers._socket = _socket;
|
moduleHelpers._socket = _socket;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user