help for spawns, shape change pt 3
This commit is contained in:
parent
e438fd36e8
commit
8aac513792
@ -171,7 +171,7 @@ export class PowerEffect {
|
||||
await moduleHelpers.socket.executeAsUser(
|
||||
addActiveEffectsToToken,
|
||||
owner.id,
|
||||
token.scene.id,
|
||||
token?.scene?.id ?? token.parent.id,
|
||||
token.id,
|
||||
effectDocuments,
|
||||
);
|
||||
@ -834,7 +834,7 @@ export class ActorFolderEffect extends PowerEffect {
|
||||
|
||||
async parseValues() {
|
||||
await super.parseValues();
|
||||
this.data.maintid = randomID();
|
||||
this.data.maintId = randomID();
|
||||
this.targetActor = await game.actors.get(this.data.actorId);
|
||||
this.targetTokenDoc = await this.targetActor.getTokenDocument();
|
||||
const sourceUpdates = {
|
||||
@ -874,15 +874,17 @@ export class ActorFolderEffect extends PowerEffect {
|
||||
}
|
||||
const activeEffects = await this.secondaryDocsForTarget(secondaryDocs, token);
|
||||
activeEffects.push(await this.primaryDocForTarget(primaryDoc, token));
|
||||
promises.push(token.actor.createEmbeddedDocuments('ActiveEffect', activeEffects));
|
||||
}
|
||||
const maintainDoc = await this.createMaintainEffect(this.data.maintId);
|
||||
if (this.duration > 0) {
|
||||
promises.push(this.applyActiveEffects(this.source, [maintainDoc]));
|
||||
promises.push(this.applyActiveEffects(token, activeEffects));
|
||||
}
|
||||
await Promise.all(promises);
|
||||
}
|
||||
|
||||
async createPrimaryEffect(maintId) {
|
||||
const doc = await super.createPrimaryEffect(maintId);
|
||||
doc.flags[moduleName].spawnedTempToken = true;
|
||||
return doc;
|
||||
}
|
||||
|
||||
async sideEffects() {
|
||||
if (this.data.fatigue) {
|
||||
for (const target of this.data.spawned) {
|
||||
|
||||
@ -187,6 +187,11 @@ export async function powerEffectManagementHook(effect, data, userId) {
|
||||
if (!maintId) {
|
||||
return;
|
||||
}
|
||||
const isSpawned = effect.getFlag(moduleName, 'spawnedTempToken') ?? false;
|
||||
if (isSpawned) {
|
||||
const token = effect.parent.token;
|
||||
await token.delete();
|
||||
}
|
||||
const targetIds = effect.getFlag(moduleName, 'targetIds') || [];
|
||||
for (const targetId of targetIds) {
|
||||
const target = canvas.tokens.get(targetId);
|
||||
|
||||
@ -135,6 +135,19 @@ export class ShapeChangeEffect extends ActorFolderEffect {
|
||||
return this.source.scene.createEmbeddedDocuments('Token', [this.targetTokenDoc]);
|
||||
}
|
||||
|
||||
async apply() {
|
||||
await super.apply();
|
||||
const maintainDoc = await this.createMaintainEffect(this.data.maintId);
|
||||
maintainDoc.flags[moduleName].targetIds = this.data.spawned.map((t) => t.id);
|
||||
maintainDoc.flags[moduleName].shapeChangeSourceId = this.target.id;
|
||||
maintainDoc.flags[moduleName].shapeChangeTempTokenId = this.data.spawned[0].id;
|
||||
let maintainer = this.source;
|
||||
if (this.source.id === this.target.id) {
|
||||
maintainer = this.data.spawned[0];
|
||||
}
|
||||
await this.applyActiveEffects(maintainer, [maintainDoc]);
|
||||
}
|
||||
|
||||
get effectName() {
|
||||
return `Shape Change into ${this.targetActor.prototypeToken.name}`;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user