refactor(slay-the-spire-like): move spike damage logic to instant
effects
This commit is contained in:
parent
359e7b7485
commit
bedde1ef4b
|
|
@ -55,25 +55,6 @@ export function addDamageTriggers(triggers: Triggers) {
|
|||
await next();
|
||||
});
|
||||
|
||||
// spike: damage attacker
|
||||
triggers.onDamage.use(async (ctx, next) => {
|
||||
await next();
|
||||
|
||||
if (ctx.amount - (ctx.prevented ?? 0) <= 0) return;
|
||||
|
||||
const entity = getCombatEntity(ctx.game.value, ctx.entityId);
|
||||
if (!entity || !entity.isAlive) return;
|
||||
|
||||
const spike = entity.effects.spike?.stacks ?? 0;
|
||||
if (spike > 0 && ctx.sourceEntityId) {
|
||||
await triggers.onDamage.execute(ctx.game, {
|
||||
entityId: ctx.sourceEntityId,
|
||||
amount: spike,
|
||||
sourceEntityId: ctx.entityId,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// energyDrain: player loses energy when enemy takes damage
|
||||
triggers.onDamage.use(async (ctx, next) => {
|
||||
const entity = getCombatEntity(ctx.game.value, ctx.entityId);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
import { Triggers } from "@/samples/slay-the-spire-like/system/combat/triggers";
|
||||
import { addEntityEffect } from "@/samples/slay-the-spire-like/system/combat/effects";
|
||||
import {
|
||||
addEntityEffect,
|
||||
getCombatEntity,
|
||||
} from "@/samples/slay-the-spire-like/system/combat/effects";
|
||||
import { moveToRegion } from "@/core/region";
|
||||
import { CombatGameContext } from "@/samples/slay-the-spire-like/system/combat/types";
|
||||
import { GameCard } from "@/samples/slay-the-spire-like/system/deck";
|
||||
|
|
@ -97,6 +100,16 @@ export function addInstantEffectTriggers(triggers: Triggers) {
|
|||
amount: ctx.stacks,
|
||||
sourceEntityId: ctx.sourceEntityId,
|
||||
});
|
||||
|
||||
const entity = getCombatEntity(ctx.game.value, ctx.entityId);
|
||||
const spike = entity?.effects.spike?.stacks ?? 0;
|
||||
if (spike > 0 && ctx.sourceEntityId) {
|
||||
await triggers.onDamage.execute(ctx.game, {
|
||||
entityId: ctx.sourceEntityId,
|
||||
amount: spike,
|
||||
sourceEntityId: ctx.entityId,
|
||||
});
|
||||
}
|
||||
} else if (ctx.effect.id === "draw") {
|
||||
await triggers.onDraw.execute(ctx.game, { count: ctx.stacks });
|
||||
} else if (ctx.effect.id === "gainEnergy") {
|
||||
|
|
|
|||
Loading…
Reference in New Issue