diff --git a/Frontend/src/lib/components/ClickPanel.svelte b/Frontend/src/lib/components/ClickPanel.svelte
index 7dc17a3..6cbfad5 100644
--- a/Frontend/src/lib/components/ClickPanel.svelte
+++ b/Frontend/src/lib/components/ClickPanel.svelte
@@ -19,7 +19,10 @@
Gain par clic
- x{b.prestigeMult.toFixed(1)} prestige · x{b.treeMult.toFixed(0)} arbre · x{b.prodBonus.toFixed(1)} prod
+ x{b.prestigeMult.toFixed(1)} prestige · x{b.treeMult.toFixed(0)} arbre · x{b.genBonus.toFixed(1)} infra
+
+
+ {b.genTypes} types (+{b.genTypes * 2}) · {b.genTotal} unites (+{(b.genTotal * 0.05).toFixed(1)})
{formatNumber(b.total)}
diff --git a/Frontend/src/lib/core/economy.ts b/Frontend/src/lib/core/economy.ts
index fcc3122..6c378e0 100644
--- a/Frontend/src/lib/core/economy.ts
+++ b/Frontend/src/lib/core/economy.ts
@@ -611,12 +611,18 @@ export function applyIdleGains(state: GameState, now: number): GameState {
};
}
-// Gain par clic — scale avec la production passive (1% de prod/s en bonus)
+// Bonus clic depuis les générateurs (diversité + quantité)
+export function getGeneratorClickBonus(generators: Generator[]): number {
+ const typesOwned = generators.filter((g) => g.owned > 0).length;
+ const totalOwned = generators.reduce((sum, g) => sum + g.owned, 0);
+ return 1 + typesOwned * 2 + totalOwned * 0.05;
+}
+
+// Gain par clic — scaling propre : base × prestige × arbre × generateurs
export function getClickGain(state: GameState): number {
const treeClickMult = getClickMultiplierFromTree(state.evolutionTree);
- const base = state.clickMultiplier * state.prestigeMultiplier * treeClickMult;
- const prodBonus = 1 + totalProductionPerSecond(state) * 0.01;
- return Math.floor(base * prodBonus);
+ const genBonus = getGeneratorClickBonus(state.generators);
+ return Math.floor(state.clickMultiplier * state.prestigeMultiplier * treeClickMult * genBonus);
}
// Breakdown complet du clic (pour affichage cockpit)
@@ -624,7 +630,9 @@ export interface ClickBreakdown {
base: number;
prestigeMult: number;
treeMult: number;
- prodBonus: number; // multiplicateur depuis prod passive (1 + prod/s × 0.01)
+ genBonus: number; // multiplicateur depuis generateurs (types + quantite)
+ genTypes: number; // types possedes
+ genTotal: number; // total unites possedees
total: number; // gain par clic (floor)
doubleChance: number;
critChance: number;
@@ -636,15 +644,16 @@ export function getClickBreakdown(state: GameState): ClickBreakdown {
const base = state.clickMultiplier;
const prestigeMult = state.prestigeMultiplier;
const treeMult = getClickMultiplierFromTree(state.evolutionTree);
- const pps = totalProductionPerSecond(state);
- const prodBonus = 1 + pps * 0.01;
- const total = Math.floor(base * prestigeMult * treeMult * prodBonus);
+ const genBonus = getGeneratorClickBonus(state.generators);
+ const genTypes = state.generators.filter((g) => g.owned > 0).length;
+ const genTotal = state.generators.reduce((sum, g) => sum + g.owned, 0);
+ const total = Math.floor(base * prestigeMult * treeMult * genBonus);
const doubleChance = getDoubleClickChance(state.evolutionTree);
const critChance = getCritClickChance(state.evolutionTree);
const autoClicksPerSec = getAutoClicksPerSecond(state.evolutionTree);
const effectivePerSec = autoClicksPerSec * total;
- return { base, prestigeMult, treeMult, prodBonus, total, doubleChance, critChance, autoClicksPerSec, effectivePerSec };
+ return { base, prestigeMult, treeMult, genBonus, genTypes, genTotal, total, doubleChance, critChance, autoClicksPerSec, effectivePerSec };
}
export interface ClickResult {