Merge pull request #84 from danielyxie/dev

Dev v0.24.1
This commit is contained in:
danielyxie 2017-07-05 17:35:42 -05:00 committed by GitHub
commit cb7e319ef7
18 changed files with 481 additions and 223 deletions

@ -207,6 +207,43 @@ tr:focus {
animation: glowing 1500ms infinite; animation: glowing 1500ms infinite;
} }
/* Blinking Cursor */
/* ----- blinking cursor animation ----- */
.typed-cursor{
opacity: 1;
-webkit-animation: blink 0.95s infinite;
-moz-animation: blink 0.95s infinite;
-ms-animation: blink 0.95s infinite;
-o-animation: blink 0.95s infinite;
animation: blink 0.95s infinite;
}
@-keyframes blink{
0% { opacity:1; }
50% { opacity:0; }
100% { opacity:1; }
}
@-webkit-keyframes blink{
0% { opacity:1; }
50% { opacity:0; }
100% { opacity:1; }
}
@-moz-keyframes blink{
0% { opacity:1; }
50% { opacity:0; }
100% { opacity:1; }
}
@-ms-keyframes blink{
0% { opacity:1; }
50% { opacity:0; }
100% { opacity:1; }
}
@-o-keyframes blink{
0% { opacity:1; }
50% { opacity:0; }
100% { opacity:1; }
}
/* Status text */ /* Status text */
@-webkit-keyframes status-text{ @-webkit-keyframes status-text{
from{ from{

@ -1,3 +1,11 @@
#generic-fullscreen-container {
color: var(--my-font-color);
padding-top: 10px;
padding-left: 10px;
height: 100%;
width: 99%;
}
#work-in-progress-container { #work-in-progress-container {
color: var(--my-font-color); color: var(--my-font-color);
position: fixed; position: fixed;

@ -86,45 +86,35 @@
<li class="terminal-tab"> <li class="terminal-tab">
<a id="terminal-menu-link"> Terminal </a> <a id="terminal-menu-link"> Terminal </a>
</li> </li>
<li class="character-tab"> <li class="character-tab">
<a id="character-menu-link"> Character </a> <a id="character-menu-link"> Character </a>
</li> </li>
<!-- These scripts stuff should be hidden until level 2, but leave them visible for now to test --> <!-- These scripts stuff should be hidden until level 2, but leave them visible for now to test -->
<li class="create-script-tab"> <li class="create-script-tab">
<a id="create-script-menu-link"> Create Script </a> <a id="create-script-menu-link"> Create Script </a>
</li> </li>
<li class="active-scripts-tab"> <li class="active-scripts-tab">
<a id="active-scripts-menu-link"> Active Scripts </a> <a id="active-scripts-menu-link"> Active Scripts </a>
</li> </li>
<li class="hacknet-nodes-tab"> <li class="hacknet-nodes-tab">
<a id="hacknet-nodes-menu-link"> Hacknet Nodes </a> <a id="hacknet-nodes-menu-link"> Hacknet Nodes </a>
</li> </li>
<li class="world-tab"> <li class="world-tab">
<a id="world-menu-link"> World </a> <a id="world-menu-link"> World </a>
</li> </li>
<li class="create-program-tab"> <li class="create-program-tab">
<a id="create-program-menu-link"> Create Program </a> <a id="create-program-menu-link"> Create Program </a>
<span id="create-program-notification" class="notification-off"> </span> <span id="create-program-notification" class="notification-off"> </span>
</li> </li>
<li class="factions-tab"> <li class="factions-tab">
<a id="factions-menu-link"> Factions </a> <a id="factions-menu-link"> Factions </a>
</li> </li>
<li class="augmentations-tab"> <li class="augmentations-tab">
<a id="augmentations-menu-link" style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"> Augmentations </a> <a id="augmentations-menu-link" style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"> Augmentations </a>
</li> </li>
<li class="tutorial-tab"> <li class="tutorial-tab">
<a id="tutorial-menu-link"> Tutorial </a> <a id="tutorial-menu-link"> Tutorial </a>
</li> </li>
<li class="options-tab"> <li class="options-tab">
<a id="options-menu-link"> Options </a> <a id="options-menu-link"> Options </a>
</li> </li>
@ -140,7 +130,6 @@
onfocus="this.value = this.value;"/> onfocus="this.value = this.value;"/>
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
@ -473,7 +462,6 @@
ServerProfiler.exe ServerProfiler.exe
<span class="tooltiptext">This program is used to display hacking and Netscript-related information about servers</span> <span class="tooltiptext">This program is used to display hacking and Netscript-related information about servers</span>
</a> </a>
<a class="create-program-a-link-button tooltip" id="create-program-autolink"> <a class="create-program-a-link-button tooltip" id="create-program-autolink">
AutoLink.exe AutoLink.exe
<span class="tooltiptext">This program allows you to directly connect to other servers through the 'scan-analyze' command</span> <span class="tooltiptext">This program allows you to directly connect to other servers through the 'scan-analyze' command</span>
@ -766,8 +754,6 @@
</ul> </ul>
</div> </div>
<!-- Log Box --> <!-- Log Box -->
<div id="log-box-container"> <div id="log-box-container">
<div id="log-box-content"> <div id="log-box-content">
@ -849,6 +835,9 @@
<span id="work-in-progress-cancel-button"> Cancel Work </span> <span id="work-in-progress-cancel-button"> Cancel Work </span>
</div> </div>
<div id="red-pill-container" class="generic-fullscreen-container">
</div>
<!-- Interactive Tutorial Text Screen --> <!-- Interactive Tutorial Text Screen -->
<div id="interactive-tutorial-wrapper"> <div id="interactive-tutorial-wrapper">
<div id="interactive-tutorial-container"> <div id="interactive-tutorial-container">

@ -1,5 +1,6 @@
/* Alias.js */ /* Alias.js */
Aliases = {}; Aliases = {};
GlobalAliases = {};
//Print all aliases to terminal //Print all aliases to terminal
function printAliases() { function printAliases() {
@ -8,21 +9,40 @@ function printAliases() {
post("alias " + name + "=" + Aliases[name]); post("alias " + name + "=" + Aliases[name]);
} }
} }
for (var name in GlobalAliases) {
if (GlobalAliases.hasOwnProperty(name)) {
post("global alias " + name + "=" + GlobalAliases[name]);
}
}
} }
//True if successful, false otherwise //True if successful, false otherwise
function parseAliasDeclaration(dec) { function parseAliasDeclaration(dec,global=false) {
var re = /([^=]+)="(.+)"/; var re = /^([_|\w|!|%|,|@]+)="(.+)"$/;
var matches = dec.match(re); var matches = dec.match(re);
if (matches == null || matches.length != 3) {return false;} if (matches == null || matches.length != 3) {return false;}
addAlias(matches[1], matches[2]); if (global){
addGlobalAlias(matches[1],matches[2]);
} else {
addAlias(matches[1], matches[2]);
}
return true; return true;
} }
function addAlias(name, value) { function addAlias(name, value) {
if (name in GlobalAliases){
delete GlobalAliases[name];
}
Aliases[name] = value; Aliases[name] = value;
} }
function addGlobalAlias(name, value) {
if (name in Aliases){
delete Aliases[name];
}
GlobalAliases[name] = value;
}
function getAlias(name) { function getAlias(name) {
if (Aliases.hasOwnProperty(name)) { if (Aliases.hasOwnProperty(name)) {
return Aliases[name]; return Aliases[name];
@ -30,11 +50,22 @@ function getAlias(name) {
return null; return null;
} }
function getGlobalAlias(name) {
if (GlobalAliases.hasOwnProperty(name)) {
return GlobalAliases[name];
}
return null;
}
function removeAlias(name) { function removeAlias(name) {
if (Aliases.hasOwnProperty(name)) { if (Aliases.hasOwnProperty(name)) {
delete Aliases[name]; delete Aliases[name];
return true; return true;
} }
if (GlobalAliases.hasOwnProperty(name)) {
delete GlobalAliases[name];
return true;
}
return false; return false;
} }
@ -42,10 +73,21 @@ function removeAlias(name) {
//Aliases only applied to "whole words", one level deep //Aliases only applied to "whole words", one level deep
function substituteAliases(origCommand) { function substituteAliases(origCommand) {
var commandArray = origCommand.split(" "); var commandArray = origCommand.split(" ");
for (var i = 0; i < commandArray.length; ++i) { if (commandArray.length>0){
var alias = getAlias(commandArray[i]); var alias = getAlias(commandArray[0]);
if (alias != null) { if (alias != null) {
commandArray[i] = alias; commandArray[0] = alias;
} else {
var alias = getGlobalAlias(commandArray[0]);
if (alias != null) {
commandArray[0] = alias;
}
}
for (var i = 0; i < commandArray.length; ++i) {
var alias = getGlobalAlias(commandArray[i]);
if (alias != null) {
commandArray[i] = alias;
}
} }
} }
return commandArray.join(" "); return commandArray.join(" ");

@ -128,6 +128,7 @@ AugmentationNames = {
SmartSonar: "SmartSonar Implant", SmartSonar: "SmartSonar Implant",
PowerRecirculator: "Power Recirculation Core", PowerRecirculator: "Power Recirculation Core",
QLink: "QLink", QLink: "QLink",
TheRedPill: "The Red Pill",
SPTN97: "SPTN-97 Gene Modification", SPTN97: "SPTN-97 Gene Modification",
HiveMind: "ECorp HVMind Implant", HiveMind: "ECorp HVMind Implant",
CordiARCReactor: "CordiARC Fusion Reactor", CordiARCReactor: "CordiARC Fusion Reactor",
@ -1039,7 +1040,14 @@ initAugmentations = function() {
AddToAugmentations(QLink); AddToAugmentations(QLink);
//Daedalus //Daedalus
//TODO The Red Pill - Second prestige var RedPill = new Augmentation(AugmentationNames.TheRedPill);
RedPill.setInfo("It's time to leave the cave");
RedPill.setRequirements(1000000, 0);
RedPill.addToFactions(["Daedalus"]);
if (augmentationExists(AugmentationNames.TheRedPill)) {
delete Augmentations[AugmentationNames.TheRedPill];
}
AddToAugmentations(RedPill);
//Covenant //Covenant
var SPTN97 = new Augmentation(AugmentationNames.SPTN97); var SPTN97 = new Augmentation(AugmentationNames.SPTN97);

@ -231,8 +231,8 @@ CompanyPositions = {
//Software //Software
SoftwareIntern: new CompanyPosition("Software Engineering Intern", 1, 0, 0, 0, 0, 0, 0, 13), SoftwareIntern: new CompanyPosition("Software Engineering Intern", 1, 0, 0, 0, 0, 0, 0, 13),
JuniorDev: new CompanyPosition("Junior Software Engineer", 51, 0, 0, 0, 0, 0, 8000, 32), JuniorDev: new CompanyPosition("Junior Software Engineer", 51, 0, 0, 0, 0, 0, 8000, 32),
SeniorDev: new CompanyPosition("Senior Software Engineer", 251, 0, 0, 0, 0, 51, 32000, 63), SeniorDev: new CompanyPosition("Senior Software Engineer", 251, 0, 0, 0, 0, 51, 40000, 63),
LeadDev: new CompanyPosition("Lead Software Developer", 401, 0, 0, 0, 0, 151, 144000, 210), LeadDev: new CompanyPosition("Lead Software Developer", 401, 0, 0, 0, 0, 151, 200000, 210),
//TODO Through darkweb, maybe? //TODO Through darkweb, maybe?
FreelanceDeveloper: new CompanyPosition("Freelance Developer", 0, 0, 0, 0, 0, 0, 0, 0), FreelanceDeveloper: new CompanyPosition("Freelance Developer", 0, 0, 0, 0, 0, 0, 0, 0),
@ -242,26 +242,26 @@ CompanyPositions = {
//IT //IT
ITIntern: new CompanyPosition("IT Intern", 1, 0, 0, 0, 0, 0, 0, 11), ITIntern: new CompanyPosition("IT Intern", 1, 0, 0, 0, 0, 0, 0, 11),
ITAnalyst: new CompanyPosition("IT Analyst", 26, 0, 0, 0, 0, 0, 5000, 25), ITAnalyst: new CompanyPosition("IT Analyst", 26, 0, 0, 0, 0, 0, 7000, 25),
ITManager: new CompanyPosition("IT Manager", 151, 0, 0, 0, 0, 51, 22000, 48), ITManager: new CompanyPosition("IT Manager", 151, 0, 0, 0, 0, 51, 35000, 48),
SysAdmin: new CompanyPosition("Systems Administrator", 251, 0, 0, 0, 0, 76, 120000, 165), SysAdmin: new CompanyPosition("Systems Administrator", 251, 0, 0, 0, 0, 76, 175000, 165),
SecurityEngineer: new CompanyPosition("Security Engineer", 151, 0, 0, 0, 0, 26, 28000, 55), SecurityEngineer: new CompanyPosition("Security Engineer", 151, 0, 0, 0, 0, 26, 35000, 55),
NetworkEngineer: new CompanyPosition("Network Engineer", 151, 0, 0, 0, 0, 26, 28000, 55), NetworkEngineer: new CompanyPosition("Network Engineer", 151, 0, 0, 0, 0, 26, 35000, 55),
NetworkAdministrator: new CompanyPosition("Network Administrator", 251, 0, 0, 0, 0, 76, 120000, 165), NetworkAdministrator: new CompanyPosition("Network Administrator", 251, 0, 0, 0, 0, 76, 175000, 165),
//Technology management //Technology management
HeadOfSoftware: new CompanyPosition("Head of Software", 501, 0, 0, 0, 0, 251, 288000, 330), HeadOfSoftware: new CompanyPosition("Head of Software", 501, 0, 0, 0, 0, 251, 400000, 330),
HeadOfEngineering: new CompanyPosition("Head of Engineering", 501, 0, 0, 0, 0, 251, 576000, 660), HeadOfEngineering: new CompanyPosition("Head of Engineering", 501, 0, 0, 0, 0, 251, 800000, 660),
VicePresident: new CompanyPosition("Vice President of Technology", 601, 0, 0, 0, 0, 401, 1152000, 990), VicePresident: new CompanyPosition("Vice President of Technology", 601, 0, 0, 0, 0, 401, 1600000, 990),
CTO: new CompanyPosition("Chief Technology Officer", 751, 0, 0, 0, 0, 501, 4608000, 1100), CTO: new CompanyPosition("Chief Technology Officer", 751, 0, 0, 0, 0, 501, 3200000, 1100),
//Business //Business
BusinessIntern: new CompanyPosition("Business Intern", 1, 0, 0, 0, 0, 1, 0, 18), BusinessIntern: new CompanyPosition("Business Intern", 1, 0, 0, 0, 0, 1, 0, 18),
BusinessAnalyst: new CompanyPosition("Business Analyst", 6, 0, 0, 0, 0, 51, 8000, 42), BusinessAnalyst: new CompanyPosition("Business Analyst", 6, 0, 0, 0, 0, 51, 8000, 42),
BusinessManager: new CompanyPosition("Business Manager", 51, 0, 0, 0, 0, 101, 32000, 84), BusinessManager: new CompanyPosition("Business Manager", 51, 0, 0, 0, 0, 101, 40000, 84),
OperationsManager: new CompanyPosition("Operations Manager", 51, 0, 0, 0, 0, 226, 144000, 275), OperationsManager: new CompanyPosition("Operations Manager", 51, 0, 0, 0, 0, 226, 200000, 275),
CFO: new CompanyPosition("Chief Financial Officer", 76, 0, 0, 0, 0, 501, 576000, 800), CFO: new CompanyPosition("Chief Financial Officer", 76, 0, 0, 0, 0, 501, 800000, 800),
CEO: new CompanyPosition("Chief Executive Officer", 101, 0, 0, 0, 0, 751, 4608000, 1500), CEO: new CompanyPosition("Chief Executive Officer", 101, 0, 0, 0, 0, 751, 3200000, 1500),
BusinessConsultant: new CompanyPosition("Business Consultant", 6, 0, 0, 0, 0, 51, 0, 28), BusinessConsultant: new CompanyPosition("Business Consultant", 6, 0, 0, 0, 0, 51, 0, 28),
SeniorBusinessConsultant: new CompanyPosition("Senior Business Consultant", 51, 0, 0, 0, 0, 226, 0, 175), SeniorBusinessConsultant: new CompanyPosition("Senior Business Consultant", 51, 0, 0, 0, 0, 226, 0, 175),
@ -273,75 +273,75 @@ CompanyPositions = {
Waiter: new CompanyPosition("Waiter", 0, 0, 0, 0, 0, 0, 0, 11), Waiter: new CompanyPosition("Waiter", 0, 0, 0, 0, 0, 0, 0, 11),
Employee: new CompanyPosition("Employee", 0, 0, 0, 0, 0, 0, 0, 11), Employee: new CompanyPosition("Employee", 0, 0, 0, 0, 0, 0, 0, 11),
PoliceOfficer: new CompanyPosition("Police Officer", 11, 101, 101, 101, 101, 51, 8000, 36), PoliceOfficer: new CompanyPosition("Police Officer", 11, 101, 101, 101, 101, 51, 8000, 36),
PoliceChief: new CompanyPosition("Police Chief", 101, 301, 301, 301, 301, 151, 32000, 175), PoliceChief: new CompanyPosition("Police Chief", 101, 301, 301, 301, 301, 151, 36000, 175),
SecurityGuard: new CompanyPosition("Security Guard", 0, 51, 51, 51, 51, 1, 0, 20), SecurityGuard: new CompanyPosition("Security Guard", 0, 51, 51, 51, 51, 1, 0, 20),
SecurityOfficer: new CompanyPosition("Security Officer", 26, 151, 151, 151, 151, 51, 8000, 75), SecurityOfficer: new CompanyPosition("Security Officer", 26, 151, 151, 151, 151, 51, 8000, 75),
SecuritySupervisor: new CompanyPosition("Security Supervisor", 26, 251, 251, 251, 251, 101, 32000, 275), SecuritySupervisor: new CompanyPosition("Security Supervisor", 26, 251, 251, 251, 251, 101, 36000, 275),
HeadOfSecurity: new CompanyPosition("Head of Security", 51, 501, 501, 501, 501, 151, 144000, 550), HeadOfSecurity: new CompanyPosition("Head of Security", 51, 501, 501, 501, 501, 151, 144000, 550),
FieldAgent: new CompanyPosition("Field Agent", 101, 101, 101, 101, 101, 101, 8000, 55), FieldAgent: new CompanyPosition("Field Agent", 101, 101, 101, 101, 101, 101, 8000, 55),
SecretAgent: new CompanyPosition("Secret Agent", 201, 251, 251, 251, 251, 201, 32000, 190), SecretAgent: new CompanyPosition("Secret Agent", 201, 251, 251, 251, 251, 201, 32000, 190),
SpecialOperative: new CompanyPosition("Special Operative", 251, 501, 501, 501, 501, 251, 144000, 425), SpecialOperative: new CompanyPosition("Special Operative", 251, 501, 501, 501, 501, 251, 162000, 425),
init: function() { init: function() {
//Argument order: hack, str, def, dex, agi, cha //Argument order: hack, str, def, dex, agi, cha
//Software //Software
CompanyPositions.SoftwareIntern.setPerformanceParameters(90, 0, 0, 0, 0, 10, 1); CompanyPositions.SoftwareIntern.setPerformanceParameters(85, 0, 0, 0, 0, 15, 0.9);
CompanyPositions.SoftwareIntern.setExperienceGains(.1, 0, 0, 0, 0, .02); CompanyPositions.SoftwareIntern.setExperienceGains(.05, 0, 0, 0, 0, .02);
CompanyPositions.JuniorDev.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1); CompanyPositions.JuniorDev.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1);
CompanyPositions.JuniorDev.setExperienceGains(.2, 0, 0, 0, 0, .04); CompanyPositions.JuniorDev.setExperienceGains(.1, 0, 0, 0, 0, .05);
CompanyPositions.SeniorDev.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.2); CompanyPositions.SeniorDev.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.3);
CompanyPositions.SeniorDev.setExperienceGains(.4, 0, 0, 0, 0, .08); CompanyPositions.SeniorDev.setExperienceGains(.3, 0, 0, 0, 0, .08);
CompanyPositions.LeadDev.setPerformanceParameters(70, 0, 0, 0, 0, 30, 1.3); CompanyPositions.LeadDev.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.5);
CompanyPositions.LeadDev.setExperienceGains(.5, 0, 0, 0, 0, .1); CompanyPositions.LeadDev.setExperienceGains(.5, 0, 0, 0, 0, .1);
CompanyPositions.SoftwareConsultant.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1); CompanyPositions.SoftwareConsultant.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1);
CompanyPositions.SoftwareConsultant.setExperienceGains(.175, 0, 0, 0, 0, .03); CompanyPositions.SoftwareConsultant.setExperienceGains(.08, 0, 0, 0, 0, .03);
CompanyPositions.SeniorSoftwareConsultant.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.15); CompanyPositions.SeniorSoftwareConsultant.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.2);
CompanyPositions.SeniorSoftwareConsultant.setExperienceGains(.35, 0, 0, 0, 0, .06); CompanyPositions.SeniorSoftwareConsultant.setExperienceGains(.25, 0, 0, 0, 0, .06);
//Security //Security
CompanyPositions.ITIntern.setPerformanceParameters(90, 0, 0, 0, 0, 10, 1); CompanyPositions.ITIntern.setPerformanceParameters(90, 0, 0, 0, 0, 10, 0.9);
CompanyPositions.ITIntern.setExperienceGains(.05, 0, 0, 0, 0, .01); CompanyPositions.ITIntern.setExperienceGains(.04, 0, 0, 0, 0, .01);
CompanyPositions.ITAnalyst.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1); CompanyPositions.ITAnalyst.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1);
CompanyPositions.ITAnalyst.setExperienceGains(.15, 0, 0, 0, 0, .02); CompanyPositions.ITAnalyst.setExperienceGains(.08, 0, 0, 0, 0, .02);
CompanyPositions.ITManager.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.2); CompanyPositions.ITManager.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.3);
CompanyPositions.ITManager.setExperienceGains(.4, 0, 0, 0, 0, .1); CompanyPositions.ITManager.setExperienceGains(.3, 0, 0, 0, 0, .1);
CompanyPositions.SysAdmin.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.2); CompanyPositions.SysAdmin.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.4);
CompanyPositions.SysAdmin.setExperienceGains(.5, 0, 0, 0, 0, .05); CompanyPositions.SysAdmin.setExperienceGains(.5, 0, 0, 0, 0, .05);
CompanyPositions.SecurityEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.15); CompanyPositions.SecurityEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.2);
CompanyPositions.SecurityEngineer.setExperienceGains(0.4, 0, 0, 0, 0, .05); CompanyPositions.SecurityEngineer.setExperienceGains(0.4, 0, 0, 0, 0, .05);
CompanyPositions.NetworkEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.15); CompanyPositions.NetworkEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.2);
CompanyPositions.NetworkEngineer.setExperienceGains(0.4, 0, 0, 0, 0, .05); CompanyPositions.NetworkEngineer.setExperienceGains(0.4, 0, 0, 0, 0, .05);
CompanyPositions.NetworkAdministrator.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.25); CompanyPositions.NetworkAdministrator.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.3);
CompanyPositions.NetworkAdministrator.setExperienceGains(0.5, 0, 0, 0, 0, .1); CompanyPositions.NetworkAdministrator.setExperienceGains(0.5, 0, 0, 0, 0, .1);
//Technology management //Technology management
CompanyPositions.HeadOfSoftware.setPerformanceParameters(65, 0, 0, 0, 0, 35, 1.4); CompanyPositions.HeadOfSoftware.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.6);
CompanyPositions.HeadOfSoftware.setExperienceGains(1, 0, 0, 0, 0, .5); CompanyPositions.HeadOfSoftware.setExperienceGains(1, 0, 0, 0, 0, .5);
CompanyPositions.HeadOfEngineering.setPerformanceParameters(60, 0, 0, 0, 0, 40, 1.4); CompanyPositions.HeadOfEngineering.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.6);
CompanyPositions.HeadOfEngineering.setExperienceGains(1.1, 0, 0, 0, 0, .5); CompanyPositions.HeadOfEngineering.setExperienceGains(1.1, 0, 0, 0, 0, .5);
CompanyPositions.VicePresident.setPerformanceParameters(60, 0, 0, 0, 0, 40, 1.5); CompanyPositions.VicePresident.setPerformanceParameters(70, 0, 0, 0, 0, 30, 1.75);
CompanyPositions.VicePresident.setExperienceGains(1.2, 0, 0, 0, 0, .6); CompanyPositions.VicePresident.setExperienceGains(1.2, 0, 0, 0, 0, .6);
CompanyPositions.CTO.setPerformanceParameters(50, 0, 0, 0, 0, 50, 1.5); CompanyPositions.CTO.setPerformanceParameters(65, 0, 0, 0, 0, 35, 2);
CompanyPositions.CTO.setExperienceGains(1.5, 0, 0, 0, 1); CompanyPositions.CTO.setExperienceGains(1.5, 0, 0, 0, 1);
//Business //Business
CompanyPositions.BusinessIntern.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1); CompanyPositions.BusinessIntern.setPerformanceParameters(10, 0, 0, 0, 0, 90, 0.9);
CompanyPositions.BusinessIntern.setExperienceGains(.01, 0, 0, 0, 0, .1); CompanyPositions.BusinessIntern.setExperienceGains(.01, 0, 0, 0, 0, .08);
CompanyPositions.BusinessAnalyst.setPerformanceParameters(20, 0, 0, 0, 0, 80, 1.1); CompanyPositions.BusinessAnalyst.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.1);
CompanyPositions.BusinessAnalyst.setExperienceGains(.02, 0, 0, 0, 0, .2); CompanyPositions.BusinessAnalyst.setExperienceGains(.02, 0, 0, 0, 0, .15);
CompanyPositions.BusinessManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.2); CompanyPositions.BusinessManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.3);
CompanyPositions.BusinessManager.setExperienceGains(.02, 0, 0, 0, 0, .4); CompanyPositions.BusinessManager.setExperienceGains(.02, 0, 0, 0, 0, .3);
CompanyPositions.OperationsManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.2); CompanyPositions.OperationsManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.5);
CompanyPositions.OperationsManager.setExperienceGains(.02, 0, 0, 0, 0, .4); CompanyPositions.OperationsManager.setExperienceGains(.02, 0, 0, 0, 0, .4);
CompanyPositions.CFO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.3); CompanyPositions.CFO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.6);
CompanyPositions.CFO.setExperienceGains(.05, 0, 0, 0, 0, 1); CompanyPositions.CFO.setExperienceGains(.05, 0, 0, 0, 0, 1);
CompanyPositions.CEO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.5); CompanyPositions.CEO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.75);
CompanyPositions.CEO.setExperienceGains(.1, 0, 0, 0, 0, 1.5); CompanyPositions.CEO.setExperienceGains(.1, 0, 0, 0, 0, 1.5);
CompanyPositions.BusinessConsultant.setPerformanceParameters(20, 0, 0, 0, 0, 80, 1); CompanyPositions.BusinessConsultant.setPerformanceParameters(20, 0, 0, 0, 0, 80, 1);
CompanyPositions.BusinessConsultant.setExperienceGains(.015, 0, 0, 0, 0, .15); CompanyPositions.BusinessConsultant.setExperienceGains(.015, 0, 0, 0, 0, .15);
CompanyPositions.SeniorBusinessConsultant.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.15); CompanyPositions.SeniorBusinessConsultant.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.2);
CompanyPositions.SeniorBusinessConsultant.setExperienceGains(.015, 0, 0, 0, 0, .3); CompanyPositions.SeniorBusinessConsultant.setExperienceGains(.015, 0, 0, 0, 0, .3);
//Non-tech/management jobs //Non-tech/management jobs

