Playtesting - Rebalancing, UI improvements, added tooltip for programs, home computer no longer reset on prestige

This commit is contained in:
Daniel Xie
2017-05-08 09:33:26 -05:00
parent 21f73088f6
commit 20d8a40e17
13 changed files with 147 additions and 84 deletions
+5
View File
@@ -201,6 +201,10 @@
width: 99%; width: 99%;
} }
#create-program-page-text {
width: 80%;
}
.create-program-a-link-button { .create-program-a-link-button {
text-decoration: none; text-decoration: none;
background-color: #555; background-color: #555;
@@ -210,6 +214,7 @@
border-right: 1px solid #333333; border-right: 1px solid #333333;
border-bottom: 1px solid #333333; border-bottom: 1px solid #333333;
border-left: 1px solid #333333; border-left: 1px solid #333333;
width: 50%;
} }
.create-program-a-link-button-inactive { .create-program-a-link-button-inactive {
+23
View File
@@ -140,4 +140,27 @@ tr:focus {
color: #333; color: #333;
border-radius: 0px; border-radius: 0px;
padding: 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;
} }
+33 -6
View File
@@ -376,13 +376,40 @@
<!-- Create a program(executable) --> <!-- Create a program(executable) -->
<div id="create-program-container"> <div id="create-program-container">
<p id="create-program-page-text">
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.
</p>
<ul id="create-program-list"> <ul id="create-program-list">
<a class="create-program-a-link-button" id="create-program-porthack" href="#">PortHack.exe</a> <a class="create-program-a-link-button tooltip" id="create-program-nuke" href="#">
<a class="create-program-a-link-button" id="create-program-brutessh" href="#">BruteSSH.exe</a> NUKE.exe
<a class="create-program-a-link-button" id="create-program-ftpcrack" href="#">FTPCrack.exe</a> <span class="tooltiptext"> This virus is used to gain root access to a machine if enough ports are opened. </span>
<a class="create-program-a-link-button" id="create-program-relaysmtp" href="#">relaySMTP.exe</a> </a>
<a class="create-program-a-link-button" id="create-program-httpworm" href="#">HTTPWorm.exe</a> <a class="create-program-a-link-button tooltip" id="create-program-brutessh" href="#">
<a class="create-program-a-link-button" id="create-program-sqlinject" href="#">SQLInject.exe</a> BruteSSH.exe
<span class="tooltiptext"> This program executes a brute force attack that opens SSH ports </span>
</a>
<a class="create-program-a-link-button tooltip" id="create-program-ftpcrack" href="#">
FTPCrack.exe
<span class="tooltiptext"> This program cracks open FTP ports</span>
</a>
<a class="create-program-a-link-button tooltip" id="create-program-relaysmtp" href="#">
relaySMTP.exe
<span class="tooltiptext"> This program opens SMTP ports by redirecting data </span>
</a>
<a class="create-program-a-link-button tooltip" id="create-program-httpworm" href="#">
HTTPWorm.exe
<span class="tooltiptext"> This virus opens up HTTP ports </span>
</a>
<a class="create-program-a-link-button tooltip" id="create-program-sqlinject" href="#">
SQLInject.exe
<span class="tooltiptext"> This virus opens SQL ports</span>
</a>
</ul> </ul>
</div> </div>
+12 -10
View File
@@ -436,7 +436,7 @@ initAugmentations = function() {
var SynapticEnhancement = new Augmentation(AugmentationNames.SynapticEnhancement); var SynapticEnhancement = new Augmentation(AugmentationNames.SynapticEnhancement);
SynapticEnhancement.setRequirements(1500, 1200000); SynapticEnhancement.setRequirements(1500, 1200000);
SynapticEnhancement.setInfo("A small cranial implant that continuously uses weak electric signals to stimulate the brain and " + 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.<br><br>" + "induce stronger synaptic activity. This improves the user's cognitive abilities.<br><br>" +
"This augmentation increases the player's hacking speed by 1%."); "This augmentation increases the player's hacking speed by 1%.");
SynapticEnhancement.addToFactions(["CyberSec"]); SynapticEnhancement.addToFactions(["CyberSec"]);
if (augmentationExists(AugmentationNames.SynapticEnhancement)) { if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
@@ -684,7 +684,7 @@ initAugmentations = function() {
AddToAugmentations(PCDNINeuralNetwork); AddToAugmentations(PCDNINeuralNetwork);
var ADRPheromone1 = new Augmentation(AugmentationNames.ADRPheromone1); 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, " + 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 " + "an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted " +
"triggers feelings of admiration and approval in other people. <br><br>" + "triggers feelings of admiration and approval in other people. <br><br>" +
@@ -700,7 +700,7 @@ initAugmentations = function() {
//HacknetNode Augmentations //HacknetNode Augmentations
var HacknetNodeCPUUpload = new Augmentation(AugmentationNames.HacknetNodeCPUUpload); 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 " + 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 " + "the brain. This allows the user to engineer custom hardware and software " +
"for the Hacknet Node that provides better performance.<br><br>" + "for the Hacknet Node that provides better performance.<br><br>" +
@@ -715,7 +715,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeCPUUpload); AddToAugmentations(HacknetNodeCPUUpload);
var HacknetNodeCacheUpload = new Augmentation(AugmentationNames.HacknetNodeCacheUpload); 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 " + 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 " + "into the brain. This allows the user to engineer custom cache hardware for the " +
"Hacknet Node that offers better performance.<br><br>" + "Hacknet Node that offers better performance.<br><br>" +
@@ -730,7 +730,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeCacheUpload); AddToAugmentations(HacknetNodeCacheUpload);
var HacknetNodeNICUpload = new Augmentation(AugmentationNames.HacknetNodeNICUpload); 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) " + 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 " + "into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
"offers better performance.<br><br>" + "offers better performance.<br><br>" +
@@ -745,7 +745,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeNICUpload); AddToAugmentations(HacknetNodeNICUpload);
var HacknetNodeKernelDNI = new Augmentation(AugmentationNames.HacknetNodeKernelDNI); 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 " + 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 " + "Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
"electrochemical signals.<br><br>" + "electrochemical signals.<br><br>" +
@@ -758,7 +758,7 @@ initAugmentations = function() {
AddToAugmentations(HacknetNodeKernelDNI); AddToAugmentations(HacknetNodeKernelDNI);
var HacknetNodeCoreDNI = new Augmentation(AugmentationNames.HacknetNodeCoreDNI); 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 " + 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 " + "to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
"the mind's electrochemical signals.<br><br>" + "the mind's electrochemical signals.<br><br>" +
@@ -777,8 +777,10 @@ initAugmentations = function() {
NeuroFluxGovernor.owned = oldAug.owned; NeuroFluxGovernor.owned = oldAug.owned;
NeuroFluxGovernor.level = oldAug.level; NeuroFluxGovernor.level = oldAug.level;
var mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level-1); 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]; 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 " + 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, " + "monitors and regulates nervous impulses coming to and from the spinal column, " +
@@ -790,7 +792,7 @@ initAugmentations = function() {
AddToAugmentations(NeuroFluxGovernor); AddToAugmentations(NeuroFluxGovernor);
var Neurotrainer1 = new Augmentation(AugmentationNames.Neurotrainer1); 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 " + 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 " + "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 " + "attaches to a different neural pathway to enhance the brain's ability to retain " +
@@ -804,7 +806,7 @@ initAugmentations = function() {
AddToAugmentations(Neurotrainer1); AddToAugmentations(Neurotrainer1);
var Neurotrainer2 = new Augmentation(AugmentationNames.Neurotrainer2); 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 " + 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 " + "is a more powerful version of the Neurotrainer I augmentation, but it does not " +
"require Neurotrainer I to be installed as a prerequisite.<br><br>" + "require Neurotrainer I to be installed as a prerequisite.<br><br>" +
+10 -4
View File
@@ -18,13 +18,13 @@ CONSTANTS = {
/* Hacknet Node constants */ /* Hacknet Node constants */
HacknetNodeMoneyGainPerLevel: 0.75, HacknetNodeMoneyGainPerLevel: 0.75,
HacknetNodePurchaseNextMult: 1.35, //Multiplier when purchasing an additional hacknet node HacknetNodePurchaseNextMult: 1.35, //Multiplier when purchasing an additional hacknet node
HacknetNodeUpgradeLevelMult: 1.07, //Multiplier for cost when upgrading level HacknetNodeUpgradeLevelMult: 1.06, //Multiplier for cost when upgrading level
HacknetNodeUpgradeRamMult: 1.2, //Multiplier for cost when upgrading RAM HacknetNodeUpgradeRamMult: 1.15, //Multiplier for cost when upgrading RAM
HacknetNodeUpgradeCoreMult: 1.5, //Multiplier for cost when buying another core HacknetNodeUpgradeCoreMult: 1.45, //Multiplier for cost when buying another core
/* Augmentation */ /* Augmentation */
//NeuroFlux Governor cost multiplier as you level up //NeuroFlux Governor cost multiplier as you level up
NeuroFluxGovernorLevelMult: 1.1, NeuroFluxGovernorLevelMult: 1.08,
/* Script related things */ /* Script related things */
//Time (ms) it takes to run one operation in Netscript. //Time (ms) it takes to run one operation in Netscript.
@@ -83,6 +83,12 @@ CONSTANTS = {
ClassManagement: "taking a Management course", ClassManagement: "taking a Management course",
ClassLeadership: "taking a Leadership course", ClassLeadership: "taking a Leadership course",
ClassDataStructuresBaseCost: 1,
ClassNetworksBaseCost: 5,
ClassAlgorithmsBaseCost: 20,
ClassManagementBaseCost: 10,
ClassLeadershipBaseCost: 20,
CrimeShoplift: "shoplift", CrimeShoplift: "shoplift",
CrimeMug: "mug someone", CrimeMug: "mug someone",
CrimeDrugs: "deal drugs", CrimeDrugs: "deal drugs",
+3 -3
View File
@@ -11,14 +11,14 @@ Programs = {
//TODO Right now the times needed to complete work are hard-coded... //TODO Right now the times needed to complete work are hard-coded...
//maybe later make this dependent on hacking level or something //maybe later make this dependent on hacking level or something
function displayCreateProgramContent() { function displayCreateProgramContent() {
var portHackALink = document.getElementById("create-program-porthack"); var nukeALink = document.getElementById("create-program-nuke");
var bruteSshALink = document.getElementById("create-program-brutessh"); var bruteSshALink = document.getElementById("create-program-brutessh");
var ftpCrackALink = document.getElementById("create-program-ftpcrack"); var ftpCrackALink = document.getElementById("create-program-ftpcrack");
var relaySmtpALink = document.getElementById("create-program-relaysmtp"); var relaySmtpALink = document.getElementById("create-program-relaysmtp");
var httpWormALink = document.getElementById("create-program-httpworm"); var httpWormALink = document.getElementById("create-program-httpworm");
var sqlInjectALink = document.getElementById("create-program-sqlinject"); var sqlInjectALink = document.getElementById("create-program-sqlinject");
portHackALink.style.display = "none"; nukeALink.style.display = "none";
bruteSshALink.style.display = "none"; bruteSshALink.style.display = "none";
ftpCrackALink.style.display = "none"; ftpCrackALink.style.display = "none";
relaySmtpALink.style.display = "none"; relaySmtpALink.style.display = "none";
@@ -27,7 +27,7 @@ function displayCreateProgramContent() {
//PortHack.exe (in case you delete it lol) //PortHack.exe (in case you delete it lol)
if (Player.getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) { if (Player.getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) {
portHackALink.style.display = "block"; nukeALink.style.display = "block";
} }
//BruteSSH //BruteSSH
+7 -7
View File
@@ -1,32 +1,32 @@
/* Crimes.js */ /* Crimes.js */
function commitShopliftCrime() { function commitShopliftCrime() {
Player.crimeType = CONSTANTS.CrimeShoplift; 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() { function commitMugCrime() {
Player.crimeType = CONSTANTS.CrimeMug; 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() { function commitDealDrugsCrime() {
Player.crimeType = CONSTANTS.CrimeDrugs; 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() { function commitTraffickArmsCrime() {
Player.crimeType = CONSTANTS.CrimeTraffickArms; 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() { function commitHomicideCrime() {
Player.crimeType = CONSTANTS.CrimeHomicide; 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() { function commitKidnapCrime() {
Player.crimeType = CONSTANTS.CrimeKidnap; 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) { function determineCrimeSuccess(crime, moneyGained) {
@@ -95,7 +95,7 @@ function determineCrimeChanceTraffickArms() {
Player.strength / CONSTANTS.MaxSkillLevel + Player.strength / CONSTANTS.MaxSkillLevel +
Player.defense / CONSTANTS.MaxSkillLevel + Player.defense / CONSTANTS.MaxSkillLevel +
Player.dexterity / CONSTANTS.MaxSkillLevel + Player.dexterity / CONSTANTS.MaxSkillLevel +
Player.agility / CONSTANTS.MaxSkillLevel)); Player.agility / CONSTANTS.MaxSkillLevel)) / 2;
return Math.min(chance, 1); return Math.min(chance, 1);
} }
+6 -12
View File
@@ -1525,18 +1525,12 @@ displayUniversityLocationContent = function(costMult) {
classManagementButton.style.display = "block"; classManagementButton.style.display = "block";
classLeadershipButton.style.display = "block"; classLeadershipButton.style.display = "block";
//Costs (per second) //Costs (per second)
var baseDataStructuresCost = 1; var dataStructuresCost = CONSTANTS.ClassDataStructuresBaseCost * costMult;
var baseNetworksCost = 5; var networksCost = CONSTANTS.ClassNetworksBaseCost * costMult;
var baseAlgorithmsCost = 20; var algorithmsCost = CONSTANTS.ClassAlgorithmsBaseCost * costMult;
var baseManagementCost = 10; var managementCost = CONSTANTS.ClassManagementBaseCost * costMult;
var baseLeadershipCost = 20; var leadershipCost = CONSTANTS.ClassLeadershipBaseCost * costMult;
var dataStructuresCost = baseDataStructuresCost * costMult;
var networksCost = baseNetworksCost * costMult;
var algorithmsCost = baseAlgorithmsCost * costMult;
var managementCost = baseManagementCost * costMult;
var leadershipCost = baseLeadershipCost * costMult;
//Update button text to show cost //Update button text to show cost
classDataStructuresButton.innerHTML = "Take Data Structures course ($" + dataStructuresCost + " / sec)"; classDataStructuresButton.innerHTML = "Take Data Structures course ($" + dataStructuresCost + " / sec)";
+19 -20
View File
@@ -172,7 +172,7 @@ PlayerObject.prototype.init = function() {
AddToAllServers(t_homeComp); AddToAllServers(t_homeComp);
this.getHomeComputer().programs.push(Programs.NukeProgram); this.getHomeComputer().programs.push(Programs.NukeProgram);
} }
PlayerObject.prototype.getCurrentServer = function() { PlayerObject.prototype.getCurrentServer = function() {
return AllServers[this.currentServer]; return AllServers[this.currentServer];
@@ -792,19 +792,13 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
this.className = className; this.className = className;
var gameCPS = 1000 / Engine._idleSpeed; 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 baseStudyComputerScienceExp = 0.05;
var baseDataStructuresExp = 0.1; var baseDataStructuresExp = 0.2;
var baseNetworksExp = 0.4; var baseNetworksExp = 0.8;
var baseAlgorithmsExp = 1.5; var baseAlgorithmsExp = 2.0;
var baseManagementExp = 0.8; var baseManagementExp = 1.0;
var baseLeadershipExp = 1.5; var baseLeadershipExp = 2.0;
//Find cost and exp gain per game cycle //Find cost and exp gain per game cycle
var cost = 0; var cost = 0;
@@ -815,23 +809,23 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
hackExp = baseStudyComputerScienceExp * expMult / gameCPS; hackExp = baseStudyComputerScienceExp * expMult / gameCPS;
break; break;
case CONSTANTS.ClassDataStructures: case CONSTANTS.ClassDataStructures:
cost = baseDataStructuresCost * costMult / gameCPS; cost = CONSTANTS.ClassDataStructuresBaseCost * costMult / gameCPS;
hackExp = baseDataStructuresExp * expMult / gameCPS; hackExp = baseDataStructuresExp * expMult / gameCPS;
break; break;
case CONSTANTS.ClassNetworks: case CONSTANTS.ClassNetworks:
cost = baseNetworksCost * costMult / gameCPS; cost = CONSTANTS.ClassNetworksBaseCost * costMult / gameCPS;
hackExp = baseNetworksExp * expMult / gameCPS; hackExp = baseNetworksExp * expMult / gameCPS;
break; break;
case CONSTANTS.ClassAlgorithms: case CONSTANTS.ClassAlgorithms:
cost = baseAlgorithmsCost * costMult / gameCPS; cost = CONSTANTS.ClassAlgorithmsBaseCost * costMult / gameCPS;
hackExp = baseAlgorithmsExp * expMult / gameCPS; hackExp = baseAlgorithmsExp * expMult / gameCPS;
break; break;
case CONSTANTS.ClassManagement: case CONSTANTS.ClassManagement:
cost = baseManagementCost * costMult / gameCPS; cost = CONSTANTS.ClassManagementBaseCost * costMult / gameCPS;
chaExp = baseManagementExp * expMult / gameCPS; chaExp = baseManagementExp * expMult / gameCPS;
break; break;
case CONSTANTS.ClassLeadership: case CONSTANTS.ClassLeadership:
cost = baseLeadershipCost * costMult / gameCPS; cost = CONSTANTS.ClassLeadershipBaseCost * costMult / gameCPS;
chaExp = baseLeadershipExp * expMult / gameCPS; chaExp = baseLeadershipExp * expMult / gameCPS;
break; break;
default: default:
@@ -951,11 +945,16 @@ PlayerObject.prototype.startCrime = function(hackExp, strExp, defExp, dexExp, ag
PlayerObject.prototype.commitCrime = function (numCycles) { PlayerObject.prototype.commitCrime = function (numCycles) {
this.timeWorked += Engine._idleSpeed * 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"); var txt = document.getElementById("work-in-progress-text");
txt.innerHTML = "You are attempting to " + Player.crimeType + ".<br>" + txt.innerHTML = "You are attempting to " + Player.crimeType + ".<br>" +
"Time remaining: " + convertTimeMsToTimeElapsedString(this.timeNeededToCompleteWork - this.timeWorked); "Time remaining: " + convertTimeMsToTimeElapsedString(this.timeNeededToCompleteWork - this.timeWorked) + "<br>" +
progressBar.replace( / /g, "&nbsp;" );
} }
PlayerObject.prototype.finishCrime = function(cancelled) { PlayerObject.prototype.finishCrime = function(cancelled) {
+13 -6
View File
@@ -54,9 +54,7 @@ function prestigeAugmentation() {
Player.charisma_exp = 0; Player.charisma_exp = 0;
Player.money = 1000; Player.money = 1000;
Player.homeComputer = "";
Player.city = Locations.Sector12; Player.city = Locations.Sector12;
Player.location = ""; Player.location = "";
@@ -101,12 +99,23 @@ function prestigeAugmentation() {
Player.lastUpdate = new Date().getTime(); Player.lastUpdate = new Date().getTime();
//Delete all servers var homeComp = null;
//Delete all servers except home computer
for (var member in AllServers) { for (var member in AllServers) {
//Don't delete home computer
if (member == Player.homeComputer) {
homeComp = AllServers[member];
continue;
}
delete AllServers[member]; delete AllServers[member];
} }
AllServers = {}; 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 //Delete all running scripts objects
for (var i = 0; i < workerScripts.length; ++i) { for (var i = 0; i < workerScripts.length; ++i) {
workerScripts[i].env.stopFlag = true; workerScripts[i].env.stopFlag = true;
@@ -143,10 +152,8 @@ function prestigeAugmentation() {
//Inititialization //Inititialization
SpecialServerIps = new SpecialServerIpsMap(); SpecialServerIps = new SpecialServerIpsMap();
Player.init();
initForeignServers(); initForeignServers();
initCompanies(); initCompanies();
//CompanyPositions.init(); Dont think this is needed
Engine.loadTerminalContent(); Engine.loadTerminalContent();
} }
+14 -14
View File
@@ -410,13 +410,13 @@ initForeignServers = function() {
var SigmaCosmeticsServer = new Server(); 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, 0);
SigmaCosmeticsServer.setHackingParameters(5, 500000, 10, 10); SigmaCosmeticsServer.setHackingParameters(5, 750000, 10, 10);
SigmaCosmeticsServer.setPortProperties(0); SigmaCosmeticsServer.setPortProperties(0);
AddToAllServers(SigmaCosmeticsServer); AddToAllServers(SigmaCosmeticsServer);
var JoesGunsServer = new Server(); 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, 2);
JoesGunsServer.setHackingParameters(10, 200000, 20, 25); JoesGunsServer.setHackingParameters(10, 600000, 20, 20);
JoesGunsServer.setPortProperties(0); JoesGunsServer.setPortProperties(0);
AddToAllServers(JoesGunsServer); AddToAllServers(JoesGunsServer);
@@ -428,74 +428,74 @@ initForeignServers = function() {
var NectarNightclubServer = new Server(); 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, 2);
NectarNightclubServer.setHackingParameters(20, 400000, 20, 25); NectarNightclubServer.setHackingParameters(20, 6500000, 20, 25);
NectarNightclubServer.setPortProperties(0); NectarNightclubServer.setPortProperties(0);
AddToAllServers(NectarNightclubServer); AddToAllServers(NectarNightclubServer);
var NeoNightclubServer = new Server(); var NeoNightclubServer = new Server();
NeoNightclubServer.init(createRandomIp(), "neo-net", "Neo Nightclub Network", true, false, false, false, 2); 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); NeoNightclubServer.setPortProperties(1);
AddToAllServers(NeoNightclubServer); AddToAllServers(NeoNightclubServer);
var SilverHelixServer = new Server(); var SilverHelixServer = new Server();
SilverHelixServer.init(createRandomIp(), "silver-helix", "Silver Helix", true, false, false, false, 2); 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); SilverHelixServer.setPortProperties(2);
AddToAllServers(SilverHelixServer); AddToAllServers(SilverHelixServer);
var HongFangTeaHouseServer = new Server(); 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, 0);
HongFangTeaHouseServer.setHackingParameters(30, 250000, 15, 10); HongFangTeaHouseServer.setHackingParameters(30, 800000, 15, 15);
HongFangTeaHouseServer.setPortProperties(0); HongFangTeaHouseServer.setPortProperties(0);
AddToAllServers(HongFangTeaHouseServer); AddToAllServers(HongFangTeaHouseServer);
var HaraKiriSushiBarServer = new Server(); 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.init(createRandomIp(), "harakiri-sushi", "HaraKiri Sushi Bar Network", true, false, false, false, 0);
HaraKiriSushiBarServer.setPortProperties(1); HaraKiriSushiBarServer.setPortProperties(1);
AddToAllServers(HaraKiriSushiBarServer); AddToAllServers(HaraKiriSushiBarServer);
var PhantasyServer = new Server(); 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, 4);
PhantasyServer.setHackingParameters(100, 300000, 20, 35); PhantasyServer.setHackingParameters(100, 1500000, 20, 35);
PhantasyServer.setPortProperties(2); PhantasyServer.setPortProperties(2);
AddToAllServers(PhantasyServer); AddToAllServers(PhantasyServer);
var MaxHardwareServer = new Server(); var MaxHardwareServer = new Server();
MaxHardwareServer.init(createRandomIp(), "max-hardware", "Max Hardware Store", true, false, false, false, 0); 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); MaxHardwareServer.setPortProperties(1);
AddToAllServers(MaxHardwareServer); AddToAllServers(MaxHardwareServer);
var OmegaSoftwareServer = new Server(); var OmegaSoftwareServer = new Server();
OmegaSoftwareServer.init(createRandomIp(), "omega-net", "Omega Software", true, false, false, false, 8); 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); OmegaSoftwareServer.setPortProperties(2);
AddToAllServers(OmegaSoftwareServer); AddToAllServers(OmegaSoftwareServer);
//Gyms //Gyms
var CrushFitnessGymServer = new Server(); var CrushFitnessGymServer = new Server();
CrushFitnessGymServer.init(createRandomIp(), "crush-fitness", "Crush Fitness", true, false, false, false, 0); 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); CrushFitnessGymServer.setPortProperties(2);
AddToAllServers(CrushFitnessGymServer); AddToAllServers(CrushFitnessGymServer);
var IronGymServer = new Server(); var IronGymServer = new Server();
IronGymServer.init(createRandomIp(), "iron-gym", "Iron Gym Network", true, false, false, false, 0); 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); IronGymServer.setPortProperties(1);
AddToAllServers(IronGymServer); AddToAllServers(IronGymServer);
var MilleniumFitnessGymServer = new Server(); var MilleniumFitnessGymServer = new Server();
MilleniumFitnessGymServer.init(createRandomIp(), "millenium-fitness", "Millenium Fitness Network", true, false, false, false, 0); 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); MilleniumFitnessGymServer.setPortProperties(3);
AddToAllServers(MilleniumFitnessGymServer); AddToAllServers(MilleniumFitnessGymServer);
var PowerhouseGymServer = new Server(); var PowerhouseGymServer = new Server();
PowerhouseGymServer.init(createRandomIp(), "powerhouse-fitness", "Powerhouse Fitness", true, false, false, false, 0); 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); PowerhouseGymServer.setPortProperties(5);
AddToAllServers(PowerhouseGymServer); AddToAllServers(PowerhouseGymServer);
+1 -1
View File
@@ -932,7 +932,7 @@ var Engine = {
}); });
//Create Program buttons //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 bruteSshALink = document.getElementById("create-program-brutessh");
var ftpCrackALink = document.getElementById("create-program-ftpcrack"); var ftpCrackALink = document.getElementById("create-program-ftpcrack");
var relaySmtpALink = document.getElementById("create-program-relaysmtp"); var relaySmtpALink = document.getElementById("create-program-relaysmtp");
+1 -1
View File
@@ -42,7 +42,7 @@ purchaseRamForHomeBoxCreate = function() {
purchaseRamForHomeBoxSetText("Would you like to purchase additional RAM for your home computer? <br><br>" + purchaseRamForHomeBoxSetText("Would you like to purchase additional RAM for your home computer? <br><br>" +
"This will upgrade your RAM from " + currentRam + "GB to " + newRam + "GB. <br><br>" + "This will upgrade your RAM from " + currentRam + "GB to " + newRam + "GB. <br><br>" +
"This will cost $" + cost); "This will cost $" + formatNumber(cost, 2));
purchaseRamForHomeBoxOpen(); purchaseRamForHomeBoxOpen();