From cb7dda92937ffeb1a39af80d9bbba3c673d2e293 Mon Sep 17 00:00:00 2001 From: Daniel Xie Date: Wed, 5 Jul 2017 17:33:46 -0500 Subject: [PATCH] Rebalancing stock market and infiltration, updated changelog/documentation --- src/Constants.js | 25 ++++++++++++++-- src/Location.js | 72 +++++++++++++++++++++++----------------------- src/Server.js | 5 +++- src/StockMarket.js | 40 +++++++++++++------------- 4 files changed, 83 insertions(+), 59 deletions(-) diff --git a/src/Constants.js b/src/Constants.js index e04e8920b..8e321b3de 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -1,5 +1,5 @@ CONSTANTS = { - Version: "0.24.0", + Version: "0.24.1", //Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience //and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then @@ -699,6 +699,24 @@ CONSTANTS = { "World Stock Exchange account and TIX API Access
", Changelog: + "v0.24.1
" + + "-Adjusted cost of upgrading home computer RAM. Should be a little cheaper for the first few upgrades (up to ~64GB), and " + + "then will start being more expensive than before. High RAM upgrades should now be significantly more expensive than before.
" + + "-Slightly lowered the starting money available on most mid-game and end-game servers (servers with required hacking level " + + "greater than 200) by about 10-15%
" + + "-Rebalanced company/company position reputation gains and requirements
" + + "-Studying at a university now gives slightly more EXP and early jobs give slightly less EXP
" + + "-Studying at a university is now considerably more expensive
" + + "-Rebalanced stock market
" + + "-Significantly increased cost multiplier for purchasing additional Hacknet Nodes
" + + "-The rate at which facility security level increases during infiltration for each clearance level " + + "was lowered slightly for all companies
" + + "-Updated Faction descriptions
" + + "-Changed the way alias works. Normal aliases now only work at the start of a Terminal command (they will only " + + "replace the first word in the Terminal command). You can also create global aliases that work on any part of the " + + 'command, like before. Declare global aliases by entering the optional -g flag: alias -g name="value" - Courtesy of Github user MrNuggelz' + + "-'top' Terminal command implemented courtesy of Github user LTCNugget. Currently, the formatting gets screwed up " + + "if your script names are really long.

" + "v0.24.0
" + "-Players now have HP, which is displayed in the top right. To regain HP, visit the hospital. Currently " + "the only way to lose HP is through infiltration
" + @@ -915,11 +933,14 @@ CONSTANTS = { "-Rebalanced company/company position reputation gains and requirements
" + "-Studying at a university now gives slightly more EXP and early jobs give slightly less EXP
" + "-Studying at a university is now considerably more expensive
" + + "-Rebalanced stock market
" + "-Significantly increased cost multiplier for purchasing additional Hacknet Nodes
" + + "-The rate at which facility security level increases during infiltration for each clearance level " + + "was lowered slightly for all companies
" + "-Updated Faction descriptions
" + "-Changed the way alias works. Normal aliases now only work at the start of a Terminal command (they will only " + "replace the first word in the Terminal command). You can also create global aliases that work on any part of the " + - "command, like before. Declare global aliases by entering the optional -g flag: alias -g alias=Courtesy of Github user MrNuggelz" + + 'command, like before. Declare global aliases by entering the optional -g flag: alias -g name="value" - Courtesy of Github user MrNuggelz' + "-'top' Terminal command implemented courtesy of Github user LTCNugget. Currently, the formatting gets screwed up " + "if your script names are really long.

" + "v0.24.0
" + diff --git a/src/Location.js b/src/Location.js index dc750324a..ab4f47597 100644 --- a/src/Location.js +++ b/src/Location.js @@ -369,7 +369,7 @@ displayLocationContent = function() { purchaseTor.style.display = "block"; purchaseHomeRam.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumECorp, - 6000, 100, 150, 14); + 6000, 100, 150, 13); break; case Locations.AevumBachmanAndAssociates: @@ -382,7 +382,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumBachmanAndAssociates, - 1500, 36, 60, 10); + 1500, 36, 60, 9.5); break; case Locations.AevumClarkeIncorporated: @@ -395,7 +395,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumClarkeIncorporated, - 2400, 28, 75, 9.5); + 2400, 28, 75, 9); break; case Locations.AevumFulcrumTechnologies: @@ -414,7 +414,7 @@ displayLocationContent = function() { purchaseTor.style.display = "block"; purchaseHomeRam.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumFulcrumTechnologies, - 6000, 84, 100, 16); + 6000, 84, 100, 15); break; case Locations.AevumAeroCorp: @@ -426,7 +426,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumAeroCorp, - 2000, 26, 50, 10.5); + 2000, 26, 50, 10); break; case Locations.AevumGalacticCybersystems: @@ -439,7 +439,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; businessJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumGalacticCybersystems, - 1400, 24, 50, 10); + 1400, 24, 50, 9); break; case Locations.AevumWatchdogSecurity: @@ -453,7 +453,7 @@ displayLocationContent = function() { securityJob.style.display = "block"; agentJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumWatchdogSecurity, - 850, 12, 30, 8); + 850, 12, 30, 7.5); break; case Locations.AevumRhoConstruction: @@ -462,7 +462,7 @@ displayLocationContent = function() { softwareJob.style.display = "block"; businessJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumRhoConstruction, - 600, 8, 20, 4.5); + 600, 8, 20, 4); break; case Locations.AevumPolice: @@ -471,7 +471,7 @@ displayLocationContent = function() { softwareJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumPolice, - 700, 10, 25, 6); + 700, 10, 25, 5); break; case Locations.AevumNetLinkTechnologies: @@ -489,7 +489,7 @@ displayLocationContent = function() { purchaseTor.style.display = "block"; purchaseHomeRam.style.display = "block"; setInfiltrateButton(infiltrate, Locations.AevumNetLinkTechnologies, - 150, 5, 15, 3.5); + 150, 5, 15, 3); break; case Locations.AevumCrushFitnessGym: @@ -523,7 +523,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.ChongqingKuaiGongInternational, - 5500, 42, 100, 15); + 5500, 42, 100, 14); break; case Locations.ChongqingSolarisSpaceSystems: @@ -535,7 +535,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.ChongqingSolarisSpaceSystems, - 3600, 24, 75, 14); + 3600, 24, 75, 13); break; @@ -564,7 +564,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12MegaCorp, - 6000, 100, 125, 15.5); + 6000, 100, 125, 15); break; case Locations.Sector12BladeIndustries: @@ -577,7 +577,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12BladeIndustries, - 3000, 40, 100, 11); + 3000, 40, 100, 10); break; case Locations.Sector12FourSigma: @@ -590,7 +590,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12FourSigma, - 1500, 50, 100, 16); + 1500, 50, 100, 14.5); break; case Locations.Sector12IcarusMicrosystems: @@ -603,7 +603,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; businessJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12IcarusMicrosystems, - 900, 28, 70, 12); + 900, 28, 70, 11); break; case Locations.Sector12UniversalEnergy: @@ -616,7 +616,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; businessJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12UniversalEnergy, - 775, 20, 50, 10); + 775, 20, 50, 9.5); break; case Locations.Sector12DeltaOne: @@ -628,7 +628,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12DeltaOne, - 1200, 30, 75, 11); + 1200, 30, 75, 10); break; case Locations.Sector12CIA: @@ -641,7 +641,7 @@ displayLocationContent = function() { securityJob.style.display = "block"; agentJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12CIA, - 1450, 38, 80, 12.5); + 1450, 38, 80, 12); break; case Locations.Sector12NSA: @@ -654,7 +654,7 @@ displayLocationContent = function() { securityJob.style.display = "block"; agentJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12NSA, - 1400, 34, 80, 12); + 1400, 34, 80, 11); break; case Locations.Sector12AlphaEnterprises: @@ -668,7 +668,7 @@ displayLocationContent = function() { purchaseTor.style.display = "block"; purchaseHomeRam.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12AlphaEnterprises, - 250, 10, 40, 5); + 250, 10, 40, 4.5); break; case Locations.Sector12CarmichaelSecurity: @@ -682,7 +682,7 @@ displayLocationContent = function() { securityJob.style.display = "block"; agentJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12CarmichaelSecurity, - 500, 14, 60, 5); + 500, 14, 60, 4.5); break; case Locations.Sector12FoodNStuff: @@ -698,7 +698,7 @@ displayLocationContent = function() { employeeJob.style.display = "block"; employeePartTimeJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.Sector12JoesGuns, - 100, 4, 20, 4); + 100, 4, 20, 3.5); break; case Locations.Sector12IronGym: @@ -731,7 +731,7 @@ displayLocationContent = function() { securityEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.NewTokyoDefComm, - 1300, 24, 70, 9.5); + 1300, 24, 70, 9); break; case Locations.NewTokyoVitaLife: @@ -744,7 +744,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; businessJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.NewTokyoVitaLife, - 750, 18, 100, 9); + 750, 18, 100, 8); break; case Locations.NewTokyoGlobalPharmaceuticals: @@ -758,7 +758,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.NewTokyoGlobalPharmaceuticals, - 900, 20, 80, 9); + 900, 20, 80, 8.5); break; case Locations.NewTokyoNoodleBar: @@ -797,7 +797,7 @@ displayLocationContent = function() { purchase256gb.style.display = "block"; purchaseHomeRam.style.display = "block"; setInfiltrateButton(infiltrate, Locations.IshimaStormTechnologies, - 700, 20, 100, 10.5); + 700, 20, 100, 10); break; case Locations.IshimaNovaMedical: @@ -810,7 +810,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; businessJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.IshimaNovaMedical, - 600, 16, 50, 8); + 600, 16, 50, 7.5); break; case Locations.IshimaOmegaSoftware: @@ -828,7 +828,7 @@ displayLocationContent = function() { purchaseTor.style.display = "block"; purchaseHomeRam.style.display = "block"; setInfiltrateButton(infiltrate, Locations.IshimaOmegaSoftware, - 200, 5, 40, 4.5); + 200, 5, 40, 4); break; case Locations.VolhavenTravelAgency: @@ -861,7 +861,7 @@ displayLocationContent = function() { purchase512gb.style.display = "block"; purchase1tb.style.display = "block"; setInfiltrateButton(infiltrate, Locations.VolhavenOmniTekIncorporated, - 1500, 38, 100, 10); + 1500, 38, 100, 9.5); break; case Locations.VolhavenNWO: @@ -874,7 +874,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.VolhavenNWO, - 1800, 48, 200, 12); + 1800, 48, 200, 11); break; case Locations.VolhavenHeliosLabs: @@ -886,7 +886,7 @@ displayLocationContent = function() { securityEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.VolhavenHeliosLabs, - 1200, 24, 75, 9.5); + 1200, 24, 75, 9); break; case Locations.VolhavenOmniaCybersystems: @@ -898,7 +898,7 @@ displayLocationContent = function() { networkEngineerJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.VolhavenOmniaCybersystems, - 900, 24, 90, 10); + 900, 24, 90, 9.5); break; case Locations.VolhavenLexoCorp: @@ -912,7 +912,7 @@ displayLocationContent = function() { businessJob.style.display = "block"; securityJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.VolhavenLexoCorp, - 500, 10, 40, 6); + 500, 10, 40, 5.5); break; case Locations.VolhavenSysCoreSecurities: @@ -923,7 +923,7 @@ displayLocationContent = function() { securityEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block"; setInfiltrateButton(infiltrate, Locations.VolhavenSysCoreSecurities, - 600, 12, 50, 7); + 600, 12, 50, 6); break; case Locations.VolhavenCompuTek: @@ -944,7 +944,7 @@ displayLocationContent = function() { purchaseTor.style.display = "block"; purchaseHomeRam.style.display = "block"; setInfiltrateButton(infiltrate, Locations.VolhavenCompuTek, - 300, 8, 35, 6); + 300, 8, 35, 5); break; case Locations.VolhavenMilleniumFitnessGym: diff --git a/src/Server.js b/src/Server.js index 3fad2d652..5073b712d 100644 --- a/src/Server.js +++ b/src/Server.js @@ -703,7 +703,10 @@ processSingleServerGrowth = function(server, numCycles) { } server.moneyAvailable *= serverGrowth; - if (server.moneyMax && server.moneyAvailable >= server.moneyMax) { + if (server.moneyMax && isNaN(server.moneyAvailable)) { + server.moneyAvailable = server.moneyMax; + } + if (server.moneyMax && server.moneyAvailable > server.moneyMax) { server.moneyAvailable = server.moneyMax; return 1; } diff --git a/src/StockMarket.js b/src/StockMarket.js index 7e138e486..d2b4c97c6 100644 --- a/src/StockMarket.js +++ b/src/StockMarket.js @@ -63,67 +63,67 @@ function initStockMarket() { StockMarket = {}; var ecorp = Locations.AevumECorp; - var ecorpStk = new Stock(ecorp, StockSymbols[ecorp], 0.5, true, 20, getRandomInt(20000, 25000)); + var ecorpStk = new Stock(ecorp, StockSymbols[ecorp], 0.5, true, 16, getRandomInt(20000, 25000)); StockMarket[ecorp] = ecorpStk; var megacorp = Locations.Sector12MegaCorp; - var megacorpStk = new Stock(megacorp, StockSymbols[megacorp], 0.5, true, 20, getRandomInt(25000, 33000)); + var megacorpStk = new Stock(megacorp, StockSymbols[megacorp], 0.5, true, 16, getRandomInt(25000, 33000)); StockMarket[megacorp] = megacorpStk; var blade = Locations.Sector12BladeIndustries; - var bladeStk = new Stock(blade, StockSymbols[blade], 0.75, true, 16, getRandomInt(15000, 22000)); + var bladeStk = new Stock(blade, StockSymbols[blade], 0.75, true, 13, getRandomInt(15000, 22000)); StockMarket[blade] = bladeStk; var clarke = Locations.AevumClarkeIncorporated; - var clarkeStk = new Stock(clarke, StockSymbols[clarke], 0.7, true, 15, getRandomInt(15000, 20000)); + var clarkeStk = new Stock(clarke, StockSymbols[clarke], 0.7, true, 12, getRandomInt(15000, 20000)); StockMarket[clarke] = clarkeStk; var omnitek = Locations.VolhavenOmniTekIncorporated; - var omnitekStk = new Stock(omnitek, StockSymbols[omnitek], 0.65, true, 15, getRandomInt(35000, 40000)); + var omnitekStk = new Stock(omnitek, StockSymbols[omnitek], 0.65, true, 12, getRandomInt(35000, 40000)); StockMarket[omnitek] = omnitekStk; var foursigma = Locations.Sector12FourSigma; - var foursigmaStk = new Stock(foursigma, StockSymbols[foursigma], 1.25, true, 20, getRandomInt(75000, 80000)); + var foursigmaStk = new Stock(foursigma, StockSymbols[foursigma], 1.1, true, 18, getRandomInt(60000, 70000)); StockMarket[foursigma] = foursigmaStk; var kuaigong = Locations.ChongqingKuaiGongInternational; - var kuaigongStk = new Stock(kuaigong, StockSymbols[kuaigong], 0.8, true, 12, getRandomInt(20000, 24000)); + var kuaigongStk = new Stock(kuaigong, StockSymbols[kuaigong], 0.8, true, 10, getRandomInt(20000, 24000)); StockMarket[kuaigong] = kuaigongStk; var fulcrum = Locations.AevumFulcrumTechnologies; - var fulcrumStk = new Stock(fulcrum, StockSymbols[fulcrum], 1.25, true, 21, getRandomInt(30000, 35000)); + var fulcrumStk = new Stock(fulcrum, StockSymbols[fulcrum], 1.25, true, 17, getRandomInt(30000, 35000)); StockMarket[fulcrum] = fulcrumStk; var storm = Locations.IshimaStormTechnologies; - var stormStk = new Stock(storm, StockSymbols[storm], 0.85, true, 9, getRandomInt(21000, 24000)); + var stormStk = new Stock(storm, StockSymbols[storm], 0.85, true, 7, getRandomInt(21000, 24000)); StockMarket[storm] = stormStk; var defcomm = Locations.NewTokyoDefComm; - var defcommStk = new Stock(defcomm, StockSymbols[defcomm], 0.65, true, 12, getRandomInt(10000, 15000)); + var defcommStk = new Stock(defcomm, StockSymbols[defcomm], 0.65, true, 10, getRandomInt(10000, 15000)); StockMarket[defcomm] = defcommStk; var helios = Locations.VolhavenHeliosLabs; - var heliosStk = new Stock(helios, StockSymbols[helios], 0.6, true, 11, getRandomInt(12000, 16000)); + var heliosStk = new Stock(helios, StockSymbols[helios], 0.6, true, 9, getRandomInt(12000, 16000)); StockMarket[helios] = heliosStk; var vitalife = Locations.NewTokyoVitaLife; - var vitalifeStk = new Stock(vitalife, StockSymbols[vitalife], 0.75, true, 7.5, getRandomInt(10000, 12000)); + var vitalifeStk = new Stock(vitalife, StockSymbols[vitalife], 0.75, true, 7, getRandomInt(10000, 12000)); StockMarket[vitalife] = vitalifeStk; var icarus = Locations.Sector12IcarusMicrosystems; - var icarusStk = new Stock(icarus, StockSymbols[icarus], 0.65, true, 9, getRandomInt(16000, 20000)); + var icarusStk = new Stock(icarus, StockSymbols[icarus], 0.65, true, 7.5, getRandomInt(16000, 20000)); StockMarket[icarus] = icarusStk; var universalenergy = Locations.Sector12UniversalEnergy; - var universalenergyStk = new Stock(universalenergy, StockSymbols[universalenergy], 0.55, true, 12, getRandomInt(20000, 25000)); + var universalenergyStk = new Stock(universalenergy, StockSymbols[universalenergy], 0.55, true, 10, getRandomInt(20000, 25000)); StockMarket[universalenergy] = universalenergyStk; var galactic = Locations.AevumGalacticCybersystems; - var galacticStk = new Stock(galactic, StockSymbols[galactic], 0.6, true, 6, getRandomInt(8000, 10000)); + var galacticStk = new Stock(galactic, StockSymbols[galactic], 0.6, true, 5, getRandomInt(8000, 10000)); StockMarket[galactic] = galacticStk; var aerocorp = Locations.AevumAeroCorp; - var aerocorpStk = new Stock(aerocorp, StockSymbols[aerocorp], 0.6, true, 7, getRandomInt(10000, 15000)); + var aerocorpStk = new Stock(aerocorp, StockSymbols[aerocorp], 0.6, true, 6, getRandomInt(10000, 15000)); StockMarket[aerocorp] = aerocorpStk; var omnia = Locations.VolhavenOmniaCybersystems; @@ -131,19 +131,19 @@ function initStockMarket() { StockMarket[omnia] = omniaStk; var solaris = Locations.ChongqingSolarisSpaceSystems; - var solarisStk = new Stock(solaris, StockSymbols[solaris], 0.75, true, 10, getRandomInt(18000, 24000)); + var solarisStk = new Stock(solaris, StockSymbols[solaris], 0.75, true, 8.5, getRandomInt(18000, 24000)); StockMarket[solaris] = solarisStk; var globalpharm = Locations.NewTokyoGlobalPharmaceuticals; - var globalpharmStk = new Stock(globalpharm, StockSymbols[globalpharm], 0.6, true, 12, getRandomInt(18000, 24000)); + var globalpharmStk = new Stock(globalpharm, StockSymbols[globalpharm], 0.6, true, 10.5, getRandomInt(18000, 24000)); StockMarket[globalpharm] = globalpharmStk; var nova = Locations.IshimaNovaMedical; - var novaStk = new Stock(nova, StockSymbols[nova], 0.75, true, 6, getRandomInt(18000, 24000)); + var novaStk = new Stock(nova, StockSymbols[nova], 0.75, true, 5, getRandomInt(18000, 24000)); StockMarket[nova] = novaStk; var watchdog = Locations.AevumWatchdogSecurity; - var watchdogStk = new Stock(watchdog, StockSymbols[watchdog], 1, true, 2, getRandomInt(5000, 7500)); + var watchdogStk = new Stock(watchdog, StockSymbols[watchdog], 1, true, 1.5, getRandomInt(5000, 7500)); StockMarket[watchdog] = watchdogStk; var lexocorp = Locations.VolhavenLexoCorp;