Test repeated per-projectile player damage

This commit is contained in:
Admin 2026-09-18 01:16:14 +00:00
parent 564c6a82b5
commit 0755d0820c

View File

@ -8,6 +8,7 @@ import {
normalizePlayerDamage, normalizePlayerDamage,
processQueuedPlayerHits, processQueuedPlayerHits,
reducePlayerHitQueue, reducePlayerHitQueue,
reducePlayerProjectileHits,
reducePlayerVolleyHits, reducePlayerVolleyHits,
} from '../src/game-logic.js'; } from '../src/game-logic.js';
@ -202,3 +203,40 @@ test('different pirate volleys can both damage even when processed together', ()
assert.equal(result.acceptedHits.length, 2); assert.equal(result.acceptedHits.length, 2);
assert.equal(result.ignoredHits.length, 0); assert.equal(result.ignoredHits.length, 0);
}); });
test('every new pirate projectile can damage once with no cross-shot suppression', () => {
const first = reducePlayerProjectileHits({
hull: 100,
hits: [{ damage: 6 }],
});
assert.equal(first.hull, 94);
assert.equal(first.totalDamage, 6);
assert.equal(first.appliedHits, 1);
assert.equal(first.gameOver, false);
const second = reducePlayerProjectileHits({
hull: first.hull,
hits: [{ damage: 6 }],
});
assert.equal(second.hull, 88);
assert.equal(second.totalDamage, 6);
assert.equal(second.appliedHits, 1);
assert.equal(second.gameOver, false);
});
test('multiple distinct pirate projectiles in the same frame all apply damage', () => {
const result = reducePlayerProjectileHits({
hull: 100,
hits: [
{ damage: 6 },
{ damage: 6 },
{ damage: 6 },
],
});
assert.equal(result.hull, 82);
assert.equal(result.totalDamage, 18);
assert.equal(result.appliedHits, 3);
});