diff --git a/css/menupages.css b/css/menupages.css
index 72c6fc9e6..48102617c 100644
--- a/css/menupages.css
+++ b/css/menupages.css
@@ -201,6 +201,10 @@
width: 99%;
}
+#create-program-page-text {
+ width: 80%;
+}
+
.create-program-a-link-button {
text-decoration: none;
background-color: #555;
@@ -210,6 +214,7 @@
border-right: 1px solid #333333;
border-bottom: 1px solid #333333;
border-left: 1px solid #333333;
+ width: 50%;
}
.create-program-a-link-button-inactive {
diff --git a/css/styles.css b/css/styles.css
index 720acbfbd..47298106b 100644
--- a/css/styles.css
+++ b/css/styles.css
@@ -140,4 +140,27 @@ tr:focus {
color: #333;
border-radius: 0px;
padding: 0px;
+}
+
+/* Tool tips (when hovering over an element */
+.tooltip {
+ position: relative;
+ display: inline-block;
+}
+
+.tooltip .tooltiptext {
+ visibility: hidden;
+ width: 200px;
+ background-color: black;
+ border: 2px solid white;
+ color: white;
+ text-align: center;
+ padding: 4px;
+
+ position: absolute;
+ z-index: 1;
+}
+
+.tooltip:hover .tooltiptext {
+ visibility: visible;
}
\ No newline at end of file
diff --git a/index.html b/index.html
index f9de66ff8..81737cb14 100644
--- a/index.html
+++ b/index.html
@@ -376,13 +376,40 @@
+
+ This page displays any programs that you are able to create. Writing the code for a program takes time, which
+ can vary based on how complex the program is. Once you start working on a program you must see it all the way
+ through. If you cancel before the program is complete you will lose all your progress and have to start all over
+ if you want to code it again.
+
+
diff --git a/src/Augmentations.js b/src/Augmentations.js
index 1ef6c9774..2350ce7b8 100644
--- a/src/Augmentations.js
+++ b/src/Augmentations.js
@@ -436,7 +436,7 @@ initAugmentations = function() {
var SynapticEnhancement = new Augmentation(AugmentationNames.SynapticEnhancement);
SynapticEnhancement.setRequirements(1500, 1200000);
SynapticEnhancement.setInfo("A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
- "induce stronger synaptic activity. This improves the the user's cognitive abilities.
" +
+ "induce stronger synaptic activity. This improves the user's cognitive abilities.
" +
"This augmentation increases the player's hacking speed by 1%.");
SynapticEnhancement.addToFactions(["CyberSec"]);
if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
@@ -684,7 +684,7 @@ initAugmentations = function() {
AddToAugmentations(PCDNINeuralNetwork);
var ADRPheromone1 = new Augmentation(AugmentationNames.ADRPheromone1);
- ADRPheromone1.setRequirements(2000, 2000000);
+ ADRPheromone1.setRequirements(1500, 2000000);
ADRPheromone1.setInfo("The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
"an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted " +
"triggers feelings of admiration and approval in other people.
" +
@@ -700,7 +700,7 @@ initAugmentations = function() {
//HacknetNode Augmentations
var HacknetNodeCPUUpload = new Augmentation(AugmentationNames.HacknetNodeCPUUpload);
- HacknetNodeCPUUpload.setRequirements(4000, 5000000);
+ HacknetNodeCPUUpload.setRequirements(3000, 5000000);
HacknetNodeCPUUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's CPU into " +
"the brain. This allows the user to engineer custom hardware and software " +
"for the Hacknet Node that provides better performance.
" +
@@ -715,7 +715,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeCPUUpload);
var HacknetNodeCacheUpload = new Augmentation(AugmentationNames.HacknetNodeCacheUpload);
- HacknetNodeCacheUpload.setRequirements(2000, 2500000);
+ HacknetNodeCacheUpload.setRequirements(1500, 2500000);
HacknetNodeCacheUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
"into the brain. This allows the user to engineer custom cache hardware for the " +
"Hacknet Node that offers better performance.
" +
@@ -730,7 +730,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeCacheUpload);
var HacknetNodeNICUpload = new Augmentation(AugmentationNames.HacknetNodeNICUpload);
- HacknetNodeNICUpload.setRequirements(1000, 1000000);
+ HacknetNodeNICUpload.setRequirements(750, 1000000);
HacknetNodeNICUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
"into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
"offers better performance.
" +
@@ -745,7 +745,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeNICUpload);
var HacknetNodeKernelDNI = new Augmentation(AugmentationNames.HacknetNodeKernelDNI);
- HacknetNodeKernelDNI.setRequirements(12000, 30000000);
+ HacknetNodeKernelDNI.setRequirements(8000, 30000000);
HacknetNodeKernelDNI.setInfo("Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
"Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
"electrochemical signals.
" +
@@ -758,7 +758,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeKernelDNI);
var HacknetNodeCoreDNI = new Augmentation(AugmentationNames.HacknetNodeCoreDNI);
- HacknetNodeCoreDNI.setRequirements(20000, 50000000);
+ HacknetNodeCoreDNI.setRequirements(12000, 50000000);
HacknetNodeCoreDNI.setInfo("Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
"to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
"the mind's electrochemical signals.
" +
@@ -777,8 +777,10 @@ initAugmentations = function() {
NeuroFluxGovernor.owned = oldAug.owned;
NeuroFluxGovernor.level = oldAug.level;
var mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level-1);
- NeuroFluxGovernor.setRequirements(1500 * mult, 1500000 * mult);
+ NeuroFluxGovernor.setRequirements(1000 * mult, 1000000 * mult);
delete Augmentations[AugmentationNames.NeuroFluxGovernor];
+ } else {
+ NeuroFluxGovernor.setRequirements(1000, 1000000);
}
NeuroFluxGovernor.setInfo("A device that is embedded in the back of the neck. The NeuroFlux Governor " +
"monitors and regulates nervous impulses coming to and from the spinal column, " +
@@ -790,7 +792,7 @@ initAugmentations = function() {
AddToAugmentations(NeuroFluxGovernor);
var Neurotrainer1 = new Augmentation(AugmentationNames.Neurotrainer1);
- Neurotrainer1.setRequirements(1000, 1000000);
+ Neurotrainer1.setRequirements(1000, 750000);
Neurotrainer1.setInfo("A decentralized cranial implant that improves the brain's ability to learn. It is " +
"installed by releasing millions of nanobots into the human brain, each of which " +
"attaches to a different neural pathway to enhance the brain's ability to retain " +
@@ -804,7 +806,7 @@ initAugmentations = function() {
AddToAugmentations(Neurotrainer1);
var Neurotrainer2 = new Augmentation(AugmentationNames.Neurotrainer2);
- Neurotrainer2.setRequirements(5000, 10000000);
+ Neurotrainer2.setRequirements(4000, 10000000);
Neurotrainer2.setInfo("A decentralized cranial implant that improves the brain's ability to learn. This " +
"is a more powerful version of the Neurotrainer I augmentation, but it does not " +
"require Neurotrainer I to be installed as a prerequisite.
" +
diff --git a/src/Constants.js b/src/Constants.js
index 5e9b56218..443a605ca 100644
--- a/src/Constants.js
+++ b/src/Constants.js
@@ -18,13 +18,13 @@ CONSTANTS = {
/* Hacknet Node constants */
HacknetNodeMoneyGainPerLevel: 0.75,
HacknetNodePurchaseNextMult: 1.35, //Multiplier when purchasing an additional hacknet node
- HacknetNodeUpgradeLevelMult: 1.07, //Multiplier for cost when upgrading level
- HacknetNodeUpgradeRamMult: 1.2, //Multiplier for cost when upgrading RAM
- HacknetNodeUpgradeCoreMult: 1.5, //Multiplier for cost when buying another core
+ HacknetNodeUpgradeLevelMult: 1.06, //Multiplier for cost when upgrading level
+ HacknetNodeUpgradeRamMult: 1.15, //Multiplier for cost when upgrading RAM
+ HacknetNodeUpgradeCoreMult: 1.45, //Multiplier for cost when buying another core
/* Augmentation */
//NeuroFlux Governor cost multiplier as you level up
- NeuroFluxGovernorLevelMult: 1.1,
+ NeuroFluxGovernorLevelMult: 1.08,
/* Script related things */
//Time (ms) it takes to run one operation in Netscript.
@@ -83,6 +83,12 @@ CONSTANTS = {
ClassManagement: "taking a Management course",
ClassLeadership: "taking a Leadership course",
+ ClassDataStructuresBaseCost: 1,
+ ClassNetworksBaseCost: 5,
+ ClassAlgorithmsBaseCost: 20,
+ ClassManagementBaseCost: 10,
+ ClassLeadershipBaseCost: 20,
+
CrimeShoplift: "shoplift",
CrimeMug: "mug someone",
CrimeDrugs: "deal drugs",
diff --git a/src/CreateProgram.js b/src/CreateProgram.js
index 1168b0261..a23e45859 100644
--- a/src/CreateProgram.js
+++ b/src/CreateProgram.js
@@ -11,14 +11,14 @@ Programs = {
//TODO Right now the times needed to complete work are hard-coded...
//maybe later make this dependent on hacking level or something
function displayCreateProgramContent() {
- var portHackALink = document.getElementById("create-program-porthack");
+ var nukeALink = document.getElementById("create-program-nuke");
var bruteSshALink = document.getElementById("create-program-brutessh");
var ftpCrackALink = document.getElementById("create-program-ftpcrack");
var relaySmtpALink = document.getElementById("create-program-relaysmtp");
var httpWormALink = document.getElementById("create-program-httpworm");
var sqlInjectALink = document.getElementById("create-program-sqlinject");
- portHackALink.style.display = "none";
+ nukeALink.style.display = "none";
bruteSshALink.style.display = "none";
ftpCrackALink.style.display = "none";
relaySmtpALink.style.display = "none";
@@ -27,7 +27,7 @@ function displayCreateProgramContent() {
//PortHack.exe (in case you delete it lol)
if (Player.getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) {
- portHackALink.style.display = "block";
+ nukeALink.style.display = "block";
}
//BruteSSH
diff --git a/src/Crimes.js b/src/Crimes.js
index 412fa6d02..457b77803 100644
--- a/src/Crimes.js
+++ b/src/Crimes.js
@@ -1,32 +1,32 @@
/* Crimes.js */
function commitShopliftCrime() {
Player.crimeType = CONSTANTS.CrimeShoplift;
- Player.startCrime(0, 0.5, 0.5, 0.5, 0.5, 0, 500, 3000); //$166.66/s, .167 exp/s
+ Player.startCrime(0, 0.5, 0.5, 0.5, 0.5, 0, 1000, 2000); //$500/s, .25 exp/s
}
function commitMugCrime() {
Player.crimeType = CONSTANTS.CrimeMug;
- Player.startCrime(0, 1, 1, 1, 1, 0, 1000, 5000); //$200/s, .2 exp/s
+ Player.startCrime(0, 1, 1, 1, 1, 0, 3000, 4000); //$750/s, .2 exp/s
}
function commitDealDrugsCrime() {
Player.crimeType = CONSTANTS.CrimeDrugs;
- Player.startCrime(0, 2, 2, 2, 2, 2, 2500, 10000); //$250/s, .2 exp/s
+ Player.startCrime(0, 2, 2, 2, 2, 2, 10000, 10000); //$1000/s, .2 exp/s
}
function commitTraffickArmsCrime() {
Player.crimeType = CONSTANTS.CrimeTraffickArms;
- Player.startCrime(0, 8, 8, 8, 8, 12, 15000, 40000); //$375/s, .2 combat exp/s, .3 cha exp/s
+ Player.startCrime(0, 8, 8, 8, 8, 12, 60000, 40000); //$1500/s, .2 combat exp/s, .3 cha exp/s
}
function commitHomicideCrime() {
Player.crimeType = CONSTANTS.CrimeHomicide;
- Player.startCrime(0, 2, 2, 2, 2, 0, 600, 3000); //$200/s, 0.66 combat exp/s
+ Player.startCrime(0, 2, 2, 2, 2, 0, 1000, 3000); //$333.3/s, 0.66 combat exp/s
}
function commitKidnapCrime() {
Player.crimeType = CONSTANTS.CrimeKidnap;
- Player.startCrime(0, 20, 20, 20, 20, 20, 50000, 120000); //$416.67/s. .167 exp/s
+ Player.startCrime(0, 20, 20, 20, 20, 20, 200000, 120000); //$1666.666/s. .167 exp/s
}
function determineCrimeSuccess(crime, moneyGained) {
@@ -95,7 +95,7 @@ function determineCrimeChanceTraffickArms() {
Player.strength / CONSTANTS.MaxSkillLevel +
Player.defense / CONSTANTS.MaxSkillLevel +
Player.dexterity / CONSTANTS.MaxSkillLevel +
- Player.agility / CONSTANTS.MaxSkillLevel));
+ Player.agility / CONSTANTS.MaxSkillLevel)) / 2;
return Math.min(chance, 1);
}
diff --git a/src/Location.js b/src/Location.js
index 5409f75fe..ef7842675 100644
--- a/src/Location.js
+++ b/src/Location.js
@@ -1525,18 +1525,12 @@ displayUniversityLocationContent = function(costMult) {
classManagementButton.style.display = "block";
classLeadershipButton.style.display = "block";
- //Costs (per second)
- var baseDataStructuresCost = 1;
- var baseNetworksCost = 5;
- var baseAlgorithmsCost = 20;
- var baseManagementCost = 10;
- var baseLeadershipCost = 20;
-
- var dataStructuresCost = baseDataStructuresCost * costMult;
- var networksCost = baseNetworksCost * costMult;
- var algorithmsCost = baseAlgorithmsCost * costMult;
- var managementCost = baseManagementCost * costMult;
- var leadershipCost = baseLeadershipCost * costMult;
+ //Costs (per second)
+ var dataStructuresCost = CONSTANTS.ClassDataStructuresBaseCost * costMult;
+ var networksCost = CONSTANTS.ClassNetworksBaseCost * costMult;
+ var algorithmsCost = CONSTANTS.ClassAlgorithmsBaseCost * costMult;
+ var managementCost = CONSTANTS.ClassManagementBaseCost * costMult;
+ var leadershipCost = CONSTANTS.ClassLeadershipBaseCost * costMult;
//Update button text to show cost
classDataStructuresButton.innerHTML = "Take Data Structures course ($" + dataStructuresCost + " / sec)";
diff --git a/src/Player.js b/src/Player.js
index 1da5cfd28..6f70893c7 100644
--- a/src/Player.js
+++ b/src/Player.js
@@ -172,7 +172,7 @@ PlayerObject.prototype.init = function() {
AddToAllServers(t_homeComp);
this.getHomeComputer().programs.push(Programs.NukeProgram);
-}
+}
PlayerObject.prototype.getCurrentServer = function() {
return AllServers[this.currentServer];
@@ -792,19 +792,13 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
this.className = className;
var gameCPS = 1000 / Engine._idleSpeed;
- //Base costs/exp (per second)
- var baseDataStructuresCost = 1;
- var baseNetworksCost = 5;
- var baseAlgorithmsCost = 20;
- var baseManagementCost = 10;
- var baseLeadershipCost = 20;
- var baseStudyComputerScienceExp = 0.02;
- var baseDataStructuresExp = 0.1;
- var baseNetworksExp = 0.4;
- var baseAlgorithmsExp = 1.5;
- var baseManagementExp = 0.8;
- var baseLeadershipExp = 1.5;
+ var baseStudyComputerScienceExp = 0.05;
+ var baseDataStructuresExp = 0.2;
+ var baseNetworksExp = 0.8;
+ var baseAlgorithmsExp = 2.0;
+ var baseManagementExp = 1.0;
+ var baseLeadershipExp = 2.0;
//Find cost and exp gain per game cycle
var cost = 0;
@@ -815,23 +809,23 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
hackExp = baseStudyComputerScienceExp * expMult / gameCPS;
break;
case CONSTANTS.ClassDataStructures:
- cost = baseDataStructuresCost * costMult / gameCPS;
+ cost = CONSTANTS.ClassDataStructuresBaseCost * costMult / gameCPS;
hackExp = baseDataStructuresExp * expMult / gameCPS;
break;
case CONSTANTS.ClassNetworks:
- cost = baseNetworksCost * costMult / gameCPS;
+ cost = CONSTANTS.ClassNetworksBaseCost * costMult / gameCPS;
hackExp = baseNetworksExp * expMult / gameCPS;
break;
case CONSTANTS.ClassAlgorithms:
- cost = baseAlgorithmsCost * costMult / gameCPS;
+ cost = CONSTANTS.ClassAlgorithmsBaseCost * costMult / gameCPS;
hackExp = baseAlgorithmsExp * expMult / gameCPS;
break;
case CONSTANTS.ClassManagement:
- cost = baseManagementCost * costMult / gameCPS;
+ cost = CONSTANTS.ClassManagementBaseCost * costMult / gameCPS;
chaExp = baseManagementExp * expMult / gameCPS;
break;
case CONSTANTS.ClassLeadership:
- cost = baseLeadershipCost * costMult / gameCPS;
+ cost = CONSTANTS.ClassLeadershipBaseCost * costMult / gameCPS;
chaExp = baseLeadershipExp * expMult / gameCPS;
break;
default:
@@ -951,11 +945,16 @@ PlayerObject.prototype.startCrime = function(hackExp, strExp, defExp, dexExp, ag
PlayerObject.prototype.commitCrime = function (numCycles) {
this.timeWorked += Engine._idleSpeed * numCycles;
- if (this.timeWorked >= this.timeNeededToCompleteWork) {Player.finishCrime(false);}
+ if (this.timeWorked >= this.timeNeededToCompleteWork) {Player.finishCrime(false); return;}
+
+ var percent = Math.round(Player.timeWorked / Player.timeNeededToCompleteWork * 100);
+ var numBars = Math.round(percent / 5);
+ var progressBar = "[" + Array(numBars+1).join("|") + Array(20 - numBars + 1).join(" ") + "]";
var txt = document.getElementById("work-in-progress-text");
txt.innerHTML = "You are attempting to " + Player.crimeType + ".
" +
- "Time remaining: " + convertTimeMsToTimeElapsedString(this.timeNeededToCompleteWork - this.timeWorked);
+ "Time remaining: " + convertTimeMsToTimeElapsedString(this.timeNeededToCompleteWork - this.timeWorked) + "
" +
+ progressBar.replace( / /g, " " );
}
PlayerObject.prototype.finishCrime = function(cancelled) {
diff --git a/src/Prestige.js b/src/Prestige.js
index 69b4f23dc..a52e19b39 100644
--- a/src/Prestige.js
+++ b/src/Prestige.js
@@ -54,9 +54,7 @@ function prestigeAugmentation() {
Player.charisma_exp = 0;
Player.money = 1000;
-
- Player.homeComputer = "";
-
+
Player.city = Locations.Sector12;
Player.location = "";
@@ -101,12 +99,23 @@ function prestigeAugmentation() {
Player.lastUpdate = new Date().getTime();
- //Delete all servers
+ var homeComp = null;
+ //Delete all servers except home computer
for (var member in AllServers) {
+ //Don't delete home computer
+ if (member == Player.homeComputer) {
+ homeComp = AllServers[member];
+ continue;
+ }
delete AllServers[member];
}
AllServers = {};
+ //Reset home computer (only the programs) and add to AllServers
+ homeComp.programs.length = 0;
+ homeComp.programs.push(Programs.NukeProgram);
+ addToAllServers(homeComp);
+
//Delete all running scripts objects
for (var i = 0; i < workerScripts.length; ++i) {
workerScripts[i].env.stopFlag = true;
@@ -143,10 +152,8 @@ function prestigeAugmentation() {
//Inititialization
SpecialServerIps = new SpecialServerIpsMap();
- Player.init();
initForeignServers();
initCompanies();
- //CompanyPositions.init(); Dont think this is needed
Engine.loadTerminalContent();
}
\ No newline at end of file
diff --git a/src/Server.js b/src/Server.js
index 07af69dfa..e7a3363b9 100644
--- a/src/Server.js
+++ b/src/Server.js
@@ -410,13 +410,13 @@ initForeignServers = function() {
var SigmaCosmeticsServer = new Server();
SigmaCosmeticsServer.init(createRandomIp(), "sigma-cosmetics", "Sigma Cosmetics", true, false, false, false, 0);
- SigmaCosmeticsServer.setHackingParameters(5, 500000, 10, 10);
+ 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.setHackingParameters(10, 200000, 20, 25);
+ JoesGunsServer.setHackingParameters(10, 600000, 20, 20);
JoesGunsServer.setPortProperties(0);
AddToAllServers(JoesGunsServer);
@@ -428,74 +428,74 @@ initForeignServers = function() {
var NectarNightclubServer = new Server();
NectarNightclubServer.init(createRandomIp(), "nectar-net", "Nectar Nightclub Network", true, false, false, false, 2);
- NectarNightclubServer.setHackingParameters(20, 400000, 20, 25);
+ NectarNightclubServer.setHackingParameters(20, 6500000, 20, 25);
NectarNightclubServer.setPortProperties(0);
AddToAllServers(NectarNightclubServer);
var NeoNightclubServer = new Server();
NeoNightclubServer.init(createRandomIp(), "neo-net", "Neo Nightclub Network", true, false, false, false, 2);
- NeoNightclubServer.setHackingParameters(50, 500000, 25, 25);
+ NeoNightclubServer.setHackingParameters(50, 900000, 25, 25);
NeoNightclubServer.setPortProperties(1);
AddToAllServers(NeoNightclubServer);
var SilverHelixServer = new Server();
SilverHelixServer.init(createRandomIp(), "silver-helix", "Silver Helix", true, false, false, false, 2);
- SilverHelixServer.setHackingParameters(150, 1000000, 30, 30);
+ SilverHelixServer.setHackingParameters(150, 5000000, 30, 30);
SilverHelixServer.setPortProperties(2);
AddToAllServers(SilverHelixServer);
var HongFangTeaHouseServer = new Server();
HongFangTeaHouseServer.init(createRandomIp(), "hong-fang-tea", "HongFang Teahouse", true, false, false, false, 0);
- HongFangTeaHouseServer.setHackingParameters(30, 250000, 15, 10);
+ HongFangTeaHouseServer.setHackingParameters(30, 800000, 15, 15);
HongFangTeaHouseServer.setPortProperties(0);
AddToAllServers(HongFangTeaHouseServer);
var HaraKiriSushiBarServer = new Server();
- HaraKiriSushiBarServer.setHackingParameters(40, 100000, 15, 40);
+ HaraKiriSushiBarServer.setHackingParameters(40, 800000, 15, 40);
HaraKiriSushiBarServer.init(createRandomIp(), "harakiri-sushi", "HaraKiri Sushi Bar Network", true, false, false, false, 0);
HaraKiriSushiBarServer.setPortProperties(1);
AddToAllServers(HaraKiriSushiBarServer);
var PhantasyServer = new Server();
PhantasyServer.init(createRandomIp(), "phantasy", "Phantasy Club", true, false, false, false, 4);
- PhantasyServer.setHackingParameters(100, 300000, 20, 35);
+ PhantasyServer.setHackingParameters(100, 1500000, 20, 35);
PhantasyServer.setPortProperties(2);
AddToAllServers(PhantasyServer);
var MaxHardwareServer = new Server();
MaxHardwareServer.init(createRandomIp(), "max-hardware", "Max Hardware Store", true, false, false, false, 0);
- MaxHardwareServer.setHackingParameters(80, 150000, 15, 25);
+ MaxHardwareServer.setHackingParameters(80, 800000, 15, 25);
MaxHardwareServer.setPortProperties(1);
AddToAllServers(MaxHardwareServer);
var OmegaSoftwareServer = new Server();
OmegaSoftwareServer.init(createRandomIp(), "omega-net", "Omega Software", true, false, false, false, 8);
- OmegaSoftwareServer.setHackingParameters(200, 1000000, 30, 30);
+ OmegaSoftwareServer.setHackingParameters(200, 10000000, 30, 35);
OmegaSoftwareServer.setPortProperties(2);
AddToAllServers(OmegaSoftwareServer);
//Gyms
var CrushFitnessGymServer = new Server();
CrushFitnessGymServer.init(createRandomIp(), "crush-fitness", "Crush Fitness", true, false, false, false, 0);
- CrushFitnessGymServer.setHackingParameters(250, 300000, 40, 25);
+ CrushFitnessGymServer.setHackingParameters(250, 5000000, 40, 25);
CrushFitnessGymServer.setPortProperties(2);
AddToAllServers(CrushFitnessGymServer);
var IronGymServer = new Server();
IronGymServer.init(createRandomIp(), "iron-gym", "Iron Gym Network", true, false, false, false, 0);
- IronGymServer.setHackingParameters(100, 150000, 30, 15);
+ IronGymServer.setHackingParameters(100, 2500000, 30, 15);
IronGymServer.setPortProperties(1);
AddToAllServers(IronGymServer);
var MilleniumFitnessGymServer = new Server();
MilleniumFitnessGymServer.init(createRandomIp(), "millenium-fitness", "Millenium Fitness Network", true, false, false, false, 0);
- MilleniumFitnessGymServer.setHackingParameters(500, 400000, 50, 30);
+ MilleniumFitnessGymServer.setHackingParameters(500, 7500000, 50, 30);
MilleniumFitnessGymServer.setPortProperties(3);
AddToAllServers(MilleniumFitnessGymServer);
var PowerhouseGymServer = new Server();
PowerhouseGymServer.init(createRandomIp(), "powerhouse-fitness", "Powerhouse Fitness", true, false, false, false, 0);
- PowerhouseGymServer.setHackingParameters(1000, 1000000, 60, 50);
+ PowerhouseGymServer.setHackingParameters(1000, 20000000, 60, 50);
PowerhouseGymServer.setPortProperties(5);
AddToAllServers(PowerhouseGymServer);
diff --git a/src/engine.js b/src/engine.js
index 218651934..3771f1dbe 100644
--- a/src/engine.js
+++ b/src/engine.js
@@ -932,7 +932,7 @@ var Engine = {
});
//Create Program buttons
- var portHackALink = document.getElementById("create-program-porthack");
+ var portHackALink = document.getElementById("create-program-nuke");
var bruteSshALink = document.getElementById("create-program-brutessh");
var ftpCrackALink = document.getElementById("create-program-ftpcrack");
var relaySmtpALink = document.getElementById("create-program-relaysmtp");
diff --git a/utils/PurchaseRamForHomeBox.js b/utils/PurchaseRamForHomeBox.js
index 752dd2387..aa6587b3b 100644
--- a/utils/PurchaseRamForHomeBox.js
+++ b/utils/PurchaseRamForHomeBox.js
@@ -42,7 +42,7 @@ purchaseRamForHomeBoxCreate = function() {
purchaseRamForHomeBoxSetText("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 $" + cost);
+ "This will cost $" + formatNumber(cost, 2));
purchaseRamForHomeBoxOpen();