mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-28 08:57:32 +01:00
commit
f2c53bc556
26
dist/vendor.bundle.js
vendored
26
dist/vendor.bundle.js
vendored
File diff suppressed because one or more lines are too long
@ -31,7 +31,7 @@ List of all Source-Files
|
||||
| | * Each level of this Source-File opens up more of the Singularity Functions to use. |
|
||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||
| BitNode-5: Artificial Intelligence | * Unlocks :ref:`gameplay_intelligence`. |
|
||||
| | * Unlocks :js:func:`getBitNodeMultipliers` and :js:func:`getServer` |
|
||||
| | * Unlocks :js:func:`getBitNodeMultipliers` and start with Formulas.exe |
|
||||
| | Netscript functions, as well as :ref:`netscriptformulas`. |
|
||||
| | * Increases all of the player's hacking-related multipliers by 8%/12%/14%. |
|
||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1709
package-lock.json
generated
1709
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -35,6 +35,7 @@
|
||||
"monaco-editor": "^0.27.0",
|
||||
"notistack": "^2.0.2",
|
||||
"numeral": "2.0.6",
|
||||
"raw-loader": "^4.0.2",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-draggable": "^4.4.4",
|
||||
|
@ -63,6 +63,11 @@ export const GeneralActions: {
|
||||
),
|
||||
},
|
||||
"Incite Violence": {
|
||||
desc: <>Purposefully stir trouble in the synthoid community in order to gain a political edge.</>,
|
||||
desc: (
|
||||
<>
|
||||
Purposefully stir trouble in the synthoid community in order to gain a political edge. This will generate
|
||||
additional contracts and operations, at the cost of increased Chaos.
|
||||
</>
|
||||
),
|
||||
},
|
||||
};
|
||||
|
@ -23,7 +23,7 @@ export function listAllDarkwebItems(): void {
|
||||
const item = DarkWebItems[key];
|
||||
Terminal.printRaw(
|
||||
<>
|
||||
{item.program} - <Money money={item.price} /> - {item.description}`
|
||||
{item.program} - <Money money={item.price} /> - {item.description}
|
||||
</>,
|
||||
);
|
||||
}
|
||||
|
@ -3,17 +3,18 @@ import { IMap } from "../types";
|
||||
import { Programs } from "../Programs/Programs";
|
||||
|
||||
export const DarkWebItems: IMap<DarkWebItem> = {
|
||||
BruteSSHProgram: new DarkWebItem(Programs.BruteSSHProgram.name, 500e3, "Opens up SSH Ports"),
|
||||
FTPCrackProgram: new DarkWebItem(Programs.FTPCrackProgram.name, 1500e3, "Opens up FTP Ports"),
|
||||
RelaySMTPProgram: new DarkWebItem(Programs.RelaySMTPProgram.name, 5e6, "Opens up SMTP Ports"),
|
||||
HTTPWormProgram: new DarkWebItem(Programs.HTTPWormProgram.name, 30e6, "Opens up HTTP Ports"),
|
||||
SQLInjectProgram: new DarkWebItem(Programs.SQLInjectProgram.name, 250e6, "Opens up SQL Ports"),
|
||||
DeepscanV1: new DarkWebItem(Programs.DeepscanV1.name, 500000, "Enables 'scan-analyze' with a depth up to 5"),
|
||||
DeepscanV2: new DarkWebItem(Programs.DeepscanV2.name, 25e6, "Enables 'scan-analyze' with a depth up to 10"),
|
||||
AutolinkProgram: new DarkWebItem(Programs.AutoLink.name, 1e6, "Enables direct connect via 'scan-analyze'"),
|
||||
BruteSSHProgram: new DarkWebItem(Programs.BruteSSHProgram.name, 500e3, "Opens up SSH Ports."),
|
||||
FTPCrackProgram: new DarkWebItem(Programs.FTPCrackProgram.name, 1500e3, "Opens up FTP Ports."),
|
||||
RelaySMTPProgram: new DarkWebItem(Programs.RelaySMTPProgram.name, 5e6, "Opens up SMTP Ports."),
|
||||
HTTPWormProgram: new DarkWebItem(Programs.HTTPWormProgram.name, 30e6, "Opens up HTTP Ports."),
|
||||
SQLInjectProgram: new DarkWebItem(Programs.SQLInjectProgram.name, 250e6, "Opens up SQL Ports."),
|
||||
DeepscanV1: new DarkWebItem(Programs.DeepscanV1.name, 500000, "Enables 'scan-analyze' with a depth up to 5."),
|
||||
DeepscanV2: new DarkWebItem(Programs.DeepscanV2.name, 25e6, "Enables 'scan-analyze' with a depth up to 10."),
|
||||
AutolinkProgram: new DarkWebItem(Programs.AutoLink.name, 1e6, "Enables direct connect via 'scan-analyze."),
|
||||
ServerProfilerProgram: new DarkWebItem(
|
||||
Programs.ServerProfiler.name,
|
||||
1e6,
|
||||
"Displays hacking and Netscript-related information about a server",
|
||||
"Displays hacking and Netscript-related information about a server.",
|
||||
),
|
||||
FormulasProgram: new DarkWebItem(Programs.Formulas.name, 5e9, "Unlock access to the formulas API."),
|
||||
};
|
||||
|
@ -30,7 +30,7 @@ export function Augmentations(props: IProps): React.ReactElement {
|
||||
}
|
||||
|
||||
function queueAllAugs(): void {
|
||||
for (const augName of Object.keys(AugmentationNames)) {
|
||||
for (const augName of Object.values(AugmentationNames)) {
|
||||
props.player.queueAugmentation(augName);
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ import {
|
||||
calculateGrowTime,
|
||||
calculateWeakenTime,
|
||||
} from "../Hacking";
|
||||
import { Programs } from "../Programs/Programs";
|
||||
|
||||
export interface INetscriptFormulas {
|
||||
basic: {
|
||||
@ -65,106 +66,99 @@ export function NetscriptFormulas(
|
||||
workerScript: WorkerScript,
|
||||
helper: INetscriptHelper,
|
||||
): INetscriptFormulas {
|
||||
const checkFormulasAccess = function (func: any, n: any): void {
|
||||
if (
|
||||
(player.sourceFileLvl(5) < 1 && player.bitNodeN !== 5) ||
|
||||
(player.sourceFileLvl(n) < 1 && player.bitNodeN !== n)
|
||||
) {
|
||||
let extra = "";
|
||||
if (n !== 5) {
|
||||
extra = ` and Source-File ${n}-1`;
|
||||
}
|
||||
throw helper.makeRuntimeErrorMsg(`formulas.${func}`, `Requires Source-File 5-1${extra} to run.`);
|
||||
const checkFormulasAccess = function (func: string): void {
|
||||
if (!player.hasProgram(Programs.Formulas.name)) {
|
||||
throw helper.makeRuntimeErrorMsg(`formulas.${func}`, `Requires Formulas.exe to run.`);
|
||||
}
|
||||
};
|
||||
return {
|
||||
basic: {
|
||||
calculateSkill: function (exp: any, mult: any = 1): any {
|
||||
checkFormulasAccess("basic.calculateSkill", 5);
|
||||
checkFormulasAccess("basic.calculateSkill");
|
||||
return calculateSkill(exp, mult);
|
||||
},
|
||||
calculateExp: function (skill: any, mult: any = 1): any {
|
||||
checkFormulasAccess("basic.calculateExp", 5);
|
||||
checkFormulasAccess("basic.calculateExp");
|
||||
return calculateExp(skill, mult);
|
||||
},
|
||||
hackChance: function (server: any, player: any): any {
|
||||
checkFormulasAccess("basic.hackChance", 5);
|
||||
checkFormulasAccess("basic.hackChance");
|
||||
return calculateHackingChance(server, player);
|
||||
},
|
||||
hackExp: function (server: any, player: any): any {
|
||||
checkFormulasAccess("basic.hackExp", 5);
|
||||
checkFormulasAccess("basic.hackExp");
|
||||
return calculateHackingExpGain(server, player);
|
||||
},
|
||||
hackPercent: function (server: any, player: any): any {
|
||||
checkFormulasAccess("basic.hackPercent", 5);
|
||||
checkFormulasAccess("basic.hackPercent");
|
||||
return calculatePercentMoneyHacked(server, player);
|
||||
},
|
||||
growPercent: function (server: any, threads: any, player: any, cores: any = 1): any {
|
||||
checkFormulasAccess("basic.growPercent", 5);
|
||||
checkFormulasAccess("basic.growPercent");
|
||||
return calculateServerGrowth(server, threads, player, cores);
|
||||
},
|
||||
hackTime: function (server: any, player: any): any {
|
||||
checkFormulasAccess("basic.hackTime", 5);
|
||||
checkFormulasAccess("basic.hackTime");
|
||||
return calculateHackingTime(server, player);
|
||||
},
|
||||
growTime: function (server: any, player: any): any {
|
||||
checkFormulasAccess("basic.growTime", 5);
|
||||
checkFormulasAccess("basic.growTime");
|
||||
return calculateGrowTime(server, player);
|
||||
},
|
||||
weakenTime: function (server: any, player: any): any {
|
||||
checkFormulasAccess("basic.weakenTime", 5);
|
||||
checkFormulasAccess("basic.weakenTime");
|
||||
return calculateWeakenTime(server, player);
|
||||
},
|
||||
},
|
||||
hacknetNodes: {
|
||||
moneyGainRate: function (level: any, ram: any, cores: any, mult: any = 1): any {
|
||||
checkFormulasAccess("hacknetNodes.moneyGainRate", 5);
|
||||
checkFormulasAccess("hacknetNodes.moneyGainRate");
|
||||
return calculateMoneyGainRate(level, ram, cores, mult);
|
||||
},
|
||||
levelUpgradeCost: function (startingLevel: any, extraLevels: any = 1, costMult: any = 1): any {
|
||||
checkFormulasAccess("hacknetNodes.levelUpgradeCost", 5);
|
||||
checkFormulasAccess("hacknetNodes.levelUpgradeCost");
|
||||
return calculateLevelUpgradeCost(startingLevel, extraLevels, costMult);
|
||||
},
|
||||
ramUpgradeCost: function (startingRam: any, extraLevels: any = 1, costMult: any = 1): any {
|
||||
checkFormulasAccess("hacknetNodes.ramUpgradeCost", 5);
|
||||
checkFormulasAccess("hacknetNodes.ramUpgradeCost");
|
||||
return calculateRamUpgradeCost(startingRam, extraLevels, costMult);
|
||||
},
|
||||
coreUpgradeCost: function (startingCore: any, extraCores: any = 1, costMult: any = 1): any {
|
||||
checkFormulasAccess("hacknetNodes.coreUpgradeCost", 5);
|
||||
checkFormulasAccess("hacknetNodes.coreUpgradeCost");
|
||||
return calculateCoreUpgradeCost(startingCore, extraCores, costMult);
|
||||
},
|
||||
hacknetNodeCost: function (n: any, mult: any): any {
|
||||
checkFormulasAccess("hacknetNodes.hacknetNodeCost", 5);
|
||||
checkFormulasAccess("hacknetNodes.hacknetNodeCost");
|
||||
return calculateNodeCost(n, mult);
|
||||
},
|
||||
constants: function (): any {
|
||||
checkFormulasAccess("hacknetNodes.constants", 5);
|
||||
checkFormulasAccess("hacknetNodes.constants");
|
||||
return Object.assign({}, HacknetNodeConstants);
|
||||
},
|
||||
},
|
||||
hacknetServers: {
|
||||
hashGainRate: function (level: any, ramUsed: any, maxRam: any, cores: any, mult: any = 1): any {
|
||||
checkFormulasAccess("hacknetServers.hashGainRate", 9);
|
||||
checkFormulasAccess("hacknetServers.hashGainRate");
|
||||
return HScalculateHashGainRate(level, ramUsed, maxRam, cores, mult);
|
||||
},
|
||||
levelUpgradeCost: function (startingLevel: any, extraLevels: any = 1, costMult: any = 1): any {
|
||||
checkFormulasAccess("hacknetServers.levelUpgradeCost", 9);
|
||||
checkFormulasAccess("hacknetServers.levelUpgradeCost");
|
||||
return HScalculateLevelUpgradeCost(startingLevel, extraLevels, costMult);
|
||||
},
|
||||
ramUpgradeCost: function (startingRam: any, extraLevels: any = 1, costMult: any = 1): any {
|
||||
checkFormulasAccess("hacknetServers.ramUpgradeCost", 9);
|
||||
checkFormulasAccess("hacknetServers.ramUpgradeCost");
|
||||
return HScalculateRamUpgradeCost(startingRam, extraLevels, costMult);
|
||||
},
|
||||
coreUpgradeCost: function (startingCore: any, extraCores: any = 1, costMult: any = 1): any {
|
||||
checkFormulasAccess("hacknetServers.coreUpgradeCost", 9);
|
||||
checkFormulasAccess("hacknetServers.coreUpgradeCost");
|
||||
return HScalculateCoreUpgradeCost(startingCore, extraCores, costMult);
|
||||
},
|
||||
cacheUpgradeCost: function (startingCache: any, extraCache: any = 1): any {
|
||||
checkFormulasAccess("hacknetServers.cacheUpgradeCost", 9);
|
||||
checkFormulasAccess("hacknetServers.cacheUpgradeCost");
|
||||
return HScalculateCacheUpgradeCost(startingCache, extraCache);
|
||||
},
|
||||
hashUpgradeCost: function (upgName: any, level: any): any {
|
||||
checkFormulasAccess("hacknetServers.hashUpgradeCost", 9);
|
||||
checkFormulasAccess("hacknetServers.hashUpgradeCost");
|
||||
const upg = player.hashManager.getUpgrade(upgName);
|
||||
if (!upg) {
|
||||
throw helper.makeRuntimeErrorMsg(
|
||||
@ -175,11 +169,11 @@ export function NetscriptFormulas(
|
||||
return upg.getCost(level);
|
||||
},
|
||||
hacknetServerCost: function (n: any, mult: any): any {
|
||||
checkFormulasAccess("hacknetServers.hacknetServerCost", 9);
|
||||
checkFormulasAccess("hacknetServers.hacknetServerCost");
|
||||
return HScalculateServerCost(n, mult);
|
||||
},
|
||||
constants: function (): any {
|
||||
checkFormulasAccess("hacknetServers.constants", 9);
|
||||
checkFormulasAccess("hacknetServers.constants");
|
||||
return Object.assign({}, HacknetServerConstants);
|
||||
},
|
||||
},
|
||||
|
@ -65,6 +65,10 @@ export function prestigeAugmentation(): void {
|
||||
homeComp.programs.push(Programs.AutoLink.name);
|
||||
}
|
||||
|
||||
if (Player.sourceFileLvl(5) > 0) {
|
||||
homeComp.programs.push(Programs.Formulas.name);
|
||||
}
|
||||
|
||||
// Re-create foreign servers
|
||||
initForeignServers(Player.getHomeComputer());
|
||||
|
||||
@ -216,6 +220,10 @@ export function prestigeSourceFile(flume: boolean): void {
|
||||
// Messages
|
||||
initMessages();
|
||||
|
||||
if (Player.sourceFileLvl(5) > 0) {
|
||||
homeComp.programs.push(Programs.Formulas.name);
|
||||
}
|
||||
|
||||
// BitNode 3: Corporatocracy
|
||||
if (Player.bitNodeN === 3) {
|
||||
homeComp.messages.push(LiteratureNames.CorporationManagementHandbook);
|
||||
|
@ -190,7 +190,7 @@ export const programsMetadata: IProgramCreationParams[] = [
|
||||
time: CONSTANTS.MillisecondsPerQuarterHour,
|
||||
},
|
||||
run: (router: IRouter, terminal: ITerminal): void => {
|
||||
terminal.error("This executable cannot be run.");
|
||||
terminal.print("This executable cannot be run.");
|
||||
terminal.print("DeepscanV1.exe lets you run 'scan-analyze' with a depth up to 5.");
|
||||
},
|
||||
},
|
||||
@ -204,7 +204,7 @@ export const programsMetadata: IProgramCreationParams[] = [
|
||||
time: CONSTANTS.MillisecondsPer2Hours,
|
||||
},
|
||||
run: (router: IRouter, terminal: ITerminal): void => {
|
||||
terminal.error("This executable cannot be run.");
|
||||
terminal.print("This executable cannot be run.");
|
||||
terminal.print("DeepscanV2.exe lets you run 'scan-analyze' with a depth up to 10.");
|
||||
},
|
||||
},
|
||||
@ -268,11 +268,25 @@ export const programsMetadata: IProgramCreationParams[] = [
|
||||
time: CONSTANTS.MillisecondsPerQuarterHour,
|
||||
},
|
||||
run: (router: IRouter, terminal: ITerminal): void => {
|
||||
terminal.error("This executable cannot be run.");
|
||||
terminal.print("This executable cannot be run.");
|
||||
terminal.print("AutoLink.exe lets you automatically connect to other servers when using 'scan-analyze'.");
|
||||
terminal.print("When using scan-analyze, click on a server's hostname to connect to it.");
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "Formulas",
|
||||
name: "Formulas.exe",
|
||||
create: {
|
||||
level: 1000,
|
||||
tooltip: "This program allows you to use the formulas API",
|
||||
req: requireHackingLevel(1000),
|
||||
time: CONSTANTS.MillisecondsPer4Hours,
|
||||
},
|
||||
run: (router: IRouter, terminal: ITerminal): void => {
|
||||
terminal.print("This executable cannot be run.");
|
||||
terminal.print("Formulas.exe lets you use the formulas API.");
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "BitFlume",
|
||||
name: "b1t_flum3.exe",
|
||||
|
File diff suppressed because it is too large
Load Diff
4
src/ScriptEditor/raw-loader.d.ts
vendored
Normal file
4
src/ScriptEditor/raw-loader.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
declare module "!!raw-loader!*" {
|
||||
const contents: { default: string };
|
||||
export = contents;
|
||||
}
|
@ -15,7 +15,7 @@ import { calculateRamUsage } from "../../Script/RamCalculations";
|
||||
import { RamCalculationErrorCode } from "../../Script/RamCalculationErrorCodes";
|
||||
import { numeralWrapper } from "../../ui/numeralFormat";
|
||||
import { CursorPositions } from "../CursorPositions";
|
||||
import { libSource } from "../NetscriptDefinitions";
|
||||
|
||||
import { NetscriptFunctions } from "../../NetscriptFunctions";
|
||||
import { WorkerScript } from "../../Netscript/WorkerScript";
|
||||
import { Settings } from "../../Settings/Settings";
|
||||
@ -32,6 +32,8 @@ import TextField from "@mui/material/TextField";
|
||||
import IconButton from "@mui/material/IconButton";
|
||||
import SettingsIcon from "@mui/icons-material/Settings";
|
||||
|
||||
import libSource from "!!raw-loader!../NetscriptDefinitions";
|
||||
|
||||
let symbolsLoaded = false;
|
||||
let symbols: string[] = [];
|
||||
export function SetupTextEditor(): void {
|
||||
@ -327,8 +329,9 @@ export function Root(props: IProps): React.ReactElement {
|
||||
l.language.tokenizer.root.unshift(["this", { token: "this" }]);
|
||||
})();
|
||||
|
||||
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, "netscript.d.ts");
|
||||
monaco.languages.typescript.typescriptDefaults.addExtraLib(libSource, "netscript.d.ts");
|
||||
const source = (libSource + "").replace(/export /g, "");
|
||||
monaco.languages.typescript.javascriptDefaults.addExtraLib(source, "netscript.d.ts");
|
||||
monaco.languages.typescript.typescriptDefaults.addExtraLib(source, "netscript.d.ts");
|
||||
loadThemes(monaco);
|
||||
}
|
||||
// 370px 71%, 725px 85.1%, 1085px 90%, 1300px 91.7%
|
||||
|
@ -68,8 +68,8 @@ SourceFiles["SourceFile5"] = new SourceFile(
|
||||
persistent (it never gets reset back to 1). However, gaining Intelligence experience is much slower than other
|
||||
stats, and it is also hidden (you won't know when you gain experience and how much). Higher Intelligence levels
|
||||
will boost your production for many actions in the game. In addition, this Source-File will unlock the
|
||||
getBitNodeMultipliers() and getServer() Netscript functions, as well as the formulas API, and will raise all of
|
||||
your hacking-related multipliers by:
|
||||
getBitNodeMultipliers() and let you start with Formulas.exe, and will raise all of your hacking-related
|
||||
multipliers by:
|
||||
<br />
|
||||
<br />
|
||||
Level 1: 8%
|
||||
|
@ -9,7 +9,7 @@
|
||||
"target": "es6",
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"types": ["cypress", "@testing-library/cypress", "node"]
|
||||
"types": ["cypress", "@testing-library/cypress", "node", "raw-loader.d.ts"]
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user