mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-30 09:57:32 +01:00
Merge branch 'dev' of https://github.com/danielyxie/bitburner into stock-market-and-bladeburner-rebalancing
This commit is contained in:
commit
053bb9fcaf
@ -2,11 +2,16 @@ $fontFamily: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', '
|
|||||||
$defaultFontSize: 16px;
|
$defaultFontSize: 16px;
|
||||||
|
|
||||||
/* COLORS */
|
/* COLORS */
|
||||||
$hacky-green: #adff2f;
|
$hacker-green: #adff2f;
|
||||||
|
$success-green: #3adb76;
|
||||||
|
$alert-red: #ff2929;
|
||||||
|
$money-gold: #ffd700;
|
||||||
|
$light-yellow: #faffdf;
|
||||||
|
|
||||||
/* Attributes */
|
/* Attributes */
|
||||||
$my-stat-hp-color: #dd3434;
|
$my-stat-hp-color: #dd3434;
|
||||||
$my-stat-money-color: #ffd700;
|
$my-stat-money-color: $money-gold;
|
||||||
$my-stat-hack-color: $hacky-green;
|
$my-stat-hack-color: $hacker-green;
|
||||||
|
$my-stat-physical: $light-yellow;
|
||||||
$my-stat-cha-color: #a671d1;
|
$my-stat-cha-color: #a671d1;
|
||||||
$my-stat-int-color: #6495ed;
|
$my-stat-int-color: #6495ed;
|
||||||
|
@ -200,38 +200,37 @@
|
|||||||
.active-scripts-script-header {
|
.active-scripts-script-header {
|
||||||
background-color: #555;
|
background-color: #555;
|
||||||
color: var(--my-font-color);
|
color: var(--my-font-color);
|
||||||
padding: 4px;
|
padding: 4px 25px 4px 10px;
|
||||||
padding-left: 10px;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: auto;
|
width: auto;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
border: none;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
position: relative;
|
||||||
|
|
||||||
.active-scripts-script-header:hover,
|
&:after {
|
||||||
.active-scripts-script-header.active:hover {
|
|
||||||
background-color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-scripts-script-header.active {
|
|
||||||
background-color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-scripts-script-header:after {
|
|
||||||
content: '\02795'; /* "plus" sign (+) */
|
content: '\02795'; /* "plus" sign (+) */
|
||||||
font-size: $defaultFontSize * 0.8125;
|
font-size: $defaultFontSize * 0.8125;
|
||||||
float: right;
|
float: right;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
text-shadow: 0 0 0 var(--my-font-color);
|
text-shadow: 0 0 0 var(--my-font-color);
|
||||||
}
|
position: absolute;
|
||||||
|
bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
.active-scripts-script-header.active:after {
|
&.active:after {
|
||||||
content: "\2796"; /* "minus" sign (-) */
|
content: "\2796"; /* "minus" sign (-) */
|
||||||
font-size: $defaultFontSize * 0.8125;
|
}
|
||||||
float: right;
|
|
||||||
margin-left: 5px;
|
&:hover,
|
||||||
|
&.active:hover {
|
||||||
|
background-color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: #555;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.active-scripts-script-panel {
|
.active-scripts-script-panel {
|
||||||
@ -405,8 +404,8 @@
|
|||||||
|
|
||||||
#faction-container p,
|
#faction-container p,
|
||||||
#faction-container pre {
|
#faction-container pre {
|
||||||
padding: 6px;
|
padding: 4px 6px;
|
||||||
margin: 6px;
|
margin: 4px 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#faction-container pre {
|
#faction-container pre {
|
||||||
@ -522,6 +521,11 @@
|
|||||||
#infiltration-container {
|
#infiltration-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#infiltration-left-panel,
|
#infiltration-left-panel,
|
||||||
@ -544,6 +548,10 @@
|
|||||||
margin: 4px;
|
margin: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#infiltration-buttons {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
#infiltration-buttons .a-link-button {
|
#infiltration-buttons .a-link-button {
|
||||||
display: inline;
|
display: inline;
|
||||||
width: 25%;
|
width: 25%;
|
||||||
|
@ -87,6 +87,11 @@
|
|||||||
z-index: 2;
|
z-index: 2;
|
||||||
background-color: var(--my-background-color);
|
background-color: var(--my-background-color);
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|
||||||
|
p span {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-box-close-button {
|
.dialog-box-close-button {
|
||||||
@ -138,6 +143,11 @@
|
|||||||
margin: 8px;
|
margin: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#infiltration-box-content span {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#infiltration-faction-select {
|
#infiltration-faction-select {
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
}
|
}
|
||||||
|
@ -163,14 +163,14 @@ a:visited {
|
|||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
-khtml-user-select: none;
|
-khtml-user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
}
|
|
||||||
|
|
||||||
.a-link-button:hover {
|
&:hover {
|
||||||
background-color: #666;
|
background-color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.a-link-button:active {
|
&:active {
|
||||||
@include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6));
|
@include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make anchor tags ("a" elements) inactive (not clickable) */
|
/* Make anchor tags ("a" elements) inactive (not clickable) */
|
||||||
@ -182,16 +182,18 @@ a:visited {
|
|||||||
margin: 5px;
|
margin: 5px;
|
||||||
border: 1px solid #333;
|
border: 1px solid #333;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
|
||||||
|
|
||||||
.a-link-button-inactive:hover .tooltiptext,
|
&:hover {
|
||||||
.a-link-button-inactive:hover .tooltiptexthigh,
|
.tooltiptext,
|
||||||
.a-link-button-inactive:hover .tooltiptextleft {
|
.tooltiptexthigh,
|
||||||
|
.tooltiptextleft {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.a-link-button-inactive:active {
|
&:active {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make anchor tags ("a" elements) for activated actions */
|
/* Make anchor tags ("a" elements) for activated actions */
|
||||||
@ -203,16 +205,18 @@ a:visited {
|
|||||||
margin: 5px;
|
margin: 5px;
|
||||||
border: 1px solid #0a0;
|
border: 1px solid #0a0;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
|
||||||
|
|
||||||
.a-link-button-bought:hover .tooltiptext,
|
&:hover {
|
||||||
.a-link-button-bought:hover .tooltiptexthigh,
|
.tooltiptext,
|
||||||
.a-link-button-bought:hover .tooltiptextleft {
|
.tooltiptexthigh,
|
||||||
|
.tooltiptextleft {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.a-link-button-bought:active {
|
&:active {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown {
|
.dropdown {
|
||||||
@ -253,11 +257,10 @@ a:visited {
|
|||||||
|
|
||||||
/* Tool tips (when hovering over an element */
|
/* Tool tips (when hovering over an element */
|
||||||
.tooltip {
|
.tooltip {
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
position: relative;
|
||||||
|
|
||||||
.tooltip .tooltiptext {
|
.tooltiptext {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
width: 300px;
|
width: 300px;
|
||||||
background-color: var(--my-background-color);
|
background-color: var(--my-background-color);
|
||||||
@ -267,8 +270,10 @@ a:visited {
|
|||||||
padding: 4px;
|
padding: 4px;
|
||||||
left: 101%;
|
left: 101%;
|
||||||
|
|
||||||
|
pointer-events: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Same thing as a normal tooltip except its a bit higher */
|
/* Same thing as a normal tooltip except its a bit higher */
|
||||||
@ -287,7 +292,7 @@ a:visited {
|
|||||||
z-index: 99;
|
z-index: 99;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Similar to a normal tooltip except its positioned on the left of the elemnt
|
/* Similar to a normal tooltip except its positioned on the left of the element
|
||||||
rather than the right to avoid exceeding the elements normal width */
|
rather than the right to avoid exceeding the elements normal width */
|
||||||
.tooltip .tooltiptextleft {
|
.tooltip .tooltiptextleft {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
@ -460,12 +465,12 @@ a:visited {
|
|||||||
width: auto;
|
width: auto;
|
||||||
max-width: 280px;
|
max-width: 280px;
|
||||||
overflow: auto; /* Enable scroll if needed */
|
overflow: auto; /* Enable scroll if needed */
|
||||||
background-color: #393636; /* Fallback color */
|
background-color: rgba(57, 54, 54, 0.9); /* Fallback color */
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#character-overview-text {
|
#character-overview-text {
|
||||||
color: #faffdf;
|
color: $my-stat-physical;
|
||||||
|
|
||||||
table {
|
table {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
@ -536,10 +541,10 @@ a:visited {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
|
||||||
|
|
||||||
.scan-analyze-link:hover {
|
&:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Accordion menus (Header with collapsible panel) */
|
/* Accordion menus (Header with collapsible panel) */
|
||||||
@ -572,7 +577,7 @@ a:visited {
|
|||||||
color: transparent;
|
color: transparent;
|
||||||
text-shadow: 0 0 0 #fff;
|
text-shadow: 0 0 0 #fff;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 3px;
|
bottom: 5px;
|
||||||
right: 6px;
|
right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -603,3 +608,34 @@ a:visited {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper Classes */
|
||||||
|
.hacker-green {
|
||||||
|
color: $hacker-green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.money-gold {
|
||||||
|
color: $money-gold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.light-yellow {
|
||||||
|
color: $light-yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.failure {
|
||||||
|
color: $alert-red;
|
||||||
|
text-shadow: 0 0 0 $alert-red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success {
|
||||||
|
color: $success-green;
|
||||||
|
text-shadow: 0 0 0 $success-green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.physical-yellow {
|
||||||
|
color: $my-stat-physical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.charisma-purple {
|
||||||
|
color: $my-stat-cha-color;
|
||||||
|
}
|
||||||
|
@ -19,6 +19,12 @@
|
|||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
background-color: var(--my-background-color);
|
background-color: var(--my-background-color);
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
|
|
||||||
|
.prompt {
|
||||||
|
color: var(--my-prompt-color);
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#terminal-input {
|
#terminal-input {
|
||||||
@ -51,7 +57,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#terminal-input-header {
|
#terminal-input-header {
|
||||||
color: var(--my-prompt-color);
|
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
34
index.html
34
index.html
@ -187,9 +187,9 @@
|
|||||||
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>
|
||||||
<p id="active-scripts-total-prod">Total online production of
|
<p id="active-scripts-total-prod">Total online production of
|
||||||
Active scripts: <span id="active-scripts-total-production-active">$0.000</span> / sec<br/>
|
Active scripts: <span class="money-gold"><span id="active-scripts-total-production-active">$0.000</span> / sec</span><br/>
|
||||||
Total online production since last Aug installation: <span id="active-scripts-total-prod-aug-total">$0.000</span>
|
Total online production since last Aug installation: <span id="active-scripts-total-prod-aug-total" class="money-gold">$0.000</span>
|
||||||
(<span id="active-scripts-total-prod-aug-avg">$0.000</span> / sec)</p>
|
(<span class="money-gold"><span id="active-scripts-total-prod-aug-avg" class="money-gold">$0.000</span> / sec</span>)</p>
|
||||||
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -201,20 +201,20 @@
|
|||||||
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
|
||||||
the world to anonymously share computing power and perform distributed cyberattacks without the
|
the world to anonymously share computing power and perform distributed cyberattacks without the
|
||||||
fear of being traced.
|
fear of being traced.
|
||||||
<br><br>
|
<br/><br/>
|
||||||
Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its
|
Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its
|
||||||
resources to the Hacknet network. This allows you to take a small percentage of profits
|
resources to the Hacknet network. This allows you to take a small percentage of profits
|
||||||
from hacks performed on the network. Essentially, you are renting out your Node's computing power.
|
from hacks performed on the network. Essentially, you are renting out your Node's computing power.
|
||||||
<br><br>
|
<br/><br/>
|
||||||
Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded
|
Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded
|
||||||
in order to increase its computing power and thereby increase the profit you earn from it.
|
in order to increase its computing power and thereby increase the profit you earn from it.
|
||||||
</p>
|
</p>
|
||||||
<a id="hacknet-nodes-purchase-button" class="a-link-button"> Purchase Hacknet Node </a>
|
<a id="hacknet-nodes-purchase-button" class="a-link-button"> Purchase Hacknet Node </a>
|
||||||
<br>
|
<br/>
|
||||||
<div id="hacknet-nodes-money-multipliers-div">
|
<div id="hacknet-nodes-money-multipliers-div">
|
||||||
<p id="hacknet-nodes-money">
|
<p id="hacknet-nodes-money">
|
||||||
<span>Money:</span><span id="hacknet-nodes-player-money"></span><br/>
|
<span>Money:</span><span id="hacknet-nodes-player-money" class="money-gold"></span><br/>
|
||||||
<span>Total Hacknet Node Production:</span><span id="hacknet-nodes-total-production"></span>
|
<span>Total Hacknet Node Production:</span><span id="hacknet-nodes-total-production" class="money-gold"></span>
|
||||||
</p>
|
</p>
|
||||||
<span id="hacknet-nodes-multipliers">
|
<span id="hacknet-nodes-multipliers">
|
||||||
<a id="hacknet-nodes-1x-multiplier" class="a-link-button-inactive"> x1 </a>
|
<a id="hacknet-nodes-1x-multiplier" class="a-link-button-inactive"> x1 </a>
|
||||||
@ -623,7 +623,7 @@
|
|||||||
<p id="location-slums-description">
|
<p id="location-slums-description">
|
||||||
You have entered the Slums, a poverty-ridden district filled with gangs, criminals, and
|
You have entered the Slums, a poverty-ridden district filled with gangs, criminals, and
|
||||||
other shadowy entities. The city's government and police have neglected this area for years...
|
other shadowy entities. The city's government and police have neglected this area for years...
|
||||||
<br><br><br>
|
<br/><br/><br/>
|
||||||
In the Slums, you can commit crimes to earn money and experience. Crime attempts are not always
|
In the Slums, you can commit crimes to earn money and experience. Crime attempts are not always
|
||||||
successful. Your chance at successfully committing a crime is determined by your stats.
|
successful. Your chance at successfully committing a crime is determined by your stats.
|
||||||
</p>
|
</p>
|
||||||
@ -670,7 +670,7 @@
|
|||||||
|
|
||||||
<div id="stock-market-container" class="generic-menupage-container">
|
<div id="stock-market-container" class="generic-menupage-container">
|
||||||
<p>
|
<p>
|
||||||
Welcome to the World Stock Exchange (WSE)! <br><br>
|
Welcome to the World Stock Exchange (WSE)! <br/><br/>
|
||||||
|
|
||||||
To begin trading, you must first purchase an account. WSE accounts will persist
|
To begin trading, you must first purchase an account. WSE accounts will persist
|
||||||
after you 'reset' by installing Augmentations.
|
after you 'reset' by installing Augmentations.
|
||||||
@ -683,7 +683,7 @@
|
|||||||
TIX, short for Trade Information eXchange, is the communications protocol supported by the WSE.
|
TIX, short for Trade Information eXchange, is the communications protocol supported by the WSE.
|
||||||
Purchasing access to the TIX API lets you write code to create your own algorithmic/automated
|
Purchasing access to the TIX API lets you write code to create your own algorithmic/automated
|
||||||
trading strategies.
|
trading strategies.
|
||||||
<br><br>
|
<br/><br/>
|
||||||
If you purchase access to the TIX API, you will retain that access even after
|
If you purchase access to the TIX API, you will retain that access even after
|
||||||
you 'reset' by installing Augmentations.
|
you 'reset' by installing Augmentations.
|
||||||
</p>
|
</p>
|
||||||
@ -693,7 +693,7 @@
|
|||||||
<p>
|
<p>
|
||||||
Four Sigma's (4S) Market Data Feed provides information about stocks
|
Four Sigma's (4S) Market Data Feed provides information about stocks
|
||||||
that will help your trading strategies.
|
that will help your trading strategies.
|
||||||
<br><br>
|
<br/><br/>
|
||||||
If you purchase access to 4S Market Data and/or the 4S TIX API, you will
|
If you purchase access to 4S Market Data and/or the 4S TIX API, you will
|
||||||
retain that access even after you 'reset' by installing Augmentations.
|
retain that access even after you 'reset' by installing Augmentations.
|
||||||
</p>
|
</p>
|
||||||
@ -711,7 +711,7 @@
|
|||||||
<a id="stock-market-mode" class="a-link-button tooltip"></a>
|
<a id="stock-market-mode" class="a-link-button tooltip"></a>
|
||||||
<a id="stock-market-expand-tickers" class="a-link-button tooltip">Expand tickers</a>
|
<a id="stock-market-expand-tickers" class="a-link-button tooltip">Expand tickers</a>
|
||||||
<a id="stock-market-collapse-tickers" class="a-link-button tooltip">Collapse tickers</a>
|
<a id="stock-market-collapse-tickers" class="a-link-button tooltip">Collapse tickers</a>
|
||||||
<br><br>
|
<br/><br/>
|
||||||
<input id="stock-market-watchlist-filter" type="text" placeholder="Filter Stocks by symbol (comma-separated list)"/>
|
<input id="stock-market-watchlist-filter" type="text" placeholder="Filter Stocks by symbol (comma-separated list)"/>
|
||||||
<a id="stock-market-watchlist-filter-update" class="a-link-button"> Update Watchlist </a>
|
<a id="stock-market-watchlist-filter-update" class="a-link-button"> Update Watchlist </a>
|
||||||
<ul id="stock-market-list" style="list-style:none;">
|
<ul id="stock-market-list" style="list-style:none;">
|
||||||
@ -753,7 +753,7 @@
|
|||||||
<p id="faction-invitation-box-text"> </p>
|
<p id="faction-invitation-box-text"> </p>
|
||||||
<p id="faction-invitation-box-message"> </p>
|
<p id="faction-invitation-box-message"> </p>
|
||||||
<p id="faction-invitation-box-warning">
|
<p id="faction-invitation-box-warning">
|
||||||
Would you like to join? <br> <br>
|
Would you like to join? <br/> <br/>
|
||||||
Warning: Joining this faction may prevent you from joining other factions during this run!
|
Warning: Joining this faction may prevent you from joining other factions during this run!
|
||||||
</p>
|
</p>
|
||||||
<span id="faction-invitation-box-yes" class="popup-box-button"> Yes </span>
|
<span id="faction-invitation-box-yes" class="popup-box-button"> Yes </span>
|
||||||
@ -766,8 +766,8 @@
|
|||||||
<div id="infiltration-box-content" class="popup-box-content">
|
<div id="infiltration-box-content" class="popup-box-content">
|
||||||
<p id="infiltration-box-text"> </p>
|
<p id="infiltration-box-text"> </p>
|
||||||
|
|
||||||
<span id="infiltration-box-sell" class="a-link-button"> Sell on Black Market </span> <br><br>
|
<span id="infiltration-box-sell" class="a-link-button"> Sell on Black Market </span> <br/><br/>
|
||||||
<select id="infiltration-faction-select"> </select> <br>
|
<select id="infiltration-faction-select"> </select> <br/>
|
||||||
<span id="infiltration-box-faction" class="a-link-button"> Give to Faction for Reputation </span>
|
<span id="infiltration-box-faction" class="a-link-button"> Give to Faction for Reputation </span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -853,7 +853,7 @@
|
|||||||
<div id="game-options-content" class="game-options-box">
|
<div id="game-options-content" class="game-options-box">
|
||||||
<span id="game-options-close-button">×</span>
|
<span id="game-options-close-button">×</span>
|
||||||
<h1> Game Options </h1>
|
<h1> Game Options </h1>
|
||||||
<br>
|
<br/>
|
||||||
<div id="game-options-left-panel">
|
<div id="game-options-left-panel">
|
||||||
<!-- Netscript execution time -->
|
<!-- Netscript execution time -->
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -162,7 +162,7 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationKill(inst);
|
var res = attemptInfiltrationKill(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY killed the security bots! Unfortunately you alerted the " +
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> killed the security bots! Unfortunately you alerted the " +
|
||||||
"rest of the facility's security. The facility's security " +
|
"rest of the facility's security. The facility's security " +
|
||||||
"level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
Player.karma -= 1;
|
Player.karma -= 1;
|
||||||
@ -170,7 +170,7 @@ function nextInfiltrationLevel(inst) {
|
|||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
var dmgTaken = Math.max(1, Math.round(1.5 * inst.securityLevel / Player.defense));
|
var dmgTaken = Math.max(1, Math.round(1.5 * inst.securityLevel / Player.defense));
|
||||||
writeInfiltrationStatusText("You FAILED to kill the security bots. The bots fight back " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to kill the security bots. The bots fight back " +
|
||||||
"and raise the alarm! You take " + dmgTaken + " damage and " +
|
"and raise the alarm! You take " + dmgTaken + " damage and " +
|
||||||
"the facility's security level increases by " +
|
"the facility's security level increases by " +
|
||||||
formatNumber((res[1]*100)-100, 2).toString() + "%");
|
formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
@ -186,12 +186,12 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationAssassinate(inst);
|
var res = attemptInfiltrationAssassinate(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security bots without being detected!");
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> assassinated the security bots without being detected!");
|
||||||
Player.karma -= 1;
|
Player.karma -= 1;
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED to assassinate the security bots. The bots have not detected " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to assassinate the security bots. The bots have not detected " +
|
||||||
"you but are now more alert for an intruder. The facility's security level " +
|
"you but are now more alert for an intruder. The facility's security level " +
|
||||||
"has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
}
|
}
|
||||||
@ -209,7 +209,7 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationKill(inst);
|
var res = attemptInfiltrationKill(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY killed the security guard! Unfortunately you alerted the " +
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> killed the security guard! Unfortunately you alerted the " +
|
||||||
"rest of the facility's security. The facility's security " +
|
"rest of the facility's security. The facility's security " +
|
||||||
"level has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"level has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
Player.karma -= 3;
|
Player.karma -= 3;
|
||||||
@ -218,7 +218,7 @@ function nextInfiltrationLevel(inst) {
|
|||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense));
|
var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense));
|
||||||
writeInfiltrationStatusText("You FAILED to kill the security guard. The guard fights back " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to kill the security guard. The guard fights back " +
|
||||||
"and raises the alarm! You take " + dmgTaken + " damage and " +
|
"and raises the alarm! You take " + dmgTaken + " damage and " +
|
||||||
"the facility's security level has increased by " +
|
"the facility's security level has increased by " +
|
||||||
formatNumber((res[1]*100)-100, 2).toString() + "%");
|
formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
@ -236,13 +236,13 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationAssassinate(inst);
|
var res = attemptInfiltrationAssassinate(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security guard without being detected!");
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> assassinated the security guard without being detected!");
|
||||||
Player.karma -= 3;
|
Player.karma -= 3;
|
||||||
++Player.numPeopleKilled;
|
++Player.numPeopleKilled;
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED to assassinate the security guard. The guard has not detected " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to assassinate the security guard. The guard has not detected " +
|
||||||
"you but is now more alert for an intruder. The facility's security level " +
|
"you but is now more alert for an intruder. The facility's security level " +
|
||||||
"has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
}
|
}
|
||||||
@ -259,14 +259,14 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationKnockout(inst);
|
var res = attemptInfiltrationKnockout(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard! " +
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> knocked out the security guard! " +
|
||||||
"Unfortunately you made a lot of noise and alerted other security.");
|
"Unfortunately you made a lot of noise and alerted other security.");
|
||||||
writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense));
|
var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense));
|
||||||
writeInfiltrationStatusText("You FAILED to knockout the security guard. The guard " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to knockout the security guard. The guard " +
|
||||||
"raises the alarm and fights back! You take " + dmgTaken + " damage and " +
|
"raises the alarm and fights back! You take " + dmgTaken + " damage and " +
|
||||||
"the facility's security level increases by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"the facility's security level increases by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
if (Player.takeDamage(dmgTaken)) {
|
if (Player.takeDamage(dmgTaken)) {
|
||||||
@ -282,13 +282,13 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationStealthKnockout(inst);
|
var res = attemptInfiltrationStealthKnockout(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard without making " +
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> knocked out the security guard without making " +
|
||||||
"any noise!");
|
"any noise!");
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense));
|
var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense));
|
||||||
writeInfiltrationStatusText("You FAILED to stealthily knockout the security guard. The guard " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to stealthily knockout the security guard. The guard " +
|
||||||
"raises the alarm and fights back! You take " + dmgTaken + " damage and " +
|
"raises the alarm and fights back! You take " + dmgTaken + " damage and " +
|
||||||
"the facility's security level increases by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"the facility's security level increases by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
if (Player.takeDamage(dmgTaken)) {
|
if (Player.takeDamage(dmgTaken)) {
|
||||||
@ -304,12 +304,12 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationHack(inst);
|
var res = attemptInfiltrationHack(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY hacked and disabled the security system!");
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> hacked and disabled the security system!");
|
||||||
writeInfiltrationStatusText("The facility's security level increased by " + ((res[1]*100) - 100).toString() + "%");
|
writeInfiltrationStatusText("The facility's security level increased by " + ((res[1]*100) - 100).toString() + "%");
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED to hack the security system. The facility's " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to hack the security system. The facility's " +
|
||||||
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
}
|
}
|
||||||
updateInfiltrationButtons(inst, scenario);
|
updateInfiltrationButtons(inst, scenario);
|
||||||
@ -321,12 +321,12 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationDestroySecurity(inst);
|
var res = attemptInfiltrationDestroySecurity(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY and violently destroy the security system!");
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> and violently destroy the security system!");
|
||||||
writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED to destroy the security system. The facility's " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to destroy the security system. The facility's " +
|
||||||
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
}
|
}
|
||||||
updateInfiltrationButtons(inst, scenario);
|
updateInfiltrationButtons(inst, scenario);
|
||||||
@ -338,11 +338,11 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationSneak(inst);
|
var res = attemptInfiltrationSneak(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY sneak past the security undetected!");
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> sneak past the security undetected!");
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED and were detected while trying to sneak past security! The facility's " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> and were detected while trying to sneak past security! The facility's " +
|
||||||
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
}
|
}
|
||||||
updateInfiltrationButtons(inst, scenario);
|
updateInfiltrationButtons(inst, scenario);
|
||||||
@ -354,12 +354,12 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationPickLockedDoor(inst);
|
var res = attemptInfiltrationPickLockedDoor(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY pick the locked door!");
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> pick the locked door!");
|
||||||
writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED to pick the locked door. The facility's security level " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to pick the locked door. The facility's security level " +
|
||||||
"increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
}
|
}
|
||||||
updateInfiltrationButtons(inst, scenario);
|
updateInfiltrationButtons(inst, scenario);
|
||||||
@ -377,13 +377,13 @@ function nextInfiltrationLevel(inst) {
|
|||||||
}
|
}
|
||||||
var res = attemptInfiltrationBribe(inst);
|
var res = attemptInfiltrationBribe(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY bribed a guard to let you through " +
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> bribed a guard to let you through " +
|
||||||
"to the next clearance level for $" + bribeAmt);
|
"to the next clearance level for $" + bribeAmt);
|
||||||
Player.loseMoney(bribeAmt);
|
Player.loseMoney(bribeAmt);
|
||||||
endInfiltrationLevel(inst);
|
endInfiltrationLevel(inst);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED to bribe a guard! The guard is alerting " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to bribe a guard! The guard is alerting " +
|
||||||
"other security guards about your presence! The facility's " +
|
"other security guards about your presence! The facility's " +
|
||||||
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
}
|
}
|
||||||
@ -396,12 +396,12 @@ function nextInfiltrationLevel(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
var res = attemptInfiltrationEscape(inst);
|
var res = attemptInfiltrationEscape(inst);
|
||||||
if (res[0]) {
|
if (res[0]) {
|
||||||
writeInfiltrationStatusText("You SUCCESSFULLY escape from the facility with the stolen classified " +
|
writeInfiltrationStatusText("You <span class='success'>SUCCESSFULLY</span> escape from the facility with the stolen classified " +
|
||||||
"documents and company secrets!");
|
"documents and company secrets!");
|
||||||
endInfiltration(inst, true);
|
endInfiltration(inst, true);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
writeInfiltrationStatusText("You FAILED to escape from the facility. You took 1 damage. The facility's " +
|
writeInfiltrationStatusText("You <span class='failure'>FAILED</span> to escape from the facility. You took 1 damage. The facility's " +
|
||||||
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
"security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%");
|
||||||
if (Player.takeDamage(1)) {
|
if (Player.takeDamage(1)) {
|
||||||
endInfiltration(inst, false);
|
endInfiltration(inst, false);
|
||||||
@ -429,9 +429,9 @@ function endInfiltrationLevel(inst) {
|
|||||||
BitNodeMultipliers.InfiltrationMoney;
|
BitNodeMultipliers.InfiltrationMoney;
|
||||||
inst.secretsStolen.push(baseSecretValue);
|
inst.secretsStolen.push(baseSecretValue);
|
||||||
dialogBoxCreate("You found and stole a set of classified documents from the company. " +
|
dialogBoxCreate("You found and stole a set of classified documents from the company. " +
|
||||||
"These classified secrets could probably be sold for money ($" +
|
"These classified secrets could probably be sold for money (<span class='money-gold'>$" +
|
||||||
formatNumber(secretMoneyValue, 2) + "), or they " +
|
formatNumber(secretMoneyValue, 2) + "</span>), or they " +
|
||||||
"could be given to factions for reputation (" + formatNumber(secretValue, 3) + " rep)");
|
"could be given to factions for reputation (<span class='light-yellow'>" + formatNumber(secretValue, 3) + " rep</span>)");
|
||||||
}
|
}
|
||||||
|
|
||||||
//Increase security level based on difficulty
|
//Increase security level based on difficulty
|
||||||
@ -469,17 +469,18 @@ function updateInfiltrationLevelText(inst) {
|
|||||||
|
|
||||||
var expMultiplier = 2 * inst.clearanceLevel / inst.maxClearanceLevel;
|
var expMultiplier = 2 * inst.clearanceLevel / inst.maxClearanceLevel;
|
||||||
document.getElementById("infiltration-level-text").innerHTML =
|
document.getElementById("infiltration-level-text").innerHTML =
|
||||||
"Facility name: " + inst.companyName + "<br>" +
|
"Facility name: " + inst.companyName + "<br>" +
|
||||||
"Clearance Level: " + inst.clearanceLevel + "<br>" +
|
"Clearance Level: " + inst.clearanceLevel + "<br>" +
|
||||||
"Security Level: " + formatNumber(inst.securityLevel, 3) + "<br><br>" +
|
"Security Level: " + formatNumber(inst.securityLevel, 3) + "<br><br>" +
|
||||||
"Total reputation value of secrets stolen: " + formatNumber(totalValue, 3) + "<br>" +
|
"Total value of stolen secrets<br>" +
|
||||||
"Total monetary value of secrets stolen: $" + formatNumber(totalMoneyValue, 2) + "<br><br>" +
|
"Reputation: <span class='light-yellow'>" + formatNumber(totalValue, 3) + "</span><br>" +
|
||||||
"Hack exp gained: " + formatNumber(inst.hackingExpGained * expMultiplier, 3) + "<br>" +
|
"Money: <span class='money-gold'>$" + formatNumber(totalMoneyValue, 2) + "</span><br><br>" +
|
||||||
"Str exp gained: " + formatNumber(inst.strExpGained * expMultiplier, 3) + "<br>" +
|
"Hack exp gained: " + formatNumber(inst.hackingExpGained * expMultiplier, 3) + "<br>" +
|
||||||
"Def exp gained: " + formatNumber(inst.defExpGained * expMultiplier, 3) + "<br>" +
|
"Str exp gained: " + formatNumber(inst.strExpGained * expMultiplier, 3) + "<br>" +
|
||||||
"Dex exp gained: " + formatNumber(inst.dexExpGained * expMultiplier, 3) + "<br>" +
|
"Def exp gained: " + formatNumber(inst.defExpGained * expMultiplier, 3) + "<br>" +
|
||||||
"Agi exp gained: " + formatNumber(inst.agiExpGained * expMultiplier, 3) + "<br>" +
|
"Dex exp gained: " + formatNumber(inst.dexExpGained * expMultiplier, 3) + "<br>" +
|
||||||
"Cha exp gained: " + formatNumber(inst.chaExpGained * expMultiplier, 3);
|
"Agi exp gained: " + formatNumber(inst.agiExpGained * expMultiplier, 3) + "<br>" +
|
||||||
|
"Cha exp gained: " + formatNumber(inst.chaExpGained * expMultiplier, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateInfiltrationButtons(inst, scenario) {
|
function updateInfiltrationButtons(inst, scenario) {
|
||||||
|
@ -1001,7 +1001,7 @@ function displayLocationContent() {
|
|||||||
slumsDealDrugs.innerHTML = "Deal Drugs (" + (drugsChance*100).toFixed(3) + "% chance of success)";
|
slumsDealDrugs.innerHTML = "Deal Drugs (" + (drugsChance*100).toFixed(3) + "% chance of success)";
|
||||||
slumsDealDrugs.innerHTML += '<span class="tooltiptext"> Attempt to deal drugs </span>';
|
slumsDealDrugs.innerHTML += '<span class="tooltiptext"> Attempt to deal drugs </span>';
|
||||||
slumsBondForgery.style.display = "block";
|
slumsBondForgery.style.display = "block";
|
||||||
slumsBondForgery.innerHTML = "Bond Forgery(" + (bondChance*100).toFixed(3) + "% chance of success)";
|
slumsBondForgery.innerHTML = "Bond Forgery (" + (bondChance*100).toFixed(3) + "% chance of success)";
|
||||||
slumsBondForgery.innerHTML += "<span class='tooltiptext'> Attempt to forge corporate bonds</span>";
|
slumsBondForgery.innerHTML += "<span class='tooltiptext'> Attempt to forge corporate bonds</span>";
|
||||||
slumsTrafficArms.style.display = "block";
|
slumsTrafficArms.style.display = "block";
|
||||||
slumsTrafficArms.innerHTML = "Traffick Illegal Arms (" + (armsChance*100).toFixed(3) + "% chance of success)";
|
slumsTrafficArms.innerHTML = "Traffick Illegal Arms (" + (armsChance*100).toFixed(3) + "% chance of success)";
|
||||||
|
@ -1010,7 +1010,7 @@ PlayerObject.prototype.workForFaction = function(numCycles) {
|
|||||||
|
|
||||||
var txt = document.getElementById("work-in-progress-text");
|
var txt = document.getElementById("work-in-progress-text");
|
||||||
txt.innerHTML = "You are currently " + this.currentWorkFactionDescription + " for your faction " + faction.name +
|
txt.innerHTML = "You are currently " + this.currentWorkFactionDescription + " for your faction " + faction.name +
|
||||||
" (Current Faction Reputation: " + formatNumber(faction.playerReputation, 0) + "). " +
|
" (Current Faction Reputation: " + formatNumber(faction.playerReputation, 0) + "). <br>" +
|
||||||
"You have been doing this for " + convertTimeMsToTimeElapsedString(this.timeWorked) + "<br><br>" +
|
"You have been doing this for " + convertTimeMsToTimeElapsedString(this.timeWorked) + "<br><br>" +
|
||||||
"You have earned: <br><br>" +
|
"You have earned: <br><br>" +
|
||||||
"$" + formatNumber(this.workMoneyGained, 2) + " (" + formatNumber(this.workMoneyGainRate * CYCLES_PER_SEC, 2) + " / sec) <br><br>" +
|
"$" + formatNumber(this.workMoneyGained, 2) + " (" + formatNumber(this.workMoneyGainRate * CYCLES_PER_SEC, 2) + " / sec) <br><br>" +
|
||||||
|
@ -516,9 +516,9 @@ function loadImportedGame(saveObj, saveString) {
|
|||||||
|
|
||||||
Player.lastUpdate = Engine._lastUpdate;
|
Player.lastUpdate = Engine._lastUpdate;
|
||||||
Engine.start(); //Run main game loop and Scripts loop
|
Engine.start(); //Run main game loop and Scripts loop
|
||||||
dialogBoxCreate("While you were offline, your scripts generated $" +
|
dialogBoxCreate("While you were offline, your scripts generated <span class='money-gold'>$" +
|
||||||
formatNumber(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" +
|
formatNumber(offlineProductionFromScripts, 2) + "</span> and your Hacknet Nodes generated <span class='money-gold'>$" +
|
||||||
formatNumber(offlineProductionFromHacknetNodes, 2));
|
formatNumber(offlineProductionFromHacknetNodes, 2) + "</span>");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,10 +68,10 @@ $(document).keydown(function(event) {
|
|||||||
event.preventDefault(); //Prevent newline from being entered in Script Editor
|
event.preventDefault(); //Prevent newline from being entered in Script Editor
|
||||||
var command = $('input[class=terminal-input]').val();
|
var command = $('input[class=terminal-input]').val();
|
||||||
post(
|
post(
|
||||||
"[" +
|
"<span class='prompt'>[" +
|
||||||
(FconfSettings.ENABLE_TIMESTAMPS ? getTimestamp() + " " : "") +
|
(FconfSettings.ENABLE_TIMESTAMPS ? getTimestamp() + " " : "") +
|
||||||
Player.getCurrentServer().hostname +
|
Player.getCurrentServer().hostname +
|
||||||
" ~]> " + command
|
" ~]></span> " + command
|
||||||
);
|
);
|
||||||
|
|
||||||
if (command.length > 0) {
|
if (command.length > 0) {
|
||||||
@ -525,7 +525,7 @@ let Terminal = {
|
|||||||
|
|
||||||
resetTerminalInput: function() {
|
resetTerminalInput: function() {
|
||||||
document.getElementById("terminal-input-td").innerHTML =
|
document.getElementById("terminal-input-td").innerHTML =
|
||||||
"<div id='terminal-input-header'>[" + Player.getCurrentServer().hostname + " ~]" + "$ </div>" +
|
"<div id='terminal-input-header' class='prompt'>[" + Player.getCurrentServer().hostname + " ~]" + "$ </div>" +
|
||||||
'<input type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1"/>';
|
'<input type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1"/>';
|
||||||
var hdr = document.getElementById("terminal-input-header");
|
var hdr = document.getElementById("terminal-input-header");
|
||||||
hdr.style.display = "inline";
|
hdr.style.display = "inline";
|
||||||
|
@ -1324,9 +1324,9 @@ const Engine = {
|
|||||||
Player.lastUpdate = Engine._lastUpdate;
|
Player.lastUpdate = Engine._lastUpdate;
|
||||||
Engine.start(); //Run main game loop and Scripts loop
|
Engine.start(); //Run main game loop and Scripts loop
|
||||||
removeLoadingScreen();
|
removeLoadingScreen();
|
||||||
dialogBoxCreate("While you were offline, your scripts generated $" +
|
dialogBoxCreate("While you were offline, your scripts generated <span class='money-gold'>$" +
|
||||||
formatNumber(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" +
|
formatNumber(offlineProductionFromScripts, 2) + "</span> and your Hacknet Nodes generated <span class='money-gold'>$" +
|
||||||
formatNumber(offlineProductionFromHacknetNodes, 2));
|
formatNumber(offlineProductionFromHacknetNodes, 2) + "</span>");
|
||||||
//Close main menu accordions for loaded game
|
//Close main menu accordions for loaded game
|
||||||
var visibleMenuTabs = [terminal, createScript, activeScripts, stats,
|
var visibleMenuTabs = [terminal, createScript, activeScripts, stats,
|
||||||
hacknetnodes, city, tutorial, options, dev];
|
hacknetnodes, city, tutorial, options, dev];
|
||||||
|
@ -189,9 +189,9 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
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>
|
||||||
<p id="active-scripts-total-prod">Total online production of
|
<p id="active-scripts-total-prod">Total online production of
|
||||||
Active scripts: <span id="active-scripts-total-production-active">$0.000</span> / sec<br />
|
Active scripts: <span class="money-gold"><span id="active-scripts-total-production-active">$0.000</span> / sec</span><br />
|
||||||
Total online production since last Aug installation: <span id="active-scripts-total-prod-aug-total">$0.000</span>
|
Total online production since last Aug installation: <span id="active-scripts-total-prod-aug-total" class="money-gold">$0.000</span>
|
||||||
(<span id="active-scripts-total-prod-aug-avg">$0.000</span> / sec)</p>
|
(<span class="money-gold"><span id="active-scripts-total-prod-aug-avg" class="money-gold">$0.000</span> / sec</span>)</p>
|
||||||
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -203,20 +203,20 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
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
|
||||||
the world to anonymously share computing power and perform distributed cyberattacks without the
|
the world to anonymously share computing power and perform distributed cyberattacks without the
|
||||||
fear of being traced.
|
fear of being traced.
|
||||||
<br><br>
|
<br /><br />
|
||||||
Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its
|
Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its
|
||||||
resources to the Hacknet network. This allows you to take a small percentage of profits
|
resources to the Hacknet network. This allows you to take a small percentage of profits
|
||||||
from hacks performed on the network. Essentially, you are renting out your Node's computing power.
|
from hacks performed on the network. Essentially, you are renting out your Node's computing power.
|
||||||
<br><br>
|
<br /><br />
|
||||||
Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded
|
Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded
|
||||||
in order to increase its computing power and thereby increase the profit you earn from it.
|
in order to increase its computing power and thereby increase the profit you earn from it.
|
||||||
</p>
|
</p>
|
||||||
<a id="hacknet-nodes-purchase-button" class="a-link-button"> Purchase Hacknet Node </a>
|
<a id="hacknet-nodes-purchase-button" class="a-link-button"> Purchase Hacknet Node </a>
|
||||||
<br>
|
<br />
|
||||||
<div id="hacknet-nodes-money-multipliers-div">
|
<div id="hacknet-nodes-money-multipliers-div">
|
||||||
<p id="hacknet-nodes-money">
|
<p id="hacknet-nodes-money">
|
||||||
<span>Money:</span><span id="hacknet-nodes-player-money"></span><br/>
|
<span>Money:</span><span id="hacknet-nodes-player-money" class="money-gold"></span><br />
|
||||||
<span>Total Hacknet Node Production:</span><span id="hacknet-nodes-total-production"></span>
|
<span>Total Hacknet Node Production:</span><span id="hacknet-nodes-total-production" class="money-gold"></span>
|
||||||
</p>
|
</p>
|
||||||
<span id="hacknet-nodes-multipliers">
|
<span id="hacknet-nodes-multipliers">
|
||||||
<a id="hacknet-nodes-1x-multiplier" class="a-link-button-inactive"> x1 </a>
|
<a id="hacknet-nodes-1x-multiplier" class="a-link-button-inactive"> x1 </a>
|
||||||
@ -627,7 +627,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
<p id="location-slums-description">
|
<p id="location-slums-description">
|
||||||
You have entered the Slums, a poverty-ridden district filled with gangs, criminals, and
|
You have entered the Slums, a poverty-ridden district filled with gangs, criminals, and
|
||||||
other shadowy entities. The city's government and police have neglected this area for years...
|
other shadowy entities. The city's government and police have neglected this area for years...
|
||||||
<br><br><br>
|
<br /><br /><br />
|
||||||
In the Slums, you can commit crimes to earn money and experience. Crime attempts are not always
|
In the Slums, you can commit crimes to earn money and experience. Crime attempts are not always
|
||||||
successful. Your chance at successfully committing a crime is determined by your stats.
|
successful. Your chance at successfully committing a crime is determined by your stats.
|
||||||
</p>
|
</p>
|
||||||
@ -674,7 +674,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
|
|
||||||
<div id="stock-market-container" class="generic-menupage-container">
|
<div id="stock-market-container" class="generic-menupage-container">
|
||||||
<p>
|
<p>
|
||||||
Welcome to the World Stock Exchange (WSE)! <br><br>
|
Welcome to the World Stock Exchange (WSE)! <br /><br />
|
||||||
|
|
||||||
To begin trading, you must first purchase an account. WSE accounts will persist
|
To begin trading, you must first purchase an account. WSE accounts will persist
|
||||||
after you 'reset' by installing Augmentations.
|
after you 'reset' by installing Augmentations.
|
||||||
@ -687,7 +687,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
TIX, short for Trade Information eXchange, is the communications protocol supported by the WSE.
|
TIX, short for Trade Information eXchange, is the communications protocol supported by the WSE.
|
||||||
Purchasing access to the TIX API lets you write code to create your own algorithmic/automated
|
Purchasing access to the TIX API lets you write code to create your own algorithmic/automated
|
||||||
trading strategies.
|
trading strategies.
|
||||||
<br><br>
|
<br /><br />
|
||||||
If you purchase access to the TIX API, you will retain that access even after
|
If you purchase access to the TIX API, you will retain that access even after
|
||||||
you 'reset' by installing Augmentations.
|
you 'reset' by installing Augmentations.
|
||||||
</p>
|
</p>
|
||||||
@ -697,7 +697,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
<p>
|
<p>
|
||||||
Four Sigma's (4S) Market Data Feed provides information about stocks
|
Four Sigma's (4S) Market Data Feed provides information about stocks
|
||||||
that will help your trading strategies.
|
that will help your trading strategies.
|
||||||
<br><br>
|
<br /><br />
|
||||||
If you purchase access to 4S Market Data and/or the 4S TIX API, you will
|
If you purchase access to 4S Market Data and/or the 4S TIX API, you will
|
||||||
retain that access even after you 'reset' by installing Augmentations.
|
retain that access even after you 'reset' by installing Augmentations.
|
||||||
</p>
|
</p>
|
||||||
@ -715,7 +715,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
<a id="stock-market-mode" class="a-link-button tooltip"></a>
|
<a id="stock-market-mode" class="a-link-button tooltip"></a>
|
||||||
<a id="stock-market-expand-tickers" class="a-link-button tooltip">Expand tickers</a>
|
<a id="stock-market-expand-tickers" class="a-link-button tooltip">Expand tickers</a>
|
||||||
<a id="stock-market-collapse-tickers" class="a-link-button tooltip">Collapse tickers</a>
|
<a id="stock-market-collapse-tickers" class="a-link-button tooltip">Collapse tickers</a>
|
||||||
<br><br>
|
<br /><br />
|
||||||
<input id="stock-market-watchlist-filter" type="text" placeholder="Filter Stocks by symbol (comma-separated list)"/>
|
<input id="stock-market-watchlist-filter" type="text" placeholder="Filter Stocks by symbol (comma-separated list)"/>
|
||||||
<a id="stock-market-watchlist-filter-update" class="a-link-button"> Update Watchlist </a>
|
<a id="stock-market-watchlist-filter-update" class="a-link-button"> Update Watchlist </a>
|
||||||
<ul id="stock-market-list" style="list-style:none;">
|
<ul id="stock-market-list" style="list-style:none;">
|
||||||
@ -757,7 +757,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
<p id="faction-invitation-box-text"> </p>
|
<p id="faction-invitation-box-text"> </p>
|
||||||
<p id="faction-invitation-box-message"> </p>
|
<p id="faction-invitation-box-message"> </p>
|
||||||
<p id="faction-invitation-box-warning">
|
<p id="faction-invitation-box-warning">
|
||||||
Would you like to join? <br> <br>
|
Would you like to join? <br /> <br />
|
||||||
Warning: Joining this faction may prevent you from joining other factions during this run!
|
Warning: Joining this faction may prevent you from joining other factions during this run!
|
||||||
</p>
|
</p>
|
||||||
<span id="faction-invitation-box-yes" class="popup-box-button"> Yes </span>
|
<span id="faction-invitation-box-yes" class="popup-box-button"> Yes </span>
|
||||||
@ -770,8 +770,8 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
<div id="infiltration-box-content" class="popup-box-content">
|
<div id="infiltration-box-content" class="popup-box-content">
|
||||||
<p id="infiltration-box-text"> </p>
|
<p id="infiltration-box-text"> </p>
|
||||||
|
|
||||||
<span id="infiltration-box-sell" class="a-link-button"> Sell on Black Market </span> <br><br>
|
<span id="infiltration-box-sell" class="a-link-button"> Sell on Black Market </span> <br /><br />
|
||||||
<select id="infiltration-faction-select"> </select> <br>
|
<select id="infiltration-faction-select"> </select> <br />
|
||||||
<span id="infiltration-box-faction" class="a-link-button"> Give to Faction for Reputation </span>
|
<span id="infiltration-box-faction" class="a-link-button"> Give to Faction for Reputation </span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -857,7 +857,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
<div id="game-options-content" class="game-options-box">
|
<div id="game-options-content" class="game-options-box">
|
||||||
<span id="game-options-close-button">×</span>
|
<span id="game-options-close-button">×</span>
|
||||||
<h1> Game Options </h1>
|
<h1> Game Options </h1>
|
||||||
<br>
|
<br />
|
||||||
<div id="game-options-left-panel">
|
<div id="game-options-left-panel">
|
||||||
<!-- Netscript execution time -->
|
<!-- Netscript execution time -->
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -57,9 +57,9 @@ function infiltrationBoxCreate(inst) {
|
|||||||
CONSTANTS.InfiltrationRepValue * BitNodeMultipliers.InfiltrationRep;
|
CONSTANTS.InfiltrationRepValue * BitNodeMultipliers.InfiltrationRep;
|
||||||
var moneyValue = totalValue * CONSTANTS.InfiltrationMoneyValue * BitNodeMultipliers.InfiltrationMoney;
|
var moneyValue = totalValue * CONSTANTS.InfiltrationMoneyValue * BitNodeMultipliers.InfiltrationMoney;
|
||||||
infiltrationSetText("You can sell the classified documents and secrets " +
|
infiltrationSetText("You can sell the classified documents and secrets " +
|
||||||
"you stole from " + inst.companyName + " for $" +
|
"you stole from " + inst.companyName + " for <span class='money-gold'>$" +
|
||||||
formatNumber(moneyValue, 2) + " on the black market or you can give it " +
|
formatNumber(moneyValue, 2) + "</span> on the black market or you can give it " +
|
||||||
"to a faction to gain " + formatNumber(facValue, 3) + " reputation with " +
|
"to a faction to gain <span class='light-yellow'>" + formatNumber(facValue, 3) + " reputation</span> with " +
|
||||||
"that faction.");
|
"that faction.");
|
||||||
var selector = document.getElementById("infiltration-faction-select");
|
var selector = document.getElementById("infiltration-faction-select");
|
||||||
selector.innerHTML = "";
|
selector.innerHTML = "";
|
||||||
@ -85,7 +85,7 @@ function infiltrationBoxCreate(inst) {
|
|||||||
if (!e.isTrusted) {return false;}
|
if (!e.isTrusted) {return false;}
|
||||||
Player.gainMoney(moneyValue);
|
Player.gainMoney(moneyValue);
|
||||||
dialogBoxCreate("You sold the classified information you stole from " + inst.companyName +
|
dialogBoxCreate("You sold the classified information you stole from " + inst.companyName +
|
||||||
" for $" + moneyValue + " on the black market!<br><br>" +
|
" for <span class='money-gold'>$" + formatNumber(moneyValue, 2) + "</span> on the black market!<br><br>" +
|
||||||
"You gained:<br>" +
|
"You gained:<br>" +
|
||||||
formatNumber(inst.hackingExpGained, 3) + " hacking exp<br>" +
|
formatNumber(inst.hackingExpGained, 3) + " hacking exp<br>" +
|
||||||
formatNumber(inst.strExpGained, 3) + " str exp<br>" +
|
formatNumber(inst.strExpGained, 3) + " str exp<br>" +
|
||||||
@ -111,7 +111,7 @@ function infiltrationBoxCreate(inst) {
|
|||||||
}
|
}
|
||||||
faction.playerReputation += facValue;
|
faction.playerReputation += facValue;
|
||||||
dialogBoxCreate("You gave the classified information you stole from " + inst.companyName +
|
dialogBoxCreate("You gave the classified information you stole from " + inst.companyName +
|
||||||
" to " + facName + " and gained " + formatNumber(facValue, 3) + " reputation with the faction. <br><br>" +
|
" to " + facName + " and gained <span class='light-yellow'>" + formatNumber(facValue, 3) + " reputation</span> with the faction. <br><br>" +
|
||||||
"You gained:<br>" +
|
"You gained:<br>" +
|
||||||
formatNumber(inst.hackingExpGained, 3) + " hacking exp<br>" +
|
formatNumber(inst.hackingExpGained, 3) + " hacking exp<br>" +
|
||||||
formatNumber(inst.strExpGained, 3) + " str exp<br>" +
|
formatNumber(inst.strExpGained, 3) + " str exp<br>" +
|
||||||
|
Loading…
Reference in New Issue
Block a user