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