mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-18 05:33:54 +01:00
Converted Programs and DarkWeb implementations to Typescript
This commit is contained in:
parent
4383d1393d
commit
928faa5b4c
3852
dist/engine.bundle.js
vendored
3852
dist/engine.bundle.js
vendored
File diff suppressed because it is too large
Load Diff
1095
dist/vendor.bundle.js
vendored
1095
dist/vendor.bundle.js
vendored
File diff suppressed because one or more lines are too long
@ -1,159 +0,0 @@
|
||||
import {CONSTANTS} from "./Constants";
|
||||
import {Player} from "./Player";
|
||||
import {createElement} from "../utils/uiHelpers/createElement";
|
||||
|
||||
// a function that returns a requirement for a program that requires only that
|
||||
// the player has at least the given skill level.
|
||||
function requireLevel(lvl) {
|
||||
return function() {
|
||||
return Player.hacking_skill >= lvl;
|
||||
}
|
||||
}
|
||||
|
||||
function Program(name, create) {
|
||||
this.name = name;
|
||||
this.create = create;
|
||||
}
|
||||
|
||||
Program.prototype.htmlID = function() {
|
||||
const name = this.name.endsWith('.exe') ? this.name.slice(0, -('.exe'.length)) : this.name;
|
||||
return "create-program-"+name;
|
||||
}
|
||||
|
||||
/* Create programs */
|
||||
const Programs = {
|
||||
NukeProgram: new Program("NUKE.exe", {
|
||||
level: 1,
|
||||
tooltip:"This virus is used to gain root access to a machine if enough ports are opened.",
|
||||
req: requireLevel(1),
|
||||
time: CONSTANTS.MillisecondsPerFiveMinutes,
|
||||
}),
|
||||
BruteSSHProgram: new Program("BruteSSH.exe", {
|
||||
level: 50,
|
||||
tooltip:"This program executes a brute force attack that opens SSH ports",
|
||||
req: requireLevel(50),
|
||||
time: CONSTANTS.MillisecondsPerFiveMinutes * 2,
|
||||
}),
|
||||
FTPCrackProgram: new Program("FTPCrack.exe", {
|
||||
level: 100,
|
||||
tooltip:"This program cracks open FTP ports",
|
||||
req: requireLevel(100),
|
||||
time: CONSTANTS.MillisecondsPerHalfHour,
|
||||
}),
|
||||
RelaySMTPProgram: new Program("relaySMTP.exe", {
|
||||
level: 250,
|
||||
tooltip:"This program opens SMTP ports by redirecting data",
|
||||
req: requireLevel(250),
|
||||
time: CONSTANTS.MillisecondsPer2Hours,
|
||||
}),
|
||||
HTTPWormProgram: new Program("HTTPWorm.exe", {
|
||||
level: 500,
|
||||
tooltip:"This virus opens up HTTP ports",
|
||||
req: requireLevel(500),
|
||||
time: CONSTANTS.MillisecondsPer4Hours,
|
||||
}),
|
||||
SQLInjectProgram: new Program("SQLInject.exe", {
|
||||
level: 750,
|
||||
tooltip:"This virus opens SQL ports",
|
||||
req: requireLevel(750),
|
||||
time: CONSTANTS.MillisecondsPer8Hours,
|
||||
}),
|
||||
DeepscanV1: new Program("DeepscanV1.exe", {
|
||||
level: 75,
|
||||
tooltip:"This program allows you to use the scan-analyze command with a depth up to 5",
|
||||
req: requireLevel(75),
|
||||
time: CONSTANTS.MillisecondsPerQuarterHour,
|
||||
}),
|
||||
DeepscanV2: new Program("DeepscanV2.exe", {
|
||||
level: 400,
|
||||
tooltip:"This program allows you to use the scan-analyze command with a depth up to 10",
|
||||
req: requireLevel(400),
|
||||
time: CONSTANTS.MillisecondsPer2Hours,
|
||||
}),
|
||||
ServerProfiler: new Program("ServerProfiler.exe", {
|
||||
level: 75,
|
||||
tooltip:"This program is used to display hacking and Netscript-related information about servers",
|
||||
req: requireLevel(75),
|
||||
time: CONSTANTS.MillisecondsPerHalfHour,
|
||||
}),
|
||||
AutoLink: new Program("AutoLink.exe", {
|
||||
level: 25,
|
||||
tooltip:"This program allows you to directly connect to other servers through the 'scan-analyze' command",
|
||||
req: requireLevel(25),
|
||||
time: CONSTANTS.MillisecondsPerQuarterHour,
|
||||
}),
|
||||
BitFlume: new Program("b1t_flum3.exe", {
|
||||
level: 1,
|
||||
tooltip:"This program creates a portal to the BitNode Nexus (allows you to restart and switch BitNodes)",
|
||||
req: function() {return Player.sourceFiles.length > 0 && Player.hacking_skill >= 1},
|
||||
time: CONSTANTS.MillisecondsPerFiveMinutes / 20,
|
||||
}),
|
||||
// special because you can't create it.
|
||||
Flight: new Program("fl1ght.exe"),
|
||||
};
|
||||
|
||||
// this has the same key as 'Programs', not program names
|
||||
const aLinks = {};
|
||||
|
||||
function displayCreateProgramContent() {
|
||||
for(const key in aLinks) {
|
||||
const p = Programs[key]
|
||||
aLinks[key].style.display = "none";
|
||||
if(!Player.hasProgram(p.name) && p.create.req()){
|
||||
aLinks[key].style.display = "inline-block";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Returns the number of programs that are currently available to be created
|
||||
function getNumAvailableCreateProgram() {
|
||||
var count = 0;
|
||||
for(const key in Programs) {
|
||||
if(Programs[key].create === undefined) { // a program we can't create
|
||||
continue
|
||||
}
|
||||
if(Player.hasProgram(Programs[key].name)) { // can't create it twice
|
||||
continue
|
||||
}
|
||||
|
||||
if(!Programs[key].create.req()) { // if you don't fullfill the creation requirement
|
||||
continue
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
if (Player.firstProgramAvailable === false && count > 0) {
|
||||
Player.firstProgramAvailable = true;
|
||||
document.getElementById("create-program-tab").style.display = "list-item";
|
||||
document.getElementById("hacking-menu-header").click();
|
||||
document.getElementById("hacking-menu-header").click();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
function initCreateProgramButtons() {
|
||||
var createProgramList = document.getElementById("create-program-list");
|
||||
for(const key in Programs) {
|
||||
if(Programs[key].create === undefined) {
|
||||
continue
|
||||
}
|
||||
const elem = createElement("a", {
|
||||
class: "a-link-button", id: Programs[key].htmlID(), innerText: Programs[key].name,
|
||||
tooltip: Programs[key].create.tooltip,
|
||||
});
|
||||
aLinks[key] = elem;
|
||||
createProgramList.appendChild(elem);
|
||||
}
|
||||
|
||||
for(const key in aLinks) {
|
||||
const p = Programs[key]
|
||||
aLinks[key].addEventListener("click", function() {
|
||||
Player.startCreateProgramWork(p.name, p.create.time, p.create.level);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export {Programs, displayCreateProgramContent, getNumAvailableCreateProgram,
|
||||
initCreateProgramButtons};
|
@ -1,15 +1,14 @@
|
||||
import {Programs} from "./CreateProgram";
|
||||
import {Player} from "./Player";
|
||||
import {SpecialServerIps} from "./SpecialServerIps";
|
||||
import {post} from "./ui/postToTerminal";
|
||||
import { DarkWebItems } from "./DarkWebItems";
|
||||
|
||||
import {isValidIPAddress} from "../utils/helpers/isValidIPAddress";
|
||||
import {formatNumber} from "../utils/StringHelperFunctions";
|
||||
import { Player } from "../Player";
|
||||
import { SpecialServerIps } from "../SpecialServerIps";
|
||||
import { post } from "../ui/postToTerminal";
|
||||
|
||||
import { isValidIPAddress } from "../../utils/helpers/isValidIPAddress";
|
||||
import { formatNumber } from "../../utils/StringHelperFunctions";
|
||||
|
||||
/* DarkWeb.js */
|
||||
//Posts a "help" message if connected to DarkWeb
|
||||
function checkIfConnectedToDarkweb() {
|
||||
export function checkIfConnectedToDarkweb() {
|
||||
if (SpecialServerIps.hasOwnProperty("Darkweb Server")) {
|
||||
var darkwebIp = SpecialServerIps["Darkweb Server"];
|
||||
if (!isValidIPAddress(darkwebIp)) {return;}
|
||||
@ -24,7 +23,7 @@ function checkIfConnectedToDarkweb() {
|
||||
//Handler for dark web commands. The terminal's executeCommand() function will pass
|
||||
//dark web-specific commands into this. It will pass in the raw split command array
|
||||
//rather than the command string
|
||||
function executeDarkwebTerminalCommand(commandArray) {
|
||||
export function executeDarkwebTerminalCommand(commandArray) {
|
||||
if (commandArray.length == 0) {return;}
|
||||
switch (commandArray[0]) {
|
||||
case "buy":
|
||||
@ -87,30 +86,5 @@ function buyDarkwebItem(itemName) {
|
||||
// buy and push
|
||||
Player.loseMoney(item.price);
|
||||
Player.getHomeComputer().programs.push(item.program);
|
||||
post('You have purchased the '+item.program+' program. The new program can be found on your home computer.');
|
||||
post('You have purchased the ' + item.program + ' program. The new program can be found on your home computer.');
|
||||
}
|
||||
|
||||
function DarkWebItem(program, price, description) {
|
||||
this.program = program;
|
||||
this.price = price;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
// formats the item for the terminal (eg. "BruteSSH.exe - $500,000 - Opens up SSH Ports")
|
||||
DarkWebItem.prototype.toString = function() {
|
||||
return [this.program, "$"+formatNumber(this.price), this.description].join(' - ');
|
||||
}
|
||||
|
||||
const DarkWebItems = {
|
||||
BruteSSHProgram: new DarkWebItem(Programs.BruteSSHProgram.name, 500000, "Opens up SSH Ports"),
|
||||
FTPCrackProgram: new DarkWebItem(Programs.FTPCrackProgram.name, 1500000, "Opens up FTP Ports"),
|
||||
RelaySMTPProgram: new DarkWebItem(Programs.RelaySMTPProgram.name, 5000000, "Opens up SMTP Ports"),
|
||||
HTTPWormProgram: new DarkWebItem(Programs.HTTPWormProgram.name, 30000000, "Opens up HTTP Ports"),
|
||||
SQLInjectProgram: new DarkWebItem(Programs.SQLInjectProgram.name, 250000000, "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, 25000000, "Enables 'scan-analyze' with a depth up to 10"),
|
||||
AutolinkProgram: new DarkWebItem(Programs.AutoLink.name, 1000000, "Enables direct connect via 'scan-analyze'"),
|
||||
};
|
||||
|
||||
|
||||
export {checkIfConnectedToDarkweb, executeDarkwebTerminalCommand, DarkWebItems};
|
18
src/DarkWeb/DarkWebItem.ts
Normal file
18
src/DarkWeb/DarkWebItem.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import { formatNumber } from "../../utils/StringHelperFunctions";
|
||||
|
||||
export class DarkWebItem {
|
||||
program: string;
|
||||
price: number;
|
||||
description: string;
|
||||
|
||||
constructor(program: string, price: number, description: string) {
|
||||
this.program = program;
|
||||
this.price = price;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
// Formats the item to print out to terminal (e.g. BruteSSH.exe -$500,000 - Opens up SSH Ports)
|
||||
toString(): string {
|
||||
return [this.program, "$" + formatNumber(this.price, 0), this.description].join(' - ');
|
||||
}
|
||||
}
|
14
src/DarkWeb/DarkWebItems.ts
Normal file
14
src/DarkWeb/DarkWebItems.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import { DarkWebItem } from "./DarkWebItem";
|
||||
import { IMap } from "../types";
|
||||
import { Programs } from "../Programs/Programs";
|
||||
|
||||
export const DarkWebItems: IMap<DarkWebItem> = {
|
||||
BruteSSHProgram: new DarkWebItem(Programs.BruteSSHProgram.name, 500000, "Opens up SSH Ports"),
|
||||
FTPCrackProgram: new DarkWebItem(Programs.FTPCrackProgram.name, 1500000, "Opens up FTP Ports"),
|
||||
RelaySMTPProgram: new DarkWebItem(Programs.RelaySMTPProgram.name, 5000000, "Opens up SMTP Ports"),
|
||||
HTTPWormProgram: new DarkWebItem(Programs.HTTPWormProgram.name, 30000000, "Opens up HTTP Ports"),
|
||||
SQLInjectProgram: new DarkWebItem(Programs.SQLInjectProgram.name, 250000000, "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, 25000000, "Enables 'scan-analyze' with a depth up to 10"),
|
||||
AutolinkProgram: new DarkWebItem(Programs.AutoLink.name, 1000000, "Enables direct connect via 'scan-analyze'"),
|
||||
};
|
@ -1,6 +1,6 @@
|
||||
import { AugmentationNames } from "./Augmentations";
|
||||
import { generateRandomContract } from "./CodingContractGenerator";
|
||||
import { Programs } from "./CreateProgram";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import { Factions } from "./Faction/Factions";
|
||||
import { Player } from "./Player";
|
||||
import { AllServers } from "./Server";
|
||||
|
@ -1,12 +1,14 @@
|
||||
import {Augmentations, Augmentation,
|
||||
AugmentationNames} from "./Augmentations";
|
||||
import {Programs} from "./CreateProgram";
|
||||
import {inMission} from "./Missions";
|
||||
import {Player} from "./Player";
|
||||
import {redPillFlag} from "./RedPill";
|
||||
import {GetServerByHostname} from "./Server";
|
||||
import {Settings} from "./Settings";
|
||||
import {dialogBoxCreate, dialogBoxOpened} from "../utils/DialogBox";
|
||||
import { Augmentations,
|
||||
Augmentation,
|
||||
AugmentationNames } from "./Augmentations";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import { inMission } from "./Missions";
|
||||
import { Player } from "./Player";
|
||||
import { redPillFlag } from "./RedPill";
|
||||
import { GetServerByHostname } from "./Server";
|
||||
import { Settings } from "./Settings";
|
||||
import { dialogBoxCreate,
|
||||
dialogBoxOpened} from "../utils/DialogBox";
|
||||
import {Reviver, Generic_toJSON,
|
||||
Generic_fromJSON} from "../utils/JSONReviver";
|
||||
|
||||
|
@ -13,8 +13,7 @@ import {Companies, companyExists} from "./Company/Companies";
|
||||
import {CompanyPosition} from "./Company/CompanyPosition";
|
||||
import {CompanyPositions} from "./Company/CompanyPositions";
|
||||
import {CONSTANTS} from "./Constants";
|
||||
import {Programs} from "./CreateProgram";
|
||||
import {DarkWebItems} from "./DarkWeb";
|
||||
import { DarkWebItems } from "./DarkWeb/DarkWebItems";
|
||||
import {calculateHackingChance,
|
||||
calculateHackingExpGain,
|
||||
calculatePercentMoneyHacked,
|
||||
@ -33,6 +32,7 @@ import {Locations} from "./Locations";
|
||||
import {Message, Messages} from "./Message";
|
||||
import {inMission} from "./Missions";
|
||||
import {Player} from "./Player";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import {Script, findRunningScript, RunningScript,
|
||||
isScriptFilename} from "./Script";
|
||||
import {Server, getServer, AddToAllServers,
|
||||
|
@ -1,17 +1,18 @@
|
||||
import {Augmentations, applyAugmentation,
|
||||
AugmentationNames,
|
||||
PlayerOwnedAugmentation} from "./Augmentations";
|
||||
import {BitNodeMultipliers} from "./BitNodeMultipliers";
|
||||
import {CodingContractRewardType} from "./CodingContracts";
|
||||
import {Company} from "./Company/Company";
|
||||
import {Companies} from "./Company/Companies";
|
||||
import {getNextCompanyPosition} from "./Company/GetNextCompanyPosition";
|
||||
import {getJobRequirementText} from "./Company/GetJobRequirementText";
|
||||
import {CompanyPositions} from "./Company/CompanyPositions";
|
||||
import { Augmentations,
|
||||
applyAugmentation,
|
||||
AugmentationNames,
|
||||
PlayerOwnedAugmentation } from "./Augmentations";
|
||||
import { BitNodeMultipliers } from "./BitNodeMultipliers";
|
||||
import { CodingContractRewardType } from "./CodingContracts";
|
||||
import { Company } from "./Company/Company";
|
||||
import { Companies } from "./Company/Companies";
|
||||
import { getNextCompanyPosition } from "./Company/GetNextCompanyPosition";
|
||||
import { getJobRequirementText } from "./Company/GetJobRequirementText";
|
||||
import { CompanyPositions } from "./Company/CompanyPositions";
|
||||
import * as posNames from "./Company/data/CompanyPositionNames";
|
||||
import {CONSTANTS} from "./Constants";
|
||||
import { Corporation } from "./Corporation/Corporation";
|
||||
import {Programs} from "./CreateProgram";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import {determineCrimeSuccess, Crimes} from "./Crimes";
|
||||
import {Engine} from "./engine";
|
||||
import { Faction } from "./Faction/Faction";
|
||||
|
@ -5,7 +5,7 @@ import {initBitNodeMultipliers} from "./BitNode";
|
||||
import {Bladeburner} from "./Bladeburner";
|
||||
import {writeCinematicText} from "./CinematicText";
|
||||
import {Companies, initCompanies} from "./Company/Companies";
|
||||
import {Programs} from "./CreateProgram";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import {Engine} from "./engine";
|
||||
import { Faction } from "./Faction/Faction";
|
||||
import { Factions,
|
||||
|
26
src/Programs/Program.ts
Normal file
26
src/Programs/Program.ts
Normal file
@ -0,0 +1,26 @@
|
||||
export interface IPlayer {
|
||||
hacking_skill: number;
|
||||
sourceFiles: any[];
|
||||
}
|
||||
|
||||
export interface IProgramCreate {
|
||||
level: number;
|
||||
req(p: IPlayer): boolean; // Function that indicates whether player meets requirements
|
||||
time: number;
|
||||
tooltip: string;
|
||||
}
|
||||
|
||||
export class Program {
|
||||
name: string = "";
|
||||
create: IProgramCreate | null;
|
||||
|
||||
constructor(name: string, create: IProgramCreate | null) {
|
||||
this.name = name;
|
||||
this.create = create;
|
||||
}
|
||||
|
||||
htmlID(): string {
|
||||
const name = this.name.endsWith('.exe') ? this.name.slice(0, -('.exe'.length)) : this.name;
|
||||
return "create-program-" + name;
|
||||
}
|
||||
}
|
75
src/Programs/ProgramHelpers.js
Normal file
75
src/Programs/ProgramHelpers.js
Normal file
@ -0,0 +1,75 @@
|
||||
import { Programs } from "./Programs";
|
||||
|
||||
import { CONSTANTS } from "../Constants";
|
||||
import { Player } from "../Player";
|
||||
import { createElement } from "../../utils/uiHelpers/createElement";
|
||||
|
||||
// this has the same key as 'Programs', not program names
|
||||
const aLinks = {};
|
||||
|
||||
function displayCreateProgramContent() {
|
||||
for(const key in aLinks) {
|
||||
const p = Programs[key]
|
||||
aLinks[key].style.display = "none";
|
||||
if(!Player.hasProgram(p.name) && p.create.req(Player)){
|
||||
aLinks[key].style.display = "inline-block";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Returns the number of programs that are currently available to be created
|
||||
function getNumAvailableCreateProgram() {
|
||||
var count = 0;
|
||||
for (const key in Programs) {
|
||||
// Non-creatable program
|
||||
if (Programs[key].create == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Already has program
|
||||
if (Player.hasProgram(Programs[key].name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Does not meet requirements
|
||||
if (!Programs[key].create.req(Player)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
if (Player.firstProgramAvailable === false && count > 0) {
|
||||
Player.firstProgramAvailable = true;
|
||||
document.getElementById("create-program-tab").style.display = "list-item";
|
||||
document.getElementById("hacking-menu-header").click();
|
||||
document.getElementById("hacking-menu-header").click();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
function initCreateProgramButtons() {
|
||||
const createProgramList = document.getElementById("create-program-list");
|
||||
for (const key in Programs) {
|
||||
if(Programs[key].create === null) {
|
||||
continue;
|
||||
}
|
||||
const elem = createElement("a", {
|
||||
class: "a-link-button", id: Programs[key].htmlID(), innerText: Programs[key].name,
|
||||
tooltip: Programs[key].create.tooltip,
|
||||
});
|
||||
aLinks[key] = elem;
|
||||
createProgramList.appendChild(elem);
|
||||
}
|
||||
|
||||
for (const key in aLinks) {
|
||||
const p = Programs[key]
|
||||
aLinks[key].addEventListener("click", function() {
|
||||
Player.startCreateProgramWork(p.name, p.create.time, p.create.level);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export {displayCreateProgramContent, getNumAvailableCreateProgram,
|
||||
initCreateProgramButtons};
|
10
src/Programs/Programs.ts
Normal file
10
src/Programs/Programs.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { Program } from "./Program";
|
||||
import { IProgramCreationParams,
|
||||
programsMetadata } from "./data/programsMetadata";
|
||||
import { IMap } from "../types";
|
||||
|
||||
export const Programs: IMap<Program> = {};
|
||||
|
||||
for (const params of programsMetadata) {
|
||||
Programs[params.key] = new Program(params.name, params.create);
|
||||
}
|
139
src/Programs/data/ProgramsMetadata.ts
Normal file
139
src/Programs/data/ProgramsMetadata.ts
Normal file
@ -0,0 +1,139 @@
|
||||
import { IPlayer,
|
||||
IProgramCreate } from "../Program";
|
||||
import { CONSTANTS } from "../../Constants";
|
||||
|
||||
function requireHackingLevel(lvl: number) {
|
||||
return function(p: IPlayer) {
|
||||
return p.hacking_skill >= lvl;
|
||||
}
|
||||
}
|
||||
|
||||
function bitFlumeRequirements() {
|
||||
return function(p: IPlayer) {
|
||||
return p.sourceFiles.length > 0 && p.hacking_skill >= 1;
|
||||
}
|
||||
}
|
||||
|
||||
export interface IProgramCreationParams {
|
||||
key: string;
|
||||
name: string;
|
||||
create: IProgramCreate | null;
|
||||
}
|
||||
|
||||
export const programsMetadata: IProgramCreationParams[] = [
|
||||
{
|
||||
key: "NukeProgram",
|
||||
name: "NUKE.exe",
|
||||
create: {
|
||||
level: 1,
|
||||
tooltip: "This virus is used to gain root access to a machine if enough ports are opened.",
|
||||
req: requireHackingLevel(1),
|
||||
time: CONSTANTS.MillisecondsPerFiveMinutes,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "BruteSSHProgram",
|
||||
name: "BruteSSH.exe",
|
||||
create: {
|
||||
level: 50,
|
||||
tooltip: "This program executes a brute force attack that opens SSH ports",
|
||||
req: requireHackingLevel(50),
|
||||
time: CONSTANTS.MillisecondsPerFiveMinutes * 2,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "FTPCrackProgram",
|
||||
name: "FTPCrack.exe",
|
||||
create: {
|
||||
level: 100,
|
||||
tooltip: "This program cracks open FTP ports",
|
||||
req: requireHackingLevel(100),
|
||||
time: CONSTANTS.MillisecondsPerHalfHour,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "RelaySMTPProgram",
|
||||
name: "relaySMTP.exe",
|
||||
create: {
|
||||
level: 250,
|
||||
tooltip: "This program opens SMTP ports by redirecting data",
|
||||
req: requireHackingLevel(250),
|
||||
time: CONSTANTS.MillisecondsPer2Hours,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "HTTPWormProgram",
|
||||
name: "HTTPWorm.exe",
|
||||
create: {
|
||||
level: 500,
|
||||
tooltip: "This virus opens up HTTP ports",
|
||||
req: requireHackingLevel(500),
|
||||
time: CONSTANTS.MillisecondsPer4Hours,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "SQLInjectProgram",
|
||||
name: "SQLInject.exe",
|
||||
create: {
|
||||
level: 750,
|
||||
tooltip: "This virus opens SQL ports",
|
||||
req: requireHackingLevel(750),
|
||||
time: CONSTANTS.MillisecondsPer8Hours,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "DeepscanV1",
|
||||
name: "DeepscanV1.exe",
|
||||
create: {
|
||||
level: 75,
|
||||
tooltip: "This program allows you to use the scan-analyze command with a depth up to 5",
|
||||
req: requireHackingLevel(75),
|
||||
time: CONSTANTS.MillisecondsPerQuarterHour,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "DeepscanV2",
|
||||
name: "DeepscanV2.exe",
|
||||
create: {
|
||||
level: 400,
|
||||
tooltip: "This program allows you to use the scan-analyze command with a depth up to 10",
|
||||
req: requireHackingLevel(400),
|
||||
time: CONSTANTS.MillisecondsPer2Hours,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "ServerProfiler",
|
||||
name: "ServerProfiler.exe",
|
||||
create: {
|
||||
level: 75,
|
||||
tooltip: "This program is used to display hacking and Netscript-related information about servers",
|
||||
req: requireHackingLevel(75),
|
||||
time: CONSTANTS.MillisecondsPerHalfHour,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "AutoLink",
|
||||
name: "AutoLink.exe",
|
||||
create: {
|
||||
level: 25,
|
||||
tooltip: "This program allows you to directly connect to other servers through the 'scan-analyze' command",
|
||||
req: requireHackingLevel(25),
|
||||
time: CONSTANTS.MillisecondsPerQuarterHour,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "BitFlume",
|
||||
name: "b1t_flum3.exe",
|
||||
create: {
|
||||
level: 1,
|
||||
tooltip: "This program creates a portal to the BitNode Nexus (allows you to restart and switch BitNodes)",
|
||||
req: bitFlumeRequirements(),
|
||||
time: CONSTANTS.MillisecondsPerFiveMinutes / 20,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "Flight",
|
||||
name: "fl1ght.exe",
|
||||
create: null,
|
||||
},
|
||||
];
|
@ -1,17 +1,21 @@
|
||||
import {BitNodeMultipliers} from "./BitNodeMultipliers";
|
||||
import {CodingContract, ContractTypes} from "./CodingContracts";
|
||||
import {CONSTANTS} from "./Constants";
|
||||
import {Script, isScriptFilename} from "./Script";
|
||||
import {Programs} from "./CreateProgram";
|
||||
import {Player} from "./Player";
|
||||
import {SpecialServerIps} from "./SpecialServerIps";
|
||||
import {TextFile} from "./TextFile";
|
||||
import {getRandomInt} from "../utils/helpers/getRandomInt";
|
||||
import {createRandomIp, ipExists} from "../utils/IPAddress";
|
||||
import {serverMetadata} from "./data/servers";
|
||||
import {Reviver, Generic_toJSON,
|
||||
Generic_fromJSON} from "../utils/JSONReviver";
|
||||
import {isValidIPAddress} from "../utils/helpers/isValidIPAddress";
|
||||
import { BitNodeMultipliers } from "./BitNodeMultipliers";
|
||||
import { CodingContract,
|
||||
ContractTypes } from "./CodingContracts";
|
||||
import { CONSTANTS } from "./Constants";
|
||||
import { Script,
|
||||
isScriptFilename } from "./Script";
|
||||
import { Player } from "./Player";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import { SpecialServerIps } from "./SpecialServerIps";
|
||||
import { TextFile } from "./TextFile";
|
||||
import { getRandomInt } from "../utils/helpers/getRandomInt";
|
||||
import { createRandomIp,
|
||||
ipExists } from "../utils/IPAddress";
|
||||
import { serverMetadata } from "./data/servers";
|
||||
import { Reviver,
|
||||
Generic_toJSON,
|
||||
Generic_fromJSON} from "../utils/JSONReviver";
|
||||
import {isValidIPAddress} from "../utils/helpers/isValidIPAddress";
|
||||
|
||||
function Server(params={ip:createRandomIp(), hostname:""}) {
|
||||
/* Properties */
|
||||
|
@ -5,11 +5,11 @@ import {substituteAliases, printAliases,
|
||||
import {CodingContract, CodingContractResult,
|
||||
CodingContractRewardType} from "./CodingContracts";
|
||||
import {CONSTANTS} from "./Constants";
|
||||
import {Programs} from "./CreateProgram";
|
||||
import {executeDarkwebTerminalCommand,
|
||||
checkIfConnectedToDarkweb,
|
||||
DarkWebItems} from "./DarkWeb";
|
||||
import {Engine} from "./engine";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import { executeDarkwebTerminalCommand,
|
||||
checkIfConnectedToDarkweb } from "./DarkWeb/DarkWeb";
|
||||
import { DarkWebItems } from "./DarkWeb/DarkWebItems";
|
||||
import {Engine} from "./engine";
|
||||
import {FconfSettings, parseFconfSettings,
|
||||
createFconf} from "./Fconf";
|
||||
import {calculateHackingChance,
|
||||
|
@ -1,11 +1,12 @@
|
||||
import {dialogBoxCreate} from "../utils/DialogBox";
|
||||
import {gameOptionsBoxOpen, gameOptionsBoxClose} from "../utils/GameOptions";
|
||||
import { dialogBoxCreate} from "../utils/DialogBox";
|
||||
import { gameOptionsBoxClose,
|
||||
gameOptionsBoxOpen} from "../utils/GameOptions";
|
||||
import { getRandomInt } from "../utils/helpers/getRandomInt";
|
||||
import {removeChildrenFromElement} from "../utils/uiHelpers/removeChildrenFromElement";
|
||||
import {clearEventListeners} from "../utils/uiHelpers/clearEventListeners";
|
||||
import {createElement} from "../utils/uiHelpers/createElement";
|
||||
import {exceptionAlert} from "../utils/helpers/exceptionAlert";
|
||||
import {removeLoadingScreen} from "../utils/uiHelpers/removeLoadingScreen";
|
||||
import { removeChildrenFromElement } from "../utils/uiHelpers/removeChildrenFromElement";
|
||||
import { clearEventListeners } from "../utils/uiHelpers/clearEventListeners";
|
||||
import { createElement } from "../utils/uiHelpers/createElement";
|
||||
import { exceptionAlert } from "../utils/helpers/exceptionAlert";
|
||||
import { removeLoadingScreen } from "../utils/uiHelpers/removeLoadingScreen";
|
||||
|
||||
import {numeralWrapper} from "./ui/numeralFormat";
|
||||
|
||||
@ -29,10 +30,8 @@ import {CompanyPositions} from "./Company/CompanyP
|
||||
import {initCompanies} from "./Company/Companies";
|
||||
import { Corporation } from "./Corporation/Corporation";
|
||||
import {CONSTANTS} from "./Constants";
|
||||
import {displayCreateProgramContent,
|
||||
getNumAvailableCreateProgram,
|
||||
initCreateProgramButtons,
|
||||
Programs} from "./CreateProgram";
|
||||
|
||||
|
||||
import {createDevMenu, closeDevMenu} from "./DevMenu";
|
||||
import { Factions, initFactions } from "./Faction/Factions";
|
||||
import { displayFactionContent, joinFaction,
|
||||
@ -55,6 +54,10 @@ import {updateOnlineScriptTimes,
|
||||
import {Player} from "./Player";
|
||||
import {prestigeAugmentation,
|
||||
prestigeSourceFile} from "./Prestige";
|
||||
import { Programs } from "./Programs/Programs";
|
||||
import { displayCreateProgramContent,
|
||||
getNumAvailableCreateProgram,
|
||||
initCreateProgramButtons } from "./Programs/ProgramHelpers";
|
||||
import {redPillFlag, hackWorldDaemon} from "./RedPill";
|
||||
import {saveObject, loadGame} from "./SaveObject";
|
||||
import {loadAllRunningScripts, scriptEditorInit,
|
||||
|
Loading…
Reference in New Issue
Block a user