diff --git a/apps/api/src/data/prestigeUpgrades.ts b/apps/api/src/data/prestigeUpgrades.ts index 48524df..3d8c047 100644 --- a/apps/api/src/data/prestigeUpgrades.ts +++ b/apps/api/src/data/prestigeUpgrades.ts @@ -210,6 +210,15 @@ export const defaultPrestigeUpgrades: Array = [ runestonesCost: 1200, }, // ── Utility Unlocks ─────────────────────────────────────────────────────── + { + category: "utility", + description: + "Unlock the Auto-Adventurer toggle. When enabled, the tick engine will automatically purchase the highest-tier adventurer you can currently afford.", + id: "auto_adventurer", + multiplier: 1, + name: "Autonomous Recruitment", + runestonesCost: 50, + }, { category: "utility", description: diff --git a/apps/web/src/components/game/aboutPanel.tsx b/apps/web/src/components/game/aboutPanel.tsx index 8b63dfb..c159b37 100644 --- a/apps/web/src/components/game/aboutPanel.tsx +++ b/apps/web/src/components/game/aboutPanel.tsx @@ -188,14 +188,16 @@ const howToPlay = [ }, { body: - "Toggle automation in the Quests and Boss Encounters panels! Auto-Quest" - + " automatically sends your party on the highest-zone available quest" - + " as soon as one completes, skipping quests whose combat power" - + " requirement isn't met. Auto-Boss automatically challenges the" - + " highest available boss as soon as one is ready. Both can be toggled" - + " on or off at any time using the 🤖 Auto button in each panel" - + " header.", - title: "🤖 Auto-Quest & Auto-Boss", + "Toggle automation in the Quests, Boss Encounters, and Prestige Shop" + + " panels! Auto-Quest automatically sends your party on the" + + " highest-zone available quest as soon as one completes, skipping" + + " quests whose combat power requirement isn't met. Auto-Boss" + + " automatically challenges the highest available boss as soon as one" + + " is ready. Auto-Adventurer (unlocked via the Prestige Shop for 50" + + " runestones) automatically purchases the highest-tier adventurer you" + + " can currently afford each tick, keeping your income growing after a" + + " prestige without any manual clicks.", + title: "🤖 Auto-Quest, Auto-Boss & Auto-Adventurer", }, { body: diff --git a/apps/web/src/components/game/prestigePanel.tsx b/apps/web/src/components/game/prestigePanel.tsx index 8bfdf0f..9addb63 100644 --- a/apps/web/src/components/game/prestigePanel.tsx +++ b/apps/web/src/components/game/prestigePanel.tsx @@ -89,6 +89,7 @@ const PrestigePanel = (): JSX.Element => { buyPrestigeUpgrade, enableNotifications, enableSounds, + toggleAutoAdventurer, toggleAutoPrestige, triggerPrestigeToast, } = useGame(); @@ -110,7 +111,7 @@ const PrestigePanel = (): JSX.Element => { ); } - const { prestige: prestigeData, player } = state; + const { autoAdventurer, prestige: prestigeData, player } = state; const threshold = calculateThreshold(prestigeData.count); const isEligible = player.totalGoldEarned >= threshold; const runestonePreview = calculateRunestonePreview( @@ -173,6 +174,10 @@ const PrestigePanel = (): JSX.Element => { void handlePrestige(); } + function handleAutoAdventurerToggle(): void { + toggleAutoAdventurer(); + } + function handleAutoPrestigeToggle(): void { toggleAutoPrestige(); } @@ -347,6 +352,9 @@ const PrestigePanel = (): JSX.Element => { = prestigeData.runestones >= upgrade.runestonesCost; const isLoading = buyingId === upgrade.id; + const isAutoAdventurerToggle + = upgrade.id === "auto_adventurer" && purchased; + const autoAdventurerEnabled = autoAdventurer ?? false; const isAutoPrestigeToggle = upgrade.id === "auto_prestige" && purchased; const autoPrestigeEnabled @@ -381,6 +389,21 @@ const PrestigePanel = (): JSX.Element => { : `🔮 ${formatNumber(upgrade.runestonesCost)} Runestones`}

+ {isAutoAdventurerToggle + ? + : null} {isAutoPrestigeToggle ?