mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-17 14:59:16 +02:00
Compare commits
116 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d96ad9fa6e | ||
|
|
5dd32ef4e4 | ||
|
|
6dde89f3c4 | ||
|
|
9a9d2e1f81 | ||
|
|
d347bf568e | ||
|
|
62e2f0582a | ||
|
|
68eb68a89e | ||
|
|
13206a8c3e | ||
|
|
8b7f140115 | ||
|
|
16c8c78b54 | ||
|
|
cbb47772db | ||
|
|
0642491402 | ||
|
|
c7e34d4a56 | ||
|
|
8be63be17b | ||
|
|
08207ac79b | ||
|
|
6747a509ff | ||
|
|
c7c86240db | ||
|
|
ce0c3d71f4 | ||
|
|
5bb6a72c90 | ||
|
|
5a06c60c27 | ||
|
|
764c2533b4 | ||
|
|
a9cee6f907 | ||
|
|
a10100bf60 | ||
|
|
cedac23dfa | ||
|
|
f7c1d64033 | ||
|
|
7d6d0eac32 | ||
|
|
34768591b7 | ||
|
|
827c79f70c | ||
|
|
0415c7aa7c | ||
|
|
0c744d98b9 | ||
|
|
11cbda6974 | ||
|
|
e284f49747 | ||
|
|
7777c400a5 | ||
|
|
dae0448744 | ||
|
|
02a4e85353 | ||
|
|
3cbf225c98 | ||
|
|
8006e976a5 | ||
|
|
5613d371c9 | ||
|
|
7c9d6669f7 | ||
|
|
c6f0551709 | ||
|
|
f57eed4de1 | ||
|
|
b99711788f | ||
|
|
08aac8e35d | ||
|
|
e3579b7229 | ||
|
|
662d0dd5fb | ||
|
|
77c40b5d67 | ||
|
|
ee759a8dd6 | ||
|
|
ad9c7ec696 | ||
|
|
c9b5aaa2f7 | ||
|
|
b554328a77 | ||
|
|
c421c57e56 | ||
|
|
fb42d5cd79 | ||
|
|
6203d8d6f4 | ||
|
|
d422028737 | ||
|
|
136d769d55 | ||
|
|
daaab1d6f1 | ||
|
|
4f7befb639 | ||
|
|
9976ed136c | ||
|
|
8c2e661e08 | ||
|
|
e6e598eeb4 | ||
|
|
4d9439a007 | ||
|
|
9951c8b18f | ||
|
|
800c673839 | ||
|
|
065544909b | ||
|
|
4eaf68c940 | ||
|
|
a14a694df3 | ||
|
|
3ab61cbaf3 | ||
|
|
f49aff05d7 | ||
|
|
e2371a0ef6 | ||
|
|
6a2b3ee52e | ||
|
|
5a45e3584d | ||
|
|
56ce83cce5 | ||
|
|
d126b6d8c5 | ||
|
|
7172ef6dae | ||
|
|
a8d0b6e13d | ||
|
|
d2d6453a78 | ||
|
|
89cdecb05f | ||
|
|
81fdff9068 | ||
|
|
34a20802c9 | ||
|
|
6d53ff109b | ||
|
|
8eab9f3b59 | ||
|
|
f40faadcc4 | ||
|
|
fb129198a6 | ||
|
|
3eecff1de6 | ||
|
|
d745150c45 | ||
|
|
abe0330dc3 | ||
|
|
3fad505096 | ||
|
|
b2ac383b69 | ||
|
|
77cb63e36a | ||
|
|
7df4aac8e6 | ||
|
|
50b490ba8d | ||
|
|
15bd8a6233 | ||
|
|
20c593b236 | ||
|
|
52a80ad236 | ||
|
|
b2aafea656 | ||
|
|
135df8703c | ||
|
|
4743801e86 | ||
|
|
4e5ebcfe6f | ||
|
|
80b703639e | ||
|
|
0afdba8f38 | ||
|
|
925e96345d | ||
|
|
db2bf79e3b | ||
|
|
6f330efc44 | ||
|
|
708c73fa0f | ||
|
|
c7febd5551 | ||
|
|
ddbdf66d00 | ||
|
|
e572c6dad8 | ||
|
|
ff097db1e2 | ||
|
|
ad12f0e551 | ||
|
|
93f8785ec6 | ||
|
|
8e79658e67 | ||
|
|
9840e1f4eb | ||
|
|
d170693da4 | ||
|
|
8f30e60d08 | ||
|
|
101834fcaf | ||
|
|
63da8d709a |
@@ -2,3 +2,7 @@ node_modules/
|
|||||||
doc/build/
|
doc/build/
|
||||||
dist/
|
dist/
|
||||||
tests/*.bundle.*
|
tests/*.bundle.*
|
||||||
|
src/ThirdParty/*
|
||||||
|
src/ScriptEditor/CodeMirrorNetscriptMode.js
|
||||||
|
src/ScriptEditor/CodeMirrorNetscriptLint.js
|
||||||
|
src/JSInterpreter.js
|
||||||
627
.eslintrc.js
627
.eslintrc.js
File diff suppressed because it is too large
Load Diff
23
README_contribution.md
Normal file
23
README_contribution.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Deploying a new version
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Update the following
|
||||||
|
- `src/Constants.ts` `Version` and `LatestUpdate`
|
||||||
|
- `package.json` `version`
|
||||||
|
- `doc/source/conf.py` `version` and `release`
|
||||||
|
- `doc/source/changelog.rst`
|
||||||
|
- post to discord
|
||||||
|
- post to reddit.com/r/Bitburner
|
||||||
|
|
||||||
|
Deploying `dev` to the Beta Branch
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
Development Workflow Best Practices
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
- Work in a new branch forked from the `dev` branch to isolate your new code
|
||||||
|
- Keep code-changes on a branch as small as possible. This makes it easier for code review. Each branch should be its own independent feature.
|
||||||
|
- Regularly rebase your branch against `dev` to make sure you have the latest updates pulled.
|
||||||
|
- When merging, always merge your branch into `dev`. When releasing a new update, then merge `dev` into `master`
|
||||||
24
css/casino.scss
Normal file
24
css/casino.scss
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
.casino-card {
|
||||||
|
padding: 10px;
|
||||||
|
border: solid 1px #808080;
|
||||||
|
background-color: white;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-size: 14pt;
|
||||||
|
text-align: center;
|
||||||
|
margin: 3px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.casino-card .value {
|
||||||
|
font-size:15pt;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.casino-card.red {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.casino-card.black {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
@@ -43,9 +43,9 @@
|
|||||||
background-color: #444;
|
background-color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-stat-cell {
|
.character-stat-cell {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#character-hack-wrapper td,
|
#character-hack-wrapper td,
|
||||||
#character-agi-wrapper td {
|
#character-agi-wrapper td {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#codemirror-form-wrapper {
|
#codemirror-form-wrapper {
|
||||||
height: 80%;
|
height: 80%;
|
||||||
margin: 10px 0px 0px 6px;
|
margin: 10px 0 0 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CodeMirror {
|
.CodeMirror {
|
||||||
@@ -22,11 +22,11 @@
|
|||||||
* Highlight matches
|
* Highlight matches
|
||||||
*/
|
*/
|
||||||
.cm-matchhighlight {
|
.cm-matchhighlight {
|
||||||
background-color: #8F908A;
|
background-color: #8f908a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CodeMirror-selection-highlight-scrollbar {
|
.CodeMirror-selection-highlight-scrollbar {
|
||||||
background-color: #8F908A;
|
background-color: #8f908a;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
.cm-whitespace::before {
|
.cm-whitespace::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
color: #404F7D;
|
color: #404f7d;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,36 +1,36 @@
|
|||||||
.add-exp-button {
|
.add-exp-button {
|
||||||
margin-right: 0px;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.remove-exp-button {
|
.remove-exp-button {
|
||||||
margin-left:0px;
|
margin-left:0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exp-input {
|
.exp-input {
|
||||||
margin-right: 0px;
|
margin-right: 0;
|
||||||
margin-left:0px;
|
margin-left:0;
|
||||||
|
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
|
||||||
padding: 2px 5px;
|
padding: 2px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-center {
|
.text-center {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.touch-right {
|
.touch-right {
|
||||||
margin-right: 0px;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.touch-left {
|
.touch-left {
|
||||||
margin-left: 0px;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.touch-sides {
|
.touch-sides {
|
||||||
margin-left: 0px;
|
margin-left: 0;
|
||||||
margin-right: 0px;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
|
|||||||
2
css/grid.min.css
vendored
2
css/grid.min.css
vendored
File diff suppressed because one or more lines are too long
@@ -184,5 +184,4 @@
|
|||||||
|
|
||||||
#infiltration-buttons .a-link-button {
|
#infiltration-buttons .a-link-button {
|
||||||
display: inline;
|
display: inline;
|
||||||
width: 25%;
|
|
||||||
}
|
}
|
||||||
|
|||||||
5
css/milestones.scss
Normal file
5
css/milestones.scss
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#milestones-container {
|
||||||
|
position: fixed;
|
||||||
|
padding: 6px;
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.level-2 {
|
&.level-2 {
|
||||||
color: #48D1CC;
|
color: #48d1cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.level-3 {
|
&.level-3 {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/**
|
/**
|
||||||
* Styling for the Re-Sleeving Page
|
* Styling for the Re-Sleeving Page
|
||||||
*/
|
*/
|
||||||
@import "theme";
|
@import "theme";
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
.resleeve-panel {
|
.resleeve-panel {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0px;
|
margin: 0;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
.sleeve-panel {
|
.sleeve-panel {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0px;
|
margin: 0;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
|||||||
@@ -228,14 +228,15 @@ a:visited {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.status-text {
|
.status-text {
|
||||||
display: inline-block;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
-webkit-animation: status-text 3s 1;
|
-webkit-animation: status-text 3s 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#status-text-container {
|
#status-text-container {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
left:50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#status-text {
|
#status-text {
|
||||||
@@ -356,43 +357,68 @@ a:visited {
|
|||||||
color: $my-stat-cha-color;
|
color: $my-stat-cha-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reputation {
|
||||||
|
color: $light-yellow;
|
||||||
|
}
|
||||||
|
|
||||||
.smallfont {
|
.smallfont {
|
||||||
font-size: $defaultFontSize * 0.8125;
|
font-size: $defaultFontSize * 0.8125;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.samefont {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.noscrollbar {
|
||||||
|
-ms-overflow-style: none; /* IE and Edge */
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
}
|
||||||
|
|
||||||
|
.noscrollbar::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
input[type=checkbox] {
|
input[type=checkbox] {
|
||||||
filter: invert(1) sepia(1) hue-rotate(41deg) brightness(100%) saturate(10);
|
filter: invert(1) sepia(1) hue-rotate(41deg) brightness(100%) saturate(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
.optionCheckbox {
|
.optionCheckbox {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.optionRange {
|
.optionRange {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
background: #777;
|
background: #777;
|
||||||
outline: none;
|
outline: none;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
-webkit-transition: .2s;
|
-webkit-transition: 0.2s;
|
||||||
transition: opacity .2s;
|
transition: opacity 0.2s;
|
||||||
margin: 3px;
|
margin: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.optionRange::-webkit-slider-thumb {
|
.optionRange::-webkit-slider-thumb {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
width: 10px;
|
width: 10px;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
background: var(--my-font-color);
|
background: var(--my-font-color);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.optionRange::-moz-range-thumb {
|
.optionRange::-moz-range-thumb {
|
||||||
width: 10px;
|
width: 10px;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
background: var(--my-font-color);
|
background: var(--my-font-color);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.noselect {
|
||||||
|
-moz-user-select: -moz-none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translate(-100%, -100%);
|
transform: translate(-100%, -100%);
|
||||||
|
|
||||||
/* Backwards compatibility */
|
/* Backwards compatibility */
|
||||||
-webkit-transform: translate(-100%, -100%);
|
-webkit-transform: translate(-100%, -100%);
|
||||||
-moz-transform: translate(-100%, -100%);
|
-moz-transform: translate(-100%, -100%);
|
||||||
-o-transform: translate(-100%, -100%);
|
-o-transform: translate(-100%, -100%);
|
||||||
@@ -85,3 +85,45 @@
|
|||||||
.tooltip:hover .tooltiptextlow {
|
.tooltip:hover .tooltiptextlow {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.copy_tooltip {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy_tooltip_copied {
|
||||||
|
color: #fff;
|
||||||
|
transition: color 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy_tooltip .copy_tooltip_text {
|
||||||
|
visibility: hidden;
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: var(--my-background-color);
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: 120%;
|
||||||
|
left: 5%;
|
||||||
|
opacity: 0;
|
||||||
|
border: 2px solid var(--my-highlight-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy_tooltip .copy_tooltip_text::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 100%;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -6px;
|
||||||
|
border-width: 8px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent transparent white transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy_tooltip .copy_tooltip_text_visible {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
transition: opacity 0.3s;
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,16 +7,16 @@
|
|||||||
.Treant.Treant-loaded .pseudo { visibility: visible; }
|
.Treant.Treant-loaded .pseudo { visibility: visible; }
|
||||||
.Treant > .pseudo { width: 0; height: 0; border: none; padding: 0; }
|
.Treant > .pseudo { width: 0; height: 0; border: none; padding: 0; }
|
||||||
.Treant .collapse-switch { width: 3px; height: 3px; display: block; border: 1px solid black; position: absolute; top: 1px; right: 1px; cursor: pointer; }
|
.Treant .collapse-switch { width: 3px; height: 3px; display: block; border: 1px solid black; position: absolute; top: 1px; right: 1px; cursor: pointer; }
|
||||||
.Treant .collapsed .collapse-switch { background-color: #868DEE; }
|
.Treant .collapsed .collapse-switch { background-color: #868dee; }
|
||||||
.Treant > .node img { border: none; float: left; }
|
.Treant > .node img { border: none; float: left; }
|
||||||
.Treant > .node {
|
.Treant > .node {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
min-width: 60px;
|
min-width: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 2px solid #E8E8E3;
|
border: 2px solid #e8e8e3;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
box-shadow: 1px 1px 1px rgba(0,0,0,.5);
|
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
dist/engine.bundle.js
vendored
4
dist/engine.bundle.js
vendored
File diff suppressed because one or more lines are too long
2
dist/engineStyle.bundle.js
vendored
2
dist/engineStyle.bundle.js
vendored
@@ -1,2 +1,2 @@
|
|||||||
!function(n){function t(t){for(var e,i,f=t[0],c=t[1],l=t[2],p=0,s=[];p<f.length;p++)i=f[p],u[i]&&s.push(u[i][0]),u[i]=0;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&(n[e]=c[e]);for(a&&a(t);s.length;)s.shift()();return r.push.apply(r,l||[]),o()}function o(){for(var n,t=0;t<r.length;t++){for(var o=r[t],e=!0,f=1;f<o.length;f++){var c=o[f];0!==u[c]&&(e=!1)}e&&(r.splice(t--,1),n=i(i.s=o[0]))}return n}var e={},u={1:0},r=[];function i(t){if(e[t])return e[t].exports;var o=e[t]={i:t,l:!1,exports:{}};return n[t].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=n,i.c=e,i.d=function(n,t,o){i.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:o})},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.t=function(n,t){if(1&t&&(n=i(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var e in n)i.d(o,e,function(t){return n[t]}.bind(null,e));return o},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,"a",t),t},i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.p="";var f=window.webpackJsonp=window.webpackJsonp||[],c=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var a=c;r.push([380,0]),o()}({323:function(n,t,o){},325:function(n,t,o){},327:function(n,t,o){},329:function(n,t,o){},331:function(n,t,o){},333:function(n,t,o){},335:function(n,t,o){},337:function(n,t,o){},339:function(n,t,o){},341:function(n,t,o){},343:function(n,t,o){},345:function(n,t,o){},347:function(n,t,o){},349:function(n,t,o){},351:function(n,t,o){},353:function(n,t,o){},355:function(n,t,o){},357:function(n,t,o){},359:function(n,t,o){},361:function(n,t,o){},363:function(n,t,o){},365:function(n,t,o){},367:function(n,t,o){},369:function(n,t,o){},371:function(n,t,o){},373:function(n,t,o){},375:function(n,t,o){},377:function(n,t,o){},380:function(n,t,o){"use strict";o.r(t);o(379),o(377),o(375),o(373),o(371),o(369),o(367),o(365),o(363),o(361),o(359),o(357),o(355),o(353),o(351),o(349),o(347),o(345),o(343),o(341),o(339),o(337),o(335),o(333),o(331),o(329),o(327),o(325),o(323)}});
|
!function(n){function t(t){for(var e,i,f=t[0],c=t[1],l=t[2],p=0,s=[];p<f.length;p++)i=f[p],u[i]&&s.push(u[i][0]),u[i]=0;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&(n[e]=c[e]);for(a&&a(t);s.length;)s.shift()();return r.push.apply(r,l||[]),o()}function o(){for(var n,t=0;t<r.length;t++){for(var o=r[t],e=!0,f=1;f<o.length;f++){var c=o[f];0!==u[c]&&(e=!1)}e&&(r.splice(t--,1),n=i(i.s=o[0]))}return n}var e={},u={1:0},r=[];function i(t){if(e[t])return e[t].exports;var o=e[t]={i:t,l:!1,exports:{}};return n[t].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=n,i.c=e,i.d=function(n,t,o){i.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:o})},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.t=function(n,t){if(1&t&&(n=i(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var e in n)i.d(o,e,function(t){return n[t]}.bind(null,e));return o},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,"a",t),t},i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.p="";var f=window.webpackJsonp=window.webpackJsonp||[],c=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var a=c;r.push([841,0]),o()}({780:function(n,t,o){},782:function(n,t,o){},784:function(n,t,o){},786:function(n,t,o){},788:function(n,t,o){},790:function(n,t,o){},792:function(n,t,o){},794:function(n,t,o){},796:function(n,t,o){},798:function(n,t,o){},800:function(n,t,o){},802:function(n,t,o){},804:function(n,t,o){},806:function(n,t,o){},808:function(n,t,o){},810:function(n,t,o){},812:function(n,t,o){},814:function(n,t,o){},816:function(n,t,o){},818:function(n,t,o){},820:function(n,t,o){},822:function(n,t,o){},824:function(n,t,o){},826:function(n,t,o){},828:function(n,t,o){},830:function(n,t,o){},832:function(n,t,o){},834:function(n,t,o){},836:function(n,t,o){},838:function(n,t,o){},841:function(n,t,o){"use strict";o.r(t);o(840),o(838),o(836),o(834),o(832),o(830),o(828),o(826),o(824),o(822),o(820),o(818),o(816),o(814),o(812),o(810),o(808),o(806),o(804),o(802),o(800),o(798),o(796),o(794),o(792),o(790),o(788),o(786),o(784),o(782),o(780)}});
|
||||||
//# sourceMappingURL=engineStyle.bundle.js.map
|
//# sourceMappingURL=engineStyle.bundle.js.map
|
||||||
333
dist/engineStyle.css
vendored
333
dist/engineStyle.css
vendored
@@ -250,13 +250,14 @@ a:visited {
|
|||||||
opacity: 0; } }
|
opacity: 0; } }
|
||||||
|
|
||||||
.status-text {
|
.status-text {
|
||||||
display: inline-block;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
-webkit-animation: status-text 3s 1; }
|
-webkit-animation: status-text 3s 1; }
|
||||||
|
|
||||||
#status-text-container {
|
#status-text-container {
|
||||||
background-color: transparent; }
|
background-color: transparent;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 50%; }
|
||||||
|
|
||||||
#status-text {
|
#status-text {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
@@ -353,9 +354,24 @@ a:visited {
|
|||||||
.charisma-purple {
|
.charisma-purple {
|
||||||
color: #a671d1; }
|
color: #a671d1; }
|
||||||
|
|
||||||
|
.reputation {
|
||||||
|
color: #faffdf; }
|
||||||
|
|
||||||
.smallfont {
|
.smallfont {
|
||||||
font-size: 13px; }
|
font-size: 13px; }
|
||||||
|
|
||||||
|
.samefont {
|
||||||
|
font-size: inherit; }
|
||||||
|
|
||||||
|
.noscrollbar {
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
/* IE and Edge */
|
||||||
|
scrollbar-width: none;
|
||||||
|
/* Firefox */ }
|
||||||
|
|
||||||
|
.noscrollbar::-webkit-scrollbar {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
input[type=checkbox] {
|
input[type=checkbox] {
|
||||||
filter: invert(1) sepia(1) hue-rotate(41deg) brightness(100%) saturate(10); }
|
filter: invert(1) sepia(1) hue-rotate(41deg) brightness(100%) saturate(10); }
|
||||||
|
|
||||||
@@ -369,8 +385,8 @@ input[type=checkbox] {
|
|||||||
outline: none;
|
outline: none;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
-webkit-transition: .2s;
|
-webkit-transition: 0.2s;
|
||||||
transition: opacity .2s;
|
transition: opacity 0.2s;
|
||||||
margin: 3px; }
|
margin: 3px; }
|
||||||
|
|
||||||
.optionRange::-webkit-slider-thumb {
|
.optionRange::-webkit-slider-thumb {
|
||||||
@@ -387,6 +403,13 @@ input[type=checkbox] {
|
|||||||
background: var(--my-font-color);
|
background: var(--my-font-color);
|
||||||
cursor: pointer; }
|
cursor: pointer; }
|
||||||
|
|
||||||
|
.noselect {
|
||||||
|
-moz-user-select: -moz-none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none; }
|
||||||
|
|
||||||
/* COLORS */
|
/* COLORS */
|
||||||
/* Attributes */
|
/* Attributes */
|
||||||
/* Styling for tooltip-style elements */
|
/* Styling for tooltip-style elements */
|
||||||
@@ -460,6 +483,43 @@ input[type=checkbox] {
|
|||||||
.tooltip:hover .tooltiptextlow {
|
.tooltip:hover .tooltiptextlow {
|
||||||
visibility: visible; }
|
visibility: visible; }
|
||||||
|
|
||||||
|
.copy_tooltip {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block; }
|
||||||
|
|
||||||
|
.copy_tooltip_copied {
|
||||||
|
color: #fff;
|
||||||
|
transition: color 0.3s; }
|
||||||
|
|
||||||
|
.copy_tooltip .copy_tooltip_text {
|
||||||
|
visibility: hidden;
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: var(--my-background-color);
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: 120%;
|
||||||
|
left: 5%;
|
||||||
|
opacity: 0;
|
||||||
|
border: 2px solid var(--my-highlight-color); }
|
||||||
|
|
||||||
|
.copy_tooltip .copy_tooltip_text::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 100%;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -6px;
|
||||||
|
border-width: 8px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent transparent white transparent; }
|
||||||
|
|
||||||
|
.copy_tooltip .copy_tooltip_text_visible {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
transition: opacity 0.3s; }
|
||||||
|
|
||||||
/* COLORS */
|
/* COLORS */
|
||||||
/* Attributes */
|
/* Attributes */
|
||||||
/**
|
/**
|
||||||
@@ -967,7 +1027,7 @@ button {
|
|||||||
*/
|
*/
|
||||||
#codemirror-form-wrapper {
|
#codemirror-form-wrapper {
|
||||||
height: 80%;
|
height: 80%;
|
||||||
margin: 10px 0px 0px 6px; }
|
margin: 10px 0 0 6px; }
|
||||||
|
|
||||||
.CodeMirror {
|
.CodeMirror {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -981,10 +1041,10 @@ button {
|
|||||||
* Highlight matches
|
* Highlight matches
|
||||||
*/
|
*/
|
||||||
.cm-matchhighlight {
|
.cm-matchhighlight {
|
||||||
background-color: #8F908A; }
|
background-color: #8f908a; }
|
||||||
|
|
||||||
.CodeMirror-selection-highlight-scrollbar {
|
.CodeMirror-selection-highlight-scrollbar {
|
||||||
background-color: #8F908A; }
|
background-color: #8f908a; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show Invisibles
|
* Show Invisibles
|
||||||
@@ -992,7 +1052,7 @@ button {
|
|||||||
.cm-whitespace::before {
|
.cm-whitespace::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
color: #404F7D; }
|
color: #404f7d; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vim command display
|
* Vim command display
|
||||||
@@ -1315,8 +1375,7 @@ button {
|
|||||||
margin-top: 20px; }
|
margin-top: 20px; }
|
||||||
|
|
||||||
#infiltration-buttons .a-link-button {
|
#infiltration-buttons .a-link-button {
|
||||||
display: inline;
|
display: inline; }
|
||||||
width: 25%; }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Styling for the Augmentations UI. This is the page that displays all of the
|
* Styling for the Augmentations UI. This is the page that displays all of the
|
||||||
@@ -1356,7 +1415,7 @@ button {
|
|||||||
color: yellow; }
|
color: yellow; }
|
||||||
|
|
||||||
.bitnode.level-2 {
|
.bitnode.level-2 {
|
||||||
color: #48D1CC; }
|
color: #48d1cc; }
|
||||||
|
|
||||||
.bitnode.level-3 {
|
.bitnode.level-3 {
|
||||||
color: blue; }
|
color: blue; }
|
||||||
@@ -2358,7 +2417,7 @@ button {
|
|||||||
|
|
||||||
.sleeve-panel {
|
.sleeve-panel {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0px;
|
margin: 0;
|
||||||
padding: 2px; }
|
padding: 2px; }
|
||||||
.sleeve-panel select {
|
.sleeve-panel select {
|
||||||
display: block; }
|
display: block; }
|
||||||
@@ -2377,7 +2436,7 @@ button {
|
|||||||
|
|
||||||
.resleeve-panel {
|
.resleeve-panel {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0px;
|
margin: 0;
|
||||||
padding: 2px; }
|
padding: 2px; }
|
||||||
|
|
||||||
.resleeve-aug-selector {
|
.resleeve-aug-selector {
|
||||||
@@ -2419,7 +2478,7 @@ button {
|
|||||||
cursor: pointer; }
|
cursor: pointer; }
|
||||||
|
|
||||||
.Treant .collapsed .collapse-switch {
|
.Treant .collapsed .collapse-switch {
|
||||||
background-color: #868DEE; }
|
background-color: #868dee; }
|
||||||
|
|
||||||
.Treant > .node img {
|
.Treant > .node img {
|
||||||
border: none;
|
border: none;
|
||||||
@@ -2430,7 +2489,7 @@ button {
|
|||||||
padding: 4px;
|
padding: 4px;
|
||||||
min-width: 60px;
|
min-width: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 2px solid #E8E8E3;
|
border: 2px solid #e8e8e3;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
|
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
|
||||||
font-size: 12px; }
|
font-size: 12px; }
|
||||||
@@ -4207,34 +4266,34 @@ html {
|
|||||||
margin-left: 0 !important; }
|
margin-left: 0 !important; }
|
||||||
|
|
||||||
.m-1 {
|
.m-1 {
|
||||||
margin: .25rem !important; }
|
margin: 0.25rem !important; }
|
||||||
|
|
||||||
.mt-1, .my-1 {
|
.mt-1, .my-1 {
|
||||||
margin-top: .25rem !important; }
|
margin-top: 0.25rem !important; }
|
||||||
|
|
||||||
.mr-1, .mx-1 {
|
.mr-1, .mx-1 {
|
||||||
margin-right: .25rem !important; }
|
margin-right: 0.25rem !important; }
|
||||||
|
|
||||||
.mb-1, .my-1 {
|
.mb-1, .my-1 {
|
||||||
margin-bottom: .25rem !important; }
|
margin-bottom: 0.25rem !important; }
|
||||||
|
|
||||||
.ml-1, .mx-1 {
|
.ml-1, .mx-1 {
|
||||||
margin-left: .25rem !important; }
|
margin-left: 0.25rem !important; }
|
||||||
|
|
||||||
.m-2 {
|
.m-2 {
|
||||||
margin: .5rem !important; }
|
margin: 0.5rem !important; }
|
||||||
|
|
||||||
.mt-2, .my-2 {
|
.mt-2, .my-2 {
|
||||||
margin-top: .5rem !important; }
|
margin-top: 0.5rem !important; }
|
||||||
|
|
||||||
.mr-2, .mx-2 {
|
.mr-2, .mx-2 {
|
||||||
margin-right: .5rem !important; }
|
margin-right: 0.5rem !important; }
|
||||||
|
|
||||||
.mb-2, .my-2 {
|
.mb-2, .my-2 {
|
||||||
margin-bottom: .5rem !important; }
|
margin-bottom: 0.5rem !important; }
|
||||||
|
|
||||||
.ml-2, .mx-2 {
|
.ml-2, .mx-2 {
|
||||||
margin-left: .5rem !important; }
|
margin-left: 0.5rem !important; }
|
||||||
|
|
||||||
.m-3 {
|
.m-3 {
|
||||||
margin: 1rem !important; }
|
margin: 1rem !important; }
|
||||||
@@ -4297,34 +4356,34 @@ html {
|
|||||||
padding-left: 0 !important; }
|
padding-left: 0 !important; }
|
||||||
|
|
||||||
.p-1 {
|
.p-1 {
|
||||||
padding: .25rem !important; }
|
padding: 0.25rem !important; }
|
||||||
|
|
||||||
.pt-1, .py-1 {
|
.pt-1, .py-1 {
|
||||||
padding-top: .25rem !important; }
|
padding-top: 0.25rem !important; }
|
||||||
|
|
||||||
.pr-1, .px-1 {
|
.pr-1, .px-1 {
|
||||||
padding-right: .25rem !important; }
|
padding-right: 0.25rem !important; }
|
||||||
|
|
||||||
.pb-1, .py-1 {
|
.pb-1, .py-1 {
|
||||||
padding-bottom: .25rem !important; }
|
padding-bottom: 0.25rem !important; }
|
||||||
|
|
||||||
.pl-1, .px-1 {
|
.pl-1, .px-1 {
|
||||||
padding-left: .25rem !important; }
|
padding-left: 0.25rem !important; }
|
||||||
|
|
||||||
.p-2 {
|
.p-2 {
|
||||||
padding: .5rem !important; }
|
padding: 0.5rem !important; }
|
||||||
|
|
||||||
.pt-2, .py-2 {
|
.pt-2, .py-2 {
|
||||||
padding-top: .5rem !important; }
|
padding-top: 0.5rem !important; }
|
||||||
|
|
||||||
.pr-2, .px-2 {
|
.pr-2, .px-2 {
|
||||||
padding-right: .5rem !important; }
|
padding-right: 0.5rem !important; }
|
||||||
|
|
||||||
.pb-2, .py-2 {
|
.pb-2, .py-2 {
|
||||||
padding-bottom: .5rem !important; }
|
padding-bottom: 0.5rem !important; }
|
||||||
|
|
||||||
.pl-2, .px-2 {
|
.pl-2, .px-2 {
|
||||||
padding-left: .5rem !important; }
|
padding-left: 0.5rem !important; }
|
||||||
|
|
||||||
.p-3 {
|
.p-3 {
|
||||||
padding: 1rem !important; }
|
padding: 1rem !important; }
|
||||||
@@ -4398,25 +4457,25 @@ html {
|
|||||||
.ml-sm-0, .mx-sm-0 {
|
.ml-sm-0, .mx-sm-0 {
|
||||||
margin-left: 0 !important; }
|
margin-left: 0 !important; }
|
||||||
.m-sm-1 {
|
.m-sm-1 {
|
||||||
margin: .25rem !important; }
|
margin: 0.25rem !important; }
|
||||||
.mt-sm-1, .my-sm-1 {
|
.mt-sm-1, .my-sm-1 {
|
||||||
margin-top: .25rem !important; }
|
margin-top: 0.25rem !important; }
|
||||||
.mr-sm-1, .mx-sm-1 {
|
.mr-sm-1, .mx-sm-1 {
|
||||||
margin-right: .25rem !important; }
|
margin-right: 0.25rem !important; }
|
||||||
.mb-sm-1, .my-sm-1 {
|
.mb-sm-1, .my-sm-1 {
|
||||||
margin-bottom: .25rem !important; }
|
margin-bottom: 0.25rem !important; }
|
||||||
.ml-sm-1, .mx-sm-1 {
|
.ml-sm-1, .mx-sm-1 {
|
||||||
margin-left: .25rem !important; }
|
margin-left: 0.25rem !important; }
|
||||||
.m-sm-2 {
|
.m-sm-2 {
|
||||||
margin: .5rem !important; }
|
margin: 0.5rem !important; }
|
||||||
.mt-sm-2, .my-sm-2 {
|
.mt-sm-2, .my-sm-2 {
|
||||||
margin-top: .5rem !important; }
|
margin-top: 0.5rem !important; }
|
||||||
.mr-sm-2, .mx-sm-2 {
|
.mr-sm-2, .mx-sm-2 {
|
||||||
margin-right: .5rem !important; }
|
margin-right: 0.5rem !important; }
|
||||||
.mb-sm-2, .my-sm-2 {
|
.mb-sm-2, .my-sm-2 {
|
||||||
margin-bottom: .5rem !important; }
|
margin-bottom: 0.5rem !important; }
|
||||||
.ml-sm-2, .mx-sm-2 {
|
.ml-sm-2, .mx-sm-2 {
|
||||||
margin-left: .5rem !important; }
|
margin-left: 0.5rem !important; }
|
||||||
.m-sm-3 {
|
.m-sm-3 {
|
||||||
margin: 1rem !important; }
|
margin: 1rem !important; }
|
||||||
.mt-sm-3, .my-sm-3 {
|
.mt-sm-3, .my-sm-3 {
|
||||||
@@ -4458,25 +4517,25 @@ html {
|
|||||||
.pl-sm-0, .px-sm-0 {
|
.pl-sm-0, .px-sm-0 {
|
||||||
padding-left: 0 !important; }
|
padding-left: 0 !important; }
|
||||||
.p-sm-1 {
|
.p-sm-1 {
|
||||||
padding: .25rem !important; }
|
padding: 0.25rem !important; }
|
||||||
.pt-sm-1, .py-sm-1 {
|
.pt-sm-1, .py-sm-1 {
|
||||||
padding-top: .25rem !important; }
|
padding-top: 0.25rem !important; }
|
||||||
.pr-sm-1, .px-sm-1 {
|
.pr-sm-1, .px-sm-1 {
|
||||||
padding-right: .25rem !important; }
|
padding-right: 0.25rem !important; }
|
||||||
.pb-sm-1, .py-sm-1 {
|
.pb-sm-1, .py-sm-1 {
|
||||||
padding-bottom: .25rem !important; }
|
padding-bottom: 0.25rem !important; }
|
||||||
.pl-sm-1, .px-sm-1 {
|
.pl-sm-1, .px-sm-1 {
|
||||||
padding-left: .25rem !important; }
|
padding-left: 0.25rem !important; }
|
||||||
.p-sm-2 {
|
.p-sm-2 {
|
||||||
padding: .5rem !important; }
|
padding: 0.5rem !important; }
|
||||||
.pt-sm-2, .py-sm-2 {
|
.pt-sm-2, .py-sm-2 {
|
||||||
padding-top: .5rem !important; }
|
padding-top: 0.5rem !important; }
|
||||||
.pr-sm-2, .px-sm-2 {
|
.pr-sm-2, .px-sm-2 {
|
||||||
padding-right: .5rem !important; }
|
padding-right: 0.5rem !important; }
|
||||||
.pb-sm-2, .py-sm-2 {
|
.pb-sm-2, .py-sm-2 {
|
||||||
padding-bottom: .5rem !important; }
|
padding-bottom: 0.5rem !important; }
|
||||||
.pl-sm-2, .px-sm-2 {
|
.pl-sm-2, .px-sm-2 {
|
||||||
padding-left: .5rem !important; }
|
padding-left: 0.5rem !important; }
|
||||||
.p-sm-3 {
|
.p-sm-3 {
|
||||||
padding: 1rem !important; }
|
padding: 1rem !important; }
|
||||||
.pt-sm-3, .py-sm-3 {
|
.pt-sm-3, .py-sm-3 {
|
||||||
@@ -4530,25 +4589,25 @@ html {
|
|||||||
.ml-md-0, .mx-md-0 {
|
.ml-md-0, .mx-md-0 {
|
||||||
margin-left: 0 !important; }
|
margin-left: 0 !important; }
|
||||||
.m-md-1 {
|
.m-md-1 {
|
||||||
margin: .25rem !important; }
|
margin: 0.25rem !important; }
|
||||||
.mt-md-1, .my-md-1 {
|
.mt-md-1, .my-md-1 {
|
||||||
margin-top: .25rem !important; }
|
margin-top: 0.25rem !important; }
|
||||||
.mr-md-1, .mx-md-1 {
|
.mr-md-1, .mx-md-1 {
|
||||||
margin-right: .25rem !important; }
|
margin-right: 0.25rem !important; }
|
||||||
.mb-md-1, .my-md-1 {
|
.mb-md-1, .my-md-1 {
|
||||||
margin-bottom: .25rem !important; }
|
margin-bottom: 0.25rem !important; }
|
||||||
.ml-md-1, .mx-md-1 {
|
.ml-md-1, .mx-md-1 {
|
||||||
margin-left: .25rem !important; }
|
margin-left: 0.25rem !important; }
|
||||||
.m-md-2 {
|
.m-md-2 {
|
||||||
margin: .5rem !important; }
|
margin: 0.5rem !important; }
|
||||||
.mt-md-2, .my-md-2 {
|
.mt-md-2, .my-md-2 {
|
||||||
margin-top: .5rem !important; }
|
margin-top: 0.5rem !important; }
|
||||||
.mr-md-2, .mx-md-2 {
|
.mr-md-2, .mx-md-2 {
|
||||||
margin-right: .5rem !important; }
|
margin-right: 0.5rem !important; }
|
||||||
.mb-md-2, .my-md-2 {
|
.mb-md-2, .my-md-2 {
|
||||||
margin-bottom: .5rem !important; }
|
margin-bottom: 0.5rem !important; }
|
||||||
.ml-md-2, .mx-md-2 {
|
.ml-md-2, .mx-md-2 {
|
||||||
margin-left: .5rem !important; }
|
margin-left: 0.5rem !important; }
|
||||||
.m-md-3 {
|
.m-md-3 {
|
||||||
margin: 1rem !important; }
|
margin: 1rem !important; }
|
||||||
.mt-md-3, .my-md-3 {
|
.mt-md-3, .my-md-3 {
|
||||||
@@ -4590,25 +4649,25 @@ html {
|
|||||||
.pl-md-0, .px-md-0 {
|
.pl-md-0, .px-md-0 {
|
||||||
padding-left: 0 !important; }
|
padding-left: 0 !important; }
|
||||||
.p-md-1 {
|
.p-md-1 {
|
||||||
padding: .25rem !important; }
|
padding: 0.25rem !important; }
|
||||||
.pt-md-1, .py-md-1 {
|
.pt-md-1, .py-md-1 {
|
||||||
padding-top: .25rem !important; }
|
padding-top: 0.25rem !important; }
|
||||||
.pr-md-1, .px-md-1 {
|
.pr-md-1, .px-md-1 {
|
||||||
padding-right: .25rem !important; }
|
padding-right: 0.25rem !important; }
|
||||||
.pb-md-1, .py-md-1 {
|
.pb-md-1, .py-md-1 {
|
||||||
padding-bottom: .25rem !important; }
|
padding-bottom: 0.25rem !important; }
|
||||||
.pl-md-1, .px-md-1 {
|
.pl-md-1, .px-md-1 {
|
||||||
padding-left: .25rem !important; }
|
padding-left: 0.25rem !important; }
|
||||||
.p-md-2 {
|
.p-md-2 {
|
||||||
padding: .5rem !important; }
|
padding: 0.5rem !important; }
|
||||||
.pt-md-2, .py-md-2 {
|
.pt-md-2, .py-md-2 {
|
||||||
padding-top: .5rem !important; }
|
padding-top: 0.5rem !important; }
|
||||||
.pr-md-2, .px-md-2 {
|
.pr-md-2, .px-md-2 {
|
||||||
padding-right: .5rem !important; }
|
padding-right: 0.5rem !important; }
|
||||||
.pb-md-2, .py-md-2 {
|
.pb-md-2, .py-md-2 {
|
||||||
padding-bottom: .5rem !important; }
|
padding-bottom: 0.5rem !important; }
|
||||||
.pl-md-2, .px-md-2 {
|
.pl-md-2, .px-md-2 {
|
||||||
padding-left: .5rem !important; }
|
padding-left: 0.5rem !important; }
|
||||||
.p-md-3 {
|
.p-md-3 {
|
||||||
padding: 1rem !important; }
|
padding: 1rem !important; }
|
||||||
.pt-md-3, .py-md-3 {
|
.pt-md-3, .py-md-3 {
|
||||||
@@ -4662,25 +4721,25 @@ html {
|
|||||||
.ml-lg-0, .mx-lg-0 {
|
.ml-lg-0, .mx-lg-0 {
|
||||||
margin-left: 0 !important; }
|
margin-left: 0 !important; }
|
||||||
.m-lg-1 {
|
.m-lg-1 {
|
||||||
margin: .25rem !important; }
|
margin: 0.25rem !important; }
|
||||||
.mt-lg-1, .my-lg-1 {
|
.mt-lg-1, .my-lg-1 {
|
||||||
margin-top: .25rem !important; }
|
margin-top: 0.25rem !important; }
|
||||||
.mr-lg-1, .mx-lg-1 {
|
.mr-lg-1, .mx-lg-1 {
|
||||||
margin-right: .25rem !important; }
|
margin-right: 0.25rem !important; }
|
||||||
.mb-lg-1, .my-lg-1 {
|
.mb-lg-1, .my-lg-1 {
|
||||||
margin-bottom: .25rem !important; }
|
margin-bottom: 0.25rem !important; }
|
||||||
.ml-lg-1, .mx-lg-1 {
|
.ml-lg-1, .mx-lg-1 {
|
||||||
margin-left: .25rem !important; }
|
margin-left: 0.25rem !important; }
|
||||||
.m-lg-2 {
|
.m-lg-2 {
|
||||||
margin: .5rem !important; }
|
margin: 0.5rem !important; }
|
||||||
.mt-lg-2, .my-lg-2 {
|
.mt-lg-2, .my-lg-2 {
|
||||||
margin-top: .5rem !important; }
|
margin-top: 0.5rem !important; }
|
||||||
.mr-lg-2, .mx-lg-2 {
|
.mr-lg-2, .mx-lg-2 {
|
||||||
margin-right: .5rem !important; }
|
margin-right: 0.5rem !important; }
|
||||||
.mb-lg-2, .my-lg-2 {
|
.mb-lg-2, .my-lg-2 {
|
||||||
margin-bottom: .5rem !important; }
|
margin-bottom: 0.5rem !important; }
|
||||||
.ml-lg-2, .mx-lg-2 {
|
.ml-lg-2, .mx-lg-2 {
|
||||||
margin-left: .5rem !important; }
|
margin-left: 0.5rem !important; }
|
||||||
.m-lg-3 {
|
.m-lg-3 {
|
||||||
margin: 1rem !important; }
|
margin: 1rem !important; }
|
||||||
.mt-lg-3, .my-lg-3 {
|
.mt-lg-3, .my-lg-3 {
|
||||||
@@ -4722,25 +4781,25 @@ html {
|
|||||||
.pl-lg-0, .px-lg-0 {
|
.pl-lg-0, .px-lg-0 {
|
||||||
padding-left: 0 !important; }
|
padding-left: 0 !important; }
|
||||||
.p-lg-1 {
|
.p-lg-1 {
|
||||||
padding: .25rem !important; }
|
padding: 0.25rem !important; }
|
||||||
.pt-lg-1, .py-lg-1 {
|
.pt-lg-1, .py-lg-1 {
|
||||||
padding-top: .25rem !important; }
|
padding-top: 0.25rem !important; }
|
||||||
.pr-lg-1, .px-lg-1 {
|
.pr-lg-1, .px-lg-1 {
|
||||||
padding-right: .25rem !important; }
|
padding-right: 0.25rem !important; }
|
||||||
.pb-lg-1, .py-lg-1 {
|
.pb-lg-1, .py-lg-1 {
|
||||||
padding-bottom: .25rem !important; }
|
padding-bottom: 0.25rem !important; }
|
||||||
.pl-lg-1, .px-lg-1 {
|
.pl-lg-1, .px-lg-1 {
|
||||||
padding-left: .25rem !important; }
|
padding-left: 0.25rem !important; }
|
||||||
.p-lg-2 {
|
.p-lg-2 {
|
||||||
padding: .5rem !important; }
|
padding: 0.5rem !important; }
|
||||||
.pt-lg-2, .py-lg-2 {
|
.pt-lg-2, .py-lg-2 {
|
||||||
padding-top: .5rem !important; }
|
padding-top: 0.5rem !important; }
|
||||||
.pr-lg-2, .px-lg-2 {
|
.pr-lg-2, .px-lg-2 {
|
||||||
padding-right: .5rem !important; }
|
padding-right: 0.5rem !important; }
|
||||||
.pb-lg-2, .py-lg-2 {
|
.pb-lg-2, .py-lg-2 {
|
||||||
padding-bottom: .5rem !important; }
|
padding-bottom: 0.5rem !important; }
|
||||||
.pl-lg-2, .px-lg-2 {
|
.pl-lg-2, .px-lg-2 {
|
||||||
padding-left: .5rem !important; }
|
padding-left: 0.5rem !important; }
|
||||||
.p-lg-3 {
|
.p-lg-3 {
|
||||||
padding: 1rem !important; }
|
padding: 1rem !important; }
|
||||||
.pt-lg-3, .py-lg-3 {
|
.pt-lg-3, .py-lg-3 {
|
||||||
@@ -4794,25 +4853,25 @@ html {
|
|||||||
.ml-xl-0, .mx-xl-0 {
|
.ml-xl-0, .mx-xl-0 {
|
||||||
margin-left: 0 !important; }
|
margin-left: 0 !important; }
|
||||||
.m-xl-1 {
|
.m-xl-1 {
|
||||||
margin: .25rem !important; }
|
margin: 0.25rem !important; }
|
||||||
.mt-xl-1, .my-xl-1 {
|
.mt-xl-1, .my-xl-1 {
|
||||||
margin-top: .25rem !important; }
|
margin-top: 0.25rem !important; }
|
||||||
.mr-xl-1, .mx-xl-1 {
|
.mr-xl-1, .mx-xl-1 {
|
||||||
margin-right: .25rem !important; }
|
margin-right: 0.25rem !important; }
|
||||||
.mb-xl-1, .my-xl-1 {
|
.mb-xl-1, .my-xl-1 {
|
||||||
margin-bottom: .25rem !important; }
|
margin-bottom: 0.25rem !important; }
|
||||||
.ml-xl-1, .mx-xl-1 {
|
.ml-xl-1, .mx-xl-1 {
|
||||||
margin-left: .25rem !important; }
|
margin-left: 0.25rem !important; }
|
||||||
.m-xl-2 {
|
.m-xl-2 {
|
||||||
margin: .5rem !important; }
|
margin: 0.5rem !important; }
|
||||||
.mt-xl-2, .my-xl-2 {
|
.mt-xl-2, .my-xl-2 {
|
||||||
margin-top: .5rem !important; }
|
margin-top: 0.5rem !important; }
|
||||||
.mr-xl-2, .mx-xl-2 {
|
.mr-xl-2, .mx-xl-2 {
|
||||||
margin-right: .5rem !important; }
|
margin-right: 0.5rem !important; }
|
||||||
.mb-xl-2, .my-xl-2 {
|
.mb-xl-2, .my-xl-2 {
|
||||||
margin-bottom: .5rem !important; }
|
margin-bottom: 0.5rem !important; }
|
||||||
.ml-xl-2, .mx-xl-2 {
|
.ml-xl-2, .mx-xl-2 {
|
||||||
margin-left: .5rem !important; }
|
margin-left: 0.5rem !important; }
|
||||||
.m-xl-3 {
|
.m-xl-3 {
|
||||||
margin: 1rem !important; }
|
margin: 1rem !important; }
|
||||||
.mt-xl-3, .my-xl-3 {
|
.mt-xl-3, .my-xl-3 {
|
||||||
@@ -4854,25 +4913,25 @@ html {
|
|||||||
.pl-xl-0, .px-xl-0 {
|
.pl-xl-0, .px-xl-0 {
|
||||||
padding-left: 0 !important; }
|
padding-left: 0 !important; }
|
||||||
.p-xl-1 {
|
.p-xl-1 {
|
||||||
padding: .25rem !important; }
|
padding: 0.25rem !important; }
|
||||||
.pt-xl-1, .py-xl-1 {
|
.pt-xl-1, .py-xl-1 {
|
||||||
padding-top: .25rem !important; }
|
padding-top: 0.25rem !important; }
|
||||||
.pr-xl-1, .px-xl-1 {
|
.pr-xl-1, .px-xl-1 {
|
||||||
padding-right: .25rem !important; }
|
padding-right: 0.25rem !important; }
|
||||||
.pb-xl-1, .py-xl-1 {
|
.pb-xl-1, .py-xl-1 {
|
||||||
padding-bottom: .25rem !important; }
|
padding-bottom: 0.25rem !important; }
|
||||||
.pl-xl-1, .px-xl-1 {
|
.pl-xl-1, .px-xl-1 {
|
||||||
padding-left: .25rem !important; }
|
padding-left: 0.25rem !important; }
|
||||||
.p-xl-2 {
|
.p-xl-2 {
|
||||||
padding: .5rem !important; }
|
padding: 0.5rem !important; }
|
||||||
.pt-xl-2, .py-xl-2 {
|
.pt-xl-2, .py-xl-2 {
|
||||||
padding-top: .5rem !important; }
|
padding-top: 0.5rem !important; }
|
||||||
.pr-xl-2, .px-xl-2 {
|
.pr-xl-2, .px-xl-2 {
|
||||||
padding-right: .5rem !important; }
|
padding-right: 0.5rem !important; }
|
||||||
.pb-xl-2, .py-xl-2 {
|
.pb-xl-2, .py-xl-2 {
|
||||||
padding-bottom: .5rem !important; }
|
padding-bottom: 0.5rem !important; }
|
||||||
.pl-xl-2, .px-xl-2 {
|
.pl-xl-2, .px-xl-2 {
|
||||||
padding-left: .5rem !important; }
|
padding-left: 0.5rem !important; }
|
||||||
.p-xl-3 {
|
.p-xl-3 {
|
||||||
padding: 1rem !important; }
|
padding: 1rem !important; }
|
||||||
.pt-xl-3, .py-xl-3 {
|
.pt-xl-3, .py-xl-3 {
|
||||||
@@ -4921,14 +4980,14 @@ html {
|
|||||||
visibility: hidden !important; }
|
visibility: hidden !important; }
|
||||||
|
|
||||||
.add-exp-button {
|
.add-exp-button {
|
||||||
margin-right: 0px; }
|
margin-right: 0; }
|
||||||
|
|
||||||
.remove-exp-button {
|
.remove-exp-button {
|
||||||
margin-left: 0px; }
|
margin-left: 0; }
|
||||||
|
|
||||||
.exp-input {
|
.exp-input {
|
||||||
margin-right: 0px;
|
margin-right: 0;
|
||||||
margin-left: 0px;
|
margin-left: 0;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
padding: 2px 5px; }
|
padding: 2px 5px; }
|
||||||
@@ -4939,14 +4998,40 @@ html {
|
|||||||
vertical-align: middle; }
|
vertical-align: middle; }
|
||||||
|
|
||||||
.touch-right {
|
.touch-right {
|
||||||
margin-right: 0px; }
|
margin-right: 0; }
|
||||||
|
|
||||||
.touch-left {
|
.touch-left {
|
||||||
margin-left: 0px; }
|
margin-left: 0; }
|
||||||
|
|
||||||
.touch-sides {
|
.touch-sides {
|
||||||
margin-left: 0px;
|
margin-left: 0;
|
||||||
margin-right: 0px; }
|
margin-right: 0; }
|
||||||
|
|
||||||
|
.casino-card {
|
||||||
|
padding: 10px;
|
||||||
|
border: solid 1px #808080;
|
||||||
|
background-color: white;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-size: 14pt;
|
||||||
|
text-align: center;
|
||||||
|
margin: 3px;
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
|
.casino-card .value {
|
||||||
|
font-size: 15pt;
|
||||||
|
font-family: sans-serif; }
|
||||||
|
|
||||||
|
.casino-card.red {
|
||||||
|
color: red; }
|
||||||
|
|
||||||
|
.casino-card.black {
|
||||||
|
color: black; }
|
||||||
|
|
||||||
|
#milestones-container {
|
||||||
|
position: fixed;
|
||||||
|
padding: 6px;
|
||||||
|
width: 60%; }
|
||||||
|
|
||||||
|
|
||||||
/*# sourceMappingURL=engineStyle.css.map*/
|
/*# sourceMappingURL=engineStyle.css.map*/
|
||||||
84
dist/vendor.bundle.js
vendored
84
dist/vendor.bundle.js
vendored
File diff suppressed because one or more lines are too long
@@ -56,8 +56,3 @@ through destroying BitNodes is:
|
|||||||
|
|
||||||
* Source-Files
|
* Source-Files
|
||||||
* Scripts on the home computer
|
* Scripts on the home computer
|
||||||
|
|
||||||
BitNode Details
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
TODO
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ List of all Source-Files
|
|||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-9: Coming Soon | |
|
| BitNode-9: Coming Soon | |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-10: Digital Carbon | * Each level of this grants a Duplicate Sleeve |
|
| BitNode-10: Digital Carbon | * Each level of this grants a Duplicate Sleeve. |
|
||||||
| | * Allows the player to access the :ref:`netscript_sleeveapi` in other BitNodes |
|
| | * Allows the player to access the :ref:`netscript_sleeveapi` in other BitNodes |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-11: The Big Crash | * Company favor increases both the player's salary and reputation gain at that |
|
| BitNode-11: The Big Crash | * Company favor increases both the player's salary and reputation gain at that |
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ user's physical and mental faculties.
|
|||||||
Augmentations provide persistent upgrades in the form of multipliers.
|
Augmentations provide persistent upgrades in the form of multipliers.
|
||||||
These multipliers apply to a wide variety of things such as stats,
|
These multipliers apply to a wide variety of things such as stats,
|
||||||
experience gain, and hacking, just to name a few. Your multipliers
|
experience gain, and hacking, just to name a few. Your multipliers
|
||||||
can be viewed in the 'Character' page (:ref:`keyboard shortcut <shortcuts>` Alt + c)
|
can be viewed in the 'Character' page (:ref:`keyboard shortcut <shortcuts>` Alt + c).
|
||||||
|
|
||||||
How to acquire Augmentations
|
How to acquire Augmentations
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ List of Factions and their Requirements
|
|||||||
| Early Game | Faction Name | Requirements | Joining this Faction prevents |
|
| Early Game | Faction Name | Requirements | Joining this Faction prevents |
|
||||||
| Factions | | | you from joining: |
|
| Factions | | | you from joining: |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | CyberSec | * Hack CSEC Manually | |
|
| | CyberSec | * Install a backdoor on the CSEC server | |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | Tian Di Hui | * $1m | |
|
| | Tian Di Hui | * $1m | |
|
||||||
| | | * Hacking Level 50 | |
|
| | | * Hacking Level 50 | |
|
||||||
@@ -74,13 +74,16 @@ List of Factions and their Requirements
|
|||||||
| | | | * New Tokyo |
|
| | | | * New Tokyo |
|
||||||
| | | | * Ishima |
|
| | | | * Ishima |
|
||||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||||
| Hacking | NiteSec | * Hack avmnite-02h manually | |
|
| Hacking | NiteSec | * Install a backdoor on the avmnite-02h | |
|
||||||
| Groups | | * Home Computer RAM of at least 32GB | |
|
| Groups | | server | |
|
||||||
|
| | | * Home Computer RAM of at least 32GB | |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | The Black Hand | * Hack I.I.I.I manually | |
|
| | The Black Hand | * Install a backdoor on the I.I.I.I | |
|
||||||
|
| | | server | |
|
||||||
| | | * Home Computer RAM of at least 64GB | |
|
| | | * Home Computer RAM of at least 64GB | |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | Bitrunners | * Hack run4theh111z manually | |
|
| | Bitrunners | * Install a backdoor on the run4theh111z| |
|
||||||
|
| | | server | |
|
||||||
| | | * Home Computer RAM of at least 128GB | |
|
| | | * Home Computer RAM of at least 128GB | |
|
||||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||||
| Megacorporations | ECorp | * Have 200k reputation with | |
|
| Megacorporations | ECorp | * Have 200k reputation with | |
|
||||||
@@ -112,7 +115,8 @@ List of Factions and their Requirements
|
|||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | Fulcrum Secret | * Have 250k reputation with | |
|
| | Fulcrum Secret | * Have 250k reputation with | |
|
||||||
| | Technologies | the Corporation | |
|
| | Technologies | the Corporation | |
|
||||||
| | | * Hack fulcrumassets manually | |
|
| | | * Install a backdoor on the | |
|
||||||
|
| | | fulcrumassets server | |
|
||||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||||
| Criminal | Slum Snakes | * All Combat Stats of 30 | |
|
| Criminal | Slum Snakes | * All Combat Stats of 30 | |
|
||||||
| Organizations | | * -9 Karma | |
|
| Organizations | | * -9 Karma | |
|
||||||
|
|||||||
@@ -148,6 +148,14 @@ has root access, what ports are opened/closed, and also hacking-related informat
|
|||||||
such as an estimated chance to successfully hack, an estimate of how much money is
|
such as an estimated chance to successfully hack, an estimate of how much money is
|
||||||
available on the server, etc.
|
available on the server, etc.
|
||||||
|
|
||||||
|
backdoor
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
Installs a backdoor on the current server. Root access is required to do this.
|
||||||
|
|
||||||
|
Servers will give different bonuses when you install a backdoor.
|
||||||
|
This can pass faction tests or give bonsues such as discounts from companies.
|
||||||
|
|
||||||
buy
|
buy
|
||||||
^^^
|
^^^
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,358 @@
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
v0.51.8 - 2021-05-07 It was there all along (hydroflame)
|
||||||
|
--------------------------------------------------------
|
||||||
|
|
||||||
|
**Servers**
|
||||||
|
|
||||||
|
* Update n00dles metadata
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* 'hashGainRate' use the correct 'usedRam' and 'maxRam'
|
||||||
|
* Fix 'setActionAutolevel' logging.
|
||||||
|
* Fix 'setActionLevel' not working at all.
|
||||||
|
* Add 'installBackdoor' singularity function.
|
||||||
|
|
||||||
|
**Hacknet**
|
||||||
|
|
||||||
|
* Fix Hacknet Servers total production always displaying 0
|
||||||
|
|
||||||
|
**Documentation**
|
||||||
|
|
||||||
|
* Updated guide to no longer recommend BN12.
|
||||||
|
* Fix documentation for maxNumNodes (@ModdedGamers)
|
||||||
|
* Fix typo in 'sourcefiles.rst'
|
||||||
|
* Fix typo in 'recommendedbitnodeorder.rst'
|
||||||
|
* Fix 'getServer' documentation missing 'server' argument.
|
||||||
|
* Fix missing ram cost in 'getData.rst'
|
||||||
|
* Fix basic formulas examples.
|
||||||
|
* Fix typo in BN11 description.
|
||||||
|
* Fix formatting issue in Bladeburner (@Pimgd)
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* Fix negative money being displayed in full.
|
||||||
|
* Fix Hacking Missions not working.
|
||||||
|
* Fix Corporation tree not rendering.
|
||||||
|
* Fix script being needlessly recompiled. This should save real ram (not game ram)
|
||||||
|
* w0r1d_d43m0n can be backdoored
|
||||||
|
* Coding Contracts title is click-to-copy (@Rodeth)
|
||||||
|
* Covenant memory upgrade works better.
|
||||||
|
* Fix Neuroflux not being correctly calculated when entering BN with SF12.
|
||||||
|
* Delete Active Script now delete all active scripts, not just home.
|
||||||
|
* Now you can 'cd' in directories that only contain '.txt' files.
|
||||||
|
* Fix 'analyze' always saying players had root access
|
||||||
|
* Passive faction rep no longer builds for special factions.
|
||||||
|
* Donation option no longer appears for special factions.
|
||||||
|
* Rephrased some milestones.
|
||||||
|
* donation textbox now accepts money in the format '1b' and the like (@Dawe)
|
||||||
|
* Fix being able to join hated factions simultaneously. (@Dawe)
|
||||||
|
* 'ls' now displays files in multiple column. (Helps players with many files)
|
||||||
|
* Bladeburner multiplers now appear under Character>Stats and
|
||||||
|
Character>Augmentation when they are relevant.
|
||||||
|
* Fix missing functions syntax highlight in codemirror.
|
||||||
|
* Fix infiltration number formatting.
|
||||||
|
* script income transfers to parent on death. This helps keep track of
|
||||||
|
income for scripts that spawn short lived scripts.
|
||||||
|
|
||||||
|
v0.51.7 - 2021-04-28 n00dles
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
**Tutorial servers**
|
||||||
|
|
||||||
|
* All the tutorial servers have been reverted to their original value
|
||||||
|
* The new server n00dles has been added as tutorial server.
|
||||||
|
|
||||||
|
**Terminal**
|
||||||
|
|
||||||
|
* 'tail' now accepts Pid.
|
||||||
|
* 'analyze' now handles Hacknet Servers correctly.
|
||||||
|
* 'ServerProfiler.exe' now handles Hacknet Servers correctly.
|
||||||
|
|
||||||
|
**SF12**
|
||||||
|
|
||||||
|
* Now makes you start with Neuroflux Governor equal to the level of the SF.
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* Deprecated 'getServerRam'.
|
||||||
|
* 'getServerMaxRam' added to replace 'getServerRam'
|
||||||
|
* 'getServerUsedRam' added to replace 'getServerRam'
|
||||||
|
* 'getBitnodeMultipliers' is available inside BN5
|
||||||
|
* Time logged by hack/grow/weaken now displays in human time.
|
||||||
|
* thread count logged by hack/grow/weaken now displays with commas every
|
||||||
|
thousands place.
|
||||||
|
|
||||||
|
**Donation**
|
||||||
|
|
||||||
|
* Always visible but locked until favor requirements are reached.
|
||||||
|
|
||||||
|
**Augmentations**
|
||||||
|
|
||||||
|
* City factions has been rebalanced to give a reason to visit them all.
|
||||||
|
|
||||||
|
**Sleeves**
|
||||||
|
|
||||||
|
* Fix sleeves not being able to work at Volhavens gym.
|
||||||
|
|
||||||
|
**Lint**
|
||||||
|
|
||||||
|
* This shouldn't change anything but was like 10h of work. So I'm logging it.
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* Plethora of typo fixed (@Pimgd)
|
||||||
|
* ps documentation fix (@Dawe)
|
||||||
|
* The dev menu now has a quick bitflume option.
|
||||||
|
* Fix SF -1 not being as powerful as intended.
|
||||||
|
* Fix cashroot starter kit not displaying correctly.
|
||||||
|
* Fix DOM element 'character-overview-text' being nested twice.
|
||||||
|
* Hacknet documentation example fix.
|
||||||
|
* Money amount under 1000 dont display 3 decimal anymore.
|
||||||
|
* Fix nextSourceFile flag miscalculation on the bitverse (for Bn12)
|
||||||
|
* Faction invite text says "Decide later"/"Join!" instead of "No"/"Yes"
|
||||||
|
|
||||||
|
|
||||||
|
v0.51.6 - 2021-04-28 Backdoor! (Community)
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
**Backdoor**
|
||||||
|
|
||||||
|
* a new terminal command, backdoor, has been added to help differentiate
|
||||||
|
between the terminal hack command and the netscript hack function. (@dewint)
|
||||||
|
|
||||||
|
**Servers**
|
||||||
|
|
||||||
|
* foodnstuff, sigma-cosmetics, and joesguns have been rebalanced to help new players.
|
||||||
|
|
||||||
|
**Milestones**
|
||||||
|
|
||||||
|
* A new tab under the Help menu has been added to guide players through the
|
||||||
|
game.
|
||||||
|
|
||||||
|
**Casino**
|
||||||
|
|
||||||
|
* Blackjack has been added (@BigD)
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* 'prompt' now converts input to JSON.
|
||||||
|
* 'getRunningScript' is a new netscript function that returns a bunch of
|
||||||
|
data related to a running script.
|
||||||
|
|
||||||
|
**Coding contracts**
|
||||||
|
|
||||||
|
* trivial puzzles should no longer appear.
|
||||||
|
|
||||||
|
**Infiltration**
|
||||||
|
|
||||||
|
* All numbers are formatted like the rest of the game.
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* Server security is capped at 100.
|
||||||
|
* Added option to quit a job.
|
||||||
|
* 'cd' no longer works on unexistent folders.
|
||||||
|
* cd with no arguments brings you back to top level folder (@Andreas)
|
||||||
|
* 'softReset' documentation udpated.
|
||||||
|
* Money tracker now accounts for going to the hospital manually.
|
||||||
|
* codemirror is now the default editor (for new save files)
|
||||||
|
* fix typo in dark web help text (@Rodeth)
|
||||||
|
* so many documentation and typos fixes (@Pimgd)
|
||||||
|
* A corruption visual effect has been added to location with servers that
|
||||||
|
have backdoor installed. (@dewint)
|
||||||
|
|
||||||
|
|
||||||
|
v0.51.5 - 2021-04-20 Flags! (hydroflame)
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* 'flags' is a new function that helps script handle flags.
|
||||||
|
This is subject to change if it doesn't meet the need of the players.
|
||||||
|
* 'ps' now returns the pid.
|
||||||
|
* 'tail' now works with pid as first argument.
|
||||||
|
* 'tail' hostname defaults to current server. (like the documentation says)
|
||||||
|
* 'isRunning' hostname defaults to current server.
|
||||||
|
* 'isRunning' now works with pid as first argument.
|
||||||
|
|
||||||
|
**Gang**
|
||||||
|
|
||||||
|
* Nerfed ascension mechanic once again :(
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* Souce-File typo fix
|
||||||
|
* Fix 'while you were away' screen.
|
||||||
|
* Bladeburner team size can no longer be set to negative amounts.
|
||||||
|
|
||||||
|
v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
|
**Manual hacking**
|
||||||
|
|
||||||
|
* These bonus require an install or a soft reset to take effect.
|
||||||
|
* Manual hacking gyms and university gives you a 10% discount.
|
||||||
|
* Manual hacking a corporation server decreases the penalty for leaving work
|
||||||
|
early.
|
||||||
|
|
||||||
|
**BladeBurner**
|
||||||
|
|
||||||
|
* nerfed int exp gained.
|
||||||
|
|
||||||
|
**Documentation**
|
||||||
|
|
||||||
|
* purchaseServer specifies what happens on failure.
|
||||||
|
* Fixed typo in recommended bitnode page.
|
||||||
|
* Removed misleading ram requirements for hacking factions.
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* growthAnalyze handles Infinity correctly.
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* Faction Augmentation will list how much reputation is required even after
|
||||||
|
that goal has been reached.
|
||||||
|
* Removed dollar sign in travel agency confirmation dialog box.
|
||||||
|
* Fixed typo in alpha-omega.lit
|
||||||
|
* the 'Game saved!' text no longer blocks the save game/options button.
|
||||||
|
* The text editor now remembers the location of your cursor and restores it.
|
||||||
|
* skills are recalculated instantly.
|
||||||
|
* Fix typo in Operation Zero description.
|
||||||
|
|
||||||
|
v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
|
||||||
|
**Passive faction reputation**
|
||||||
|
|
||||||
|
* Reworked, from 1 rep / 2 minute. Now is a complicated percentage of the
|
||||||
|
reputation you'd gain working for them. It's not op but it feels a bit
|
||||||
|
more useful.
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* print/tprint now take any number of arguments.
|
||||||
|
* print/tprint will now print object as json.
|
||||||
|
* print/tprint now handle passing in an undefined argument properly.
|
||||||
|
|
||||||
|
**Casino**
|
||||||
|
|
||||||
|
* Cannot bet negative money anymore.
|
||||||
|
* Roulette max bet is a bit higher.
|
||||||
|
* Coin Flip has a small cooldown.
|
||||||
|
* All buttons reject unstrusted mouse events.
|
||||||
|
|
||||||
|
**Documentation**
|
||||||
|
|
||||||
|
* Changed a message that said nsjs only works on Chrome.
|
||||||
|
|
||||||
|
**Bugfix**
|
||||||
|
|
||||||
|
* hacknet.maxNumNodes now works for both nodes and servers.
|
||||||
|
* Fixed a bug where the popup boxes would contain data from previous popup boxes.
|
||||||
|
* .js files will also have the 'export async function' boilerplate.
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* turned off web form autocomplete for the terminal text input.
|
||||||
|
* Fixed an issue on Windows+Firefox where pressing up on the terminal would
|
||||||
|
bring the cursor to the begining of the line. (Issue #836)
|
||||||
|
* Hacknet node names is easier to handle for screen readers.
|
||||||
|
* Money spent on classes is now tracked independently of work money.
|
||||||
|
* running coding contract from the terminal will display its name.
|
||||||
|
|
||||||
|
v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
**New location: The Iker Molina Casino**
|
||||||
|
|
||||||
|
* A casino opened in Aevum. However the house is rumored to cheat. If only
|
||||||
|
we could give them a taste of their own medicine.
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* Link to discord added under options
|
||||||
|
* 'getMemberInformation' doc updated, oops
|
||||||
|
* tech vendor now handle max ram and cores.
|
||||||
|
|
||||||
|
v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's hydroflame)
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* 'getPlayer' returns players faction and tor
|
||||||
|
* 'hospitalization' is a new singularity function.
|
||||||
|
* 'gang.getMemberInformation' now returns more information.
|
||||||
|
* 'hacknet.hashCapacity' is a new hacknet function that returns the maximum hash capacity.
|
||||||
|
|
||||||
|
**Hospitalization**
|
||||||
|
|
||||||
|
* Now only cost at most 10% of your money.
|
||||||
|
|
||||||
|
**Bugfix**
|
||||||
|
|
||||||
|
* confirmation dialog box no longer use previous text
|
||||||
|
|
||||||
|
**Accessibility**
|
||||||
|
|
||||||
|
* The game is a little easier to handle for screen readers (yes, there's an
|
||||||
|
absolute legend playing this game with a screen reader)
|
||||||
|
* Infiltration use buttons instead of a-links
|
||||||
|
* New option to disable ASCII art. This will make the metro map and world
|
||||||
|
map display as a list of buttons.
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* 'fl1ght.exe' will no longer suggest the combat path. Related faction
|
||||||
|
requirements unchanged.
|
||||||
|
|
||||||
|
v0.51.0 - 2021-03-31 Formulas (hydroflame)
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
**Formulas API**
|
||||||
|
|
||||||
|
* A new API is introduced, this gives players access to various formulas used in the game.
|
||||||
|
It'll help you make more informed decisions.
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* 'getServer' is a new function meant to be used with the formulas API.
|
||||||
|
* 'getPlayer' is a new function meant to be used with the formulas API.
|
||||||
|
* 'getStats' and 'getCharacterInformation' are deprecated in favor of 'getPlayer'
|
||||||
|
* 'getCurrentServer' is a new function that returns the server the player is currently connected.
|
||||||
|
|
||||||
|
**Display**
|
||||||
|
|
||||||
|
* All money should now consistently be orange.
|
||||||
|
* All rep should now consistently be light-yellow.
|
||||||
|
* Most numbers should display consistently now (aka all money is formatted the same).
|
||||||
|
|
||||||
|
**Click to copy**
|
||||||
|
|
||||||
|
* Certain UI elements are now 'click-to-copy'
|
||||||
|
|
||||||
|
v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)
|
||||||
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
**BitNodeMultipliers**
|
||||||
|
|
||||||
|
* 'GangKarmaRequirements': a new multipler that influences how much karma is required to make a gang different bitnodes.
|
||||||
|
|
||||||
|
**Netscript**
|
||||||
|
|
||||||
|
* 'connect': a new singularity function that connects you to a server. (like the terminal command)
|
||||||
|
* 'manualHack': a new singularity function that performs a manual hack on the players current server.
|
||||||
|
* ns2 stack trace works on Firefox now.
|
||||||
|
|
||||||
|
**Misc.**
|
||||||
|
|
||||||
|
* New shortcut, Alt + b, brings you to bladeburner
|
||||||
|
* New shortcut, Alt + g, brings you to gang
|
||||||
|
|
||||||
v0.50.1 - 2021-03-22 (hydroflame)
|
v0.50.1 - 2021-03-22 (hydroflame)
|
||||||
---------------------------------
|
---------------------------------
|
||||||
**Netscript**
|
**Netscript**
|
||||||
|
|||||||
@@ -64,9 +64,9 @@ documentation_title = '{0} Documentation'.format(project)
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '0.50'
|
version = '0.51'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '0.50.2'
|
release = '0.51.8'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|||||||
@@ -634,7 +634,7 @@ This tells me that I can reach :code:`CSEC` by going through :code:`iron-gym`::
|
|||||||
Make sure you notice the required hacking skill for the :code:`CSEC` server.
|
Make sure you notice the required hacking skill for the :code:`CSEC` server.
|
||||||
This is a random value between 51 and 60. Although you receive the message
|
This is a random value between 51 and 60. Although you receive the message
|
||||||
from CSEC once you hit 50 hacking, you cannot actually pass their test
|
from CSEC once you hit 50 hacking, you cannot actually pass their test
|
||||||
until your hacking is high enough to hack their server.
|
until your hacking is high enough to install a backdoor on their server.
|
||||||
|
|
||||||
After you are connected to the :code:`CSEC` server, you can hack it. Note that this
|
After you are connected to the :code:`CSEC` server, you can hack it. Note that this
|
||||||
server requires one open port in order to gain root access. We can open the SSH port
|
server requires one open port in order to gain root access. We can open the SSH port
|
||||||
@@ -642,10 +642,10 @@ using the :code:`BruteSSH.exe` program we created earlier. In |Terminal|::
|
|||||||
|
|
||||||
$ run BruteSSH.exe
|
$ run BruteSSH.exe
|
||||||
$ run NUKE.exe
|
$ run NUKE.exe
|
||||||
$ hack
|
$ backdoor
|
||||||
|
|
||||||
Keep hacking the server until you are successful. After you successfully hack it, you should
|
After you successfully install the backdoor, you should receive a faction
|
||||||
receive a faction invitation from |CyberSec| shortly afterwards. Accept it. If you accidentally
|
invitation from |CyberSec| shortly afterwards. Accept it. If you accidentally
|
||||||
reject the invitation, that's okay. Just go to the :code:`Factions` tab
|
reject the invitation, that's okay. Just go to the :code:`Factions` tab
|
||||||
(|Keyboard shortcut| Alt + f) and you should see an option that lets you
|
(|Keyboard shortcut| Alt + f) and you should see an option that lets you
|
||||||
accept the invitation.
|
accept the invitation.
|
||||||
|
|||||||
@@ -278,6 +278,7 @@ Description
|
|||||||
hashes, which can be spent on a variety of different upgrades.
|
hashes, which can be spent on a variety of different upgrades.
|
||||||
|
|
||||||
In this BitNode:
|
In this BitNode:
|
||||||
|
|
||||||
* Your stats are significantly decreased
|
* Your stats are significantly decreased
|
||||||
* You cannnot purchase additional servers
|
* You cannnot purchase additional servers
|
||||||
* Hacking is significantly less profitable
|
* Hacking is significantly less profitable
|
||||||
@@ -292,7 +293,7 @@ Source-File
|
|||||||
* Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode
|
* Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode
|
||||||
|
|
||||||
(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT
|
(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT
|
||||||
when installing Augmentation
|
when installing Augmentations.)
|
||||||
|
|
||||||
Difficulty
|
Difficulty
|
||||||
Hard
|
Hard
|
||||||
@@ -312,6 +313,7 @@ Description
|
|||||||
2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously
|
2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously
|
||||||
|
|
||||||
In this BitNode:
|
In this BitNode:
|
||||||
|
|
||||||
* Your stats are significantly decreased
|
* Your stats are significantly decreased
|
||||||
* All methods of gaining money are half as profitable (except Stock Market)
|
* All methods of gaining money are half as profitable (except Stock Market)
|
||||||
* Purchased servers are more expensive, have less max RAM, and a lower maximum limit
|
* Purchased servers are more expensive, have less max RAM, and a lower maximum limit
|
||||||
@@ -321,7 +323,7 @@ Source-File
|
|||||||
:Max Level: 3
|
:Max Level: 3
|
||||||
|
|
||||||
This Source-File unlocks Sleeve technology in other BitNodes.
|
This Source-File unlocks Sleeve technology in other BitNodes.
|
||||||
Each level of this Source-File also grants you a Duplicate Sleeve
|
Each level of this Source-File also grants you a Duplicate Sleeve.
|
||||||
|
|
||||||
Difficulty
|
Difficulty
|
||||||
Hard
|
Hard
|
||||||
@@ -371,9 +373,10 @@ Description
|
|||||||
Source-File
|
Source-File
|
||||||
:Max Level: Infinity
|
:Max Level: Infinity
|
||||||
|
|
||||||
Each level of Source-File 12 will increase all of your multipliers by 1%. This effect
|
Each level of Source-File 12 will let you start with Neuroflux Governor
|
||||||
is multiplicative with itself. In other words, level N of this Source-File will result
|
equal to the level of this Source-File.
|
||||||
in a multiplier of 1.01^N (or 0.99^N for multipliers that decrease)
|
|
||||||
|
This BitNode is meant to be done passively or when waiting for new content.
|
||||||
|
|
||||||
Difficulty
|
Difficulty
|
||||||
Initially very easy, but then it (obviously) becomes harder as you continue to do it.
|
Initially very easy, but then it (obviously) becomes harder as you continue to do it.
|
||||||
@@ -394,27 +397,22 @@ For fast progression
|
|||||||
1. Repeat **BitNode-1: Source Genesis** until you max out its Source-File. Its Source-File
|
1. Repeat **BitNode-1: Source Genesis** until you max out its Source-File. Its Source-File
|
||||||
is extremely powerful, as it raises all multipliers by a significant amount.
|
is extremely powerful, as it raises all multipliers by a significant amount.
|
||||||
|
|
||||||
2. Repeat **BitNode-12: The Recursion** several times. This BitNode will be extremely easy the
|
2. Do **BitNode-5: Artificial Intelligence** once or twice. The intelligence stat it unlocks
|
||||||
first few times you tackle it, and its Source-File raises all multipliers. Furthermore,
|
|
||||||
its effect stacks multiplicatively with itself and other Source-Files/Augmentations,
|
|
||||||
which gets better as time goes on
|
|
||||||
|
|
||||||
3. Do **BitNode-5: Artificial Intelligence** once or twice. The intelligence stat it unlocks
|
|
||||||
will gradually build up as you continue to play the game, and will be helpful
|
will gradually build up as you continue to play the game, and will be helpful
|
||||||
in the future. The Source-File also provides hacking multipliers, which are
|
in the future. The Source-File also provides hacking multipliers, which are
|
||||||
strong because hacking is typically one of the best ways of earning money.
|
strong because hacking is typically one of the best ways of earning money.
|
||||||
|
|
||||||
4. (Optional) Consider doing **BitNode-4: The Singularity**. Its Source-File does not directly make you
|
3. (Optional) Consider doing **BitNode-4: The Singularity**. Its Source-File does not directly make you
|
||||||
more powerful in any way, but it does unlock :ref:`netscript_singularityfunctions` which
|
more powerful in any way, but it does unlock :ref:`netscript_singularityfunctions` which
|
||||||
let you automate significantly more aspects of the game.
|
let you automate significantly more aspects of the game.
|
||||||
|
|
||||||
5. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
|
4. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
|
||||||
has high profit potential.
|
has high profit potential.
|
||||||
|
|
||||||
6. Do **BitNode-6: Bladeburners** once to unlock the Bladeburners mechanic. The Bladeburner
|
5. Do **BitNode-6: Bladeburners** once to unlock the Bladeburners mechanic. The Bladeburner
|
||||||
mechanic is useful for some of the future BitNodes (such as 9 and 10).
|
mechanic is useful for some of the future BitNodes (such as 9 and 10).
|
||||||
|
|
||||||
7. Do **BitNode-9: Hacktocracy** to unlock the Hacknet Server mechanic. You can
|
6. Do **BitNode-9: Hacktocracy** to unlock the Hacknet Server mechanic. You can
|
||||||
consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.
|
consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.
|
||||||
|
|
||||||
.. todo:: To be continued as more BitNodes get added
|
.. todo:: To be continued as more BitNodes get added
|
||||||
|
|||||||
@@ -30,4 +30,5 @@ to reach out to the developer!
|
|||||||
Gang API <netscript/netscriptgangapi>
|
Gang API <netscript/netscriptgangapi>
|
||||||
Coding Contract API <netscript/netscriptcodingcontractapi>
|
Coding Contract API <netscript/netscriptcodingcontractapi>
|
||||||
Sleeve API <netscript/netscriptsleeveapi>
|
Sleeve API <netscript/netscriptsleeveapi>
|
||||||
|
Formulas API <netscript/netscriptformulasapi>
|
||||||
Miscellaneous <netscript/netscriptmisc>
|
Miscellaneous <netscript/netscriptmisc>
|
||||||
|
|||||||
40
doc/source/netscript/advancedfunctions/getServer.rst
Normal file
40
doc/source/netscript/advancedfunctions/getServer.rst
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
getServer() Netscript Function
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
.. js:function:: getServer([hostname])
|
||||||
|
|
||||||
|
:RAM cost: 4 GB
|
||||||
|
:param string hostname: Hostname of the server, defaults to host server.
|
||||||
|
|
||||||
|
If you are not in BitNode-5, then you must have Source-File 5-1 in order to run this function.
|
||||||
|
|
||||||
|
This function is meant to be used in conjunction with the :doc:`formulas API<../netscriptformulasapi>`.
|
||||||
|
|
||||||
|
Returns an object with the Server's stats. The object has the following properties::
|
||||||
|
|
||||||
|
{
|
||||||
|
cpuCores
|
||||||
|
ftpPortOpen
|
||||||
|
hasAdminRights
|
||||||
|
hostname
|
||||||
|
httpPortOpen
|
||||||
|
ip
|
||||||
|
isConnectedTo
|
||||||
|
maxRam
|
||||||
|
organizationName
|
||||||
|
ramUsed
|
||||||
|
smtpPortOpen
|
||||||
|
sqlPortOpen
|
||||||
|
sshPortOpen
|
||||||
|
baseDifficulty
|
||||||
|
hackDifficulty
|
||||||
|
backdoorInstalled
|
||||||
|
minDifficulty
|
||||||
|
moneyAvailable
|
||||||
|
moneyMax
|
||||||
|
numOpenPortsRequired
|
||||||
|
openPortCount
|
||||||
|
purchasedByPlayer
|
||||||
|
requiredHackingSkill
|
||||||
|
serverGrowth
|
||||||
|
}
|
||||||
40
doc/source/netscript/basicfunctions/flags.rst
Normal file
40
doc/source/netscript/basicfunctions/flags.rst
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
flags() Netscript Function
|
||||||
|
============================
|
||||||
|
|
||||||
|
.. js:function:: flags(data)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param data array of pairs of strings: Flags definition.
|
||||||
|
:returns: Object containing all the flags that were parsed or default.
|
||||||
|
|
||||||
|
The flag definition is an array of pairs of values, the first value is the
|
||||||
|
name of the flag, the 2nd value is the default value for that flag.
|
||||||
|
|
||||||
|
The return object is a map containing flag names to the value. It also
|
||||||
|
contains the special field '_' which contains all arguments that were not flags.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
/* example.script
|
||||||
|
var data = flags([
|
||||||
|
['delay', 0], // a default number means this flag is a number
|
||||||
|
['server', 'foodnstuff'], // a default string means this flag is a string
|
||||||
|
['exclude', []], // a default array means this flag is a default array of string
|
||||||
|
['help', false], // a default boolean means this flag is a boolean
|
||||||
|
]);
|
||||||
|
tprint(data);
|
||||||
|
*/
|
||||||
|
[home ~/]> run example.script
|
||||||
|
{"_":[],"delay":0,"server":"foodnstuff"}
|
||||||
|
[home ~/]> run example.script --delay 3000
|
||||||
|
{"_":[],"server":"foodnstuff","delay":3000}
|
||||||
|
[home ~/]> run example.script --delay 3000 --server harakiri-sushi
|
||||||
|
{"_":[],"delay":3000,"server":"harakiri-sushi"}
|
||||||
|
[home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world
|
||||||
|
{"_":["hello","world"],"delay":3000,"server":"harakiri-sushi"}
|
||||||
|
[home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b
|
||||||
|
{"_":["hello","world"],"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}
|
||||||
|
[home ~/]> run example.script --help
|
||||||
|
{"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}
|
||||||
88
doc/source/netscript/basicfunctions/getRunningScript.rst
Normal file
88
doc/source/netscript/basicfunctions/getRunningScript.rst
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
getRunningScript() Netscript Function
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
.. js:function:: getRunningScript()
|
||||||
|
|
||||||
|
:RAM cost: 0.3 GB
|
||||||
|
:returns: Script object or null if not found
|
||||||
|
|
||||||
|
The object has the following properties:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
// Script arguments
|
||||||
|
args
|
||||||
|
|
||||||
|
// Script filename
|
||||||
|
filename
|
||||||
|
|
||||||
|
// This script's logs. An array of log entries
|
||||||
|
logs
|
||||||
|
|
||||||
|
// Flag indicating whether the logs have been updated since
|
||||||
|
// the last time the UI was updated
|
||||||
|
logUpd
|
||||||
|
|
||||||
|
// Total amount of hacking experience earned from this script when offline
|
||||||
|
offlineExpGained
|
||||||
|
|
||||||
|
// Total amount of money made by this script when offline
|
||||||
|
offlineMoneyMade
|
||||||
|
|
||||||
|
// Number of seconds that the script has been running offline
|
||||||
|
offlineRunningTime
|
||||||
|
|
||||||
|
// Total amount of hacking experience earned from this script when online
|
||||||
|
onlineExpGained
|
||||||
|
|
||||||
|
// Total amount of money made by this script when online
|
||||||
|
onlineMoneyMade
|
||||||
|
|
||||||
|
// Number of seconds that this script has been running online
|
||||||
|
onlineRunningTime
|
||||||
|
|
||||||
|
// Process ID.
|
||||||
|
pid
|
||||||
|
|
||||||
|
// How much RAM this script uses for ONE thread
|
||||||
|
ramUsage
|
||||||
|
|
||||||
|
// IP of the server on which this script is running
|
||||||
|
server
|
||||||
|
|
||||||
|
// Number of threads that this script is running with
|
||||||
|
threads
|
||||||
|
}
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getRunningScript(); // get the current script.
|
||||||
|
|
||||||
|
.. js:function:: getRunningScript(pid)
|
||||||
|
|
||||||
|
:RAM cost: 0.3 GB
|
||||||
|
:param number pid: PID of the script
|
||||||
|
:returns: Script object or null if not found
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getRunningScript(42); // get the script with pid 42.
|
||||||
|
|
||||||
|
.. js:function:: getRunningScript(fn, hostname[, args])
|
||||||
|
|
||||||
|
:RAM cost: 0.3 GB
|
||||||
|
:param number fn: filename of the target script
|
||||||
|
:param number hostname: hostname of the server running the script
|
||||||
|
:param number args: arguments to the script.
|
||||||
|
:returns: Script object or null if not found
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getRunningScript("example.script", "home", "foodnstuff"); // get the script called "example.script" on "home" with argument "foodnstuff"
|
||||||
15
doc/source/netscript/basicfunctions/getServerMaxRam.rst
Normal file
15
doc/source/netscript/basicfunctions/getServerMaxRam.rst
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
getServerMaxRam() Netscript Function
|
||||||
|
====================================
|
||||||
|
|
||||||
|
.. js:function:: getServerMaxRam(hostname)
|
||||||
|
|
||||||
|
:RAM cost: 0.05 GB
|
||||||
|
:param string hostname: Hostname of target server.
|
||||||
|
:returns: Total ram available on that server. In GB.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
maxRam = getServerMaxRam("helios"); // returns: 16
|
||||||
|
print("helios has "+maxRam + "GB");
|
||||||
@@ -3,6 +3,8 @@ getServerRam() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: getServerRam(hostname)
|
.. js:function:: getServerRam(hostname)
|
||||||
|
|
||||||
|
.. warning:: This function is deprecated.
|
||||||
|
|
||||||
:RAM cost: 0.1 GB
|
:RAM cost: 0.1 GB
|
||||||
:param string hostname: Hostname of target server.
|
:param string hostname: Hostname of target server.
|
||||||
:returns: An array of 2 number, first number is the total RAM, second the
|
:returns: An array of 2 number, first number is the total RAM, second the
|
||||||
|
|||||||
15
doc/source/netscript/basicfunctions/getServerUsedRam.rst
Normal file
15
doc/source/netscript/basicfunctions/getServerUsedRam.rst
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
getServerUsedRam() Netscript Function
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
.. js:function:: getServerUsedRam(hostname)
|
||||||
|
|
||||||
|
:RAM cost: 0.05 GB
|
||||||
|
:param string hostname: Hostname of target server.
|
||||||
|
:returns: Used ram on that server. In GB.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
usedRam = getServerUsedRam("harakiri-sushi"); // returns: 5.6
|
||||||
|
print("harakiri-sushi uses "+usedRam + "GB");
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
isRunning() Netscript Function
|
isRunning() Netscript Function
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
.. js:function:: isRunning(filename, hostname, [args...])
|
.. js:function:: isRunning(filename[, hostname=current hostname[, args...]])
|
||||||
|
|
||||||
:RAM cost: 0.1 GB
|
:RAM cost: 0.1 GB
|
||||||
:param string filename: Filename of script to check. case-sensitive.
|
:param string filename: Filename of script to check. case-sensitive.
|
||||||
:param string hostname: Hostname of target server.
|
:param string hostname: Hostname of target server. Defaults to current server
|
||||||
:param args...: Arguments to specify/identify which scripts to search for
|
:param args...: Arguments to specify/identify which scripts to search for
|
||||||
:returns: ``true`` if that script with those args is running on that server.
|
:returns: ``true`` if that script with those args is running on that server.
|
||||||
|
|
||||||
@@ -38,3 +38,17 @@ isRunning() Netscript Function
|
|||||||
.. code-block:: javascript
|
.. code-block:: javascript
|
||||||
|
|
||||||
isRunning("foo.script", "joesguns", 1, 5, "test");
|
isRunning("foo.script", "joesguns", 1, 5, "test");
|
||||||
|
|
||||||
|
|
||||||
|
.. js:function:: isRunning(scriptPid)
|
||||||
|
|
||||||
|
:RAM cost: 0.1 GB
|
||||||
|
:param number scriptPid: PID of the script to check.
|
||||||
|
|
||||||
|
Same as the above version but with pid.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
isRunning(39);
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
print() Netscript Function
|
print() Netscript Function
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
.. js:function:: print(x)
|
.. js:function:: print(args...)
|
||||||
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
:param x: Value to be printed.
|
:param args: Values to be printed.
|
||||||
|
|
||||||
Prints a value or a variable to the script's logs.
|
Prints any number of values to the script's logs.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
.. code-block:: javascript
|
.. code-block:: javascript
|
||||||
|
|
||||||
print("Hello world!"); // Prints "Hello world!" in the logs.
|
print("Hello world!"); // Prints "Hello world!" in the logs.
|
||||||
|
print({a:5}); // Prints '{"a":5}' in the logs.
|
||||||
@@ -15,7 +15,8 @@ ps() Netscript Function
|
|||||||
{
|
{
|
||||||
filename: Script name,
|
filename: Script name,
|
||||||
threads: Number of threads script is running with,
|
threads: Number of threads script is running with,
|
||||||
args: Script's arguments
|
args: Script's arguments,
|
||||||
|
pid: Script's pid
|
||||||
}
|
}
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@@ -23,7 +24,8 @@ ps() Netscript Function
|
|||||||
.. code-block:: javascript
|
.. code-block:: javascript
|
||||||
|
|
||||||
processes = ps("home");
|
processes = ps("home");
|
||||||
for (let i = 0; i < ps.length; ++i) {
|
for (let i = 0; i < processes.length; ++i) {
|
||||||
tprint(ps[i].filename + ' ' + ps[i].threads);
|
tprint(processes[i].filename + ' ' + processes[i].threads);
|
||||||
tprint(ps[i].args);
|
tprint(processes[i].args);
|
||||||
|
tprint(processes[i].pid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ purchaseServer() Netscript Function
|
|||||||
:param string hostname: Hostname of the purchased server.
|
:param string hostname: Hostname of the purchased server.
|
||||||
:param number ram: Amount of RAM of the purchased server. Must be a power of
|
:param number ram: Amount of RAM of the purchased server. Must be a power of
|
||||||
2. Maximum value of :doc:`getPurchasedServerMaxRam<getPurchasedServerMaxRam>`
|
2. Maximum value of :doc:`getPurchasedServerMaxRam<getPurchasedServerMaxRam>`
|
||||||
:returns: The hostname of the newly purchased server.
|
:returns: The hostname of the newly purchased server. Empty string on failure.
|
||||||
|
|
||||||
Purchased a server with the specified hostname and amount of RAM.
|
Purchased a server with the specified hostname and amount of RAM.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
tail() Netscript Function
|
tail() Netscript Function
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
.. js:function:: tail([fn[, hostname=current hostname[, [...args]]])
|
.. js:function:: tail([fn[, hostname=current hostname[, ...args]])
|
||||||
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
:param string fn: Optional. Filename of script to get logs from.
|
:param string fn: Optional. Filename of script to get logs from.
|
||||||
@@ -29,3 +29,33 @@ tail() Netscript Function
|
|||||||
|
|
||||||
// Open logs from foo.script on the foodnstuff server that was run with the arguments [1, "test"]
|
// Open logs from foo.script on the foodnstuff server that was run with the arguments [1, "test"]
|
||||||
tail("foo.script", "foodnstuff", 1, "test");
|
tail("foo.script", "foodnstuff", 1, "test");
|
||||||
|
|
||||||
|
.. js:function:: tail(scriptPid)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number scriptPid: PID of the script to tail.
|
||||||
|
|
||||||
|
Opens a script's logs by pid
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
// Open logs from process with id 42
|
||||||
|
tail(42);
|
||||||
|
|
||||||
|
// Open logs from process with id 42 on the foodnstuff server
|
||||||
|
tail(42, "foodnstuff");
|
||||||
|
|
||||||
|
.. js:function:: tail()
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
|
||||||
|
Opens the current script logs.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
// Open the current script logs.
|
||||||
|
tail();
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
tprint() Netscript Function
|
tprint() Netscript Function
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
.. js:function:: tprint(x)
|
.. js:function:: tprint(args...)
|
||||||
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
:param x: Value to be printed
|
:param args: Values to be printed
|
||||||
|
|
||||||
Prints a value or a variable to the Terminal.
|
Prints any number of values to the Terminal.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
.. code-block:: javascript
|
.. code-block:: javascript
|
||||||
|
|
||||||
tprint("Hello world!"); // Prints "Hello world!" to the terminal.
|
tprint("Hello world!"); // Prints "Hello world!" to the terminal.
|
||||||
|
tprint({a:5}); // Prints '{"a":5}' to the terminal.
|
||||||
@@ -3,6 +3,7 @@ getData() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: getData(filename[, hostname=current hostname])
|
.. js:function:: getData(filename[, hostname=current hostname])
|
||||||
|
|
||||||
|
:RAM cost: 5 GB
|
||||||
:param string filename: Filename of the contract
|
:param string filename: Filename of the contract
|
||||||
:param string hostname: Hostname of the server containing the contract.
|
:param string hostname: Hostname of the server containing the contract.
|
||||||
Optional. Defaults to current server if not provided
|
Optional. Defaults to current server if not provided
|
||||||
|
|||||||
22
doc/source/netscript/formulasapi/basic/calculateExp.rst
Normal file
22
doc/source/netscript/formulasapi/basic/calculateExp.rst
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
calculateExp() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: calculateExp(skillLevel[, mult])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number skillLevel: ``skillLevel`` to convert to exp.
|
||||||
|
:param number mult: Assume a specific skill multipler (not exp multiplier).
|
||||||
|
:returns: number of exp required to reach given ``skillLevel`` with that multiplier.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the amount of experience needed to reach level the given ``skillLevel``.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
nextHacking = getStats().hacking+1;
|
||||||
|
nextExp = formulas.basic.calculateExp(nextHacking);
|
||||||
|
missingExp = nextExp - getCharacterInformation().hackingExp;
|
||||||
|
tprint("Missing " + missingExp + " to reach next hacking level");
|
||||||
20
doc/source/netscript/formulasapi/basic/calculateSkill.rst
Normal file
20
doc/source/netscript/formulasapi/basic/calculateSkill.rst
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
calculateSkill() Netscript Function
|
||||||
|
===================================
|
||||||
|
|
||||||
|
.. js:function:: calculateSkill(exp[, mult])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number exp: ``exp`` to convert to skillLevel.
|
||||||
|
:param number mult: Assume a specific skill multipler (not exp multiplier).
|
||||||
|
:returns: skillLevel that ``exp`` would reach with that multiplier.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the skillLevel that the given amount of ``exp`` would reach.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
skillLevel = formulas.basic.calculateSkill(1000);
|
||||||
|
tprint("1000 exp would reach level " + skillLevel);
|
||||||
23
doc/source/netscript/formulasapi/basic/growPercent.rst
Normal file
23
doc/source/netscript/formulasapi/basic/growPercent.rst
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
growPercent() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: growPercent(server, threads, player)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param server server: The server that receives the growth.
|
||||||
|
:param number threads: The number of thread that would be used.
|
||||||
|
:param player player: The player.
|
||||||
|
:returns: The percentage growth this server would receive with these parameters.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
Server can be acquired with the :doc:`getServer<../../advancedfunctions/getServer>` function.
|
||||||
|
Player can be acquired with the :doc:`getPlayer<../../singularityfunctions/getPlayer>` function.
|
||||||
|
|
||||||
|
This function calculates percentage of growth a server would receive with these parameters.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
tprint(formulas.basic.growPercent(getServer(), 50, getPlayer()))
|
||||||
24
doc/source/netscript/formulasapi/basic/growTime.rst
Normal file
24
doc/source/netscript/formulasapi/basic/growTime.rst
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
growTime() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: growTime(server, player)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param server server: The server to grow.
|
||||||
|
:param player player: The player.
|
||||||
|
:returns: The time it takes to grow this server. In seconds.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
Server can be acquired with the :doc:`getServer<../../advancedfunctions/getServer>` function.
|
||||||
|
Player can be acquired with the :doc:`getPlayer<../../singularityfunctions/getPlayer>` function.
|
||||||
|
|
||||||
|
This function calculates the amount of time it takes to grow a server.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
server = getServer();
|
||||||
|
server.hackDifficulty = server.minDifficulty;
|
||||||
|
tprint(formulas.basic.growTime(server, getPlayer()));
|
||||||
24
doc/source/netscript/formulasapi/basic/hackChance.rst
Normal file
24
doc/source/netscript/formulasapi/basic/hackChance.rst
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
hackChance() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: hackChance(server, player)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param server server: The server to hack.
|
||||||
|
:param player player: The player.
|
||||||
|
:returns: The change to hack that server. between 0 and 1.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
Server can be acquired with the :doc:`getServer<../../advancedfunctions/getServer>` function.
|
||||||
|
Player can be acquired with the :doc:`getPlayer<../../singularityfunctions/getPlayer>` function.
|
||||||
|
|
||||||
|
This function calculates percentage chance to hack a server.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
server = getServer();
|
||||||
|
server.hackDifficulty = server.minDifficulty;
|
||||||
|
tprint(formulas.basic.hackChance(server, getPlayer()));
|
||||||
24
doc/source/netscript/formulasapi/basic/hackExp.rst
Normal file
24
doc/source/netscript/formulasapi/basic/hackExp.rst
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
hackExp() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: hackExp(server, player)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param server server: The server to hack.
|
||||||
|
:param player player: The player.
|
||||||
|
:returns: The amount of exp that would be acquired if this server were to be hacked.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
Server can be acquired with the :doc:`getServer<../../advancedfunctions/getServer>` function.
|
||||||
|
Player can be acquired with the :doc:`getPlayer<../../singularityfunctions/getPlayer>` function.
|
||||||
|
|
||||||
|
This function calculates the amount of exp obtained by hacking a server.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
server = getServer();
|
||||||
|
server.hackDifficulty = 99.9;
|
||||||
|
tprint(formulas.basic.hackExp(server, getPlayer()));
|
||||||
25
doc/source/netscript/formulasapi/basic/hackPercent.rst
Normal file
25
doc/source/netscript/formulasapi/basic/hackPercent.rst
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
hackPercent() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: hackPercent(server, player)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param server server: The server to hack.
|
||||||
|
:param player player: The player.
|
||||||
|
:returns: The percentage of money hacked from a servers maximum money.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
Server can be acquired with the :doc:`getServer<../../advancedfunctions/getServer>` function.
|
||||||
|
Player can be acquired with the :doc:`getPlayer<../../singularityfunctions/getPlayer>` function.
|
||||||
|
|
||||||
|
This function calculates the percentage of maximum money hacked from a server.
|
||||||
|
Multiply this by thread count to know calculate the percentage for more than 1 thread.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
server = getServer();
|
||||||
|
server.hackDifficulty = server.minDifficulty;
|
||||||
|
tprint(formulas.basic.hackPercent(server, getPlayer()));
|
||||||
24
doc/source/netscript/formulasapi/basic/hackTime.rst
Normal file
24
doc/source/netscript/formulasapi/basic/hackTime.rst
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
hackTime() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: hackTime(server, player)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param server server: The server to hack.
|
||||||
|
:param player player: The player.
|
||||||
|
:returns: The time it takes to hack this server. In seconds.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
Server can be acquired with the :doc:`getServer<../../advancedfunctions/getServer>` function.
|
||||||
|
Player can be acquired with the :doc:`getPlayer<../../singularityfunctions/getPlayer>` function.
|
||||||
|
|
||||||
|
This function calculates the amount of time it takes to hack a server.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
server = getServer();
|
||||||
|
server.hackDifficulty = server.minDifficulty;
|
||||||
|
tprint(formulas.basic.hackTime(server, getPlayer()));
|
||||||
24
doc/source/netscript/formulasapi/basic/weakenTime.rst
Normal file
24
doc/source/netscript/formulasapi/basic/weakenTime.rst
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
weakenTime() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: weakenTime(server, player)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param server server: The server to weaken.
|
||||||
|
:param player player: The player.
|
||||||
|
:returns: The time it takes to weaken this server. In seconds.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
Server can be acquired with the :doc:`getServer<../../advancedfunctions/getServer>` function.
|
||||||
|
Player can be acquired with the :doc:`getPlayer<../../singularityfunctions/getPlayer>` function.
|
||||||
|
|
||||||
|
This function calculates the amount of time it takes to weaken a server.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
server = getServer();
|
||||||
|
server.hackDifficulty = server.minDifficulty;
|
||||||
|
tprint(formulas.basic.weakenTime(server, getPlayer()));
|
||||||
26
doc/source/netscript/formulasapi/hacknetNodes/constants.rst
Normal file
26
doc/source/netscript/formulasapi/hacknetNodes/constants.rst
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
constants() Netscript Function
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. js:function:: constants()
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:returns: A structure with various constants related to hacknet nodes.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
MoneyGainPerLevel
|
||||||
|
BaseCost
|
||||||
|
LevelBaseCost
|
||||||
|
RamBaseCost
|
||||||
|
CoreBaseCost
|
||||||
|
PurchaseNextMult
|
||||||
|
UpgradeLevelMult
|
||||||
|
UpgradeRamMult
|
||||||
|
UpgradeCoreMult
|
||||||
|
MaxLevel
|
||||||
|
MaxRam
|
||||||
|
MaxCores
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
coreUpgradeCost() Netscript Function
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. js:function:: coreUpgradeCost(startingCores[, extraCores[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number startingCores: Number of core at the start the calculation.
|
||||||
|
:param number extraCores: Extra number of cores you want to buy. Default to ``1``.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to go from ``startingCores`` to ``startingCores+extraCores``.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost of upgrading cores from any level to any level.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetNodes.coreUpgradeCost(1, 5); // returns: 6355000
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
hacknetNodeCost() Netscript Function
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. js:function:: hacknetNodeCost(nodeN[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number nodeN: Number of the new node.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to buy your ``nodeN`` th node.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost purchasing a hacknet node.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetNodes.hacknetNodeCost(2); // returns: 1800
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
levelUpgradeCost() Netscript Function
|
||||||
|
==============================================
|
||||||
|
|
||||||
|
.. js:function:: levelUpgradeCost(startingLevel[, extraLevels[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number startingLevel: Number of level at the start the calculation.
|
||||||
|
:param number extraLevels: Extra number of levels you want to buy. Default to ``1``.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to go from ``startingLevel`` to ``startingLevel+extraLevels``.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost of upgrading levels from any level to any level.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetNodes.levelUpgradeCost(1, 5); // returns: 2816
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
moneyGainRate() Netscript Function
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
.. js:function:: moneyGainRate(level, ram, core[, mult])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number level: level of the node.
|
||||||
|
:param number ram: ram of the node.
|
||||||
|
:param number core: cores of the node.
|
||||||
|
:returns: Money per second that a node with those stats would gain per second.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the money rate of a node with the given stats.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
node = hacknet.getNodeStats(1);
|
||||||
|
currentRate = formulas.hacknetNodes.moneyGainRate(node.level, node.ram, node.cores);
|
||||||
|
levelRate = formulas.hacknetNodes.moneyGainRate(node.level+1, node.ram, node.cores);
|
||||||
|
ramRate = formulas.hacknetNodes.moneyGainRate(node.level, node.ram*2, node.cores);
|
||||||
|
coresRate = formulas.hacknetNodes.moneyGainRate(node.level, node.ram, node.cores+1);
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
ramUpgradeCost() Netscript Function
|
||||||
|
============================================
|
||||||
|
|
||||||
|
.. js:function:: ramUpgradeCost(startingRam[, extraRamLevels[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number startingRam: Amount of RAM at the start the calculation.
|
||||||
|
:param number extraRamLevels: Extra number of levels you want to buy. Default to ``1``.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to go from ``startingRam`` to ``startingRam+extraRamLevels``.
|
||||||
|
|
||||||
|
..note:: ``startingRam`` is the actual amount of ram, not the amount of levels of ram.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost of upgrading levels from any level to any level.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetNodes.ramUpgradeCost(1, 5); // returns: 2095000
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
cacheUpgradeCost() Netscript Function
|
||||||
|
==============================================
|
||||||
|
|
||||||
|
.. js:function:: cacheUpgradeCost(startingCache[, extraCacheLevels[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number startingCache: Cache level at the start the calculation.
|
||||||
|
:param number extraCacheLevels: Extra number of cache level you want to buy. Default to ``1``.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to go from ``startingLevel`` to ``startingLevel+extraLevels``.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 and Source-File 9-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost of upgrading cache from any level to any level.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetServers.cacheUpgradeCost(1, 5); // returns: 243170000
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
constants() Netscript Function
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. js:function:: constants()
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:returns: A structure with various constants related to hacknet servers.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
HashesPerLevel
|
||||||
|
BaseCost
|
||||||
|
RamBaseCost
|
||||||
|
CoreBaseCost
|
||||||
|
CacheBaseCost
|
||||||
|
PurchaseMult
|
||||||
|
UpgradeLevelMult
|
||||||
|
UpgradeRamMult
|
||||||
|
UpgradeCoreMult
|
||||||
|
UpgradeCacheMult
|
||||||
|
MaxServers
|
||||||
|
MaxLevel
|
||||||
|
MaxRam
|
||||||
|
MaxCores
|
||||||
|
MaxCache
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
coreUpgradeCost() Netscript Function
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. js:function:: coreUpgradeCost(startingCores[, extraCores[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number startingCores: Number of core at the start the calculation.
|
||||||
|
:param number extraCores: Extra number of cores you want to buy. Default to ``1``.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to go from ``startingCores`` to ``startingCores+extraCores``.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 and Source-File 9-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost of upgrading cores from any level to any level.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetServers.coreUpgradeCost(1, 5); // returns: 12015000
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
hacknetServerCost() Netscript Function
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
.. js:function:: hacknetServerCost(serverN[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number serverN: Number of the new node.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to buy your ``serverN`` th node.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 and Source-File 9-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost purchasing a hacknet node.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetNodes.hacknetServerCost(2); // returns: 1800000
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
hashGainRate() Netscript Function
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
.. js:function:: hashGainRate(level, ramUsed, maxRam, core[, mult])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number level: level of the server.
|
||||||
|
:param number ramUsed: ram used on the server.
|
||||||
|
:param number maxRam: max ram of the server.
|
||||||
|
:param number core: cores of the server.
|
||||||
|
:returns: Money per second that a server with those stats would gain per second.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 and Source-File 9-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the hash rate of a server with the given stats.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
server = hacknet.getNodeStats(1);
|
||||||
|
currentRate = formulas.hacknetNodes.hashGainRate(server.level, 0, server.ram, server.cores);
|
||||||
|
levelRate = formulas.hacknetNodes.hashGainRate(server.level+1, 0, server.ram, server.cores);
|
||||||
|
ramRate = formulas.hacknetNodes.hashGainRate(server.level, 0, server.ram*2, server.cores);
|
||||||
|
coresRate = formulas.hacknetNodes.hashGainRate(server.level, 0, server.ram, server.cores+1);
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
hashUpgradeCost() Netscript Function
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. js:function:: hashUpgradeCost(upgName, level)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param string upgName: Name of the Hash upgrade.
|
||||||
|
:param number level: Level of the upgrade.
|
||||||
|
:returns: Amount of Hash.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 and Source-File 9-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates amount of Hash require to buy level ``level`` of upgrade ``upgName``.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetServers.hashUpgradeCost("Increase Maximum Money", 5); // returns: 250
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
levelUpgradeCost() Netscript Function
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. js:function:: levelUpgradeCost(startingLevel[, extraLevels[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number startingLevel: Number of level at the start the calculation.
|
||||||
|
:param number extraLevels: Extra number of levels you want to buy. Default to ``1``.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to go from ``startingLevel`` to ``startingLevel+extraLevels``.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 and Source-File 9-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost of upgrading levels from any level to any level.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetServers.levelUpgradeCost(1, 5); // returns: 2792000
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
ramUpgradeCost() Netscript Function
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. js:function:: ramUpgradeCost(startingRam[, extraRamLevels[, costMult]])
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param number startingRam: Amount of RAM at the start the calculation.
|
||||||
|
:param number extraRamLevels: Extra number of levels you want to buy. Default to ``1``.
|
||||||
|
:param number costMult: Aug multiplier that reduces cost. Defaults to ``1``.
|
||||||
|
:returns: Money required to go from ``startingRam`` to ``startingRam+extraRamLevels``.
|
||||||
|
|
||||||
|
..note:: ``startingRam`` is the actual amount of ram, not the amount of levels of ram.
|
||||||
|
|
||||||
|
You must have Source-File 5-1 and Source-File 9-1 in order to use this function.
|
||||||
|
|
||||||
|
This function calculates the cost of upgrading levels from any level to any level.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
formulas.hacknetServers.ramUpgradeCost(1, 5); // returns: 15810000
|
||||||
@@ -10,27 +10,35 @@ getMemberInformation() Netscript Function
|
|||||||
The object has the following structure::
|
The object has the following structure::
|
||||||
|
|
||||||
{
|
{
|
||||||
agility: Agility stat
|
name: Name of this member.
|
||||||
agilityEquipMult: Agility multiplier from equipment. Decimal form
|
task: Name of currently assigned task.
|
||||||
agilityAscensionMult: Agility multiplier from ascension. Decimal form
|
earnedRespect: Total amount of respect earned by this member.
|
||||||
augmentations: Array of names of all owned Augmentations
|
hack: Hacking stat
|
||||||
charisma: Charisma stat
|
str: Strength stat
|
||||||
charismaEquipMult: Charisma multiplier from equipment. Decimal form
|
def: Defense stat
|
||||||
charismaAscensionMult: Charisma multiplier from ascension. Decimal form
|
dex: Dexterity stat
|
||||||
defense: Defense stat
|
agi: Agility stat
|
||||||
defenseEquipMult: Defense multiplier from equipment. Decimal form
|
cha: Charisma stat
|
||||||
defenseAscensionMult: Defense multiplier from ascension. Decimal form
|
hack_exp: Hacking experience
|
||||||
dexterity: Dexterity stat
|
str_exp: Strength experience
|
||||||
dexterityEquipMult: Dexterity multiplier from equipment. Decimal form
|
def_exp: Defense experience
|
||||||
dexterityAscensionMult: Dexterity multiplier from ascension. Decimal form
|
dex_exp: Dexterity experience
|
||||||
equipment: Array of names of all owned Non-Augmentation Equipment
|
agi_exp: Agility experience
|
||||||
hacking: Hacking stat
|
cha_exp: Charisma experience
|
||||||
hackingEquipMult: Hacking multiplier from equipment. Decimal form
|
hack_mult: Hacking multiplier from equipment. Decimal form
|
||||||
hackingAscensionMult: Hacking multiplier from ascension. Decimal form
|
str_mult: Strength multiplier from equipment. Decimal form
|
||||||
strength: Strength stat
|
def_mult: Defense multiplier from equipment. Decimal form
|
||||||
strengthEquipMult: Strength multiplier from equipment. Decimal form
|
dex_mult: Dexterity multiplier from equipment. Decimal form
|
||||||
strengthAscensionMult: Strength multiplier from ascension. Decimal form
|
agi_mult: Agility multiplier from equipment. Decimal form
|
||||||
task: Name of currently assigned task
|
cha_mult: Charisma multiplier from equipment. Decimal form
|
||||||
|
hack_asc_mult: Hacking multiplier from ascension. Decimal form
|
||||||
|
str_asc_mult: Strength multiplier from ascension. Decimal form
|
||||||
|
def_asc_mult: Defense multiplier from ascension. Decimal form
|
||||||
|
dex_asc_mult: Dexterity multiplier from ascension. Decimal form
|
||||||
|
agi_asc_mult: Agility multiplier from ascension. Decimal form
|
||||||
|
cha_asc_mult: Charisma multiplier from ascension. Decimal form
|
||||||
|
upgrades: Array of names of all owned Non-Augmentation Equipment
|
||||||
|
augmentations: Array of names of all owned Augmentations
|
||||||
}
|
}
|
||||||
|
|
||||||
Get stat and equipment-related information about a Gang Member
|
Get stat and equipment-related information about a Gang Member
|
||||||
18
doc/source/netscript/hacknetnodeapi/getHashUpgradeLevel.rst
Normal file
18
doc/source/netscript/hacknetnodeapi/getHashUpgradeLevel.rst
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
getHashUpgradeLevel() Netscript Function
|
||||||
|
========================================
|
||||||
|
|
||||||
|
.. js:function:: getHashUpgradeLevel(upgName)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param string upgName: Name of upgrade to spend hashes on. Must be an exact match.
|
||||||
|
:returns: level of the upgrade.
|
||||||
|
|
||||||
|
.. note:: This function is only applicable for Hacknet Servers (the upgraded version
|
||||||
|
of a Hacknet Node).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code:: javascript
|
||||||
|
|
||||||
|
hacknet.getHashUpgradeLevel("Sell for Money"); // returns: 5
|
||||||
|
// "Sell for Money" was bought 5 times.
|
||||||
13
doc/source/netscript/hacknetnodeapi/getStudyMult.rst
Normal file
13
doc/source/netscript/hacknetnodeapi/getStudyMult.rst
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
getStudyMult() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. js:function:: getStudyMult()
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:returns: The multiplier to studying that hash upgrades provide to the player.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code:: javascript
|
||||||
|
|
||||||
|
hacknet.getStudyMult(); // return: 1.4
|
||||||
13
doc/source/netscript/hacknetnodeapi/getTrainingMult.rst
Normal file
13
doc/source/netscript/hacknetnodeapi/getTrainingMult.rst
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
getTrainingMul() Netscript Function
|
||||||
|
===================================
|
||||||
|
|
||||||
|
.. js:function:: getTrainingMul()
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:returns: The multiplier to training that hash upgrades provide to the player.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code:: javascript
|
||||||
|
|
||||||
|
hacknet.getTrainingMult(); // return: 1.4
|
||||||
12
doc/source/netscript/hacknetnodeapi/hashCapacity.rst
Normal file
12
doc/source/netscript/hacknetnodeapi/hashCapacity.rst
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
hashCapacity() Netscript Function
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. warning:: This page contains spoilers for the game
|
||||||
|
|
||||||
|
.. js:function:: hashCapacity()
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:returns: The players maximum hash capacity.
|
||||||
|
|
||||||
|
.. note:: This function is only applicable for Hacknet Servers (the upgraded version of
|
||||||
|
a Hacknet Node).
|
||||||
@@ -4,4 +4,4 @@ maxNumNodes() Netscript Function
|
|||||||
.. js:function:: maxNumNodes()
|
.. js:function:: maxNumNodes()
|
||||||
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
:returns: Maximum number of Hacknet Nodes you can own.
|
:returns: Maximum number of Hacknet Nodes you can own, unless you have not unlocked HackNet servers. Then, it returns Infinity.
|
||||||
|
|||||||
@@ -9,3 +9,4 @@ they contain spoilers for the game.
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
||||||
getBitNodeMultipliers() <advancedfunctions/getBitNodeMultipliers>
|
getBitNodeMultipliers() <advancedfunctions/getBitNodeMultipliers>
|
||||||
|
getServer() <advancedfunctions/getServer>
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ Netscript Bladeburner API
|
|||||||
Netscript provides the following API for interacting with the game's Bladeburner mechanic.
|
Netscript provides the following API for interacting with the game's Bladeburner mechanic.
|
||||||
|
|
||||||
The Bladeburner API is **not** immediately available to the player and must be unlocked
|
The Bladeburner API is **not** immediately available to the player and must be unlocked
|
||||||
later in the game
|
later in the game.
|
||||||
|
|
||||||
.. warning:: This page contains spoilers for the game
|
.. warning:: This page contains spoilers for the game
|
||||||
|
|
||||||
The Bladeburner API is unlocked in BitNode-7. If you are in BitNode-7, you will
|
The Bladeburner API is unlocked in BitNode-7. If you are in BitNode-7, you will
|
||||||
automatically gain access to this API. Otherwise, you must have Source-File 7 in
|
automatically gain access to this API. Otherwise, you must have Source-File 7 in
|
||||||
order to use this API in other BitNodes
|
order to use this API in other BitNodes.
|
||||||
|
|
||||||
**Bladeburner API functions must be accessed through the 'bladeburner' namespace**
|
**Bladeburner API functions must be accessed through the 'bladeburner' namespace**
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ identifier by attaching the Bladeburner API functions to an object::
|
|||||||
}
|
}
|
||||||
|
|
||||||
BladeburnerHandler.prototype.handle = function() {
|
BladeburnerHandler.prototype.handle = function() {
|
||||||
//If we're doing something else manually (without Simlacrum),
|
//If we're doing something else manually (without Simulacrum),
|
||||||
//it overrides Bladeburner stuff
|
//it overrides Bladeburner stuff
|
||||||
if (!this.hasSimulacrum() && this.ns.isBusy()) {
|
if (!this.hasSimulacrum() && this.ns.isBusy()) {
|
||||||
this.ns.print("Idling bc player is busy with some other action");
|
this.ns.print("Idling bc player is busy with some other action");
|
||||||
|
|||||||
61
doc/source/netscript/netscriptformulasapi.rst
Normal file
61
doc/source/netscript/netscriptformulasapi.rst
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
.. _netscriptformulas:
|
||||||
|
|
||||||
|
Netscript Formulas Functions
|
||||||
|
============================
|
||||||
|
|
||||||
|
.. warning:: This page contains spoilers for the game.
|
||||||
|
|
||||||
|
The formulas API allow you to gain insight into the inner workings of the game.
|
||||||
|
These functions will allow you to make more informed decision.
|
||||||
|
|
||||||
|
All of these function cost 0 GB of ram to use. All these function require
|
||||||
|
Source-File 5-1 but some additionally need another source file level 1 to use.
|
||||||
|
|
||||||
|
|
||||||
|
basic formulas
|
||||||
|
--------------
|
||||||
|
|
||||||
|
These functions are under the ``formulas.basic.`` name space and available as
|
||||||
|
soon as you acquire Source-File 5-1
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
calculateSkill() <formulasapi/basic/calculateSkill>
|
||||||
|
calculateExp() <formulasapi/basic/calculateExp>
|
||||||
|
growTime() <formulasapi/basic/growTime>
|
||||||
|
hackTime() <formulasapi/basic/hackTime>
|
||||||
|
weakenTime() <formulasapi/basic/weakenTime>
|
||||||
|
growPercent() <formulasapi/basic/growPercent>
|
||||||
|
hackPercent() <formulasapi/basic/hackPercent>
|
||||||
|
hackChance() <formulasapi/basic/hackChance>
|
||||||
|
hackExp() <formulasapi/basic/hackExp>
|
||||||
|
|
||||||
|
|
||||||
|
hacknetNodes formulas
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
These functions are under the ``formulas.hacknetNodes.`` namespace and available as
|
||||||
|
soon as you acquire Source-File 5-1.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
hacknetNodeCost() <formulasapi/hacknetNodes/hacknetNodeCost>
|
||||||
|
moneyGainRate() <formulasapi/hacknetNodes/moneyGainRate>
|
||||||
|
levelUpgradeCost() <formulasapi/hacknetNodes/levelUpgradeCost>
|
||||||
|
ramUpgradeCost() <formulasapi/hacknetNodes/ramUpgradeCost>
|
||||||
|
coreUpgradeCost() <formulasapi/hacknetNodes/coreUpgradeCost>
|
||||||
|
constants() <formulasapi/hacknetNodes/constants>
|
||||||
|
|
||||||
|
hacknetServers formulas
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
These functions are under the ``formulas.hacknetServers.`` namespace.
|
||||||
|
These functions require Source-File 5-1 and Source-File 9-1 to be invoked.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
hacknetServerCost() <formulasapi/hacknetServers/hacknetServerCost>
|
||||||
|
hashGainRate() <formulasapi/hacknetServers/hashGainRate>
|
||||||
|
levelUpgradeCost() <formulasapi/hacknetServers/levelUpgradeCost>
|
||||||
|
ramUpgradeCost() <formulasapi/hacknetServers/ramUpgradeCost>
|
||||||
|
coreUpgradeCost() <formulasapi/hacknetServers/coreUpgradeCost>
|
||||||
|
cacheUpgradeCost() <formulasapi/hacknetServers/cacheUpgradeCost>
|
||||||
|
hashUpgradeCost() <formulasapi/hacknetServers/hashUpgradeCost>
|
||||||
|
constants() <formulasapi/hacknetServers/constants>
|
||||||
@@ -54,7 +54,8 @@ This includes information such as function signatures, what they do, and their r
|
|||||||
getServerMinSecurityLevel() <basicfunctions/getServerMinSecurityLevel>
|
getServerMinSecurityLevel() <basicfunctions/getServerMinSecurityLevel>
|
||||||
getServerRequiredHackingLevel() <basicfunctions/getServerRequiredHackingLevel>
|
getServerRequiredHackingLevel() <basicfunctions/getServerRequiredHackingLevel>
|
||||||
getServerNumPortsRequired() <basicfunctions/getServerNumPortsRequired>
|
getServerNumPortsRequired() <basicfunctions/getServerNumPortsRequired>
|
||||||
getServerRam() <basicfunctions/getServerRam>
|
getServerMaxRam() <basicfunctions/getServerMaxRam>
|
||||||
|
getServerUsedRam() <basicfunctions/getServerUsedRam>
|
||||||
serverExists() <basicfunctions/serverExists>
|
serverExists() <basicfunctions/serverExists>
|
||||||
fileExists() <basicfunctions/fileExists>
|
fileExists() <basicfunctions/fileExists>
|
||||||
isRunning() <basicfunctions/isRunning>
|
isRunning() <basicfunctions/isRunning>
|
||||||
@@ -75,6 +76,7 @@ This includes information such as function signatures, what they do, and their r
|
|||||||
scriptKill() <basicfunctions/scriptKill>
|
scriptKill() <basicfunctions/scriptKill>
|
||||||
getScriptName() <basicfunctions/getScriptName>
|
getScriptName() <basicfunctions/getScriptName>
|
||||||
getScriptRam() <basicfunctions/getScriptRam>
|
getScriptRam() <basicfunctions/getScriptRam>
|
||||||
|
getRunningScript() <basicfunctions/getRunningScript>
|
||||||
getHackTime() <basicfunctions/getHackTime>
|
getHackTime() <basicfunctions/getHackTime>
|
||||||
getGrowTime() <basicfunctions/getGrowTime>
|
getGrowTime() <basicfunctions/getGrowTime>
|
||||||
getWeakenTime() <basicfunctions/getWeakenTime>
|
getWeakenTime() <basicfunctions/getWeakenTime>
|
||||||
@@ -88,3 +90,9 @@ This includes information such as function signatures, what they do, and their r
|
|||||||
prompt() <basicfunctions/prompt>
|
prompt() <basicfunctions/prompt>
|
||||||
wget() <basicfunctions/wget>
|
wget() <basicfunctions/wget>
|
||||||
getFavorToDonate() <basicfunctions/getFavorToDonate>
|
getFavorToDonate() <basicfunctions/getFavorToDonate>
|
||||||
|
flags() <basicfunctions/flags>
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:caption: Deprecated:
|
||||||
|
|
||||||
|
getServerRam() <basicfunctions/getServerRam>
|
||||||
@@ -26,7 +26,7 @@ In :ref:`netscriptjs`::
|
|||||||
ns.hacknet.getNodeStats(3).level;
|
ns.hacknet.getNodeStats(3).level;
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:caption: API Functions:
|
:caption: Hacknet Nodes API Functions:
|
||||||
|
|
||||||
numNodes() <hacknetnodeapi/numNodes>
|
numNodes() <hacknetnodeapi/numNodes>
|
||||||
maxNumNodes() <hacknetnodeapi/maxNumNodes>
|
maxNumNodes() <hacknetnodeapi/maxNumNodes>
|
||||||
@@ -36,14 +36,22 @@ In :ref:`netscriptjs`::
|
|||||||
upgradeLevel() <hacknetnodeapi/upgradeLevel>
|
upgradeLevel() <hacknetnodeapi/upgradeLevel>
|
||||||
upgradeRam() <hacknetnodeapi/upgradeRam>
|
upgradeRam() <hacknetnodeapi/upgradeRam>
|
||||||
upgradeCore() <hacknetnodeapi/upgradeCore>
|
upgradeCore() <hacknetnodeapi/upgradeCore>
|
||||||
upgradeCache() <hacknetnodeapi/upgradeCache>
|
|
||||||
getLevelUpgradeCost() <hacknetnodeapi/getLevelUpgradeCost>
|
getLevelUpgradeCost() <hacknetnodeapi/getLevelUpgradeCost>
|
||||||
getRamUpgradeCost() <hacknetnodeapi/getRamUpgradeCost>
|
getRamUpgradeCost() <hacknetnodeapi/getRamUpgradeCost>
|
||||||
getCoreUpgradeCost() <hacknetnodeapi/getCoreUpgradeCost>
|
getCoreUpgradeCost() <hacknetnodeapi/getCoreUpgradeCost>
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:caption: Hacknet Servers API Functions:
|
||||||
|
|
||||||
|
upgradeCache() <hacknetnodeapi/upgradeCache>
|
||||||
getCacheUpgradeCost() <hacknetnodeapi/getCacheUpgradeCost>
|
getCacheUpgradeCost() <hacknetnodeapi/getCacheUpgradeCost>
|
||||||
numHashes() <hacknetnodeapi/numHashes>
|
numHashes() <hacknetnodeapi/numHashes>
|
||||||
|
hashCapacity() <hacknetnodeapi/hashCapacity>
|
||||||
hashCost() <hacknetnodeapi/hashCost>
|
hashCost() <hacknetnodeapi/hashCost>
|
||||||
spendHashes() <hacknetnodeapi/spendHashes>
|
spendHashes() <hacknetnodeapi/spendHashes>
|
||||||
|
getHashUpgradeLevel() <hacknetnodeapi/getHashUpgradeLevel>
|
||||||
|
getTrainingMult() <hacknetnodeapi/getTrainingMult>
|
||||||
|
getStudyMult() <hacknetnodeapi/getStudyMult>
|
||||||
|
|
||||||
.. _netscript_hacknetnodeapi_referencingahacknetnode:
|
.. _netscript_hacknetnodeapi_referencingahacknetnode:
|
||||||
|
|
||||||
@@ -78,7 +86,7 @@ The following is an example of one way a script can be used to automate the
|
|||||||
purchasing and upgrading of Hacknet Nodes.
|
purchasing and upgrading of Hacknet Nodes.
|
||||||
|
|
||||||
This script attempts to purchase Hacknet Nodes until the player has a total of 8. Then
|
This script attempts to purchase Hacknet Nodes until the player has a total of 8. Then
|
||||||
it gradually upgrades those Node's to a minimum of level 140, 64 GB RAM, and 8 cores
|
it gradually upgrades those Node's to a minimum of level 80, 16 GB RAM, and 8 cores
|
||||||
|
|
||||||
.. code:: javascript
|
.. code:: javascript
|
||||||
|
|
||||||
@@ -121,3 +129,16 @@ it gradually upgrades those Node's to a minimum of level 140, 64 GB RAM, and 8 c
|
|||||||
};
|
};
|
||||||
|
|
||||||
print("All nodes upgraded to 16GB RAM");
|
print("All nodes upgraded to 16GB RAM");
|
||||||
|
|
||||||
|
for (var i = 0; i < cnt; i++) {
|
||||||
|
while (hacknet.getNodeStats(i).cores < 8) {
|
||||||
|
var cost = hacknet.getCoreUpgradeCost(i, 1);
|
||||||
|
while (myMoney() < cost) {
|
||||||
|
print("Need $" + cost + " . Have $" + myMoney());
|
||||||
|
sleep(3000);
|
||||||
|
}
|
||||||
|
res = hacknet.upgradeCore(i, 1);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
print("All nodes upgraded to 8 cores");
|
||||||
|
|||||||
@@ -65,6 +65,6 @@ Here is a short summary of the differences between Netscript 1.0 and Netscript 2
|
|||||||
|
|
||||||
* Supports (almost) all features of modern JavaScript
|
* Supports (almost) all features of modern JavaScript
|
||||||
* Extremely fast - code is executed as an Async Function
|
* Extremely fast - code is executed as an Async Function
|
||||||
* Currently only works with Google Chrome browser
|
* Works on most modern browsers.
|
||||||
* Each script becomes a module and therefore all instances of that script can easily
|
* Each script becomes a module and therefore all instances of that script can easily
|
||||||
share data between each other (essentially global/static variables)
|
share data between each other (essentially global/static variables)
|
||||||
|
|||||||
@@ -24,10 +24,12 @@ level 3, then you will be able to access all of the Singularity Functions.
|
|||||||
travelToCity() <singularityfunctions/travelToCity>
|
travelToCity() <singularityfunctions/travelToCity>
|
||||||
purchaseTor() <singularityfunctions/purchaseTor>
|
purchaseTor() <singularityfunctions/purchaseTor>
|
||||||
purchaseProgram() <singularityfunctions/purchaseProgram>
|
purchaseProgram() <singularityfunctions/purchaseProgram>
|
||||||
|
getCurrentServer() <singularityfunctions/getCurrentServer>
|
||||||
connect() <singularityfunctions/connect>
|
connect() <singularityfunctions/connect>
|
||||||
manualHack() <singularityfunctions/manualHack>
|
manualHack() <singularityfunctions/manualHack>
|
||||||
getStats() <singularityfunctions/getStats>
|
installBackdoor() <singularityfunctions/installBackdoor>
|
||||||
getCharacterInformation() <singularityfunctions/getCharacterInformation>
|
getPlayer() <singularityfunctions/getPlayer>
|
||||||
|
hospitalize() <singularityfunctions/hospitalize>
|
||||||
isBusy() <singularityfunctions/isBusy>
|
isBusy() <singularityfunctions/isBusy>
|
||||||
stopAction() <singularityfunctions/stopAction>
|
stopAction() <singularityfunctions/stopAction>
|
||||||
upgradeHomeRam() <singularityfunctions/upgradeHomeRam>
|
upgradeHomeRam() <singularityfunctions/upgradeHomeRam>
|
||||||
@@ -57,3 +59,10 @@ level 3, then you will be able to access all of the Singularity Functions.
|
|||||||
purchaseAugmentation() <singularityfunctions/purchaseAugmentation>
|
purchaseAugmentation() <singularityfunctions/purchaseAugmentation>
|
||||||
installAugmentations() <singularityfunctions/installAugmentations>
|
installAugmentations() <singularityfunctions/installAugmentations>
|
||||||
softReset() <singularityfunctions/softReset>
|
softReset() <singularityfunctions/softReset>
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:caption: Deprecated:
|
||||||
|
|
||||||
|
getStats() <singularityfunctions/getStats>
|
||||||
|
getCharacterInformation() <singularityfunctions/getCharacterInformation>
|
||||||
@@ -3,6 +3,8 @@ getCharacterInformation() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: getCharacterInformation()
|
.. js:function:: getCharacterInformation()
|
||||||
|
|
||||||
|
.. warning:: This function is deprecated.
|
||||||
|
|
||||||
:RAM cost: 0.5 GB
|
:RAM cost: 0.5 GB
|
||||||
|
|
||||||
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to run this function.
|
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to run this function.
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
getCurrentServer() Netscript Function
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
.. js:function:: getCurrentServer()
|
||||||
|
|
||||||
|
:RAM cost: 2 GB
|
||||||
|
:returns: The hostname of the server the player is currently connected to.
|
||||||
|
|
||||||
|
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.
|
||||||
|
|
||||||
103
doc/source/netscript/singularityfunctions/getPlayer.rst
Normal file
103
doc/source/netscript/singularityfunctions/getPlayer.rst
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
getPlayer() Netscript Function
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. js:function:: getPlayer()
|
||||||
|
|
||||||
|
:RAM cost: 0.5 GB
|
||||||
|
|
||||||
|
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to run this function.
|
||||||
|
|
||||||
|
The result of this function can be passed to the :doc:`formulas API<../netscriptformulasapi>`.
|
||||||
|
|
||||||
|
Returns an object with the Player's stats. The object has the following properties::
|
||||||
|
|
||||||
|
{
|
||||||
|
hacking_skill
|
||||||
|
hp
|
||||||
|
max_hp
|
||||||
|
strength
|
||||||
|
defense
|
||||||
|
dexterity
|
||||||
|
agility
|
||||||
|
charisma
|
||||||
|
intelligence
|
||||||
|
hacking_chance_mult
|
||||||
|
hacking_speed_mult
|
||||||
|
hacking_money_mult
|
||||||
|
hacking_grow_mult
|
||||||
|
hacking_exp
|
||||||
|
strength_exp
|
||||||
|
defense_exp
|
||||||
|
dexterity_exp
|
||||||
|
agility_exp
|
||||||
|
charisma_exp
|
||||||
|
hacking_mult
|
||||||
|
strength_mult
|
||||||
|
defense_mult
|
||||||
|
dexterity_mult
|
||||||
|
agility_mult
|
||||||
|
charisma_mult
|
||||||
|
hacking_exp_mult
|
||||||
|
strength_exp_mult
|
||||||
|
defense_exp_mult
|
||||||
|
dexterity_exp_mult
|
||||||
|
agility_exp_mult
|
||||||
|
charisma_exp_mult
|
||||||
|
company_rep_mult
|
||||||
|
faction_rep_mult
|
||||||
|
money
|
||||||
|
city
|
||||||
|
location
|
||||||
|
crime_money_mult
|
||||||
|
crime_success_mult
|
||||||
|
isWorking
|
||||||
|
workType
|
||||||
|
currentWorkFactionName
|
||||||
|
currentWorkFactionDescription
|
||||||
|
workHackExpGainRate
|
||||||
|
workStrExpGainRate
|
||||||
|
workDefExpGainRate
|
||||||
|
workDexExpGainRate
|
||||||
|
workAgiExpGainRate
|
||||||
|
workChaExpGainRate
|
||||||
|
workRepGainRate
|
||||||
|
workMoneyGainRate
|
||||||
|
workMoneyLossRate
|
||||||
|
workHackExpGained
|
||||||
|
workStrExpGained
|
||||||
|
workDefExpGained
|
||||||
|
workDexExpGained
|
||||||
|
workAgiExpGained
|
||||||
|
workChaExpGained
|
||||||
|
workRepGained
|
||||||
|
workMoneyGained
|
||||||
|
createProgramName
|
||||||
|
createProgramReqLvl
|
||||||
|
className
|
||||||
|
crimeType
|
||||||
|
work_money_mult
|
||||||
|
hacknet_node_money_mult
|
||||||
|
hacknet_node_purchase_cost_mult
|
||||||
|
hacknet_node_ram_cost_mult
|
||||||
|
hacknet_node_core_cost_mult
|
||||||
|
hacknet_node_level_cost_mult
|
||||||
|
hasWseAccount
|
||||||
|
hasTixApiAccess
|
||||||
|
has4SData
|
||||||
|
has4SDataTixApi
|
||||||
|
bladeburner_max_stamina_mult
|
||||||
|
bladeburner_stamina_gain_mult
|
||||||
|
bladeburner_success_chance_mult
|
||||||
|
bitNodeN
|
||||||
|
totalPlaytime
|
||||||
|
playtimeSinceLastAug
|
||||||
|
playtimeSinceLastBitnode
|
||||||
|
jobs
|
||||||
|
factions
|
||||||
|
tor
|
||||||
|
}
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
player = getPlayer();
|
||||||
|
print('My charisma level is: ' + player.charisma);
|
||||||
@@ -3,6 +3,8 @@ getStats() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: getStats()
|
.. js:function:: getStats()
|
||||||
|
|
||||||
|
.. warning:: This function is deprecated.
|
||||||
|
|
||||||
:RAM cost: 0.5 GB
|
:RAM cost: 0.5 GB
|
||||||
|
|
||||||
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to run this function.
|
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to run this function.
|
||||||
|
|||||||
11
doc/source/netscript/singularityfunctions/hospitalize.rst
Normal file
11
doc/source/netscript/singularityfunctions/hospitalize.rst
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
hospitalize() Netscript Function
|
||||||
|
===================================
|
||||||
|
|
||||||
|
.. js:function:: hospitalize()
|
||||||
|
|
||||||
|
:RAM cost: 1 GB
|
||||||
|
:returns: The cost of your visit to the hospital.
|
||||||
|
|
||||||
|
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.
|
||||||
|
|
||||||
|
Hospitalize yourself. Recovering all lost hp.
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
installBackdoor() Netscript Function
|
||||||
|
====================================
|
||||||
|
|
||||||
|
.. js:function:: installBackdoor()
|
||||||
|
|
||||||
|
:RAM cost: 2 GB
|
||||||
|
|
||||||
|
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.
|
||||||
|
|
||||||
|
This function will install a backdoor on the server you are currently connected to.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
connect("foodnstuff");
|
||||||
|
installBackdoor();
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
For NS2 users:
|
||||||
|
|
||||||
|
This function is async.
|
||||||
@@ -9,13 +9,12 @@ manualHack() Netscript Function
|
|||||||
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.
|
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.
|
||||||
|
|
||||||
This function will perform a manual hack on the server you are currently connected to.
|
This function will perform a manual hack on the server you are currently connected to.
|
||||||
This is typically required to join factions.
|
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
.. code-block:: javascript
|
.. code-block:: javascript
|
||||||
|
|
||||||
connect("CSEC");
|
connect("foodnstuff");
|
||||||
manualHack();
|
manualHack();
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
softReset() Netscript Function
|
softReset() Netscript Function
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
.. js:function:: softReset()
|
.. js:function:: softReset([callbackScript])
|
||||||
|
|
||||||
:RAM cost: 5 GB
|
:RAM cost: 5 GB
|
||||||
|
:param string cbScript:
|
||||||
|
Optional callback script. This is a script that will automatically be
|
||||||
|
run after the soft reset. This script will be run with no arguments and
|
||||||
|
1 thread. It must be located on your home computer.
|
||||||
|
|
||||||
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.
|
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.
|
||||||
|
|
||||||
|
|||||||
72
index.html
72
index.html
@@ -30,7 +30,7 @@
|
|||||||
<div id="entire-game-container" style="visibility:hidden;">
|
<div id="entire-game-container" style="visibility:hidden;">
|
||||||
<div id="mainmenu-container">
|
<div id="mainmenu-container">
|
||||||
<!-- Main menu -->
|
<!-- Main menu -->
|
||||||
<ul id="mainmenu" class="mainmenu">
|
<ul id="mainmenu" class="mainmenu noscrollbar">
|
||||||
<!-- Hacking dropdown -->
|
<!-- Hacking dropdown -->
|
||||||
<li id="hacking-menu-header-li">
|
<li id="hacking-menu-header-li">
|
||||||
<button id="hacking-menu-header" class="mainmenu-accordion-header"> Hacking </button>
|
<button id="hacking-menu-header" class="mainmenu-accordion-header"> Hacking </button>
|
||||||
@@ -100,9 +100,12 @@
|
|||||||
<li id="help-menu-header-li">
|
<li id="help-menu-header-li">
|
||||||
<button id="help-menu-header" class="mainmenu-accordion-header"> Help </button>
|
<button id="help-menu-header" class="mainmenu-accordion-header"> Help </button>
|
||||||
</li>
|
</li>
|
||||||
<li id="tutorial-tab" class="mainmenu-accordion-panel">
|
<li id="milestones-tab" class="mainmenu-accordion-panel">
|
||||||
<button id="tutorial-menu-link"> Tutorial </button>
|
<button id="milestones-menu-link"> Milestones </button>
|
||||||
</li>
|
</li>
|
||||||
|
<li id="tutorial-tab" class="mainmenu-accordion-panel">
|
||||||
|
<button id="tutorial-menu-link"> Tutorial </button>
|
||||||
|
</li>
|
||||||
<li id="options-tab" class="mainmenu-accordion-panel">
|
<li id="options-tab" class="mainmenu-accordion-panel">
|
||||||
<button id="options-menu-link"> Options </button>
|
<button id="options-menu-link"> Options </button>
|
||||||
</li>
|
</li>
|
||||||
@@ -177,7 +180,7 @@
|
|||||||
<table id="terminal">
|
<table id="terminal">
|
||||||
<tr id="terminal-input">
|
<tr id="terminal-input">
|
||||||
<td id="terminal-input-td" tabindex="2">$
|
<td id="terminal-input-td" tabindex="2">$
|
||||||
<input type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1" onfocus="this.value = this.value;"/>
|
<input type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1" onfocus="this.value = this.value;" autocomplete="off"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -226,6 +229,10 @@
|
|||||||
<!-- Augmentations -->
|
<!-- Augmentations -->
|
||||||
<div id="augmentations-container" class="generic-menupage-container"></div>
|
<div id="augmentations-container" class="generic-menupage-container"></div>
|
||||||
|
|
||||||
|
<!-- Milestones content -->
|
||||||
|
<div id="milestones-container" class="generic-menupage-container">
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Tutorial content -->
|
<!-- Tutorial content -->
|
||||||
<div id="tutorial-container" class="generic-menupage-container">
|
<div id="tutorial-container" class="generic-menupage-container">
|
||||||
<h1> Tutorial (AKA Links to Documentation) </h1>
|
<h1> Tutorial (AKA Links to Documentation) </h1>
|
||||||
@@ -261,16 +268,16 @@
|
|||||||
<div id="infiltration-left-panel">
|
<div id="infiltration-left-panel">
|
||||||
<p id="infiltration-level-text"> </p>
|
<p id="infiltration-level-text"> </p>
|
||||||
<div id="infiltration-buttons">
|
<div id="infiltration-buttons">
|
||||||
<a class="a-link-button tooltip" id="infiltration-kill"> </a>
|
<button class="a-link-button tooltip" id="infiltration-kill"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-knockout"> </a>
|
<button class="a-link-button tooltip" id="infiltration-knockout"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-stealthknockout"> </a>
|
<button class="a-link-button tooltip" id="infiltration-stealthknockout"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-assassinate"> </a>
|
<button class="a-link-button tooltip" id="infiltration-assassinate"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-hacksecurity"> </a>
|
<button class="a-link-button tooltip" id="infiltration-hacksecurity"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-destroysecurity"> </a>
|
<button class="a-link-button tooltip" id="infiltration-destroysecurity"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-sneak"> </a>
|
<button class="a-link-button tooltip" id="infiltration-sneak"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-pickdoor"> </a>
|
<button class="a-link-button tooltip" id="infiltration-pickdoor"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-bribe"> </a>
|
<button class="a-link-button tooltip" id="infiltration-bribe"> </button>
|
||||||
<a class="a-link-button tooltip" id="infiltration-escape"> </a>
|
<button class="a-link-button tooltip" id="infiltration-escape"> </button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="infiltration-right-panel">
|
<div id="infiltration-right-panel">
|
||||||
@@ -320,8 +327,8 @@
|
|||||||
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>
|
||||||
<button id="faction-invitation-box-yes" class="popup-box-button"> Yes </button>
|
<button id="faction-invitation-box-yes" class="popup-box-button"> Join! </button>
|
||||||
<button id="faction-invitation-box-no" class="popup-box-button"> No </button>
|
<button id="faction-invitation-box-no" class="popup-box-button"> Decide later </button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -381,13 +388,13 @@
|
|||||||
|
|
||||||
<!-- Status text -->
|
<!-- Status text -->
|
||||||
<div id="status-text-container">
|
<div id="status-text-container">
|
||||||
<p id="status-text"> </p>
|
<p id="status-text"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Game Options -->
|
<!-- Game Options -->
|
||||||
<div id="game-options-container" class="popup-box-container">
|
<div id="game-options-container" class="popup-box-container">
|
||||||
<div id="game-options-content" class="game-options-box">
|
<div id="game-options-content" class="game-options-box">
|
||||||
<button id="game-options-close-button">×</button>
|
<button id="game-options-close-button" aria-label="close options dialog">×</button>
|
||||||
<h1> Game Options </h1>
|
<h1> Game Options </h1>
|
||||||
<br/>
|
<br/>
|
||||||
<div id="game-options-left-panel">
|
<div id="game-options-left-panel">
|
||||||
@@ -511,6 +518,26 @@
|
|||||||
<input class="optionCheckbox" type="checkbox" name="settingsDisableHotkeys" id="settingsDisableHotkeys">
|
<input class="optionCheckbox" type="checkbox" name="settingsDisableHotkeys" id="settingsDisableHotkeys">
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
<!-- View city as list of buttons instead of ASCII art. -->
|
||||||
|
<fieldset>
|
||||||
|
<label for="settingsDisableASCIIArt" class="tooltip">Disable ASCII art:
|
||||||
|
<span class="tooltiptexthigh">
|
||||||
|
If this is set all ASCII art will be disabled.
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<input class="optionCheckbox" type="checkbox" name="settingsDisableASCIIArt" id="settingsDisableASCIIArt">
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<!-- Disable text effects such as corruption. -->
|
||||||
|
<fieldset>
|
||||||
|
<label for="settingsDisableTextEffects" class="tooltip">Disable Text Effects:
|
||||||
|
<span class="tooltiptexthigh">
|
||||||
|
If this is set, text effects will not be displayed. This can help if text is difficult to read in certain areas.
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<input class="optionCheckbox" type="checkbox" name="settingsDisableTextEffects" id="settingsDisableTextEffects">
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<!-- Locale for displaying numbers -->
|
<!-- Locale for displaying numbers -->
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<label for="settingsLocale" class="tooltip">Locale:
|
<label for="settingsLocale" class="tooltip">Locale:
|
||||||
@@ -549,6 +576,7 @@
|
|||||||
<div id="game-options-right-panel">
|
<div id="game-options-right-panel">
|
||||||
<a class="a-link-button" href="https://bitburner.readthedocs.io/en/latest/changelog.html" target="_blank"> Changelog </a>
|
<a class="a-link-button" href="https://bitburner.readthedocs.io/en/latest/changelog.html" target="_blank"> Changelog </a>
|
||||||
<a class="a-link-button" href="https://bitburner.readthedocs.io/en/latest/index.html" target="_blank">Documentation</a>
|
<a class="a-link-button" href="https://bitburner.readthedocs.io/en/latest/index.html" target="_blank">Documentation</a>
|
||||||
|
<a class="a-link-button" href="https://discord.gg/TFc3hKD" target="_blank">Discord</a>
|
||||||
<a class="a-link-button" href="https://www.reddit.com/r/bitburner" target="_blank">Subreddit</a>
|
<a class="a-link-button" href="https://www.reddit.com/r/bitburner" target="_blank">Subreddit</a>
|
||||||
<button id="save-game-link" class="a-link-button"> Save Game </button>
|
<button id="save-game-link" class="a-link-button"> Save Game </button>
|
||||||
<button id="delete-game-link" class="a-link-button"> Delete Game </button>
|
<button id="delete-game-link" class="a-link-button"> Delete Game </button>
|
||||||
@@ -559,14 +587,14 @@
|
|||||||
Copy Save data to Clipboard
|
Copy Save data to Clipboard
|
||||||
</button>
|
</button>
|
||||||
<button id="debug-delete-scripts-link" class="a-link-button tooltip">
|
<button id="debug-delete-scripts-link" class="a-link-button tooltip">
|
||||||
(DEBUG) Delete Active Scripts
|
Delete all active scripts
|
||||||
<span class="tooltiptextleft">
|
<span class="tooltiptextleft">
|
||||||
Debug option used to forcefully kill all active running scripts, in case there is a bug or some unexpected issue with the game. After
|
Forcefully kill all active running scripts, in case there is a bug or some unexpected issue with the game. After
|
||||||
using this, save the game and then reload the page.
|
using this, save the game and then reload the page.
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<button id="debug-soft-reset" class="a-link-button tooltip">
|
<button id="debug-soft-reset" class="a-link-button tooltip">
|
||||||
(DEBUG) Soft Reset
|
Soft Reset
|
||||||
<span class="tooltiptextleft">
|
<span class="tooltiptextleft">
|
||||||
Perform a soft reset. Resets everything as if you had just purchased an Augmentation.
|
Perform a soft reset. Resets everything as if you had just purchased an Augmentation.
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
13764
package-lock.json
generated
13764
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
21
package.json
21
package.json
@@ -6,6 +6,7 @@
|
|||||||
"url": "https://github.com/danielyxie/bitburner/issues"
|
"url": "https://github.com/danielyxie/bitburner/issues"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@material-ui/core": "^4.11.3",
|
||||||
"@types/numeral": "0.0.25",
|
"@types/numeral": "0.0.25",
|
||||||
"@types/react": "^16.8.6",
|
"@types/react": "^16.8.6",
|
||||||
"@types/react-dom": "^16.8.2",
|
"@types/react-dom": "^16.8.2",
|
||||||
@@ -13,6 +14,7 @@
|
|||||||
"acorn-walk": "^6.2.0",
|
"acorn-walk": "^6.2.0",
|
||||||
"ajv": "^5.1.5",
|
"ajv": "^5.1.5",
|
||||||
"ajv-keywords": "^2.0.0",
|
"ajv-keywords": "^2.0.0",
|
||||||
|
"arg": "^5.0.0",
|
||||||
"async": "^2.6.1",
|
"async": "^2.6.1",
|
||||||
"autosize": "^4.0.2",
|
"autosize": "^4.0.2",
|
||||||
"brace": "^0.11.1",
|
"brace": "^0.11.1",
|
||||||
@@ -46,7 +48,10 @@
|
|||||||
"@babel/core": "^7.3.4",
|
"@babel/core": "^7.3.4",
|
||||||
"@babel/preset-react": "^7.0.0",
|
"@babel/preset-react": "^7.0.0",
|
||||||
"@types/chai": "^4.1.7",
|
"@types/chai": "^4.1.7",
|
||||||
|
"@types/lodash": "^4.14.168",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||||
|
"@typescript-eslint/parser": "^4.22.0",
|
||||||
"babel-loader": "^8.0.5",
|
"babel-loader": "^8.0.5",
|
||||||
"beautify-lint": "^1.0.3",
|
"beautify-lint": "^1.0.3",
|
||||||
"benchmark": "^2.1.1",
|
"benchmark": "^2.1.1",
|
||||||
@@ -54,8 +59,8 @@
|
|||||||
"chai": "^4.2.0",
|
"chai": "^4.2.0",
|
||||||
"css-loader": "^0.28.11",
|
"css-loader": "^0.28.11",
|
||||||
"es6-promise-polyfill": "^1.1.1",
|
"es6-promise-polyfill": "^1.1.1",
|
||||||
"eslint": "^4.19.1",
|
"eslint": "^7.24.0",
|
||||||
"eslint-plugin-node": "^6.0.1",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
"file-loader": "^1.1.11",
|
"file-loader": "^1.1.11",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
"i18n-webpack-plugin": "^1.0.0",
|
"i18n-webpack-plugin": "^1.0.0",
|
||||||
@@ -85,8 +90,7 @@
|
|||||||
"stylelint-declaration-use-variable": "^1.6.1",
|
"stylelint-declaration-use-variable": "^1.6.1",
|
||||||
"stylelint-order": "^0.8.1",
|
"stylelint-order": "^0.8.1",
|
||||||
"ts-loader": "^4.5.0",
|
"ts-loader": "^4.5.0",
|
||||||
"tslint": "^5.10.0",
|
"typescript": "^4.2.4",
|
||||||
"typescript": "^2.9.2",
|
|
||||||
"uglify-es": "^3.3.9",
|
"uglify-es": "^3.3.9",
|
||||||
"uglifyjs-webpack-plugin": "^1.3.0",
|
"uglifyjs-webpack-plugin": "^1.3.0",
|
||||||
"url-loader": "^1.0.1",
|
"url-loader": "^1.0.1",
|
||||||
@@ -112,14 +116,13 @@
|
|||||||
"build": "webpack --mode production",
|
"build": "webpack --mode production",
|
||||||
"build:dev": "webpack --mode development",
|
"build:dev": "webpack --mode development",
|
||||||
"build:test": "webpack --config webpack.config-test.js",
|
"build:test": "webpack --config webpack.config-test.js",
|
||||||
"lint": "npm run lint:typescript & npm run lint:javascript & npm run lint:style",
|
"lint": "npm run lint:jsts & npm run lint:style",
|
||||||
"lint:javascript": "eslint *.js ./src/**/*.js ./tests/**/*.js ./utils/**/*.js",
|
"lint:jsts": "eslint --fix '*.{js,jsx,ts,tsx}' './src/**/*.{js,jsx,ts,tsx}' './test/**/*.{js,jsx,ts,tsx}' './utils/**/*.{js,jsx,ts,tsx}'",
|
||||||
"lint:style": "stylelint ./css/*",
|
"lint:style": "stylelint --fix ./css/*",
|
||||||
"lint:typescript": "tslint --project . --exclude **/*.d.ts --format stylish src/**/*.ts utils/**/*.ts",
|
|
||||||
"preinstall": "node ./scripts/engines-check.js",
|
"preinstall": "node ./scripts/engines-check.js",
|
||||||
"test": "mochapack --webpack-config webpack.config-test.js -r jsdom-global/register ./test/index.js",
|
"test": "mochapack --webpack-config webpack.config-test.js -r jsdom-global/register ./test/index.js",
|
||||||
"watch": "webpack --watch --mode production",
|
"watch": "webpack --watch --mode production",
|
||||||
"watch:dev": "webpack --watch --mode development"
|
"watch:dev": "webpack --watch --mode development"
|
||||||
},
|
},
|
||||||
"version": "0.50.1"
|
"version": "0.51.8"
|
||||||
}
|
}
|
||||||
|
|||||||
18
src/Alias.ts
18
src/Alias.ts
@@ -22,12 +22,12 @@ export function loadGlobalAliases(saveString: string): void {
|
|||||||
|
|
||||||
// Prints all aliases to terminal
|
// Prints all aliases to terminal
|
||||||
export function printAliases(): void {
|
export function printAliases(): void {
|
||||||
for (var name in Aliases) {
|
for (const name in Aliases) {
|
||||||
if (Aliases.hasOwnProperty(name)) {
|
if (Aliases.hasOwnProperty(name)) {
|
||||||
post("alias " + name + "=" + Aliases[name]);
|
post("alias " + name + "=" + Aliases[name]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var name in GlobalAliases) {
|
for (const name in GlobalAliases) {
|
||||||
if (GlobalAliases.hasOwnProperty(name)) {
|
if (GlobalAliases.hasOwnProperty(name)) {
|
||||||
post("global alias " + name + "=" + GlobalAliases[name]);
|
post("global alias " + name + "=" + GlobalAliases[name]);
|
||||||
}
|
}
|
||||||
@@ -35,9 +35,9 @@ export function printAliases(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if successful, false otherwise
|
// Returns true if successful, false otherwise
|
||||||
export function parseAliasDeclaration(dec: string, global: boolean=false) {
|
export function parseAliasDeclaration(dec: string, global = false): boolean {
|
||||||
var re = /^([_|\w|!|%|,|@]+)="(.+)"$/;
|
const re = /^([_|\w|!|%|,|@]+)="(.+)"$/;
|
||||||
var matches = dec.match(re);
|
const matches = dec.match(re);
|
||||||
if (matches == null || matches.length != 3) {return false;}
|
if (matches == null || matches.length != 3) {return false;}
|
||||||
if (global){
|
if (global){
|
||||||
addGlobalAlias(matches[1],matches[2]);
|
addGlobalAlias(matches[1],matches[2]);
|
||||||
@@ -100,17 +100,17 @@ export function substituteAliases(origCommand: string): string {
|
|||||||
// For the unalias command, dont substite
|
// For the unalias command, dont substite
|
||||||
if (commandArray[0] === "unalias") { return commandArray.join(" "); }
|
if (commandArray[0] === "unalias") { return commandArray.join(" "); }
|
||||||
|
|
||||||
var alias = getAlias(commandArray[0]);
|
const alias = getAlias(commandArray[0]);
|
||||||
if (alias != null) {
|
if (alias != null) {
|
||||||
commandArray[0] = alias;
|
commandArray[0] = alias;
|
||||||
} else {
|
} else {
|
||||||
var alias = getGlobalAlias(commandArray[0]);
|
const alias = getGlobalAlias(commandArray[0]);
|
||||||
if (alias != null) {
|
if (alias != null) {
|
||||||
commandArray[0] = alias;
|
commandArray[0] = alias;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i = 0; i < commandArray.length; ++i) {
|
for (let i = 0; i < commandArray.length; ++i) {
|
||||||
var alias = getGlobalAlias(commandArray[i]);
|
const alias = getGlobalAlias(commandArray[i]);
|
||||||
if (alias != null) {
|
if (alias != null) {
|
||||||
commandArray[i] = alias;
|
commandArray[i] = alias;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { Factions } from "../Faction/Factions";
|
|||||||
import { Generic_fromJSON, Generic_toJSON, Reviver } from "../../utils/JSONReviver";
|
import { Generic_fromJSON, Generic_toJSON, Reviver } from "../../utils/JSONReviver";
|
||||||
|
|
||||||
interface IConstructorParams {
|
interface IConstructorParams {
|
||||||
info: string;
|
info: string | JSX.Element;
|
||||||
isSpecial?: boolean;
|
isSpecial?: boolean;
|
||||||
moneyCost: number;
|
moneyCost: number;
|
||||||
name: string;
|
name: string;
|
||||||
@@ -49,31 +49,27 @@ interface IConstructorParams {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class Augmentation {
|
export class Augmentation {
|
||||||
// Initiatizes a Augmentation object from a JSON save state.
|
|
||||||
static fromJSON(value: any): Augmentation {
|
|
||||||
return Generic_fromJSON(Augmentation, value.data);
|
|
||||||
}
|
|
||||||
|
|
||||||
// How much money this costs to buy
|
// How much money this costs to buy
|
||||||
baseCost: number = 0;
|
baseCost = 0;
|
||||||
|
|
||||||
// How much faction reputation is required to unlock this
|
// How much faction reputation is required to unlock this
|
||||||
baseRepRequirement: number = 0;
|
baseRepRequirement = 0;
|
||||||
|
|
||||||
// Description of what this Aug is and what it does
|
// Description of what this Aug is and what it does
|
||||||
info: string = "";
|
info: string | JSX.Element;
|
||||||
|
|
||||||
// Any Augmentation not immediately available in BitNode-1 is special (e.g. Bladeburner augs)
|
// Any Augmentation not immediately available in BitNode-1 is special (e.g. Bladeburner augs)
|
||||||
isSpecial: boolean = false;
|
isSpecial = false;
|
||||||
|
|
||||||
// Augmentation level - for repeatable Augs like NeuroFlux Governor
|
// Augmentation level - for repeatable Augs like NeuroFlux Governor
|
||||||
level: number = 0;
|
level = 0;
|
||||||
|
|
||||||
// Name of Augmentation
|
// Name of Augmentation
|
||||||
name: string = "";
|
name = "";
|
||||||
|
|
||||||
// Whether the player owns this Augmentation
|
// Whether the player owns this Augmentation
|
||||||
owned: boolean = false;
|
owned = false;
|
||||||
|
|
||||||
// Array of names of all prerequisites
|
// Array of names of all prerequisites
|
||||||
prereqs: string[] = [];
|
prereqs: string[] = [];
|
||||||
@@ -83,7 +79,7 @@ export class Augmentation {
|
|||||||
mults: IMap<number> = {}
|
mults: IMap<number> = {}
|
||||||
|
|
||||||
// Initial cost. Doesn't change when you purchase multiple Augmentation
|
// Initial cost. Doesn't change when you purchase multiple Augmentation
|
||||||
startingCost: number = 0;
|
startingCost = 0;
|
||||||
|
|
||||||
constructor(params: IConstructorParams={ info: "", moneyCost: 0, name: "", repCost: 0 }) {
|
constructor(params: IConstructorParams={ info: "", moneyCost: 0, name: "", repCost: 0 }) {
|
||||||
this.name = params.name;
|
this.name = params.name;
|
||||||
@@ -141,7 +137,7 @@ export class Augmentation {
|
|||||||
console.warn(`In Augmentation.addToFactions(), could not find faction with this name: ${factionList[i]}`);
|
console.warn(`In Augmentation.addToFactions(), could not find faction with this name: ${factionList[i]}`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
faction!.augmentations.push(this.name);
|
faction.augmentations.push(this.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +150,7 @@ export class Augmentation {
|
|||||||
console.warn(`Invalid Faction object in addToAllFactions(). Key value: ${fac}`);
|
console.warn(`Invalid Faction object in addToAllFactions(). Key value: ${fac}`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
facObj!.augmentations.push(this.name);
|
facObj.augmentations.push(this.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -163,6 +159,12 @@ export class Augmentation {
|
|||||||
toJSON(): any {
|
toJSON(): any {
|
||||||
return Generic_toJSON("Augmentation", this);
|
return Generic_toJSON("Augmentation", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initiatizes a Augmentation object from a JSON save state.
|
||||||
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||||||
|
static fromJSON(value: any): Augmentation {
|
||||||
|
return Generic_fromJSON(Augmentation, value.data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Reviver.constructors.Augmentation = Augmentation;
|
Reviver.constructors.Augmentation = Augmentation;
|
||||||
|
|||||||
@@ -8,29 +8,14 @@ import { AugmentationsRoot } from "./ui/Root";
|
|||||||
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
|
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
|
||||||
import { CONSTANTS } from "../Constants";
|
import { CONSTANTS } from "../Constants";
|
||||||
import { Factions, factionExists } from "../Faction/Factions";
|
import { Factions, factionExists } from "../Faction/Factions";
|
||||||
import { startWorkerScript } from "../NetscriptWorker";
|
|
||||||
import { Player } from "../Player";
|
import { Player } from "../Player";
|
||||||
import { prestigeAugmentation } from "../Prestige";
|
import { prestigeAugmentation } from "../Prestige";
|
||||||
import { saveObject } from "../SaveObject";
|
import { saveObject } from "../SaveObject";
|
||||||
import { RunningScript } from "../Script/RunningScript";
|
|
||||||
import { Script } from "../Script/Script";
|
|
||||||
import { Server } from "../Server/Server";
|
|
||||||
import { OwnedAugmentationsOrderSetting } from "../Settings/SettingEnums";
|
|
||||||
import { Settings } from "../Settings/Settings";
|
|
||||||
import { Page, routing } from "../ui/navigationTracking";
|
import { Page, routing } from "../ui/navigationTracking";
|
||||||
|
|
||||||
import { dialogBoxCreate } from "../../utils/DialogBox";
|
import { dialogBoxCreate } from "../../utils/DialogBox";
|
||||||
import { createAccordionElement } from "../../utils/uiHelpers/createAccordionElement";
|
|
||||||
import {
|
|
||||||
Reviver,
|
|
||||||
Generic_toJSON,
|
|
||||||
Generic_fromJSON
|
|
||||||
} from "../../utils/JSONReviver";
|
|
||||||
import { formatNumber } from "../../utils/StringHelperFunctions";
|
|
||||||
import { clearObject } from "../../utils/helpers/clearObject";
|
import { clearObject } from "../../utils/helpers/clearObject";
|
||||||
import { createElement } from "../../utils/uiHelpers/createElement";
|
import { Money } from "../ui/React/Money";
|
||||||
import { isString } from "../../utils/helpers/isString";
|
|
||||||
import { removeChildrenFromElement } from "../../utils/uiHelpers/removeChildrenFromElement";
|
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import ReactDOM from "react-dom";
|
import ReactDOM from "react-dom";
|
||||||
@@ -75,7 +60,7 @@ function initAugmentations() {
|
|||||||
"This augmentation increases the player's dexterity by 10%.",
|
"This augmentation increases the player's dexterity by 10%.",
|
||||||
dexterity_mult: 1.1,
|
dexterity_mult: 1.1,
|
||||||
});
|
});
|
||||||
Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Ishima",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.Targeting1)) {
|
if (augmentationExists(AugmentationNames.Targeting1)) {
|
||||||
delete Augmentations[AugmentationNames.Targeting1];
|
delete Augmentations[AugmentationNames.Targeting1];
|
||||||
@@ -90,7 +75,7 @@ function initAugmentations() {
|
|||||||
prereqs:[AugmentationNames.Targeting1],
|
prereqs:[AugmentationNames.Targeting1],
|
||||||
dexterity_mult: 1.2,
|
dexterity_mult: 1.2,
|
||||||
});
|
});
|
||||||
Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.Targeting2)) {
|
if (augmentationExists(AugmentationNames.Targeting2)) {
|
||||||
delete Augmentations[AugmentationNames.Targeting2];
|
delete Augmentations[AugmentationNames.Targeting2];
|
||||||
@@ -151,7 +136,7 @@ function initAugmentations() {
|
|||||||
strength_mult: 1.1,
|
strength_mult: 1.1,
|
||||||
defense_mult: 1.1,
|
defense_mult: 1.1,
|
||||||
});
|
});
|
||||||
CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Volhaven", "Ishima",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.CombatRib1)) {
|
if (augmentationExists(AugmentationNames.CombatRib1)) {
|
||||||
delete Augmentations[AugmentationNames.CombatRib1];
|
delete Augmentations[AugmentationNames.CombatRib1];
|
||||||
@@ -167,7 +152,7 @@ function initAugmentations() {
|
|||||||
strength_mult: 1.14,
|
strength_mult: 1.14,
|
||||||
defense_mult: 1.14,
|
defense_mult: 1.14,
|
||||||
});
|
});
|
||||||
CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Volhaven",
|
||||||
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.CombatRib2)) {
|
if (augmentationExists(AugmentationNames.CombatRib2)) {
|
||||||
delete Augmentations[AugmentationNames.CombatRib2];
|
delete Augmentations[AugmentationNames.CombatRib2];
|
||||||
@@ -177,7 +162,7 @@ function initAugmentations() {
|
|||||||
const CombatRib3 = new Augmentation({
|
const CombatRib3 = new Augmentation({
|
||||||
name:AugmentationNames.CombatRib3, repCost:14e3, moneyCost:24e6,
|
name:AugmentationNames.CombatRib3, repCost:14e3, moneyCost:24e6,
|
||||||
info:"This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
|
info:"This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
|
||||||
"drugs into the bloodstream<br><br>." +
|
"drugs into the bloodstream.<br><br>" +
|
||||||
"This augmentation increases the player's strength and defense by 18%.",
|
"This augmentation increases the player's strength and defense by 18%.",
|
||||||
prereqs:[AugmentationNames.CombatRib2],
|
prereqs:[AugmentationNames.CombatRib2],
|
||||||
strength_mult: 1.18,
|
strength_mult: 1.18,
|
||||||
@@ -403,7 +388,7 @@ function initAugmentations() {
|
|||||||
info:"The body is injected with a chemical that artificially induces synaptic potentiation, " +
|
info:"The body is injected with a chemical that artificially induces synaptic potentiation, " +
|
||||||
"otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.<br><br>" +
|
"otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the player's hacking speed by 2% <br>" +
|
"Increases the player's hacking speed by 2%.<br>" +
|
||||||
"Increases the player's hacking chance by 5%.<br>" +
|
"Increases the player's hacking chance by 5%.<br>" +
|
||||||
"Increases the player's hacking experience gain rate by 5%.",
|
"Increases the player's hacking experience gain rate by 5%.",
|
||||||
hacking_speed_mult: 1.02,
|
hacking_speed_mult: 1.02,
|
||||||
@@ -443,7 +428,7 @@ function initAugmentations() {
|
|||||||
"This augmentation increases the player's hacking speed by 3%.",
|
"This augmentation increases the player's hacking speed by 3%.",
|
||||||
hacking_speed_mult: 1.03,
|
hacking_speed_mult: 1.03,
|
||||||
});
|
});
|
||||||
SynapticEnhancement.addToFactions(["CyberSec"]);
|
SynapticEnhancement.addToFactions(["CyberSec", "Aevum"]);
|
||||||
if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
|
if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
|
||||||
delete Augmentations[AugmentationNames.SynapticEnhancement];
|
delete Augmentations[AugmentationNames.SynapticEnhancement];
|
||||||
}
|
}
|
||||||
@@ -771,7 +756,7 @@ function initAugmentations() {
|
|||||||
"when working for a company by 20%.",
|
"when working for a company by 20%.",
|
||||||
company_rep_mult: 1.2,
|
company_rep_mult: 1.2,
|
||||||
});
|
});
|
||||||
NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
|
NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing",
|
||||||
"Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
|
"Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
|
||||||
if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
|
if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
|
||||||
delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
|
delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
|
||||||
@@ -880,9 +865,7 @@ function initAugmentations() {
|
|||||||
info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
|
info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
|
||||||
"an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
|
"an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
|
||||||
"triggers feelings of admiration and approval in other people.<br><br>" +
|
"triggers feelings of admiration and approval in other people.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the amount of reputation the player gains when working for a faction or company by 10%.",
|
||||||
"Increases the amount of reputation the player gains when working for a company by 10% <br>" +
|
|
||||||
"Increases the amount of reputation the player gains for a faction by 10%.",
|
|
||||||
company_rep_mult: 1.1,
|
company_rep_mult: 1.1,
|
||||||
faction_rep_mult: 1.1,
|
faction_rep_mult: 1.1,
|
||||||
});
|
});
|
||||||
@@ -897,8 +880,7 @@ function initAugmentations() {
|
|||||||
info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, " +
|
info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, " +
|
||||||
"which is similar to but more potent than ADR-V1. This pheromone, when excreted, " +
|
"which is similar to but more potent than ADR-V1. This pheromone, when excreted, " +
|
||||||
"triggers feelings of admiration, approval, and respect in others.<br><br>" +
|
"triggers feelings of admiration, approval, and respect in others.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the amount of reputation the player gains when working for a faction or company by 20%.",
|
||||||
"Increases the amount of reputation the player gains for a faction and company by 20%.",
|
|
||||||
company_rep_mult: 1.2,
|
company_rep_mult: 1.2,
|
||||||
faction_rep_mult: 1.2,
|
faction_rep_mult: 1.2,
|
||||||
});
|
});
|
||||||
@@ -915,8 +897,7 @@ function initAugmentations() {
|
|||||||
"criminal organizations and allows the user to project and control holographic " +
|
"criminal organizations and allows the user to project and control holographic " +
|
||||||
"simulacrums within a large radius. These simulacrums are commonly used for " +
|
"simulacrums within a large radius. These simulacrums are commonly used for " +
|
||||||
"espionage and surveillance work.<br><br>" +
|
"espionage and surveillance work.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the amount of reputation the player gains when working for a faction or company by 15%.",
|
||||||
"Increases the amount of reputation the player gains when working for a faction or company by 15%.",
|
|
||||||
company_rep_mult: 1.15,
|
company_rep_mult: 1.15,
|
||||||
faction_rep_mult: 1.15,
|
faction_rep_mult: 1.15,
|
||||||
});
|
});
|
||||||
@@ -1083,7 +1064,7 @@ function initAugmentations() {
|
|||||||
agility_exp_mult: 1.1,
|
agility_exp_mult: 1.1,
|
||||||
charisma_exp_mult: 1.1,
|
charisma_exp_mult: 1.1,
|
||||||
});
|
});
|
||||||
Neurotrainer1.addToFactions(["CyberSec"]);
|
Neurotrainer1.addToFactions(["CyberSec", "Aevum"]);
|
||||||
if (augmentationExists(AugmentationNames.Neurotrainer1)) {
|
if (augmentationExists(AugmentationNames.Neurotrainer1)) {
|
||||||
delete Augmentations[AugmentationNames.Neurotrainer1];
|
delete Augmentations[AugmentationNames.Neurotrainer1];
|
||||||
}
|
}
|
||||||
@@ -1152,7 +1133,7 @@ function initAugmentations() {
|
|||||||
"cells, when powered, have a negative refractive index. As a result, they bend light " +
|
"cells, when powered, have a negative refractive index. As a result, they bend light " +
|
||||||
"around the skin, making the user much harder to see from the naked eye.<br><br>" +
|
"around the skin, making the user much harder to see from the naked eye.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the player's agility by 5% <br>" +
|
"Increases the player's agility by 5%.<br>" +
|
||||||
"Increases the amount of money the player gains from crimes by 10%.",
|
"Increases the amount of money the player gains from crimes by 10%.",
|
||||||
agility_mult: 1.05,
|
agility_mult: 1.05,
|
||||||
crime_money_mult: 1.1,
|
crime_money_mult: 1.1,
|
||||||
@@ -1170,8 +1151,8 @@ function initAugmentations() {
|
|||||||
"cells, when powered, are capable of not only bending light but also of bending heat, " +
|
"cells, when powered, are capable of not only bending light but also of bending heat, " +
|
||||||
"making the user more resilient as well as stealthy.<br><br>" +
|
"making the user more resilient as well as stealthy.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the player's agility by 10% <br>" +
|
"Increases the player's agility by 10%.<br>" +
|
||||||
"Increases the player's defense by 10% <br>" +
|
"Increases the player's defense by 10%.<br>" +
|
||||||
"Increases the amount of money the player gains from crimes by 25%.",
|
"Increases the amount of money the player gains from crimes by 25%.",
|
||||||
prereqs:[AugmentationNames.LuminCloaking1],
|
prereqs:[AugmentationNames.LuminCloaking1],
|
||||||
agility_mult: 1.1,
|
agility_mult: 1.1,
|
||||||
@@ -1259,7 +1240,7 @@ function initAugmentations() {
|
|||||||
// Daedalus
|
// Daedalus
|
||||||
const RedPill = new Augmentation({
|
const RedPill = new Augmentation({
|
||||||
name:AugmentationNames.TheRedPill, repCost:1e6, moneyCost:0,
|
name:AugmentationNames.TheRedPill, repCost:1e6, moneyCost:0,
|
||||||
info:"It's time to leave the cave."
|
info:"It's time to leave the cave.",
|
||||||
});
|
});
|
||||||
RedPill.addToFactions(["Daedalus"]);
|
RedPill.addToFactions(["Daedalus"]);
|
||||||
if (augmentationExists(AugmentationNames.TheRedPill)) {
|
if (augmentationExists(AugmentationNames.TheRedPill)) {
|
||||||
@@ -1335,7 +1316,7 @@ function initAugmentations() {
|
|||||||
"capable of psychoanalyzing and profiling the personality of " +
|
"capable of psychoanalyzing and profiling the personality of " +
|
||||||
"others using optical imaging software.<br><br>" +
|
"others using optical imaging software.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the player's charisma by 50%. <br>" +
|
"Increases the player's charisma by 50%.<br>" +
|
||||||
"Increases the player's charisma experience gain rate by 50%.<br>" +
|
"Increases the player's charisma experience gain rate by 50%.<br>" +
|
||||||
"Increases the amount of reputation the player gains for a company by 25%.<br>" +
|
"Increases the amount of reputation the player gains for a company by 25%.<br>" +
|
||||||
"Increases the amount of reputation the player gains for a faction by 25%.",
|
"Increases the amount of reputation the player gains for a faction by 25%.",
|
||||||
@@ -1372,7 +1353,7 @@ function initAugmentations() {
|
|||||||
name:AugmentationNames.Xanipher, repCost:350e3, moneyCost:850e6,
|
name:AugmentationNames.Xanipher, repCost:350e3, moneyCost:850e6,
|
||||||
info:"A concoction of advanced nanobots that is orally ingested into the " +
|
info:"A concoction of advanced nanobots that is orally ingested into the " +
|
||||||
"body. These nanobots induce physiological change and significantly " +
|
"body. These nanobots induce physiological change and significantly " +
|
||||||
"improve the body's functionining in all aspects.<br><br>" +
|
"improve the body's functioning in all aspects.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases all of the player's stats by 20%.<br>" +
|
"Increases all of the player's stats by 20%.<br>" +
|
||||||
"Increases the player's experience gain rate for all stats by 15%.",
|
"Increases the player's experience gain rate for all stats by 15%.",
|
||||||
@@ -1395,6 +1376,23 @@ function initAugmentations() {
|
|||||||
}
|
}
|
||||||
AddToAugmentations(Xanipher);
|
AddToAugmentations(Xanipher);
|
||||||
|
|
||||||
|
const HydroflameLeftArm = new Augmentation({
|
||||||
|
name:AugmentationNames.HydroflameLeftArm, repCost:500e3, moneyCost:500e9,
|
||||||
|
info:"The left arm of a legendary BitRunner who ascended beyond this world. " +
|
||||||
|
"It projects a light blue energy shield that protects the exposed inner parts. " +
|
||||||
|
"Even though it contains no weapons, the advance tungsten titanium " +
|
||||||
|
"alloy increases the users strength to unbelievable levels.<br><br>" +
|
||||||
|
"This augmentation increases the player's strength by 300%.",
|
||||||
|
strength_mult: 3,
|
||||||
|
});
|
||||||
|
HydroflameLeftArm.addToFactions(["NWO"]);
|
||||||
|
if (augmentationExists(AugmentationNames.HydroflameLeftArm)) {
|
||||||
|
delete Augmentations[AugmentationNames.HydroflameLeftArm];
|
||||||
|
}
|
||||||
|
AddToAugmentations(HydroflameLeftArm);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ClarkeIncorporated
|
// ClarkeIncorporated
|
||||||
const nextSENS = new Augmentation({
|
const nextSENS = new Augmentation({
|
||||||
name:AugmentationNames.nextSENS, repCost:175e3, moneyCost:385e6,
|
name:AugmentationNames.nextSENS, repCost:175e3, moneyCost:385e6,
|
||||||
@@ -1537,12 +1535,12 @@ function initAugmentations() {
|
|||||||
// Sector12
|
// Sector12
|
||||||
const CashRoot = new Augmentation({
|
const CashRoot = new Augmentation({
|
||||||
name:AugmentationNames.CashRoot, repCost:5e3, moneyCost:25e6,
|
name:AugmentationNames.CashRoot, repCost:5e3, moneyCost:25e6,
|
||||||
info:"A collection of digital assets saved on a small chip. The chip is implanted " +
|
info:<>A collection of digital assets saved on a small chip. The chip is implanted
|
||||||
"into your wrist. A small jack in the chip allows you to connect it to a computer " +
|
into your wrist. A small jack in the chip allows you to connect it to a computer
|
||||||
"and upload the assets.<br><br>" +
|
and upload the assets.<br /><br />
|
||||||
"This augmentation:<br>" +
|
This augmentation:<br />
|
||||||
"Lets the player start with $1,000,000 after a reset.<br>" +
|
Lets the player start with {Money(1e6)} after a reset.<br />
|
||||||
"Lets the player start with the BruteSSH.exe program after a reset."
|
Lets the player start with the BruteSSH.exe program after a reset.</>,
|
||||||
});
|
});
|
||||||
CashRoot.addToFactions(["Sector-12"]);
|
CashRoot.addToFactions(["Sector-12"]);
|
||||||
if (augmentationExists(AugmentationNames.CashRoot)) {
|
if (augmentationExists(AugmentationNames.CashRoot)) {
|
||||||
@@ -1557,8 +1555,7 @@ function initAugmentations() {
|
|||||||
"synthesizes glucose, amino acids, and vitamins and redistributes them " +
|
"synthesizes glucose, amino acids, and vitamins and redistributes them " +
|
||||||
"across the body. The device is powered by the body's naturally wasted " +
|
"across the body. The device is powered by the body's naturally wasted " +
|
||||||
"energy in the form of heat.<br><br>" +
|
"energy in the form of heat.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the player's experience gain rate for all combat stats by 20%.",
|
||||||
"Increases the player's experience gain rate for all combat stats by 20%.",
|
|
||||||
strength_exp_mult: 1.2,
|
strength_exp_mult: 1.2,
|
||||||
defense_exp_mult: 1.2,
|
defense_exp_mult: 1.2,
|
||||||
dexterity_exp_mult: 1.2,
|
dexterity_exp_mult: 1.2,
|
||||||
@@ -1730,7 +1727,7 @@ function initAugmentations() {
|
|||||||
"to induce wakefulness and concentration, suppress fear, reduce empathy, and " +
|
"to induce wakefulness and concentration, suppress fear, reduce empathy, and " +
|
||||||
"improve reflexes and memory-recall among other things.<br><br>" +
|
"improve reflexes and memory-recall among other things.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the player's sucess chance in Bladeburner contracts/operations by 3%.<br>" +
|
"Increases the player's success chance in Bladeburner contracts/operations by 3%.<br>" +
|
||||||
"Increases the player's effectiveness in Bladeburner Field Analysis by 5%.<br>" +
|
"Increases the player's effectiveness in Bladeburner Field Analysis by 5%.<br>" +
|
||||||
"Increases the player's Bladeburner stamina gain rate by 2%.",
|
"Increases the player's Bladeburner stamina gain rate by 2%.",
|
||||||
bladeburner_success_chance_mult: 1.03,
|
bladeburner_success_chance_mult: 1.03,
|
||||||
@@ -1768,8 +1765,7 @@ function initAugmentations() {
|
|||||||
"nature of the plasma disrupts the electrical systems of Augmentations. However, " +
|
"nature of the plasma disrupts the electrical systems of Augmentations. However, " +
|
||||||
"it can also be effective against non-augmented enemies due to its high temperature " +
|
"it can also be effective against non-augmented enemies due to its high temperature " +
|
||||||
"and concussive force.<br><br>" +
|
"and concussive force.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the player's success chance in Bladeburner contracts/operations by 6%.",
|
||||||
"Increases the player's success chance in Bladeburner contracts/operations by 6%.",
|
|
||||||
bladeburner_success_chance_mult: 1.06,
|
bladeburner_success_chance_mult: 1.06,
|
||||||
isSpecial: true,
|
isSpecial: true,
|
||||||
});
|
});
|
||||||
@@ -1782,8 +1778,7 @@ function initAugmentations() {
|
|||||||
"is more advanced and powerful than the original V1 model. This V2 model is " +
|
"is more advanced and powerful than the original V1 model. This V2 model is " +
|
||||||
"more power-efficiency, more accurate, and can fire plasma bolts at a much " +
|
"more power-efficiency, more accurate, and can fire plasma bolts at a much " +
|
||||||
"higher velocity than the V1 model.<br><br>" +
|
"higher velocity than the V1 model.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the player's success chance in Bladeburner contracts/operations by 8%.",
|
||||||
"Increases the player's success chance in Bladeburner contracts/operations by 8%.",
|
|
||||||
prereqs:[AugmentationNames.HyperionV1],
|
prereqs:[AugmentationNames.HyperionV1],
|
||||||
bladeburner_success_chance_mult: 1.08,
|
bladeburner_success_chance_mult: 1.08,
|
||||||
isSpecial: true,
|
isSpecial: true,
|
||||||
@@ -1941,8 +1936,7 @@ function initAugmentations() {
|
|||||||
info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser " +
|
info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser " +
|
||||||
"weapon. It's precision an accuracy makes it useful for quickly neutralizing " +
|
"weapon. It's precision an accuracy makes it useful for quickly neutralizing " +
|
||||||
"threats while keeping casualties to a minimum.<br><br>" +
|
"threats while keeping casualties to a minimum.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the player's success chance in Bladeburner contracts/operations by 8%.",
|
||||||
"Increases the player's success chance in Bladeburner contracts/operations by 8%.",
|
|
||||||
prereqs:[AugmentationNames.BladeArmor],
|
prereqs:[AugmentationNames.BladeArmor],
|
||||||
bladeburner_success_chance_mult: 1.08,
|
bladeburner_success_chance_mult: 1.08,
|
||||||
isSpecial: true,
|
isSpecial: true,
|
||||||
@@ -1956,8 +1950,7 @@ function initAugmentations() {
|
|||||||
"multiple-fiber system. The upgraded weapon uses multiple fiber laser " +
|
"multiple-fiber system. The upgraded weapon uses multiple fiber laser " +
|
||||||
"modules that combine together to form a single, more powerful beam of up to " +
|
"modules that combine together to form a single, more powerful beam of up to " +
|
||||||
"2000MW.<br><br>" +
|
"2000MW.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation increases the player's success chance in Bladeburner contracts/operations by 10%.",
|
||||||
"Increases the player's success chance in Bladeburner contracts/operations by 10%.",
|
|
||||||
prereqs:[AugmentationNames.BladeArmorUnibeam],
|
prereqs:[AugmentationNames.BladeArmorUnibeam],
|
||||||
bladeburner_success_chance_mult: 1.1,
|
bladeburner_success_chance_mult: 1.1,
|
||||||
isSpecial: true,
|
isSpecial: true,
|
||||||
@@ -2089,7 +2082,7 @@ export function displayAugmentationsContent(contentEl) {
|
|||||||
exportGameFn={saveObject.exportGame.bind(saveObject)}
|
exportGameFn={saveObject.exportGame.bind(saveObject)}
|
||||||
installAugmentationsFn={installAugmentations}
|
installAugmentationsFn={installAugmentations}
|
||||||
/>,
|
/>,
|
||||||
contentEl
|
contentEl,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Augmentation } from "./Augmentation";
|
import { Augmentation } from "./Augmentation";
|
||||||
import { IMap } from "../types";
|
import { IMap } from "../types";
|
||||||
|
|
||||||
export let Augmentations: IMap<Augmentation> = {};
|
export const Augmentations: IMap<Augmentation> = {};
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
export class PlayerOwnedAugmentation {
|
export class PlayerOwnedAugmentation {
|
||||||
level: number = 1;
|
level = 1;
|
||||||
name: string = "";
|
name = "";
|
||||||
|
|
||||||
constructor(name: string = "") {
|
constructor(name = "") {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IMap } from "../../types";
|
import { IMap } from "../../types";
|
||||||
|
|
||||||
export let AugmentationNames: IMap<string> = {
|
export const AugmentationNames: IMap<string> = {
|
||||||
Targeting1: "Augmented Targeting I",
|
Targeting1: "Augmented Targeting I",
|
||||||
Targeting2: "Augmented Targeting II",
|
Targeting2: "Augmented Targeting II",
|
||||||
Targeting3: "Augmented Targeting III",
|
Targeting3: "Augmented Targeting III",
|
||||||
@@ -89,6 +89,7 @@ export let AugmentationNames: IMap<string> = {
|
|||||||
BrachiBlades: "BrachiBlades",
|
BrachiBlades: "BrachiBlades",
|
||||||
BionicArms: "Bionic Arms",
|
BionicArms: "Bionic Arms",
|
||||||
SNA: "Social Negotiation Assistant (S.N.A)",
|
SNA: "Social Negotiation Assistant (S.N.A)",
|
||||||
|
HydroflameLeftArm: "Hydroflame Left Arm",
|
||||||
EsperEyewear: "EsperTech Bladeburner Eyewear",
|
EsperEyewear: "EsperTech Bladeburner Eyewear",
|
||||||
EMS4Recombination: "EMS-4 Recombination",
|
EMS4Recombination: "EMS-4 Recombination",
|
||||||
OrionShoulder: "ORION-MKIV Shoulder",
|
OrionShoulder: "ORION-MKIV Shoulder",
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ import { SourceFileMinus1 } from "./SourceFileMinus1";
|
|||||||
import { Settings } from "../../Settings/Settings";
|
import { Settings } from "../../Settings/Settings";
|
||||||
import { OwnedAugmentationsOrderSetting } from "../../Settings/SettingEnums";
|
import { OwnedAugmentationsOrderSetting } from "../../Settings/SettingEnums";
|
||||||
|
|
||||||
type IProps = {}
|
type IProps = {
|
||||||
|
// nothing special.
|
||||||
|
}
|
||||||
|
|
||||||
type IState = {
|
type IState = {
|
||||||
rerenderFlag: boolean;
|
rerenderFlag: boolean;
|
||||||
@@ -39,7 +41,7 @@ export class InstalledAugmentationsAndSourceFiles extends React.Component<IProps
|
|||||||
this.listRef = React.createRef();
|
this.listRef = React.createRef();
|
||||||
}
|
}
|
||||||
|
|
||||||
collapseAllHeaders() {
|
collapseAllHeaders(): void {
|
||||||
const ul = this.listRef.current;
|
const ul = this.listRef.current;
|
||||||
if (ul == null) { return; }
|
if (ul == null) { return; }
|
||||||
const tickers = ul.getElementsByClassName("accordion-header");
|
const tickers = ul.getElementsByClassName("accordion-header");
|
||||||
@@ -55,7 +57,7 @@ export class InstalledAugmentationsAndSourceFiles extends React.Component<IProps
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
expandAllHeaders() {
|
expandAllHeaders(): void {
|
||||||
const ul = this.listRef.current;
|
const ul = this.listRef.current;
|
||||||
if (ul == null) { return; }
|
if (ul == null) { return; }
|
||||||
const tickers = ul.getElementsByClassName("accordion-header");
|
const tickers = ul.getElementsByClassName("accordion-header");
|
||||||
@@ -71,7 +73,7 @@ export class InstalledAugmentationsAndSourceFiles extends React.Component<IProps
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rerender() {
|
rerender(): void {
|
||||||
this.setState((prevState) => {
|
this.setState((prevState) => {
|
||||||
return {
|
return {
|
||||||
rerenderFlag: !prevState.rerenderFlag,
|
rerenderFlag: !prevState.rerenderFlag,
|
||||||
@@ -79,17 +81,17 @@ export class InstalledAugmentationsAndSourceFiles extends React.Component<IProps
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
sortByAcquirementTime() {
|
sortByAcquirementTime(): void {
|
||||||
Settings.OwnedAugmentationsOrder = OwnedAugmentationsOrderSetting.AcquirementTime;
|
Settings.OwnedAugmentationsOrder = OwnedAugmentationsOrderSetting.AcquirementTime;
|
||||||
this.rerender();
|
this.rerender();
|
||||||
}
|
}
|
||||||
|
|
||||||
sortInOrder() {
|
sortInOrder(): void {
|
||||||
Settings.OwnedAugmentationsOrder = OwnedAugmentationsOrderSetting.Alphabetically
|
Settings.OwnedAugmentationsOrder = OwnedAugmentationsOrderSetting.Alphabetically
|
||||||
this.rerender();
|
this.rerender();
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render(): React.ReactNode {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ListConfiguration
|
<ListConfiguration
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { Player } from "../../Player";
|
|||||||
import { numeralWrapper } from "../../ui/numeralFormat";
|
import { numeralWrapper } from "../../ui/numeralFormat";
|
||||||
import { Augmentations} from "../Augmentations";
|
import { Augmentations} from "../Augmentations";
|
||||||
|
|
||||||
function calculateAugmentedStats() {
|
function calculateAugmentedStats(): any {
|
||||||
const augP: any = {};
|
const augP: any = {};
|
||||||
for(const aug of Player.queuedAugmentations) {
|
for(const aug of Player.queuedAugmentations) {
|
||||||
const augObj = Augmentations[aug.name];
|
const augObj = Augmentations[aug.name];
|
||||||
@@ -22,12 +22,12 @@ function calculateAugmentedStats() {
|
|||||||
export function PlayerMultipliers(): React.ReactElement {
|
export function PlayerMultipliers(): React.ReactElement {
|
||||||
const mults = calculateAugmentedStats();
|
const mults = calculateAugmentedStats();
|
||||||
function MultiplierTable(rows: any[]): React.ReactElement {
|
function MultiplierTable(rows: any[]): React.ReactElement {
|
||||||
function improvements(r: number) {
|
function improvements(r: number): JSX.Element[] {
|
||||||
let elems: any[] = [];
|
let elems: JSX.Element[] = [];
|
||||||
if(r) {
|
if(r) {
|
||||||
elems = [
|
elems = [
|
||||||
<td key='2'> => </td>,
|
<td key="2"> {"=>"} </td>,
|
||||||
<td key='3'>{numeralWrapper.formatPercentage(r)}</td>
|
<td key="3">{numeralWrapper.formatPercentage(r)}</td>,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return elems;
|
return elems;
|
||||||
@@ -36,14 +36,26 @@ export function PlayerMultipliers(): React.ReactElement {
|
|||||||
return <table>
|
return <table>
|
||||||
<tbody>
|
<tbody>
|
||||||
{rows.map((r: any) => <tr key={r[0]}>
|
{rows.map((r: any) => <tr key={r[0]}>
|
||||||
<td key='0'><span>{r[0]} multiplier: </span></td>
|
<td key="0"><span>{r[0]} multiplier: </span></td>
|
||||||
<td key='1' style={{textAlign: 'right'}}>{numeralWrapper.formatPercentage(r[1])}</td>
|
<td key="1" style={{textAlign: 'right'}}>{numeralWrapper.formatPercentage(r[1])}</td>
|
||||||
{improvements(r[2])}
|
{improvements(r[2])}
|
||||||
</tr>)}
|
</tr>)}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function BladeburnerMults(): React.ReactElement {
|
||||||
|
if(!Player.canAccessBladeburner()) return (<></>);
|
||||||
|
return (<>
|
||||||
|
{MultiplierTable([
|
||||||
|
['Bladeburner Success Chance', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
['Bladeburner Max Stamina', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
['Bladeburner Stamina Gain', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
['Bladeburner Field Analysis', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
])}<br />
|
||||||
|
</>);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<p><strong><u>Multipliers:</u></strong></p><br />
|
<p><strong><u>Multipliers:</u></strong></p><br />
|
||||||
@@ -51,38 +63,38 @@ export function PlayerMultipliers(): React.ReactElement {
|
|||||||
['Hacking Chance ', Player.hacking_chance_mult, Player.hacking_chance_mult*mults.hacking_chance_mult],
|
['Hacking Chance ', Player.hacking_chance_mult, Player.hacking_chance_mult*mults.hacking_chance_mult],
|
||||||
['Hacking Speed ', Player.hacking_speed_mult, Player.hacking_speed_mult*mults.hacking_speed_mult],
|
['Hacking Speed ', Player.hacking_speed_mult, Player.hacking_speed_mult*mults.hacking_speed_mult],
|
||||||
['Hacking Money ', Player.hacking_money_mult, Player.hacking_money_mult*mults.hacking_money_mult],
|
['Hacking Money ', Player.hacking_money_mult, Player.hacking_money_mult*mults.hacking_money_mult],
|
||||||
['Hacking Growth ', Player.hacking_grow_mult, Player.hacking_grow_mult*mults.hacking_grow_mult]
|
['Hacking Growth ', Player.hacking_grow_mult, Player.hacking_grow_mult*mults.hacking_grow_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Hacking Level ', Player.hacking_mult, Player.hacking_mult*mults.hacking_mult],
|
['Hacking Level ', Player.hacking_mult, Player.hacking_mult*mults.hacking_mult],
|
||||||
['Hacking Experience ', Player.hacking_exp_mult, Player.hacking_exp_mult*mults.hacking_exp_mult]
|
['Hacking Experience ', Player.hacking_exp_mult, Player.hacking_exp_mult*mults.hacking_exp_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Strength Level ', Player.strength_mult, Player.strength_mult*mults.strength_mult],
|
['Strength Level ', Player.strength_mult, Player.strength_mult*mults.strength_mult],
|
||||||
['Strength Experience ', Player.strength_exp_mult, Player.strength_exp_mult*mults.strength_exp_mult]
|
['Strength Experience ', Player.strength_exp_mult, Player.strength_exp_mult*mults.strength_exp_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Defense Level ', Player.defense_mult, Player.defense_mult*mults.defense_mult],
|
['Defense Level ', Player.defense_mult, Player.defense_mult*mults.defense_mult],
|
||||||
['Defense Experience ', Player.defense_exp_mult, Player.defense_exp_mult*mults.defense_exp_mult]
|
['Defense Experience ', Player.defense_exp_mult, Player.defense_exp_mult*mults.defense_exp_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Dexterity Level ', Player.dexterity_mult, Player.dexterity_mult*mults.dexterity_mult],
|
['Dexterity Level ', Player.dexterity_mult, Player.dexterity_mult*mults.dexterity_mult],
|
||||||
['Dexterity Experience ', Player.dexterity_exp_mult, Player.dexterity_exp_mult*mults.dexterity_exp_mult]
|
['Dexterity Experience ', Player.dexterity_exp_mult, Player.dexterity_exp_mult*mults.dexterity_exp_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Agility Level ', Player.agility_mult, Player.agility_mult*mults.agility_mult],
|
['Agility Level ', Player.agility_mult, Player.agility_mult*mults.agility_mult],
|
||||||
['Agility Experience ', Player.agility_exp_mult, Player.agility_exp_mult*mults.agility_exp_mult]
|
['Agility Experience ', Player.agility_exp_mult, Player.agility_exp_mult*mults.agility_exp_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Charisma Level ', Player.charisma_mult, Player.charisma_mult*mults.charisma_mult],
|
['Charisma Level ', Player.charisma_mult, Player.charisma_mult*mults.charisma_mult],
|
||||||
['Charisma Experience ', Player.charisma_exp_mult, Player.charisma_exp_mult*mults.charisma_exp_mult]
|
['Charisma Experience ', Player.charisma_exp_mult, Player.charisma_exp_mult*mults.charisma_exp_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
@@ -90,19 +102,21 @@ export function PlayerMultipliers(): React.ReactElement {
|
|||||||
['Hacknet Node purchase cost ', Player.hacknet_node_purchase_cost_mult, Player.hacknet_node_purchase_cost_mult*mults.hacknet_node_purchase_cost_mult],
|
['Hacknet Node purchase cost ', Player.hacknet_node_purchase_cost_mult, Player.hacknet_node_purchase_cost_mult*mults.hacknet_node_purchase_cost_mult],
|
||||||
['Hacknet Node RAM upgrade cost ', Player.hacknet_node_ram_cost_mult, Player.hacknet_node_ram_cost_mult*mults.hacknet_node_ram_cost_mult],
|
['Hacknet Node RAM upgrade cost ', Player.hacknet_node_ram_cost_mult, Player.hacknet_node_ram_cost_mult*mults.hacknet_node_ram_cost_mult],
|
||||||
['Hacknet Node Core purchase cost ', Player.hacknet_node_core_cost_mult, Player.hacknet_node_core_cost_mult*mults.hacknet_node_core_cost_mult],
|
['Hacknet Node Core purchase cost ', Player.hacknet_node_core_cost_mult, Player.hacknet_node_core_cost_mult*mults.hacknet_node_core_cost_mult],
|
||||||
['Hacknet Node level upgrade cost ', Player.hacknet_node_level_cost_mult, Player.hacknet_node_level_cost_mult*mults.hacknet_node_level_cost_mult]
|
['Hacknet Node level upgrade cost ', Player.hacknet_node_level_cost_mult, Player.hacknet_node_level_cost_mult*mults.hacknet_node_level_cost_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Company reputation gain ', Player.company_rep_mult, Player.company_rep_mult*mults.company_rep_mult],
|
['Company reputation gain ', Player.company_rep_mult, Player.company_rep_mult*mults.company_rep_mult],
|
||||||
['Faction reputation gain ', Player.faction_rep_mult, Player.faction_rep_mult*mults.faction_rep_mult],
|
['Faction reputation gain ', Player.faction_rep_mult, Player.faction_rep_mult*mults.faction_rep_mult],
|
||||||
['Salary ', Player.work_money_mult, Player.work_money_mult*mults.work_money_mult]
|
['Salary ', Player.work_money_mult, Player.work_money_mult*mults.work_money_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
{MultiplierTable([
|
{MultiplierTable([
|
||||||
['Crime success ', Player.crime_success_mult, Player.crime_success_mult*mults.crime_success_mult],
|
['Crime success ', Player.crime_success_mult, Player.crime_success_mult*mults.crime_success_mult],
|
||||||
['Crime money ', Player.crime_money_mult, Player.crime_money_mult*mults.crime_money_mult],
|
['Crime money ', Player.crime_money_mult, Player.crime_money_mult*mults.crime_money_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
|
<BladeburnerMults />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export function PurchasedAugmentations(): React.ReactElement {
|
|||||||
augs.push(
|
augs.push(
|
||||||
<li key={`${ownedAug.name}${ownedAug.level}`}>
|
<li key={`${ownedAug.name}${ownedAug.level}`}>
|
||||||
<AugmentationAccordion aug={aug} level={level} />
|
<AugmentationAccordion aug={aug} level={level} />
|
||||||
</li>
|
</li>,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export class AugmentationsRoot extends React.Component<IProps, IState> {
|
|||||||
super(props);
|
super(props);
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render(): React.ReactNode {
|
||||||
return (
|
return (
|
||||||
<div id="augmentations-content">
|
<div id="augmentations-content">
|
||||||
<h1>Purchased Augmentations</h1>
|
<h1>Purchased Augmentations</h1>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user