From 1aac3416faa2b59c5dbc8c010855d31ea72b5a2c Mon Sep 17 00:00:00 2001 From: Bastian Wagner Date: Thu, 20 Aug 2026 23:10:47 +0200 Subject: [PATCH] fix(combat): clear the monster's pending action once it is defeated --- apps/api/src/combat/combat-engine.service.spec.ts | 1 + apps/api/src/combat/combat-engine.service.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/api/src/combat/combat-engine.service.spec.ts b/apps/api/src/combat/combat-engine.service.spec.ts index 492f72b..a33fcc0 100644 --- a/apps/api/src/combat/combat-engine.service.spec.ts +++ b/apps/api/src/combat/combat-engine.service.spec.ts @@ -252,6 +252,7 @@ describe('CombatEngineService', () => { expect(result.state.status).toBe(CombatStatus.WON); expect(result.state.player.currentHp).toBe(100); + expect(result.state.monster.stats.pendingAction).toBeUndefined(); expect(result.events).toEqual([ { source: Combatant.PLAYER, target: Combatant.MONSTER, type: CombatEventType.DAMAGE, amount: 14 }, { source: Combatant.PLAYER, target: Combatant.MONSTER, type: CombatEventType.COMBAT_WON }, diff --git a/apps/api/src/combat/combat-engine.service.ts b/apps/api/src/combat/combat-engine.service.ts index 17ec90f..ced7621 100644 --- a/apps/api/src/combat/combat-engine.service.ts +++ b/apps/api/src/combat/combat-engine.service.ts @@ -124,7 +124,8 @@ export class CombatEngineService { ): CombatEngineResult { if (monster.currentHp <= 0) { events.push({ source: Combatant.PLAYER, target: Combatant.MONSTER, type: CombatEventType.COMBAT_WON }); - return { state: { ...state, player, monster, status: CombatStatus.WON }, events }; + const defeatedMonster = { ...monster, stats: { ...monster.stats, pendingAction: undefined } }; + return { state: { ...state, player, monster: defeatedMonster, status: CombatStatus.WON }, events }; } if (!interrupted) {