generated from nhcarrigan/template
feat: add apotheosis third prestige layer and remove IDEAS.md
Apotheosis is the ultimate reset — wipes absolutely everything including prestige and transcendence — in exchange for a pure bragging-rights badge. No mechanical benefit whatsoever. Unlock condition: all 15 Transcendence echo upgrades purchased. Can be achieved multiple times; each cycle requires repurchasing all Transcendence upgrades again. What survives: Codex lore entries and lifetime profile statistics. What is wiped: resources, prestige, runestones, transcendence data (echoes, echo upgrades, multipliers), equipment, upgrades, bosses, quests, zones, adventurers, achievements. New files: Apotheosis.ts type, apotheosis service, apotheosis route, ApotheosisPanel.tsx component. Modified: GameState (apotheosis field), Api.ts, types/index.ts, prestige service (carry apotheosis), transcendence service (carry apotheosis), game.ts anti-cheat (cap apotheosis count), API client, GameContext (apotheosis() function), GameLayout (new tab), ResourceBar (gold apotheosis badge shown above transcendence and prestige badges), styles.css, AboutPanel how-to-play. Also removes IDEAS.md — all planned features are now implemented!
This commit is contained in:
@@ -14,13 +14,14 @@ import { EditProfileModal } from "./EditProfileModal.js";
|
||||
import { EquipmentPanel } from "./EquipmentPanel.js";
|
||||
import { OfflineModal } from "./OfflineModal.js";
|
||||
import { PrestigePanel } from "./PrestigePanel.js";
|
||||
import { ApotheosisPanel } from "./ApotheosisPanel.js";
|
||||
import { TranscendencePanel } from "./TranscendencePanel.js";
|
||||
import { QuestPanel } from "./QuestPanel.js";
|
||||
import { StatisticsPanel } from "./StatisticsPanel.js";
|
||||
import { UpgradePanel } from "./UpgradePanel.js";
|
||||
import { DailyChallengePanel } from "./DailyChallengePanel.js";
|
||||
|
||||
type Tab = "adventurers" | "upgrades" | "quests" | "bosses" | "equipment" | "achievements" | "prestige" | "transcendence" | "statistics" | "daily" | "codex" | "about";
|
||||
type Tab = "adventurers" | "upgrades" | "quests" | "bosses" | "equipment" | "achievements" | "prestige" | "transcendence" | "apotheosis" | "statistics" | "daily" | "codex" | "about";
|
||||
|
||||
const BASE_TABS: { id: Tab; label: string }[] = [
|
||||
{ id: "adventurers", label: "⚔️ Adventurers" },
|
||||
@@ -31,6 +32,7 @@ const BASE_TABS: { id: Tab; label: string }[] = [
|
||||
{ id: "achievements", label: "🏆 Achievements" },
|
||||
{ id: "prestige", label: "⭐ Prestige" },
|
||||
{ id: "transcendence", label: "🌌 Transcendence" },
|
||||
{ id: "apotheosis", label: "✨ Apotheosis" },
|
||||
{ id: "statistics", label: "📊 Statistics" },
|
||||
{ id: "daily", label: "📅 Daily" },
|
||||
{ id: "codex", label: "📖 Codex" },
|
||||
@@ -69,6 +71,7 @@ export const GameLayout = (): React.JSX.Element => {
|
||||
runestones={state.prestige.runestones}
|
||||
prestigeCount={state.prestige.count}
|
||||
transcendenceCount={state.transcendence?.count ?? 0}
|
||||
apotheosisCount={state.apotheosis?.count ?? 0}
|
||||
profileUrl={profileUrl}
|
||||
onEditProfile={() => { setEditingProfile(true); }}
|
||||
lastSavedAt={lastSavedAt}
|
||||
@@ -116,6 +119,7 @@ export const GameLayout = (): React.JSX.Element => {
|
||||
{activeTab === "achievements" && <AchievementPanel />}
|
||||
{activeTab === "prestige" && <PrestigePanel />}
|
||||
{activeTab === "transcendence" && <TranscendencePanel />}
|
||||
{activeTab === "apotheosis" && <ApotheosisPanel />}
|
||||
{activeTab === "statistics" && <StatisticsPanel />}
|
||||
{activeTab === "daily" && <DailyChallengePanel />}
|
||||
{activeTab === "codex" && <CodexPanel />}
|
||||
|
||||
Reference in New Issue
Block a user