feat: show effective production per generator with all bonuses
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 21s

New generatorEffectiveProduction() — applies prestige mult, tree mult,
nid boost, synergy, and convergence to per-generator production.

GeneratorShop now shows:
- Effective prod/s (green, with all bonuses)
- % share of total production
- Mini progress bar per generator
- When owned=0: shows effective prod per unit (so you see upgrade impact)
This commit is contained in:
2026-03-28 20:47:24 +01:00
parent 39921aa8fc
commit 9d27cb6648
2 changed files with 29 additions and 20 deletions

View File

@@ -575,20 +575,19 @@ export function generatorCost(gen: Generator, tree?: EvolutionNode[]): number {
return Math.max(1, Math.floor(base * (1 - reduction)));
}
// Production effective d'un seul générateur (avec tous les bonus appliqués)
export function generatorEffectiveProduction(gen: Generator, state: GameState): number {
if (gen.owned === 0) return 0;
const nidBoost = gen.id === "nid" ? getGeneratorBoostFromTree(state.evolutionTree) : 1;
const treeMultiplier = getProductionMultiplierFromTree(state.evolutionTree);
const synergyMult = getGeneratorSynergyMultiplier(state.evolutionTree, state.generators);
const convergenceBoost = getAllEffectsBoost(state.evolutionTree);
return gen.baseProduction * gen.owned * nidBoost * state.prestigeMultiplier * treeMultiplier * synergyMult * convergenceBoost;
}
// Production totale par seconde de tous les générateurs
export function totalProductionPerSecond(state: GameState): number {
const nidBoost = getGeneratorBoostFromTree(state.evolutionTree);
const synergyMult = getGeneratorSynergyMultiplier(state.evolutionTree, state.generators);
const base = state.generators.reduce(
(sum, gen) => {
const boost = gen.id === "nid" ? nidBoost : 1;
return sum + gen.baseProduction * gen.owned * boost;
},
0
);
const treeMultiplier = getProductionMultiplierFromTree(state.evolutionTree);
const convergenceBoost = getAllEffectsBoost(state.evolutionTree);
return base * state.prestigeMultiplier * treeMultiplier * synergyMult * convergenceBoost;
return state.generators.reduce((sum, gen) => sum + generatorEffectiveProduction(gen, state), 0);
}
// Lazy calculation : ressources accumulées depuis lastTick