Aka Altar Ego -

// Recalculate global bonuses from unlocked egos function refreshGlobalBonuses() clickBase = 1; autoPerSecond = 0; critPercent = 0; discountPercent = 0;

/* Ego Grid */ .ego-grid display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; margin: 2rem 0; .ego-card background: rgba(10, 12, 20, 0.7); border-radius: 1.8rem; padding: 1rem 0.8rem; text-align: center; border: 1px solid rgba(220, 170, 90, 0.5); transition: 0.2s; cursor: pointer; position: relative; .ego-card.locked opacity: 0.65; filter: grayscale(0.3); .ego-card.unlocked border-color: #e0b050; box-shadow: 0 0 12px rgba(230, 160, 70, 0.6); background: rgba(30, 25, 45, 0.8); .ego-card:hover transform: translateY(-5px); background: rgba(25, 28, 45, 0.9); .ego-icon font-size: 2.5rem; display: block; .ego-name font-size: 1.4rem; font-weight: bold; margin: 8px 0 4px; background: linear-gradient(135deg, #e6c8a0, #cdaa77); background-clip: text; -webkit-background-clip: text; color: transparent; .ego-desc font-size: 0.7rem; color: #bcae8f; margin: 5px 0; .ego-bonus font-size: 0.75rem; background: #221c10aa; border-radius: 20px; display: inline-block; padding: 3px 10px; margin: 6px 0; color: #f5bc70; .ego-cost font-size: 0.75rem; color: #efb87e; margin-top: 6px; font-weight: bold; .lock-badge position: absolute; top: 8px; right: 12px; font-size: 1.2rem; opacity: 0.8; aka altar ego

function attemptUnlockEgo(egoId) ego.unlocked) return; const discountedCost = getDiscountedCost(ego.cost); if (essence >= discountedCost) essence -= discountedCost; ego.unlocked = true; refreshGlobalBonuses(); renderEgoCards(); updateEssenceUI(); saveGame(); // extra feedback playFloatingText(`✨ $ego.name awakens! ✨`); else playFloatingText(`⛔ not enough essence... need $discountedCost`); // Recalculate global bonuses from unlocked egos function

// Save & Load function saveGame() const saveData = essence: essence, egosUnlocked: EGOS.map(e => ( id: e.id, unlocked: e.unlocked )), version: 1 ; localStorage.setItem("akaAltarEgoSave", JSON.stringify(saveData)); autoPerSecond = 0

function loadGame() const raw = localStorage.getItem("akaAltarEgoSave"); if (!raw) return; try const data = JSON.parse(raw); if (data.essence !== undefined) essence = data.essence; if (data.egosUnlocked && Array.isArray(data.egosUnlocked)) data.egosUnlocked.forEach(savedEgo => const found = EGOS.find(e => e.id === savedEgo.id); if (found) found.unlocked = savedEgo.unlocked; ); refreshGlobalBonuses(); renderEgoCards(); updateEssenceUI(); catch(e) console.warn("load error", e);

/* Flame / Essence core */ .essence-core display: flex; flex-direction: column; align-items: center; margin-bottom: 2rem; .flame-btn background: radial-gradient(circle at 30% 20%, #ffb347, #ff6a00); width: 130px; height: 130px; border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: pointer; box-shadow: 0 0 20px #ff884d, inset 0 -5px 0 rgba(0,0,0,0.2); transition: transform 0.05s linear, box-shadow 0.1s; margin-bottom: 1rem; .flame-btn:active transform: scale(0.96); box-shadow: 0 0 30px #ffaa66; .flame-emoji font-size: 4rem; filter: drop-shadow(0 0 6px #ffcc88); .essence-display background: #0b0e16aa; backdrop-filter: blur(8px); padding: 0.6rem 1.5rem; border-radius: 60px; border: 1px solid #c9a87b; font-size: 1.9rem; font-weight: bold; color: #ffdd99; font-family: monospace; letter-spacing: 2px; .essence-label font-size: 0.8rem; color: #bba88a; margin-top: 6px;

<div class="stats-panel"> <div class="stat">⚡ per click: <strong id="clickPowerStat">1</strong></div> <div class="stat">🌀 passive/sec: <strong id="autoStat">0</strong></div> <div class="stat">✨ crit chance: <strong id="critStat">0%</strong></div> <button class="reset-btn" id="resetBtn">⟳ reset ego</button> </div> <footer>the altar remembers you — each ego is a mirror</footer> </div>

© COPYRIGHT THE EVERYMAN THEATRE 2025 | CHARITY REGISTRATION NO 20150952