diff --git a/src/Location.js b/src/Location.js
index 1f1c60800..56a39114e 100644
--- a/src/Location.js
+++ b/src/Location.js
@@ -1761,16 +1761,8 @@ function initLocationButtons() {
});
purchaseHomeRam.addEventListener("click", function() {
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = Player.getHomeComputer().maxRam;
- var newRam = currentRam * 2;
- var numUpgrades = Math.log2(currentRam);
-
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.58, numUpgrades);
- cost = cost * mult;
+ const cost = Player.getUpgradeHomeRamCost();
+ const ram = Player.getHomeComputer().maxRam;
var yesBtn = yesNoBoxGetYesButton(), noBtn = yesNoBoxGetNoButton();
yesBtn.innerHTML = "Purchase"; noBtn.innerHTML = "Cancel";
@@ -1782,8 +1774,8 @@ function initLocationButtons() {
yesNoBoxClose();
});
yesNoBoxCreate("Would you like to purchase additional RAM for your home computer?
" +
- "This will upgrade your RAM from " + currentRam + "GB to " + newRam + "GB.
" +
- "This will cost $" + formatNumber(cost, 2));
+ "This will upgrade your RAM from " + ram + "GB to " + ram*2 + "GB.
" +
+ "This will cost " + numeral(cost).format('$0.000a'));
});
purchaseHomeCores.addEventListener("click", function() {
diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js
index 62577fe1a..e1f3bac71 100644
--- a/src/NetscriptFunctions.js
+++ b/src/NetscriptFunctions.js
@@ -2506,15 +2506,7 @@ function NetscriptFunctions(workerScript) {
}
}
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = Player.getHomeComputer().maxRam;
- var numUpgrades = Math.log2(currentRam);
-
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.55, numUpgrades);
- cost = cost * mult;
+ const cost = Player.getUpgradeHomeRamCost();
if (Player.money.lt(cost)) {
workerScript.scriptRef.log("ERROR: upgradeHomeRam() failed because you don't have enough money");
@@ -2546,15 +2538,7 @@ function NetscriptFunctions(workerScript) {
}
}
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = Player.getHomeComputer().maxRam;
- var numUpgrades = Math.log2(currentRam);
-
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.55, numUpgrades);
- return cost * mult;
+ return Player.getUpgradeHomeRamCost();
},
workForCompany : function() {
var ramCost = CONSTANTS.ScriptSingularityFn2RamCost;
diff --git a/src/Player.js b/src/Player.js
index a8db3cdec..0f221b1be 100644
--- a/src/Player.js
+++ b/src/Player.js
@@ -405,6 +405,19 @@ PlayerObject.prototype.getHomeComputer = function() {
return AllServers[this.homeComputer];
}
+PlayerObject.prototype.getUpgradeHomeRamCost = function() {
+ //Calculate how many times ram has been upgraded (doubled)
+ const currentRam = Player.getHomeComputer().maxRam;
+ const numUpgrades = Math.log2(currentRam);
+
+ //Calculate cost
+ //Have cost increase by some percentage each time RAM has been upgraded
+ const mult = Math.pow(1.58, numUpgrades);
+ var cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome * mult;
+ cost = cost.toPrecision(5);
+ return cost;
+}
+
//Calculates skill level based on experience. The same formula will be used for every skill
PlayerObject.prototype.calculateSkill = function(exp) {
return Math.max(Math.floor(32 * Math.log(exp + 534.5) - 200), 1);