mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-19 14:13:48 +01:00
commit
8305c68d59
@ -1,18 +1,21 @@
|
|||||||
/* CSS for different main menu pages, such as character info, script editor, etc (but excluding
|
/* CSS for different main menu pages, such as character info, script editor, etc (but excluding
|
||||||
terminal which has its own page) */
|
terminal which has its own page) */
|
||||||
|
|
||||||
/* Character Info */
|
.generic-menupage-container {
|
||||||
#character-container {
|
|
||||||
position: fixed;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding-top: 10px;
|
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
margin-left: 10%;
|
margin-left: 10%;
|
||||||
width: 99%;
|
width: 99%;
|
||||||
overflow: auto;
|
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Character Info */
|
||||||
|
#character-container {
|
||||||
|
padding-top: 10px;
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Script Editor */
|
/* Script Editor */
|
||||||
/* This temp element is used for auto adjusting filename field */
|
/* This temp element is used for auto adjusting filename field */
|
||||||
.tmp-element {
|
.tmp-element {
|
||||||
@ -20,16 +23,13 @@
|
|||||||
white-space: pre;
|
white-space: pre;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#script-editor-container {
|
#script-editor-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#script-editor-buttons-wrapper {
|
#script-editor-buttons-wrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-right: 0xp;
|
padding-right: 0xp;
|
||||||
@ -131,11 +131,6 @@ background-color: #555;
|
|||||||
#active-scripts-container {
|
#active-scripts-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#active-scripts-text,
|
#active-scripts-text,
|
||||||
@ -277,12 +272,9 @@ background-color: #555;
|
|||||||
#hacknet-nodes-container {
|
#hacknet-nodes-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#hacknet-nodes-container li{
|
#hacknet-nodes-container li{
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
@ -337,12 +329,9 @@ background-color: #555;
|
|||||||
#world-container {
|
#world-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#world-city-name,
|
#world-city-name,
|
||||||
#world-city-desc {
|
#world-city-desc {
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
@ -353,10 +342,6 @@ background-color: #555;
|
|||||||
#create-program-container {
|
#create-program-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#create-program-page-text {
|
#create-program-page-text {
|
||||||
@ -393,23 +378,11 @@ background-color: #555;
|
|||||||
#factions-container {
|
#factions-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#faction-container {
|
#faction-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
overflow: auto;
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#factions-list li {
|
#factions-list li {
|
||||||
@ -472,12 +445,6 @@ div.faction-clear {
|
|||||||
#faction-augmentations-container{
|
#faction-augmentations-container{
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#faction-augmentations-container p,
|
#faction-augmentations-container p,
|
||||||
@ -503,21 +470,19 @@ div.faction-clear {
|
|||||||
#augmentations-container {
|
#augmentations-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#augmentations-list li {
|
|
||||||
|
#augmentations-list li,
|
||||||
|
#queued-augmentations-list li {
|
||||||
width: 70%;
|
width: 70%;
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
#augmentations-list h2,
|
#augmentations-list h2,
|
||||||
#augmentations-list p {
|
#augmentations-list p,
|
||||||
|
#queued-augmentations-list h2,
|
||||||
|
#queued-augmentations-list p {
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
color: var(--my-font-color);
|
color: var(--my-font-color);
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
@ -533,13 +498,7 @@ div.faction-clear {
|
|||||||
/* Tutorial */
|
/* Tutorial */
|
||||||
#tutorial-container {
|
#tutorial-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
height: 100%;
|
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 10px;
|
|
||||||
margin-left: 10%;
|
|
||||||
width: 99%;
|
|
||||||
overflow: auto;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#tutorial-text {
|
#tutorial-text {
|
||||||
@ -574,4 +533,3 @@ div.faction-clear {
|
|||||||
#location-job-reputation, #location-company-favor {
|
#location-job-reputation, #location-company-favor {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,6 +240,7 @@ tr:focus {
|
|||||||
margin-right: 14px;
|
margin-right: 14px;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Character Overview */
|
/* Character Overview */
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
background-color: var(--my-background-color);
|
background-color: var(--my-background-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
.posted {
|
||||||
|
width: 70%;
|
||||||
|
}*/
|
||||||
|
|
||||||
#terminal-input {
|
#terminal-input {
|
||||||
background-color: var(--my-background-color);
|
background-color: var(--my-background-color);
|
||||||
color: var(--my-font-color);
|
color: var(--my-font-color);
|
||||||
|
81
index.html
81
index.html
@ -142,14 +142,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Character Info page -->
|
<!-- Character Info page -->
|
||||||
<div id="character-container">
|
<div id="character-container" class="generic-menupage-container">
|
||||||
<div id="character-content">
|
<div id="character-content">
|
||||||
<p id="character-info"> </p>
|
<p id="character-info"> </p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Script editor -->
|
<!-- Script editor -->
|
||||||
<div id="script-editor-container">
|
<div id="script-editor-container" class="generic-menupage-container">
|
||||||
<div id="script-editor-wrapper">
|
<div id="script-editor-wrapper">
|
||||||
<div id="script-editor-filename-wrapper">
|
<div id="script-editor-filename-wrapper">
|
||||||
<p id="script-editor-filename-tag"> <strong style="background-color:#555;">Script name: </strong></p>
|
<p id="script-editor-filename-tag"> <strong style="background-color:#555;">Script name: </strong></p>
|
||||||
@ -165,7 +165,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Active scripts info page -->
|
<!-- Active scripts info page -->
|
||||||
<div id="active-scripts-container">
|
<div id="active-scripts-container" class="generic-menupage-container">
|
||||||
<p id="active-scripts-text"> This page displays a list of all of your scripts that are currently running across every machine. It also
|
<p id="active-scripts-text"> This page displays a list of all of your scripts that are currently running across every machine. It also
|
||||||
provides information about each script's production. The scripts are categorized by the hostname of the servers on which
|
provides information about each script's production. The scripts are categorized by the hostname of the servers on which
|
||||||
they are running. </p>
|
they are running. </p>
|
||||||
@ -175,7 +175,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Hacknet Nodes -->
|
<!-- Hacknet Nodes -->
|
||||||
<div id="hacknet-nodes-container">
|
<div id="hacknet-nodes-container" class="generic-menupage-container">
|
||||||
<h1 id="hacknet-nodes-title"> Hacknet Nodes </h1>
|
<h1 id="hacknet-nodes-title"> Hacknet Nodes </h1>
|
||||||
<p id="hacknet-nodes-text">
|
<p id="hacknet-nodes-text">
|
||||||
The Hacknet is a global, decentralized network of machines. It is used by hackers all around
|
The Hacknet is a global, decentralized network of machines. It is used by hackers all around
|
||||||
@ -205,7 +205,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- World -->
|
<!-- World -->
|
||||||
<div id="world-container" class="world-container">
|
<div id="world-container" class="generic-menupage-container">
|
||||||
<h2 id="world-city-name"> </h2>
|
<h2 id="world-city-name"> </h2>
|
||||||
<p id="world-city-desc"> </p>
|
<p id="world-city-desc"> </p>
|
||||||
<ul id="aevum-locations-list">
|
<ul id="aevum-locations-list">
|
||||||
@ -402,7 +402,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Create a program(executable) -->
|
<!-- Create a program(executable) -->
|
||||||
<div id="create-program-container">
|
<div id="create-program-container" class="generic-menupage-container">
|
||||||
<p id="create-program-page-text">
|
<p id="create-program-page-text">
|
||||||
This page displays any programs that you are able to create. Writing the code for a program takes time, which
|
This page displays any programs that you are able to create. Writing the code for a program takes time, which
|
||||||
can vary based on how complex the program is. If you are working on creating on a program you can cancel
|
can vary based on how complex the program is. If you are working on creating on a program you can cancel
|
||||||
@ -455,14 +455,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Factions -->
|
<!-- Factions -->
|
||||||
<div id="factions-container">
|
<div id="factions-container" class="generic-menupage-container">
|
||||||
<h1> Factions </h1>
|
<h1> Factions </h1>
|
||||||
<p> Lists all factions you have joined </p>
|
<p> Lists all factions you have joined </p>
|
||||||
<ul class="factions-list" id="factions-list"></ul>
|
<ul class="factions-list" id="factions-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Single Faction info (when you select a faction from the Factions menu) -->
|
<!-- Single Faction info (when you select a faction from the Factions menu) -->
|
||||||
<div id="faction-container">
|
<div id="faction-container" class="generic-menupage-container">
|
||||||
<h1 id="faction-name"></h1>
|
<h1 id="faction-name"></h1>
|
||||||
<p id="faction-info"></p>
|
<p id="faction-info"></p>
|
||||||
<p> --------------- </p>
|
<p> --------------- </p>
|
||||||
@ -539,7 +539,7 @@
|
|||||||
<br><br><br><br>
|
<br><br><br><br>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="faction-augmentations-container">
|
<div id="faction-augmentations-container" class="generic-menupage-container">
|
||||||
<a id="faction-augmentations-back-button" class="a-link-button"> Back </a>
|
<a id="faction-augmentations-back-button" class="a-link-button"> Back </a>
|
||||||
<h1> Faction Augmentations </h1>
|
<h1> Faction Augmentations </h1>
|
||||||
<p id="faction-augmentations-page-desc"> Lists all augmentations that are available to purchase from </p>
|
<p id="faction-augmentations-page-desc"> Lists all augmentations that are available to purchase from </p>
|
||||||
@ -548,16 +548,35 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Installed augmentations -->
|
<!-- Augmentations -->
|
||||||
<div id="augmentations-container">
|
<div id="augmentations-container" class="generic-menupage-container">
|
||||||
<h1> Augmentations </h1>
|
<h1> Purchased Augmentations </h1>
|
||||||
<p> Lists all augmentations you have installed </p>
|
<p style="width:70%;">
|
||||||
|
Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them.
|
||||||
|
<br>WARNING: Purchasing an Augmentation resets most of your progress, including: <br><br>
|
||||||
|
Stats/Skill levels and Experience <br>
|
||||||
|
Money <br>
|
||||||
|
Scripts on every computer but your home computer<br>
|
||||||
|
Purchased servers <br>
|
||||||
|
Hacknet Nodes <br>
|
||||||
|
Faction/Company reputation <br><br>
|
||||||
|
Purchasing an Augmentation lets you start over with the perks and benefits granted by all
|
||||||
|
of the Augmentations you have ever purchased. Also, you will keep any scripts and RAM upgrades
|
||||||
|
on your home computer (but you will lose all programs besides NUKE.exe).
|
||||||
|
</p>
|
||||||
|
<br><br>
|
||||||
|
<ul id="queued-augmentations-list"></ul>
|
||||||
|
<br>
|
||||||
|
<a id="install-augmentations-button" class="a-link-button"> Install Augmentations </a>
|
||||||
|
<br><br>
|
||||||
|
<h1> Installed Augmentations </h1>
|
||||||
|
<p style="width:70%;"> List of all augmentations that have been installed. You have gained the effects of these augmentations </p>
|
||||||
<ul id="augmentations-list">
|
<ul id="augmentations-list">
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Tutorial content -->
|
<!-- Tutorial content -->
|
||||||
<div id="tutorial-container">
|
<div id="tutorial-container" class="generic-menupage-container">
|
||||||
<a id="tutorial-getting-started-link" class="a-link-button"> Getting Started </a>
|
<a id="tutorial-getting-started-link" class="a-link-button"> Getting Started </a>
|
||||||
<a id="tutorial-networking-link" class="a-link-button"> Servers & Networking </a>
|
<a id="tutorial-networking-link" class="a-link-button"> Servers & Networking </a>
|
||||||
<a id="tutorial-hacking-link" class="a-link-button"> Hacking </a>
|
<a id="tutorial-hacking-link" class="a-link-button"> Hacking </a>
|
||||||
@ -573,7 +592,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Location (visiting a location in World) -->
|
<!-- Location (visiting a location in World) -->
|
||||||
<div id="location-container">
|
<div id="location-container" class="generic-menupage-container">
|
||||||
<a id="location-return-to-world-button" class="a-link-button"> Return to World </a>
|
<a id="location-return-to-world-button" class="a-link-button"> Return to World </a>
|
||||||
<h1 id="location-name"></h1>
|
<h1 id="location-name"></h1>
|
||||||
<p id="location-info"> </p>
|
<p id="location-info"> </p>
|
||||||
@ -660,6 +679,27 @@
|
|||||||
<a id="location-slums-heist" class="a-link-button tooltip"> Heist </a>
|
<a id="location-slums-heist" class="a-link-button tooltip"> Heist </a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="infiltration-container" class="generic-menupage-container">
|
||||||
|
<div id="infiltration-left-panel">
|
||||||
|
<p id="infiltration-level-text"> </p>
|
||||||
|
<div id="infiltration-buttons">
|
||||||
|
<a id="infiltration-kill"> </a>
|
||||||
|
<a id="infiltration-knockout"> </a>
|
||||||
|
<a id="infiltration-stealthknockout"> </a>
|
||||||
|
<a id="infiltration-assassinate"> </a>
|
||||||
|
<a id="infiltration-hacksecurity"> </a>
|
||||||
|
<a id="infiltration-destroysecurity"> </a>
|
||||||
|
<a id="infiltration-sneak"> </a>
|
||||||
|
<a id="infiltration-pickdoor"> </a>
|
||||||
|
<a id="infiltration-bribe"> </a>
|
||||||
|
<a id="infiltration-escape"> </a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="infiltration-right-panel">
|
||||||
|
<p id="infiltration-status-text"></p>
|
||||||
|
</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">
|
||||||
@ -703,17 +743,6 @@
|
|||||||
<h2 id="purchase-augmentation-box-aug-name"> </h2>
|
<h2 id="purchase-augmentation-box-aug-name"> </h2>
|
||||||
<p id="purchase-augmentation-box-aug-info"> </p>
|
<p id="purchase-augmentation-box-aug-info"> </p>
|
||||||
<p id="purchase-augmentation-box-text"> </p>
|
<p id="purchase-augmentation-box-text"> </p>
|
||||||
<p> <br> WARNING: Purchasing an Augmentation resets most of your progress, including: <br><br>
|
|
||||||
Stats/Skill levels and Experience <br>
|
|
||||||
Money <br>
|
|
||||||
Scripts on every computer but your home computer<br>
|
|
||||||
Purchased servers <br>
|
|
||||||
Hacknet Nodes <br>
|
|
||||||
Faction/Company reputation <br><br>
|
|
||||||
Purchasing an Augmentation lets you start over with the perks and benefits granted by all
|
|
||||||
of the Augmentations you have ever purchased. Also, you will keep any scripts and RAM upgrades
|
|
||||||
on your home computer (but you will lose all programs besides NUKE.exe).
|
|
||||||
</p>
|
|
||||||
<span id="purchase-augmentation-box-confirm"> Purchase </span>
|
<span id="purchase-augmentation-box-confirm"> Purchase </span>
|
||||||
<span id="purchase-augmentation-box-cancel"> Cancel </span>
|
<span id="purchase-augmentation-box-cancel"> Cancel </span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
function Augmentation(name) {
|
function Augmentation(name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.info = "";
|
this.info = "";
|
||||||
this.owned = false; //Whether the player has it (you can only have each augmentation once)
|
this.owned = false;
|
||||||
|
|
||||||
//Price and reputation base requirements (can change based on faction multipliers)
|
//Price and reputation base requirements (can change based on faction multipliers)
|
||||||
this.baseRepRequirement = 0;
|
this.baseRepRequirement = 0;
|
||||||
@ -153,6 +153,11 @@ AugmentationNames = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
initAugmentations = function() {
|
initAugmentations = function() {
|
||||||
|
for (var name in Factions) {
|
||||||
|
if (Factions.hasOwnProperty(name)) {
|
||||||
|
Factions[name].augmentations = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
//Combat stat augmentations
|
//Combat stat augmentations
|
||||||
var HemoRecirculator = new Augmentation(AugmentationNames.HemoRecirculator);
|
var HemoRecirculator = new Augmentation(AugmentationNames.HemoRecirculator);
|
||||||
HemoRecirculator.setInfo("A heart implant that greatly increases the body's ability to effectively use and pump " +
|
HemoRecirculator.setInfo("A heart implant that greatly increases the body's ability to effectively use and pump " +
|
||||||
@ -160,7 +165,6 @@ initAugmentations = function() {
|
|||||||
HemoRecirculator.setRequirements(4000, 9000000);
|
HemoRecirculator.setRequirements(4000, 9000000);
|
||||||
HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
|
HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
|
||||||
if (augmentationExists(AugmentationNames.HemoRecirculator)) {
|
if (augmentationExists(AugmentationNames.HemoRecirculator)) {
|
||||||
HemoRecirculator.owned = Augmentations[AugmentationNames.HemoRecirculator].owned;
|
|
||||||
delete Augmentations[AugmentationNames.HemoRecirculator];
|
delete Augmentations[AugmentationNames.HemoRecirculator];
|
||||||
}
|
}
|
||||||
AddToAugmentations(HemoRecirculator);
|
AddToAugmentations(HemoRecirculator);
|
||||||
@ -174,7 +178,6 @@ initAugmentations = function() {
|
|||||||
Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.Targeting1)) {
|
if (augmentationExists(AugmentationNames.Targeting1)) {
|
||||||
Targeting1.owned = Augmentations[AugmentationNames.Targeting1].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Targeting1];
|
delete Augmentations[AugmentationNames.Targeting1];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Targeting1);
|
AddToAugmentations(Targeting1);
|
||||||
@ -187,7 +190,6 @@ initAugmentations = function() {
|
|||||||
Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.Targeting2)) {
|
if (augmentationExists(AugmentationNames.Targeting2)) {
|
||||||
Targeting2.owned = Augmentations[AugmentationNames.Targeting2].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Targeting2];
|
delete Augmentations[AugmentationNames.Targeting2];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Targeting2);
|
AddToAugmentations(Targeting2);
|
||||||
@ -200,7 +202,6 @@ initAugmentations = function() {
|
|||||||
Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
|
Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
|
||||||
"KuaiGong International", "Blade Industries", "The Covenant"]);
|
"KuaiGong International", "Blade Industries", "The Covenant"]);
|
||||||
if (augmentationExists(AugmentationNames.Targeting3)) {
|
if (augmentationExists(AugmentationNames.Targeting3)) {
|
||||||
Targeting3.owned = Augmentations[AugmentationNames.Targeting3].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Targeting3];
|
delete Augmentations[AugmentationNames.Targeting3];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Targeting3);
|
AddToAugmentations(Targeting3);
|
||||||
@ -213,7 +214,6 @@ initAugmentations = function() {
|
|||||||
SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
|
SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
|
||||||
"NWO", "The Covenant", "Daedalus", "Illuminati"]);
|
"NWO", "The Covenant", "Daedalus", "Illuminati"]);
|
||||||
if (augmentationExists(AugmentationNames.SyntheticHeart)) {
|
if (augmentationExists(AugmentationNames.SyntheticHeart)) {
|
||||||
SyntheticHeart.owned = Augmentations[AugmentationNames.SyntheticHeart].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SyntheticHeart];
|
delete Augmentations[AugmentationNames.SyntheticHeart];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SyntheticHeart);
|
AddToAugmentations(SyntheticHeart);
|
||||||
@ -227,7 +227,6 @@ initAugmentations = function() {
|
|||||||
SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
|
SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
|
||||||
"NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
|
"NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.SynfibrilMuscle)) {
|
if (augmentationExists(AugmentationNames.SynfibrilMuscle)) {
|
||||||
SynfibrilMuscle.owned = Augmentations[AugmentationNames.SynfibrilMuscle].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SynfibrilMuscle];
|
delete Augmentations[AugmentationNames.SynfibrilMuscle];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SynfibrilMuscle)
|
AddToAugmentations(SynfibrilMuscle)
|
||||||
@ -240,7 +239,6 @@ initAugmentations = function() {
|
|||||||
CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.CombatRib1)) {
|
if (augmentationExists(AugmentationNames.CombatRib1)) {
|
||||||
CombatRib1.owned = Augmentations[AugmentationNames.CombatRib1].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CombatRib1];
|
delete Augmentations[AugmentationNames.CombatRib1];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CombatRib1);
|
AddToAugmentations(CombatRib1);
|
||||||
@ -252,7 +250,6 @@ initAugmentations = function() {
|
|||||||
CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.CombatRib2)) {
|
if (augmentationExists(AugmentationNames.CombatRib2)) {
|
||||||
CombatRib2.owned = Augmentations[AugmentationNames.CombatRib2].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CombatRib2];
|
delete Augmentations[AugmentationNames.CombatRib2];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CombatRib2);
|
AddToAugmentations(CombatRib2);
|
||||||
@ -264,7 +261,6 @@ initAugmentations = function() {
|
|||||||
CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
|
CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
|
||||||
"KuaiGong International", "Blade Industries", "The Covenant"]);
|
"KuaiGong International", "Blade Industries", "The Covenant"]);
|
||||||
if (augmentationExists(AugmentationNames.CombatRib3)) {
|
if (augmentationExists(AugmentationNames.CombatRib3)) {
|
||||||
CombatRib3.owned = Augmentations[AugmentationNames.CombatRib3].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CombatRib3];
|
delete Augmentations[AugmentationNames.CombatRib3];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CombatRib3);
|
AddToAugmentations(CombatRib3);
|
||||||
@ -277,7 +273,6 @@ initAugmentations = function() {
|
|||||||
NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
|
NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
|
||||||
"Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
|
"Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
|
||||||
if (augmentationExists(AugmentationNames.NanofiberWeave)) {
|
if (augmentationExists(AugmentationNames.NanofiberWeave)) {
|
||||||
NanofiberWeave.owned = Augmentations[AugmentationNames.NanofiberWeave].owned;
|
|
||||||
delete Augmentations[AugmentationNames.NanofiberWeave];
|
delete Augmentations[AugmentationNames.NanofiberWeave];
|
||||||
}
|
}
|
||||||
AddToAugmentations(NanofiberWeave);
|
AddToAugmentations(NanofiberWeave);
|
||||||
@ -293,7 +288,6 @@ initAugmentations = function() {
|
|||||||
SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
|
SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
|
||||||
"The Covenant"]);
|
"The Covenant"]);
|
||||||
if (augmentationExists(AugmentationNames.SubdermalArmor)) {
|
if (augmentationExists(AugmentationNames.SubdermalArmor)) {
|
||||||
SubdermalArmor.owned = Augmentations[AugmentationNames.SubdermalArmor].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SubdermalArmor];
|
delete Augmentations[AugmentationNames.SubdermalArmor];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SubdermalArmor);
|
AddToAugmentations(SubdermalArmor);
|
||||||
@ -306,7 +300,6 @@ initAugmentations = function() {
|
|||||||
WiredReflexes.addToFactions(["Tian Di Hui", "Slum Snakes", "Sector-12", "Volhaven", "Aevum", "Ishima",
|
WiredReflexes.addToFactions(["Tian Di Hui", "Slum Snakes", "Sector-12", "Volhaven", "Aevum", "Ishima",
|
||||||
"The Syndicate", "The Dark Army", "Speakers for the Dead"]);
|
"The Syndicate", "The Dark Army", "Speakers for the Dead"]);
|
||||||
if (augmentationExists(AugmentationNames.WiredReflexes)) {
|
if (augmentationExists(AugmentationNames.WiredReflexes)) {
|
||||||
WiredReflexes.owned = Augmentations[AugmentationNames.WiredReflexes].owned;
|
|
||||||
delete Augmentations[AugmentationNames.WiredReflexes];
|
delete Augmentations[AugmentationNames.WiredReflexes];
|
||||||
}
|
}
|
||||||
AddToAugmentations(WiredReflexes);
|
AddToAugmentations(WiredReflexes);
|
||||||
@ -318,7 +311,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's strength and defense by 75%.");
|
"This augmentation increases the player's strength and defense by 75%.");
|
||||||
GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
|
GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
|
||||||
if (augmentationExists(AugmentationNames.GrapheneBoneLacings)) {
|
if (augmentationExists(AugmentationNames.GrapheneBoneLacings)) {
|
||||||
GrapheneBoneLacings.owned = Augmentations[AugmentationNames.GrapheneBoneLacings].owned;
|
|
||||||
delete Augmentations[AugmentationNames.GrapheneBoneLacings];
|
delete Augmentations[AugmentationNames.GrapheneBoneLacings];
|
||||||
}
|
}
|
||||||
AddToAugmentations(GrapheneBoneLacings);
|
AddToAugmentations(GrapheneBoneLacings);
|
||||||
@ -333,7 +325,6 @@ initAugmentations = function() {
|
|||||||
BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
|
BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
|
||||||
"OmniTek Incorporated", "Blade Industries"]);
|
"OmniTek Incorporated", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.BionicSpine)) {
|
if (augmentationExists(AugmentationNames.BionicSpine)) {
|
||||||
BionicSpine.owned = Augmentations[AugmentationNames.BionicSpine].owned;
|
|
||||||
delete Augmentations[AugmentationNames.BionicSpine];
|
delete Augmentations[AugmentationNames.BionicSpine];
|
||||||
}
|
}
|
||||||
AddToAugmentations(BionicSpine);
|
AddToAugmentations(BionicSpine);
|
||||||
@ -345,7 +336,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases all of the player's combat stats by 65%.");
|
"This augmentation increases all of the player's combat stats by 65%.");
|
||||||
GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
|
GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
|
||||||
if (augmentationExists(AugmentationNames.GrapheneBionicSpine)) {
|
if (augmentationExists(AugmentationNames.GrapheneBionicSpine)) {
|
||||||
GrapheneBionicSpine.owned = Augmentations[AugmentationNames.GrapheneBionicSpine].owned;
|
|
||||||
delete Augmentations[AugmentationNames.GrapheneBionicSpine];
|
delete Augmentations[AugmentationNames.GrapheneBionicSpine];
|
||||||
}
|
}
|
||||||
AddToAugmentations(GrapheneBionicSpine);
|
AddToAugmentations(GrapheneBionicSpine);
|
||||||
@ -357,7 +347,6 @@ initAugmentations = function() {
|
|||||||
BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
|
BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
|
||||||
"OmniTek Incorporated", "Blade Industries"]);
|
"OmniTek Incorporated", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.BionicLegs)) {
|
if (augmentationExists(AugmentationNames.BionicLegs)) {
|
||||||
BionicLegs.owned = Augmentations[AugmentationNames.BionicLegs].owned;
|
|
||||||
delete Augmentations[AugmentationNames.BionicLegs];
|
delete Augmentations[AugmentationNames.BionicLegs];
|
||||||
}
|
}
|
||||||
AddToAugmentations(BionicLegs);
|
AddToAugmentations(BionicLegs);
|
||||||
@ -369,7 +358,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's agility by an additional 175%.");
|
"This augmentation increases the player's agility by an additional 175%.");
|
||||||
GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
|
GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
|
||||||
if (augmentationExists(AugmentationNames.GrapheneBionicLegs)) {
|
if (augmentationExists(AugmentationNames.GrapheneBionicLegs)) {
|
||||||
GrapheneBionicLegs.owned = Augmentations[AugmentationNames.GrapheneBionicLegs].owned;
|
|
||||||
delete Augmentations[AugmentationNames.GrapheneBionicLegs];
|
delete Augmentations[AugmentationNames.GrapheneBionicLegs];
|
||||||
}
|
}
|
||||||
AddToAugmentations(GrapheneBionicLegs);
|
AddToAugmentations(GrapheneBionicLegs);
|
||||||
@ -384,7 +372,6 @@ initAugmentations = function() {
|
|||||||
SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
|
SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
|
||||||
"Ishima", "Volhaven", "Silhouette"]);
|
"Ishima", "Volhaven", "Silhouette"]);
|
||||||
if (augmentationExists(AugmentationNames.SpeechProcessor)) {
|
if (augmentationExists(AugmentationNames.SpeechProcessor)) {
|
||||||
SpeechProcessor.owned = Augmentations[AugmentationNames.SpeechProcessor].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SpeechProcessor];
|
delete Augmentations[AugmentationNames.SpeechProcessor];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SpeechProcessor);
|
AddToAugmentations(SpeechProcessor);
|
||||||
@ -397,7 +384,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's charisma and charisma experience gain rate by 15%");
|
"This augmentation increases the player's charisma and charisma experience gain rate by 15%");
|
||||||
TITN41Injection.addToFactions(["Silhouette"]);
|
TITN41Injection.addToFactions(["Silhouette"]);
|
||||||
if (augmentationExists(AugmentationNames.TITN41Injection)) {
|
if (augmentationExists(AugmentationNames.TITN41Injection)) {
|
||||||
TITN41Injection.owned = Augmentations[AugmentationNames.TITN41Injection].owned;
|
|
||||||
delete Augmentations[AugmentationNames.TITN41Injection];
|
delete Augmentations[AugmentationNames.TITN41Injection];
|
||||||
}
|
}
|
||||||
AddToAugmentations(TITN41Injection);
|
AddToAugmentations(TITN41Injection);
|
||||||
@ -413,7 +399,6 @@ initAugmentations = function() {
|
|||||||
EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
|
EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
|
||||||
"OmniTek Incorporated", "Four Sigma"]);
|
"OmniTek Incorporated", "Four Sigma"]);
|
||||||
if (augmentationExists(AugmentationNames.EnhancedSocialInteractionImplant)) {
|
if (augmentationExists(AugmentationNames.EnhancedSocialInteractionImplant)) {
|
||||||
EnhancedSocialInteractionImplant.owned = Augmentations[AugmentationNames.EnhancedSocialInteractionImplant].owned;
|
|
||||||
delete Augmentations[AugmentationNames.EnhancedSocialInteractionImplant];
|
delete Augmentations[AugmentationNames.EnhancedSocialInteractionImplant];
|
||||||
}
|
}
|
||||||
AddToAugmentations(EnhancedSocialInteractionImplant);
|
AddToAugmentations(EnhancedSocialInteractionImplant);
|
||||||
@ -425,7 +410,6 @@ initAugmentations = function() {
|
|||||||
"capabilities. <br><br> This augmentation increases the player's hacking skill by 5%");
|
"capabilities. <br><br> This augmentation increases the player's hacking skill by 5%");
|
||||||
BitWire.addToFactions(["CyberSec", "NiteSec"]);
|
BitWire.addToFactions(["CyberSec", "NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.BitWire)) {
|
if (augmentationExists(AugmentationNames.BitWire)) {
|
||||||
BitWire.owned = Augmentations[AugmentationNames.BitWire].owned;
|
|
||||||
delete Augmentations[AugmentationNames.BitWire];
|
delete Augmentations[AugmentationNames.BitWire];
|
||||||
}
|
}
|
||||||
AddToAugmentations(BitWire);
|
AddToAugmentations(BitWire);
|
||||||
@ -443,7 +427,6 @@ initAugmentations = function() {
|
|||||||
"Inreases the player's hacking skill by 12%");
|
"Inreases the player's hacking skill by 12%");
|
||||||
ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
|
ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
|
||||||
if (augmentationExists(AugmentationNames.ArtificialBioNeuralNetwork)) {
|
if (augmentationExists(AugmentationNames.ArtificialBioNeuralNetwork)) {
|
||||||
ArtificialBioNeuralNetwork.owned = Augmentations[AugmentationNames.ArtificialBioNeuralNetwork].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ArtificialBioNeuralNetwork];
|
delete Augmentations[AugmentationNames.ArtificialBioNeuralNetwork];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ArtificialBioNeuralNetwork);
|
AddToAugmentations(ArtificialBioNeuralNetwork);
|
||||||
@ -458,7 +441,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking experience gain rate by 5%");
|
"Increases the player's hacking experience gain rate by 5%");
|
||||||
ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
|
ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.ArtificialSynapticPotentiation)) {
|
if (augmentationExists(AugmentationNames.ArtificialSynapticPotentiation)) {
|
||||||
ArtificialSynapticPotentiation.owned = Augmentations[AugmentationNames.ArtificialSynapticPotentiation].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ArtificialSynapticPotentiation];
|
delete Augmentations[AugmentationNames.ArtificialSynapticPotentiation];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ArtificialSynapticPotentiation);
|
AddToAugmentations(ArtificialSynapticPotentiation);
|
||||||
@ -475,7 +457,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking experience gain rate by 10%");
|
"Increases the player's hacking experience gain rate by 10%");
|
||||||
EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
|
EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
|
||||||
if (augmentationExists(AugmentationNames.EnhancedMyelinSheathing)) {
|
if (augmentationExists(AugmentationNames.EnhancedMyelinSheathing)) {
|
||||||
EnhancedMyelinSheathing.owned = Augmentations[AugmentationNames.EnhancedMyelinSheathing].owned;
|
|
||||||
delete Augmentations[AugmentationNames.EnhancedMyelinSheathing];
|
delete Augmentations[AugmentationNames.EnhancedMyelinSheathing];
|
||||||
}
|
}
|
||||||
AddToAugmentations(EnhancedMyelinSheathing);
|
AddToAugmentations(EnhancedMyelinSheathing);
|
||||||
@ -487,7 +468,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's hacking speed by 3%.");
|
"This augmentation increases the player's hacking speed by 3%.");
|
||||||
SynapticEnhancement.addToFactions(["CyberSec"]);
|
SynapticEnhancement.addToFactions(["CyberSec"]);
|
||||||
if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
|
if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
|
||||||
SynapticEnhancement.owned = Augmentations[AugmentationNames.SynapticEnhancement].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SynapticEnhancement];
|
delete Augmentations[AugmentationNames.SynapticEnhancement];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SynapticEnhancement);
|
AddToAugmentations(SynapticEnhancement);
|
||||||
@ -499,7 +479,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's hacking experience gain rate by 25%.");
|
"This augmentation increases the player's hacking experience gain rate by 25%.");
|
||||||
NeuralRetentionEnhancement.addToFactions(["NiteSec"]);
|
NeuralRetentionEnhancement.addToFactions(["NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.NeuralRetentionEnhancement)) {
|
if (augmentationExists(AugmentationNames.NeuralRetentionEnhancement)) {
|
||||||
NeuralRetentionEnhancement.owned = Augmentations[AugmentationNames.NeuralRetentionEnhancement].owned;
|
|
||||||
delete Augmentations[AugmentationNames.NeuralRetentionEnhancement];
|
delete Augmentations[AugmentationNames.NeuralRetentionEnhancement];
|
||||||
}
|
}
|
||||||
AddToAugmentations(NeuralRetentionEnhancement);
|
AddToAugmentations(NeuralRetentionEnhancement);
|
||||||
@ -512,7 +491,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the amount of money the player gains from hacking by 25%");
|
"This augmentation increases the amount of money the player gains from hacking by 25%");
|
||||||
DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
|
DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
|
||||||
if (augmentationExists(AugmentationNames.DataJack)) {
|
if (augmentationExists(AugmentationNames.DataJack)) {
|
||||||
DataJack.owned = Augmentations[AugmentationNames.DataJack].owned;
|
|
||||||
delete Augmentations[AugmentationNames.DataJack];
|
delete Augmentations[AugmentationNames.DataJack];
|
||||||
}
|
}
|
||||||
AddToAugmentations(DataJack);
|
AddToAugmentations(DataJack);
|
||||||
@ -528,7 +506,6 @@ initAugmentations = function() {
|
|||||||
ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
|
ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
|
||||||
"Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
|
"Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.ENM)) {
|
if (augmentationExists(AugmentationNames.ENM)) {
|
||||||
ENM.owned = Augmentations[AugmentationNames.ENM].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ENM];
|
delete Augmentations[AugmentationNames.ENM];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ENM);
|
AddToAugmentations(ENM);
|
||||||
@ -546,7 +523,6 @@ initAugmentations = function() {
|
|||||||
ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
|
ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
|
||||||
"Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
|
"Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.ENMCore)) {
|
if (augmentationExists(AugmentationNames.ENMCore)) {
|
||||||
ENMCore.owned = Augmentations[AugmentationNames.ENMCore].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ENMCore];
|
delete Augmentations[AugmentationNames.ENMCore];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ENMCore);
|
AddToAugmentations(ENMCore);
|
||||||
@ -566,7 +542,6 @@ initAugmentations = function() {
|
|||||||
ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
||||||
"Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
|
"Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
|
||||||
if (augmentationExists(AugmentationNames.ENMCoreV2)) {
|
if (augmentationExists(AugmentationNames.ENMCoreV2)) {
|
||||||
ENMCoreV2.owned = Augmentations[AugmentationNames.ENMCoreV2].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ENMCoreV2];
|
delete Augmentations[AugmentationNames.ENMCoreV2];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ENMCoreV2);
|
AddToAugmentations(ENMCoreV2);
|
||||||
@ -585,7 +560,6 @@ initAugmentations = function() {
|
|||||||
ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
||||||
"Daedalus", "The Covenant", "Illuminati"]);
|
"Daedalus", "The Covenant", "Illuminati"]);
|
||||||
if (augmentationExists(AugmentationNames.ENMCoreV3)) {
|
if (augmentationExists(AugmentationNames.ENMCoreV3)) {
|
||||||
ENMCoreV3.owned = Augmentations[AugmentationNames.ENMCoreV3].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ENMCoreV3];
|
delete Augmentations[AugmentationNames.ENMCoreV3];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ENMCoreV3);
|
AddToAugmentations(ENMCoreV3);
|
||||||
@ -598,7 +572,6 @@ initAugmentations = function() {
|
|||||||
ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
||||||
"Daedalus", "The Covenant", "Illuminati"]);
|
"Daedalus", "The Covenant", "Illuminati"]);
|
||||||
if (augmentationExists(AugmentationNames.ENMAnalyzeEngine)) {
|
if (augmentationExists(AugmentationNames.ENMAnalyzeEngine)) {
|
||||||
ENMAnalyzeEngine.owned = Augmentations[AugmentationNames.ENMAnalyzeEngine].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ENMAnalyzeEngine];
|
delete Augmentations[AugmentationNames.ENMAnalyzeEngine];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ENMAnalyzeEngine);
|
AddToAugmentations(ENMAnalyzeEngine);
|
||||||
@ -614,7 +587,6 @@ initAugmentations = function() {
|
|||||||
ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
|
||||||
"Daedalus", "The Covenant", "Illuminati"]);
|
"Daedalus", "The Covenant", "Illuminati"]);
|
||||||
if (augmentationExists(AugmentationNames.ENMDMA)) {
|
if (augmentationExists(AugmentationNames.ENMDMA)) {
|
||||||
ENMDMA.owned = Augmentations[AugmentationNames.ENMDMA].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ENMDMA];
|
delete Augmentations[AugmentationNames.ENMDMA];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ENMDMA);
|
AddToAugmentations(ENMDMA);
|
||||||
@ -631,7 +603,6 @@ initAugmentations = function() {
|
|||||||
"Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
|
"Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
|
||||||
"Four Sigma"]);
|
"Four Sigma"]);
|
||||||
if (augmentationExists(AugmentationNames.Neuralstimulator)) {
|
if (augmentationExists(AugmentationNames.Neuralstimulator)) {
|
||||||
Neuralstimulator.owned = Augmentations[AugmentationNames.Neuralstimulator].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Neuralstimulator];
|
delete Augmentations[AugmentationNames.Neuralstimulator];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Neuralstimulator);
|
AddToAugmentations(Neuralstimulator);
|
||||||
@ -646,7 +617,6 @@ initAugmentations = function() {
|
|||||||
"Increases the amount of money the player gains from hacking by 20%");
|
"Increases the amount of money the player gains from hacking by 20%");
|
||||||
NeuralAccelerator.addToFactions(["BitRunners"]);
|
NeuralAccelerator.addToFactions(["BitRunners"]);
|
||||||
if (augmentationExists(AugmentationNames.NeuralAccelerator)) {
|
if (augmentationExists(AugmentationNames.NeuralAccelerator)) {
|
||||||
NeuralAccelerator.owned = Augmentations[AugmentationNames.NeuralAccelerator].owned;
|
|
||||||
delete Augmentations[AugmentationNames.NeuralAccelerator];
|
delete Augmentations[AugmentationNames.NeuralAccelerator];
|
||||||
}
|
}
|
||||||
AddToAugmentations(NeuralAccelerator);
|
AddToAugmentations(NeuralAccelerator);
|
||||||
@ -662,7 +632,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking skill by 5%");
|
"Increases the player's hacking skill by 5%");
|
||||||
CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
|
CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
|
||||||
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG1)) {
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG1)) {
|
||||||
CranialSignalProcessorsG1.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG1].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CranialSignalProcessorsG1];
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG1];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CranialSignalProcessorsG1);
|
AddToAugmentations(CranialSignalProcessorsG1);
|
||||||
@ -679,7 +648,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking skill by 7%");
|
"Increases the player's hacking skill by 7%");
|
||||||
CranialSignalProcessorsG2.addToFactions(["NiteSec"]);
|
CranialSignalProcessorsG2.addToFactions(["NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG2)) {
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG2)) {
|
||||||
CranialSignalProcessorsG2.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG2].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CranialSignalProcessorsG2];
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG2];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CranialSignalProcessorsG2);
|
AddToAugmentations(CranialSignalProcessorsG2);
|
||||||
@ -696,7 +664,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking skill by 9%");
|
"Increases the player's hacking skill by 9%");
|
||||||
CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand"]);
|
CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand"]);
|
||||||
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG3)) {
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG3)) {
|
||||||
CranialSignalProcessorsG3.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG3].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CranialSignalProcessorsG3];
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG3];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CranialSignalProcessorsG3);
|
AddToAugmentations(CranialSignalProcessorsG3);
|
||||||
@ -713,7 +680,6 @@ initAugmentations = function() {
|
|||||||
"Increases the amount of money the player can inject into servers using grow() by 25%");
|
"Increases the amount of money the player can inject into servers using grow() by 25%");
|
||||||
CranialSignalProcessorsG4.addToFactions(["The Black Hand"]);
|
CranialSignalProcessorsG4.addToFactions(["The Black Hand"]);
|
||||||
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG4)) {
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG4)) {
|
||||||
CranialSignalProcessorsG4.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG4].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CranialSignalProcessorsG4];
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG4];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CranialSignalProcessorsG4);
|
AddToAugmentations(CranialSignalProcessorsG4);
|
||||||
@ -730,7 +696,6 @@ initAugmentations = function() {
|
|||||||
"Increases the amount of money the player can inject into servers using grow() by 75%");
|
"Increases the amount of money the player can inject into servers using grow() by 75%");
|
||||||
CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
|
CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
|
||||||
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG5)) {
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG5)) {
|
||||||
CranialSignalProcessorsG5.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG5].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CranialSignalProcessorsG5];
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG5];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CranialSignalProcessorsG5);
|
AddToAugmentations(CranialSignalProcessorsG5);
|
||||||
@ -746,7 +711,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking speed by 3%");
|
"Increases the player's hacking speed by 3%");
|
||||||
NeuronalDensification.addToFactions(["Clarke Incorporated"]);
|
NeuronalDensification.addToFactions(["Clarke Incorporated"]);
|
||||||
if (augmentationExists(AugmentationNames.NeuronalDensification)) {
|
if (augmentationExists(AugmentationNames.NeuronalDensification)) {
|
||||||
NeuronalDensification.owned = Augmentations[AugmentationNames.NeuronalDensification].owned;
|
|
||||||
delete Augmentations[AugmentationNames.NeuronalDensification];
|
delete Augmentations[AugmentationNames.NeuronalDensification];
|
||||||
}
|
}
|
||||||
AddToAugmentations(NeuronalDensification);
|
AddToAugmentations(NeuronalDensification);
|
||||||
@ -762,7 +726,6 @@ initAugmentations = function() {
|
|||||||
NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
|
NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
|
||||||
"Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
|
"Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
|
||||||
if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
|
if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
|
||||||
NuoptimalInjectorImplant.owned = Augmentations[AugmentationNames.NuoptimalInjectorImplant].owned;
|
|
||||||
delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
|
delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
|
||||||
}
|
}
|
||||||
AddToAugmentations(NuoptimalInjectorImplant);
|
AddToAugmentations(NuoptimalInjectorImplant);
|
||||||
@ -778,7 +741,6 @@ initAugmentations = function() {
|
|||||||
SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
|
SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
|
||||||
"Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
|
"Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
|
||||||
if (augmentationExists(AugmentationNames.SpeechEnhancement)) {
|
if (augmentationExists(AugmentationNames.SpeechEnhancement)) {
|
||||||
SpeechEnhancement.owned = Augmentations[AugmentationNames.SpeechEnhancement].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SpeechEnhancement];
|
delete Augmentations[AugmentationNames.SpeechEnhancement];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SpeechEnhancement);
|
AddToAugmentations(SpeechEnhancement);
|
||||||
@ -793,7 +755,6 @@ initAugmentations = function() {
|
|||||||
"Increases the amount of reputation the player gains when working for a company by 10%");
|
"Increases the amount of reputation the player gains when working for a company by 10%");
|
||||||
FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
|
FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
|
||||||
if (augmentationExists(AugmentationNames.FocusWire)) {
|
if (augmentationExists(AugmentationNames.FocusWire)) {
|
||||||
FocusWire.owned = Augmentations[AugmentationNames.FocusWire].owned;
|
|
||||||
delete Augmentations[AugmentationNames.FocusWire];
|
delete Augmentations[AugmentationNames.FocusWire];
|
||||||
}
|
}
|
||||||
AddToAugmentations(FocusWire)
|
AddToAugmentations(FocusWire)
|
||||||
@ -808,7 +769,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking skill by 8%");
|
"Increases the player's hacking skill by 8%");
|
||||||
PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
|
PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.PCDNI)) {
|
if (augmentationExists(AugmentationNames.PCDNI)) {
|
||||||
PCDNI.owned = Augmentations[AugmentationNames.PCDNI].owned;
|
|
||||||
delete Augmentations[AugmentationNames.PCDNI];
|
delete Augmentations[AugmentationNames.PCDNI];
|
||||||
}
|
}
|
||||||
AddToAugmentations(PCDNI);
|
AddToAugmentations(PCDNI);
|
||||||
@ -823,7 +783,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking skill by 10%");
|
"Increases the player's hacking skill by 10%");
|
||||||
PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
|
PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.PCDNIOptimizer)) {
|
if (augmentationExists(AugmentationNames.PCDNIOptimizer)) {
|
||||||
PCDNIOptimizer.owned = Augmentations[AugmentationNames.PCDNIOptimizer].owned;
|
|
||||||
delete Augmentations[AugmentationNames.PCDNIOptimizer];
|
delete Augmentations[AugmentationNames.PCDNIOptimizer];
|
||||||
}
|
}
|
||||||
AddToAugmentations(PCDNIOptimizer);
|
AddToAugmentations(PCDNIOptimizer);
|
||||||
@ -840,7 +799,6 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking speed by 5%");
|
"Increases the player's hacking speed by 5%");
|
||||||
PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
|
PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
|
||||||
if (augmentationExists(AugmentationNames.PCDNINeuralNetwork)) {
|
if (augmentationExists(AugmentationNames.PCDNINeuralNetwork)) {
|
||||||
PCDNINeuralNetwork.owned = Augmentations[AugmentationNames.PCDNINeuralNetwork].owned;
|
|
||||||
delete Augmentations[AugmentationNames.PCDNINeuralNetwork];
|
delete Augmentations[AugmentationNames.PCDNINeuralNetwork];
|
||||||
}
|
}
|
||||||
AddToAugmentations(PCDNINeuralNetwork);
|
AddToAugmentations(PCDNINeuralNetwork);
|
||||||
@ -855,7 +813,6 @@ initAugmentations = function() {
|
|||||||
"Increases the amount of reputation the player gains for a faction by 10%");
|
"Increases the amount of reputation the player gains for a faction by 10%");
|
||||||
ADRPheromone1.addToFactions(["Tian Di Hui", "The Syndicate", "NWO", "MegaCorp", "Four Sigma"]);
|
ADRPheromone1.addToFactions(["Tian Di Hui", "The Syndicate", "NWO", "MegaCorp", "Four Sigma"]);
|
||||||
if (augmentationExists(AugmentationNames.ADRPheromone1)) {
|
if (augmentationExists(AugmentationNames.ADRPheromone1)) {
|
||||||
ADRPheromone1.owned = Augmentations[AugmentationNames.ADRPheromone1].owned;
|
|
||||||
delete Augmentations[AugmentationNames.ADRPheromone1];
|
delete Augmentations[AugmentationNames.ADRPheromone1];
|
||||||
}
|
}
|
||||||
AddToAugmentations(ADRPheromone1);
|
AddToAugmentations(ADRPheromone1);
|
||||||
@ -868,10 +825,9 @@ initAugmentations = function() {
|
|||||||
"for the Hacknet Node that provides better performance.<br><br>" +
|
"for the Hacknet Node that provides better performance.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the amount of money produced by Hacknet Nodes by 15%<br>" +
|
"Increases the amount of money produced by Hacknet Nodes by 15%<br>" +
|
||||||
"Decreases the cost of purchasing a Hacknet Node Core by 15%");
|
"Decreases the cost of purchasing a Hacknet Node by 15%");
|
||||||
HacknetNodeCPUUpload.addToFactions(["Netburners"]);
|
HacknetNodeCPUUpload.addToFactions(["Netburners"]);
|
||||||
if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
|
if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
|
||||||
HacknetNodeCPUUpload.owned = Augmentations[AugmentationNames.HacknetNodeCPUUpload].owned;
|
|
||||||
delete Augmentations[AugmentationNames.HacknetNodeCPUUpload];
|
delete Augmentations[AugmentationNames.HacknetNodeCPUUpload];
|
||||||
}
|
}
|
||||||
AddToAugmentations(HacknetNodeCPUUpload);
|
AddToAugmentations(HacknetNodeCPUUpload);
|
||||||
@ -886,7 +842,6 @@ initAugmentations = function() {
|
|||||||
"Decreases the cost of leveling up a Hacknet Node by 15%");
|
"Decreases the cost of leveling up a Hacknet Node by 15%");
|
||||||
HacknetNodeCacheUpload.addToFactions(["Netburners"]);
|
HacknetNodeCacheUpload.addToFactions(["Netburners"]);
|
||||||
if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
|
if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
|
||||||
HacknetNodeCacheUpload.owned = Augmentations[AugmentationNames.HacknetNodeCacheUpload].owned;
|
|
||||||
delete Augmentations[AugmentationNames.HacknetNodeCacheUpload];
|
delete Augmentations[AugmentationNames.HacknetNodeCacheUpload];
|
||||||
}
|
}
|
||||||
AddToAugmentations(HacknetNodeCacheUpload);
|
AddToAugmentations(HacknetNodeCacheUpload);
|
||||||
@ -901,7 +856,6 @@ initAugmentations = function() {
|
|||||||
"Decreases the cost of purchasing a Hacknet Node by 10%");
|
"Decreases the cost of purchasing a Hacknet Node by 10%");
|
||||||
HacknetNodeNICUpload.addToFactions(["Netburners"]);
|
HacknetNodeNICUpload.addToFactions(["Netburners"]);
|
||||||
if (augmentationExists(AugmentationNames.HacknetNodeNICUpload)) {
|
if (augmentationExists(AugmentationNames.HacknetNodeNICUpload)) {
|
||||||
HacknetNodeNICUpload.owned = Augmentations[AugmentationNames.HacknetNodeNICUpload].owned;
|
|
||||||
delete Augmentations[AugmentationNames.HacknetNodeNICUpload];
|
delete Augmentations[AugmentationNames.HacknetNodeNICUpload];
|
||||||
}
|
}
|
||||||
AddToAugmentations(HacknetNodeNICUpload);
|
AddToAugmentations(HacknetNodeNICUpload);
|
||||||
@ -914,7 +868,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the amount of money produced by Hacknet Nodes by 25%.");
|
"This augmentation increases the amount of money produced by Hacknet Nodes by 25%.");
|
||||||
HacknetNodeKernelDNI.addToFactions(["Netburners"]);
|
HacknetNodeKernelDNI.addToFactions(["Netburners"]);
|
||||||
if (augmentationExists(AugmentationNames.HacknetNodeKernelDNI)) {
|
if (augmentationExists(AugmentationNames.HacknetNodeKernelDNI)) {
|
||||||
HacknetNodeKernelDNI.owned = Augmentations[AugmentationNames.HacknetNodeKernelDNI].owned;
|
|
||||||
delete Augmentations[AugmentationNames.HacknetNodeKernelDNI];
|
delete Augmentations[AugmentationNames.HacknetNodeKernelDNI];
|
||||||
}
|
}
|
||||||
AddToAugmentations(HacknetNodeKernelDNI);
|
AddToAugmentations(HacknetNodeKernelDNI);
|
||||||
@ -927,7 +880,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the amount of money produced by Hacknet Nodes by 45%.");
|
"This augmentation increases the amount of money produced by Hacknet Nodes by 45%.");
|
||||||
HacknetNodeCoreDNI.addToFactions(["Netburners"]);
|
HacknetNodeCoreDNI.addToFactions(["Netburners"]);
|
||||||
if (augmentationExists(AugmentationNames.HacknetNodeCoreDNI)) {
|
if (augmentationExists(AugmentationNames.HacknetNodeCoreDNI)) {
|
||||||
HacknetNodeCoreDNI.owned = Augmentations[AugmentationNames.HacknetNodeCoreDNI].owned;
|
|
||||||
delete Augmentations[AugmentationNames.HacknetNodeCoreDNI];
|
delete Augmentations[AugmentationNames.HacknetNodeCoreDNI];
|
||||||
}
|
}
|
||||||
AddToAugmentations(HacknetNodeCoreDNI);
|
AddToAugmentations(HacknetNodeCoreDNI);
|
||||||
@ -935,14 +887,16 @@ initAugmentations = function() {
|
|||||||
//Misc/Hybrid augmentations
|
//Misc/Hybrid augmentations
|
||||||
var NeuroFluxGovernor = new Augmentation(AugmentationNames.NeuroFluxGovernor);
|
var NeuroFluxGovernor = new Augmentation(AugmentationNames.NeuroFluxGovernor);
|
||||||
if (augmentationExists(AugmentationNames.NeuroFluxGovernor)) {
|
if (augmentationExists(AugmentationNames.NeuroFluxGovernor)) {
|
||||||
var oldAug = Augmentations[AugmentationNames.NeuroFluxGovernor];
|
var nextLevel = getNextNeurofluxLevel();
|
||||||
NeuroFluxGovernor.owned = oldAug.owned;
|
NeuroFluxGovernor.level = nextLevel - 1;
|
||||||
NeuroFluxGovernor.level = oldAug.level;
|
|
||||||
mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
|
mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
|
||||||
NeuroFluxGovernor.setRequirements(500 * mult, 750000 * mult);
|
NeuroFluxGovernor.setRequirements(500 * mult, 750000 * mult);
|
||||||
delete Augmentations[AugmentationNames.NeuroFluxGovernor];
|
delete Augmentations[AugmentationNames.NeuroFluxGovernor];
|
||||||
} else {
|
} else {
|
||||||
NeuroFluxGovernor.setRequirements(250, 500000);
|
var nextLevel = getNextNeurofluxLevel();
|
||||||
|
NeuroFluxGovernor.level = nextLevel - 1;
|
||||||
|
mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
|
||||||
|
NeuroFluxGovernor.setRequirements(500 * mult, 750000 * mult);
|
||||||
}
|
}
|
||||||
NeuroFluxGovernor.setInfo("A device that is embedded in the back of the neck. The NeuroFlux Governor " +
|
NeuroFluxGovernor.setInfo("A device that is embedded in the back of the neck. The NeuroFlux Governor " +
|
||||||
"monitors and regulates nervous impulses coming to and from the spinal column, " +
|
"monitors and regulates nervous impulses coming to and from the spinal column, " +
|
||||||
@ -962,7 +916,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's experience gain rate for all stats by 10%");
|
"This augmentation increases the player's experience gain rate for all stats by 10%");
|
||||||
Neurotrainer1.addToFactions(["CyberSec"]);
|
Neurotrainer1.addToFactions(["CyberSec"]);
|
||||||
if (augmentationExists(AugmentationNames.Neurotrainer1)) {
|
if (augmentationExists(AugmentationNames.Neurotrainer1)) {
|
||||||
Neurotrainer1.owned = Augmentations[AugmentationNames.Neurotrainer1].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Neurotrainer1];
|
delete Augmentations[AugmentationNames.Neurotrainer1];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Neurotrainer1);
|
AddToAugmentations(Neurotrainer1);
|
||||||
@ -975,7 +928,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's experience gain rate for all stats by 15%");
|
"This augmentation increases the player's experience gain rate for all stats by 15%");
|
||||||
Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
|
Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.Neurotrainer2)) {
|
if (augmentationExists(AugmentationNames.Neurotrainer2)) {
|
||||||
Neurotrainer2.owned = Augmentations[AugmentationNames.Neurotrainer2].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Neurotrainer2];
|
delete Augmentations[AugmentationNames.Neurotrainer2];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Neurotrainer2);
|
AddToAugmentations(Neurotrainer2);
|
||||||
@ -988,7 +940,6 @@ initAugmentations = function() {
|
|||||||
"This augmentation increases the player's experience gain rate for all stats by 20%");
|
"This augmentation increases the player's experience gain rate for all stats by 20%");
|
||||||
Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
|
Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
|
||||||
if (augmentationExists(AugmentationNames.Neurotrainer3)) {
|
if (augmentationExists(AugmentationNames.Neurotrainer3)) {
|
||||||
Neurotrainer3.owned = Augmentations[AugmentationNames.Neurotrainer3].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Neurotrainer3];
|
delete Augmentations[AugmentationNames.Neurotrainer3];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Neurotrainer3);
|
AddToAugmentations(Neurotrainer3);
|
||||||
@ -1004,7 +955,6 @@ initAugmentations = function() {
|
|||||||
Hypersight.setRequirements(60000, 550000000);
|
Hypersight.setRequirements(60000, 550000000);
|
||||||
Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
|
Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
|
||||||
if (augmentationExists(AugmentationNames.Hypersight)) {
|
if (augmentationExists(AugmentationNames.Hypersight)) {
|
||||||
Hypersight.owned = Augmentations[AugmentationNames.Hypersight].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Hypersight];
|
delete Augmentations[AugmentationNames.Hypersight];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Hypersight);
|
AddToAugmentations(Hypersight);
|
||||||
@ -1019,7 +969,6 @@ initAugmentations = function() {
|
|||||||
LuminCloaking1.setRequirements(600, 1000000);
|
LuminCloaking1.setRequirements(600, 1000000);
|
||||||
LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
|
LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
|
||||||
if (augmentationExists(AugmentationNames.LuminCloaking1)) {
|
if (augmentationExists(AugmentationNames.LuminCloaking1)) {
|
||||||
LuminCloaking1.owned = Augmentations[AugmentationNames.LuminCloaking1].owned;
|
|
||||||
delete Augmentations[AugmentationNames.LuminCloaking1];
|
delete Augmentations[AugmentationNames.LuminCloaking1];
|
||||||
}
|
}
|
||||||
AddToAugmentations(LuminCloaking1);
|
AddToAugmentations(LuminCloaking1);
|
||||||
@ -1036,7 +985,6 @@ initAugmentations = function() {
|
|||||||
LuminCloaking2.setRequirements(2000, 5000000);
|
LuminCloaking2.setRequirements(2000, 5000000);
|
||||||
LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
|
LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
|
||||||
if (augmentationExists(AugmentationNames.LuminCloaking2)) {
|
if (augmentationExists(AugmentationNames.LuminCloaking2)) {
|
||||||
LuminCloaking2.owned = Augmentations[AugmentationNames.LuminCloaking2].owned;
|
|
||||||
delete Augmentations[AugmentationNames.LuminCloaking2];
|
delete Augmentations[AugmentationNames.LuminCloaking2];
|
||||||
}
|
}
|
||||||
AddToAugmentations(LuminCloaking2);
|
AddToAugmentations(LuminCloaking2);
|
||||||
@ -1051,7 +999,6 @@ initAugmentations = function() {
|
|||||||
SmartSonar.setRequirements(9000, 12000000);
|
SmartSonar.setRequirements(9000, 12000000);
|
||||||
SmartSonar.addToFactions(["Slum Snakes"]);
|
SmartSonar.addToFactions(["Slum Snakes"]);
|
||||||
if (augmentationExists(AugmentationNames.SmartSonar)) {
|
if (augmentationExists(AugmentationNames.SmartSonar)) {
|
||||||
SmartSonar.owned = Augmentations[AugmentationNames.SmartSonar].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SmartSonar];
|
delete Augmentations[AugmentationNames.SmartSonar];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SmartSonar);
|
AddToAugmentations(SmartSonar);
|
||||||
@ -1066,7 +1013,6 @@ initAugmentations = function() {
|
|||||||
PowerRecirculator.setRequirements(10000, 33000000);
|
PowerRecirculator.setRequirements(10000, 33000000);
|
||||||
PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
|
PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
|
||||||
if (augmentationExists(AugmentationNames.PowerRecirculator)) {
|
if (augmentationExists(AugmentationNames.PowerRecirculator)) {
|
||||||
PowerRecirculator.owned = Augmentations[AugmentationNames.PowerRecirculator].owned;
|
|
||||||
delete Augmentations[AugmentationNames.PowerRecirculator];
|
delete Augmentations[AugmentationNames.PowerRecirculator];
|
||||||
}
|
}
|
||||||
AddToAugmentations(PowerRecirculator);
|
AddToAugmentations(PowerRecirculator);
|
||||||
@ -1088,7 +1034,6 @@ initAugmentations = function() {
|
|||||||
QLink.setRequirements(750000, 1200000000);
|
QLink.setRequirements(750000, 1200000000);
|
||||||
QLink.addToFactions(["Illuminati"]);
|
QLink.addToFactions(["Illuminati"]);
|
||||||
if (augmentationExists(AugmentationNames.QLink)) {
|
if (augmentationExists(AugmentationNames.QLink)) {
|
||||||
QLink.owned = Augmentations[AugmentationNames.QLink].owned;
|
|
||||||
delete Augmentations[AugmentationNames.QLink];
|
delete Augmentations[AugmentationNames.QLink];
|
||||||
}
|
}
|
||||||
AddToAugmentations(QLink);
|
AddToAugmentations(QLink);
|
||||||
@ -1108,7 +1053,6 @@ initAugmentations = function() {
|
|||||||
SPTN97.setRequirements(500000, 950000000);
|
SPTN97.setRequirements(500000, 950000000);
|
||||||
SPTN97.addToFactions(["The Covenant"]);
|
SPTN97.addToFactions(["The Covenant"]);
|
||||||
if (augmentationExists(AugmentationNames.SPTN97)) {
|
if (augmentationExists(AugmentationNames.SPTN97)) {
|
||||||
SPTN97.owned = Augmentations[AugmentationNames.SPTN97].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SPTN97];
|
delete Augmentations[AugmentationNames.SPTN97];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SPTN97);
|
AddToAugmentations(SPTN97);
|
||||||
@ -1121,7 +1065,6 @@ initAugmentations = function() {
|
|||||||
HiveMind.setRequirements(600000, 1000000000);
|
HiveMind.setRequirements(600000, 1000000000);
|
||||||
HiveMind.addToFactions(["ECorp"]);
|
HiveMind.addToFactions(["ECorp"]);
|
||||||
if (augmentationExists(AugmentationNames.HiveMind)) {
|
if (augmentationExists(AugmentationNames.HiveMind)) {
|
||||||
HiveMind.owned = Augmentations[AugmentationNames.HiveMind].owned;
|
|
||||||
delete Augmentations[AugmentationNames.HiveMind];
|
delete Augmentations[AugmentationNames.HiveMind];
|
||||||
}
|
}
|
||||||
AddToAugmentations(HiveMind);
|
AddToAugmentations(HiveMind);
|
||||||
@ -1138,7 +1081,6 @@ initAugmentations = function() {
|
|||||||
CordiARCReactor.setRequirements(450000, 975000000);
|
CordiARCReactor.setRequirements(450000, 975000000);
|
||||||
CordiARCReactor.addToFactions(["MegaCorp"]);
|
CordiARCReactor.addToFactions(["MegaCorp"]);
|
||||||
if (augmentationExists(AugmentationNames.CordiARCReactor)) {
|
if (augmentationExists(AugmentationNames.CordiARCReactor)) {
|
||||||
CordiARCReactor.owned = Augmentations[AugmentationNames.CordiARCReactor].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CordiARCReactor];
|
delete Augmentations[AugmentationNames.CordiARCReactor];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CordiARCReactor);
|
AddToAugmentations(CordiARCReactor);
|
||||||
@ -1156,7 +1098,6 @@ initAugmentations = function() {
|
|||||||
SmartJaw.setRequirements(150000, 500000000);
|
SmartJaw.setRequirements(150000, 500000000);
|
||||||
SmartJaw.addToFactions(["Bachman & Associates"]);
|
SmartJaw.addToFactions(["Bachman & Associates"]);
|
||||||
if (augmentationExists(AugmentationNames.SmartJaw)) {
|
if (augmentationExists(AugmentationNames.SmartJaw)) {
|
||||||
SmartJaw.owned = Augmentations[AugmentationNames.SmartJaw].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SmartJaw];
|
delete Augmentations[AugmentationNames.SmartJaw];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SmartJaw);
|
AddToAugmentations(SmartJaw);
|
||||||
@ -1171,7 +1112,6 @@ initAugmentations = function() {
|
|||||||
Neotra.setRequirements(225000, 550000000);
|
Neotra.setRequirements(225000, 550000000);
|
||||||
Neotra.addToFactions(["Blade Industries"]);
|
Neotra.addToFactions(["Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.Neotra)) {
|
if (augmentationExists(AugmentationNames.Neotra)) {
|
||||||
Neotra.owned = Augmentations[AugmentationNames.Neotra].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Neotra];
|
delete Augmentations[AugmentationNames.Neotra];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Neotra);
|
AddToAugmentations(Neotra);
|
||||||
@ -1187,7 +1127,6 @@ initAugmentations = function() {
|
|||||||
Xanipher.setRequirements(350000, 800000000);
|
Xanipher.setRequirements(350000, 800000000);
|
||||||
Xanipher.addToFactions(["NWO"]);
|
Xanipher.addToFactions(["NWO"]);
|
||||||
if (augmentationExists(AugmentationNames.Xanipher)) {
|
if (augmentationExists(AugmentationNames.Xanipher)) {
|
||||||
Xanipher.owned = Augmentations[AugmentationNames.Xanipher].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Xanipher];
|
delete Augmentations[AugmentationNames.Xanipher];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Xanipher);
|
AddToAugmentations(Xanipher);
|
||||||
@ -1201,7 +1140,6 @@ initAugmentations = function() {
|
|||||||
nextSENS.setRequirements(175000, 375000000);
|
nextSENS.setRequirements(175000, 375000000);
|
||||||
nextSENS.addToFactions(["Clarke Incorporated"]);
|
nextSENS.addToFactions(["Clarke Incorporated"]);
|
||||||
if (augmentationExists(AugmentationNames.nextSENS)) {
|
if (augmentationExists(AugmentationNames.nextSENS)) {
|
||||||
nextSENS.owned = Augmentations[AugmentationNames.nextSENS].owned;
|
|
||||||
delete Augmentations[AugmentationNames.nextSENS];
|
delete Augmentations[AugmentationNames.nextSENS];
|
||||||
}
|
}
|
||||||
AddToAugmentations(nextSENS);
|
AddToAugmentations(nextSENS);
|
||||||
@ -1217,7 +1155,6 @@ initAugmentations = function() {
|
|||||||
OmniTekInfoLoad.setRequirements(250000, 550000000)
|
OmniTekInfoLoad.setRequirements(250000, 550000000)
|
||||||
OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
|
OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
|
||||||
if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
|
if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
|
||||||
OmniTekInfoLoad.owned = Augmentations[AugmentationNames.OmniTekInfoLoad].owned;
|
|
||||||
delete Augmentations[AugmentationNames.OmniTekInfoLoad];
|
delete Augmentations[AugmentationNames.OmniTekInfoLoad];
|
||||||
}
|
}
|
||||||
AddToAugmentations(OmniTekInfoLoad);
|
AddToAugmentations(OmniTekInfoLoad);
|
||||||
@ -1235,7 +1172,6 @@ initAugmentations = function() {
|
|||||||
PhotosyntheticCells.setRequirements(225000, 525000000);
|
PhotosyntheticCells.setRequirements(225000, 525000000);
|
||||||
PhotosyntheticCells.addToFactions(["KuaiGong International"]);
|
PhotosyntheticCells.addToFactions(["KuaiGong International"]);
|
||||||
if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
|
if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
|
||||||
PhotosyntheticCells.owned = Augmentations[AugmentationNames.PhotosyntheticCells].owned;
|
|
||||||
delete Augmentations[AugmentationNames.PhotosyntheticCells];
|
delete Augmentations[AugmentationNames.PhotosyntheticCells];
|
||||||
}
|
}
|
||||||
AddToAugmentations(PhotosyntheticCells);
|
AddToAugmentations(PhotosyntheticCells);
|
||||||
@ -1254,7 +1190,6 @@ initAugmentations = function() {
|
|||||||
Neurolink.setRequirements(350000, 850000000);
|
Neurolink.setRequirements(350000, 850000000);
|
||||||
Neurolink.addToFactions(["BitRunners"]);
|
Neurolink.addToFactions(["BitRunners"]);
|
||||||
if (augmentationExists(AugmentationNames.Neurolink)) {
|
if (augmentationExists(AugmentationNames.Neurolink)) {
|
||||||
Neurolink.owned = Augmentations[AugmentationNames.Neurolink].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Neurolink];
|
delete Augmentations[AugmentationNames.Neurolink];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Neurolink);
|
AddToAugmentations(Neurolink);
|
||||||
@ -1273,7 +1208,6 @@ initAugmentations = function() {
|
|||||||
TheBlackHand.setRequirements(40000, 100000000);
|
TheBlackHand.setRequirements(40000, 100000000);
|
||||||
TheBlackHand.addToFactions(["The Black Hand"]);
|
TheBlackHand.addToFactions(["The Black Hand"]);
|
||||||
if (augmentationExists(AugmentationNames.TheBlackHand)) {
|
if (augmentationExists(AugmentationNames.TheBlackHand)) {
|
||||||
TheBlackHand.owned = Augmentations[AugmentationNames.TheBlackHand].owned;
|
|
||||||
delete Augmentations[AugmentationNames.TheBlackHand];
|
delete Augmentations[AugmentationNames.TheBlackHand];
|
||||||
}
|
}
|
||||||
AddToAugmentations(TheBlackHand);
|
AddToAugmentations(TheBlackHand);
|
||||||
@ -1289,7 +1223,6 @@ initAugmentations = function() {
|
|||||||
CRTX42AA.setRequirements(18000, 45000000);
|
CRTX42AA.setRequirements(18000, 45000000);
|
||||||
CRTX42AA.addToFactions(["NiteSec"]);
|
CRTX42AA.addToFactions(["NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.CRTX42AA)) {
|
if (augmentationExists(AugmentationNames.CRTX42AA)) {
|
||||||
CRTX42AA.owned = Augmentations[AugmentationNames.CRTX42AA].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CRTX42AA];
|
delete Augmentations[AugmentationNames.CRTX42AA];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CRTX42AA);
|
AddToAugmentations(CRTX42AA);
|
||||||
@ -1303,7 +1236,6 @@ initAugmentations = function() {
|
|||||||
Neuregen.setRequirements(15000, 75000000);
|
Neuregen.setRequirements(15000, 75000000);
|
||||||
Neuregen.addToFactions(["Chongqing"]);
|
Neuregen.addToFactions(["Chongqing"]);
|
||||||
if (augmentationExists(AugmentationNames.Neuregen)) {
|
if (augmentationExists(AugmentationNames.Neuregen)) {
|
||||||
Neuregen.owned = Augmentations[AugmentationNames.Neuregen].owned;
|
|
||||||
delete Augmentations[AugmentationNames.Neuregen];
|
delete Augmentations[AugmentationNames.Neuregen];
|
||||||
}
|
}
|
||||||
AddToAugmentations(Neuregen);
|
AddToAugmentations(Neuregen);
|
||||||
@ -1319,7 +1251,6 @@ initAugmentations = function() {
|
|||||||
CashRoot.setRequirements(5000, 25000000);
|
CashRoot.setRequirements(5000, 25000000);
|
||||||
CashRoot.addToFactions(["Sector-12"]);
|
CashRoot.addToFactions(["Sector-12"]);
|
||||||
if (augmentationExists(AugmentationNames.CashRoot)) {
|
if (augmentationExists(AugmentationNames.CashRoot)) {
|
||||||
CashRoot.owned = Augmentations[AugmentationNames.CashRoot].owned;
|
|
||||||
delete Augmentations[AugmentationNames.CashRoot];
|
delete Augmentations[AugmentationNames.CashRoot];
|
||||||
}
|
}
|
||||||
AddToAugmentations(CashRoot);
|
AddToAugmentations(CashRoot);
|
||||||
@ -1335,7 +1266,6 @@ initAugmentations = function() {
|
|||||||
NutriGen.setRequirements(2500, 500000);
|
NutriGen.setRequirements(2500, 500000);
|
||||||
NutriGen.addToFactions(["New Tokyo"]);
|
NutriGen.addToFactions(["New Tokyo"]);
|
||||||
if (augmentationExists(AugmentationNames.NutriGen)) {
|
if (augmentationExists(AugmentationNames.NutriGen)) {
|
||||||
NutriGen.owned = Augmentations[AugmentationNames.NutriGen].owned;
|
|
||||||
delete Augmentations[AugmentationNames.NutriGen];
|
delete Augmentations[AugmentationNames.NutriGen];
|
||||||
}
|
}
|
||||||
AddToAugmentations(NutriGen);
|
AddToAugmentations(NutriGen);
|
||||||
@ -1355,7 +1285,6 @@ initAugmentations = function() {
|
|||||||
INFRARet.setRequirements(3000, 6000000);
|
INFRARet.setRequirements(3000, 6000000);
|
||||||
INFRARet.addToFactions(["Ishima"]);
|
INFRARet.addToFactions(["Ishima"]);
|
||||||
if (augmentationExists(AugmentationNames.INFRARet)) {
|
if (augmentationExists(AugmentationNames.INFRARet)) {
|
||||||
INFRARet.owned = Augmentations[AugmentationNames.INFRARet].owned;
|
|
||||||
delete Augmentations[AugmentationNames.INFRARet];
|
delete Augmentations[AugmentationNames.INFRARet];
|
||||||
}
|
}
|
||||||
AddToAugmentations(INFRARet);
|
AddToAugmentations(INFRARet);
|
||||||
@ -1369,7 +1298,6 @@ initAugmentations = function() {
|
|||||||
DermaForce.setRequirements(6000, 10000000);
|
DermaForce.setRequirements(6000, 10000000);
|
||||||
DermaForce.addToFactions(["Volhaven"]);
|
DermaForce.addToFactions(["Volhaven"]);
|
||||||
if (augmentationExists(AugmentationNames.DermaForce)) {
|
if (augmentationExists(AugmentationNames.DermaForce)) {
|
||||||
DermaForce.owned = Augmentations[AugmentationNames.DermaForce].owned;
|
|
||||||
delete Augmentations[AugmentationNames.DermaForce];
|
delete Augmentations[AugmentationNames.DermaForce];
|
||||||
}
|
}
|
||||||
AddToAugmentations(DermaForce);
|
AddToAugmentations(DermaForce);
|
||||||
@ -1386,7 +1314,6 @@ initAugmentations = function() {
|
|||||||
GrapheneBrachiBlades.setRequirements(90000, 500000000);
|
GrapheneBrachiBlades.setRequirements(90000, 500000000);
|
||||||
GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
|
GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
|
||||||
if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
|
if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
|
||||||
GrapheneBrachiBlades.owned = Augmentations[AugmentationNames.GrapheneBrachiBlades].owned;
|
|
||||||
delete Augmentations[AugmentationNames.GrapheneBrachiBlades];
|
delete Augmentations[AugmentationNames.GrapheneBrachiBlades];
|
||||||
}
|
}
|
||||||
AddToAugmentations(GrapheneBrachiBlades);
|
AddToAugmentations(GrapheneBrachiBlades);
|
||||||
@ -1400,7 +1327,6 @@ initAugmentations = function() {
|
|||||||
GrapheneBionicArms.setRequirements(200000, 750000000);
|
GrapheneBionicArms.setRequirements(200000, 750000000);
|
||||||
GrapheneBionicArms.addToFactions(["The Dark Army"]);
|
GrapheneBionicArms.addToFactions(["The Dark Army"]);
|
||||||
if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
|
if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
|
||||||
GrapheneBionicArms.owned = Augmentations[AugmentationNames.GrapheneBionicArms].owned;
|
|
||||||
delete Augmentations[AugmentationNames.GrapheneBionicArms];
|
delete Augmentations[AugmentationNames.GrapheneBionicArms];
|
||||||
}
|
}
|
||||||
AddToAugmentations(GrapheneBionicArms);
|
AddToAugmentations(GrapheneBionicArms);
|
||||||
@ -1415,7 +1341,6 @@ initAugmentations = function() {
|
|||||||
BrachiBlades.setRequirements(5000, 18000000);
|
BrachiBlades.setRequirements(5000, 18000000);
|
||||||
BrachiBlades.addToFactions(["The Syndicate"]);
|
BrachiBlades.addToFactions(["The Syndicate"]);
|
||||||
if (augmentationExists(AugmentationNames.BrachiBlades)) {
|
if (augmentationExists(AugmentationNames.BrachiBlades)) {
|
||||||
BrachiBlades.owned = Augmentations[AugmentationNames.BrachiBlades].owned;
|
|
||||||
delete Augmentations[AugmentationNames.BrachiBlades];
|
delete Augmentations[AugmentationNames.BrachiBlades];
|
||||||
}
|
}
|
||||||
AddToAugmentations(BrachiBlades);
|
AddToAugmentations(BrachiBlades);
|
||||||
@ -1428,7 +1353,6 @@ initAugmentations = function() {
|
|||||||
BionicArms.setRequirements(25000, 55000000);
|
BionicArms.setRequirements(25000, 55000000);
|
||||||
BionicArms.addToFactions(["Tetrads"]);
|
BionicArms.addToFactions(["Tetrads"]);
|
||||||
if (augmentationExists(AugmentationNames.BionicArms)) {
|
if (augmentationExists(AugmentationNames.BionicArms)) {
|
||||||
BionicArms.owned = Augmentations[AugmentationNames.BionicArms].owned;
|
|
||||||
delete Augmentations[AugmentationNames.BionicArms];
|
delete Augmentations[AugmentationNames.BionicArms];
|
||||||
}
|
}
|
||||||
AddToAugmentations(BionicArms);
|
AddToAugmentations(BionicArms);
|
||||||
@ -1444,18 +1368,21 @@ initAugmentations = function() {
|
|||||||
SNA.setRequirements(2500, 6000000);
|
SNA.setRequirements(2500, 6000000);
|
||||||
SNA.addToFactions(["Tian Di Hui"]);
|
SNA.addToFactions(["Tian Di Hui"]);
|
||||||
if (augmentationExists(AugmentationNames.SNA)) {
|
if (augmentationExists(AugmentationNames.SNA)) {
|
||||||
SNA.owned = Augmentations[AugmentationNames.SNA].owned;
|
|
||||||
delete Augmentations[AugmentationNames.SNA];
|
delete Augmentations[AugmentationNames.SNA];
|
||||||
}
|
}
|
||||||
AddToAugmentations(SNA);
|
AddToAugmentations(SNA);
|
||||||
|
|
||||||
|
//Update costs based on how many have been purchased
|
||||||
|
var mult = Math.pow(CONSTANTS.MultipleAugMultiplier, Player.queuedAugmentations.length);
|
||||||
|
for (var name in Augmentations) {
|
||||||
|
if (Augmentations.hasOwnProperty(name)) {
|
||||||
|
Augmentations[name].baseCost *= mult;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
applyAugmentation = function(aug, reapply=false) {
|
applyAugmentation = function(aug, reapply=false) {
|
||||||
if (reapply == false && aug.name != AugmentationNames.NeuroFluxGovernor && aug.owned) {
|
Augmentations[aug.name].owned = true;
|
||||||
throw new Error("This Augmentation is already owned/applied...somethings wrong");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(aug.name) {
|
switch(aug.name) {
|
||||||
//Combat stat augmentations
|
//Combat stat augmentations
|
||||||
case AugmentationNames.Targeting1:
|
case AugmentationNames.Targeting1:
|
||||||
@ -1725,7 +1652,13 @@ applyAugmentation = function(aug, reapply=false) {
|
|||||||
Player.work_money_mult *= 1.01;
|
Player.work_money_mult *= 1.01;
|
||||||
|
|
||||||
if (!reapply) {
|
if (!reapply) {
|
||||||
++aug.level;
|
Augmentations[aug.name].level = aug.level;
|
||||||
|
for (var i = 0; i < Player.augmentations.length; ++i) {
|
||||||
|
if (Player.augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
|
Player.augmentations[i].level = aug.level;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AugmentationNames.Neurotrainer1: //Low Level
|
case AugmentationNames.Neurotrainer1: //Low Level
|
||||||
@ -1924,19 +1857,48 @@ applyAugmentation = function(aug, reapply=false) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
aug.owned = true;
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
if (aug.name == AugmentationNames.NeuroFluxGovernor &&
|
for (var i = 0; i < Player.augmentations.length; ++i) {
|
||||||
Player.augmentations.indexOf(AugmentationNames.NeuroFluxGovernor) != -1) {
|
if (Player.augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
//Already have this aug, just upgrade the level
|
//Already have this aug, just upgrade the level
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!reapply) {
|
if (!reapply) {
|
||||||
Player.augmentations.push(aug.name);
|
var ownedAug = new PlayerOwnedAugmentation(aug.name);
|
||||||
++Player.numAugmentations;
|
Player.augmentations.push(ownedAug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function PlayerOwnedAugmentation(name) {
|
||||||
|
this.name = name;
|
||||||
|
this.level = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function installAugmentations() {
|
||||||
|
if (Player.queuedAugmentations.length == 0) {
|
||||||
|
dialogBoxCreate("You have not purchased any Augmentations to install!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var augmentationList = "";
|
||||||
|
for (var i = 0; i < Player.queuedAugmentations.length; ++i) {
|
||||||
|
var aug = Augmentations[Player.queuedAugmentations[i].name];
|
||||||
|
if (aug == null) {
|
||||||
|
console.log("ERROR. Invalid augmentation");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
applyAugmentation(Player.queuedAugmentations[i]);
|
||||||
|
augmentationList += (aug.name + "<br>");
|
||||||
|
}
|
||||||
|
Player.queuedAugmentations = [];
|
||||||
|
dialogBoxCreate("You slowly drift to sleep as scientists put you under in order " +
|
||||||
|
"to install the following Augmentations:<br>" + augmentationList +
|
||||||
|
"<br>You wake up in your home...you feel different...");
|
||||||
|
prestigeAugmentation();
|
||||||
|
}
|
||||||
|
|
||||||
PlayerObject.prototype.reapplyAllAugmentations = function() {
|
PlayerObject.prototype.reapplyAllAugmentations = function() {
|
||||||
console.log("Re-applying augmentations");
|
console.log("Re-applying augmentations");
|
||||||
//Reset multipliers
|
//Reset multipliers
|
||||||
@ -1974,18 +1936,29 @@ PlayerObject.prototype.reapplyAllAugmentations = function() {
|
|||||||
this.work_money_mult = 1;
|
this.work_money_mult = 1;
|
||||||
|
|
||||||
for (i = 0; i < this.augmentations.length; ++i) {
|
for (i = 0; i < this.augmentations.length; ++i) {
|
||||||
var aug = Augmentations[this.augmentations[i]];
|
//Compatibility with new version
|
||||||
|
if (typeof this.augmentations[i] === 'string' || this.augmentations[i] instanceof String) {
|
||||||
|
var newOwnedAug = new PlayerOwnedAugmentation(this.augmentations[i]);
|
||||||
|
if (this.augmentations[i] == AugmentationNames.NeuroFluxGovernor) {
|
||||||
|
newOwnedAug.level = Augmentations[AugmentationNames.NeuroFluxGovernor].level;
|
||||||
|
}
|
||||||
|
this.augmentations[i] = newOwnedAug;
|
||||||
|
}
|
||||||
|
|
||||||
|
var augName = this.augmentations[i].name;
|
||||||
|
var aug = Augmentations[augName];
|
||||||
|
aug.owned = true;
|
||||||
if (aug == null) {
|
if (aug == null) {
|
||||||
console.log("WARNING: Invalid augmentation name");
|
console.log("WARNING: Invalid augmentation name");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
for (j = 0; j < aug.level; ++j) {
|
for (j = 0; j < aug.level; ++j) {
|
||||||
applyAugmentation(aug, true);
|
applyAugmentation(this.augmentations[i], true);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
applyAugmentation(aug, true);
|
applyAugmentation(this.augmentations[i], true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1998,7 +1971,8 @@ function giveAllAugmentations() {
|
|||||||
for (var name in Augmentations) {
|
for (var name in Augmentations) {
|
||||||
var aug = Augmentations[name];
|
var aug = Augmentations[name];
|
||||||
if (aug == null) {continue;}
|
if (aug == null) {continue;}
|
||||||
Player.augmentations.push(name);
|
var ownedAug = new PlayerOwnedAugmentation(name);
|
||||||
|
Player.augmentations.push(ownedAug);
|
||||||
}
|
}
|
||||||
Player.reapplyAllAugmentations();
|
Player.reapplyAllAugmentations();
|
||||||
}
|
}
|
@ -82,7 +82,7 @@ function CompanyPosition(name, reqHack, reqStr, reqDef, reqDex, reqAgi, reqCha,
|
|||||||
//
|
//
|
||||||
//NOTE: These parameters should total to 100, such that each parameter represents a "weighting" of how
|
//NOTE: These parameters should total to 100, such that each parameter represents a "weighting" of how
|
||||||
// important that stat/skill is for the job
|
// important that stat/skill is for the job
|
||||||
CompanyPosition.prototype.setPerformanceParameters = function(hackEff, strEff, defEff, dexEff, agiEff, chaEff) {
|
CompanyPosition.prototype.setPerformanceParameters = function(hackEff, strEff, defEff, dexEff, agiEff, chaEff, posMult=1) {
|
||||||
if (hackEff + strEff + defEff + dexEff + agiEff + chaEff != 100) {
|
if (hackEff + strEff + defEff + dexEff + agiEff + chaEff != 100) {
|
||||||
console.log("CompanyPosition.setPerformanceParameters() arguments do not total to 100");
|
console.log("CompanyPosition.setPerformanceParameters() arguments do not total to 100");
|
||||||
return;
|
return;
|
||||||
@ -93,6 +93,7 @@ CompanyPosition.prototype.setPerformanceParameters = function(hackEff, strEff, d
|
|||||||
this.dexterityEffectiveness = dexEff;
|
this.dexterityEffectiveness = dexEff;
|
||||||
this.agilityEffectiveness = agiEff;
|
this.agilityEffectiveness = agiEff;
|
||||||
this.charismaEffectiveness = chaEff;
|
this.charismaEffectiveness = chaEff;
|
||||||
|
this.positionMultiplier = posMult; //Reputation multiplier for this position
|
||||||
}
|
}
|
||||||
|
|
||||||
//Set the stat/skill experience a Player should gain for working at a CompanyPosition. The experience is per game loop (200 ms)
|
//Set the stat/skill experience a Player should gain for working at a CompanyPosition. The experience is per game loop (200 ms)
|
||||||
@ -115,7 +116,13 @@ CompanyPosition.prototype.calculateJobPerformance = function(hacking, str, def,
|
|||||||
var dexRatio = this.dexterityEffectiveness * dex / CONSTANTS.MaxSkillLevel;
|
var dexRatio = this.dexterityEffectiveness * dex / CONSTANTS.MaxSkillLevel;
|
||||||
var agiRatio = this.agilityEffectiveness * agi / CONSTANTS.MaxSkillLevel;
|
var agiRatio = this.agilityEffectiveness * agi / CONSTANTS.MaxSkillLevel;
|
||||||
var chaRatio = this.charismaEffectiveness * cha / CONSTANTS.MaxSkillLevel;
|
var chaRatio = this.charismaEffectiveness * cha / CONSTANTS.MaxSkillLevel;
|
||||||
return (hackRatio + strRatio + defRatio + dexRatio + agiRatio + chaRatio) / 100;
|
|
||||||
|
var reputationGain = this.positionMultiplier * (hackRatio + strRatio + defRatio + dexRatio + agiRatio + chaRatio) / 100;
|
||||||
|
if (isNaN(reputationGain)) {
|
||||||
|
console.log("ERROR: Code should not reach here");
|
||||||
|
reputationGain = (hackRatio + strRatio + defRatio + dexRatio + agiRatio + chaRatio) / 100;
|
||||||
|
}
|
||||||
|
return reputationGain;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompanyPosition.prototype.isSoftwareJob = function() {
|
CompanyPosition.prototype.isSoftwareJob = function() {
|
||||||
@ -278,63 +285,63 @@ CompanyPositions = {
|
|||||||
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);
|
CompanyPositions.SoftwareIntern.setPerformanceParameters(90, 0, 0, 0, 0, 10, 1);
|
||||||
CompanyPositions.SoftwareIntern.setExperienceGains(.1, 0, 0, 0, 0, .02);
|
CompanyPositions.SoftwareIntern.setExperienceGains(.1, 0, 0, 0, 0, .02);
|
||||||
CompanyPositions.JuniorDev.setPerformanceParameters(85, 0, 0, 0, 0, 15);
|
CompanyPositions.JuniorDev.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1);
|
||||||
CompanyPositions.JuniorDev.setExperienceGains(.2, 0, 0, 0, 0, .04);
|
CompanyPositions.JuniorDev.setExperienceGains(.2, 0, 0, 0, 0, .04);
|
||||||
CompanyPositions.SeniorDev.setPerformanceParameters(75, 0, 0, 0, 0, 25);
|
CompanyPositions.SeniorDev.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.2);
|
||||||
CompanyPositions.SeniorDev.setExperienceGains(.4, 0, 0, 0, 0, .08);
|
CompanyPositions.SeniorDev.setExperienceGains(.4, 0, 0, 0, 0, .08);
|
||||||
CompanyPositions.LeadDev.setPerformanceParameters(70, 0, 0, 0, 0, 30);
|
CompanyPositions.LeadDev.setPerformanceParameters(70, 0, 0, 0, 0, 30, 1.3);
|
||||||
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);
|
CompanyPositions.SoftwareConsultant.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1);
|
||||||
CompanyPositions.SoftwareConsultant.setExperienceGains(.175, 0, 0, 0, 0, .03);
|
CompanyPositions.SoftwareConsultant.setExperienceGains(.175, 0, 0, 0, 0, .03);
|
||||||
CompanyPositions.SeniorSoftwareConsultant.setPerformanceParameters(75, 0, 0, 0, 0, 25);
|
CompanyPositions.SeniorSoftwareConsultant.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.15);
|
||||||
CompanyPositions.SeniorSoftwareConsultant.setExperienceGains(.35, 0, 0, 0, 0, .06);
|
CompanyPositions.SeniorSoftwareConsultant.setExperienceGains(.35, 0, 0, 0, 0, .06);
|
||||||
|
|
||||||
//Security
|
//Security
|
||||||
CompanyPositions.ITIntern.setPerformanceParameters(90, 0, 0, 0, 0, 10);
|
CompanyPositions.ITIntern.setPerformanceParameters(90, 0, 0, 0, 0, 10, 1);
|
||||||
CompanyPositions.ITIntern.setExperienceGains(.05, 0, 0, 0, 0, .01);
|
CompanyPositions.ITIntern.setExperienceGains(.05, 0, 0, 0, 0, .01);
|
||||||
CompanyPositions.ITAnalyst.setPerformanceParameters(85, 0, 0, 0, 0, 15);
|
CompanyPositions.ITAnalyst.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1);
|
||||||
CompanyPositions.ITAnalyst.setExperienceGains(.15, 0, 0, 0, 0, .02);
|
CompanyPositions.ITAnalyst.setExperienceGains(.15, 0, 0, 0, 0, .02);
|
||||||
CompanyPositions.ITManager.setPerformanceParameters(75, 0, 0, 0, 0, 25);
|
CompanyPositions.ITManager.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.2);
|
||||||
CompanyPositions.ITManager.setExperienceGains(.4, 0, 0, 0, 0, .1);
|
CompanyPositions.ITManager.setExperienceGains(.4, 0, 0, 0, 0, .1);
|
||||||
CompanyPositions.SysAdmin.setPerformanceParameters(80, 0, 0, 0, 0, 20);
|
CompanyPositions.SysAdmin.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.2);
|
||||||
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);
|
CompanyPositions.SecurityEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.15);
|
||||||
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);
|
CompanyPositions.NetworkEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.15);
|
||||||
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);
|
CompanyPositions.NetworkAdministrator.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.25);
|
||||||
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);
|
CompanyPositions.HeadOfSoftware.setPerformanceParameters(65, 0, 0, 0, 0, 35, 1.4);
|
||||||
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);
|
CompanyPositions.HeadOfEngineering.setPerformanceParameters(60, 0, 0, 0, 0, 40, 1.4);
|
||||||
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);
|
CompanyPositions.VicePresident.setPerformanceParameters(60, 0, 0, 0, 0, 40, 1.5);
|
||||||
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);
|
CompanyPositions.CTO.setPerformanceParameters(50, 0, 0, 0, 0, 50, 1.5);
|
||||||
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);
|
CompanyPositions.BusinessIntern.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1);
|
||||||
CompanyPositions.BusinessIntern.setExperienceGains(.01, 0, 0, 0, 0, .1);
|
CompanyPositions.BusinessIntern.setExperienceGains(.01, 0, 0, 0, 0, .1);
|
||||||
CompanyPositions.BusinessAnalyst.setPerformanceParameters(20, 0, 0, 0, 0, 80);
|
CompanyPositions.BusinessAnalyst.setPerformanceParameters(20, 0, 0, 0, 0, 80, 1.1);
|
||||||
CompanyPositions.BusinessAnalyst.setExperienceGains(.02, 0, 0, 0, 0, .2);
|
CompanyPositions.BusinessAnalyst.setExperienceGains(.02, 0, 0, 0, 0, .2);
|
||||||
CompanyPositions.BusinessManager.setPerformanceParameters(15, 0, 0, 0, 0, 85);
|
CompanyPositions.BusinessManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.2);
|
||||||
CompanyPositions.BusinessManager.setExperienceGains(.02, 0, 0, 0, 0, .4);
|
CompanyPositions.BusinessManager.setExperienceGains(.02, 0, 0, 0, 0, .4);
|
||||||
CompanyPositions.OperationsManager.setPerformanceParameters(15, 0, 0, 0, 0, 85);
|
CompanyPositions.OperationsManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.2);
|
||||||
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);
|
CompanyPositions.CFO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.3);
|
||||||
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);
|
CompanyPositions.CEO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.5);
|
||||||
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);
|
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);
|
CompanyPositions.SeniorBusinessConsultant.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.15);
|
||||||
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
|
||||||
@ -347,23 +354,23 @@ CompanyPositions = {
|
|||||||
CompanyPositions.Waiter.setExperienceGains(0, .01, .01, .01, .01, .05);
|
CompanyPositions.Waiter.setExperienceGains(0, .01, .01, .01, .01, .05);
|
||||||
CompanyPositions.Employee.setPerformanceParameters(0, 10, 0, 10, 10, 70);
|
CompanyPositions.Employee.setPerformanceParameters(0, 10, 0, 10, 10, 70);
|
||||||
CompanyPositions.Employee.setExperienceGains(0, .01, .01, .01, .01, .04);
|
CompanyPositions.Employee.setExperienceGains(0, .01, .01, .01, .01, .04);
|
||||||
CompanyPositions.SecurityGuard.setPerformanceParameters(5, 20, 20, 20, 20, 15);
|
CompanyPositions.SecurityGuard.setPerformanceParameters(5, 20, 20, 20, 20, 15, 1);
|
||||||
CompanyPositions.SecurityGuard.setExperienceGains(.01, .02, .02, .02, .02, .01);
|
CompanyPositions.SecurityGuard.setExperienceGains(.01, .02, .02, .02, .02, .01);
|
||||||
CompanyPositions.PoliceOfficer.setPerformanceParameters(5, 20, 20, 20, 20, 15);
|
CompanyPositions.PoliceOfficer.setPerformanceParameters(5, 20, 20, 20, 20, 15, 1);
|
||||||
CompanyPositions.PoliceOfficer.setExperienceGains(.01, .04, .04, .04, .04, .02);
|
CompanyPositions.PoliceOfficer.setExperienceGains(.01, .04, .04, .04, .04, .02);
|
||||||
CompanyPositions.PoliceChief.setPerformanceParameters(5, 20, 20, 20, 20, 15);
|
CompanyPositions.PoliceChief.setPerformanceParameters(5, 20, 20, 20, 20, 15, 1.25);
|
||||||
CompanyPositions.PoliceChief.setExperienceGains(.02, .06, .06, .06, .06, .05);
|
CompanyPositions.PoliceChief.setExperienceGains(.02, .06, .06, .06, .06, .05);
|
||||||
CompanyPositions.SecurityOfficer.setPerformanceParameters(10, 20, 20, 20, 20, 10);
|
CompanyPositions.SecurityOfficer.setPerformanceParameters(10, 20, 20, 20, 20, 10, 1.1);
|
||||||
CompanyPositions.SecurityOfficer.setExperienceGains(.02, .06, .06, .06, .06, .04);
|
CompanyPositions.SecurityOfficer.setExperienceGains(.02, .06, .06, .06, .06, .04);
|
||||||
CompanyPositions.SecuritySupervisor.setPerformanceParameters(10, 15, 15, 15, 15, 30);
|
CompanyPositions.SecuritySupervisor.setPerformanceParameters(10, 15, 15, 15, 15, 30, 1.25);
|
||||||
CompanyPositions.SecuritySupervisor.setExperienceGains(.02, .06, .06, .06, .06, .08);
|
CompanyPositions.SecuritySupervisor.setExperienceGains(.02, .06, .06, .06, .06, .08);
|
||||||
CompanyPositions.HeadOfSecurity.setPerformanceParameters(10, 15, 15, 15, 15, 30);
|
CompanyPositions.HeadOfSecurity.setPerformanceParameters(10, 15, 15, 15, 15, 30, 1.4);
|
||||||
CompanyPositions.HeadOfSecurity.setExperienceGains(.05, .1, .1, .1, .1, .1);
|
CompanyPositions.HeadOfSecurity.setExperienceGains(.05, .1, .1, .1, .1, .1);
|
||||||
CompanyPositions.FieldAgent.setPerformanceParameters(10, 15, 15, 20, 20, 20);
|
CompanyPositions.FieldAgent.setPerformanceParameters(10, 15, 15, 20, 20, 20, 1);
|
||||||
CompanyPositions.FieldAgent.setExperienceGains(.04, .06, .06, .06, .06, .04);
|
CompanyPositions.FieldAgent.setExperienceGains(.04, .06, .06, .06, .06, .04);
|
||||||
CompanyPositions.SecretAgent.setPerformanceParameters(15, 15, 15, 20, 20, 15);
|
CompanyPositions.SecretAgent.setPerformanceParameters(15, 15, 15, 20, 20, 15, 1.25);
|
||||||
CompanyPositions.SecretAgent.setExperienceGains(.08, .1, .1, .1, .1, .08);
|
CompanyPositions.SecretAgent.setExperienceGains(.08, .1, .1, .1, .1, .08);
|
||||||
CompanyPositions.SpecialOperative.setPerformanceParameters(15, 15, 15, 20, 20, 15);
|
CompanyPositions.SpecialOperative.setPerformanceParameters(15, 15, 15, 20, 20, 15, 1.5);
|
||||||
CompanyPositions.SpecialOperative.setExperienceGains(.12, .15, .15, .15, .15, .12);
|
CompanyPositions.SpecialOperative.setExperienceGains(.12, .15, .15, .15, .15, .12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -381,7 +388,7 @@ getNextCompanyPosition = function(currPos) {
|
|||||||
if (currPos.positionName == CompanyPositions.SeniorDev.positionName) {
|
if (currPos.positionName == CompanyPositions.SeniorDev.positionName) {
|
||||||
return CompanyPositions.LeadDev;
|
return CompanyPositions.LeadDev;
|
||||||
}
|
}
|
||||||
if (currPos.positionName == CompanyPositions.LeadDev.positionname) {
|
if (currPos.positionName == CompanyPositions.LeadDev.positionName) {
|
||||||
return CompanyPositions.HeadOfSoftware;
|
return CompanyPositions.HeadOfSoftware;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
CONSTANTS = {
|
CONSTANTS = {
|
||||||
Version: "0.22.1",
|
Version: "0.23.0",
|
||||||
|
|
||||||
//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
|
||||||
@ -29,8 +29,8 @@ CONSTANTS = {
|
|||||||
HacknetNodeMaxCores: 16,
|
HacknetNodeMaxCores: 16,
|
||||||
|
|
||||||
/* Faction and Company favor */
|
/* Faction and Company favor */
|
||||||
FactionReputationToFavor: 7500,
|
FactionReputationToFavor: 6500,
|
||||||
CompanyReputationToFavor: 5000,
|
CompanyReputationToFavor: 6000,
|
||||||
|
|
||||||
/* Augmentation */
|
/* Augmentation */
|
||||||
//NeuroFlux Governor cost multiplier as you level up
|
//NeuroFlux Governor cost multiplier as you level up
|
||||||
@ -47,6 +47,7 @@ CONSTANTS = {
|
|||||||
ScriptHackRamCost: 0.1,
|
ScriptHackRamCost: 0.1,
|
||||||
ScriptGrowRamCost: 0.15,
|
ScriptGrowRamCost: 0.15,
|
||||||
ScriptWeakenRamCost: 0.15,
|
ScriptWeakenRamCost: 0.15,
|
||||||
|
ScriptScanRamCost: 0.2,
|
||||||
ScriptNukeRamCost: 0.05,
|
ScriptNukeRamCost: 0.05,
|
||||||
ScriptBrutesshRamCost: 0.05,
|
ScriptBrutesshRamCost: 0.05,
|
||||||
ScriptFtpcrackRamCost: 0.05,
|
ScriptFtpcrackRamCost: 0.05,
|
||||||
@ -71,7 +72,7 @@ CONSTANTS = {
|
|||||||
ScriptHNUpgRamRamCost: 0.6,
|
ScriptHNUpgRamRamCost: 0.6,
|
||||||
ScriptHNUpgCoreRamCost: 0.8,
|
ScriptHNUpgCoreRamCost: 0.8,
|
||||||
|
|
||||||
MultithreadingRAMCost: 1.002,
|
MultithreadingRAMCost: 1,
|
||||||
|
|
||||||
//Server constants
|
//Server constants
|
||||||
ServerBaseGrowthRate: 1.03, //Unadjusted Growth rate
|
ServerBaseGrowthRate: 1.03, //Unadjusted Growth rate
|
||||||
@ -81,7 +82,8 @@ CONSTANTS = {
|
|||||||
|
|
||||||
//Augmentation Constants
|
//Augmentation Constants
|
||||||
AugmentationCostMultiplier: 5, //Used for balancing costs without having to readjust every Augmentation cost
|
AugmentationCostMultiplier: 5, //Used for balancing costs without having to readjust every Augmentation cost
|
||||||
AugmentationRepMultiplier: 1.5, //Used for balancing rep cost without having to readjust every value
|
AugmentationRepMultiplier: 1.75, //Used for balancing rep cost without having to readjust every value
|
||||||
|
MultipleAugMultiplier: 1.75,
|
||||||
|
|
||||||
//Maximum number of log entries for a script
|
//Maximum number of log entries for a script
|
||||||
MaxLogCapacity: 50,
|
MaxLogCapacity: 50,
|
||||||
@ -193,7 +195,7 @@ CONSTANTS = {
|
|||||||
"and you can purchase additional servers as you progress through the game. Connecting to other servers " +
|
"and you can purchase additional servers as you progress through the game. Connecting to other servers " +
|
||||||
"and hacking them can be a major source of income and experience. Servers can also be used to run " +
|
"and hacking them can be a major source of income and experience. Servers can also be used to run " +
|
||||||
"scripts which can automatically hack servers for you. <br><br>" +
|
"scripts which can automatically hack servers for you. <br><br>" +
|
||||||
"In order to navigate between machines, use the 'scan' command to see all servers " +
|
"In order to navigate between machines, use the 'scan' or 'scan-analyze' Terminal command to see all servers " +
|
||||||
"that are reachable from your current server. Then, you can use the 'connect [hostname/ip]' " +
|
"that are reachable from your current server. Then, you can use the 'connect [hostname/ip]' " +
|
||||||
"command to connect to one of the available machines. <br><br>" +
|
"command to connect to one of the available machines. <br><br>" +
|
||||||
"The 'hostname' and 'ifconfig' commands can be used to display the hostname/IP of the " +
|
"The 'hostname' and 'ifconfig' commands can be used to display the hostname/IP of the " +
|
||||||
@ -286,16 +288,15 @@ CONSTANTS = {
|
|||||||
"every call to the hack(), grow(), and weaken() Netscript functions will have its effect multiplied by the number of scripts. " +
|
"every call to the hack(), grow(), and weaken() Netscript functions will have its effect multiplied by the number of scripts. " +
|
||||||
"For example, if a normal single-threaded script is able to hack $10,000, then running the same script with 5 threads would " +
|
"For example, if a normal single-threaded script is able to hack $10,000, then running the same script with 5 threads would " +
|
||||||
"yield $50,000. <br><br> " +
|
"yield $50,000. <br><br> " +
|
||||||
"Each additional thread to a script will slightly increase the RAM usage for that thread. The total cost of running a script with " +
|
"When multithreading a script, the total RAM cost can be calculated by simply multiplying the base RAM cost of the script " +
|
||||||
"n threads can be calculated with: <br>" +
|
"with the number of threads, where the base cost refers to the amount of RAM required to run the script single-threaded. " +
|
||||||
"base cost * n * (1.005 ^ n) <br>" +
|
"In the terminal, you can run the " +
|
||||||
"where the base cost is the amount of RAM required to run the script with a single thread. In the terminal, you can run the " +
|
|
||||||
"'mem [scriptname] -t n' command to see how much RAM a script requires with n threads. <br><br>" +
|
"'mem [scriptname] -t n' command to see how much RAM a script requires with n threads. <br><br>" +
|
||||||
"Every method for running a script has an option for making it multihreaded. To run a script with " +
|
"Every method for running a script has an option for making it multihreaded. To run a script with " +
|
||||||
"n threads from a Terminal: <br>" +
|
"n threads from a Terminal: <br>" +
|
||||||
"run [scriptname] -t n<br><br>" +
|
"run [scriptname] -t n<br><br>" +
|
||||||
"Using Netscript commands: <br>" +
|
"Using Netscript commands: <br>" +
|
||||||
"run('scriptname.script', m);<br> " +
|
"run('scriptname.script', n);<br> " +
|
||||||
"exec('scriptname.script, 'targetServer', n);<br><br>" +
|
"exec('scriptname.script, 'targetServer', n);<br><br>" +
|
||||||
"<u><h1> Notes about how scripts work offline </h1> </u><br>" +
|
"<u><h1> Notes about how scripts work offline </h1> </u><br>" +
|
||||||
"<strong> The scripts that you write and execute are interpreted in Javascript. For this " +
|
"<strong> The scripts that you write and execute are interpreted in Javascript. For this " +
|
||||||
@ -404,7 +405,7 @@ CONSTANTS = {
|
|||||||
"is determined by the server's growth rate and varies between servers. Generally, higher-level servers have higher growth rates. <br><br> " +
|
"is determined by the server's growth rate and varies between servers. Generally, higher-level servers have higher growth rates. <br><br> " +
|
||||||
"Like hack(), grow() can be called on any server, regardless of where the script is running. " +
|
"Like hack(), grow() can be called on any server, regardless of where the script is running. " +
|
||||||
"The grow() command requires root access to the target server, but there is no required hacking level to run the command. " +
|
"The grow() command requires root access to the target server, but there is no required hacking level to run the command. " +
|
||||||
"It grants 0.5 hacking exp when it completes. It also raises the security level of the target server by 0.004. " +
|
"It also raises the security level of the target server by 0.004. " +
|
||||||
"Returns the number by which the money on the server was multiplied for the growth. " +
|
"Returns the number by which the money on the server was multiplied for the growth. " +
|
||||||
"Works offline at a slower rate. <br> Example: grow('foodnstuff');<br><br>" +
|
"Works offline at a slower rate. <br> Example: grow('foodnstuff');<br><br>" +
|
||||||
"<i>weaken(hostname/ip)</i><br>Use your hacking skills to attack a server's security, lowering the server's security level. The argument passed " +
|
"<i>weaken(hostname/ip)</i><br>Use your hacking skills to attack a server's security, lowering the server's security level. The argument passed " +
|
||||||
@ -412,11 +413,13 @@ CONSTANTS = {
|
|||||||
"hacking level and the target server's security level. This function lowers the security level of the target server by " +
|
"hacking level and the target server's security level. This function lowers the security level of the target server by " +
|
||||||
"0.1.<br><br> Like hack() and grow(), weaken() can be called on " +
|
"0.1.<br><br> Like hack() and grow(), weaken() can be called on " +
|
||||||
"any server, regardless of where the script is running. This command requires root access to the target server, but " +
|
"any server, regardless of where the script is running. This command requires root access to the target server, but " +
|
||||||
"there is no required hacking level to run the command. Grants 3 hacking exp when it completes. Returns " +
|
"there is no required hacking level to run the command. Returns " +
|
||||||
"0.1. Works offline at a slower rate<br> Example: weaken('foodnstuff');<br><br>" +
|
"0.1. Works offline at a slower rate<br> Example: weaken('foodnstuff');<br><br>" +
|
||||||
"<i>print(x)</i> <br> Prints a value or a variable to the scripts logs (which can be viewed with the 'tail [script]' terminal command ). <br>" +
|
"<i>print(x)</i> <br>Prints a value or a variable to the scripts logs (which can be viewed with the 'tail [script]' terminal command ). <br>" +
|
||||||
"WARNING: Do NOT call print() on an array. The script will crash. You can, however, call print on single elements of an array. For example, if " +
|
"WARNING: Do NOT call print() on an array. The script will crash. You can, however, call print on single elements of an array. For example, if " +
|
||||||
"the variable 'a' is an array, then do NOT call print(a), but it is okay to call print(a[0]).<br><br>" +
|
"the variable 'a' is an array, then do NOT call print(a), but it is okay to call print(a[0]).<br><br>" +
|
||||||
|
"<i>scan()</i><br>Returns an array containing the hostnames of all servers that are one node away from the current server. The " +
|
||||||
|
"current server is the server on which the script that calls this function is running. The hostnames are strings.<br><br>" +
|
||||||
"<i>nuke(hostname/ip)</i><br>Run NUKE.exe on the target server. NUKE.exe must exist on your home computer. Does NOT work while offline <br> Example: nuke('foodnstuff'); <br><br>" +
|
"<i>nuke(hostname/ip)</i><br>Run NUKE.exe on the target server. NUKE.exe must exist on your home computer. Does NOT work while offline <br> Example: nuke('foodnstuff'); <br><br>" +
|
||||||
"<i>brutessh(hostname/ip)</i><br>Run BruteSSH.exe on the target server. BruteSSH.exe must exist on your home computer. Does NOT work while offline <br> Example: brutessh('foodnstuff');<br><br>" +
|
"<i>brutessh(hostname/ip)</i><br>Run BruteSSH.exe on the target server. BruteSSH.exe must exist on your home computer. Does NOT work while offline <br> Example: brutessh('foodnstuff');<br><br>" +
|
||||||
"<i>ftpcrack(hostname/ip)</i><br>Run FTPCrack.exe on the target server. FTPCrack.exe must exist on your home computer. Does NOT work while offline <br> Example: ftpcrack('foodnstuff');<br><br>" +
|
"<i>ftpcrack(hostname/ip)</i><br>Run FTPCrack.exe on the target server. FTPCrack.exe must exist on your home computer. Does NOT work while offline <br> Example: ftpcrack('foodnstuff');<br><br>" +
|
||||||
@ -476,6 +479,8 @@ CONSTANTS = {
|
|||||||
"<i>getHackingLevel()</i><br> Returns the Player's current hacking level. Does NOT work while offline <br><br> " +
|
"<i>getHackingLevel()</i><br> Returns the Player's current hacking level. Does NOT work while offline <br><br> " +
|
||||||
"<i>getServerMoneyAvailable(hostname/ip)</i><br> Returns the amount of money available on a server. The argument passed in must be a string with either the " +
|
"<i>getServerMoneyAvailable(hostname/ip)</i><br> Returns the amount of money available on a server. The argument passed in must be a string with either the " +
|
||||||
"hostname or IP of the target server. Does NOT work while offline <br> Example: getServerMoneyAvailable('foodnstuff');<br><br>" +
|
"hostname or IP of the target server. Does NOT work while offline <br> Example: getServerMoneyAvailable('foodnstuff');<br><br>" +
|
||||||
|
"<i>getServerMaxMoney(hostname/ip)</i><br>Returns the maximum amount of money that can be available on a server. The argument passed in must be a string with " +
|
||||||
|
"the hostname or IP of the target server. Does NOT work while offline<br>Example: getServerMaxMoney('foodnstuff');<br><br>" +
|
||||||
"<i>getServerSecurityLevel(hostname/ip)</i><br>Returns the security level of a server. The argument passed in must be a string with either the " +
|
"<i>getServerSecurityLevel(hostname/ip)</i><br>Returns the security level of a server. The argument passed in must be a string with either the " +
|
||||||
"hostname or IP of the target server. A server's security is denoted by a number between 1 and 100. Does NOT work while offline.<br><br>" +
|
"hostname or IP of the target server. A server's security is denoted by a number between 1 and 100. Does NOT work while offline.<br><br>" +
|
||||||
"<i>getServerBaseSecurityLevel(hostname/ip)</i><br> Returns the base security level of a server. This is the security level that the server starts out with. " +
|
"<i>getServerBaseSecurityLevel(hostname/ip)</i><br> Returns the base security level of a server. This is the security level that the server starts out with. " +
|
||||||
@ -485,6 +490,8 @@ CONSTANTS = {
|
|||||||
"Does NOT work while offline.<br><br>" +
|
"Does NOT work while offline.<br><br>" +
|
||||||
"<i>getServerRequiredHackingLevel(hostname/ip)</i><br> Returns the required hacking level of a server. The argument passed in must be a string with either the " +
|
"<i>getServerRequiredHackingLevel(hostname/ip)</i><br> Returns the required hacking level of a server. The argument passed in must be a string with either the " +
|
||||||
"hostname or IP or the target server. Does NOT work while offline <br><br>" +
|
"hostname or IP or the target server. Does NOT work while offline <br><br>" +
|
||||||
|
"<i>getServerNumPortsRequired(hostname/ip)</i><br>Returns the number of open ports required to successfully run NUKE.exe on a server. The argument " +
|
||||||
|
"passed in must be a string with either the hostname or IP of the target server. Does NOT work while offline<br><br>" +
|
||||||
"<i>fileExists(filename, [hostname/ip])</i><br> Returns a boolean (true or false) indicating whether the specified file exists on a server. " +
|
"<i>fileExists(filename, [hostname/ip])</i><br> Returns a boolean (true or false) indicating whether the specified file exists on a server. " +
|
||||||
"The first argument must be a string with the name of the file. A file can either be a script or a program. A script name is case-sensitive, but a " +
|
"The first argument must be a string with the name of the file. A file can either be a script or a program. A script name is case-sensitive, but a " +
|
||||||
"program is not. For example, fileExists('brutessh.exe') will work fine, even though the actual program is named BruteSSH.exe. <br><br> " +
|
"program is not. For example, fileExists('brutessh.exe') will work fine, even though the actual program is named BruteSSH.exe. <br><br> " +
|
||||||
@ -655,6 +662,19 @@ CONSTANTS = {
|
|||||||
"RAM Upgrades on your home computer",
|
"RAM Upgrades on your home computer",
|
||||||
|
|
||||||
Changelog:
|
Changelog:
|
||||||
|
"v0.23.0<br>" +
|
||||||
|
"-You can now purchase multiple Augmentations in a run. When you purchase an Augmentation you will lose money equal to the price " +
|
||||||
|
"and then the cost of purchasing another Augmentation during this run will be increased by 75%. You do not gain the benefits " +
|
||||||
|
"of your purchased Augmentations until you install them. This installation can be done through the 'Augmentation' tab. When " +
|
||||||
|
"you install your Augmentations, your game will reset like before. <br>" +
|
||||||
|
"-Reputation needed to gain a favor from faction decreased from 7500 to 6500<br>" +
|
||||||
|
"-Reputation needed to gain a favor from company increased from 5000 to 6000<br>" +
|
||||||
|
"-Reputation cost of all Augmentations increased by 16%<br>" +
|
||||||
|
"-Higher positions at companies now grant slightly more reputation for working<br>" +
|
||||||
|
"-Added getServerMaxMoney() Netscript function<br>" +
|
||||||
|
"-Added scan() Netscript function<br>" +
|
||||||
|
"-Added getServerNumPortsRequired() Netscript function<br>" +
|
||||||
|
"-There is now no additional RAM cost incurred when multithreading a script<br><br>" +
|
||||||
"v0.22.1<br>" +
|
"v0.22.1<br>" +
|
||||||
"-You no longer lose progress on creating programs when cancelling your work. Your progress will be saved and you will pick up " +
|
"-You no longer lose progress on creating programs when cancelling your work. Your progress will be saved and you will pick up " +
|
||||||
"where you left off when you start working on it again<br>" +
|
"where you left off when you start working on it again<br>" +
|
||||||
@ -834,31 +854,17 @@ 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.22.1<br>" +
|
"v0.23.0<br>" +
|
||||||
"-You no longer lose progress on creating programs when cancelling your work. Your progress will be saved and you will pick up " +
|
"-You can now purchase multiple Augmentations in a run. When you purchase an Augmentation you will lose money equal to the price " +
|
||||||
"where you left off when you start working on it again<br>" +
|
"and then the cost of purchasing another Augmentation during this run will be increased by 75%. You do not gain the benefits " +
|
||||||
"-Added two new programs: AutoLink.exe and ServerProfiler.exe<br>" +
|
"of your purchased Augmentations until you install them. This installation can be done through the 'Augmentation' tab. When " +
|
||||||
"-Fixed bug with Faction Field work reputation gain<br><br>" +
|
"you install your Augmentations, your game will reset like before. <br>" +
|
||||||
"v0.22.0 - Major rebalancing, optimization, and favor system<br>" +
|
"-Reputation needed to gain a favor from faction decreased from 7500 to 6500<br>" +
|
||||||
"-Significantly nerfed most augmentations<br>" +
|
"-Reputation needed to gain a favor from company increased from 5000 to 6000<br>" +
|
||||||
"-Almost every server with a required hacking level of 200 or more now has slightly randomized server parameters. This means that after every Augmentation " +
|
"-Reputation cost of all Augmentations increased by 16%<br>" +
|
||||||
"purchase, the required hacking level, base security level, and growth factor of these servers will all be slightly different<br>" +
|
"-Higher positions at companies now grant slightly more reputation for working<br>" +
|
||||||
"-The hacking speed multiplier now increases rather than decreases. The hacking time is now divided by your hacking speed " +
|
"-Added getServerMaxMoney() Netscript function<br>" +
|
||||||
"multiplier rather than multiplied. In other words, a higher hacking speed multiplier is better<br>" +
|
"-Added scan() Netscript function<br>" +
|
||||||
"-Servers now have a minimum server security, which is approximately one third of their starting ('base') server security<br>" +
|
"-Added getServerNumPortsRequired() Netscript function<br>" +
|
||||||
"-If you do not steal any money from a server, then you gain hacking experience equal to the amount you would have gained " +
|
"-There is now no additional RAM cost incurred when multithreading a script<br><br>",
|
||||||
"had you failed the hack<br>" +
|
|
||||||
"-The effects of grow() were increased by 50%<br>" +
|
|
||||||
"-grow() and weaken() now give hacking experience based on the server's base security level, rather than a flat exp amount<br>" +
|
|
||||||
"-Slightly reduced amount of exp gained from hack(), weaken(), and grow()<br>" +
|
|
||||||
"-Rebalanced formulas that determine crime success<br>" +
|
|
||||||
"-Reduced RAM cost for multithreading a script. The RAM multiplier for each thread was reduced from 1.02 to 1.005<br>" +
|
|
||||||
"-Optimized Script objects so they take less space in the save file<br>" +
|
|
||||||
"-Added getServerBaseSecurityLevel() Netscript function<br>" +
|
|
||||||
"-New favor system for companies and factions. Earning reputation at a company/faction will give you favor for that entity when you " +
|
|
||||||
"reset after installing an Augmentation. This favor persists through the rest of the game. The more favor you have, the faster you will earn " +
|
|
||||||
"reputation with that faction/company<br>" +
|
|
||||||
"-You can no longer donate to a faction for reputation until you have 150 favor with that faction<br>" +
|
|
||||||
"-Added unalias Terminal command<br>" +
|
|
||||||
"-Changed requirements for endgame Factions<br>",
|
|
||||||
}
|
}
|
||||||
|
@ -97,9 +97,9 @@ function determineCrimeChanceShoplift() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function determineCrimeChanceMug() {
|
function determineCrimeChanceMug() {
|
||||||
var chance = ((2 *Player.strength / CONSTANTS.MaxSkillLevel +
|
var chance = ((1.5 *Player.strength / CONSTANTS.MaxSkillLevel +
|
||||||
0.5 * Player.defense / CONSTANTS.MaxSkillLevel +
|
0.5 * Player.defense / CONSTANTS.MaxSkillLevel +
|
||||||
2 * Player.dexterity / CONSTANTS.MaxSkillLevel +
|
1.5 * Player.dexterity / CONSTANTS.MaxSkillLevel +
|
||||||
0.5 * Player.agility / CONSTANTS.MaxSkillLevel)) * 5;
|
0.5 * Player.agility / CONSTANTS.MaxSkillLevel)) * 5;
|
||||||
chance *= Player.crime_success_mult;
|
chance *= Player.crime_success_mult;
|
||||||
return Math.min(chance, 1);
|
return Math.min(chance, 1);
|
||||||
|
@ -338,6 +338,8 @@ initFactions = function() {
|
|||||||
PlayerObject.prototype.checkForFactionInvitations = function() {
|
PlayerObject.prototype.checkForFactionInvitations = function() {
|
||||||
invitedFactions = []; //Array which will hold all Factions th eplayer should be invited to
|
invitedFactions = []; //Array which will hold all Factions th eplayer should be invited to
|
||||||
|
|
||||||
|
var numAugmentations = this.augmentations.length;
|
||||||
|
|
||||||
var company = Companies[this.companyName];
|
var company = Companies[this.companyName];
|
||||||
var companyRep = 0;
|
var companyRep = 0;
|
||||||
if (company != null) {
|
if (company != null) {
|
||||||
@ -347,7 +349,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
//Illuminati
|
//Illuminati
|
||||||
var illuminatiFac = Factions["Illuminati"];
|
var illuminatiFac = Factions["Illuminati"];
|
||||||
if (!illuminatiFac.isBanned && !illuminatiFac.isMember && !illuminatiFac.alreadyInvited &&
|
if (!illuminatiFac.isBanned && !illuminatiFac.isMember && !illuminatiFac.alreadyInvited &&
|
||||||
this.numAugmentations >= 30 &&
|
numAugmentations >= 30 &&
|
||||||
this.money >= 150000000000 &&
|
this.money >= 150000000000 &&
|
||||||
this.hacking_skill >= 1200 &&
|
this.hacking_skill >= 1200 &&
|
||||||
this.strength >= 1000 && this.defense >= 1000 &&
|
this.strength >= 1000 && this.defense >= 1000 &&
|
||||||
@ -358,7 +360,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
//Daedalus
|
//Daedalus
|
||||||
var daedalusFac = Factions["Daedalus"];
|
var daedalusFac = Factions["Daedalus"];
|
||||||
if (!daedalusFac.isBanned && !daedalusFac.isMember && !daedalusFac.alreadyInvited &&
|
if (!daedalusFac.isBanned && !daedalusFac.isMember && !daedalusFac.alreadyInvited &&
|
||||||
this.numAugmentations >= 30 &&
|
numAugmentations >= 30 &&
|
||||||
this.money >= 100000000000 &&
|
this.money >= 100000000000 &&
|
||||||
(this.hacking_skill >= 2500 ||
|
(this.hacking_skill >= 2500 ||
|
||||||
(this.strength >= 1500 && this.defense >= 1500 &&
|
(this.strength >= 1500 && this.defense >= 1500 &&
|
||||||
@ -369,7 +371,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
//The Covenant
|
//The Covenant
|
||||||
var covenantFac = Factions["The Covenant"];
|
var covenantFac = Factions["The Covenant"];
|
||||||
if (!covenantFac.isBanned && !covenantFac.isMember && !covenantFac.alreadyInvited &&
|
if (!covenantFac.isBanned && !covenantFac.isMember && !covenantFac.alreadyInvited &&
|
||||||
this.numAugmentations >= 30 &&
|
numAugmentations >= 30 &&
|
||||||
this.money >= 75000000000 &&
|
this.money >= 75000000000 &&
|
||||||
this.hacking_skill >= 850 &&
|
this.hacking_skill >= 850 &&
|
||||||
this.strength >= 850 &&
|
this.strength >= 850 &&
|
||||||
@ -970,6 +972,16 @@ displayFactionAugmentations = function(factionName) {
|
|||||||
for (var i = 0; i < faction.augmentations.length; ++i) {
|
for (var i = 0; i < faction.augmentations.length; ++i) {
|
||||||
(function () {
|
(function () {
|
||||||
var aug = Augmentations[faction.augmentations[i]];
|
var aug = Augmentations[faction.augmentations[i]];
|
||||||
|
if (aug == null) {
|
||||||
|
console.log("ERROR: Invalid Augmentation");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var owned = false;
|
||||||
|
for (var j = 0; j < Player.queuedAugmentations.length; ++j) {
|
||||||
|
if (Player.queuedAugmentations[j].name == aug.name) {
|
||||||
|
owned = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
var item = document.createElement("li");
|
var item = document.createElement("li");
|
||||||
var span = document.createElement("span");
|
var span = document.createElement("span");
|
||||||
var aDiv = document.createElement("div");
|
var aDiv = document.createElement("div");
|
||||||
@ -977,7 +989,7 @@ displayFactionAugmentations = function(factionName) {
|
|||||||
var pElem = document.createElement("p");
|
var pElem = document.createElement("p");
|
||||||
aElem.setAttribute("href", "#");
|
aElem.setAttribute("href", "#");
|
||||||
var req = aug.baseRepRequirement * faction.augmentationRepRequirementMult;
|
var req = aug.baseRepRequirement * faction.augmentationRepRequirementMult;
|
||||||
if (aug.name != AugmentationNames.NeuroFluxGovernor && aug.owned) {
|
if (aug.name != AugmentationNames.NeuroFluxGovernor && (aug.owned || owned)) {
|
||||||
aElem.setAttribute("class", "a-link-button-inactive");
|
aElem.setAttribute("class", "a-link-button-inactive");
|
||||||
pElem.innerHTML = "ALREADY OWNED";
|
pElem.innerHTML = "ALREADY OWNED";
|
||||||
} else if (faction.playerReputation >= req) {
|
} else if (faction.playerReputation >= req) {
|
||||||
@ -992,7 +1004,7 @@ displayFactionAugmentations = function(factionName) {
|
|||||||
pElem.style.display = "inline";
|
pElem.style.display = "inline";
|
||||||
aElem.innerHTML = aug.name;
|
aElem.innerHTML = aug.name;
|
||||||
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
aElem.innerHTML += " - Level " + (aug.level + 1);
|
aElem.innerHTML += " - Level " + (getNextNeurofluxLevel());
|
||||||
}
|
}
|
||||||
span.style.display = "inline-block"
|
span.style.display = "inline-block"
|
||||||
|
|
||||||
|
@ -202,6 +202,22 @@ function evaluate(exp, workerScript) {
|
|||||||
}, function(e) {
|
}, function(e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
} else if (exp.func.value == "scan") {
|
||||||
|
if (exp.args.length != 0) {
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "scan() call has incorrect number of arguments. Takes 0 arguments"));
|
||||||
|
}
|
||||||
|
var currServ = getServer(workerScript.serverIp);
|
||||||
|
if (currServ == null) {
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "Could not find server ip for this script. This is a bug please contact game developer"));
|
||||||
|
}
|
||||||
|
var res = [];
|
||||||
|
for (var i = 0; i < currServ.serversOnNetwork.length; ++i) {
|
||||||
|
var thisServ = getServer(currServ.serversOnNetwork[i]);
|
||||||
|
if (thisServ == null) {continue;}
|
||||||
|
res.push({type:"str", value: thisServ.hostname});
|
||||||
|
}
|
||||||
|
resolve(res);
|
||||||
} else if (exp.func.value == "nuke") {
|
} else if (exp.func.value == "nuke") {
|
||||||
var p = netscriptRunProgram(exp, workerScript, Programs.NukeProgram);
|
var p = netscriptRunProgram(exp, workerScript, Programs.NukeProgram);
|
||||||
p.then(function(res) {
|
p.then(function(res) {
|
||||||
@ -530,6 +546,38 @@ function evaluate(exp, workerScript) {
|
|||||||
}, function(e) {
|
}, function(e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
});
|
});
|
||||||
|
} else if (exp.func.value == "getServerMaxMoney") {
|
||||||
|
if (exp.args.length != 1) {
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "getServerMaxMoney() call has incorrect number of arguments. Takes 1 argument"));
|
||||||
|
}
|
||||||
|
var ipPromise = evaluate(exp.args[0], workerScript);
|
||||||
|
ipPromise.then(function(ip) {
|
||||||
|
var server = getServer(ip);
|
||||||
|
if (server == null) {
|
||||||
|
workerScript.scriptRef.log("getServerMaxMoney() failed. Invalid IP or hostname passed in: " + ip);
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "Invalid IP or hostname passed into getServerMaxMoney() command"));
|
||||||
|
}
|
||||||
|
workerScript.scriptRef.log("getServerMaxMoney() returned " + formatNumber(server.moneyMax, 0) + " for " + server.hostname);
|
||||||
|
resolve(server.moneyMax);
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
|
} else if (exp.func.value == "getServerNumPortsRequired") {
|
||||||
|
if (exp.args.length != 1) {
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "getServerNumPortsRequired() call has incorrect number of arguments. Takes 1 argument"));
|
||||||
|
}
|
||||||
|
var ipPromise = evaluate(exp.args[0], workerScript);
|
||||||
|
ipPromise.then(function(ip) {
|
||||||
|
var server = getServer(ip);
|
||||||
|
if (server == null) {
|
||||||
|
workerScript.scriptRef.log("getServerNumPortsRequired() failed. Invalid IP or hostname passed in: " + ip);
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "Invalid IP or hostname passed into getServerNumPortsRequired() command"));
|
||||||
|
}
|
||||||
|
workerScript.scriptRef.log("getServerNumPortsRequired() returned " + formatNumber(server.numOpenPortsRequired, 0) + " for " + server.hostname);
|
||||||
|
resolve(server.numOpenPortsRequired);
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
} else if (exp.func.value == "fileExists") {
|
} else if (exp.func.value == "fileExists") {
|
||||||
if (exp.args.length != 1 && exp.args.length != 2) {
|
if (exp.args.length != 1 && exp.args.length != 2) {
|
||||||
return reject(makeRuntimeRejectMsg(workerScript, "fileExists() call has incorrect number of arguments. Takes 1 or 2 arguments"));
|
return reject(makeRuntimeRejectMsg(workerScript, "fileExists() call has incorrect number of arguments. Takes 1 or 2 arguments"));
|
||||||
@ -620,6 +668,16 @@ function evaluate(exp, workerScript) {
|
|||||||
displayHacknetNodesContent();
|
displayHacknetNodesContent();
|
||||||
workerScript.scriptRef.log("Purchased new Hacknet Node with name: " + name);
|
workerScript.scriptRef.log("Purchased new Hacknet Node with name: " + name);
|
||||||
resolve(numOwned);
|
resolve(numOwned);
|
||||||
|
} else if (exp.func.value == "val") {
|
||||||
|
if (exp.args.length != 1) {
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "val() call has incorrect number of arguments. Takes 1 arguments"));
|
||||||
|
}
|
||||||
|
var valPromise = evaluate(exp.args[0], workerScript);
|
||||||
|
valPromise.then(function(val) {
|
||||||
|
resolve(val);
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
reject(makeRuntimeRejectMsg(workerScript, "Invalid function: " + exp.func.value));
|
reject(makeRuntimeRejectMsg(workerScript, "Invalid function: " + exp.func.value));
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ function netscriptHack(exp, workerScript) {
|
|||||||
workerScript.scriptRef.log("Attempting to hack " + ip + " in " + hackingTime.toFixed(3) + " seconds (t=" + threads + ")");
|
workerScript.scriptRef.log("Attempting to hack " + ip + " in " + hackingTime.toFixed(3) + " seconds (t=" + threads + ")");
|
||||||
return Promise.resolve([server, hackingTime]);
|
return Promise.resolve([server, hackingTime]);
|
||||||
}).then(function([server, hackingTime]) {
|
}).then(function([server, hackingTime]) {
|
||||||
console.log("Hacking " + server.hostname + " after " + hackingTime.toString() + " seconds (t=" + threads + ")");
|
//console.log("Hacking " + server.hostname + " after " + hackingTime.toString() + " seconds (t=" + threads + ")");
|
||||||
return netscriptDelay(hackingTime* 1000).then(function() {
|
return netscriptDelay(hackingTime* 1000).then(function() {
|
||||||
if (env.stopFlag) {return Promise.reject(workerScript);}
|
if (env.stopFlag) {return Promise.reject(workerScript);}
|
||||||
var hackChance = scriptCalculateHackingChance(server);
|
var hackChance = scriptCalculateHackingChance(server);
|
||||||
@ -201,7 +201,7 @@ function netscriptHack(exp, workerScript) {
|
|||||||
workerScript.scriptRef.recordHack(server.ip, moneyGained, threads);
|
workerScript.scriptRef.recordHack(server.ip, moneyGained, threads);
|
||||||
Player.gainHackingExp(expGainedOnSuccess);
|
Player.gainHackingExp(expGainedOnSuccess);
|
||||||
workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;
|
workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;
|
||||||
console.log("Script successfully hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " exp");
|
//console.log("Script successfully hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " exp");
|
||||||
workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " exp (t=" + threads + ")");
|
workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " exp (t=" + threads + ")");
|
||||||
server.fortify(CONSTANTS.ServerFortifyAmount * threads);
|
server.fortify(CONSTANTS.ServerFortifyAmount * threads);
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
@ -209,7 +209,7 @@ function netscriptHack(exp, workerScript) {
|
|||||||
//Player only gains 25% exp for failure? TODO Can change this later to balance
|
//Player only gains 25% exp for failure? TODO Can change this later to balance
|
||||||
Player.gainHackingExp(expGainedOnFailure);
|
Player.gainHackingExp(expGainedOnFailure);
|
||||||
workerScript.scriptRef.onlineExpGained += expGainedOnFailure;
|
workerScript.scriptRef.onlineExpGained += expGainedOnFailure;
|
||||||
console.log("Script unsuccessful to hack " + server.hostname + ". Gained " + formatNumber(expGainedOnFailure, 4) + " exp");
|
//console.log("Script unsuccessful to hack " + server.hostname + ". Gained " + formatNumber(expGainedOnFailure, 4) + " exp");
|
||||||
workerScript.scriptRef.log("Script FAILED to hack " + server.hostname + ". Gained " + formatNumber(expGainedOnFailure, 4) + " exp (t=" + threads + ")");
|
workerScript.scriptRef.log("Script FAILED to hack " + server.hostname + ". Gained " + formatNumber(expGainedOnFailure, 4) + " exp (t=" + threads + ")");
|
||||||
return Promise.resolve(false);
|
return Promise.resolve(false);
|
||||||
}
|
}
|
||||||
@ -245,7 +245,7 @@ function netscriptGrow(exp, workerScript) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var growTime = scriptCalculateGrowTime(server);
|
var growTime = scriptCalculateGrowTime(server);
|
||||||
console.log("Executing grow() on server " + server.hostname + " in " + formatNumber(growTime/1000, 3) + " seconds")
|
//console.log("Executing grow() on server " + server.hostname + " in " + formatNumber(growTime/1000, 3) + " seconds")
|
||||||
workerScript.scriptRef.log("Executing grow() on server " + server.hostname + " in " + formatNumber(growTime/1000, 3) + " seconds (t=" + threads + ")");
|
workerScript.scriptRef.log("Executing grow() on server " + server.hostname + " in " + formatNumber(growTime/1000, 3) + " seconds (t=" + threads + ")");
|
||||||
|
|
||||||
return Promise.resolve([server, growTime]);
|
return Promise.resolve([server, growTime]);
|
||||||
@ -298,7 +298,7 @@ function netscriptWeaken(exp, workerScript) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var weakenTime = scriptCalculateWeakenTime(server);
|
var weakenTime = scriptCalculateWeakenTime(server);
|
||||||
console.log("Executing weaken() on server " + server.hostname + " in " + formatNumber(weakenTime/1000, 3) + " seconds")
|
//console.log("Executing weaken() on server " + server.hostname + " in " + formatNumber(weakenTime/1000, 3) + " seconds")
|
||||||
workerScript.scriptRef.log("Executing weaken() on server " + server.hostname + " in " +
|
workerScript.scriptRef.log("Executing weaken() on server " + server.hostname + " in " +
|
||||||
formatNumber(weakenTime/1000, 3) + " seconds (t=" + threads + ")");
|
formatNumber(weakenTime/1000, 3) + " seconds (t=" + threads + ")");
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@ function PlayerObject() {
|
|||||||
this.hacking_skill = 1;
|
this.hacking_skill = 1;
|
||||||
|
|
||||||
//Fighting
|
//Fighting
|
||||||
|
this.hp = 10;
|
||||||
|
this.max_hp = 10;
|
||||||
this.strength = 1; //Damage dealt
|
this.strength = 1; //Damage dealt
|
||||||
this.defense = 1; //Damage received
|
this.defense = 1; //Damage received
|
||||||
this.dexterity = 1; //Accuracy
|
this.dexterity = 1; //Accuracy
|
||||||
@ -86,8 +88,8 @@ function PlayerObject() {
|
|||||||
this.factions = []; //Names of all factions player has joined
|
this.factions = []; //Names of all factions player has joined
|
||||||
|
|
||||||
//Augmentations
|
//Augmentations
|
||||||
|
this.queuedAugmentations = []; //Purchased but not installed, names only
|
||||||
this.augmentations = []; //Names of all installed augmentations
|
this.augmentations = []; //Names of all installed augmentations
|
||||||
this.numAugmentations = 0;
|
|
||||||
|
|
||||||
//Crime statistics (Total refers to this 'simulation'. Lifetime is forever)
|
//Crime statistics (Total refers to this 'simulation'. Lifetime is forever)
|
||||||
this.karma = 0;
|
this.karma = 0;
|
||||||
|
@ -75,6 +75,8 @@ function prestigeAugmentation() {
|
|||||||
|
|
||||||
Player.factions = [];
|
Player.factions = [];
|
||||||
|
|
||||||
|
Player.queuedAugmentations = [];
|
||||||
|
|
||||||
Player.startAction = false;
|
Player.startAction = false;
|
||||||
Player.actionTime = 0;
|
Player.actionTime = 0;
|
||||||
|
|
||||||
@ -187,7 +189,7 @@ function prestigeAugmentation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Re-initialize things - This will update any changes
|
//Re-initialize things - This will update any changes
|
||||||
initFactions();
|
initFactions(); //Factions must be initialized before augmentations
|
||||||
initAugmentations();
|
initAugmentations();
|
||||||
initCompanies();
|
initCompanies();
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ function BitburnerSaveObject() {
|
|||||||
this.CompaniesSave = "";
|
this.CompaniesSave = "";
|
||||||
this.FactionsSave = "";
|
this.FactionsSave = "";
|
||||||
this.SpecialServerIpsSave = "";
|
this.SpecialServerIpsSave = "";
|
||||||
this.AugmentationsSave = "";
|
|
||||||
this.AliasesSave = "";
|
this.AliasesSave = "";
|
||||||
this.MessagesSave = "";
|
this.MessagesSave = "";
|
||||||
this.VersionSave = "";
|
this.VersionSave = "";
|
||||||
@ -35,11 +34,9 @@ BitburnerSaveObject.prototype.saveGame = function() {
|
|||||||
this.CompaniesSave = JSON.stringify(Companies);
|
this.CompaniesSave = JSON.stringify(Companies);
|
||||||
this.FactionsSave = JSON.stringify(Factions);
|
this.FactionsSave = JSON.stringify(Factions);
|
||||||
this.SpecialServerIpsSave = JSON.stringify(SpecialServerIps);
|
this.SpecialServerIpsSave = JSON.stringify(SpecialServerIps);
|
||||||
this.AugmentationsSave = JSON.stringify(Augmentations);
|
|
||||||
this.AliasesSave = JSON.stringify(Aliases);
|
this.AliasesSave = JSON.stringify(Aliases);
|
||||||
this.MessagesSave = JSON.stringify(Messages);
|
this.MessagesSave = JSON.stringify(Messages);
|
||||||
this.VersionSave = JSON.stringify(CONSTANTS.Version);
|
this.VersionSave = JSON.stringify(CONSTANTS.Version);
|
||||||
|
|
||||||
var saveString = btoa(unescape(encodeURIComponent(JSON.stringify(this))));
|
var saveString = btoa(unescape(encodeURIComponent(JSON.stringify(this))));
|
||||||
window.localStorage.setItem("bitburnerSave", saveString);
|
window.localStorage.setItem("bitburnerSave", saveString);
|
||||||
|
|
||||||
@ -60,7 +57,7 @@ loadGame = function(saveObj) {
|
|||||||
Companies = JSON.parse(saveObj.CompaniesSave, Reviver);
|
Companies = JSON.parse(saveObj.CompaniesSave, Reviver);
|
||||||
Factions = JSON.parse(saveObj.FactionsSave, Reviver);
|
Factions = JSON.parse(saveObj.FactionsSave, Reviver);
|
||||||
SpecialServerIps = JSON.parse(saveObj.SpecialServerIpsSave, Reviver);
|
SpecialServerIps = JSON.parse(saveObj.SpecialServerIpsSave, Reviver);
|
||||||
Augmentations = JSON.parse(saveObj.AugmentationsSave, Reviver);
|
|
||||||
if (saveObj.hasOwnProperty("AliasesSave")) {
|
if (saveObj.hasOwnProperty("AliasesSave")) {
|
||||||
try {
|
try {
|
||||||
Aliases = JSON.parse(saveObj.AliasesSave, Reviver);
|
Aliases = JSON.parse(saveObj.AliasesSave, Reviver);
|
||||||
@ -97,6 +94,9 @@ loadGame = function(saveObj) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (CONSTANTS.Version == "0.23.0") {
|
||||||
|
Augmentations = JSON.parse(saveObj.AugmentationsSave, Reviver);
|
||||||
|
}
|
||||||
createNewUpdateText();
|
createNewUpdateText();
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@ -167,6 +167,9 @@ loadImportedGame = function(saveObj, saveString) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (CONSTANTS.Version == "0.23.0") {
|
||||||
|
Augmentations = JSON.parse(saveObj.AugmentationsSave, Reviver);
|
||||||
|
}
|
||||||
createNewUpdateText();
|
createNewUpdateText();
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
@ -136,6 +136,7 @@ Script.prototype.updateRamUsage = function() {
|
|||||||
var hackCount = numOccurrences(codeCopy, "hack(");
|
var hackCount = numOccurrences(codeCopy, "hack(");
|
||||||
var growCount = numOccurrences(codeCopy, "grow(");
|
var growCount = numOccurrences(codeCopy, "grow(");
|
||||||
var weakenCount = numOccurrences(codeCopy, "weaken(");
|
var weakenCount = numOccurrences(codeCopy, "weaken(");
|
||||||
|
var scanCount = numOccurrences(codeCopy, "scan(");
|
||||||
var nukeCount = numOccurrences(codeCopy, "nuke(");
|
var nukeCount = numOccurrences(codeCopy, "nuke(");
|
||||||
var brutesshCount = numOccurrences(codeCopy, "brutessh(");
|
var brutesshCount = numOccurrences(codeCopy, "brutessh(");
|
||||||
var ftpcrackCount = numOccurrences(codeCopy, "ftpcrack(");
|
var ftpcrackCount = numOccurrences(codeCopy, "ftpcrack(");
|
||||||
@ -168,6 +169,7 @@ Script.prototype.updateRamUsage = function() {
|
|||||||
(hackCount * CONSTANTS.ScriptHackRamCost) +
|
(hackCount * CONSTANTS.ScriptHackRamCost) +
|
||||||
(growCount * CONSTANTS.ScriptGrowRamCost) +
|
(growCount * CONSTANTS.ScriptGrowRamCost) +
|
||||||
(weakenCount * CONSTANTS.ScriptWeakenRamCost) +
|
(weakenCount * CONSTANTS.ScriptWeakenRamCost) +
|
||||||
|
(scanCount * CONSTANTS.ScriptScanRamCost) +
|
||||||
(nukeCount * CONSTANTS.ScriptNukeRamCost) +
|
(nukeCount * CONSTANTS.ScriptNukeRamCost) +
|
||||||
(brutesshCount * CONSTANTS.ScriptBrutesshRamCost) +
|
(brutesshCount * CONSTANTS.ScriptBrutesshRamCost) +
|
||||||
(ftpcrackCount * CONSTANTS.ScriptFtpcrackRamCost) +
|
(ftpcrackCount * CONSTANTS.ScriptFtpcrackRamCost) +
|
||||||
|
@ -369,17 +369,17 @@ var Engine = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
displayAugmentationsContent: function() {
|
displayAugmentationsContent: function() {
|
||||||
var augmentationsList = document.getElementById("augmentations-list");
|
//Purchased/queued augmentations
|
||||||
|
var queuedAugmentationsList = document.getElementById("queued-augmentations-list");
|
||||||
|
|
||||||
while (augmentationsList.firstChild) {
|
while (queuedAugmentationsList.firstChild) {
|
||||||
augmentationsList.removeChild(augmentationsList.firstChild);
|
queuedAugmentationsList.removeChild(queuedAugmentationsList.firstChild);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < Player.augmentations.length; ++i) {
|
for (var i = 0; i < Player.queuedAugmentations.length; ++i) {
|
||||||
var augName = Player.augmentations[i];
|
var augName = Player.queuedAugmentations[i].name;
|
||||||
var aug = Augmentations[augName];
|
var aug = Augmentations[augName];
|
||||||
|
|
||||||
|
|
||||||
var item = document.createElement("li");
|
var item = document.createElement("li");
|
||||||
var hElem = document.createElement("h2");
|
var hElem = document.createElement("h2");
|
||||||
var pElem = document.createElement("p");
|
var pElem = document.createElement("p");
|
||||||
@ -387,7 +387,42 @@ var Engine = {
|
|||||||
item.setAttribute("class", "installed-augmentation");
|
item.setAttribute("class", "installed-augmentation");
|
||||||
hElem.innerHTML = augName;
|
hElem.innerHTML = augName;
|
||||||
if (augName == AugmentationNames.NeuroFluxGovernor) {
|
if (augName == AugmentationNames.NeuroFluxGovernor) {
|
||||||
hElem.innerHTML += " - Level " + (aug.level);
|
hElem.innerHTML += " - Level " + (Player.queuedAugmentations[i].level);
|
||||||
|
}
|
||||||
|
pElem.innerHTML = aug.info;
|
||||||
|
|
||||||
|
item.appendChild(hElem);
|
||||||
|
item.appendChild(pElem);
|
||||||
|
|
||||||
|
queuedAugmentationsList.appendChild(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Install Augmentations button
|
||||||
|
var installButton = clearEventListeners("install-augmentations-button");
|
||||||
|
installButton.addEventListener("click", function() {
|
||||||
|
installAugmentations();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
//Installed augmentations
|
||||||
|
var augmentationsList = document.getElementById("augmentations-list");
|
||||||
|
|
||||||
|
while (augmentationsList.firstChild) {
|
||||||
|
augmentationsList.removeChild(augmentationsList.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < Player.augmentations.length; ++i) {
|
||||||
|
var augName = Player.augmentations[i].name;
|
||||||
|
var aug = Augmentations[augName];
|
||||||
|
|
||||||
|
var item = document.createElement("li");
|
||||||
|
var hElem = document.createElement("h2");
|
||||||
|
var pElem = document.createElement("p");
|
||||||
|
|
||||||
|
item.setAttribute("class", "installed-augmentation");
|
||||||
|
hElem.innerHTML = augName;
|
||||||
|
if (augName == AugmentationNames.NeuroFluxGovernor) {
|
||||||
|
hElem.innerHTML += " - Level " + (Player.augmentations[i].level);
|
||||||
}
|
}
|
||||||
pElem.innerHTML = aug.info;
|
pElem.innerHTML = aug.info;
|
||||||
|
|
||||||
@ -647,6 +682,7 @@ var Engine = {
|
|||||||
Engine.setDisplayElements(); //Sets variables for important DOM elements
|
Engine.setDisplayElements(); //Sets variables for important DOM elements
|
||||||
Engine.init(); //Initialize buttons, work, etc.
|
Engine.init(); //Initialize buttons, work, etc.
|
||||||
CompanyPositions.init();
|
CompanyPositions.init();
|
||||||
|
initAugmentations();
|
||||||
|
|
||||||
//Calculate the number of cycles have elapsed while offline
|
//Calculate the number of cycles have elapsed while offline
|
||||||
Engine._lastUpdate = new Date().getTime();
|
Engine._lastUpdate = new Date().getTime();
|
||||||
|
@ -79,12 +79,37 @@ purchaseAugmentationBoxCreate = function(aug, fac) {
|
|||||||
Augmentations[AugmentationNames.BionicArms].owned == false) {
|
Augmentations[AugmentationNames.BionicArms].owned == false) {
|
||||||
dialogBoxCreate("You must first install the Bionic Arms augmentation before installing this upgrade");
|
dialogBoxCreate("You must first install the Bionic Arms augmentation before installing this upgrade");
|
||||||
} else if (Player.money >= (aug.baseCost * fac.augmentationPriceMult)) {
|
} else if (Player.money >= (aug.baseCost * fac.augmentationPriceMult)) {
|
||||||
applyAugmentation(aug);
|
var queuedAugmentation = new PlayerOwnedAugmentation(aug.name);
|
||||||
dialogBoxCreate("You slowly drift to sleep as " + fac.name + "'s scientists put you under " +
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
" in order to install the " + aug.name + " Augmentation. <br><br>" +
|
queuedAugmentation.level = getNextNeurofluxLevel();
|
||||||
"You wake up in your home...you feel different...");
|
}
|
||||||
|
Player.queuedAugmentations.push(queuedAugmentation);
|
||||||
|
|
||||||
prestigeAugmentation();
|
Player.loseMoney((aug.baseCost * fac.augmentationPriceMult));
|
||||||
|
dialogBoxCreate("You purchased " + aug.name + ". It's enhancements will not take " +
|
||||||
|
"effect until they are installed. To install your augmentations, go to the " +
|
||||||
|
"'Augmentations' tab on the left-hand navigation menu. Purchasing additional " +
|
||||||
|
"augmentations will now be more expensive.");
|
||||||
|
|
||||||
|
//If you just purchased Neuroflux Governor, recalculate the cost
|
||||||
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
|
var nextLevel = getNextNeurofluxLevel();
|
||||||
|
--nextLevel;
|
||||||
|
var mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, nextLevel);
|
||||||
|
aug.setRequirements(500 * mult, 750000 * mult);
|
||||||
|
|
||||||
|
for (var i = 0; i < Player.queuedAugmentations.length-1; ++i) {
|
||||||
|
aug.baseCost *= CONSTANTS.MultipleAugMultiplier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var name in Augmentations) {
|
||||||
|
if (Augmentations.hasOwnProperty(name)) {
|
||||||
|
Augmentations[name].baseCost *= CONSTANTS.MultipleAugMultiplier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
displayFactionAugmentations(fac.name);
|
||||||
} else {
|
} else {
|
||||||
dialogBoxCreate("You don't have enough money to purchase this Augmentation!");
|
dialogBoxCreate("You don't have enough money to purchase this Augmentation!");
|
||||||
}
|
}
|
||||||
@ -95,3 +120,25 @@ purchaseAugmentationBoxCreate = function(aug, fac) {
|
|||||||
|
|
||||||
purchaseAugmentationBoxOpen();
|
purchaseAugmentationBoxOpen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getNextNeurofluxLevel() {
|
||||||
|
var aug = Augmentations[AugmentationNames.NeuroFluxGovernor];
|
||||||
|
if (aug == null) {
|
||||||
|
for (var i = 0; i < Player.augmentations.length; ++i) {
|
||||||
|
if (Player.augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
|
aug = Player.augmentations[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (aug == null) {
|
||||||
|
console.log("ERROR, Could not find NeuroFlux Governor aug");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var nextLevel = aug.level + 1;
|
||||||
|
for (var i = 0; i < Player.queuedAugmentations.length; ++i) {
|
||||||
|
if (Player.queuedAugmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
|
++nextLevel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nextLevel;
|
||||||
|
}
|
@ -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.45, numUpgrades);
|
var mult = Math.pow(1.44, 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>" +
|
||||||
|
Loading…
Reference in New Issue
Block a user