diff --git a/src/js/game/hub_goals.js b/src/js/game/hub_goals.js index 9f9c63be..fa0bcd49 100644 --- a/src/js/game/hub_goals.js +++ b/src/js/game/hub_goals.js @@ -55,11 +55,12 @@ export class HubGoals extends BasicSerializableObject { for (const upgradeId in upgrades) { const tiers = upgrades[upgradeId]; const level = this.upgradeLevels[upgradeId] || 0; - let totalImprovement = 1; + let totalImprovement = 10; for (let i = 0; i < level; ++i) { totalImprovement += tiers[i].improvement; } - this.upgradeImprovements[upgradeId] = totalImprovement; + this.upgradeImprovements[upgradeId] = + (this.upgradeImprovementsExact[upgradeId] = totalImprovement) / 10; } // Compute current goal @@ -100,11 +101,18 @@ export class HubGoals extends BasicSerializableObject { */ this.upgradeImprovements = {}; + /** + * Stores 10x the improvements for all upgrades, to be exact + * @type {Object} + */ + this.upgradeImprovementsExact = {}; + // Reset levels first const upgrades = this.root.gameMode.getUpgrades(); for (const key in upgrades) { this.upgradeLevels[key] = 0; this.upgradeImprovements[key] = 1; + this.upgradeImprovementsExact[key] = 10; } this.computeNextGoal(); @@ -347,7 +355,8 @@ export class HubGoals extends BasicSerializableObject { } this.upgradeLevels[upgradeId] = (this.upgradeLevels[upgradeId] || 0) + 1; - this.upgradeImprovements[upgradeId] += tierData.improvement; + this.upgradeImprovements[upgradeId] = + (this.upgradeImprovementsExact[upgradeId] += tierData.improvement) / 10; this.root.signals.upgradePurchased.dispatch(upgradeId); diff --git a/src/js/game/hud/parts/sandbox_controller.js b/src/js/game/hud/parts/sandbox_controller.js index 3689fa36..5c67c441 100644 --- a/src/js/game/hud/parts/sandbox_controller.js +++ b/src/js/game/hud/parts/sandbox_controller.js @@ -98,11 +98,12 @@ export class HUDSandboxController extends BaseHUDPart { ); // Compute improvement - let improvement = 1; + let improvement = 10; for (let i = 0; i < this.root.hubGoals.upgradeLevels[id]; ++i) { improvement += upgradeTiers[i].improvement; } - this.root.hubGoals.upgradeImprovements[id] = improvement; + this.root.hubGoals.upgradeImprovements[id] = + (this.root.hubGoals.upgradeImprovementsExact[id] = improvement) / 10; this.root.signals.upgradePurchased.dispatch(id); this.root.hud.signals.notification.dispatch( "Upgrade '" + id + "' is now at tier " + (this.root.hubGoals.upgradeLevels[id] + 1), diff --git a/src/js/game/hud/parts/shop.js b/src/js/game/hud/parts/shop.js index 4b353bd3..0ceb770e 100644 --- a/src/js/game/hud/parts/shop.js +++ b/src/js/game/hud/parts/shop.js @@ -99,7 +99,7 @@ export class HUDShop extends BaseHUDPart { // Set description handle.elemDescription.innerText = T.shopUpgrades[upgradeId].description .replace("", formatBigNumber(currentTierMultiplier)) - .replace("", formatBigNumber(currentTierMultiplier + tierHandle.improvement)); + .replace("", formatBigNumber(currentTierMultiplier + tierHandle.improvement / 10)); tierHandle.required.forEach(({ shape, amount }) => { const container = makeDiv(handle.elemRequirements, null, ["requirement"]); diff --git a/src/js/game/modes/regular.js b/src/js/game/modes/regular.js index 68fbb3ad..83af71cb 100644 --- a/src/js/game/modes/regular.js +++ b/src/js/game/modes/regular.js @@ -79,7 +79,8 @@ function generateUpgrades(limitedVersion = false) { return upgradesCache[limitedVersion]; } - const fixedImprovements = [0.5, 0.5, 1, 1, 2, 1, 1]; + // 10x actual amount so all numbers are exact + const fixedImprovements = [5, 5, 10, 10, 20, 10, 10]; const numEndgameUpgrades = limitedVersion ? 0 : 1000 - fixedImprovements.length - 1; function generateInfiniteUnlocks() { @@ -96,13 +97,13 @@ function generateUpgrades(limitedVersion = false) { // Fill in endgame upgrades for (let i = 0; i < numEndgameUpgrades; ++i) { if (i < 20) { - fixedImprovements.push(0.1); + fixedImprovements.push(1); } else if (i < 50) { - fixedImprovements.push(0.05); + fixedImprovements.push(0.5); } else if (i < 100) { - fixedImprovements.push(0.025); + fixedImprovements.push(0.25); } else { - fixedImprovements.push(0.0125); + fixedImprovements.push(0.125); } }