fix: runestone formula, prestige/transcendence rebalance, exploration fixes, and comprehensive balance audit #135

Merged
naomi merged 53 commits from fix/stones into main 2026-03-31 19:57:53 -07:00
4 changed files with 7 additions and 7 deletions
Showing only changes of commit 952e9d6299 - Show all commits
+1 -1
View File
@@ -12,7 +12,7 @@ export const defaultBosses: Array<Boss> = [
// ── Verdant Vale ──────────────────────────────────────────────────────────
{
bountyRunestones: 1,
crystalReward: 0,
crystalReward: 5,
currentHp: 1000,
damagePerSecond: 5,
description:
+1 -1
View File
@@ -48,7 +48,7 @@ export const defaultUpgrades: Array<Upgrade> = [
unlocked: false,
},
{
costCrystals: 100,
costCrystals: 50,
costEssence: 0,
costGold: 0,
description:
+2 -2
View File
@@ -146,7 +146,7 @@ const calculateRunestones = (parameters: RunestoneParameters): number => {
/**
* Calculates the new prestige production multiplier.
* Formula: 1.25^prestigeCount — exponential scaling per prestige that eventually
* Formula: 1.3^prestigeCount — exponential scaling per prestige that eventually
* overtakes the polynomial threshold growth, making late prestiges progressively easier.
* @param prestigeCount - The new prestige count.
* @returns The production multiplier for the new prestige level.
@@ -154,7 +154,7 @@ const calculateRunestones = (parameters: RunestoneParameters): number => {
const calculateProductionMultiplier = (
prestigeCount: number,
): number => {
return Math.pow(1.25, prestigeCount);
return Math.pow(1.3, prestigeCount);
};
/**
+3 -3
View File
@@ -131,12 +131,12 @@ describe("calculateProductionMultiplier", () => {
expect(calculateProductionMultiplier(0)).toBe(1);
});
it("returns 1.25 at count 1", () => {
expect(calculateProductionMultiplier(1)).toBeCloseTo(1.25);
it("returns 1.3 at count 1", () => {
expect(calculateProductionMultiplier(1)).toBeCloseTo(1.3);
});
it("scales exponentially", () => {
expect(calculateProductionMultiplier(10)).toBeCloseTo(Math.pow(1.25, 10));
expect(calculateProductionMultiplier(10)).toBeCloseTo(Math.pow(1.3, 10));
});
});