@ -1,5 +1,5 @@
CONSTANTS = { 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 //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 //and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
@ -10,7 +10,7 @@ CONSTANTS = {
CorpFactionRepRequirement: 250000, CorpFactionRepRequirement: 250000,
/* Base costs */ /* Base costs */
BaseCostFor1GBOfRamHome: 45000, BaseCostFor1GBOfRamHome: 32000,
BaseCostFor1GBOfRamServer: 55000, //1 GB of RAM BaseCostFor1GBOfRamServer: 55000, //1 GB of RAM
BaseCostFor1GBOfRamHacknetNode: 30000, BaseCostFor1GBOfRamHacknetNode: 30000,
@ -19,7 +19,7 @@ CONSTANTS = {
/* Hacknet Node constants */ /* Hacknet Node constants */
HacknetNodeMoneyGainPerLevel: 1.55, HacknetNodeMoneyGainPerLevel: 1.55,
HacknetNodePurchaseNextMult: 1.42, //Multiplier when purchasing an additional hacknet node HacknetNodePurchaseNextMult: 1.75, //Multiplier when purchasing an additional hacknet node
HacknetNodeUpgradeLevelMult: 1.045, //Multiplier for cost when upgrading level HacknetNodeUpgradeLevelMult: 1.045, //Multiplier for cost when upgrading level
HacknetNodeUpgradeRamMult: 1.28, //Multiplier for cost when upgrading RAM HacknetNodeUpgradeRamMult: 1.28, //Multiplier for cost when upgrading RAM
HacknetNodeUpgradeCoreMult: 1.49, //Multiplier for cost when buying another core HacknetNodeUpgradeCoreMult: 1.49, //Multiplier for cost when buying another core
@ -152,12 +152,12 @@ CONSTANTS = {
ClassGymDexterity: "training your dexterity at a gym", ClassGymDexterity: "training your dexterity at a gym",
ClassGymAgility: "training your agility at a gym", ClassGymAgility: "training your agility at a gym",
ClassDataStructuresBaseCost: 6, ClassDataStructuresBaseCost: 30,
ClassNetworksBaseCost: 30, ClassNetworksBaseCost: 60,
ClassAlgorithmsBaseCost: 120, ClassAlgorithmsBaseCost: 240,
ClassManagementBaseCost: 60, ClassManagementBaseCost: 120,
ClassLeadershipBaseCost: 120, ClassLeadershipBaseCost: 240,
ClassGymBaseCost: 100, ClassGymBaseCost: 120,
CrimeShoplift: "shoplift", CrimeShoplift: "shoplift",
CrimeMug: "mug someone", CrimeMug: "mug someone",
@ -170,7 +170,7 @@ CONSTANTS = {
CrimeHeist: "pull off the ultimate heist", CrimeHeist: "pull off the ultimate heist",
//Text that is displayed when the 'help' command is ran in Terminal //Text that is displayed when the 'help' command is ran in Terminal
HelpText: 'alias [name="value"] Create aliases for Terminal commands, or list existing aliases<br>' + HelpText: 'alias [-g] [name="value"] Create aliases for Terminal commands, or list existing aliases<br>' +
"analyze Get statistics and information about current machine <br>" + "analyze Get statistics and information about current machine <br>" +
"cat [message] Display a .msg file<br>" + "cat [message] Display a .msg file<br>" +
"check [script] [args...] Print logs to Terminal for the script with the specified name and arguments<br>" + "check [script] [args...] Print logs to Terminal for the script with the specified name and arguments<br>" +
@ -668,13 +668,17 @@ CONSTANTS = {
"upgrade your abilities. The Augmentations that are available to unlock vary from faction to faction.", "upgrade your abilities. The Augmentations that are available to unlock vary from faction to faction.",
TutorialAugmentationsText: "Advances in science and medicine have lead to powerful new technologies that allow people to augment themselves " + TutorialAugmentationsText: "Advances in science and medicine have lead to powerful new technologies that allow people to augment themselves " +
"beyond normal human capabilities. There are many different types of Augmentations, ranging from cybernetic to " + "beyond normal human capabilities. There are many different types of Augmentations, ranging from cybernetic to " +
"genetic to biological. Acquiring these Augmentations enhances the user's physical and mental faculties. <br>" + "genetic to biological. Acquiring these Augmentations enhances the user's physical and mental faculties. <br><br>" +
"Because of how powerful these Augmentations are, the technology behind them is kept private and secret by the " + "Because of how powerful these Augmentations are, the technology behind them is kept private and secret by the " +
"corporations and organizations that create them. Therefore, the only way for the player to obtain Augmentations is " + "corporations and organizations that create them. Therefore, the only way for the player to obtain Augmentations is " +
"through Factions. After joining a Faction and earning enough reputation in it, you will be able to purchase " + "through Factions. After joining a Faction and earning enough reputation in it, you will be able to purchase " +
"its Augmentations. Different Factions offer different Augmentations. Augmentations must be purchased in order to be installed, " + "its Augmentations. Different Factions offer different Augmentations. Augmentations must be purchased in order to be installed, " +
"and they are fairly expensive. <br><br>" + "and they are fairly expensive. <br><br>" +
"Unfortunately, installing an Augmentation has side effects. You will lose most of the progress you've made, including your " + "When you purchase an Augmentation, the price of purchasing another Augmentation increases by 90%. This multiplier stacks for " +
"each Augmentation you purchase. You will not gain the benefits of your purchased Augmentations until you install them. You can " +
"choose to install Augmentations through the 'Augmentations' menu tab. Once you install your purchased Augmentations, " +
"their costs are reset back to the original price.<br><br>" +
"Unfortunately, installing Augmentations has side effects. You will lose most of the progress you've made, including your " +
"skills, stats, and money. You will have to start over, but you will have all of the Augmentations you have installed to " + "skills, stats, and money. You will have to start over, but you will have all of the Augmentations you have installed to " +
"help you progress. <br><br> " + "help you progress. <br><br> " +
"To summarize, here is a list of everything you will LOSE when you install an Augmentation: <br><br>" + "To summarize, here is a list of everything you will LOSE when you install an Augmentation: <br><br>" +
@ -686,13 +690,33 @@ CONSTANTS = {
"Company/faction reputation<br>" + "Company/faction reputation<br>" +
"Jobs and Faction memberships<br>" + "Jobs and Faction memberships<br>" +
"Programs<br>" + "Programs<br>" +
"Stocks<br>" +
"TOR router<br><br>" + "TOR router<br><br>" +
"Here is everything you will KEEP when you install an Augmentation: <br><br>" + "Here is everything you will KEEP when you install an Augmentation: <br><br>" +
"Every Augmentation you have installed<br>" + "Every Augmentation you have installed<br>" +
"Scripts on your home computer<br>" + "Scripts on your home computer<br>" +
"RAM Upgrades on your home computer", "RAM Upgrades on your home computer<br>" +
"World Stock Exchange account and TIX API Access<br>",
Changelog: Changelog:
"v0.24.1<br>" +
"-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.<br>" +
"-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%<br>" +
"-Rebalanced company/company position reputation gains and requirements<br>" +
"-Studying at a university now gives slightly more EXP and early jobs give slightly less EXP<br>" +
"-Studying at a university is now considerably more expensive<br>" +
"-Rebalanced stock market<br>" +
"-Significantly increased cost multiplier for purchasing additional Hacknet Nodes<br>" +
"-The rate at which facility security level increases during infiltration for each clearance level " +
"was lowered slightly for all companies<br>" +
"-Updated Faction descriptions<br>" +
"-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<br>' +
"-'top' Terminal command implemented courtesy of Github user LTCNugget. Currently, the formatting gets screwed up " +
"if your script names are really long.<br><br>" +
"v0.24.0<br>" + "v0.24.0<br>" +
"-Players now have HP, which is displayed in the top right. To regain HP, visit the hospital. Currently " + "-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<br>" + "the only way to lose HP is through infiltration<br>" +
@ -901,6 +925,24 @@ CONSTANTS = {
"-You can now see what an Augmentation does and its price even while its locked<br><br>", "-You can now see what an Augmentation does and its price even while its locked<br><br>",
LatestUpdate: LatestUpdate:
"v0.24.1<br>" +
"-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.<br>" +
"-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%<br>" +
"-Rebalanced company/company position reputation gains and requirements<br>" +
"-Studying at a university now gives slightly more EXP and early jobs give slightly less EXP<br>" +
"-Studying at a university is now considerably more expensive<br>" +
"-Rebalanced stock market<br>" +
"-Significantly increased cost multiplier for purchasing additional Hacknet Nodes<br>" +
"-The rate at which facility security level increases during infiltration for each clearance level " +
"was lowered slightly for all companies<br>" +
"-Updated Faction descriptions<br>" +
"-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<br>' +
"-'top' Terminal command implemented courtesy of Github user LTCNugget. Currently, the formatting gets screwed up " +
"if your script names are really long.<br><br>" +
"v0.24.0<br>" + "v0.24.0<br>" +
"-Players now have HP, which is displayed in the top right. To regain HP, visit the hospital. Currently " + "-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<br>" + "the only way to lose HP is through infiltration<br>" +

@ -3,20 +3,14 @@
FactionInfo = { FactionInfo = {
//Endgame //Endgame
IlluminatiInfo: "Humanity never changes. No matter how civilized society becomes, it will eventually fall back " + IlluminatiInfo: "Humanity never changes. No matter how civilized society becomes, it will eventually fall back " +
"into chaos. And out of this chaos, we will lead them to order. <br><br>" + "into chaos. And from this chaos, we are the Invisible hand that guides them to order. ",
"We are the Invisible Hand. We are forever.",
DaedalusInfo: "If all of human " + DaedalusInfo: "Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth.",
"history is but a single lesson, it is that the individual may be remembered, but the organization " +
"persists and thrives. A single artist, a single general, a single hero or a single villain may all die, " + CovenantInfo: "Surrender yourself. Give up your empty individuality to become part of something great, something eternal. " +
"but it is impossible to kill a people, a nation, an idea -- except when that idea has grown weak and is " +
"overpowered by one that is stronger. -- The Doctrine of the Mighty<br><br>" +
"Surrender yourself. Give up your empty individuality to become part of something great, something eternal. " +
"Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.<br><br> " + "Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.<br><br> " +
"Only then can you discover immortality.", "Only then can you discover immortality.",
CovenantInfo: "Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth.",
//Megacorporations, each forms its own faction //Megacorporations, each forms its own faction
ECorpInfo: "ECorp's mission is simple: to connect the world of today with the technology of tomorrow. " + ECorpInfo: "ECorp's mission is simple: to connect the world of today with the technology of tomorrow. " +
"With our wide range of Internet-related software and commercial hardware, ECorp makes the world's " + "With our wide range of Internet-related software and commercial hardware, ECorp makes the world's " +
@ -51,12 +45,12 @@ FactionInfo = {
"It's all transformed into bits, stored in bits, communicated through bits. Its impossible for any person " + "It's all transformed into bits, stored in bits, communicated through bits. Its impossible for any person " +
"to move, to live, to operate at any level without the use of bits. " + "to move, to live, to operate at any level without the use of bits. " +
"And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly " + "And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly " +
"meaningly fragments of information. But these bits can be reconstructed. Transformed. Used.<br><br>" + "meaningless fragments of information. But these bits can be reconstructed. Transformed. Used.<br><br>" +
"Those who run the bits, run the world", "Those who run the bits, run the world",
BlackHandInfo: "This is real freedom, freedom to own property, make a profit, make your life. " + BlackHandInfo: "The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power. " +
"The West, so afraid of strong government, now has no government. Only financial power. " + "Technological power. " +
"And those at the top rule with an invisible hand. They built a society where the rich get richer, " + "And those at the top rule with an invisible hand. They built a society where the rich get richer, " +
"and everyone else suffers.<br><br>" + "and everyone else suffers.<br><br>" +
"So much pain. So many lives. Their darkness must end.", "So much pain. So many lives. Their darkness must end.",
@ -113,7 +107,10 @@ FactionInfo = {
TheSyndicateInfo: "Honor holds you back", TheSyndicateInfo: "Honor holds you back",
SilhouetteInfo: "Corporations are so big, you don't even know who you're working for. That's terror. Terror built into the system.", SilhouetteInfo: "Corporations have filled the void of power left behind by the collapse of Western government. The issue is they've become so big " +
"that you don't know who they're working for. And if you're employed at one of these corporations, you don't even know who you're working " +
"for. <br><br>" +
"That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system.",
TetradsInfo: "Following the Mandate of Heaven and Carrying out the Way", TetradsInfo: "Following the Mandate of Heaven and Carrying out the Way",

@ -216,6 +216,9 @@ getMaxNumberLevelUpgrades = function(nodeObj) {
var min = 1; var min = 1;
var max = CONSTANTS.HacknetNodeMaxLevel-1; var max = CONSTANTS.HacknetNodeMaxLevel-1;
var levelsToMax = CONSTANTS.HacknetNodeMaxLevel - nodeObj.level; var levelsToMax = CONSTANTS.HacknetNodeMaxLevel - nodeObj.level;
if (nodeObj.calculateLevelUpgradeCost(levelsToMax) < Player.money) {
return levelsToMax;
}
while (min <= max) { while (min <= max) {
var curr = (min + max) / 2 | 0; var curr = (min + max) / 2 | 0;

@ -369,7 +369,7 @@ displayLocationContent = function() {
purchaseTor.style.display = "block"; purchaseTor.style.display = "block";
purchaseHomeRam.style.display = "block"; purchaseHomeRam.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumECorp, setInfiltrateButton(infiltrate, Locations.AevumECorp,
6000, 100, 150, 14); 6000, 100, 150, 13);
break; break;
case Locations.AevumBachmanAndAssociates: case Locations.AevumBachmanAndAssociates:
@ -382,7 +382,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumBachmanAndAssociates, setInfiltrateButton(infiltrate, Locations.AevumBachmanAndAssociates,
1500, 36, 60, 10); 1500, 36, 60, 9.5);
break; break;
case Locations.AevumClarkeIncorporated: case Locations.AevumClarkeIncorporated:
@ -395,7 +395,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumClarkeIncorporated, setInfiltrateButton(infiltrate, Locations.AevumClarkeIncorporated,
2400, 28, 75, 9.5); 2400, 28, 75, 9);
break; break;
case Locations.AevumFulcrumTechnologies: case Locations.AevumFulcrumTechnologies:
@ -414,7 +414,7 @@ displayLocationContent = function() {
purchaseTor.style.display = "block"; purchaseTor.style.display = "block";
purchaseHomeRam.style.display = "block"; purchaseHomeRam.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumFulcrumTechnologies, setInfiltrateButton(infiltrate, Locations.AevumFulcrumTechnologies,
6000, 84, 100, 16); 6000, 84, 100, 15);
break; break;
case Locations.AevumAeroCorp: case Locations.AevumAeroCorp:
@ -426,7 +426,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumAeroCorp, setInfiltrateButton(infiltrate, Locations.AevumAeroCorp,
2000, 26, 50, 10.5); 2000, 26, 50, 10);
break; break;
case Locations.AevumGalacticCybersystems: case Locations.AevumGalacticCybersystems:
@ -439,7 +439,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
businessJob.style.display = "block"; businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumGalacticCybersystems, setInfiltrateButton(infiltrate, Locations.AevumGalacticCybersystems,
1400, 24, 50, 10); 1400, 24, 50, 9);
break; break;
case Locations.AevumWatchdogSecurity: case Locations.AevumWatchdogSecurity:
@ -453,7 +453,7 @@ displayLocationContent = function() {
securityJob.style.display = "block"; securityJob.style.display = "block";
agentJob.style.display = "block"; agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumWatchdogSecurity, setInfiltrateButton(infiltrate, Locations.AevumWatchdogSecurity,
850, 12, 30, 8); 850, 12, 30, 7.5);
break; break;
case Locations.AevumRhoConstruction: case Locations.AevumRhoConstruction:
@ -462,7 +462,7 @@ displayLocationContent = function() {
softwareJob.style.display = "block"; softwareJob.style.display = "block";
businessJob.style.display = "block"; businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumRhoConstruction, setInfiltrateButton(infiltrate, Locations.AevumRhoConstruction,
600, 8, 20, 4.5); 600, 8, 20, 4);
break; break;
case Locations.AevumPolice: case Locations.AevumPolice:
@ -471,7 +471,7 @@ displayLocationContent = function() {
softwareJob.style.display = "block"; softwareJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumPolice, setInfiltrateButton(infiltrate, Locations.AevumPolice,
700, 10, 25, 6); 700, 10, 25, 5);
break; break;
case Locations.AevumNetLinkTechnologies: case Locations.AevumNetLinkTechnologies:
@ -489,7 +489,7 @@ displayLocationContent = function() {
purchaseTor.style.display = "block"; purchaseTor.style.display = "block";
purchaseHomeRam.style.display = "block"; purchaseHomeRam.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumNetLinkTechnologies, setInfiltrateButton(infiltrate, Locations.AevumNetLinkTechnologies,
150, 5, 15, 3.5); 150, 5, 15, 3);
break; break;
case Locations.AevumCrushFitnessGym: case Locations.AevumCrushFitnessGym:
@ -523,7 +523,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.ChongqingKuaiGongInternational, setInfiltrateButton(infiltrate, Locations.ChongqingKuaiGongInternational,
5500, 42, 100, 15); 5500, 42, 100, 14);
break; break;
case Locations.ChongqingSolarisSpaceSystems: case Locations.ChongqingSolarisSpaceSystems:
@ -535,7 +535,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.ChongqingSolarisSpaceSystems, setInfiltrateButton(infiltrate, Locations.ChongqingSolarisSpaceSystems,
3600, 24, 75, 14); 3600, 24, 75, 13);
break; break;
@ -564,7 +564,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12MegaCorp, setInfiltrateButton(infiltrate, Locations.Sector12MegaCorp,
6000, 100, 125, 15.5); 6000, 100, 125, 15);
break; break;
case Locations.Sector12BladeIndustries: case Locations.Sector12BladeIndustries:
@ -577,7 +577,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12BladeIndustries, setInfiltrateButton(infiltrate, Locations.Sector12BladeIndustries,
3000, 40, 100, 11); 3000, 40, 100, 10);
break; break;
case Locations.Sector12FourSigma: case Locations.Sector12FourSigma:
@ -590,7 +590,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12FourSigma, setInfiltrateButton(infiltrate, Locations.Sector12FourSigma,
1500, 50, 100, 16); 1500, 50, 100, 14.5);
break; break;
case Locations.Sector12IcarusMicrosystems: case Locations.Sector12IcarusMicrosystems:
@ -603,7 +603,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
businessJob.style.display = "block"; businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12IcarusMicrosystems, setInfiltrateButton(infiltrate, Locations.Sector12IcarusMicrosystems,
900, 28, 70, 12); 900, 28, 70, 11);
break; break;
case Locations.Sector12UniversalEnergy: case Locations.Sector12UniversalEnergy:
@ -616,7 +616,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
businessJob.style.display = "block"; businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12UniversalEnergy, setInfiltrateButton(infiltrate, Locations.Sector12UniversalEnergy,
775, 20, 50, 10); 775, 20, 50, 9.5);
break; break;
case Locations.Sector12DeltaOne: case Locations.Sector12DeltaOne:
@ -628,7 +628,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12DeltaOne, setInfiltrateButton(infiltrate, Locations.Sector12DeltaOne,
1200, 30, 75, 11); 1200, 30, 75, 10);
break; break;
case Locations.Sector12CIA: case Locations.Sector12CIA:
@ -641,7 +641,7 @@ displayLocationContent = function() {
securityJob.style.display = "block"; securityJob.style.display = "block";
agentJob.style.display = "block"; agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12CIA, setInfiltrateButton(infiltrate, Locations.Sector12CIA,
1450, 38, 80, 12.5); 1450, 38, 80, 12);
break; break;
case Locations.Sector12NSA: case Locations.Sector12NSA:
@ -654,7 +654,7 @@ displayLocationContent = function() {
securityJob.style.display = "block"; securityJob.style.display = "block";
agentJob.style.display = "block"; agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12NSA, setInfiltrateButton(infiltrate, Locations.Sector12NSA,
1400, 34, 80, 12); 1400, 34, 80, 11);
break; break;
case Locations.Sector12AlphaEnterprises: case Locations.Sector12AlphaEnterprises:
@ -668,7 +668,7 @@ displayLocationContent = function() {
purchaseTor.style.display = "block"; purchaseTor.style.display = "block";
purchaseHomeRam.style.display = "block"; purchaseHomeRam.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12AlphaEnterprises, setInfiltrateButton(infiltrate, Locations.Sector12AlphaEnterprises,
250, 10, 40, 5); 250, 10, 40, 4.5);
break; break;
case Locations.Sector12CarmichaelSecurity: case Locations.Sector12CarmichaelSecurity:
@ -682,7 +682,7 @@ displayLocationContent = function() {
securityJob.style.display = "block"; securityJob.style.display = "block";
agentJob.style.display = "block"; agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12CarmichaelSecurity, setInfiltrateButton(infiltrate, Locations.Sector12CarmichaelSecurity,
500, 14, 60, 5); 500, 14, 60, 4.5);
break; break;
case Locations.Sector12FoodNStuff: case Locations.Sector12FoodNStuff:
@ -698,7 +698,7 @@ displayLocationContent = function() {
employeeJob.style.display = "block"; employeeJob.style.display = "block";
employeePartTimeJob.style.display = "block"; employeePartTimeJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12JoesGuns, setInfiltrateButton(infiltrate, Locations.Sector12JoesGuns,
100, 4, 20, 4); 100, 4, 20, 3.5);
break; break;
case Locations.Sector12IronGym: case Locations.Sector12IronGym:
@ -731,7 +731,7 @@ displayLocationContent = function() {
securityEngineerJob.style.display = "block"; securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoDefComm, setInfiltrateButton(infiltrate, Locations.NewTokyoDefComm,
1300, 24, 70, 9.5); 1300, 24, 70, 9);
break; break;
case Locations.NewTokyoVitaLife: case Locations.NewTokyoVitaLife:
@ -744,7 +744,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
businessJob.style.display = "block"; businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoVitaLife, setInfiltrateButton(infiltrate, Locations.NewTokyoVitaLife,
750, 18, 100, 9); 750, 18, 100, 8);
break; break;
case Locations.NewTokyoGlobalPharmaceuticals: case Locations.NewTokyoGlobalPharmaceuticals:
@ -758,7 +758,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoGlobalPharmaceuticals, setInfiltrateButton(infiltrate, Locations.NewTokyoGlobalPharmaceuticals,
900, 20, 80, 9); 900, 20, 80, 8.5);
break; break;
case Locations.NewTokyoNoodleBar: case Locations.NewTokyoNoodleBar:
@ -797,7 +797,7 @@ displayLocationContent = function() {
purchase256gb.style.display = "block"; purchase256gb.style.display = "block";
purchaseHomeRam.style.display = "block"; purchaseHomeRam.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaStormTechnologies, setInfiltrateButton(infiltrate, Locations.IshimaStormTechnologies,
700, 20, 100, 10.5); 700, 20, 100, 10);
break; break;
case Locations.IshimaNovaMedical: case Locations.IshimaNovaMedical:
@ -810,7 +810,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
businessJob.style.display = "block"; businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaNovaMedical, setInfiltrateButton(infiltrate, Locations.IshimaNovaMedical,
600, 16, 50, 8); 600, 16, 50, 7.5);
break; break;
case Locations.IshimaOmegaSoftware: case Locations.IshimaOmegaSoftware:
@ -828,7 +828,7 @@ displayLocationContent = function() {
purchaseTor.style.display = "block"; purchaseTor.style.display = "block";
purchaseHomeRam.style.display = "block"; purchaseHomeRam.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaOmegaSoftware, setInfiltrateButton(infiltrate, Locations.IshimaOmegaSoftware,
200, 5, 40, 4.5); 200, 5, 40, 4);
break; break;
case Locations.VolhavenTravelAgency: case Locations.VolhavenTravelAgency:
@ -861,7 +861,7 @@ displayLocationContent = function() {
purchase512gb.style.display = "block"; purchase512gb.style.display = "block";
purchase1tb.style.display = "block"; purchase1tb.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenOmniTekIncorporated, setInfiltrateButton(infiltrate, Locations.VolhavenOmniTekIncorporated,
1500, 38, 100, 10); 1500, 38, 100, 9.5);
break; break;
case Locations.VolhavenNWO: case Locations.VolhavenNWO:
@ -874,7 +874,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenNWO, setInfiltrateButton(infiltrate, Locations.VolhavenNWO,
1800, 48, 200, 12); 1800, 48, 200, 11);
break; break;
case Locations.VolhavenHeliosLabs: case Locations.VolhavenHeliosLabs:
@ -886,7 +886,7 @@ displayLocationContent = function() {
securityEngineerJob.style.display = "block"; securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenHeliosLabs, setInfiltrateButton(infiltrate, Locations.VolhavenHeliosLabs,
1200, 24, 75, 9.5); 1200, 24, 75, 9);
break; break;
case Locations.VolhavenOmniaCybersystems: case Locations.VolhavenOmniaCybersystems:
@ -898,7 +898,7 @@ displayLocationContent = function() {
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenOmniaCybersystems, setInfiltrateButton(infiltrate, Locations.VolhavenOmniaCybersystems,
900, 24, 90, 10); 900, 24, 90, 9.5);
break; break;
case Locations.VolhavenLexoCorp: case Locations.VolhavenLexoCorp:
@ -912,7 +912,7 @@ displayLocationContent = function() {
businessJob.style.display = "block"; businessJob.style.display = "block";
securityJob.style.display = "block"; securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenLexoCorp, setInfiltrateButton(infiltrate, Locations.VolhavenLexoCorp,
500, 10, 40, 6); 500, 10, 40, 5.5);
break; break;
case Locations.VolhavenSysCoreSecurities: case Locations.VolhavenSysCoreSecurities:
@ -923,7 +923,7 @@ displayLocationContent = function() {
securityEngineerJob.style.display = "block"; securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block"; networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenSysCoreSecurities, setInfiltrateButton(infiltrate, Locations.VolhavenSysCoreSecurities,
600, 12, 50, 7); 600, 12, 50, 6);
break; break;
case Locations.VolhavenCompuTek: case Locations.VolhavenCompuTek:
@ -944,7 +944,7 @@ displayLocationContent = function() {
purchaseTor.style.display = "block"; purchaseTor.style.display = "block";
purchaseHomeRam.style.display = "block"; purchaseHomeRam.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenCompuTek, setInfiltrateButton(infiltrate, Locations.VolhavenCompuTek,
300, 8, 35, 6); 300, 8, 35, 5);
break; break;
case Locations.VolhavenMilleniumFitnessGym: case Locations.VolhavenMilleniumFitnessGym:

