Add first player hit lifecycle regression
This commit is contained in:
parent
39c13fbeb4
commit
dffba721e1
@ -6,6 +6,7 @@ import {
|
|||||||
PLAYER_HIT_COOLDOWN_MS,
|
PLAYER_HIT_COOLDOWN_MS,
|
||||||
PLAYER_MAX_HULL,
|
PLAYER_MAX_HULL,
|
||||||
normalizePlayerDamage,
|
normalizePlayerDamage,
|
||||||
|
processQueuedPlayerHits,
|
||||||
reducePlayerHitQueue,
|
reducePlayerHitQueue,
|
||||||
} from '../src/game-logic.js';
|
} from '../src/game-logic.js';
|
||||||
|
|
||||||
@ -24,6 +25,43 @@ test('first pirate hit removes exactly the default damage and does not end the g
|
|||||||
assert.equal(result.gameOver, false);
|
assert.equal(result.gameOver, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('actual queued first player hit destroys the projectile, applies 6 damage, and leaves gameplay active', () => {
|
||||||
|
const shot = {
|
||||||
|
active: true,
|
||||||
|
destroyed: false,
|
||||||
|
destroy() {
|
||||||
|
this.destroyed = true;
|
||||||
|
this.active = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const firstFrame = processQueuedPlayerHits({
|
||||||
|
hull: PLAYER_MAX_HULL,
|
||||||
|
lastHitAt: -Infinity,
|
||||||
|
now: 1000,
|
||||||
|
hits: [{ shot, damage: DEFAULT_PIRATE_SHOT_DAMAGE }],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(shot.destroyed, true);
|
||||||
|
assert.equal(shot.active, false);
|
||||||
|
assert.equal(firstFrame.hull, 94);
|
||||||
|
assert.equal(firstFrame.appliedHits, 1);
|
||||||
|
assert.equal(firstFrame.ignoredHits, 0);
|
||||||
|
assert.equal(firstFrame.gameOver, false);
|
||||||
|
|
||||||
|
const followingFrame = processQueuedPlayerHits({
|
||||||
|
hull: firstFrame.hull,
|
||||||
|
lastHitAt: firstFrame.lastHitAt,
|
||||||
|
now: 1016,
|
||||||
|
hits: [],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(followingFrame.hull, 94);
|
||||||
|
assert.equal(followingFrame.gameOver, false);
|
||||||
|
assert.equal(followingFrame.appliedHits, 0);
|
||||||
|
});
|
||||||
|
|
||||||
test('three cannonballs arriving in one broadside only apply one hull hit', () => {
|
test('three cannonballs arriving in one broadside only apply one hull hit', () => {
|
||||||
const result = reducePlayerHitQueue({
|
const result = reducePlayerHitQueue({
|
||||||
hull: 100,
|
hull: 100,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user