feat: achievement timestamps, companion progress bars, max runestone indicator, and auto-prestige max-runes mode
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Failing after 1m13s

This commit is contained in:
2026-04-06 14:09:38 -07:00
committed by Naomi Carrigan
parent c494cf9a26
commit d51d7e8432
7 changed files with 169 additions and 27 deletions
+39 -4
View File
@@ -479,6 +479,11 @@ interface GameContextValue {
*/
toggleAutoPrestige: ()=> void;
/**
* Toggle whether auto-prestige waits for maximum runestone yield before firing.
*/
toggleAutoPrestigeMaxRunestones: ()=> void;
/**
* Toggle the auto-quest setting on/off.
*/
@@ -1391,15 +1396,27 @@ export const GameProvider = ({
// Auto-prestige: fire when unlocked, enabled, and threshold is met
const autoState = stateReference.current;
const autoPrestigeThreshold = autoPrestigeThresholdBase
* Math.pow((autoState?.prestige.count ?? 0) + 1, 2.5)
* (autoState?.transcendence?.echoPrestigeThresholdMultiplier ?? 1);
const autoBaseRunestones = Math.min(
Math.floor(
Math.cbrt(
(autoState?.player.totalGoldEarned ?? 0) / autoPrestigeThreshold,
),
) * 15,
200,
);
const autoMaxRunestonesMet
= autoState?.prestige.autoPrestigeMaxRunestonesOnly !== true
|| autoBaseRunestones >= 200;
if (
!isAutoPrestigingReference.current
&& autoState?.prestige.purchasedUpgradeIds.includes("auto_prestige")
=== true
&& autoState.prestige.autoPrestigeEnabled === true
&& autoState.player.totalGoldEarned
>= autoPrestigeThresholdBase
* Math.pow(autoState.prestige.count + 1, 2.5)
* (autoState.transcendence?.echoPrestigeThresholdMultiplier ?? 1)
&& autoState.player.totalGoldEarned >= autoPrestigeThreshold
&& autoMaxRunestonesMet
) {
isAutoPrestigingReference.current = true;
void prestigeApi({}).
@@ -2065,6 +2082,22 @@ export const GameProvider = ({
});
}, []);
const toggleAutoPrestigeMaxRunestones = useCallback(() => {
setState((previous) => {
if (previous === null) {
return previous;
}
return {
...previous,
prestige: {
...previous.prestige,
autoPrestigeMaxRunestonesOnly:
previous.prestige.autoPrestigeMaxRunestonesOnly !== true,
},
};
});
}, []);
const toggleAutoQuest = useCallback(() => {
setState((previous) => {
if (previous === null) {
@@ -2496,6 +2529,7 @@ export const GameProvider = ({
toggleAutoAdventurer,
toggleAutoBoss,
toggleAutoPrestige,
toggleAutoPrestigeMaxRunestones,
toggleAutoQuest,
transcend,
triggerPrestigeToast,
@@ -2571,6 +2605,7 @@ export const GameProvider = ({
toggleAutoAdventurer,
toggleAutoBoss,
toggleAutoPrestige,
toggleAutoPrestigeMaxRunestones,
toggleAutoQuest,
transcend,
triggerPrestigeToast,