diff --git a/doc/source/netscript/netscriptsingularityfunctions.rst b/doc/source/netscript/netscriptsingularityfunctions.rst index 146fac645..dbea2ed0c 100644 --- a/doc/source/netscript/netscriptsingularityfunctions.rst +++ b/doc/source/netscript/netscriptsingularityfunctions.rst @@ -43,6 +43,7 @@ The player has access to all of these functions while in BitNode-4. Completing B getFactionRep() getFactionFavor() getFactionFavorGain() + upgradeHomeCores() .. toctree:: :caption: Level 3 Functions diff --git a/doc/source/netscript/singularityfunctions/upgradeHomeCores.rst b/doc/source/netscript/singularityfunctions/upgradeHomeCores.rst new file mode 100644 index 000000000..eb1a76c81 --- /dev/null +++ b/doc/source/netscript/singularityfunctions/upgradeHomeCores.rst @@ -0,0 +1,12 @@ +upgradeHomeRam() Netscript Function +=================================== + +.. js:function:: upgradeHomeCores() + + :RAM cost: 3 GB + + If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function. + + This function will upgrade amount of CORES on the player's home computer. The cost is the same as if you were to do it manually. + + This function will return true if the player's home computer core count is successfully upgraded, and false otherwise. diff --git a/package-lock.json b/package-lock.json index af00c6697..18e9f6d6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "bitburner", "version": "0.56.0", "hasInstallScript": true, "license": "SEE LICENSE IN license.txt", diff --git a/src/NetscriptFunctions.ts b/src/NetscriptFunctions.ts index 2802d7fd1..11eb8b14d 100644 --- a/src/NetscriptFunctions.ts +++ b/src/NetscriptFunctions.ts @@ -2746,6 +2746,38 @@ function NetscriptFunctions(workerScript: WorkerScript): NS { return true; } return false; + }, + upgradeHomeCores: function (): any { + updateDynamicRam("upgradeHomeCores", getRamCost("upgradeHomeCores")); + checkSingularityAccess("upgradeHomeCores", 2); + + // Check if we're at max CORES + const homeComputer = Player.getHomeComputer(); + if (homeComputer.cpuCores >=8) { + workerScript.log("upgradeHomeCores", `Your home computer is at max cores.`); + return false; + } + + const cost = Player.getUpgradeHomeCoresCost(); + if (Player.money.lt(cost)) { + workerScript.log("upgradeHomeCores", `You don't have enough money. Need ${numeralWrapper.formatMoney(cost)}`); + return false; + } + + homeComputer.cpuCores +=1; + Player.loseMoney(cost); + + Player.gainIntelligenceExp(CONSTANTS.IntelligenceSingFnBaseExpGain); + workerScript.log( + "upgradeHomeCores", + `Purchased an additional core for home computer! It now has ${(homeComputer.cpuCores)} cores.`,); + return true; + }, + getUpgradeHomeCoresCost: function (): any { + updateDynamicRam("getUpgradeHomeCoresCost", getRamCost("getUpgradeHomeCoresCost")); + checkSingularityAccess("getUpgradeHomeCoresCost", 2); + + return Player.getUpgradeHomeCoresCost(); }, upgradeHomeRam: function (): any { updateDynamicRam("upgradeHomeRam", getRamCost("upgradeHomeRam"));