From 1a99e1c362e0fe399a17972f86fa3b8bb3d70330 Mon Sep 17 00:00:00 2001 From: Admin Date: Fri, 18 Sep 2026 01:15:37 +0000 Subject: [PATCH] Add per-projectile player damage reducer --- src/game-logic.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/game-logic.js b/src/game-logic.js index 32b1831..4fd262f 100644 --- a/src/game-logic.js +++ b/src/game-logic.js @@ -111,3 +111,24 @@ export const reducePlayerVolleyHits = ({ gameOver: nextHull <= 0, }; }; + +export const reducePlayerProjectileHits = ({ + hull, + hits, + maxHull = PLAYER_MAX_HULL, + fallbackDamage = DEFAULT_PIRATE_SHOT_DAMAGE, +}) => { + const currentHull = Number.isFinite(hull) ? hull : maxHull; + const totalDamage = hits.reduce( + (sum, hit) => sum + normalizePlayerDamage(hit?.damage, fallbackDamage), + 0, + ); + const nextHull = Math.max(0, currentHull - totalDamage); + + return { + hull: nextHull, + totalDamage, + appliedHits: hits.length, + gameOver: nextHull <= 0, + }; +};