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, + }; +};