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();