mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-10 09:43:54 +01:00
Merge pull request #264 from hydroflame/streamline-darkweb
streamline darkweb
This commit is contained in:
commit
856f7a0cd2
189
src/DarkWeb.js
189
src/DarkWeb.js
@ -19,7 +19,6 @@ function checkIfConnectedToDarkweb() {
|
|||||||
"to purchase an item");
|
"to purchase an item");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Handler for dark web commands. The terminal's executeCommand() function will pass
|
//Handler for dark web commands. The terminal's executeCommand() function will pass
|
||||||
@ -49,150 +48,68 @@ function executeDarkwebTerminalCommand(commandArray) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function listAllDarkwebItems() {
|
function listAllDarkwebItems() {
|
||||||
for (var item in DarkWebItems) {
|
for(const key in DarkWebItems) {
|
||||||
if (DarkWebItems.hasOwnProperty(item)) {
|
const item = DarkWebItems[key];
|
||||||
var item = DarkWebItems[item];
|
post(item.toString());
|
||||||
//Convert string using toLocaleString
|
|
||||||
var split = item.split(" - ");
|
|
||||||
if (split.length == 3 && split[1].charAt(0) == '$') {
|
|
||||||
split[1] = split[1].slice(1);
|
|
||||||
split[1] = split[1].replace(/,/g, '');
|
|
||||||
var price = parseFloat(split[1]);
|
|
||||||
if (isNaN(price)) {
|
|
||||||
post(item);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
price = formatNumber(price, 0);
|
|
||||||
split[1] = "$" + price.toString();
|
|
||||||
post(split.join(" - "));
|
|
||||||
} else {
|
|
||||||
post(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var priceString = split[1];
|
|
||||||
//Check for errors
|
|
||||||
if (priceString.length == 0 || priceString.charAt(0) != '$') {
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
//Remove dollar sign and commas
|
|
||||||
priceString = priceString.slice(1);
|
|
||||||
priceString = priceString.replace(/,/g, '');
|
|
||||||
|
|
||||||
//Convert string to numeric
|
|
||||||
var price = parseFloat(priceString);
|
|
||||||
if (isNaN(price)) {return -1;}
|
|
||||||
else {return price;}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function buyDarkwebItem(itemName) {
|
function buyDarkwebItem(itemName) {
|
||||||
if (itemName.toLowerCase() == Programs.BruteSSHProgram.toLowerCase()) {
|
itemName = itemName.toLowerCase();
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.BruteSSHProgram);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
// find the program that matches, if any
|
||||||
Player.loseMoney(price);
|
let item = null;
|
||||||
Player.getHomeComputer().programs.push(Programs.BruteSSHProgram);
|
for(const key in DarkWebItems) {
|
||||||
post("You have purchased the BruteSSH.exe program. The new program " +
|
const i = DarkWebItems[key];
|
||||||
"can be found on your home computer.");
|
if(i.program.toLowerCase() == itemName) {
|
||||||
} else {
|
item = i;
|
||||||
post("Not enough money to purchase " + itemName);
|
|
||||||
}
|
}
|
||||||
} else if (itemName.toLowerCase() == Programs.FTPCrackProgram.toLowerCase()) {
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.FTPCrackProgram);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.FTPCrackProgram);
|
|
||||||
post("You have purchased the FTPCrack.exe program. The new program " +
|
|
||||||
"can be found on your home computer.");
|
|
||||||
} else {
|
|
||||||
post("Not enough money to purchase " + itemName);
|
|
||||||
}
|
|
||||||
} else if (itemName.toLowerCase() == Programs.RelaySMTPProgram.toLowerCase()) {
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.RelaySMTPProgram);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.RelaySMTPProgram);
|
|
||||||
post("You have purchased the relaySMTP.exe program. The new program " +
|
|
||||||
"can be found on your home computer.");
|
|
||||||
} else {
|
|
||||||
post("Not enough money to purchase " + itemName);
|
|
||||||
}
|
|
||||||
} else if (itemName.toLowerCase() == Programs.HTTPWormProgram.toLowerCase()) {
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.HTTPWormProgram);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.HTTPWormProgram);
|
|
||||||
post("You have purchased the HTTPWorm.exe program. The new program " +
|
|
||||||
"can be found on your home computer.");
|
|
||||||
} else {
|
|
||||||
post("Not enough money to purchase " + itemName);
|
|
||||||
}
|
|
||||||
} else if (itemName.toLowerCase() == Programs.SQLInjectProgram.toLowerCase()) {
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.SQLInjectProgram);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.SQLInjectProgram);
|
|
||||||
post("You have purchased the SQLInject.exe program. The new program " +
|
|
||||||
"can be found on your home computer.");
|
|
||||||
} else {
|
|
||||||
post("Not enough money to purchase " + itemName);
|
|
||||||
}
|
|
||||||
} else if (itemName.toLowerCase() == Programs.DeepscanV1.toLowerCase()) {
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV1Program);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.DeepscanV1);
|
|
||||||
post("You have purchased the DeepscanV1.exe program. The new program " +
|
|
||||||
"can be found on your home computer.");
|
|
||||||
} else {
|
|
||||||
post("Not enough money to purchase " + itemName);
|
|
||||||
}
|
|
||||||
} else if (itemName.toLowerCase() == Programs.DeepscanV2.toLowerCase()) {
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV2Program);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.DeepscanV2);
|
|
||||||
post("You have purchased the DeepscanV2.exe program. The new program " +
|
|
||||||
"can be found on your home computer.");
|
|
||||||
} else {
|
|
||||||
post("Not enough money to purchase " + itemName);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
post("Unrecognized item");
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function parseDarkwebItemPrice(itemDesc) {
|
// return if invalid
|
||||||
var split = itemDesc.split(" - ");
|
if(item === null) {
|
||||||
if (split.length == 3) {
|
post("Unrecognized item: "+itemName);
|
||||||
var priceString = split[1];
|
return;
|
||||||
//Check for errors
|
|
||||||
if (priceString.length == 0 || priceString.charAt(0) != '$') {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
//Remove dollar sign and commas
|
|
||||||
priceString = priceString.slice(1);
|
|
||||||
priceString = priceString.replace(/,/g, '');
|
|
||||||
|
|
||||||
//Convert string to numeric
|
|
||||||
var price = parseFloat(priceString);
|
|
||||||
if (isNaN(price)) {return -1;}
|
|
||||||
else {return price;}
|
|
||||||
} else {
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return if the player already has it.
|
||||||
|
if(Player.hasProgram(item.program)) {
|
||||||
|
post('You already have the '+item.program+' program');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// return if the player doesn't have enough money
|
||||||
|
if(Player.money.lt(item.price)) {
|
||||||
|
post("Not enough money to purchase " + item.program);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.');
|
||||||
}
|
}
|
||||||
|
|
||||||
let DarkWebItems = {
|
function DarkWebItem(program, price, description) {
|
||||||
BruteSSHProgram: "BruteSSH.exe - $500,000 - Opens up SSH Ports",
|
this.program = program;
|
||||||
FTPCrackProgram: "FTPCrack.exe - $1,500,000 - Opens up FTP Ports",
|
this.price = price;
|
||||||
RelaySMTPProgram: "relaySMTP.exe - $5,000,000 - Opens up SMTP Ports",
|
this.description = description;
|
||||||
HTTPWormProgram: "HTTPWorm.exe - $30,000,000 - Opens up HTTP Ports",
|
|
||||||
SQLInjectProgram: "SQLInject.exe - $250,000,000 - Opens up SQL Ports",
|
|
||||||
DeepScanV1Program: "DeepscanV1.exe - $500,000 - Enables 'scan-analyze' with a depth up to 5",
|
|
||||||
DeepScanV2Program: "DeepscanV2.exe - $25,000,000 - Enables 'scan-analyze' with a depth up to 10",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export {checkIfConnectedToDarkweb, executeDarkwebTerminalCommand,
|
// formats the item for the terminal (eg. "BruteSSH.exe - $500,000 - Opens up SSH Ports")
|
||||||
listAllDarkwebItems, buyDarkwebItem, parseDarkwebItemPrice,
|
DarkWebItem.prototype.toString = function() {
|
||||||
DarkWebItems};
|
return [this.program, "$"+formatNumber(this.price), this.description].join(' - ');
|
||||||
|
}
|
||||||
|
|
||||||
|
const DarkWebItems = {
|
||||||
|
BruteSSHProgram: new DarkWebItem(Programs.BruteSSHProgram, 500000, "Opens up SSH Ports"),
|
||||||
|
FTPCrackProgram: new DarkWebItem(Programs.FTPCrackProgram, 1500000, "Opens up FTP Ports"),
|
||||||
|
RelaySMTPProgram: new DarkWebItem(Programs.RelaySMTPProgram, 5000000, "Opens up SMTP Ports"),
|
||||||
|
HTTPWormProgram: new DarkWebItem(Programs.HTTPWormProgram, 30000000, "Opens up HTTP Ports"),
|
||||||
|
SQLInjectProgram: new DarkWebItem(Programs.SQLInjectProgram, 250000000, "Opens up SQL Ports"),
|
||||||
|
DeepscanV1: new DarkWebItem(Programs.DeepscanV1, 500000, "Enables 'scan-analyze' with a depth up to 5"),
|
||||||
|
DeepscanV2: new DarkWebItem(Programs.DeepscanV2, 25000000, "Enables 'scan-analyze' with a depth up to 10"),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export {checkIfConnectedToDarkweb, executeDarkwebTerminalCommand, DarkWebItems};
|
||||||
|
@ -12,7 +12,7 @@ import {Companies, Company, CompanyPosition,
|
|||||||
CompanyPositions, companyExists} from "./Company.js";
|
CompanyPositions, companyExists} from "./Company.js";
|
||||||
import {CONSTANTS} from "./Constants.js";
|
import {CONSTANTS} from "./Constants.js";
|
||||||
import {Programs} from "./CreateProgram.js";
|
import {Programs} from "./CreateProgram.js";
|
||||||
import {parseDarkwebItemPrice, DarkWebItems} from "./DarkWeb.js";
|
import {DarkWebItems} from "./DarkWeb.js";
|
||||||
import {Engine} from "./engine.js";
|
import {Engine} from "./engine.js";
|
||||||
import {AllGangs} from "./Gang.js";
|
import {AllGangs} from "./Gang.js";
|
||||||
import {Factions, Faction, joinFaction,
|
import {Factions, Faction, joinFaction,
|
||||||
@ -2333,105 +2333,40 @@ function NetscriptFunctions(workerScript) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SpecialServerIps["Darkweb Server"] == null) {
|
if (SpecialServerIps["Darkweb Server"] == null) {
|
||||||
workerScript.scriptRef.log("ERROR: You do not have TOR router. purchaseProgram() failed.");
|
workerScript.scriptRef.log("ERROR: You do not have the TOR router. purchaseProgram() failed.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(programName.toLowerCase()) {
|
programName = programName.toLowerCase();
|
||||||
case Programs.BruteSSHProgram.toLowerCase():
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.BruteSSHProgram);
|
let item = null;
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
for(const key in DarkWebItems) {
|
||||||
Player.loseMoney(price);
|
const i = DarkWebItems[key];
|
||||||
Player.getHomeComputer().programs.push(Programs.BruteSSHProgram);
|
if(i.program.toLowerCase() == programName) {
|
||||||
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
item = i;
|
||||||
workerScript.scriptRef.log("You have purchased the BruteSSH.exe program. The new program can be found on your home computer.");
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + programName);
|
if(item == null) {
|
||||||
return false;
|
workerScript.scriptRef.log("ERROR: Invalid program name passed into purchaseProgram().");
|
||||||
}
|
return false;
|
||||||
return true;
|
}
|
||||||
case Programs.FTPCrackProgram.toLowerCase():
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.FTPCrackProgram);
|
if(Player.money.lt(item.price)) {
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
workerScript.scriptRef.log("Not enough money to purchase " + item.program);
|
||||||
Player.loseMoney(price);
|
return false;
|
||||||
Player.getHomeComputer().programs.push(Programs.FTPCrackProgram);
|
}
|
||||||
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
|
||||||
workerScript.scriptRef.log("You have purchased the FTPCrack.exe program. The new program can be found on your home computer.");
|
|
||||||
}
|
if(Player.hasProgram(item.program)) {
|
||||||
} else {
|
workerScript.scriptRef.log('You already have the '+item.program+' program');
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + programName);
|
return true;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
return true;
|
Player.loseMoney(item.price);
|
||||||
case Programs.RelaySMTPProgram.toLowerCase():
|
Player.getHomeComputer().programs.push(item.program);
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.RelaySMTPProgram);
|
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
workerScript.scriptRef.log("You have purchased the "+item.program+" program. The new program can be found on your home computer.");
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.RelaySMTPProgram);
|
|
||||||
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
|
||||||
workerScript.scriptRef.log("You have purchased the relaySMTP.exe program. The new program can be found on your home computer.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + programName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
case Programs.HTTPWormProgram.toLowerCase():
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.HTTPWormProgram);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.HTTPWormProgram);
|
|
||||||
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
|
||||||
workerScript.scriptRef.log("You have purchased the HTTPWorm.exe program. The new program can be found on your home computer.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + programName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
case Programs.SQLInjectProgram.toLowerCase():
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.SQLInjectProgram);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.SQLInjectProgram);
|
|
||||||
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
|
||||||
workerScript.scriptRef.log("You have purchased the SQLInject.exe program. The new program can be found on your home computer.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + programName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
case Programs.DeepscanV1.toLowerCase():
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV1Program);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.DeepscanV1);
|
|
||||||
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
|
||||||
workerScript.scriptRef.log("You have purchased the DeepscanV1.exe program. The new program can be found on your home computer.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + programName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
case Programs.DeepscanV2.toLowerCase():
|
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV2Program);
|
|
||||||
if (price > 0 && Player.money.gt(price)) {
|
|
||||||
Player.loseMoney(price);
|
|
||||||
Player.getHomeComputer().programs.push(Programs.DeepscanV2);
|
|
||||||
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
|
|
||||||
workerScript.scriptRef.log("You have purchased the DeepscanV2.exe program. The new program can be found on your home computer.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + programName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
workerScript.scriptRef.log("ERROR: Invalid program passed into purchaseProgram().");
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user