diff --git a/src/Company.js b/src/Company.js index 862fcd197..efb915849 100644 --- a/src/Company.js +++ b/src/Company.js @@ -223,16 +223,16 @@ CompanyPositions = { //Constructor: CompanyPosition(name, reqHack, reqStr, reqDef, reqDex, reqAgi, reqCha, reqRep, salary) //Software - SoftwareIntern: new CompanyPosition("Software Engineering Intern", 1, 0, 0, 0, 0, 0, 0, 2), - JuniorDev: new CompanyPosition("Junior Software Engineer", 51, 0, 0, 0, 0, 0, 8000, 10), + SoftwareIntern: new CompanyPosition("Software Engineering Intern", 1, 0, 0, 0, 0, 0, 0, 8), + JuniorDev: new CompanyPosition("Junior Software Engineer", 51, 0, 0, 0, 0, 0, 8000, 20), SeniorDev: new CompanyPosition("Senior Software Engineer", 251, 0, 0, 0, 0, 51, 32000, 40), LeadDev: new CompanyPosition("Lead Software Developer", 401, 0, 0, 0, 0, 151, 144000, 120), //TODO Through darkweb, maybe? FreelanceDeveloper: new CompanyPosition("Freelance Developer", 0, 0, 0, 0, 0, 0, 0, 0), - SoftwareConsultant: new CompanyPosition("Software Consultant", 51, 0, 0, 0, 0, 0, 0, 8), - SeniorSoftwareConsultant: new CompanyPosition("Senior Software Consultant", 251, 0, 0, 0, 0, 51, 0, 32), + SoftwareConsultant: new CompanyPosition("Software Consultant", 51, 0, 0, 0, 0, 0, 0, 16), + SeniorSoftwareConsultant: new CompanyPosition("Senior Software Consultant", 251, 0, 0, 0, 0, 51, 0, 35), //IT ITIntern: new CompanyPosition("IT Intern", 1, 0, 0, 0, 0, 0, 0, 1.75), @@ -250,25 +250,25 @@ CompanyPositions = { CTO: new CompanyPosition("Chief Technology Officer", 751, 0, 0, 0, 0, 501, 4608000, 750), //Business - BusinessIntern: new CompanyPosition("Business Intern", 1, 0, 0, 0, 0, 1, 0, 2.5), - BusinessAnalyst: new CompanyPosition("Business Analyst", 6, 0, 0, 0, 0, 51, 8000, 15), + BusinessIntern: new CompanyPosition("Business Intern", 1, 0, 0, 0, 0, 1, 0, 10), + BusinessAnalyst: new CompanyPosition("Business Analyst", 6, 0, 0, 0, 0, 51, 8000, 25), BusinessManager: new CompanyPosition("Business Manager", 51, 0, 0, 0, 0, 101, 32000, 60), OperationsManager: new CompanyPosition("Operations Manager", 51, 0, 0, 0, 0, 226, 144000, 180), CFO: new CompanyPosition("Chief Financial Officer", 76, 0, 0, 0, 0, 501, 576000, 600), CEO: new CompanyPosition("Chief Executive Officer", 101, 0, 0, 0, 0, 751, 4608000, 1000), - BusinessConsultant: new CompanyPosition("Business Consultant", 6, 0, 0, 0, 0, 51, 0, 12), + BusinessConsultant: new CompanyPosition("Business Consultant", 6, 0, 0, 0, 0, 51, 0, 20), SeniorBusinessConsultant: new CompanyPosition("Senior Business Consultant", 51, 0, 0, 0, 0, 226, 0, 150), //Non-tech/management jobs - PartTimeWaiter: new CompanyPosition("Part-time Waiter", 0, 0, 0, 0, 0, 0, 0, 1.5), - PartTimeEmployee: new CompanyPosition("Part-time Employee", 0, 0, 0, 0, 0, 0, 0, 1.5), + PartTimeWaiter: new CompanyPosition("Part-time Waiter", 0, 0, 0, 0, 0, 0, 0, 7), + PartTimeEmployee: new CompanyPosition("Part-time Employee", 0, 0, 0, 0, 0, 0, 0, 7), - Waiter: new CompanyPosition("Waiter", 0, 0, 0, 0, 0, 0, 0, 2), - Employee: new CompanyPosition("Employee", 0, 0, 0, 0, 0, 0, 0, 2), + Waiter: new CompanyPosition("Waiter", 0, 0, 0, 0, 0, 0, 0, 9), + Employee: new CompanyPosition("Employee", 0, 0, 0, 0, 0, 0, 0, 9), PoliceOfficer: new CompanyPosition("Police Officer", 11, 101, 101, 101, 101, 51, 8000, 25), PoliceChief: new CompanyPosition("Police Chief", 101, 301, 301, 301, 301, 151, 32000, 100), - SecurityGuard: new CompanyPosition("Security Guard", 0, 51, 51, 51, 51, 1, 0, 10), + SecurityGuard: new CompanyPosition("Security Guard", 0, 51, 51, 51, 51, 1, 0, 16), SecurityOfficer: new CompanyPosition("Security Officer", 26, 151, 151, 151, 151, 51, 8000, 40), SecuritySupervisor: new CompanyPosition("Security Supervisor", 26, 251, 251, 251, 251, 101, 32000, 80), HeadOfSecurity: new CompanyPosition("Head of Security", 51, 501, 501, 501, 501, 151, 144000, 250), diff --git a/src/Constants.js b/src/Constants.js index 238574eac..0b29f0503 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -28,10 +28,18 @@ CONSTANTS = { //NeuroFlux Governor cost multiplier as you level up NeuroFluxGovernorLevelMult: 1.09, + /* Script related things */ //Time (ms) it takes to run one operation in Netscript. CodeInstructionRunTime: 1500, + //RAM Costs for differenc commands + ScriptWhileRamCost: 0.4, + ScriptForRamCost: 0.4, + ScriptIfRamCost: 0.1, + ScriptHackRamCost: 0.25, + ScriptGrowRamCost: 0.25, + //Server growth rate ServerGrowthRate: 1.00075, diff --git a/src/Player.js b/src/Player.js index 874beb842..40beb3f56 100644 --- a/src/Player.js +++ b/src/Player.js @@ -173,7 +173,7 @@ function PlayerObject() { PlayerObject.prototype.init = function() { /* Initialize Player's home computer */ var t_homeComp = new Server(); - t_homeComp.init(createRandomIp(), "home", "Home PC", true, true, true, true, 1); + t_homeComp.init(createRandomIp(), "home", "Home PC", true, true, true, true, 2); this.homeComputer = t_homeComp.ip; this.currentServer = t_homeComp.ip; AddToAllServers(t_homeComp); diff --git a/src/Script.js b/src/Script.js index 5a4d7eff1..76deefc4a 100644 --- a/src/Script.js +++ b/src/Script.js @@ -158,7 +158,23 @@ Script.prototype.updateNumInstructions = function() { //Updates how much RAM the script uses when it is running. Script.prototype.updateRamUsage = function() { - this.ramUsage = this.numInstructions * 0.5; + var baseRam = 1; //Each script requires 1GB to run regardless + var codeCopy = this.code.repeat(1); + codeCopy = codeCopy.replace(/\s/g,''); //Remove all whitespace + + var whileCount = numOccurrences(codeCopy, "while("); + var forCount = numOccurrences(codeCopy, "for("); + var ifCount = numOccurrences(codeCopy, "if("); + var hackCount = numOccurrences(codeCopy, "hack("); + var growCount = numOccurrences(codeCopy, "grow("); + + this.ramUsage = baseRam + + ((whileCount * CONSTANTS.ScriptWhileRamCost) + + (forCount * CONSTANTS.ScriptForRamCost) + + (ifCount * CONSTANTS.ScriptIfRamCost) + + (hackCount * CONSTANTS.ScriptHackRamCost) + + (growCount * CONSTANTS.ScriptGrowRamCost)); + console.log("ram usage: " + this.ramUsage); } Script.prototype.log = function(txt) { diff --git a/src/Server.js b/src/Server.js index d5ce08576..b1fe217c6 100644 --- a/src/Server.js +++ b/src/Server.js @@ -402,19 +402,19 @@ initForeignServers = function() { //"Low level" targets var FoodNStuffServer = new Server(); - FoodNStuffServer.init(createRandomIp(), "foodnstuff", "Food N Stuff Supermarket", true, false, false, false, 2); + FoodNStuffServer.init(createRandomIp(), "foodnstuff", "Food N Stuff Supermarket", true, false, false, false, 4); FoodNStuffServer.setHackingParameters(1, 500000, 10, 5); FoodNStuffServer.setPortProperties(0); AddToAllServers(FoodNStuffServer); var SigmaCosmeticsServer = new Server(); - SigmaCosmeticsServer.init(createRandomIp(), "sigma-cosmetics", "Sigma Cosmetics", true, false, false, false, 0); + SigmaCosmeticsServer.init(createRandomIp(), "sigma-cosmetics", "Sigma Cosmetics", true, false, false, false, 4); SigmaCosmeticsServer.setHackingParameters(5, 750000, 10, 10); SigmaCosmeticsServer.setPortProperties(0); AddToAllServers(SigmaCosmeticsServer); var JoesGunsServer = new Server(); - JoesGunsServer.init(createRandomIp(), "joesguns", "Joe's Guns", true, false, false, false, 2); + JoesGunsServer.init(createRandomIp(), "joesguns", "Joe's Guns", true, false, false, false, 4); JoesGunsServer.setHackingParameters(10, 1000000, 20, 20); JoesGunsServer.setPortProperties(0); AddToAllServers(JoesGunsServer); @@ -426,7 +426,7 @@ initForeignServers = function() { AddToAllServers(Zer0NightclubServer); var NectarNightclubServer = new Server(); - NectarNightclubServer.init(createRandomIp(), "nectar-net", "Nectar Nightclub Network", true, false, false, false, 2); + NectarNightclubServer.init(createRandomIp(), "nectar-net", "Nectar Nightclub Network", true, false, false, false, 4); NectarNightclubServer.setHackingParameters(20, 1200000, 20, 25); NectarNightclubServer.setPortProperties(0); AddToAllServers(NectarNightclubServer); @@ -444,19 +444,19 @@ initForeignServers = function() { AddToAllServers(SilverHelixServer); var HongFangTeaHouseServer = new Server(); - HongFangTeaHouseServer.init(createRandomIp(), "hong-fang-tea", "HongFang Teahouse", true, false, false, false, 0); + HongFangTeaHouseServer.init(createRandomIp(), "hong-fang-tea", "HongFang Teahouse", true, false, false, false, 4); HongFangTeaHouseServer.setHackingParameters(30, 1500000, 15, 15); HongFangTeaHouseServer.setPortProperties(0); AddToAllServers(HongFangTeaHouseServer); var HaraKiriSushiBarServer = new Server(); HaraKiriSushiBarServer.setHackingParameters(40, 2000000, 15, 40); - HaraKiriSushiBarServer.init(createRandomIp(), "harakiri-sushi", "HaraKiri Sushi Bar Network", true, false, false, false, 0); + HaraKiriSushiBarServer.init(createRandomIp(), "harakiri-sushi", "HaraKiri Sushi Bar Network", true, false, false, false, 4); HaraKiriSushiBarServer.setPortProperties(1); AddToAllServers(HaraKiriSushiBarServer); var PhantasyServer = new Server(); - PhantasyServer.init(createRandomIp(), "phantasy", "Phantasy Club", true, false, false, false, 4); + PhantasyServer.init(createRandomIp(), "phantasy", "Phantasy Club", true, false, false, false, 0); PhantasyServer.setHackingParameters(100, 25000000, 20, 35); PhantasyServer.setPortProperties(2); AddToAllServers(PhantasyServer); diff --git a/src/Terminal.js b/src/Terminal.js index ffc96b44d..86110badd 100644 --- a/src/Terminal.js +++ b/src/Terminal.js @@ -794,9 +794,9 @@ var Terminal = { if (commandArray.length != 1) { post("Incorrect usage of free command. Usage: free"); return; } - post("Total: " + Player.getCurrentServer().maxRam.toString() + " GB"); - post("Used: " + Player.getCurrentServer().ramUsed.toString() + " GB"); - post("Available: " + (Player.getCurrentServer().maxRam - Player.getCurrentServer().ramUsed).toString() + " GB"); + post("Total: " + formatNumber(Player.getCurrentServer().maxRam, 2) + " GB"); + post("Used: " + formatNumber(Player.getCurrentServer().ramUsed, 2) + " GB"); + post("Available: " + formatNumber(Player.getCurrentServer().maxRam - Player.getCurrentServer().ramUsed, 2) + " GB"); }, //First called when the "run [program]" command is called. Checks to see if you diff --git a/utils/StringHelperFunctions.js b/utils/StringHelperFunctions.js index a97224d46..b518b5a0f 100644 --- a/utils/StringHelperFunctions.js +++ b/utils/StringHelperFunctions.js @@ -71,4 +71,22 @@ function formatNumber(num, numFractionDigits) { minimumFractionDigits: numFractionDigits, maximumFractionDigits: numFractionDigits }); +} + +//Counters the number of times a substring occurs in a string +function numOccurrences(string, subString) { + string += ""; + subString += ""; + if (subString.length <= 0) return (string.length + 1); + + var n = 0, pos = 0, step = subString.length; + + while (true) { + pos = string.indexOf(subString, pos); + if (pos >= 0) { + ++n; + pos += step; + } else break; + } + return n; } \ No newline at end of file