mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-16 22:38:34 +02:00
work on making the netscript api tighter
This commit is contained in:
@@ -213,7 +213,7 @@ export class Action implements IAction {
|
||||
return 1;
|
||||
}
|
||||
|
||||
getEstSuccessChance(inst: IBladeburner): number[] {
|
||||
getEstSuccessChance(inst: IBladeburner): [number, number] {
|
||||
function clamp(x: number): number {
|
||||
return Math.max(0, Math.min(x, 1));
|
||||
}
|
||||
|
||||
@@ -2126,7 +2126,7 @@ export class Bladeburner implements IBladeburner {
|
||||
type: string,
|
||||
name: string,
|
||||
workerScript: WorkerScript,
|
||||
): number[] {
|
||||
): [number, number] {
|
||||
const errorLogText = `Invalid action: type='${type}' name='${name}'`;
|
||||
const actionId = this.getActionIdFromTypeAndName(type, name);
|
||||
if (actionId == null) {
|
||||
|
||||
@@ -62,7 +62,7 @@ export interface IAction {
|
||||
getActionTypeSkillSuccessBonus(inst: IBladeburner): number;
|
||||
getChaosCompetencePenalty(inst: IBladeburner, params: ISuccessChanceParams): number;
|
||||
getChaosDifficultyBonus(inst: IBladeburner): number;
|
||||
getEstSuccessChance(inst: IBladeburner): number[];
|
||||
getEstSuccessChance(inst: IBladeburner): [number, number];
|
||||
getSuccessChance(inst: IBladeburner, params: ISuccessChanceParams): number;
|
||||
getSuccessesNeededForNextLevel(baseSuccessesPerLevel: number): number;
|
||||
setMaxLevel(baseSuccessesPerLevel: number): void;
|
||||
|
||||
@@ -76,7 +76,7 @@ export interface IBladeburner {
|
||||
type: string,
|
||||
name: string,
|
||||
workerScript: WorkerScript,
|
||||
): number[];
|
||||
): [number, number];
|
||||
getActionCountRemainingNetscriptFn(type: string, name: string, workerScript: WorkerScript): number;
|
||||
getSkillLevelNetscriptFn(skillName: string, workerScript: WorkerScript): number;
|
||||
getSkillUpgradeCostNetscriptFn(skillName: string, workerScript: WorkerScript): number;
|
||||
|
||||
@@ -165,6 +165,8 @@ export const RamCosts: IMap<any> = {
|
||||
read: 0,
|
||||
peek: 0,
|
||||
clear: 0,
|
||||
writePort: 0,
|
||||
readPort: 0,
|
||||
getPortHandle: 0,
|
||||
rm: RamCostConstants.ScriptReadWriteRamCost,
|
||||
scriptRunning: RamCostConstants.ScriptArbScriptRamCost,
|
||||
@@ -196,7 +198,7 @@ export const RamCosts: IMap<any> = {
|
||||
installBackdoor: RamCostConstants.ScriptSingularityFn1RamCost,
|
||||
getStats: RamCostConstants.ScriptSingularityFn1RamCost / 4,
|
||||
getCharacterInformation: RamCostConstants.ScriptSingularityFn1RamCost / 4,
|
||||
getPlayer: RamCostConstants.ScriptSingularityFn1RamCost / 4,
|
||||
getPlayer: RamCostConstants.ScriptSingularityFn5RamCost,
|
||||
hospitalize: RamCostConstants.ScriptSingularityFn1RamCost / 4,
|
||||
isBusy: RamCostConstants.ScriptSingularityFn1RamCost / 4,
|
||||
stopAction: RamCostConstants.ScriptSingularityFn1RamCost / 2,
|
||||
|
||||
@@ -61,21 +61,12 @@ import { isString } from "./utils/helpers/isString";
|
||||
import { BaseServer } from "./Server/BaseServer";
|
||||
import { NetscriptGang } from "./NetscriptFunctions/Gang";
|
||||
import { NetscriptSleeve } from "./NetscriptFunctions/Sleeve";
|
||||
import { INetscriptExtra, NetscriptExtra } from "./NetscriptFunctions/Extra";
|
||||
import { NetscriptExtra } from "./NetscriptFunctions/Extra";
|
||||
import { NetscriptHacknet } from "./NetscriptFunctions/Hacknet";
|
||||
import {
|
||||
Bladeburner as IBladeburner,
|
||||
TIX,
|
||||
CodingContract as ICodingContract,
|
||||
Gang as IGang,
|
||||
Hacknet as IHacknet,
|
||||
Sleeve as ISleeve,
|
||||
Singularity as ISingularity,
|
||||
Formulas as IFormulas,
|
||||
} from "./ScriptEditor/NetscriptDefinitions";
|
||||
import { NS as INS } from "./ScriptEditor/NetscriptDefinitions";
|
||||
import { NetscriptBladeburner } from "./NetscriptFunctions/Bladeburner";
|
||||
import { NetscriptCodingContract } from "./NetscriptFunctions/CodingContract";
|
||||
import { INetscriptCorporation, NetscriptCorporation } from "./NetscriptFunctions/Corporation";
|
||||
import { NetscriptCorporation } from "./NetscriptFunctions/Corporation";
|
||||
import { NetscriptFormulas } from "./NetscriptFunctions/Formulas";
|
||||
import { NetscriptSingularity } from "./NetscriptFunctions/Singularity";
|
||||
import { NetscriptStockMarket } from "./NetscriptFunctions/StockMarket";
|
||||
@@ -87,19 +78,11 @@ import { SnackbarEvents } from "./ui/React/Snackbar";
|
||||
|
||||
import { Flags } from "./NetscriptFunctions/Flags";
|
||||
|
||||
interface NS extends INetscriptExtra, ISingularity {
|
||||
interface NS extends INS {
|
||||
[key: string]: any;
|
||||
hacknet: IHacknet;
|
||||
gang: IGang;
|
||||
sleeve: ISleeve;
|
||||
bladeburner: IBladeburner;
|
||||
codingcontract: ICodingContract;
|
||||
corporation: INetscriptCorporation;
|
||||
formulas: IFormulas;
|
||||
stock: TIX;
|
||||
}
|
||||
|
||||
function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
const updateDynamicRam = function (fnName: string, ramCost: number): void {
|
||||
if (workerScript.dynamicLoadedFns[fnName]) {
|
||||
return;
|
||||
@@ -448,10 +431,20 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
const codingcontract = NetscriptCodingContract(Player, workerScript, helper);
|
||||
const corporation = NetscriptCorporation(Player, workerScript, helper);
|
||||
const formulas = NetscriptFormulas(Player, workerScript, helper);
|
||||
const augmentations = NetscriptSingularity(Player, workerScript, helper);
|
||||
const singularity = NetscriptSingularity(Player, workerScript, helper);
|
||||
const stockmarket = NetscriptStockMarket(Player, workerScript, helper);
|
||||
|
||||
const functions = {
|
||||
const base: INS = {
|
||||
...singularity,
|
||||
|
||||
gang: gang,
|
||||
bladeburner: bladeburner,
|
||||
codingcontract: codingcontract,
|
||||
sleeve: sleeve,
|
||||
|
||||
formulas: formulas,
|
||||
stock: stockmarket,
|
||||
args: workerScript.args,
|
||||
hacknet: hacknet,
|
||||
sprintf: sprintf,
|
||||
vsprintf: vsprintf,
|
||||
@@ -990,7 +983,7 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
workerScript.log("exit", "Failed. This is a bug. Report to dev.");
|
||||
}
|
||||
},
|
||||
scp: function (scriptname: any, hostname1: any, hostname2: any): Promise<boolean> {
|
||||
scp: async function (scriptname: any, hostname1: any, hostname2: any): Promise<boolean> {
|
||||
updateDynamicRam("scp", getRamCost("scp"));
|
||||
if (arguments.length !== 2 && arguments.length !== 3) {
|
||||
throw makeRuntimeErrorMsg("scp", "Takes 2 or 3 arguments");
|
||||
@@ -998,8 +991,8 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
if (scriptname && scriptname.constructor === Array) {
|
||||
// Recursively call scp on all elements of array
|
||||
let res = false;
|
||||
scriptname.forEach(function (script) {
|
||||
if (NetscriptFunctions(workerScript).scp(script, hostname1, hostname2)) {
|
||||
await scriptname.forEach(async function (script) {
|
||||
if (await NetscriptFunctions(workerScript).scp(script, hostname1, hostname2)) {
|
||||
res = true;
|
||||
}
|
||||
});
|
||||
@@ -1224,14 +1217,6 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
const server = safeGetServer(hostname, "hasRootAccess");
|
||||
return server.hasAdminRights;
|
||||
},
|
||||
getIp: function (): any {
|
||||
updateDynamicRam("getIp", getRamCost("getIp"));
|
||||
const scriptServer = GetServer(workerScript.hostname);
|
||||
if (scriptServer == null) {
|
||||
throw makeRuntimeErrorMsg("getIp", "Could not find server. This is a bug. Report to dev.");
|
||||
}
|
||||
return scriptServer.hostname;
|
||||
},
|
||||
getHostname: function (): any {
|
||||
updateDynamicRam("getHostname", getRamCost("getHostname"));
|
||||
const scriptServer = GetServer(workerScript.hostname);
|
||||
@@ -1485,7 +1470,6 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
return getRunningScript(fn, hostname, "isRunning", scriptArgs) != null;
|
||||
}
|
||||
},
|
||||
stock: stockmarket,
|
||||
getPurchasedServerLimit: function (): any {
|
||||
updateDynamicRam("getPurchasedServerLimit", getRamCost("getPurchasedServerLimit"));
|
||||
|
||||
@@ -1723,7 +1707,7 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
if (iport == null || !(iport instanceof Object)) {
|
||||
throw makeRuntimeErrorMsg("tryWrite", `Could not find port: ${port}. This is a bug. Report to dev.`);
|
||||
}
|
||||
return iport.tryWrite(data);
|
||||
return Promise.resolve(iport.tryWrite(data));
|
||||
} else {
|
||||
throw makeRuntimeErrorMsg("tryWrite", `Invalid argument: ${port}`);
|
||||
}
|
||||
@@ -1796,25 +1780,11 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
const x = iport.peek();
|
||||
return x;
|
||||
},
|
||||
clear: function (port: any): any {
|
||||
clear: function (file: any): any {
|
||||
updateDynamicRam("clear", getRamCost("clear"));
|
||||
if (!isNaN(port)) {
|
||||
// Clear port
|
||||
port = Math.round(port);
|
||||
if (port < 1 || port > CONSTANTS.NumNetscriptPorts) {
|
||||
throw makeRuntimeErrorMsg(
|
||||
"clear",
|
||||
`Trying to clear invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid`,
|
||||
);
|
||||
}
|
||||
const iport = NetscriptPorts[port - 1];
|
||||
if (iport == null || !(iport instanceof Object)) {
|
||||
throw makeRuntimeErrorMsg("clear", `Could not find port: ${port}. This is a bug. Report to dev.`);
|
||||
}
|
||||
return iport.clear();
|
||||
} else if (isString(port)) {
|
||||
if (isString(file)) {
|
||||
// Clear text file
|
||||
const fn = port;
|
||||
const fn = file;
|
||||
const server = GetServer(workerScript.hostname);
|
||||
if (server == null) {
|
||||
throw makeRuntimeErrorMsg("clear", "Error getting Server. This is a bug. Report to dev.");
|
||||
@@ -1824,10 +1794,25 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
txtFile.write("");
|
||||
}
|
||||
} else {
|
||||
throw makeRuntimeErrorMsg("clear", `Invalid argument: ${port}`);
|
||||
throw makeRuntimeErrorMsg("clear", `Invalid argument: ${file}`);
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
clearPort: function (port: any): any {
|
||||
// Clear port
|
||||
port = Math.round(port);
|
||||
if (port < 1 || port > CONSTANTS.NumNetscriptPorts) {
|
||||
throw makeRuntimeErrorMsg(
|
||||
"clear",
|
||||
`Trying to clear invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid`,
|
||||
);
|
||||
}
|
||||
const iport = NetscriptPorts[port - 1];
|
||||
if (iport == null || !(iport instanceof Object)) {
|
||||
throw makeRuntimeErrorMsg("clear", `Could not find port: ${port}. This is a bug. Report to dev.`);
|
||||
}
|
||||
return iport.clear();
|
||||
},
|
||||
getPortHandle: function (port: any): any {
|
||||
updateDynamicRam("getPortHandle", getRamCost("getPortHandle"));
|
||||
if (isNaN(port)) {
|
||||
@@ -2095,8 +2080,8 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
return Math.floor(CONSTANTS.BaseFavorToDonate * BitNodeMultipliers.RepToDonateToFaction);
|
||||
},
|
||||
|
||||
getplayer: function (): any {
|
||||
helper.updateDynamicRam("getplayer", getRamCost("getplayer"));
|
||||
getPlayer: function (): any {
|
||||
helper.updateDynamicRam("getPlayer", getRamCost("getPlayer"));
|
||||
|
||||
const data = {
|
||||
hacking_skill: Player.hacking_skill,
|
||||
@@ -2190,16 +2175,6 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
return data;
|
||||
},
|
||||
|
||||
...augmentations,
|
||||
|
||||
gang: gang,
|
||||
bladeburner: bladeburner,
|
||||
codingcontract: codingcontract,
|
||||
sleeve: sleeve,
|
||||
corporation: corporation,
|
||||
|
||||
formulas: formulas,
|
||||
|
||||
atExit: function (f: any): void {
|
||||
if (typeof f !== "function") {
|
||||
throw makeRuntimeErrorMsg("atExit", "argument should be function");
|
||||
@@ -2207,9 +2182,14 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
workerScript.atExit = f;
|
||||
},
|
||||
flags: Flags(workerScript.args),
|
||||
...extra,
|
||||
};
|
||||
|
||||
// add undocumented functions
|
||||
const ns = {
|
||||
...base,
|
||||
corporation: corporation,
|
||||
...extra,
|
||||
};
|
||||
function getFunctionNames(obj: NS, prefix: string): string[] {
|
||||
const functionNames: string[] = [];
|
||||
for (const [key, value] of Object.entries(obj)) {
|
||||
@@ -2222,9 +2202,7 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
return functionNames;
|
||||
}
|
||||
|
||||
const possibleLogs = Object.fromEntries([...getFunctionNames(functions, "")].map((a) => [a, true]));
|
||||
const possibleLogs = Object.fromEntries([...getFunctionNames(ns, "")].map((a) => [a, true]));
|
||||
|
||||
return functions;
|
||||
} // End NetscriptFunction()
|
||||
|
||||
export { NetscriptFunctions };
|
||||
return ns;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import { IPlayer } from "../PersonObjects/IPlayer";
|
||||
import { Bladeburner } from "../Bladeburner/Bladeburner";
|
||||
import { getRamCost } from "../Netscript/RamCostGenerator";
|
||||
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
|
||||
import { Bladeburner as INetscriptBladeburner } from "../ScriptEditor/NetscriptDefinitions";
|
||||
import { Bladeburner as INetscriptBladeburner, BladeburnerCurAction } from "../ScriptEditor/NetscriptDefinitions";
|
||||
|
||||
export function NetscriptBladeburner(
|
||||
player: IPlayer,
|
||||
@@ -56,48 +56,48 @@ export function NetscriptBladeburner(
|
||||
};
|
||||
|
||||
return {
|
||||
getContractNames: function (): any {
|
||||
getContractNames: function (): string[] {
|
||||
helper.updateDynamicRam("getContractNames", getRamCost("bladeburner", "getContractNames"));
|
||||
checkBladeburnerAccess("getContractNames");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.getContractNamesNetscriptFn();
|
||||
},
|
||||
getOperationNames: function (): any {
|
||||
getOperationNames: function (): string[] {
|
||||
helper.updateDynamicRam("getOperationNames", getRamCost("bladeburner", "getOperationNames"));
|
||||
checkBladeburnerAccess("getOperationNames");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.getOperationNamesNetscriptFn();
|
||||
},
|
||||
getBlackOpNames: function (): any {
|
||||
getBlackOpNames: function (): string[] {
|
||||
helper.updateDynamicRam("getBlackOpNames", getRamCost("bladeburner", "getBlackOpNames"));
|
||||
checkBladeburnerAccess("getBlackOpNames");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.getBlackOpNamesNetscriptFn();
|
||||
},
|
||||
getBlackOpRank: function (name: any = ""): any {
|
||||
getBlackOpRank: function (name: any = ""): number {
|
||||
helper.updateDynamicRam("getBlackOpRank", getRamCost("bladeburner", "getBlackOpRank"));
|
||||
checkBladeburnerAccess("getBlackOpRank");
|
||||
const action: any = getBladeburnerActionObject("getBlackOpRank", "blackops", name);
|
||||
return action.reqdRank;
|
||||
},
|
||||
getGeneralActionNames: function (): any {
|
||||
getGeneralActionNames: function (): string[] {
|
||||
helper.updateDynamicRam("getGeneralActionNames", getRamCost("bladeburner", "getGeneralActionNames"));
|
||||
checkBladeburnerAccess("getGeneralActionNames");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.getGeneralActionNamesNetscriptFn();
|
||||
},
|
||||
getSkillNames: function (): any {
|
||||
getSkillNames: function (): string[] {
|
||||
helper.updateDynamicRam("getSkillNames", getRamCost("bladeburner", "getSkillNames"));
|
||||
checkBladeburnerAccess("getSkillNames");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.getSkillNamesNetscriptFn();
|
||||
},
|
||||
startAction: function (type: any = "", name: any = ""): any {
|
||||
startAction: function (type: any = "", name: any = ""): boolean {
|
||||
helper.updateDynamicRam("startAction", getRamCost("bladeburner", "startAction"));
|
||||
checkBladeburnerAccess("startAction");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -108,21 +108,21 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.startAction", e);
|
||||
}
|
||||
},
|
||||
stopBladeburnerAction: function (): any {
|
||||
stopBladeburnerAction: function (): void {
|
||||
helper.updateDynamicRam("stopBladeburnerAction", getRamCost("bladeburner", "stopBladeburnerAction"));
|
||||
checkBladeburnerAccess("stopBladeburnerAction");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.resetAction();
|
||||
},
|
||||
getCurrentAction: function (): any {
|
||||
getCurrentAction: function (): BladeburnerCurAction {
|
||||
helper.updateDynamicRam("getCurrentAction", getRamCost("bladeburner", "getCurrentAction"));
|
||||
checkBladeburnerAccess("getCurrentAction");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.getTypeAndNameFromActionId(bladeburner.action);
|
||||
},
|
||||
getActionTime: function (type: any = "", name: any = ""): any {
|
||||
getActionTime: function (type: any = "", name: any = ""): number {
|
||||
helper.updateDynamicRam("getActionTime", getRamCost("bladeburner", "getActionTime"));
|
||||
checkBladeburnerAccess("getActionTime");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -133,7 +133,7 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.getActionTime", e);
|
||||
}
|
||||
},
|
||||
getActionEstimatedSuccessChance: function (type: any = "", name: any = ""): any {
|
||||
getActionEstimatedSuccessChance: function (type: any = "", name: any = ""): [number, number] {
|
||||
helper.updateDynamicRam(
|
||||
"getActionEstimatedSuccessChance",
|
||||
getRamCost("bladeburner", "getActionEstimatedSuccessChance"),
|
||||
@@ -147,7 +147,7 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.getActionEstimatedSuccessChance", e);
|
||||
}
|
||||
},
|
||||
getActionRepGain: function (type: any = "", name: any = "", level: any): any {
|
||||
getActionRepGain: function (type: any = "", name: any = "", level: any): number {
|
||||
helper.updateDynamicRam("getActionRepGain", getRamCost("bladeburner", "getActionRepGain"));
|
||||
checkBladeburnerAccess("getActionRepGain");
|
||||
const action = getBladeburnerActionObject("getActionRepGain", type, name);
|
||||
@@ -160,7 +160,7 @@ export function NetscriptBladeburner(
|
||||
|
||||
return action.rankGain * rewardMultiplier * BitNodeMultipliers.BladeburnerRank;
|
||||
},
|
||||
getActionCountRemaining: function (type: any = "", name: any = ""): any {
|
||||
getActionCountRemaining: function (type: any = "", name: any = ""): number {
|
||||
helper.updateDynamicRam("getActionCountRemaining", getRamCost("bladeburner", "getActionCountRemaining"));
|
||||
checkBladeburnerAccess("getActionCountRemaining");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -171,31 +171,31 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.getActionCountRemaining", e);
|
||||
}
|
||||
},
|
||||
getActionMaxLevel: function (type: any = "", name: any = ""): any {
|
||||
getActionMaxLevel: function (type: any = "", name: any = ""): number {
|
||||
helper.updateDynamicRam("getActionMaxLevel", getRamCost("bladeburner", "getActionMaxLevel"));
|
||||
checkBladeburnerAccess("getActionMaxLevel");
|
||||
const action = getBladeburnerActionObject("getActionMaxLevel", type, name);
|
||||
return action.maxLevel;
|
||||
},
|
||||
getActionCurrentLevel: function (type: any = "", name: any = ""): any {
|
||||
getActionCurrentLevel: function (type: any = "", name: any = ""): number {
|
||||
helper.updateDynamicRam("getActionCurrentLevel", getRamCost("bladeburner", "getActionCurrentLevel"));
|
||||
checkBladeburnerAccess("getActionCurrentLevel");
|
||||
const action = getBladeburnerActionObject("getActionCurrentLevel", type, name);
|
||||
return action.level;
|
||||
},
|
||||
getActionAutolevel: function (type: any = "", name: any = ""): any {
|
||||
getActionAutolevel: function (type: any = "", name: any = ""): boolean {
|
||||
helper.updateDynamicRam("getActionAutolevel", getRamCost("bladeburner", "getActionAutolevel"));
|
||||
checkBladeburnerAccess("getActionAutolevel");
|
||||
const action = getBladeburnerActionObject("getActionCurrentLevel", type, name);
|
||||
return action.autoLevel;
|
||||
},
|
||||
setActionAutolevel: function (type: any = "", name: any = "", autoLevel: any = true): any {
|
||||
setActionAutolevel: function (type: any = "", name: any = "", autoLevel: any = true): void {
|
||||
helper.updateDynamicRam("setActionAutolevel", getRamCost("bladeburner", "setActionAutolevel"));
|
||||
checkBladeburnerAccess("setActionAutolevel");
|
||||
const action = getBladeburnerActionObject("setActionAutolevel", type, name);
|
||||
action.autoLevel = autoLevel;
|
||||
},
|
||||
setActionLevel: function (type: any = "", name: any = "", level: any = 1): any {
|
||||
setActionLevel: function (type: any = "", name: any = "", level: any = 1): void {
|
||||
helper.updateDynamicRam("setActionLevel", getRamCost("bladeburner", "setActionLevel"));
|
||||
checkBladeburnerAccess("setActionLevel");
|
||||
const action = getBladeburnerActionObject("setActionLevel", type, name);
|
||||
@@ -207,21 +207,21 @@ export function NetscriptBladeburner(
|
||||
}
|
||||
action.level = level;
|
||||
},
|
||||
getRank: function (): any {
|
||||
getRank: function (): number {
|
||||
helper.updateDynamicRam("getRank", getRamCost("bladeburner", "getRank"));
|
||||
checkBladeburnerAccess("getRank");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.rank;
|
||||
},
|
||||
getSkillPoints: function (): any {
|
||||
getSkillPoints: function (): number {
|
||||
helper.updateDynamicRam("getSkillPoints", getRamCost("bladeburner", "getSkillPoints"));
|
||||
checkBladeburnerAccess("getSkillPoints");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.skillPoints;
|
||||
},
|
||||
getSkillLevel: function (skillName: any = ""): any {
|
||||
getSkillLevel: function (skillName: any = ""): number {
|
||||
helper.updateDynamicRam("getSkillLevel", getRamCost("bladeburner", "getSkillLevel"));
|
||||
checkBladeburnerAccess("getSkillLevel");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -232,7 +232,7 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.getSkillLevel", e);
|
||||
}
|
||||
},
|
||||
getSkillUpgradeCost: function (skillName: any = ""): any {
|
||||
getSkillUpgradeCost: function (skillName: any = ""): number {
|
||||
helper.updateDynamicRam("getSkillUpgradeCost", getRamCost("bladeburner", "getSkillUpgradeCost"));
|
||||
checkBladeburnerAccess("getSkillUpgradeCost");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -243,7 +243,7 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.getSkillUpgradeCost", e);
|
||||
}
|
||||
},
|
||||
upgradeSkill: function (skillName: any): any {
|
||||
upgradeSkill: function (skillName: any): boolean {
|
||||
helper.updateDynamicRam("upgradeSkill", getRamCost("bladeburner", "upgradeSkill"));
|
||||
checkBladeburnerAccess("upgradeSkill");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -254,7 +254,7 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.upgradeSkill", e);
|
||||
}
|
||||
},
|
||||
getTeamSize: function (type: any = "", name: any = ""): any {
|
||||
getTeamSize: function (type: any = "", name: any = ""): number {
|
||||
helper.updateDynamicRam("getTeamSize", getRamCost("bladeburner", "getTeamSize"));
|
||||
checkBladeburnerAccess("getTeamSize");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -265,7 +265,7 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.getTeamSize", e);
|
||||
}
|
||||
},
|
||||
setTeamSize: function (type: any = "", name: any = "", size: any): any {
|
||||
setTeamSize: function (type: any = "", name: any = "", size: any): number {
|
||||
helper.updateDynamicRam("setTeamSize", getRamCost("bladeburner", "setTeamSize"));
|
||||
checkBladeburnerAccess("setTeamSize");
|
||||
const bladeburner = player.bladeburner;
|
||||
@@ -276,7 +276,7 @@ export function NetscriptBladeburner(
|
||||
throw helper.makeRuntimeErrorMsg("bladeburner.setTeamSize", e);
|
||||
}
|
||||
},
|
||||
getCityEstimatedPopulation: function (cityName: any): any {
|
||||
getCityEstimatedPopulation: function (cityName: any): number {
|
||||
helper.updateDynamicRam("getCityEstimatedPopulation", getRamCost("bladeburner", "getCityEstimatedPopulation"));
|
||||
checkBladeburnerAccess("getCityEstimatedPopulation");
|
||||
checkBladeburnerCity("getCityEstimatedPopulation", cityName);
|
||||
@@ -284,7 +284,7 @@ export function NetscriptBladeburner(
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.cities[cityName].popEst;
|
||||
},
|
||||
getCityCommunities: function (cityName: any): any {
|
||||
getCityCommunities: function (cityName: any): number {
|
||||
helper.updateDynamicRam("getCityCommunities", getRamCost("bladeburner", "getCityCommunities"));
|
||||
checkBladeburnerAccess("getCityCommunities");
|
||||
checkBladeburnerCity("getCityCommunities", cityName);
|
||||
@@ -292,7 +292,7 @@ export function NetscriptBladeburner(
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.cities[cityName].comms;
|
||||
},
|
||||
getCityChaos: function (cityName: any): any {
|
||||
getCityChaos: function (cityName: any): number {
|
||||
helper.updateDynamicRam("getCityChaos", getRamCost("bladeburner", "getCityChaos"));
|
||||
checkBladeburnerAccess("getCityChaos");
|
||||
checkBladeburnerCity("getCityChaos", cityName);
|
||||
@@ -300,14 +300,14 @@ export function NetscriptBladeburner(
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.cities[cityName].chaos;
|
||||
},
|
||||
getCity: function (): any {
|
||||
getCity: function (): string {
|
||||
helper.updateDynamicRam("getCity", getRamCost("bladeburner", "getCity"));
|
||||
checkBladeburnerAccess("getCityChaos");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.city;
|
||||
},
|
||||
switchCity: function (cityName: any): any {
|
||||
switchCity: function (cityName: any): boolean {
|
||||
helper.updateDynamicRam("switchCity", getRamCost("bladeburner", "switchCity"));
|
||||
checkBladeburnerAccess("switchCity");
|
||||
checkBladeburnerCity("switchCity", cityName);
|
||||
@@ -315,21 +315,21 @@ export function NetscriptBladeburner(
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return (bladeburner.city = cityName);
|
||||
},
|
||||
getStamina: function (): any {
|
||||
getStamina: function (): [number, number] {
|
||||
helper.updateDynamicRam("getStamina", getRamCost("bladeburner", "getStamina"));
|
||||
checkBladeburnerAccess("getStamina");
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return [bladeburner.stamina, bladeburner.maxStamina];
|
||||
},
|
||||
joinBladeburnerFaction: function (): any {
|
||||
joinBladeburnerFaction: function (): boolean {
|
||||
helper.updateDynamicRam("joinBladeburnerFaction", getRamCost("bladeburner", "joinBladeburnerFaction"));
|
||||
checkBladeburnerAccess("joinBladeburnerFaction", true);
|
||||
const bladeburner = player.bladeburner;
|
||||
if (bladeburner === null) throw new Error("Should not be called without Bladeburner");
|
||||
return bladeburner.joinBladeburnerFactionNetscriptFn(workerScript);
|
||||
},
|
||||
joinBladeburnerDivision: function (): any {
|
||||
joinBladeburnerDivision: function (): boolean {
|
||||
helper.updateDynamicRam("joinBladeburnerDivision", getRamCost("bladeburner", "joinBladeburnerDivision"));
|
||||
if (player.bitNodeN === 7 || player.sourceFileLvl(7) > 0) {
|
||||
if (player.bitNodeN === 8) {
|
||||
@@ -355,8 +355,9 @@ export function NetscriptBladeburner(
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
getBonusTime: function (): any {
|
||||
getBonusTime: function (): number {
|
||||
helper.updateDynamicRam("getBonusTime", getRamCost("bladeburner", "getBonusTime"));
|
||||
checkBladeburnerAccess("getBonusTime");
|
||||
const bladeburner = player.bladeburner;
|
||||
|
||||
@@ -22,7 +22,12 @@ export function NetscriptCodingContract(
|
||||
};
|
||||
|
||||
return {
|
||||
attempt: function (answer: any, fn: any, ip: any = workerScript.hostname, { returnReward }: any = {}): any {
|
||||
attempt: function (
|
||||
answer: any,
|
||||
fn: any,
|
||||
ip: any = workerScript.hostname,
|
||||
{ returnReward }: any = {},
|
||||
): boolean | string {
|
||||
helper.updateDynamicRam("attempt", getRamCost("codingcontract", "attempt"));
|
||||
const contract = getCodingContract("attempt", ip, fn);
|
||||
|
||||
@@ -63,7 +68,7 @@ export function NetscriptCodingContract(
|
||||
return returnReward ? "" : false;
|
||||
}
|
||||
},
|
||||
getContractType: function (fn: any, ip: any = workerScript.hostname): any {
|
||||
getContractType: function (fn: any, ip: any = workerScript.hostname): string {
|
||||
helper.updateDynamicRam("getContractType", getRamCost("codingcontract", "getContractType"));
|
||||
const contract = getCodingContract("getContractType", ip, fn);
|
||||
return contract.getType();
|
||||
@@ -88,12 +93,12 @@ export function NetscriptCodingContract(
|
||||
return data;
|
||||
}
|
||||
},
|
||||
getDescription: function (fn: any, ip: any = workerScript.hostname): any {
|
||||
getDescription: function (fn: any, ip: any = workerScript.hostname): string {
|
||||
helper.updateDynamicRam("getDescription", getRamCost("codingcontract", "getDescription"));
|
||||
const contract = getCodingContract("getDescription", ip, fn);
|
||||
return contract.getDescription();
|
||||
},
|
||||
getNumTriesRemaining: function (fn: any, ip: any = workerScript.hostname): any {
|
||||
getNumTriesRemaining: function (fn: any, ip: any = workerScript.hostname): number {
|
||||
helper.updateDynamicRam("getNumTriesRemaining", getRamCost("codingcontract", "getNumTriesRemaining"));
|
||||
const contract = getCodingContract("getNumTriesRemaining", ip, fn);
|
||||
return contract.getMaxNumTries() - contract.tries;
|
||||
|
||||
@@ -9,7 +9,15 @@ import { WorkerScript } from "../Netscript/WorkerScript";
|
||||
import { GangMember } from "../Gang/GangMember";
|
||||
import { GangMemberTask } from "../Gang/GangMemberTask";
|
||||
|
||||
import { Gang as IGang } from "../ScriptEditor/NetscriptDefinitions";
|
||||
import {
|
||||
Gang as IGang,
|
||||
GangGenInfo,
|
||||
GangOtherInfo,
|
||||
GangMemberInfo,
|
||||
GangMemberAscension,
|
||||
EquipmentStats,
|
||||
GangTaskStats,
|
||||
} from "../ScriptEditor/NetscriptDefinitions";
|
||||
|
||||
export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helper: INetscriptHelper): IGang {
|
||||
const checkGangApiAccess = function (func: string): void {
|
||||
@@ -58,18 +66,18 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
player.startGang(faction, isHacking);
|
||||
return true;
|
||||
},
|
||||
inGang: function (): any {
|
||||
inGang: function (): boolean {
|
||||
helper.updateDynamicRam("inGang", getRamCost("gang", "inGang"));
|
||||
return player.inGang();
|
||||
},
|
||||
getMemberNames: function (): any {
|
||||
getMemberNames: function (): string[] {
|
||||
helper.updateDynamicRam("getMemberNames", getRamCost("gang", "getMemberNames"));
|
||||
checkGangApiAccess("getMemberNames");
|
||||
const gang = player.gang;
|
||||
if (gang === null) throw new Error("Should not be called without Gang");
|
||||
return gang.members.map((member) => member.name);
|
||||
},
|
||||
getGangInformation: function (): any {
|
||||
getGangInformation: function (): GangGenInfo {
|
||||
helper.updateDynamicRam("getGangInformation", getRamCost("gang", "getGangInformation"));
|
||||
checkGangApiAccess("getGangInformation");
|
||||
const gang = player.gang;
|
||||
@@ -88,7 +96,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
wantedLevelGainRate: gang.wantedGainRate,
|
||||
};
|
||||
},
|
||||
getOtherGangInformation: function (): any {
|
||||
getOtherGangInformation: function (): GangOtherInfo {
|
||||
helper.updateDynamicRam("getOtherGangInformation", getRamCost("gang", "getOtherGangInformation"));
|
||||
checkGangApiAccess("getOtherGangInformation");
|
||||
const cpy: any = {};
|
||||
@@ -98,7 +106,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
|
||||
return cpy;
|
||||
},
|
||||
getMemberInformation: function (name: any): any {
|
||||
getMemberInformation: function (name: any): GangMemberInfo {
|
||||
helper.updateDynamicRam("getMemberInformation", getRamCost("gang", "getMemberInformation"));
|
||||
checkGangApiAccess("getMemberInformation");
|
||||
const member = getGangMember("getMemberInformation", name);
|
||||
@@ -145,14 +153,14 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
augmentations: member.augmentations.slice(),
|
||||
};
|
||||
},
|
||||
canRecruitMember: function (): any {
|
||||
canRecruitMember: function (): boolean {
|
||||
helper.updateDynamicRam("canRecruitMember", getRamCost("gang", "canRecruitMember"));
|
||||
checkGangApiAccess("canRecruitMember");
|
||||
const gang = player.gang;
|
||||
if (gang === null) throw new Error("Should not be called without Gang");
|
||||
return gang.canRecruitMember();
|
||||
},
|
||||
recruitMember: function (name: any): any {
|
||||
recruitMember: function (name: any): boolean {
|
||||
helper.updateDynamicRam("recruitMember", getRamCost("gang", "recruitMember"));
|
||||
checkGangApiAccess("recruitMember");
|
||||
const gang = player.gang;
|
||||
@@ -166,7 +174,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
|
||||
return recruited;
|
||||
},
|
||||
getTaskNames: function (): any {
|
||||
getTaskNames: function (): string[] {
|
||||
helper.updateDynamicRam("getTaskNames", getRamCost("gang", "getTaskNames"));
|
||||
checkGangApiAccess("getTaskNames");
|
||||
const gang = player.gang;
|
||||
@@ -175,7 +183,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
tasks.unshift("Unassigned");
|
||||
return tasks;
|
||||
},
|
||||
setMemberTask: function (memberName: any, taskName: any): any {
|
||||
setMemberTask: function (memberName: any, taskName: any): boolean {
|
||||
helper.updateDynamicRam("setMemberTask", getRamCost("gang", "setMemberTask"));
|
||||
checkGangApiAccess("setMemberTask");
|
||||
const member = getGangMember("setMemberTask", memberName);
|
||||
@@ -191,7 +199,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
|
||||
return success;
|
||||
},
|
||||
getTaskStats: function (taskName: any): any {
|
||||
getTaskStats: function (taskName: any): GangTaskStats {
|
||||
helper.updateDynamicRam("getTaskStats", getRamCost("gang", "getTaskStats"));
|
||||
checkGangApiAccess("getTaskStats");
|
||||
const task = getGangTask("getTaskStats", taskName);
|
||||
@@ -199,12 +207,12 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
copy.territory = Object.assign({}, task.territory);
|
||||
return copy;
|
||||
},
|
||||
getEquipmentNames: function (): any {
|
||||
getEquipmentNames: function (): string[] {
|
||||
helper.updateDynamicRam("getEquipmentNames", getRamCost("gang", "getEquipmentNames"));
|
||||
checkGangApiAccess("getEquipmentNames");
|
||||
return Object.keys(GangMemberUpgrades);
|
||||
},
|
||||
getEquipmentCost: function (equipName: any): any {
|
||||
getEquipmentCost: function (equipName: any): number {
|
||||
helper.updateDynamicRam("getEquipmentCost", getRamCost("gang", "getEquipmentCost"));
|
||||
checkGangApiAccess("getEquipmentCost");
|
||||
const gang = player.gang;
|
||||
@@ -213,23 +221,24 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
if (upg === null) return Infinity;
|
||||
return gang.getUpgradeCost(upg);
|
||||
},
|
||||
getEquipmentType: function (equipName: any): any {
|
||||
getEquipmentType: function (equipName: any): string {
|
||||
helper.updateDynamicRam("getEquipmentType", getRamCost("gang", "getEquipmentType"));
|
||||
checkGangApiAccess("getEquipmentType");
|
||||
const upg = GangMemberUpgrades[equipName];
|
||||
if (upg == null) return "";
|
||||
return upg.getType();
|
||||
},
|
||||
getEquipmentStats: function (equipName: any): any {
|
||||
getEquipmentStats: function (equipName: any): EquipmentStats {
|
||||
helper.updateDynamicRam("getEquipmentStats", getRamCost("gang", "getEquipmentStats"));
|
||||
checkGangApiAccess("getEquipmentStats");
|
||||
const equipment = GangMemberUpgrades[equipName];
|
||||
if (!equipment) {
|
||||
throw helper.makeRuntimeErrorMsg("getEquipmentStats", `Invalid equipment: ${equipName}`);
|
||||
}
|
||||
return Object.assign({}, equipment.mults);
|
||||
const typecheck: EquipmentStats = equipment.mults;
|
||||
return Object.assign({}, typecheck) as any;
|
||||
},
|
||||
purchaseEquipment: function (memberName: any, equipName: any): any {
|
||||
purchaseEquipment: function (memberName: any, equipName: any): boolean {
|
||||
helper.updateDynamicRam("purchaseEquipment", getRamCost("gang", "purchaseEquipment"));
|
||||
checkGangApiAccess("purchaseEquipment");
|
||||
const gang = player.gang;
|
||||
@@ -246,7 +255,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
|
||||
return res;
|
||||
},
|
||||
ascendMember: function (name: any): any {
|
||||
ascendMember: function (name: any): GangMemberAscension | undefined {
|
||||
helper.updateDynamicRam("ascendMember", getRamCost("gang", "ascendMember"));
|
||||
checkGangApiAccess("ascendMember");
|
||||
const gang = player.gang;
|
||||
@@ -268,7 +277,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
workerScript.log("setTerritoryWarfare", "Disengaging in Gang Territory Warfare");
|
||||
}
|
||||
},
|
||||
getChanceToWinClash: function (otherGang: any): any {
|
||||
getChanceToWinClash: function (otherGang: any): number {
|
||||
helper.updateDynamicRam("getChanceToWinClash", getRamCost("gang", "getChanceToWinClash"));
|
||||
checkGangApiAccess("getChanceToWinClash");
|
||||
const gang = player.gang;
|
||||
@@ -282,7 +291,7 @@ export function NetscriptGang(player: IPlayer, workerScript: WorkerScript, helpe
|
||||
|
||||
return playerPower / (otherPower + playerPower);
|
||||
},
|
||||
getBonusTime: function (): any {
|
||||
getBonusTime: function (): number {
|
||||
helper.updateDynamicRam("getBonusTime", getRamCost("gang", "getBonusTime"));
|
||||
checkGangApiAccess("getBonusTime");
|
||||
const gang = player.gang;
|
||||
|
||||
@@ -18,7 +18,7 @@ import { HacknetServer } from "../Hacknet/HacknetServer";
|
||||
import { HacknetNode } from "../Hacknet/HacknetNode";
|
||||
import { GetServer } from "../Server/AllServers";
|
||||
|
||||
import { Hacknet as IHacknet } from "../ScriptEditor/NetscriptDefinitions";
|
||||
import { Hacknet as IHacknet, NodeStats } from "../ScriptEditor/NetscriptDefinitions";
|
||||
|
||||
export function NetscriptHacknet(player: IPlayer, workerScript: WorkerScript, helper: INetscriptHelper): IHacknet {
|
||||
// Utility function to get Hacknet Node object
|
||||
@@ -51,26 +51,26 @@ export function NetscriptHacknet(player: IPlayer, workerScript: WorkerScript, he
|
||||
};
|
||||
|
||||
return {
|
||||
numNodes: function (): any {
|
||||
numNodes: function (): number {
|
||||
return player.hacknetNodes.length;
|
||||
},
|
||||
maxNumNodes: function (): any {
|
||||
maxNumNodes: function (): number {
|
||||
if (hasHacknetServers(player)) {
|
||||
return HacknetServerConstants.MaxServers;
|
||||
}
|
||||
return Infinity;
|
||||
},
|
||||
purchaseNode: function (): any {
|
||||
purchaseNode: function (): number {
|
||||
return purchaseHacknet(player);
|
||||
},
|
||||
getPurchaseNodeCost: function (): any {
|
||||
getPurchaseNodeCost: function (): number {
|
||||
if (hasHacknetServers(player)) {
|
||||
return getCostOfNextHacknetServer(player);
|
||||
} else {
|
||||
return getCostOfNextHacknetNode(player);
|
||||
}
|
||||
},
|
||||
getNodeStats: function (i: any): any {
|
||||
getNodeStats: function (i: any): NodeStats {
|
||||
const node = getHacknetNode(i, "getNodeStats");
|
||||
const hasUpgraded = hasHacknetServers(player);
|
||||
const res: any = {
|
||||
@@ -90,19 +90,19 @@ export function NetscriptHacknet(player: IPlayer, workerScript: WorkerScript, he
|
||||
|
||||
return res;
|
||||
},
|
||||
upgradeLevel: function (i: any, n: any): any {
|
||||
upgradeLevel: function (i: any, n: any): boolean {
|
||||
const node = getHacknetNode(i, "upgradeLevel");
|
||||
return purchaseLevelUpgrade(player, node, n);
|
||||
},
|
||||
upgradeRam: function (i: any, n: any): any {
|
||||
upgradeRam: function (i: any, n: any): boolean {
|
||||
const node = getHacknetNode(i, "upgradeRam");
|
||||
return purchaseRamUpgrade(player, node, n);
|
||||
},
|
||||
upgradeCore: function (i: any, n: any): any {
|
||||
upgradeCore: function (i: any, n: any): boolean {
|
||||
const node = getHacknetNode(i, "upgradeCore");
|
||||
return purchaseCoreUpgrade(player, node, n);
|
||||
},
|
||||
upgradeCache: function (i: any, n: any): any {
|
||||
upgradeCache: function (i: any, n: any): boolean {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return false;
|
||||
}
|
||||
@@ -117,19 +117,19 @@ export function NetscriptHacknet(player: IPlayer, workerScript: WorkerScript, he
|
||||
}
|
||||
return res;
|
||||
},
|
||||
getLevelUpgradeCost: function (i: any, n: any): any {
|
||||
getLevelUpgradeCost: function (i: any, n: any): number {
|
||||
const node = getHacknetNode(i, "upgradeLevel");
|
||||
return node.calculateLevelUpgradeCost(n, player.hacknet_node_level_cost_mult);
|
||||
},
|
||||
getRamUpgradeCost: function (i: any, n: any): any {
|
||||
getRamUpgradeCost: function (i: any, n: any): number {
|
||||
const node = getHacknetNode(i, "upgradeRam");
|
||||
return node.calculateRamUpgradeCost(n, player.hacknet_node_ram_cost_mult);
|
||||
},
|
||||
getCoreUpgradeCost: function (i: any, n: any): any {
|
||||
getCoreUpgradeCost: function (i: any, n: any): number {
|
||||
const node = getHacknetNode(i, "upgradeCore");
|
||||
return node.calculateCoreUpgradeCost(n, player.hacknet_node_core_cost_mult);
|
||||
},
|
||||
getCacheUpgradeCost: function (i: any, n: any): any {
|
||||
getCacheUpgradeCost: function (i: any, n: any): number {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return Infinity;
|
||||
}
|
||||
@@ -140,47 +140,47 @@ export function NetscriptHacknet(player: IPlayer, workerScript: WorkerScript, he
|
||||
}
|
||||
return node.calculateCacheUpgradeCost(n);
|
||||
},
|
||||
numHashes: function (): any {
|
||||
numHashes: function (): number {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return 0;
|
||||
}
|
||||
return player.hashManager.hashes;
|
||||
},
|
||||
hashCapacity: function (): any {
|
||||
hashCapacity: function (): number {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return 0;
|
||||
}
|
||||
return player.hashManager.capacity;
|
||||
},
|
||||
hashCost: function (upgName: any): any {
|
||||
hashCost: function (upgName: any): number {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return Infinity;
|
||||
}
|
||||
|
||||
return player.hashManager.getUpgradeCost(upgName);
|
||||
},
|
||||
spendHashes: function (upgName: any, upgTarget: any): any {
|
||||
spendHashes: function (upgName: any, upgTarget: any): boolean {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return false;
|
||||
}
|
||||
return purchaseHashUpgrade(player, upgName, upgTarget);
|
||||
},
|
||||
getHashUpgradeLevel: function (upgName: any): any {
|
||||
getHashUpgradeLevel: function (upgName: any): number {
|
||||
const level = player.hashManager.upgrades[upgName];
|
||||
if (level === undefined) {
|
||||
throw helper.makeRuntimeErrorMsg("hacknet.hashUpgradeLevel", `Invalid Hash Upgrade: ${upgName}`);
|
||||
}
|
||||
return level;
|
||||
},
|
||||
getStudyMult: function (): any {
|
||||
getStudyMult: function (): number {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return false;
|
||||
return 1;
|
||||
}
|
||||
return player.hashManager.getStudyMult();
|
||||
},
|
||||
getTrainingMult: function (): any {
|
||||
getTrainingMult: function (): number {
|
||||
if (!hasHacknetServers(player)) {
|
||||
return false;
|
||||
return 1;
|
||||
}
|
||||
return player.hashManager.getTrainingMult();
|
||||
},
|
||||
|
||||
522
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
522
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@@ -1,3 +1,114 @@
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
interface Player {
|
||||
hacking_skill: number;
|
||||
hp: number;
|
||||
max_hp: number;
|
||||
strength: number;
|
||||
defense: number;
|
||||
dexterity: number;
|
||||
agility: number;
|
||||
charisma: number;
|
||||
intelligence: number;
|
||||
hacking_chance_mult: number;
|
||||
hacking_speed_mult: number;
|
||||
hacking_money_mult: number;
|
||||
hacking_grow_mult: number;
|
||||
hacking_exp: number;
|
||||
strength_exp: number;
|
||||
defense_exp: number;
|
||||
dexterity_exp: number;
|
||||
agility_exp: number;
|
||||
charisma_exp: number;
|
||||
hacking_mult: number;
|
||||
strength_mult: number;
|
||||
defense_mult: number;
|
||||
dexterity_mult: number;
|
||||
agility_mult: number;
|
||||
charisma_mult: number;
|
||||
hacking_exp_mult: number;
|
||||
strength_exp_mult: number;
|
||||
defense_exp_mult: number;
|
||||
dexterity_exp_mult: number;
|
||||
agility_exp_mult: number;
|
||||
charisma_exp_mult: number;
|
||||
company_rep_mult: number;
|
||||
faction_rep_mult: number;
|
||||
numPeopleKilled: number;
|
||||
money: number;
|
||||
city: string;
|
||||
location: string;
|
||||
companyName: string;
|
||||
crime_money_mult: number;
|
||||
crime_success_mult: number;
|
||||
isWorking: boolean;
|
||||
workType: string;
|
||||
currentWorkFactionName: string;
|
||||
currentWorkFactionDescription: string;
|
||||
workHackExpGainRate: number;
|
||||
workStrExpGainRate: number;
|
||||
workDefExpGainRate: number;
|
||||
workDexExpGainRate: number;
|
||||
workAgiExpGainRate: number;
|
||||
workChaExpGainRate: number;
|
||||
workRepGainRate: number;
|
||||
workMoneyGainRate: number;
|
||||
workMoneyLossRate: number;
|
||||
workHackExpGained: number;
|
||||
workStrExpGained: number;
|
||||
workDefExpGained: number;
|
||||
workDexExpGained: number;
|
||||
workAgiExpGained: number;
|
||||
workChaExpGained: number;
|
||||
workRepGained: number;
|
||||
workMoneyGained: number;
|
||||
createProgramName: string;
|
||||
createProgramReqLvl: number;
|
||||
className: string;
|
||||
crimeType: string;
|
||||
work_money_mult: number;
|
||||
hacknet_node_money_mult: number;
|
||||
hacknet_node_purchase_cost_mult: number;
|
||||
hacknet_node_ram_cost_mult: number;
|
||||
hacknet_node_core_cost_mult: number;
|
||||
hacknet_node_level_cost_mult: number;
|
||||
hasWseAccount: boolean;
|
||||
hasTixApiAccess: boolean;
|
||||
has4SData: boolean;
|
||||
has4SDataTixApi: boolean;
|
||||
bladeburner_max_stamina_mult: number;
|
||||
bladeburner_stamina_gain_mult: number;
|
||||
bladeburner_analysis_mult: number;
|
||||
bladeburner_success_chance_mult: number;
|
||||
bitNodeN: number;
|
||||
totalPlaytime: number;
|
||||
playtimeSinceLastAug: number;
|
||||
playtimeSinceLastBitnode: number;
|
||||
jobs: any;
|
||||
factions: string[];
|
||||
tor: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
interface RunningScript {
|
||||
args: string[];
|
||||
filename: string;
|
||||
logs: string[];
|
||||
offlineExpGained: number;
|
||||
offlineMoneyMade: number;
|
||||
offlineRunningTime: number;
|
||||
onlineExpGained: number;
|
||||
onlineMoneyMade: number;
|
||||
onlineRunningTime: number;
|
||||
pid: number;
|
||||
ramUsage: number;
|
||||
server: string;
|
||||
threads: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Data representing the internal values of a crime.
|
||||
* @public
|
||||
@@ -538,6 +649,8 @@ export interface GangGenInfo {
|
||||
wantedLevel: number;
|
||||
/** Wanted level gained/lost per second (negative for losses) */
|
||||
wantedLevelGainRate: number;
|
||||
/** Boolean indicating if territory warfare is enabled. */
|
||||
territoryWarfareEngaged: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -601,17 +714,17 @@ export interface GangTaskStats {
|
||||
*/
|
||||
export interface EquipmentStats {
|
||||
/** Strength multiplier */
|
||||
str: number;
|
||||
str?: number;
|
||||
/** Defense multiplier */
|
||||
def: number;
|
||||
def?: number;
|
||||
/** Dexterity multiplier */
|
||||
dex: number;
|
||||
dex?: number;
|
||||
/** Agility multiplier */
|
||||
agi: number;
|
||||
agi?: number;
|
||||
/** Charisma multiplier */
|
||||
cha: number;
|
||||
cha?: number;
|
||||
/** Hacking multiplier */
|
||||
hack: number;
|
||||
hack?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -630,48 +743,46 @@ export interface GangTerritory {
|
||||
* @public
|
||||
*/
|
||||
export interface GangMemberInfo {
|
||||
/** Agility stat */
|
||||
agility: number;
|
||||
/** Agility multiplier from equipment.*/
|
||||
agilityEquipMult: number;
|
||||
/** Agility multiplier from ascension.*/
|
||||
agilityAscensionMult: number;
|
||||
/** Array of names of all owned Augmentations */
|
||||
augmentations: string[];
|
||||
/** Charisma stat */
|
||||
charisma: number;
|
||||
/** Charisma multiplier from equipment.*/
|
||||
charismaEquipMult: number;
|
||||
/** Charisma multiplier from ascension.*/
|
||||
charismaAscensionMult: number;
|
||||
/** Defense stat */
|
||||
defense: number;
|
||||
/** Defense multiplier from equipment.*/
|
||||
defenseEquipMult: number;
|
||||
/** Defense multiplier from ascension.*/
|
||||
defenseAscensionMult: number;
|
||||
/** Dexterity stat */
|
||||
dexterity: number;
|
||||
/** Dexterity multiplier from equipment.*/
|
||||
dexterityEquipMult: number;
|
||||
/** Dexterity multiplier from ascension.*/
|
||||
dexterityAscensionMult: number;
|
||||
/** Array of names of all owned Non-Augmentation Equipment */
|
||||
equipment: string[];
|
||||
/** Hacking stat */
|
||||
hacking: number;
|
||||
/** Hacking multiplier from equipment.*/
|
||||
hackingEquipMult: number;
|
||||
/** Hacking multiplier from ascension.*/
|
||||
hackingAscensionMult: number;
|
||||
/** Strength stat */
|
||||
strength: number;
|
||||
/** Strength multiplier from equipment.*/
|
||||
strengthEquipMult: number;
|
||||
/** Strength multiplier from ascension.*/
|
||||
strengthAscensionMult: number;
|
||||
/** Name of currently assigned task */
|
||||
name: string;
|
||||
task: string;
|
||||
earnedRespect: number;
|
||||
hack: number;
|
||||
str: number;
|
||||
def: number;
|
||||
dex: number;
|
||||
agi: number;
|
||||
cha: number;
|
||||
|
||||
hack_exp: number;
|
||||
str_exp: number;
|
||||
def_exp: number;
|
||||
dex_exp: number;
|
||||
agi_exp: number;
|
||||
cha_exp: number;
|
||||
|
||||
hack_mult: number;
|
||||
str_mult: number;
|
||||
def_mult: number;
|
||||
dex_mult: number;
|
||||
agi_mult: number;
|
||||
cha_mult: number;
|
||||
|
||||
hack_asc_mult: number;
|
||||
str_asc_mult: number;
|
||||
def_asc_mult: number;
|
||||
dex_asc_mult: number;
|
||||
agi_asc_mult: number;
|
||||
cha_asc_mult: number;
|
||||
|
||||
hack_asc_points: number;
|
||||
str_asc_points: number;
|
||||
def_asc_points: number;
|
||||
dex_asc_points: number;
|
||||
agi_asc_points: number;
|
||||
cha_asc_points: number;
|
||||
|
||||
upgrades: string[];
|
||||
augmentations: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2325,7 +2436,7 @@ export interface Bladeburner {
|
||||
* @param name - Name of action. Must be an exact match.
|
||||
* @returns Estimated success chance for the specified action.
|
||||
*/
|
||||
getActionEstimatedSuccessChance(type: string, name: string): number;
|
||||
getActionEstimatedSuccessChance(type: string, name: string): [number, number];
|
||||
|
||||
/**
|
||||
* Get the reputation gain of an action.
|
||||
@@ -2673,20 +2784,6 @@ export interface Bladeburner {
|
||||
* @public
|
||||
*/
|
||||
export interface CodingContract {
|
||||
/**
|
||||
* Attemps a coding contract.
|
||||
* @remarks
|
||||
* RAM cost: 10 GB
|
||||
*
|
||||
* Attempts to solve the Coding Contract with the provided solution.
|
||||
*
|
||||
* @param answer - Solution for the contract.
|
||||
* @param fn - Filename of the contract.
|
||||
* @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.
|
||||
* @returns True if the solution was correct, false otherwise.
|
||||
*/
|
||||
attempt(answer: string[] | number, fn: string, host?: string): boolean;
|
||||
|
||||
/**
|
||||
* Attemps a coding contract.
|
||||
* @remarks
|
||||
@@ -2962,9 +3059,9 @@ export interface Gang {
|
||||
* Ascend the specified Gang Member.
|
||||
*
|
||||
* @param memberName - Name of member to ascend.
|
||||
* @returns Object with info about the ascension results.
|
||||
* @returns Object with info about the ascension results. undefined if ascension did not occur.
|
||||
*/
|
||||
ascendMember(memberName: string): GangMemberAscension;
|
||||
ascendMember(memberName: string): GangMemberAscension | undefined;
|
||||
|
||||
/**
|
||||
* Enable/Disable territory warfare.
|
||||
@@ -3204,11 +3301,17 @@ export interface Sleeve {
|
||||
purchaseSleeveAug(sleeveNumber: number, augName: string): boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
interface SkillsFormulas {
|
||||
calculateSkill(exp: number, mult?: number): number;
|
||||
calculateExp(skill: number, mult?: number): number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
interface HackingFormulas {
|
||||
hackChance(server: number, player: number): number;
|
||||
hackExp(server: number, player: number): number;
|
||||
@@ -3219,6 +3322,9 @@ interface HackingFormulas {
|
||||
weakenTime(server: number, player: number): number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
interface HacknetNodesFormulas {
|
||||
moneyGainRate(level: number, ram: number, cores: number, mult?: number): number;
|
||||
levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;
|
||||
@@ -3228,6 +3334,9 @@ interface HacknetNodesFormulas {
|
||||
constants(): number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
interface HacknetServersFormulas {
|
||||
hashGainRate(level: number, ramUsed: number, maxRam: number, cores: number, mult?: number): number;
|
||||
levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;
|
||||
@@ -3239,6 +3348,9 @@ interface HacknetServersFormulas {
|
||||
constants(): any;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export interface Formulas {
|
||||
skills: SkillsFormulas;
|
||||
hacking: HackingFormulas;
|
||||
@@ -3438,13 +3550,13 @@ export interface NS extends Singularity {
|
||||
* @example
|
||||
* ```ts
|
||||
* //For example, assume the following returns 1:
|
||||
* hackAnalyzePercent("foodnstuff");
|
||||
* hackAnalyze("foodnstuff");
|
||||
* //This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N% of its total money.
|
||||
* ```
|
||||
* @param host - Hostname of the target server.
|
||||
* @returns The percentage of money you will steal from the target server with a single hack.
|
||||
*/
|
||||
hackAnalyzePercent(host: string): number;
|
||||
hackAnalyze(host: string): number;
|
||||
|
||||
/**
|
||||
* Get the security increase for a number of thread.
|
||||
@@ -3470,7 +3582,7 @@ export interface NS extends Singularity {
|
||||
* @param host - Hostname of the target server.
|
||||
* @returns The chance you have of successfully hacking the target server.
|
||||
*/
|
||||
hackChance(host: string): number;
|
||||
hackAnalyzeChance(host: string): number;
|
||||
|
||||
/**
|
||||
* Calculate the number of grow thread needed to grow a server by a certain multiplier.
|
||||
@@ -3517,6 +3629,16 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
sleep(millis: number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Suspends the script for n milliseconds. Doesn't block with concurrent calls.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* @param millis - Number of milliseconds to sleep.
|
||||
* @returns
|
||||
*/
|
||||
asleep(millis: number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Prints a value or a variable to the script’s logs.
|
||||
* @remarks
|
||||
@@ -3535,6 +3657,15 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
tprint(msg: any): void;
|
||||
|
||||
/**
|
||||
* Prints a raw value or a variable to the Terminal.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* @param msg - Value to be printed.
|
||||
*/
|
||||
tprintf(msg: any): void;
|
||||
|
||||
/**
|
||||
* Clears the script’s logs.
|
||||
* @remarks
|
||||
@@ -3884,34 +4015,12 @@ export interface NS extends Singularity {
|
||||
* //The following will try to kill a script named foo.script on the current server that was ran with the arguments 1 and “foodnstuff”:
|
||||
* kill("foo.script", getHostname(), 1, "foodnstuff");
|
||||
* ```
|
||||
* @param script - Filename of the script to kill
|
||||
* @param script - Filename or pid of the script to kill
|
||||
* @param host - Hostname of the server on which to kill the script.
|
||||
* @param args - Arguments to identify which script to kill.
|
||||
* @returns True if the script is successfully killed, and false otherwise.
|
||||
*/
|
||||
kill(script: string, host: string, ...args: string[]): boolean;
|
||||
|
||||
/**
|
||||
* Terminate another script.
|
||||
* @remarks
|
||||
* RAM cost: 0.5 GB
|
||||
*
|
||||
* Kills the script with the specified PID.
|
||||
* Killing a script by its PID will typically have better performance,
|
||||
* especially if you have many scripts running.
|
||||
* If this function successfully kills the specified script, then it will return true.
|
||||
* Otherwise, it will return false.
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* if (kill(10)) {
|
||||
* print("Killed script with PID 10!");
|
||||
* }
|
||||
* ```
|
||||
* @param scriptPid - PID of the script to kill
|
||||
* @returns True if the script is successfully killed, and false otherwise.
|
||||
*/
|
||||
kill(scriptPid: number): boolean;
|
||||
kill(script: string | number, host: string, ...args: string[]): boolean;
|
||||
|
||||
/**
|
||||
* Terminate all scripts on a server.
|
||||
@@ -3934,25 +4043,6 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
exit(): void;
|
||||
|
||||
/**
|
||||
* Copy file between servers.
|
||||
* @remarks
|
||||
* RAM cost: 0.6 GB
|
||||
*
|
||||
* Copies a script or literature (.lit) file(s) to another server. The files argument can be either a string
|
||||
* specifying a single file to copy, or an array of strings specifying multiple files to copy.
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* //Copies hack-template.script from the current server to foodnstuff:
|
||||
* scp("hack-template.script", "foodnstuff");
|
||||
* ```
|
||||
* @param files - Filename or an array of filenames of script/literature files to copy.
|
||||
* @param destination - Host of the destination server, which is the server to which the file will be copied.
|
||||
* @returns True if the script/literature file is successfully copied over and false otherwise. If the files argument is an array then this function will return true if at least one of the files in the array is successfully copied.
|
||||
*/
|
||||
scp(files: string[], destination: string): boolean;
|
||||
|
||||
/**
|
||||
* Copy file between servers.
|
||||
* @remarks
|
||||
@@ -3982,7 +4072,7 @@ export interface NS extends Singularity {
|
||||
source: string,
|
||||
// tslint:disable-next-line:unified-signatures
|
||||
destination: string,
|
||||
): boolean;
|
||||
): Promise<boolean>;
|
||||
|
||||
/**
|
||||
* List files on a server.
|
||||
@@ -4177,6 +4267,65 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
getServerMinSecurityLevel(host: string): number;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* DEPRECATED
|
||||
* @remarks
|
||||
* RAM cost: 0.1 GB
|
||||
* Returns the base security level of the target server. This is the security
|
||||
* level that the server starts out with. This is different than
|
||||
* getServerSecurityLevel because getServerSecurityLevel returns
|
||||
* the current security level of a server, which can constantly change due to
|
||||
* hack, grow, and weaken, calls on that server.
|
||||
* The base security level will stay the same until you reset by
|
||||
* installing an Augmentation(s).
|
||||
*
|
||||
* @param host - Host of target server.
|
||||
* @returns Base security level of the target server.
|
||||
*/
|
||||
getServerBaseSecurityLevel(host: string): number;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* DEPRECATED
|
||||
* @remarks
|
||||
* RAM cost: 0.1 GB
|
||||
*
|
||||
* Returns an array with two elements that gives information about a server’s memory (RAM).
|
||||
* The first element in the array is the amount of RAM that the server has total (in GB).
|
||||
* The second element in the array is the amount of RAM that is currently being used on
|
||||
* the server (in GB).
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* res = getServerRam("helios");
|
||||
* totalRam = res[0];
|
||||
* ramUsed = res[1];
|
||||
* ```
|
||||
* @param host - Host of target server.
|
||||
* @returns Array with total and used memory on the specified server.
|
||||
*/
|
||||
getServerRam(host: string): [number, number];
|
||||
|
||||
/**
|
||||
* Get the max RAM on a server.
|
||||
* @remarks
|
||||
* RAM cost: 0.05 GB
|
||||
*
|
||||
* @param host - Hostname of the target server.
|
||||
* @returns max ram
|
||||
*/
|
||||
getServerMaxRam(host: string): number;
|
||||
/**
|
||||
* Get the used RAM on a server.
|
||||
* @remarks
|
||||
* RAM cost: 0.05 GB
|
||||
*
|
||||
* @param host - Hostname of the target server.
|
||||
* @returns used ram
|
||||
*/
|
||||
getServerUsedRam(host: string): number;
|
||||
|
||||
/**
|
||||
* Returns the required hacking level of the target server.
|
||||
*
|
||||
@@ -4263,6 +4412,14 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
isRunning(script: string, host: string, ...args: string[]): boolean;
|
||||
|
||||
/**
|
||||
* Get general info about a running script.
|
||||
* @remarks
|
||||
* RAM cost: 0.3 GB
|
||||
* @returns info about a running script
|
||||
*/
|
||||
getRunningScript(fn: string | number, hostname: string, ...args: (string | number)[]): RunningScript;
|
||||
|
||||
/**
|
||||
* Get cost of purchasing a server.
|
||||
* @remarks
|
||||
@@ -4365,14 +4522,9 @@ export interface NS extends Singularity {
|
||||
* @remarks
|
||||
* RAM cost: 1 GB
|
||||
*
|
||||
* This function can be used to either write data to a port or to a text file (.txt).
|
||||
* This function can be used to either write data to a text file (.txt).
|
||||
*
|
||||
* If the first argument is a number between 1 and 20, then it specifies a port and this
|
||||
* function will write data to that port. The third argument, mode, is not used when writing
|
||||
* to a port.
|
||||
*
|
||||
* If the first argument is a string, then it specifies the name of a text file (.txt) and
|
||||
* this function will write data to that text file. If the specified text file does not exist,
|
||||
* This function will write data to that text file. If the specified text file does not exist,
|
||||
* then it will be created. The third argument mode, defines how the data will be written to
|
||||
* the text file. If *mode is set to “w”, then the data is written in “write” mode which means
|
||||
* that it will overwrite all existing data on the text file. If mode is set to any other value
|
||||
@@ -4383,7 +4535,7 @@ export interface NS extends Singularity {
|
||||
* @param data - Data to write.
|
||||
* @param mode - Defines the write mode. Only valid when writing to text files.
|
||||
*/
|
||||
write(handle: string | number, data?: string[] | number, mode?: "w" | "a"): void;
|
||||
write(handle: string, data?: string[] | number, mode?: "w" | "a"): Promise<void>;
|
||||
|
||||
/**
|
||||
* Attempt to write to a port.
|
||||
@@ -4398,7 +4550,7 @@ export interface NS extends Singularity {
|
||||
* @param data - Data to write.
|
||||
* @returns True if the data is successfully written to the port, and false otherwise.
|
||||
*/
|
||||
tryWrite(port: number, data: string[] | number): boolean;
|
||||
tryWrite(port: number, data: string[] | number): Promise<boolean>;
|
||||
|
||||
/**
|
||||
* Read content of a file.
|
||||
@@ -4407,19 +4559,13 @@ export interface NS extends Singularity {
|
||||
*
|
||||
* This function is used to read data from a port or from a text file (.txt).
|
||||
*
|
||||
* If the argument port/fn is a number between 1 and 20, then it specifies a
|
||||
* port and it will read data from that port. A port is a serialized queue.
|
||||
* This function will remove the first element from that queue and return it.
|
||||
* If the queue is empty, then the string “NULL PORT DATA” will be returned.
|
||||
*
|
||||
* If the argument port/fn is a string, then it specifies the name of a text
|
||||
* file (.txt) and this function will return the data in the specified text
|
||||
* This function will return the data in the specified text
|
||||
* file. If the text file does not exist, an empty string will be returned.
|
||||
*
|
||||
* @param handle - Port or text file to read from.
|
||||
* @returns Data in the specified text file or port.
|
||||
*/
|
||||
read(handle: string | number): string | number | object;
|
||||
read(handle: string): any;
|
||||
|
||||
/**
|
||||
* Get a copy of the data from a port without popping it.
|
||||
@@ -4433,24 +4579,50 @@ export interface NS extends Singularity {
|
||||
* @param port - Port to peek. Must be an integer between 1 and 20.
|
||||
* @returns Data in the specified port.
|
||||
*/
|
||||
peek(port: number): string | number | object;
|
||||
peek(port: number): any;
|
||||
|
||||
/**
|
||||
* Clear data from a file.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* Delete all data from that text file.
|
||||
*
|
||||
* @param handle - Text file to clear.
|
||||
*/
|
||||
clear(handle: string): void;
|
||||
|
||||
/**
|
||||
* Clear data from a port.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* This function is used to clear data in a Netscript Ports or a text file.
|
||||
* Deleta all data from the underlying queue.
|
||||
*
|
||||
* If the port/fn argument is a number between 1 and 20, then it specifies a
|
||||
* port and will clear it (deleting all data from the underlying queue).
|
||||
*
|
||||
* If the port/fn argument is a string, then it specifies the name of a
|
||||
* text file (.txt) and will delete all data from that text file.
|
||||
*
|
||||
* @param handle - Port or text file to clear.
|
||||
* @param handle - Port to clear.
|
||||
*/
|
||||
clear(handle: string | number): void;
|
||||
clearPort(handle: number): void;
|
||||
|
||||
/**
|
||||
* Write data to a port.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* Write data to that netscript port.
|
||||
* @returns The data popped off the queue if it was full.
|
||||
*/
|
||||
writePort(port: number, data: any): Promise<any>;
|
||||
/**
|
||||
* Read data from a port.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* Read data from that port. A port is a serialized queue.
|
||||
* This function will remove the first element from that queue and return it.
|
||||
* If the queue is empty, then the string “NULL PORT DATA” will be returned.
|
||||
* @returns the data read.
|
||||
*/
|
||||
readPort(port: number): any;
|
||||
|
||||
/**
|
||||
* Get all data on a port.
|
||||
@@ -4683,6 +4855,17 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
nFormat(n: number, format: string): number;
|
||||
|
||||
/**
|
||||
* Format time to readable string
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* @param milliseconds - Number of millisecond to format.
|
||||
* @param milliPrecision - Format time with subsecond precision, defaults to false.
|
||||
* @returns The formatted time.
|
||||
*/
|
||||
tFormat(milliseconds: number, milliPrecision?: boolean): string;
|
||||
|
||||
/**
|
||||
* Prompt the player with a Yes/No modal.
|
||||
* @remarks
|
||||
@@ -4698,6 +4881,19 @@ export interface NS extends Singularity {
|
||||
*/
|
||||
prompt(txt: string): Promise<boolean>;
|
||||
|
||||
/**
|
||||
* Open up a message box.
|
||||
* @param msg - Message to alert.
|
||||
*/
|
||||
alert(msg: any): void;
|
||||
|
||||
/**
|
||||
* Queue a toast (bottom-right notification).
|
||||
* @param msg - Message in the toast.
|
||||
* @param variant - Type of toast, must be one of success, info, warning, error. Defaults to success.
|
||||
*/
|
||||
toast(msg: any, variant?: string): void;
|
||||
|
||||
/**
|
||||
* Download a file from the internet.
|
||||
* @remarks
|
||||
@@ -4763,4 +4959,54 @@ export interface NS extends Singularity {
|
||||
* @returns Object containing the current BitNode multipliers.
|
||||
*/
|
||||
getBitNodeMultipliers(): BitNodeMultipliers;
|
||||
|
||||
/**
|
||||
* Get information about the player.
|
||||
* @returns Player info
|
||||
*/
|
||||
getPlayer(): Player;
|
||||
|
||||
/**
|
||||
* Add callback function when the script dies
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* NS2 exclusive
|
||||
*
|
||||
* Add callback to be executed when the script dies.
|
||||
*/
|
||||
atExit(f: () => void): void;
|
||||
|
||||
/**
|
||||
* Parse command line flags.
|
||||
* @remarks
|
||||
* RAM cost: 0 GB
|
||||
*
|
||||
* Allows unix like flag parsing.
|
||||
* @example
|
||||
* ```ts
|
||||
* // 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","exclude":[],"help":false}
|
||||
* // [home ~/]> run example.script --delay 3000
|
||||
* // {"_":[],"server":"foodnstuff","exclude":[],"help":false,"delay":3000}
|
||||
* // [home ~/]> run example.script --delay 3000 --server harakiri-sushi
|
||||
* // {"_":[],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}
|
||||
* // [home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world
|
||||
* // {"_":["hello","world"],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}
|
||||
* // [home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b
|
||||
* // {"_":["hello","world"],"help":false,"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}
|
||||
* // [home ~/]> run example.script --help
|
||||
* // {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}
|
||||
* ```
|
||||
*/
|
||||
flags(schema: [string, string | number | boolean | string[]][]): any;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user