diff --git a/src/samples/slay-the-spire-like/data/desert/triggers/damage.ts b/src/samples/slay-the-spire-like/data/desert/triggers/damage.ts index b95c36c..4aa8e92 100644 --- a/src/samples/slay-the-spire-like/data/desert/triggers/damage.ts +++ b/src/samples/slay-the-spire-like/data/desert/triggers/damage.ts @@ -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); diff --git a/src/samples/slay-the-spire-like/data/desert/triggers/instant.ts b/src/samples/slay-the-spire-like/data/desert/triggers/instant.ts index aaa40bf..76face1 100644 --- a/src/samples/slay-the-spire-like/data/desert/triggers/instant.ts +++ b/src/samples/slay-the-spire-like/data/desert/triggers/instant.ts @@ -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") {