@ -938,13 +938,13 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
var gameCPS = 1000 / Engine._idleSpeed; var gameCPS = 1000 / Engine._idleSpeed;
//Base exp gains per second //Base exp gains per second
var baseStudyComputerScienceExp = 0.05; var baseStudyComputerScienceExp = 0.25;
var baseDataStructuresExp = 0.2; var baseDataStructuresExp = 0.5;
var baseNetworksExp = 0.8; var baseNetworksExp = 1;
var baseAlgorithmsExp = 2.0; var baseAlgorithmsExp = 2;
var baseManagementExp = 1.0; var baseManagementExp = 1;
var baseLeadershipExp = 2.0; var baseLeadershipExp = 2;
var baseGymExp = 1.0; var baseGymExp = 1;
//Find cost and exp gain per game cycle //Find cost and exp gain per game cycle
var cost = 0; var cost = 0;

38
src/RedPill.js Normal file

@ -0,0 +1,38 @@
/* RedPill.js
* Implements what happens when you have Red Pill augmentation and then hack the world daemon */
//Returns promise
function writeRedPillLine(line) {
return new Promise(function(resolve, reject) {
var container = document.getElementById("red-pill-container");
var pElem = document.createElement("p");
container.appendChild(pElem);
var promise = writeRedPillLetter(pElem, line, 0);
promise.then(function(res) {
resolve(res);
}, function(e) {
reject(e);
});
});
}
function writeRedPillLetter(pElem, line, i=0) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
if (i >= line.length) {
resolve(true);
}
var textToShow = line.substring(0, i);
pElem.innerHTML = "> " + textToShow + "<span class='typed-cursor'> &#9608; </span>";
var promise = writeRedPillLetter(pElem, line, i+1);
promise.then(function(res) {
resolve(res);
}, function(e) {
reject(e);
});
}, 50);
});
}

