refactor: rename entityKey to entityId in combat triggers

Rename `entityKey` and `sourceEntityKey` to `entityId` and
`sourceEntityId` across the slay-the-spire-like sample to improve
naming consistency with the rest of the project.
This commit is contained in:
hypercross 2026-04-23 00:38:10 +08:00
parent 8ec95cbf81
commit 63e55a828e
6 changed files with 103 additions and 103 deletions

View File

@ -30,9 +30,9 @@ export function addCardEventTriggers(triggers: Triggers, run: IRunContext) {
for (let i = 0; i < storm; i++) { for (let i = 0; i < storm; i++) {
await triggers.onEffectApplied.execute(ctx.game, { await triggers.onEffectApplied.execute(ctx.game, {
effect: findEffect("static"), effect: findEffect("static"),
entityKey: "player", entityId: "player",
stacks: 1, stacks: 1,
sourceEntityKey: ctx.enemyId, sourceEntityId: ctx.enemyId,
}); });
} }
} }
@ -52,7 +52,7 @@ export function addCardEventTriggers(triggers: Triggers, run: IRunContext) {
await triggers.onCardPlayed.execute(ctx.game, { await triggers.onCardPlayed.execute(ctx.game, {
cardId: id, cardId: id,
targetId: ctx.targetId, targetId: ctx.targetId,
sourceEntityKey: "player", sourceEntityId: "player",
}); });
} }
} }
@ -113,17 +113,17 @@ export function addCardEventTriggers(triggers: Triggers, run: IRunContext) {
await next(); await next();
const dealt = ctx.amount - (ctx.prevented ?? 0); const dealt = ctx.amount - (ctx.prevented ?? 0);
if (dealt <= 0 || !ctx.sourceEntityKey) return; if (dealt <= 0 || !ctx.sourceEntityId) return;
const attacker = getCombatEntity(ctx.game.value, ctx.sourceEntityKey); const attacker = getCombatEntity(ctx.game.value, ctx.sourceEntityId);
if (!attacker || !("enemy" in attacker) || attacker.enemy.id !== "秃鹫") if (!attacker || !("enemy" in attacker) || attacker.enemy.id !== "秃鹫")
return; return;
await triggers.onEffectApplied.execute(ctx.game, { await triggers.onEffectApplied.execute(ctx.game, {
effect: findEffect("vultureEye"), effect: findEffect("vultureEye"),
entityKey: "player", entityId: "player",
stacks: 1, stacks: 1,
sourceEntityKey: ctx.sourceEntityKey, sourceEntityId: ctx.sourceEntityId,
}); });
}); });
} }

View File

