test(combat): cover DEFEND mitigating a resolving Heavy Attack
This commit is contained in:
@@ -266,4 +266,24 @@ describe('CombatEngineService', () => {
|
|||||||
|
|
||||||
expect(first).toEqual(second);
|
expect(first).toEqual(second);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('DEFEND mitigates a resolving Heavy Attack by half', () => {
|
||||||
|
const state = baseState({
|
||||||
|
monster: {
|
||||||
|
currentHp: 45,
|
||||||
|
maxHp: 45,
|
||||||
|
stats: { attack: 5, armor: 0, pendingAction: 'HEAVY_ATTACK' },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const result = engine.resolveAction(state, { action: CombatAction.DEFEND });
|
||||||
|
|
||||||
|
// raw = 5; mitigated = 4.545...; heavy * 1.6 = 7.27; * defend 0.5 = 3.636 -> rounds to 4
|
||||||
|
expect(result.events).toEqual([
|
||||||
|
{ source: Combatant.PLAYER, target: Combatant.PLAYER, type: CombatEventType.DEFEND },
|
||||||
|
{ source: Combatant.MONSTER, target: Combatant.PLAYER, type: CombatEventType.DAMAGE, amount: 4 },
|
||||||
|
]);
|
||||||
|
expect(result.state.monster.stats.pendingAction).toBeUndefined();
|
||||||
|
expect(result.state.player.currentHp).toBe(100 - 4);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user