diff --git a/Frontend/src/lib/components/ClickPanel.svelte b/Frontend/src/lib/components/ClickPanel.svelte new file mode 100644 index 0000000..2e2bcea --- /dev/null +++ b/Frontend/src/lib/components/ClickPanel.svelte @@ -0,0 +1,83 @@ + + + + +
+
+ Gain par clic + base {b.base} × prestige x{b.prestigeMult.toFixed(1)} × arbre x{b.treeMult.toFixed(1)} +
+ {formatNumber(b.total)} +
+ + +
+
+ Double Ponte + + {#if b.doubleChance > 0} + {(b.doubleChance * 100).toFixed(0)}% chance × 2 tetards + {:else} + Branche Ponte — "Double Ponte" (5 ADN) + {/if} + +
+ {#if b.doubleChance > 0} + {(b.doubleChance * 100).toFixed(0)}% + {:else} + + {/if} +
+ + +
+
+ Ponte Critique + + {#if b.critChance > 0} + {(b.critChance * 100).toFixed(0)}% chance × 10 tetards + {:else} + Branche Ponte — "Ponte Critique" (20 ADN) + {/if} + +
+ {#if b.critChance > 0} + {(b.critChance * 100).toFixed(0)}% + {:else} + + {/if} +
+ + +
+
+ Auto-Ponte + + {#if b.autoClicksPerSec > 0} + {b.autoClicksPerSec.toFixed(1)}/s × {formatNumber(b.total)} = {formatNumber(b.effectivePerSec)}/s + {:else} + Capstone Ponte — "Ponte Automatique" (200 ADN) + {/if} + +
+ {#if b.autoClicksPerSec > 0} + {formatNumber(b.effectivePerSec)}/s + {:else} + + {/if} +
+ + + {#if b.treeMult <= 1} +
+ Depense ton ADN dans la branche Ponte pour booster tes clics +
+ {/if} +
diff --git a/Frontend/src/lib/core/economy.ts b/Frontend/src/lib/core/economy.ts index e8312cb..efecc1d 100644 --- a/Frontend/src/lib/core/economy.ts +++ b/Frontend/src/lib/core/economy.ts @@ -617,6 +617,35 @@ export function getClickGain(state: GameState): number { return state.clickMultiplier * state.prestigeMultiplier * treeClickMult; } +// Breakdown complet du clic (pour affichage cockpit) +export interface ClickBreakdown { + base: number; + prestigeMult: number; + treeMult: number; + total: number; + doubleChance: number; // 0-1 + critChance: number; // 0-1 + autoClicksPerSec: number; + effectivePerSec: number; // total × (1 + double × 1 + crit × 9) + autoClicks × total +} + +export function getClickBreakdown(state: GameState): ClickBreakdown { + const base = state.clickMultiplier; + const prestigeMult = state.prestigeMultiplier; + const treeMult = getClickMultiplierFromTree(state.evolutionTree); + const total = base * prestigeMult * treeMult; + const doubleChance = getDoubleClickChance(state.evolutionTree); + const critChance = getCritClickChance(state.evolutionTree); + const autoClicksPerSec = getAutoClicksPerSecond(state.evolutionTree); + + // Expected value per click = total × (1 + doubleChance × 1 + critChance × 9) + const expectedPerClick = total * (1 + doubleChance + critChance * 9); + // Auto-clicks produce total per auto-click (no double/crit on auto) + const effectivePerSec = autoClicksPerSec * total; + + return { base, prestigeMult, treeMult, total, doubleChance, critChance, autoClicksPerSec, effectivePerSec }; +} + export interface ClickResult { state: GameState; gain: number; diff --git a/Frontend/src/routes/guide/+page.svelte b/Frontend/src/routes/guide/+page.svelte index 9d6b814..106e78d 100644 --- a/Frontend/src/routes/guide/+page.svelte +++ b/Frontend/src/routes/guide/+page.svelte @@ -20,26 +20,63 @@ icon: '🔄', title: 'Boucle de jeu', content: [ - '**1. Clique** pour pondre des tetards. Achete des **generateurs** (Nid, Mare, Marecage...) qui produisent des tetards automatiquement.', - '**2. Prestige** quand tu atteins 1M de tetards. Tu perds tes tetards et generateurs, mais tu gagnes de l\'**ADN Ancestral** et un multiplicateur permanent.', - '**3. Arbre d\'Evolution** — depense ton ADN dans 3 branches : Ponte (clics), Marais (production), Adaptation (offline/ADN).', + '**1. Clique** pour pondre des tetards. Achete des **generateurs** pour produire automatiquement.', + '**2. Prestige** quand tu atteins le seuil de tetards. Reset tetards et generateurs, mais gagne de l\'**ADN Ancestral** + un multiplicateur permanent.', + '**3. Arbre d\'Evolution** — depense ton ADN dans 3 branches pour booster ta production, tes clics, et ta progression.', + '**4. Repete** — chaque prestige est plus rapide grace aux bonus accumules. Le seuil monte pour garder le challenge.', ], }, { - icon: '★', - title: 'Capstones', + icon: '👆', + title: 'Ponte (clic)', content: [ - '**Ponte Automatique** — auto-click 1/s qui scale avec les upgrades', - '**Symbiose Totale** — chaque type de generateur booste les autres', - '**Memoire du Marais** — offline cap passe a 75%, duree 8h', + 'Chaque clic rapporte : **base × prestige × arbre**. Le panneau "Ponte" dans Production te montre le breakdown complet.', + '**Double Ponte** — chance de doubler le gain (branche Ponte, 5 ADN)', + '**Ponte Critique** — chance de ×10 (branche Ponte, 20 ADN)', + '**Auto-Ponte** — clics automatiques par seconde (capstone Ponte, 200 ADN). Scale avec les repeatables.', + 'Le panneau montre aussi les gains auto-ponte/s — ta production passive par les clics.', + ], + }, + { + icon: '🏭', + title: 'Generateurs', + content: [ + '5 generateurs (Nid → Lac Mystique). Chaque unite produit des tetards/s automatiquement.', + 'Le cockpit Production montre la **production effective** (avec tous les bonus) et le **+X/s** que le prochain achat ajoute.', + '**Achat multiple** — x1, x5, x10, ou MAX. Le cout et la quantite s\'affichent sur le bouton.', + 'La **barre de part** montre quelle fraction de ta production vient de chaque type.', ], }, { icon: '🧬', - title: 'Convergence', + title: 'Prestige', content: [ - 'Avec un capstone + des noeuds d\'une 2e branche → **Convergence Alpha** (+10% tous effets).', - 'Avec 2 capstones → evolue en **Convergence Omega** (-20% cout post-capstones).', + 'Le prestige reset tes tetards et generateurs. Tu gagnes de l\'**ADN Ancestral** et un multiplicateur permanent (×0.1 par prestige).', + 'Le **seuil augmente** a chaque prestige : 1M × (1 + 0.1 × N)². Plus tu prestiges, plus il faut de tetards.', + 'L\'arbre et les cosmetiques sont **conserves**. Chaque prestige offre **1 reset d\'arbre gratuit**.', + 'Les noeuds Adaptation peuvent **reduire le seuil** — strategique pour prestige plus souvent.', + ], + }, + { + icon: '🌳', + title: 'Arbre d\'Evolution', + content: [ + '3 branches + Convergence. Depense ton ADN pour debloquer des noeuds permanents.', + '**Ponte** — booste tes clics : multiplicateur, double ponte, critique, auto-ponte', + '**Marais** — booste la production : multiplicateur, Nid boost, synergie entre types', + '**Adaptation** — booste la progression : bonus ADN, offline, reduction seuil prestige', + 'Chaque branche a un **capstone** (noeud final puissant) + des **post-capstones** repeatables a l\'infini.', + ], + }, + { + icon: '★', + title: 'Capstones & Convergence', + content: [ + '**Ponte Automatique** — auto-clic 1/s qui scale avec les upgrades', + '**Symbiose Totale** — chaque type de generateur booste les autres', + '**Memoire du Marais** — offline cap a 75%, duree 8h', + '**Convergence Alpha** (1 capstone + tier 3 d\'une 2e branche) → +10% tous effets', + '**Convergence Omega** (2 capstones) → +10% tous effets + -20% cout post-capstones', ], }, { diff --git a/Frontend/src/routes/jeu/+page.svelte b/Frontend/src/routes/jeu/+page.svelte index e53a6bc..3f6ac35 100644 --- a/Frontend/src/routes/jeu/+page.svelte +++ b/Frontend/src/routes/jeu/+page.svelte @@ -5,6 +5,7 @@ import { formatNumber } from '$lib/utils/formatNumber'; import CockpitHeader from '$lib/components/CockpitHeader.svelte'; import GeneratorShop from '$lib/components/GeneratorShop.svelte'; + import ClickPanel from '$lib/components/ClickPanel.svelte'; import PrestigePanel from '$lib/components/PrestigePanel.svelte'; import EvolutionTree from '$lib/components/EvolutionTree.svelte'; import MilestoneBar from '$lib/components/MilestoneBar.svelte'; @@ -80,6 +81,7 @@ {#snippet children(activeTab)} {#if activeTab === 'production'} + {:else if activeTab === 'evolution'}