@ -22,7 +22,7 @@ export function addDamageTriggers(triggers: Triggers) {
// block / damage prevention // block / damage prevention
triggers.onDamage.use(async (ctx, next) => { triggers.onDamage.use(async (ctx, next) => {
const entity = getCombatEntity(ctx.game.value, ctx.entityKey); const entity = getCombatEntity(ctx.game.value, ctx.entityId);
if (!entity) return; if (!entity) return;
let preventable = ctx.amount - (ctx.prevented ?? 0); let preventable = ctx.amount - (ctx.prevented ?? 0);
@ -42,7 +42,7 @@ export function addDamageTriggers(triggers: Triggers) {
ctx.prevented = (ctx.prevented ?? 0) + blocked; ctx.prevented = (ctx.prevented ?? 0) + blocked;
preventable -= blocked; preventable -= blocked;
await ctx.game.produceAsync((draft) => { await ctx.game.produceAsync((draft) => {
const e = getCombatEntity(draft, ctx.entityKey); const e = getCombatEntity(draft, ctx.entityId);
if (e) addEntityEffect(e, findEffect("defend"), -blocked); if (e) addEntityEffect(e, findEffect("defend"), -blocked);
}); });
} }
@ -61,26 +61,26 @@ export function addDamageTriggers(triggers: Triggers) {
if (ctx.amount - (ctx.prevented ?? 0) <= 0) return; if (ctx.amount - (ctx.prevented ?? 0) <= 0) return;
const entity = getCombatEntity(ctx.game.value, ctx.entityKey); const entity = getCombatEntity(ctx.game.value, ctx.entityId);
if (!entity || !entity.isAlive) return; if (!entity || !entity.isAlive) return;
const spike = entity.effects.spike?.stacks ?? 0; const spike = entity.effects.spike?.stacks ?? 0;
if (spike > 0 && ctx.sourceEntityKey) { if (spike > 0 && ctx.sourceEntityId) {
await triggers.onDamage.execute(ctx.game, { await triggers.onDamage.execute(ctx.game, {
entityKey: ctx.sourceEntityKey, entityId: ctx.sourceEntityId,
amount: spike, amount: spike,
sourceEntityKey: ctx.entityKey, sourceEntityId: ctx.entityId,
}); });
} }
}); });
// energyDrain: player loses energy when enemy takes damage // energyDrain: player loses energy when enemy takes damage
triggers.onDamage.use(async (ctx, next) => { triggers.onDamage.use(async (ctx, next) => {
const entity = getCombatEntity(ctx.game.value, ctx.entityKey); const entity = getCombatEntity(ctx.game.value, ctx.entityId);
if (!entity) return; if (!entity) return;
const energyDrain = entity.effects.energyDrain?.stacks ?? 0; const energyDrain = entity.effects.energyDrain?.stacks ?? 0;
if (energyDrain > 0 && ctx.entityKey !== "player") { if (energyDrain > 0 && ctx.entityId !== "player") {
const dealt = Math.min( const dealt = Math.min(
Math.max(0, entity.hp), Math.max(0, entity.hp),
ctx.amount - (ctx.prevented ?? 0), ctx.amount - (ctx.prevented ?? 0),
@ -97,7 +97,7 @@ export function addDamageTriggers(triggers: Triggers) {
// molt: enemy flees if molt >= maxHp // molt: enemy flees if molt >= maxHp
triggers.onDamage.use(async (ctx, next) => { triggers.onDamage.use(async (ctx, next) => {
const entity = getCombatEntity(ctx.game.value, ctx.entityKey); const entity = getCombatEntity(ctx.game.value, ctx.entityId);
if (!entity || !entity.isAlive) { if (!entity || !entity.isAlive) {
await next(); await next();
return; return;
@ -106,7 +106,7 @@ export function addDamageTriggers(triggers: Triggers) {
const molt = entity.effects.molt?.stacks ?? 0; const molt = entity.effects.molt?.stacks ?? 0;
if (molt >= entity.maxHp) { if (molt >= entity.maxHp) {
await ctx.game.produceAsync((draft) => { await ctx.game.produceAsync((draft) => {
const e = draft.enemies.find((en) => en.id === ctx.entityKey); const e = draft.enemies.find((en) => en.id === ctx.entityId);
if (e) { if (e) {
e.isAlive = false; e.isAlive = false;
e.hp = 0; e.hp = 0;
@ -124,7 +124,7 @@ export function addDamageTriggers(triggers: Triggers) {
// aim: double damage, lose aim on damage // aim: double damage, lose aim on damage
triggers.onDamage.use(async (ctx, next) => { triggers.onDamage.use(async (ctx, next) => {
if (ctx.sourceEntityKey === "player") { if (ctx.sourceEntityId === "player") {
const player = ctx.game.value.player; const player = ctx.game.value.player;
const aim = player.effects.aim?.stacks ?? 0; const aim = player.effects.aim?.stacks ?? 0;
if (aim > 0) { if (aim > 0) {
@ -136,7 +136,7 @@ export function addDamageTriggers(triggers: Triggers) {
// roll: consume 10 roll per 10 damage // roll: consume 10 roll per 10 damage
triggers.onDamage.use(async (ctx, next) => { triggers.onDamage.use(async (ctx, next) => {
if (ctx.sourceEntityKey === "player") { if (ctx.sourceEntityId === "player") {
const player = ctx.game.value.player; const player = ctx.game.value.player;
const roll = player.effects.roll?.stacks ?? 0; const roll = player.effects.roll?.stacks ?? 0;
if (roll >= 10) { if (roll >= 10) {
@ -152,8 +152,8 @@ export function addDamageTriggers(triggers: Triggers) {
// tailSting: bonus damage on attack // tailSting: bonus damage on attack
triggers.onDamage.use(async (ctx, next) => { triggers.onDamage.use(async (ctx, next) => {
if (ctx.sourceEntityKey && ctx.sourceEntityKey !== "player") { if (ctx.sourceEntityId && ctx.sourceEntityId !== "player") {
const attacker = getCombatEntity(ctx.game.value, ctx.sourceEntityKey); const attacker = getCombatEntity(ctx.game.value, ctx.sourceEntityId);
if (attacker) { if (attacker) {
const tailSting = attacker.effects.tailSting?.stacks ?? 0; const tailSting = attacker.effects.tailSting?.stacks ?? 0;
if (tailSting > 0) { if (tailSting > 0) {
@ -166,7 +166,7 @@ export function addDamageTriggers(triggers: Triggers) {
// charge: double damage dealt/received, consume equal charge // charge: double damage dealt/received, consume equal charge
triggers.onDamage.use(async (ctx, next) => { triggers.onDamage.use(async (ctx, next) => {
const entity = getCombatEntity(ctx.game.value, ctx.entityKey); const entity = getCombatEntity(ctx.game.value, ctx.entityId);
if (entity) { if (entity) {
const charge = entity.effects.charge?.stacks ?? 0; const charge = entity.effects.charge?.stacks ?? 0;
if (charge > 0) { if (charge > 0) {
@ -178,20 +178,20 @@ export function addDamageTriggers(triggers: Triggers) {
ctx.amount += dealt; ctx.amount += dealt;
if (consumed > 0) { if (consumed > 0) {
await ctx.game.produceAsync((draft) => { await ctx.game.produceAsync((draft) => {
const e = getCombatEntity(draft, ctx.entityKey); const e = getCombatEntity(draft, ctx.entityId);
if (e) addEntityEffect(e, findEffect("charge"), -consumed); if (e) addEntityEffect(e, findEffect("charge"), -consumed);
}); });
} }
} }
} }
if (ctx.sourceEntityKey) { if (ctx.sourceEntityId) {
const attacker = getCombatEntity(ctx.game.value, ctx.sourceEntityKey); const attacker = getCombatEntity(ctx.game.value, ctx.sourceEntityId);
if (attacker) { if (attacker) {
const charge = attacker.effects.charge?.stacks ?? 0; const charge = attacker.effects.charge?.stacks ?? 0;
if (charge > 0) { if (charge > 0) {
const baseAmount = ctx.amount; const baseAmount = ctx.amount;
const targetEntity = getCombatEntity(ctx.game.value, ctx.entityKey); const targetEntity = getCombatEntity(ctx.game.value, ctx.entityId);
const dealt = Math.min( const dealt = Math.min(
Math.max(0, targetEntity?.hp ?? 0), Math.max(0, targetEntity?.hp ?? 0),
baseAmount - (ctx.prevented ?? 0), baseAmount - (ctx.prevented ?? 0),
@ -200,7 +200,7 @@ export function addDamageTriggers(triggers: Triggers) {
ctx.amount += dealt; ctx.amount += dealt;
if (consumed > 0) { if (consumed > 0) {
await ctx.game.produceAsync((draft) => { await ctx.game.produceAsync((draft) => {
const a = getCombatEntity(draft, ctx.sourceEntityKey!); const a = getCombatEntity(draft, ctx.sourceEntityId!);
if (a) addEntityEffect(a, findEffect("charge"), -consumed); if (a) addEntityEffect(a, findEffect("charge"), -consumed);
}); });
} }

View File

@ -93,10 +93,10 @@ export function addInstantEffectTriggers(triggers: Triggers) {
triggers.onEffectApplied.use(async (ctx, next) => { triggers.onEffectApplied.use(async (ctx, next) => {
if (ctx.effect.id === "attack") { if (ctx.effect.id === "attack") {
await triggers.onDamage.execute(ctx.game, { await triggers.onDamage.execute(ctx.game, {
entityKey: ctx.entityKey, entityId: ctx.entityId,
amount: ctx.stacks, amount: ctx.stacks,
sourceEntityKey: sourceEntityId:
(ctx.sourceEntityKey ?? ctx.entityKey === "player") (ctx.sourceEntityId ?? ctx.entityId === "player")
? undefined ? undefined
: "player", : "player",
}); });

View File

@ -19,7 +19,7 @@ export function addTurnStartTriggers(triggers: Triggers) {
// discard: random discard at turn start // discard: random discard at turn start
triggers.onTurnStart.use(async (ctx, next) => { triggers.onTurnStart.use(async (ctx, next) => {
if (ctx.entityKey !== "player") { if (ctx.entityId !== "player") {
await next(); await next();
return; return;
} }
@ -56,7 +56,7 @@ export function addTurnStartTriggers(triggers: Triggers) {
// energyNext: gain energy next turn // energyNext: gain energy next turn
triggers.onTurnStart.use(async (ctx, next) => { triggers.onTurnStart.use(async (ctx, next) => {
if (ctx.entityKey !== "player") { if (ctx.entityId !== "player") {
await next(); await next();
return; return;
} }
@ -74,7 +74,7 @@ export function addTurnStartTriggers(triggers: Triggers) {
// drawNext: draw extra cards next turn // drawNext: draw extra cards next turn
triggers.onTurnStart.use(async (ctx, next) => { triggers.onTurnStart.use(async (ctx, next) => {
if (ctx.entityKey !== "player") { if (ctx.entityId !== "player") {
await next(); await next();
return; return;
} }

View File

@ -19,33 +19,33 @@ import { EffectData } from "@/samples/slay-the-spire-like/system/types";
type TriggerTypes = { type TriggerTypes = {
onCombatStart: {}; onCombatStart: {};
onTurnStart: { entityKey: "player" | string }; onTurnStart: { entityId: "player" | string };
onTurnEnd: { entityKey: "player" | string }; onTurnEnd: { entityId: "player" | string };
onShuffle: {}; onShuffle: {};
onCardPlayed: { onCardPlayed: {
cardId: string; cardId: string;
targetId?: string; targetId?: string;
sourceEntityKey?: "player" | string; sourceEntityId?: "player" | string;
}; };
onCardDiscarded: { cardId: string; sourceEntityKey?: "player" | string }; onCardDiscarded: { cardId: string; sourceEntityId?: "player" | string };
onCardDrawn: { cardId: string; sourceEntityKey?: "player" | string }; onCardDrawn: { cardId: string; sourceEntityId?: "player" | string };
onDraw: { count: number }; onDraw: { count: number };
onEffectApplied: { onEffectApplied: {
effect: EffectData; effect: EffectData;
entityKey: "player" | string; entityId: "player" | string;
stacks: number; stacks: number;
cardId?: string; cardId?: string;
sourceEntityKey?: "player" | string; sourceEntityId?: "player" | string;
targetId?: string; targetId?: string;
}; };
onHpChange: { entityKey: "player" | string; amount: number }; onHpChange: { entityId: "player" | string; amount: number };
onDamage: { onDamage: {
entityKey: "player" | string; entityId: "player" | string;
amount: number; amount: number;
prevented?: number; prevented?: number;
sourceEntityKey?: "player" | string; sourceEntityId?: "player" | string;
}; };
onEnemyIntent: { enemyId: string; sourceEntityKey?: "player" | string }; onEnemyIntent: { enemyId: string; sourceEntityId?: "player" | string };
onIntentUpdate: { enemyId: string }; onIntentUpdate: { enemyId: string };
}; };
@ -57,13 +57,13 @@ export function createTriggers(run: IRunContext) {
}), }),
onTurnStart: createTrigger("onTurnStart", async (ctx) => { onTurnStart: createTrigger("onTurnStart", async (ctx) => {
await ctx.game.produceAsync((draft) => { await ctx.game.produceAsync((draft) => {
const entity = getCombatEntity(draft, ctx.entityKey); const entity = getCombatEntity(draft, ctx.entityId);
if (entity) onEntityEffectUpkeep(entity); if (entity) onEntityEffectUpkeep(entity);
if (entity === draft.player) onPlayerItemEffectUpkeep(draft.player); if (entity === draft.player) onPlayerItemEffectUpkeep(draft.player);
}); });
}), }),
onTurnEnd: createTrigger("onTurnEnd", async (ctx) => { onTurnEnd: createTrigger("onTurnEnd", async (ctx) => {
if (ctx.entityKey !== "player") return; if (ctx.entityId !== "player") return;
const { regions } = ctx.game.value.player.deck; const { regions } = ctx.game.value.player.deck;
for (const cardId of Object.values(regions.hand.childIds)) { for (const cardId of Object.values(regions.hand.childIds)) {
await triggers.onCardDiscarded.execute(ctx.game, { cardId }); await triggers.onCardDiscarded.execute(ctx.game, { cardId });
@ -97,7 +97,7 @@ export function createTriggers(run: IRunContext) {
}); });
const { cards, regions } = ctx.game.value.player.deck; const { cards, regions } = ctx.game.value.player.deck;
const card = cards[ctx.cardId]; const card = cards[ctx.cardId];
const source = ctx.sourceEntityKey ?? "player"; const source = ctx.sourceEntityId ?? "player";
for (const { trigger, target, effects } of card.cardData.effects) { for (const { trigger, target, effects } of card.cardData.effects) {
if (trigger !== "onPlay") continue; if (trigger !== "onPlay") continue;
for (const [effect, stacks] of effects) for (const [effect, stacks] of effects)
@ -109,10 +109,10 @@ export function createTriggers(run: IRunContext) {
)) ))
await triggers.onEffectApplied.execute(ctx.game, { await triggers.onEffectApplied.execute(ctx.game, {
effect, effect,
entityKey: entity.id, entityId: entity.id,
stacks, stacks,
cardId: ctx.cardId, cardId: ctx.cardId,
sourceEntityKey: source, sourceEntityId: source,
targetId: ctx.targetId, targetId: ctx.targetId,
}); });
} }
@ -125,7 +125,7 @@ export function createTriggers(run: IRunContext) {
}); });
const { cards, regions } = ctx.game.value.player.deck; const { cards, regions } = ctx.game.value.player.deck;
const card = cards[ctx.cardId]; const card = cards[ctx.cardId];
const source = ctx.sourceEntityKey ?? "player"; const source = ctx.sourceEntityId ?? "player";
for (const { trigger, target, effects } of card.cardData.effects) { for (const { trigger, target, effects } of card.cardData.effects) {
if (trigger !== "onDiscard") continue; if (trigger !== "onDiscard") continue;
for (const [effect, stacks] of effects) for (const [effect, stacks] of effects)
@ -137,10 +137,10 @@ export function createTriggers(run: IRunContext) {
)) ))
await triggers.onEffectApplied.execute(ctx.game, { await triggers.onEffectApplied.execute(ctx.game, {
effect, effect,
entityKey: entity.id, entityId: entity.id,
stacks, stacks,
cardId: ctx.cardId, cardId: ctx.cardId,
sourceEntityKey: source, sourceEntityId: source,
}); });
} }
}), }),
@ -151,7 +151,7 @@ export function createTriggers(run: IRunContext) {
}); });
const { cards, regions } = ctx.game.value.player.deck; const { cards, regions } = ctx.game.value.player.deck;
const card = cards[ctx.cardId]; const card = cards[ctx.cardId];
const source = ctx.sourceEntityKey ?? "player"; const source = ctx.sourceEntityId ?? "player";
for (const { trigger, target, effects } of card.cardData.effects) { for (const { trigger, target, effects } of card.cardData.effects) {
if (trigger !== "onDraw") continue; if (trigger !== "onDraw") continue;
for (const [effect, stacks] of effects) for (const [effect, stacks] of effects)
@ -163,10 +163,10 @@ export function createTriggers(run: IRunContext) {
)) ))
await triggers.onEffectApplied.execute(ctx.game, { await triggers.onEffectApplied.execute(ctx.game, {
effect, effect,
entityKey: entity.id, entityId: entity.id,
stacks, stacks,
cardId: ctx.cardId, cardId: ctx.cardId,
sourceEntityKey: source, sourceEntityId: source,
}); });
} }
}), }),
@ -204,18 +204,18 @@ export function createTriggers(run: IRunContext) {
await ctx.game.produceAsync((draft) => { await ctx.game.produceAsync((draft) => {
const entity = const entity =
ctx.entityKey === "player" ctx.entityId === "player"
? draft.player ? draft.player
: draft.enemies.find((e) => e.id === ctx.entityKey); : draft.enemies.find((e) => e.id === ctx.entityId);
if (entity) addEntityEffect(entity, ctx.effect, ctx.stacks); if (entity) addEntityEffect(entity, ctx.effect, ctx.stacks);
}); });
}), }),
onHpChange: createTrigger("onHpChange", async (ctx) => { onHpChange: createTrigger("onHpChange", async (ctx) => {
await ctx.game.produceAsync((draft) => { await ctx.game.produceAsync((draft) => {
const entity = const entity =
ctx.entityKey === "player" ctx.entityId === "player"
? draft.player ? draft.player
: draft.enemies.find((e) => e.id === ctx.entityKey); : draft.enemies.find((e) => e.id === ctx.entityId);
if (!entity) return; if (!entity) return;
entity.hp += ctx.amount; entity.hp += ctx.amount;
entity.isAlive = entity.hp > 0; entity.isAlive = entity.hp > 0;
@ -229,9 +229,9 @@ export function createTriggers(run: IRunContext) {
}), }),
onDamage: createTrigger("onDamage", async (ctx) => { onDamage: createTrigger("onDamage", async (ctx) => {
const entity = const entity =
ctx.entityKey === "player" ctx.entityId === "player"
? ctx.game.value.player ? ctx.game.value.player
: ctx.game.value.enemies.find((e) => e.id === ctx.entityKey); : ctx.game.value.enemies.find((e) => e.id === ctx.entityId);
if (!entity || !entity.isAlive) return; if (!entity || !entity.isAlive) return;
const dealt = Math.min( const dealt = Math.min(
Math.max(0, entity.hp), Math.max(0, entity.hp),
@ -241,7 +241,7 @@ export function createTriggers(run: IRunContext) {
onEntityPostureDamage(entity, dealt); onEntityPostureDamage(entity, dealt);
}); });
await triggers.onHpChange.execute(ctx.game, { await triggers.onHpChange.execute(ctx.game, {
entityKey: ctx.entityKey, entityId: ctx.entityId,
amount: -dealt, amount: -dealt,
}); });
}), }),
@ -252,7 +252,7 @@ export function createTriggers(run: IRunContext) {
const intent = enemy.currentIntent; const intent = enemy.currentIntent;
if (!intent) return; if (!intent) return;
const source = ctx.sourceEntityKey ?? enemy.id; const source = ctx.sourceEntityId ?? enemy.id;
for (const [target, effect, stacks] of intent.effects) { for (const [target, effect, stacks] of intent.effects) {
for (const entity of getEffectTargets( for (const entity of getEffectTargets(
target, target,
@ -262,9 +262,9 @@ export function createTriggers(run: IRunContext) {
)) ))
await triggers.onEffectApplied.execute(ctx.game, { await triggers.onEffectApplied.execute(ctx.game, {
effect, effect,
entityKey: entity.id, entityId: entity.id,
stacks, stacks,
sourceEntityKey: source, sourceEntityId: source,
}); });
} }
}), }),
@ -298,7 +298,7 @@ export function createStartWith(
try { try {
while (true) { while (true) {
await triggers.onTurnStart.execute(game, { entityKey: "player" }); await triggers.onTurnStart.execute(game, { entityId: "player" });
while (true) { while (true) {
const action = await promptMainAction(game, run); const action = await promptMainAction(game, run);
if (action.action === "end-turn") break; if (action.action === "end-turn") break;
@ -306,17 +306,17 @@ export function createStartWith(
await triggers.onCardPlayed.execute(game, action); await triggers.onCardPlayed.execute(game, action);
} }
} }
await triggers.onTurnEnd.execute(game, { entityKey: "player" }); await triggers.onTurnEnd.execute(game, { entityId: "player" });
for (const enemy of getAliveEnemies(game.value)) { for (const enemy of getAliveEnemies(game.value)) {
await triggers.onTurnStart.execute(game, { entityKey: enemy.id }); await triggers.onTurnStart.execute(game, { entityId: enemy.id });
} }
for (const enemy of getAliveEnemies(game.value)) { for (const enemy of getAliveEnemies(game.value)) {
await triggers.onEnemyIntent.execute(game, { enemyId: enemy.id }); await triggers.onEnemyIntent.execute(game, { enemyId: enemy.id });
await triggers.onIntentUpdate.execute(game, { enemyId: enemy.id }); await triggers.onIntentUpdate.execute(game, { enemyId: enemy.id });
} }
for (const enemy of getAliveEnemies(game.value)) { for (const enemy of getAliveEnemies(game.value)) {
await triggers.onTurnEnd.execute(game, { entityKey: enemy.id }); await triggers.onTurnEnd.execute(game, { entityId: enemy.id });
} }
} }
} catch (e) { } catch (e) {

View File

@ -205,9 +205,9 @@ describe("desert triggers", () => {
await triggers.onEffectApplied.execute(ctx, { await triggers.onEffectApplied.execute(ctx, {
effect: attackEffect, effect: attackEffect,
entityKey: "player", entityId: "player",
stacks: 5, stacks: 5,
sourceEntityKey: "enemy-0", sourceEntityId: "enemy-0",
}); });
expect(ctx.value.player.hp).toBe(25); expect(ctx.value.player.hp).toBe(25);
@ -223,7 +223,7 @@ describe("desert triggers", () => {
await triggers.onEffectApplied.execute(ctx, { await triggers.onEffectApplied.execute(ctx, {
effect: drawEffect, effect: drawEffect,
entityKey: "player", entityId: "player",
stacks: 2, stacks: 2,
}); });
@ -239,7 +239,7 @@ describe("desert triggers", () => {
const initialEnergy = ctx.value.player.energy; const initialEnergy = ctx.value.player.energy;
await triggers.onEffectApplied.execute(ctx, { await triggers.onEffectApplied.execute(ctx, {
effect: gainEnergyEffect, effect: gainEnergyEffect,
entityKey: "player", entityId: "player",
stacks: 2, stacks: 2,
}); });
@ -261,7 +261,7 @@ describe("desert triggers", () => {
await triggers.onEffectApplied.execute(ctx, { await triggers.onEffectApplied.execute(ctx, {
effect: removeWoundEffect, effect: removeWoundEffect,
entityKey: "player", entityId: "player",
stacks: 2, stacks: 2,
}); });
@ -286,9 +286,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "player", entityId: "player",
amount: 8, amount: 8,
sourceEntityKey: "enemy-0", sourceEntityId: "enemy-0",
}); });
expect(ctx.value.player.hp).toBe(27); expect(ctx.value.player.hp).toBe(27);
@ -312,9 +312,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "player", entityId: "player",
amount: 8, amount: 8,
sourceEntityKey: "enemy-0", sourceEntityId: "enemy-0",
}); });
expect(ctx.value.player.hp).toBe(25); expect(ctx.value.player.hp).toBe(25);
@ -334,9 +334,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "player", entityId: "player",
amount: 5, amount: 5,
sourceEntityKey: "enemy-0", sourceEntityId: "enemy-0",
}); });
expect(ctx.value.player.hp).toBe(23); expect(ctx.value.player.hp).toBe(23);
@ -359,9 +359,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "仙人掌怪-0", entityId: "仙人掌怪-0",
amount: 5, amount: 5,
sourceEntityKey: "player", sourceEntityId: "player",
}); });
expect(ctx.value.player.hp).toBe(27); expect(ctx.value.player.hp).toBe(27);
@ -402,9 +402,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "幼沙虫-0", entityId: "幼沙虫-0",
amount: 5, amount: 5,
sourceEntityKey: "player", sourceEntityId: "player",
}); });
expect(ctx.value.player.energy).toBe(2); expect(ctx.value.player.energy).toBe(2);
@ -429,9 +429,9 @@ describe("desert triggers", () => {
let threw = false; let threw = false;
try { try {
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "蜥蜴-0", entityId: "蜥蜴-0",
amount: 1, amount: 1,
sourceEntityKey: "player", sourceEntityId: "player",
}); });
} catch (e) { } catch (e) {
threw = true; threw = true;
@ -457,7 +457,7 @@ describe("desert triggers", () => {
draft.player.effects.discard = { data: discardEffect, stacks: 1 }; draft.player.effects.discard = { data: discardEffect, stacks: 1 };
}); });
await triggers.onTurnStart.execute(ctx, { entityKey: "player" }); await triggers.onTurnStart.execute(ctx, { entityId: "player" });
expect(ctx.value.player.deck.regions.hand.childIds.length).toBe(2); expect(ctx.value.player.deck.regions.hand.childIds.length).toBe(2);
expect(ctx.value.player.deck.regions.discardPile.childIds.length).toBe(1); expect(ctx.value.player.deck.regions.discardPile.childIds.length).toBe(1);
@ -474,7 +474,7 @@ describe("desert triggers", () => {
draft.player.effects.defendNext = { data: defendNextEffect, stacks: 5 }; draft.player.effects.defendNext = { data: defendNextEffect, stacks: 5 };
}); });
await triggers.onTurnStart.execute(ctx, { entityKey: "player" }); await triggers.onTurnStart.execute(ctx, { entityId: "player" });
expect(ctx.value.player.effects.defend?.stacks).toBe(5); expect(ctx.value.player.effects.defend?.stacks).toBe(5);
expect(ctx.value.player.effects.defendNext).toBeUndefined(); expect(ctx.value.player.effects.defendNext).toBeUndefined();
@ -489,7 +489,7 @@ describe("desert triggers", () => {
draft.player.effects.energyNext = { data: energyNextEffect, stacks: 2 }; draft.player.effects.energyNext = { data: energyNextEffect, stacks: 2 };
}); });
await triggers.onTurnStart.execute(ctx, { entityKey: "player" }); await triggers.onTurnStart.execute(ctx, { entityId: "player" });
expect(ctx.value.player.energy).toBe(5); expect(ctx.value.player.energy).toBe(5);
expect(ctx.value.player.effects.energyNext).toBeUndefined(); expect(ctx.value.player.effects.energyNext).toBeUndefined();
@ -508,7 +508,7 @@ describe("desert triggers", () => {
draft.player.effects.drawNext = { data: drawNextEffect, stacks: 2 }; draft.player.effects.drawNext = { data: drawNextEffect, stacks: 2 };
}); });
await triggers.onTurnStart.execute(ctx, { entityKey: "player" }); await triggers.onTurnStart.execute(ctx, { entityId: "player" });
expect(ctx.value.player.deck.regions.hand.childIds.length).toBe(2); expect(ctx.value.player.deck.regions.hand.childIds.length).toBe(2);
expect(ctx.value.player.effects.drawNext).toBeUndefined(); expect(ctx.value.player.effects.drawNext).toBeUndefined();
@ -530,9 +530,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "仙人掌怪-0", entityId: "仙人掌怪-0",
amount: 5, amount: 5,
sourceEntityKey: "player", sourceEntityId: "player",
}); });
expect(ctx.value.enemies[0].hp).toBe(2); expect(ctx.value.enemies[0].hp).toBe(2);
@ -552,9 +552,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "仙人掌怪-0", entityId: "仙人掌怪-0",
amount: 5, amount: 5,
sourceEntityKey: "player", sourceEntityId: "player",
}); });
expect(ctx.value.enemies[0].hp).toBe(74); expect(ctx.value.enemies[0].hp).toBe(74);
@ -576,9 +576,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "player", entityId: "player",
amount: 5, amount: 5,
sourceEntityKey: "沙蝎-0", sourceEntityId: "沙蝎-0",
}); });
expect(ctx.value.player.hp).toBe(23); expect(ctx.value.player.hp).toBe(23);
@ -599,9 +599,9 @@ describe("desert triggers", () => {
}); });
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "player", entityId: "player",
amount: 5, amount: 5,
sourceEntityKey: "骑马枪手-0", sourceEntityId: "骑马枪手-0",
}); });
expect(ctx.value.player.hp).toBe(20); expect(ctx.value.player.hp).toBe(20);
@ -623,10 +623,10 @@ describe("desert triggers", () => {
await triggers.onEffectApplied.execute(ctx, { await triggers.onEffectApplied.execute(ctx, {
effect: crossbowEffect, effect: crossbowEffect,
entityKey: "player", entityId: "player",
stacks: 0, stacks: 0,
cardId: "crossbow-1", cardId: "crossbow-1",
sourceEntityKey: "player", sourceEntityId: "player",
targetId: "仙人掌怪-0", targetId: "仙人掌怪-0",
}); });
@ -647,7 +647,7 @@ describe("desert triggers", () => {
await triggers.onCardDiscarded.execute(ctx, { await triggers.onCardDiscarded.execute(ctx, {
cardId: "fatigue-1", cardId: "fatigue-1",
sourceEntityKey: "player", sourceEntityId: "player",
}); });
expect(ctx.value.enemies[0].hp).toBe(40); expect(ctx.value.enemies[0].hp).toBe(40);
@ -664,9 +664,9 @@ describe("desert triggers", () => {
const triggers = getTriggers(); const triggers = getTriggers();
await triggers.onDamage.execute(ctx, { await triggers.onDamage.execute(ctx, {
entityKey: "player", entityId: "player",
amount: 5, amount: 5,
sourceEntityKey: "秃鹫-0", sourceEntityId: "秃鹫-0",
}); });
const vultureEyeCards = Object.values(ctx.value.player.deck.cards).filter( const vultureEyeCards = Object.values(ctx.value.player.deck.cards).filter(