diff --git a/packages/frontend/src/components/boxes/ResearchBox.tsx b/packages/frontend/src/components/boxes/ResearchBox.tsx index f6d0a98..50c715a 100755 --- a/packages/frontend/src/components/boxes/ResearchBox.tsx +++ b/packages/frontend/src/components/boxes/ResearchBox.tsx @@ -36,6 +36,7 @@ const ResearchBox = ({ ); const baseCosts = baseTechCost[functionCallName]; + const isExo = functionCallName === 18; // Calculate the cumulative cost of the upgrade const upgradeCost = useMemo(() => { if (quantity > 0 && level != undefined) { @@ -44,12 +45,13 @@ const ResearchBox = ({ quantity, baseCosts.steel, baseCosts.quartz, - baseCosts.tritium + baseCosts.tritium, + isExo ); return cost; } return { steel: 0, quartz: 0, tritium: 0 }; - }, [level, quantity, baseCosts]); + }, [level, quantity, baseCosts, isExo]); const hasEnoughResources = calculEnoughResources( upgradeCost, diff --git a/packages/frontend/src/shared/utils/Formulas.ts b/packages/frontend/src/shared/utils/Formulas.ts index 205d37f..484504c 100644 --- a/packages/frontend/src/shared/utils/Formulas.ts +++ b/packages/frontend/src/shared/utils/Formulas.ts @@ -1,3 +1,5 @@ +import { baseTechCost } from '../../constants/costs'; + const GROWTH_FACTOR_LINEAR = 1.1; const GROWTH_FACTOR_QUARTZ = 1.6; const GROWTH_FACTOR_STEEL = 1.5; @@ -117,6 +119,13 @@ export function techCostFormula( return { steel, quartz, tritium }; } +export function exoTechFormula(level: number) { + const steel = Math.round(baseTechCost[18].steel * Math.pow(1.75, level)); + const quartz = Math.round(baseTechCost[18].quartz * Math.pow(1.75, level)); + const tritium = Math.round(baseTechCost[18].tritium * Math.pow(1.75, level)); + return { steel, quartz, tritium }; +} + export function calculateFleetLoss(timeSeconds: number): number { const decay = Math.exp(-0.02 * (timeSeconds / 60)); @@ -206,17 +215,20 @@ export const getCumulativeTechCost = ( quantity: number, baseSteelCost: number, baseQuartzCost: number, - baseTritiumCost: number + baseTritiumCost: number, + isExo: boolean ) => { const totalCost = { steel: 0, quartz: 0, tritium: 0 }; for (let i = 0; i < quantity; i++) { - const costAtLevel = techCostFormula( - level + i, - baseSteelCost, - baseQuartzCost, - baseTritiumCost - ); + const costAtLevel = isExo + ? exoTechFormula(level + i) + : techCostFormula( + level + i, + baseSteelCost, + baseQuartzCost, + baseTritiumCost + ); totalCost.steel += costAtLevel.steel; totalCost.quartz += costAtLevel.quartz;