@ -10,6 +10,7 @@ function BitburnerSaveObject() {
this.FactionsSave = ""; this.FactionsSave = "";
this.SpecialServerIpsSave = ""; this.SpecialServerIpsSave = "";
this.AliasesSave = ""; this.AliasesSave = "";
this.GlobalAliasesSave = "";
this.MessagesSave = ""; this.MessagesSave = "";
this.StockMarketSave = ""; this.StockMarketSave = "";
this.VersionSave = ""; this.VersionSave = "";
@ -36,6 +37,7 @@ BitburnerSaveObject.prototype.saveGame = function() {
this.FactionsSave = JSON.stringify(Factions); this.FactionsSave = JSON.stringify(Factions);
this.SpecialServerIpsSave = JSON.stringify(SpecialServerIps); this.SpecialServerIpsSave = JSON.stringify(SpecialServerIps);
this.AliasesSave = JSON.stringify(Aliases); this.AliasesSave = JSON.stringify(Aliases);
this.GlobalAliasesSave = JSON.stringify(GlobalAliases);
this.MessagesSave = JSON.stringify(Messages); this.MessagesSave = JSON.stringify(Messages);
this.StockMarketSave = JSON.stringify(StockMarket); this.StockMarketSave = JSON.stringify(StockMarket);
this.VersionSave = JSON.stringify(CONSTANTS.Version); this.VersionSave = JSON.stringify(CONSTANTS.Version);
@ -69,6 +71,15 @@ loadGame = function(saveObj) {
} else { } else {
Aliases = {}; Aliases = {};
} }
if (saveObj.hasOwnProperty("GlobalAliasesSave")) {
try {
GlobalAliases = JSON.parse(saveObj.GlobalAliasesSave, Reviver);
} catch(e) {
GlobalAliases = {};
}
} else {
GlobalAliases = {};
}
if (saveObj.hasOwnProperty("MessagesSave")) { if (saveObj.hasOwnProperty("MessagesSave")) {
try { try {
Messages = JSON.parse(saveObj.MessagesSave, Reviver); Messages = JSON.parse(saveObj.MessagesSave, Reviver);
@ -129,6 +140,7 @@ loadImportedGame = function(saveObj, saveString) {
var tempSpecialServerIps = null; var tempSpecialServerIps = null;
var tempAugmentations = null; var tempAugmentations = null;
var tempAliases = null; var tempAliases = null;
var tempGlobalAliases = null;
var tempMessages = null; var tempMessages = null;
var tempStockMarket = null; var tempStockMarket = null;
try { try {
@ -151,6 +163,15 @@ loadImportedGame = function(saveObj, saveString) {
} else { } else {
tempAliases = {}; tempAliases = {};
} }
if (tempSaveObj.hasOwnProperty("GlobalAliases")) {
try {
tempGlobalAliases = JSON.parse(tempSaveObj.AliasesSave, Reviver);
} catch(e) {
tempGlobalAliases = {};
}
} else {
tempGlobalAliases = {};
}
if (tempSaveObj.hasOwnProperty("MessagesSave")) { if (tempSaveObj.hasOwnProperty("MessagesSave")) {
try { try {
tempMessages = JSON.parse(tempSaveObj.MessagesSave, Reviver); tempMessages = JSON.parse(tempSaveObj.MessagesSave, Reviver);
@ -215,6 +236,10 @@ loadImportedGame = function(saveObj, saveString) {
Aliases = tempAliases; Aliases = tempAliases;
} }
if (tempGlobalAliases) {
GlobalAliases = tempGlobalAliases;
}
if (tempMessages) { if (tempMessages) {
Messages = tempMessages; Messages = tempMessages;
} }
@ -291,6 +316,7 @@ BitburnerSaveObject.prototype.exportGame = function() {
this.SpecialServerIpsSave = JSON.stringify(SpecialServerIps); this.SpecialServerIpsSave = JSON.stringify(SpecialServerIps);
this.AugmentationsSave = JSON.stringify(Augmentations); this.AugmentationsSave = JSON.stringify(Augmentations);
this.AliasesSave = JSON.stringify(Aliases); this.AliasesSave = JSON.stringify(Aliases);
this.GlobalAliasesSave = JSON.stringify(GlobalAliasesSave);
this.MessagesSave = JSON.stringify(Messages); this.MessagesSave = JSON.stringify(Messages);
this.VersionSave = JSON.stringify(CONSTANTS.Version); this.VersionSave = JSON.stringify(CONSTANTS.Version);

@ -141,62 +141,62 @@ initForeignServers = function() {
//MegaCorporations //MegaCorporations
var ECorpServer = new Server(); var ECorpServer = new Server();
ECorpServer.init(createRandomIp(), "ecorp", "ECorp", true, false, false, false, 0); ECorpServer.init(createRandomIp(), "ecorp", "ECorp", true, false, false, false, 0);
ECorpServer.setHackingParameters(getRandomInt(900, 950), 100000000000, 99, 99); ECorpServer.setHackingParameters(getRandomInt(900, 950), 90000000000, 99, 99);
ECorpServer.setPortProperties(5); ECorpServer.setPortProperties(5);
AddToAllServers(ECorpServer); AddToAllServers(ECorpServer);
var MegaCorpServer = new Server(); var MegaCorpServer = new Server();
MegaCorpServer.init(createRandomIp(), "megacorp", "MegaCorp", true, false, false, false, 0); MegaCorpServer.init(createRandomIp(), "megacorp", "MegaCorp", true, false, false, false, 0);
MegaCorpServer.setHackingParameters(getRandomInt(900, 950), 80000000000, 99, 99); MegaCorpServer.setHackingParameters(getRandomInt(900, 950), 75000000000, 99, 99);
MegaCorpServer.setPortProperties(5); MegaCorpServer.setPortProperties(5);
AddToAllServers(MegaCorpServer); AddToAllServers(MegaCorpServer);
var BachmanAndAssociatesServer = new Server(); var BachmanAndAssociatesServer = new Server();
BachmanAndAssociatesServer.init(createRandomIp(), "b-and-a", "Bachman & Associates", true, false, false, false, 0); BachmanAndAssociatesServer.init(createRandomIp(), "b-and-a", "Bachman & Associates", true, false, false, false, 0);
BachmanAndAssociatesServer.setHackingParameters(getRandomInt(875, 925), 32000000000, getRandomInt(75, 85), getRandomInt(65, 75)); BachmanAndAssociatesServer.setHackingParameters(getRandomInt(875, 925), 30000000000, getRandomInt(75, 85), getRandomInt(65, 75));
BachmanAndAssociatesServer.setPortProperties(5); BachmanAndAssociatesServer.setPortProperties(5);
AddToAllServers(BachmanAndAssociatesServer); AddToAllServers(BachmanAndAssociatesServer);
var BladeIndustriesServer = new Server(); var BladeIndustriesServer = new Server();
BladeIndustriesServer.init(createRandomIp(), "blade", "Blade Industries", true, false, false, false, 0); BladeIndustriesServer.init(createRandomIp(), "blade", "Blade Industries", true, false, false, false, 0);
BladeIndustriesServer.setHackingParameters(getRandomInt(875, 925), 20000000000, getRandomInt(90, 95), getRandomInt(60, 75)); BladeIndustriesServer.setHackingParameters(getRandomInt(875, 925), 18000000000, getRandomInt(90, 95), getRandomInt(60, 75));
BladeIndustriesServer.setPortProperties(5); BladeIndustriesServer.setPortProperties(5);
AddToAllServers(BladeIndustriesServer); AddToAllServers(BladeIndustriesServer);
var NWOServer = new Server(); var NWOServer = new Server();
NWOServer.init(createRandomIp(), "nwo", "New World Order", true, false, false, false, 0); NWOServer.init(createRandomIp(), "nwo", "New World Order", true, false, false, false, 0);
NWOServer.setHackingParameters(getRandomInt(900, 920), 40000000000, 99, getRandomInt(75, 85)); NWOServer.setHackingParameters(getRandomInt(900, 920), 36000000000, 99, getRandomInt(75, 85));
NWOServer.setPortProperties(5); NWOServer.setPortProperties(5);
AddToAllServers(NWOServer); AddToAllServers(NWOServer);
var ClarkeIncorporatedServer = new Server(); var ClarkeIncorporatedServer = new Server();
ClarkeIncorporatedServer.init(createRandomIp(), "clarkeinc", "Clarke Incorporated", true, false, false, false, 0); ClarkeIncorporatedServer.init(createRandomIp(), "clarkeinc", "Clarke Incorporated", true, false, false, false, 0);
ClarkeIncorporatedServer.setHackingParameters(getRandomInt(875, 950), 15000000000, getRandomInt(50, 60), getRandomInt(50, 70)); ClarkeIncorporatedServer.setHackingParameters(getRandomInt(875, 950), 13000000000, getRandomInt(50, 60), getRandomInt(50, 70));
ClarkeIncorporatedServer.setPortProperties(5); ClarkeIncorporatedServer.setPortProperties(5);
AddToAllServers(ClarkeIncorporatedServer); AddToAllServers(ClarkeIncorporatedServer);
var OmniTekIncorporatedServer = new Server(); var OmniTekIncorporatedServer = new Server();
OmniTekIncorporatedServer.init(createRandomIp(), "omnitek", "OmniTek Incorporated", true, false, false, false, 0); OmniTekIncorporatedServer.init(createRandomIp(), "omnitek", "OmniTek Incorporated", true, false, false, false, 0);
OmniTekIncorporatedServer.setHackingParameters(getRandomInt(870, 930), 50000000000, getRandomInt(90, 99), getRandomInt(95, 99)); OmniTekIncorporatedServer.setHackingParameters(getRandomInt(870, 930), 45000000000, getRandomInt(90, 99), getRandomInt(95, 99));
OmniTekIncorporatedServer.setPortProperties(5); OmniTekIncorporatedServer.setPortProperties(5);
AddToAllServers(OmniTekIncorporatedServer); AddToAllServers(OmniTekIncorporatedServer);
var FourSigmaServer = new Server(); var FourSigmaServer = new Server();
FourSigmaServer.init(createRandomIp(), "4sigma", "FourSigma", true, false, false, false, 0); FourSigmaServer.init(createRandomIp(), "4sigma", "FourSigma", true, false, false, false, 0);
FourSigmaServer.setHackingParameters(getRandomInt(875, 925), 25000000000, getRandomInt(60, 70), getRandomInt(75, 85)); FourSigmaServer.setHackingParameters(getRandomInt(875, 925), 24000000000, getRandomInt(60, 70), getRandomInt(75, 99));
FourSigmaServer.setPortProperties(5); FourSigmaServer.setPortProperties(5);
AddToAllServers(FourSigmaServer); AddToAllServers(FourSigmaServer);
var KuaiGongInternationalServer = new Server(); var KuaiGongInternationalServer = new Server();
KuaiGongInternationalServer.init(createRandomIp(), "kuai-gong", "KuaiGong International", true, false, false, false, 0); KuaiGongInternationalServer.init(createRandomIp(), "kuai-gong", "KuaiGong International", true, false, false, false, 0);
KuaiGongInternationalServer.setHackingParameters(getRandomInt(900, 950), 75000000000, getRandomInt(95, 99), getRandomInt(90, 99)); KuaiGongInternationalServer.setHackingParameters(getRandomInt(900, 950), 70000000000, getRandomInt(95, 99), getRandomInt(90, 99));
KuaiGongInternationalServer.setPortProperties(5); KuaiGongInternationalServer.setPortProperties(5);
AddToAllServers(KuaiGongInternationalServer); AddToAllServers(KuaiGongInternationalServer);
//Technology and communications companies (large targets) //Technology and communications companies (large targets)
var FulcrumTechnologiesServer = new Server(); var FulcrumTechnologiesServer = new Server();
FulcrumTechnologiesServer.init(createRandomIp(), "fulcrumtech", "Fulcrum Technologies", true, false, false, false, 64); FulcrumTechnologiesServer.init(createRandomIp(), "fulcrumtech", "Fulcrum Technologies", true, false, false, false, 64);
FulcrumTechnologiesServer.setHackingParameters(getRandomInt(900, 1000), 2000000000, getRandomInt(85, 95), getRandomInt(80, 99)); FulcrumTechnologiesServer.setHackingParameters(getRandomInt(900, 1000), 1500000000, getRandomInt(85, 95), getRandomInt(80, 99));
FulcrumTechnologiesServer.setPortProperties(5); FulcrumTechnologiesServer.setPortProperties(5);
AddToAllServers(FulcrumTechnologiesServer); AddToAllServers(FulcrumTechnologiesServer);
@ -209,148 +209,148 @@ initForeignServers = function() {
var StormTechnologiesServer = new Server(); var StormTechnologiesServer = new Server();
StormTechnologiesServer.init(createRandomIp(), "stormtech", "Storm Technologies", true, false, false, false, 0); StormTechnologiesServer.init(createRandomIp(), "stormtech", "Storm Technologies", true, false, false, false, 0);
StormTechnologiesServer.setHackingParameters(getRandomInt(825, 875), 1500000000, getRandomInt(80, 90), getRandomInt(70, 90)); StormTechnologiesServer.setHackingParameters(getRandomInt(825, 875), 1300000000, getRandomInt(80, 90), getRandomInt(70, 90));
StormTechnologiesServer.setPortProperties(5); StormTechnologiesServer.setPortProperties(5);
AddToAllServers(StormTechnologiesServer); AddToAllServers(StormTechnologiesServer);
var DefCommServer = new Server(); var DefCommServer = new Server();
DefCommServer.init(createRandomIp(), "defcomm", "DefComm", true, false, false, false, 0); DefCommServer.init(createRandomIp(), "defcomm", "DefComm", true, false, false, false, 0);
DefCommServer.setHackingParameters(getRandomInt(800, 850), 900000000, getRandomInt(85, 95), getRandomInt(50, 70)); DefCommServer.setHackingParameters(getRandomInt(800, 850), 850000000, getRandomInt(85, 95), getRandomInt(50, 70));
DefCommServer.setPortProperties(5); DefCommServer.setPortProperties(5);
AddToAllServers(DefCommServer); AddToAllServers(DefCommServer);
var InfoCommServer = new Server(); var InfoCommServer = new Server();
InfoCommServer.init(createRandomIp(), "infocomm", "InfoComm", true, false, false, false, 0); InfoCommServer.init(createRandomIp(), "infocomm", "InfoComm", true, false, false, false, 0);
InfoCommServer.setHackingParameters(getRandomInt(800, 850), 750000000, getRandomInt(70, 90), getRandomInt(35, 75)); InfoCommServer.setHackingParameters(getRandomInt(800, 850), 700000000, getRandomInt(70, 90), getRandomInt(35, 75));
InfoCommServer.setPortProperties(5); InfoCommServer.setPortProperties(5);
AddToAllServers(InfoCommServer); AddToAllServers(InfoCommServer);
var HeliosLabsServer = new Server(); var HeliosLabsServer = new Server();
HeliosLabsServer.init(createRandomIp(), "helios", "Helios Labs", true, false, false, false, 0); HeliosLabsServer.init(createRandomIp(), "helios", "Helios Labs", true, false, false, false, 0);
HeliosLabsServer.setHackingParameters(getRandomInt(775, 825), 500000000, getRandomInt(85, 95), getRandomInt(70, 80)); HeliosLabsServer.setHackingParameters(getRandomInt(775, 825), 450000000, getRandomInt(85, 95), getRandomInt(70, 80));
HeliosLabsServer.setPortProperties(5); HeliosLabsServer.setPortProperties(5);
AddToAllServers(HeliosLabsServer); AddToAllServers(HeliosLabsServer);
var VitaLifeServer = new Server(); var VitaLifeServer = new Server();
VitaLifeServer.init(createRandomIp(), "vitalife", "VitaLife", true, false, false, false, 32); VitaLifeServer.init(createRandomIp(), "vitalife", "VitaLife", true, false, false, false, 32);
VitaLifeServer.setHackingParameters(getRandomInt(750, 800), 800000000, getRandomInt(80, 90), getRandomInt(60, 80)); VitaLifeServer.setHackingParameters(getRandomInt(750, 800), 720000000, getRandomInt(80, 90), getRandomInt(60, 80));
VitaLifeServer.setPortProperties(5); VitaLifeServer.setPortProperties(5);
AddToAllServers(VitaLifeServer); AddToAllServers(VitaLifeServer);
var IcarusMicrosystemsServer = new Server(); var IcarusMicrosystemsServer = new Server();
IcarusMicrosystemsServer.init(createRandomIp(), "icarus", "Icarus Microsystems", true, false, false, false, 0); IcarusMicrosystemsServer.init(createRandomIp(), "icarus", "Icarus Microsystems", true, false, false, false, 0);
IcarusMicrosystemsServer.setHackingParameters(getRandomInt(800, 820), 1100000000, getRandomInt(85, 95), getRandomInt(85, 95)); IcarusMicrosystemsServer.setHackingParameters(getRandomInt(800, 820), 1000000000, getRandomInt(85, 95), getRandomInt(85, 95));
IcarusMicrosystemsServer.setPortProperties(5); IcarusMicrosystemsServer.setPortProperties(5);
AddToAllServers(IcarusMicrosystemsServer); AddToAllServers(IcarusMicrosystemsServer);
var UniversalEnergyServer = new Server(); var UniversalEnergyServer = new Server();
UniversalEnergyServer.init(createRandomIp(), "univ-energy", "Universal Energy", true, false, false, false, 32); UniversalEnergyServer.init(createRandomIp(), "univ-energy", "Universal Energy", true, false, false, false, 32);
UniversalEnergyServer.setHackingParameters(getRandomInt(780, 800), 1500000000, getRandomInt(80, 90), getRandomInt(80, 90)); UniversalEnergyServer.setHackingParameters(getRandomInt(780, 800), 1300000000, getRandomInt(80, 90), getRandomInt(80, 90));
UniversalEnergyServer.setPortProperties(4); UniversalEnergyServer.setPortProperties(4);
AddToAllServers(UniversalEnergyServer); AddToAllServers(UniversalEnergyServer);
var TitanLabsServer = new Server(); var TitanLabsServer = new Server();
TitanLabsServer.init(createRandomIp(), "titan-labs", "Titan Laboratories", true, false, false, false, 32); TitanLabsServer.init(createRandomIp(), "titan-labs", "Titan Laboratories", true, false, false, false, 32);
TitanLabsServer.setHackingParameters(getRandomInt(790, 800), 1000000000, getRandomInt(70, 80), getRandomInt(60, 80)); TitanLabsServer.setHackingParameters(getRandomInt(790, 800), 900000000, getRandomInt(70, 80), getRandomInt(60, 80));
TitanLabsServer.setPortProperties(5); TitanLabsServer.setPortProperties(5);
AddToAllServers(TitanLabsServer); AddToAllServers(TitanLabsServer);
var MicrodyneTechnologiesServer = new Server(); var MicrodyneTechnologiesServer = new Server();
MicrodyneTechnologiesServer.init(createRandomIp(), "microdyne", "Microdyne Technologies", true, false, false, false, 16); MicrodyneTechnologiesServer.init(createRandomIp(), "microdyne", "Microdyne Technologies", true, false, false, false, 16);
MicrodyneTechnologiesServer.setHackingParameters(getRandomInt(780, 820), 900000000, getRandomInt(65, 75), getRandomInt(70, 90)); MicrodyneTechnologiesServer.setHackingParameters(getRandomInt(780, 820), 750000000, getRandomInt(65, 75), getRandomInt(70, 90));
MicrodyneTechnologiesServer.setPortProperties(5); MicrodyneTechnologiesServer.setPortProperties(5);
AddToAllServers(MicrodyneTechnologiesServer); AddToAllServers(MicrodyneTechnologiesServer);
var TaiYangDigitalServer = new Server(); var TaiYangDigitalServer = new Server();
TaiYangDigitalServer.init(createRandomIp(), "taiyang-digital", "Taiyang Digital", true, false, false, false, 0); TaiYangDigitalServer.init(createRandomIp(), "taiyang-digital", "Taiyang Digital", true, false, false, false, 0);
TaiYangDigitalServer.setHackingParameters(getRandomInt(800, 900), 1100000000, getRandomInt(70, 80), getRandomInt(70, 80)); TaiYangDigitalServer.setHackingParameters(getRandomInt(800, 900), 1000000000, getRandomInt(70, 80), getRandomInt(70, 80));
TaiYangDigitalServer.setPortProperties(5); TaiYangDigitalServer.setPortProperties(5);
AddToAllServers(TaiYangDigitalServer); AddToAllServers(TaiYangDigitalServer);
var GalacticCyberSystemsServer = new Server(); var GalacticCyberSystemsServer = new Server();
GalacticCyberSystemsServer.init(createRandomIp(), "galactic-cyber", "Galactic Cybersystems", true, false, false, false, 0); GalacticCyberSystemsServer.init(createRandomIp(), "galactic-cyber", "Galactic Cybersystems", true, false, false, false, 0);
GalacticCyberSystemsServer.setHackingParameters(getRandomInt(800, 850), 500000000, getRandomInt(55, 65), getRandomInt(70, 90)); GalacticCyberSystemsServer.setHackingParameters(getRandomInt(800, 850), 450000000, getRandomInt(55, 65), getRandomInt(70, 90));
GalacticCyberSystemsServer.setPortProperties(5); GalacticCyberSystemsServer.setPortProperties(5);
AddToAllServers(GalacticCyberSystemsServer); AddToAllServers(GalacticCyberSystemsServer);
//Defense Companies ("Large" Companies) //Defense Companies ("Large" Companies)
var AeroCorpServer = new Server(); var AeroCorpServer = new Server();
AeroCorpServer.init(createRandomIp(), "aerocorp", "AeroCorp", true, false, false, false, 0); AeroCorpServer.init(createRandomIp(), "aerocorp", "AeroCorp", true, false, false, false, 0);
AeroCorpServer.setHackingParameters(getRandomInt(825, 875), 1500000000, getRandomInt(80, 90), getRandomInt(55, 65)); AeroCorpServer.setHackingParameters(getRandomInt(825, 875), 1300000000, getRandomInt(80, 90), getRandomInt(55, 65));
AeroCorpServer.setPortProperties(5); AeroCorpServer.setPortProperties(5);
AddToAllServers(AeroCorpServer); AddToAllServers(AeroCorpServer);
var OmniaCybersystemsServer = new Server(); var OmniaCybersystemsServer = new Server();
OmniaCybersystemsServer.init(createRandomIp(), "omnia", "Omnia Cybersystems", true, false, false, false, 0); OmniaCybersystemsServer.init(createRandomIp(), "omnia", "Omnia Cybersystems", true, false, false, false, 0);
OmniaCybersystemsServer.setHackingParameters(getRandomInt(800, 850), 1200000000, getRandomInt(85, 95), getRandomInt(60, 70)); OmniaCybersystemsServer.setHackingParameters(getRandomInt(800, 850), 1100000000, getRandomInt(85, 95), getRandomInt(60, 70));
OmniaCybersystemsServer.setPortProperties(5); OmniaCybersystemsServer.setPortProperties(5);
AddToAllServers(OmniaCybersystemsServer); AddToAllServers(OmniaCybersystemsServer);
var ZBDefenseServer = new Server(); var ZBDefenseServer = new Server();
ZBDefenseServer.init(createRandomIp(), "zb-def", "ZB Defense Industries", true, false, false, false, 0); ZBDefenseServer.init(createRandomIp(), "zb-def", "ZB Defense Industries", true, false, false, false, 0);
ZBDefenseServer.setHackingParameters(getRandomInt(775, 825), 1000000000, getRandomInt(55, 65), getRandomInt(65, 75)); ZBDefenseServer.setHackingParameters(getRandomInt(775, 825), 900000000, getRandomInt(55, 65), getRandomInt(65, 75));
ZBDefenseServer.setPortProperties(4); ZBDefenseServer.setPortProperties(4);
AddToAllServers(ZBDefenseServer); AddToAllServers(ZBDefenseServer);
var AppliedEnergeticsServer = new Server(); var AppliedEnergeticsServer = new Server();
AppliedEnergeticsServer.init(createRandomIp(), "applied-energetics", "Applied Energetics", true, false, false, false, 0); AppliedEnergeticsServer.init(createRandomIp(), "applied-energetics", "Applied Energetics", true, false, false, false, 0);
AppliedEnergeticsServer.setHackingParameters(getRandomInt(750, 800), 1200000000, getRandomInt(60, 80), getRandomInt(70, 75)); AppliedEnergeticsServer.setHackingParameters(getRandomInt(750, 800), 1100000000, getRandomInt(60, 80), getRandomInt(70, 75));
AppliedEnergeticsServer.setPortProperties(4); AppliedEnergeticsServer.setPortProperties(4);
AddToAllServers(AppliedEnergeticsServer); AddToAllServers(AppliedEnergeticsServer);
var SolarisSpaceSystemsServer = new Server(); var SolarisSpaceSystemsServer = new Server();
SolarisSpaceSystemsServer.init(createRandomIp(), "solaris", "Solaris Space Systems", true, false, false, false, 0); SolarisSpaceSystemsServer.init(createRandomIp(), "solaris", "Solaris Space Systems", true, false, false, false, 0);
SolarisSpaceSystemsServer.setHackingParameters(getRandomInt(790, 810), 900000000, getRandomInt(70, 80), getRandomInt(70, 80)); SolarisSpaceSystemsServer.setHackingParameters(getRandomInt(790, 810), 800000000, getRandomInt(70, 80), getRandomInt(70, 80));
SolarisSpaceSystemsServer.setPortProperties(5); SolarisSpaceSystemsServer.setPortProperties(5);
AddToAllServers(SolarisSpaceSystemsServer); AddToAllServers(SolarisSpaceSystemsServer);
var DeltaOneServer = new Server(); var DeltaOneServer = new Server();
DeltaOneServer.init(createRandomIp(), "deltaone", "Delta One", true, false, false, false, 0); DeltaOneServer.init(createRandomIp(), "deltaone", "Delta One", true, false, false, false, 0);
DeltaOneServer.setHackingParameters(getRandomInt(800, 820), 1500000000, getRandomInt(75, 85), getRandomInt(50, 70)); DeltaOneServer.setHackingParameters(getRandomInt(800, 820), 1400000000, getRandomInt(75, 85), getRandomInt(50, 70));
DeltaOneServer.setPortProperties(5); DeltaOneServer.setPortProperties(5);
AddToAllServers(DeltaOneServer); AddToAllServers(DeltaOneServer);
//Health, medicine, pharmaceutical companies ("Large" targets) //Health, medicine, pharmaceutical companies ("Large" targets)
var GlobalPharmaceuticalsServer = new Server(); var GlobalPharmaceuticalsServer = new Server();
GlobalPharmaceuticalsServer.init(createRandomIp(), "global-pharm", "Global Pharmaceuticals", true, false, false, false, 16); GlobalPharmaceuticalsServer.init(createRandomIp(), "global-pharm", "Global Pharmaceuticals", true, false, false, false, 16);
GlobalPharmaceuticalsServer.setHackingParameters(getRandomInt(750, 800), 2000000000, getRandomInt(75, 85), getRandomInt(80, 90)); GlobalPharmaceuticalsServer.setHackingParameters(getRandomInt(750, 800), 1800000000, getRandomInt(75, 85), getRandomInt(80, 90));
GlobalPharmaceuticalsServer.setPortProperties(4); GlobalPharmaceuticalsServer.setPortProperties(4);
AddToAllServers(GlobalPharmaceuticalsServer); AddToAllServers(GlobalPharmaceuticalsServer);
var NovaMedicalServer = new Server(); var NovaMedicalServer = new Server();
NovaMedicalServer.init(createRandomIp(), "nova-med", "Nova Medical", true, false, false, false, 0); NovaMedicalServer.init(createRandomIp(), "nova-med", "Nova Medical", true, false, false, false, 0);
NovaMedicalServer.setHackingParameters(getRandomInt(775, 825), 1500000000, getRandomInt(60, 80), getRandomInt(65, 85)); NovaMedicalServer.setHackingParameters(getRandomInt(775, 825), 1350000000, getRandomInt(60, 80), getRandomInt(65, 85));
NovaMedicalServer.setPortProperties(4); NovaMedicalServer.setPortProperties(4);
AddToAllServers(NovaMedicalServer); AddToAllServers(NovaMedicalServer);
var ZeusMedicalServer = new Server(); var ZeusMedicalServer = new Server();
ZeusMedicalServer.init(createRandomIp(), "zeud-med", "Zeus Medical", true, false, false, false, 0); ZeusMedicalServer.init(createRandomIp(), "zeud-med", "Zeus Medical", true, false, false, false, 0);
ZeusMedicalServer.setHackingParameters(getRandomInt(800, 825), 1750000000, getRandomInt(70, 90), getRandomInt(70, 80)); ZeusMedicalServer.setHackingParameters(getRandomInt(800, 825), 1600000000, getRandomInt(70, 90), getRandomInt(70, 80));
ZeusMedicalServer.setPortProperties(5); ZeusMedicalServer.setPortProperties(5);
AddToAllServers(ZeusMedicalServer); AddToAllServers(ZeusMedicalServer);
var UnitaLifeGroupServer = new Server(); var UnitaLifeGroupServer = new Server();
UnitaLifeGroupServer.init(createRandomIp(), "unitalife", "UnitaLife Group", true, false, false, false, 32); UnitaLifeGroupServer.init(createRandomIp(), "unitalife", "UnitaLife Group", true, false, false, false, 32);
UnitaLifeGroupServer.setHackingParameters(getRandomInt(780, 800), 1400000000, getRandomInt(70, 80), getRandomInt(70, 80)); UnitaLifeGroupServer.setHackingParameters(getRandomInt(780, 800), 1200000000, getRandomInt(70, 80), getRandomInt(70, 80));
UnitaLifeGroupServer.setPortProperties(4); UnitaLifeGroupServer.setPortProperties(4);
AddToAllServers(UnitaLifeGroupServer); AddToAllServers(UnitaLifeGroupServer);
//"Medium level" targets //"Medium level" targets
var LexoCorpServer = new Server(); var LexoCorpServer = new Server();
LexoCorpServer.init(createRandomIp(), "lexo-corp", "Lexo Corporation", true, false, false, false, 16); LexoCorpServer.init(createRandomIp(), "lexo-corp", "Lexo Corporation", true, false, false, false, 16);
LexoCorpServer.setHackingParameters(getRandomInt(680, 720), 1000000000, getRandomInt(60, 80), getRandomInt(55, 65)); LexoCorpServer.setHackingParameters(getRandomInt(680, 720), 800000000, getRandomInt(60, 80), getRandomInt(55, 65));
LexoCorpServer.setPortProperties(4); LexoCorpServer.setPortProperties(4);
AddToAllServers(LexoCorpServer); AddToAllServers(LexoCorpServer);
var RhoConstructionServer = new Server(); var RhoConstructionServer = new Server();
RhoConstructionServer.init(createRandomIp(), "rho-construction", "Rho Construction", true, false, false, false, 0); RhoConstructionServer.init(createRandomIp(), "rho-construction", "Rho Construction", true, false, false, false, 0);
RhoConstructionServer.setHackingParameters(getRandomInt(480, 520), 750000000, getRandomInt(40, 60), getRandomInt(40, 60)); RhoConstructionServer.setHackingParameters(getRandomInt(480, 520), 700000000, getRandomInt(40, 60), getRandomInt(40, 60));
RhoConstructionServer.setPortProperties(3); RhoConstructionServer.setPortProperties(3);
AddToAllServers(RhoConstructionServer); AddToAllServers(RhoConstructionServer);
var AlphaEnterprisesServer = new Server(); var AlphaEnterprisesServer = new Server();
AlphaEnterprisesServer.init(createRandomIp(), "alpha-ent", "Alpha Enterprises", true, false, false, false, 0); AlphaEnterprisesServer.init(createRandomIp(), "alpha-ent", "Alpha Enterprises", true, false, false, false, 0);
AlphaEnterprisesServer.setHackingParameters(getRandomInt(500, 600), 800000000, getRandomInt(50, 70), getRandomInt(50, 60)); AlphaEnterprisesServer.setHackingParameters(getRandomInt(500, 600), 750000000, getRandomInt(50, 70), getRandomInt(50, 60));
AlphaEnterprisesServer.setPortProperties(4); AlphaEnterprisesServer.setPortProperties(4);
AddToAllServers(AlphaEnterprisesServer); AddToAllServers(AlphaEnterprisesServer);
@ -363,7 +363,7 @@ initForeignServers = function() {
var RothmanUniversityServer = new Server(); var RothmanUniversityServer = new Server();
RothmanUniversityServer.init(createRandomIp(), "rothman-uni", "Rothman University Network", true, false, false, false, 4); RothmanUniversityServer.init(createRandomIp(), "rothman-uni", "Rothman University Network", true, false, false, false, 4);
RothmanUniversityServer.setHackingParameters(getRandomInt(370, 430), 250000000, getRandomInt(45, 55), getRandomInt(35, 45)); RothmanUniversityServer.setHackingParameters(getRandomInt(370, 430), 200000000, getRandomInt(45, 55), getRandomInt(35, 45));
RothmanUniversityServer.setPortProperties(3); RothmanUniversityServer.setPortProperties(3);
AddToAllServers(RothmanUniversityServer); AddToAllServers(RothmanUniversityServer);
@ -375,43 +375,43 @@ initForeignServers = function() {
var SummitUniversityServer = new Server(); var SummitUniversityServer = new Server();
SummitUniversityServer.init(createRandomIp(), "summit-uni", "Summit University Network", true, false, false, false, 4); SummitUniversityServer.init(createRandomIp(), "summit-uni", "Summit University Network", true, false, false, false, 4);
SummitUniversityServer.setHackingParameters(getRandomInt(425, 475), 200000000, getRandomInt(45, 65), getRandomInt(40, 60)); SummitUniversityServer.setHackingParameters(getRandomInt(425, 475), 160000000, getRandomInt(45, 65), getRandomInt(40, 60));
SummitUniversityServer.setPortProperties(3); SummitUniversityServer.setPortProperties(3);
AddToAllServers(SummitUniversityServer); AddToAllServers(SummitUniversityServer);
var SysCoreSecuritiesServer = new Server(); var SysCoreSecuritiesServer = new Server();
SysCoreSecuritiesServer.init(createRandomIp(), "syscore", "SysCore Securities", true, false, false, false, 0); SysCoreSecuritiesServer.init(createRandomIp(), "syscore", "SysCore Securities", true, false, false, false, 0);
SysCoreSecuritiesServer.setHackingParameters(getRandomInt(550, 650), 600000000, getRandomInt(60, 80), getRandomInt(60, 70)); SysCoreSecuritiesServer.setHackingParameters(getRandomInt(550, 650), 500000000, getRandomInt(60, 80), getRandomInt(60, 70));
SysCoreSecuritiesServer.setPortProperties(4); SysCoreSecuritiesServer.setPortProperties(4);
AddToAllServers(SysCoreSecuritiesServer); AddToAllServers(SysCoreSecuritiesServer);
var CatalystVenturesServer = new Server(); var CatalystVenturesServer = new Server();
CatalystVenturesServer.init(createRandomIp(), "catalyst", "Catalyst Ventures", true, false, false, false, 0); CatalystVenturesServer.init(createRandomIp(), "catalyst", "Catalyst Ventures", true, false, false, false, 0);
CatalystVenturesServer.setHackingParameters(getRandomInt(400, 450), 900000000, getRandomInt(60, 70), getRandomInt(25, 55)); CatalystVenturesServer.setHackingParameters(getRandomInt(400, 450), 750000000, getRandomInt(60, 70), getRandomInt(25, 55));
CatalystVenturesServer.setPortProperties(3); CatalystVenturesServer.setPortProperties(3);
AddToAllServers(CatalystVenturesServer); AddToAllServers(CatalystVenturesServer);
var TheHubServer = new Server(); var TheHubServer = new Server();
TheHubServer.init(createRandomIp(), "the-hub", "The Hub", true, false, false, false, 0); TheHubServer.init(createRandomIp(), "the-hub", "The Hub", true, false, false, false, 0);
TheHubServer.setHackingParameters(getRandomInt(275, 325), 250000000, getRandomInt(35, 45), getRandomInt(45, 55)); TheHubServer.setHackingParameters(getRandomInt(275, 325), 225000000, getRandomInt(35, 45), getRandomInt(45, 55));
TheHubServer.setPortProperties(2); TheHubServer.setPortProperties(2);
AddToAllServers(TheHubServer); AddToAllServers(TheHubServer);
var CompuTekServer = new Server(); var CompuTekServer = new Server();
CompuTekServer.init(createRandomIp(), "comptek", "CompuTek", true, false, false, false, 8); CompuTekServer.init(createRandomIp(), "comptek", "CompuTek", true, false, false, false, 8);
CompuTekServer.setHackingParameters(getRandomInt(300, 400), 300000000, getRandomInt(55, 65), getRandomInt(50, 60)); CompuTekServer.setHackingParameters(getRandomInt(300, 400), 275000000, getRandomInt(55, 65), getRandomInt(50, 60));
CompuTekServer.setPortProperties(3); CompuTekServer.setPortProperties(3);
AddToAllServers(CompuTekServer); AddToAllServers(CompuTekServer);
var NetLinkTechnologiesServer = new Server(); var NetLinkTechnologiesServer = new Server();
NetLinkTechnologiesServer.init(createRandomIp(), "netlink", "NetLink Technologies", true, false, false, false, 0); NetLinkTechnologiesServer.init(createRandomIp(), "netlink", "NetLink Technologies", true, false, false, false, 0);
NetLinkTechnologiesServer.setHackingParameters(getRandomInt(375, 425), 350000000, getRandomInt(60, 80), getRandomInt(50, 70)); NetLinkTechnologiesServer.setHackingParameters(getRandomInt(375, 425), 320000000, getRandomInt(60, 80), getRandomInt(50, 70));
NetLinkTechnologiesServer.setPortProperties(3); NetLinkTechnologiesServer.setPortProperties(3);
AddToAllServers(NetLinkTechnologiesServer); AddToAllServers(NetLinkTechnologiesServer);
var JohnsonOrthopedicsServer = new Server(); var JohnsonOrthopedicsServer = new Server();
JohnsonOrthopedicsServer.init(createRandomIp(), "johnson-ortho", "Johnson Orthopedics", true, false, false, false, 4); JohnsonOrthopedicsServer.init(createRandomIp(), "johnson-ortho", "Johnson Orthopedics", true, false, false, false, 4);
JohnsonOrthopedicsServer.setHackingParameters(getRandomInt(250, 300), 100000000, getRandomInt(40, 60), getRandomInt(40, 60)); JohnsonOrthopedicsServer.setHackingParameters(getRandomInt(250, 300), 80000000, getRandomInt(40, 60), getRandomInt(40, 60));
JohnsonOrthopedicsServer.setPortProperties(2); JohnsonOrthopedicsServer.setPortProperties(2);
AddToAllServers(JohnsonOrthopedicsServer); AddToAllServers(JohnsonOrthopedicsServer);
@ -454,7 +454,7 @@ initForeignServers = function() {
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, 55000000, 30, 30); SilverHelixServer.setHackingParameters(150, 50000000, 30, 30);
SilverHelixServer.setPortProperties(2); SilverHelixServer.setPortProperties(2);
AddToAllServers(SilverHelixServer); AddToAllServers(SilverHelixServer);
@ -484,7 +484,7 @@ initForeignServers = function() {
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(getRandomInt(180, 220), 85000000, getRandomInt(25, 35), getRandomInt(30, 40)); OmegaSoftwareServer.setHackingParameters(getRandomInt(180, 220), 75000000, getRandomInt(25, 35), getRandomInt(30, 40));
OmegaSoftwareServer.setPortProperties(2); OmegaSoftwareServer.setPortProperties(2);
AddToAllServers(OmegaSoftwareServer); AddToAllServers(OmegaSoftwareServer);
@ -703,7 +703,10 @@ processSingleServerGrowth = function(server, numCycles) {
} }
server.moneyAvailable *= serverGrowth; 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; server.moneyAvailable = server.moneyMax;
return 1; return 1;
} }

@ -63,67 +63,67 @@ function initStockMarket() {
StockMarket = {}; StockMarket = {};
var ecorp = Locations.AevumECorp; 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; StockMarket[ecorp] = ecorpStk;
var megacorp = Locations.Sector12MegaCorp; 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; StockMarket[megacorp] = megacorpStk;
var blade = Locations.Sector12BladeIndustries; 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; StockMarket[blade] = bladeStk;
var clarke = Locations.AevumClarkeIncorporated; 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; StockMarket[clarke] = clarkeStk;
var omnitek = Locations.VolhavenOmniTekIncorporated; 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; StockMarket[omnitek] = omnitekStk;
var foursigma = Locations.Sector12FourSigma; 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; StockMarket[foursigma] = foursigmaStk;
var kuaigong = Locations.ChongqingKuaiGongInternational; 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; StockMarket[kuaigong] = kuaigongStk;
var fulcrum = Locations.AevumFulcrumTechnologies; 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; StockMarket[fulcrum] = fulcrumStk;
var storm = Locations.IshimaStormTechnologies; 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; StockMarket[storm] = stormStk;
var defcomm = Locations.NewTokyoDefComm; 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; StockMarket[defcomm] = defcommStk;
var helios = Locations.VolhavenHeliosLabs; 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; StockMarket[helios] = heliosStk;
var vitalife = Locations.NewTokyoVitaLife; 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; StockMarket[vitalife] = vitalifeStk;
var icarus = Locations.Sector12IcarusMicrosystems; 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; StockMarket[icarus] = icarusStk;
var universalenergy = Locations.Sector12UniversalEnergy; 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; StockMarket[universalenergy] = universalenergyStk;
var galactic = Locations.AevumGalacticCybersystems; 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; StockMarket[galactic] = galacticStk;
var aerocorp = Locations.AevumAeroCorp; 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; StockMarket[aerocorp] = aerocorpStk;
var omnia = Locations.VolhavenOmniaCybersystems; var omnia = Locations.VolhavenOmniaCybersystems;
@ -131,19 +131,19 @@ function initStockMarket() {
StockMarket[omnia] = omniaStk; StockMarket[omnia] = omniaStk;
var solaris = Locations.ChongqingSolarisSpaceSystems; 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; StockMarket[solaris] = solarisStk;
var globalpharm = Locations.NewTokyoGlobalPharmaceuticals; 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; StockMarket[globalpharm] = globalpharmStk;
var nova = Locations.IshimaNovaMedical; 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; StockMarket[nova] = novaStk;
var watchdog = Locations.AevumWatchdogSecurity; 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; StockMarket[watchdog] = watchdogStk;
var lexocorp = Locations.VolhavenLexoCorp; var lexocorp = Locations.VolhavenLexoCorp;
@ -356,7 +356,7 @@ function displayStockMarketContent() {
if (!stockMarketContentCreated && Player.hasWseAccount) { if (!stockMarketContentCreated && Player.hasWseAccount) {
console.log("Creating Stock Market UI"); console.log("Creating Stock Market UI");
document.getElementById("stock-market-commission").innerText = document.getElementById("stock-market-commission").innerHTML =
"Commission Fees: Every transaction you make has a $" + "Commission Fees: Every transaction you make has a $" +
formatNumber(CONSTANTS.StockMarketCommission, 2) + " commission fee.<br><br>" + formatNumber(CONSTANTS.StockMarketCommission, 2) + " commission fee.<br><br>" +
"WARNING: When you reset after installing Augmentations, the Stock Market is reset. " + "WARNING: When you reset after installing Augmentations, the Stock Market is reset. " +
@ -491,15 +491,22 @@ function displayStockMarketContent() {
li.appendChild(sharesTxt); li.appendChild(sharesTxt);
li.appendChild(returnTxt); li.appendChild(returnTxt);
stockList.appendChild(li); stockList.appendChild(li);
updateStockTicker(stock, true);
updateStockPlayerPosition(stock);
}()); //Immediate invocation }()); //Immediate invocation
}//End if }//End if
} }
stockMarketContentCreated = true; stockMarketContentCreated = true;
} }
if (Player.hasWseAccount) {
for (var name in StockMarket) {
if (StockMarket.hasOwnProperty(name)) {
var stock = StockMarket[name];
updateStockTicker(stock, true);
updateStockPlayerPosition(stock);
}
}
}
} }
//'increase' argument is a boolean indicating whether the price increased or decreased //'increase' argument is a boolean indicating whether the price increased or decreased

@ -243,7 +243,7 @@ function determineAllPossibilitiesForTabCompletion(input, index=0) {
return ["alias", "analyze", "cat", "check", "clear", "cls", "connect", "free", return ["alias", "analyze", "cat", "check", "clear", "cls", "connect", "free",
"hack", "help", "home", "hostname", "ifconfig", "kill", "killall", "hack", "help", "home", "hostname", "ifconfig", "kill", "killall",
"ls", "mem", "nano", "ps", "rm", "run", "scan", "scan-analyze", "ls", "mem", "nano", "ps", "rm", "run", "scan", "scan-analyze",
"scp", "sudov", "tail", "theme", "top"].concat(Object.keys(Aliases)); "scp", "sudov", "tail", "theme", "top"].concat(Object.keys(Aliases)).concat(Object.keys(GlobalAliases));
} }
if (input.startsWith ("buy ")) { if (input.startsWith ("buy ")) {
@ -581,15 +581,21 @@ var Terminal = {
case "alias": case "alias":
if (commandArray.length == 1) { if (commandArray.length == 1) {
printAliases(); printAliases();
} else if (commandArray.length == 2) { return;
if (parseAliasDeclaration(commandArray[1])) {
} else {
post('Incorrect usage of alias command. Usage: alias [aliasname="value"]'); return;
}
} else {
post('Incorrect usage of alias command. Usage: alias [aliasname="value"]'); return;
} }
if (commandArray.length == 2) {
if (commandArray[1].startsWith("-g ")) {
var alias = commandArray[1].substring(3);
if (parseAliasDeclaration(alias, true)) {
return;
}
} else {
if (parseAliasDeclaration(commandArray[1])) {
return;
}
}
}
post('Incorrect usage of alias command. Usage: alias [-g] [aliasname="value"]');
break; break;
case "analyze": case "analyze":
if (commandArray.length != 1) { if (commandArray.length != 1) {
@ -1036,8 +1042,32 @@ var Terminal = {
} }
break; break;
case "top": case "top":
//TODO List each's script RAM usage if(commandArray.length != 1) {
post("Not yet implemented"); post("Incorrect usage of top command. Usage: top"); return;
}
post("Script Threads RAM Usage");
var currRunningScripts = Player.getCurrentServer().runningScripts;
//Iterate through scripts on current server
for(var i = 0; i < currRunningScripts.length; i++) {
var script = currRunningScripts[i];
//Calculate name padding
var numSpacesScript = 32 - script.filename.length; //26 -> width of name column
if (numSpacesScript < 0) {numSpacesScript = 0;}
var spacesScript = Array(numSpacesScript+1).join(" ");
//Calculate thread padding
var numSpacesThread = 16 - (script.threads + "").length; //16 -> width of thread column
var spacesThread = Array(numSpacesThread+1).join(" ");
//Calculate and transform RAM usage
ramUsage = formatNumber(script.scriptRef.ramUsage * script.threads, 2).toString() + "GB";
var entry = [script.filename, spacesScript, script.threads, spacesThread, ramUsage];
post(entry.join(""));
}
break; break;
case "unalias": case "unalias":
if (commandArray.length != 2) { if (commandArray.length != 2) {
@ -1300,6 +1330,19 @@ var Terminal = {
post("Netscript hack() execution time: " + formatNumber(scriptCalculateHackingTime(serv), 1) + "s"); post("Netscript hack() execution time: " + formatNumber(scriptCalculateHackingTime(serv), 1) + "s");
post("Netscript grow() execution time: " + formatNumber(scriptCalculateGrowTime(serv)/1000, 1) + "s"); post("Netscript grow() execution time: " + formatNumber(scriptCalculateGrowTime(serv)/1000, 1) + "s");
post("Netscript weaken() execution time: " + formatNumber(scriptCalculateWeakenTime(serv)/1000, 1) + "s"); post("Netscript weaken() execution time: " + formatNumber(scriptCalculateWeakenTime(serv)/1000, 1) + "s");
break;
case Programs.AutoLink:
post("This executable cannot be run.");
post("AutoLink.exe lets you automatically connect to other servers when using 'scan-analyze'.");
post("When using scan-analyze, click on a server's hostname to connect to it.");
break;
case Programs.DeepscanV1:
post("This executable cannot be run.");
post("DeepscanV1.exe lets you run 'scan-analyze' with a depth up to 5.");
break;
case Programs.DeepscanV2:
post("This executable cannot be run.");
post("DeepscanV2.exe lets you run 'scan-analyze' with a depth up to 10.");
break; break;
default: default:
post("Invalid executable. Cannot be run"); post("Invalid executable. Cannot be run");

@ -58,6 +58,7 @@ var Engine = {
stockMarketContent: null, stockMarketContent: null,
locationContent: null, locationContent: null,
workInProgressContent: null, workInProgressContent: null,
redPillContent: null,
//Character info //Character info
characterInfo: null, characterInfo: null,
@ -81,6 +82,7 @@ var Engine = {
Tutorial: "Tutorial", Tutorial: "Tutorial",
Location: "Location", Location: "Location",
workInProgress: "WorkInProgress", workInProgress: "WorkInProgress",
RedPill: "RedPill",
Infiltration: "Infiltration", Infiltration: "Infiltration",
StockMarket: "StockMarket", StockMarket: "StockMarket",
}, },
@ -187,6 +189,14 @@ var Engine = {
Engine.currentPage = Engine.Page.WorkInProgress; Engine.currentPage = Engine.Page.WorkInProgress;
}, },
loadRedPillContent: function() {
Engine.hideAllContent();
var mainMenu = document.getElementById("mainmenu-container");
mainMenu.style.visibility = "hidden";
Engine.Display.redPillContent.style.visibility = "visible";
Engine.currentPage = Engine.Page.RedPill;
},
loadInfiltrationContent: function() { loadInfiltrationContent: function() {
Engine.hideAllContent(); Engine.hideAllContent();
Engine.Display.infiltrationContent.style.visibility = "visible"; Engine.Display.infiltrationContent.style.visibility = "visible";
@ -216,6 +226,7 @@ var Engine = {
Engine.Display.tutorialContent.style.visibility = "hidden"; Engine.Display.tutorialContent.style.visibility = "hidden";
Engine.Display.locationContent.style.visibility = "hidden"; Engine.Display.locationContent.style.visibility = "hidden";
Engine.Display.workInProgressContent.style.visibility = "hidden"; Engine.Display.workInProgressContent.style.visibility = "hidden";
Engine.Display.redPillContent.style.visibility = "hidden";
Engine.Display.infiltrationContent.style.visibility = "hidden"; Engine.Display.infiltrationContent.style.visibility = "hidden";
Engine.Display.stockMarketContent.style.visibility = "hidden"; Engine.Display.stockMarketContent.style.visibility = "hidden";
@ -833,6 +844,10 @@ var Engine = {
Engine.Display.workInProgressContent = document.getElementById("work-in-progress-container"); Engine.Display.workInProgressContent = document.getElementById("work-in-progress-container");
Engine.Display.workInProgressContent.style.visibility = "hidden"; Engine.Display.workInProgressContent.style.visibility = "hidden";
//Red Pill / Hack World Daemon
Engine.Display.redPillContent = document.getElementById("red-pill-container");
Engine.Display.redPillContent.style.visibility = "hidden";
//Init Location buttons //Init Location buttons
initLocationButtons(); initLocationButtons();

@ -36,7 +36,7 @@ purchaseRamForHomeBoxCreate = function() {
//Calculate cost //Calculate cost
//Have cost increase by some percentage each time RAM has been upgraded //Have cost increase by some percentage each time RAM has been upgraded
var cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome; var cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome;
var mult = Math.pow(1.44, numUpgrades); var mult = Math.pow(1.52, numUpgrades);
cost = cost * mult; cost = cost * mult;
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>" +