/** * Cosmic Garden - Prestige System * Allows resetting progress for permanent Stellar Essence bonuses */ const PRESTIGE = { /** * Calculate Stellar Essence earned from prestiging * Formula: floor(sqrt(totalStardust / 1,000,000)) */ calculateEssence() { const totalStardust = Game.state.totalStardust || 0; return Math.floor(Math.sqrt(totalStardust / 1e6)); }, /** * Get the current prestige multiplier from essence * Each essence provides +10% production bonus */ getMultiplier() { const essence = Game.state.stellarEssence || 0; return 1 + (essence * 0.1); }, /** * Perform the prestige reset */ prestige() { const essenceGain = this.calculateEssence(); if (essenceGain <= 0) { UI.showNotification('Need more stardust to prestige!', 'warning'); return false; } // Reset game state but keep essence and prestige count const previousPrestigeCount = Game.state.prestigeCount || 0; const previousEssence = Game.state.stellarEssence || 0; const newEssence = previousEssence + essenceGain; Game.state = { stardust: 0, totalStardust: 0, totalClicks: 0, clickPower: 1, startTime: Date.now(), lastSaveTime: Date.now(), buildings: {}, upgrades: [], achievements: [], stellarEssence: newEssence, prestigeCount: previousPrestigeCount + 1, totalPrestigeEssence: (Game.state.totalPrestigeEssence || 0) + essenceGain, prestigeUpgrades: Game.state.prestigeUpgrades || [] }; // Audio feedback Audio.playPrestige(); // Particle effect for prestige const btn = document.getElementById('prestige-btn'); if (btn) { const rect = btn.getBoundingClientRect(); Particles.createPrestigeEffect(rect.left + rect.width / 2, rect.top + rect.height / 2); } UI.showNotification( `✦ Prestige! Earned ${essenceGain} Stellar Essence! (${newEssence} total)`, 'achievement' ); UI.update(); return true; }, /** * Buy a prestige upgrade */ buyUpgrade(upgradeId) { const upgrade = PRESTIGE_UPGRADES[upgradeId]; if (!upgrade || Game.state.prestigeUpgrades?.includes(upgradeId)) { return false; } if (Game.state.stellarEssence >= upgrade.cost) { Game.state.stellarEssence -= upgrade.cost; Game.state.prestigeUpgrades = Game.state.prestigeUpgrades || []; Game.state.prestigeUpgrades.push(upgradeId); UI.showNotification(`Unlocked: ${upgrade.name}!`, 'achievement'); Audio.playPurchase(); UI.update(); return true; } return false; }, /** * Get the effective click power with prestige bonus */ getEffectiveClickPower() { const basePower = Game.getClickPower(); const multiplier = this.getMultiplier(); return Math.floor(basePower * multiplier); }, /** * Get the effective production per second with prestige bonus */ getEffectiveProductionPerSecond() { const baseProduction = Game.getProductionPerSecond(); const multiplier = this.getMultiplier(); return baseProduction * multiplier; } }; /** * Prestige Upgrades - Permanent bonuses purchased with Stellar Essence */ const PRESTIGE_UPGRADES = { cosmicFingers: { id: 'cosmicFingers', name: 'Cosmic Fingers', description: 'Click power x2 (permanent)', icon: '👆', cost: 10, effect: 'clickMultiplier', value: 2 }, stellarTouch: { id: 'stellarTouch', name: 'Stellar Touch', description: 'Click power x3 (permanent)', icon: '✨', cost: 50, effect: 'clickMultiplier', value: 3 }, essenceAmplifier: { id: 'essenceAmplifier', name: 'Essence Amplifier', description: 'All production x1.5 (permanent)', icon: '💎', cost: 25, effect: 'productionMultiplier', value: 1.5 }, quantumGarden: { id: 'quantumGarden', name: 'Quantum Garden', description: 'All production x2 (permanent)', icon: '🌌', cost: 100, effect: 'productionMultiplier', value: 2 }, acceleratedGrowth: { id: 'acceleratedGrowth', name: 'Accelerated Growth', description: 'Buildings cost 10% less (permanent)', icon: '📉', cost: 75, effect: 'costReduction', value: 0.9 }, temporalManipulation: { id: 'temporalManipulation', name: 'Temporal Manipulation', description: 'Offline earnings 75% (was 50%)', icon: '⏰', cost: 200, effect: 'offlineBonus', value: 0.75 } }; window.PRESTIGE = PRESTIGE; window.PRESTIGE_UPGRADES = PRESTIGE_UPGRADES;