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;