diff --git a/src/Augmentation/AugmentationCreator.tsx b/src/Augmentation/AugmentationCreator.tsx index 2b1f87002..f2512a32d 100644 --- a/src/Augmentation/AugmentationCreator.tsx +++ b/src/Augmentation/AugmentationCreator.tsx @@ -2024,29 +2024,11 @@ export const churchOfTheMachineGodAugmentations = [ hacknet_node_core_cost_mult: 1 / 1.05, hacknet_node_level_cost_mult: 1 / 1.05, work_money_mult: 1 / 0.95, - stats: <>Staneks Gift has no penalty., + stats: <>Stanek's Gift has no penalty., factions: [FactionNames.ChurchOfTheMachineGod], }), ]; -export function getNextNeuroFluxLevel(): number { - // Get current Neuroflux level based on Player's augmentations - let currLevel = 0; - for (let i = 0; i < Player.augmentations.length; ++i) { - if (Player.augmentations[i].name === AugmentationNames.NeuroFluxGovernor) { - currLevel = Player.augmentations[i].level; - } - } - - // Account for purchased but uninstalled Augmentations - for (let i = 0; i < Player.queuedAugmentations.length; ++i) { - if (Player.queuedAugmentations[i].name == AugmentationNames.NeuroFluxGovernor) { - ++currLevel; - } - } - return currLevel + 1; -} - export function initNeuroFluxGovernor(): Augmentation { return new Augmentation({ name: AugmentationNames.NeuroFluxGovernor, diff --git a/src/Augmentation/AugmentationHelpers.tsx b/src/Augmentation/AugmentationHelpers.tsx index b0bb834d5..266d49899 100644 --- a/src/Augmentation/AugmentationHelpers.tsx +++ b/src/Augmentation/AugmentationHelpers.tsx @@ -11,18 +11,36 @@ import { SourceFileFlags } from "../SourceFile/SourceFileFlags"; import { dialogBoxCreate } from "../ui/React/DialogBox"; import { clearObject } from "../utils/helpers/clearObject"; + import { FactionNames } from "../Faction/data/FactionNames"; import { bladeburnerAugmentations, churchOfTheMachineGodAugmentations, generalAugmentations, - getNextNeuroFluxLevel, infiltratorsAugmentations, initNeuroFluxGovernor, initUnstableCircadianModulator, } from "./AugmentationCreator"; import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers"; +export function getNextNeuroFluxLevel(): number { + // Get current Neuroflux level based on Player's augmentations + let currLevel = 0; + for (let i = 0; i < Player.augmentations.length; ++i) { + if (Player.augmentations[i].name === AugmentationNames.NeuroFluxGovernor) { + currLevel = Player.augmentations[i].level; + } + } + + // Account for purchased but uninstalled Augmentations + for (let i = 0; i < Player.queuedAugmentations.length; ++i) { + if (Player.queuedAugmentations[i].name == AugmentationNames.NeuroFluxGovernor) { + ++currLevel; + } + } + return currLevel + 1; +} + export function AddToAugmentations(aug: Augmentation): void { const name = aug.name; Augmentations[name] = aug; diff --git a/src/BitNode/BitNodeMultipliers.ts b/src/BitNode/BitNodeMultipliers.ts index cbcdf2042..ac78815b8 100644 --- a/src/BitNode/BitNodeMultipliers.ts +++ b/src/BitNode/BitNodeMultipliers.ts @@ -232,6 +232,11 @@ interface IBitNodeMultipliers { */ WorldDaemonDifficulty: number; + /** + * Influences corporation dividends. + */ + CorporationSoftCap: number; + // Index signature [key: string]: number; } diff --git a/src/Bladeburner/Bladeburner.tsx b/src/Bladeburner/Bladeburner.tsx index 78163a764..11ebf3122 100644 --- a/src/Bladeburner/Bladeburner.tsx +++ b/src/Bladeburner/Bladeburner.tsx @@ -35,6 +35,7 @@ import { joinFaction } from "../Faction/FactionHelpers"; import { WorkerScript } from "../Netscript/WorkerScript"; import { FactionNames } from "../Faction/data/FactionNames"; import { BlackOperationNames } from "./data/BlackOperationNames"; +import { KEY } from "../utils/helpers/keyCodes"; interface BlackOpsAttempt { error?: string; @@ -793,7 +794,7 @@ export class Bladeburner implements IBladeburner { if (c === '"') { // Double quotes const endQuote = command.indexOf('"', i + 1); - if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === " ")) { + if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) { args.push(command.substr(i + 1, endQuote - i - 1)); if (endQuote === command.length - 1) { start = i = endQuote + 1; @@ -805,7 +806,7 @@ export class Bladeburner implements IBladeburner { } else if (c === "'") { // Single quotes, same thing as above const endQuote = command.indexOf("'", i + 1); - if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === " ")) { + if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) { args.push(command.substr(i + 1, endQuote - i - 1)); if (endQuote === command.length - 1) { start = i = endQuote + 1; @@ -814,7 +815,7 @@ export class Bladeburner implements IBladeburner { } continue; } - } else if (c === " ") { + } else if (c === KEY.SPACE) { args.push(command.substr(start, i - start)); start = i + 1; } diff --git a/src/Faction/ui/AugmentationsPage.tsx b/src/Faction/ui/AugmentationsPage.tsx index 77b66706d..89eb9f7f0 100644 --- a/src/Faction/ui/AugmentationsPage.tsx +++ b/src/Faction/ui/AugmentationsPage.tsx @@ -43,6 +43,7 @@ export function AugmentationsPage(props: IProps): React.ReactElement { function getAugs(): string[] { if (isPlayersGang) { + // TODO: this code is duplicated in getAugmentationsFromFaction DRY let augs = Object.values(Augmentations); // Remove special augs. @@ -53,7 +54,9 @@ export function AugmentationsPage(props: IProps): React.ReactElement { augs = augs.filter((a) => a.factions.length > 1 || props.faction.augmentations.includes(a.name)); // Remove blacklisted augs. - const blacklist = [AugmentationNames.NeuroFluxGovernor, AugmentationNames.TheRedPill]; + const blacklist = [AugmentationNames.NeuroFluxGovernor, AugmentationNames.TheRedPill].map( + (augmentation) => augmentation as string, + ); augs = augs.filter((a) => !blacklist.includes(a.name)); } @@ -184,6 +187,7 @@ export function AugmentationsPage(props: IProps): React.ReactElement { ); } + return ( <> diff --git a/src/NetscriptFunctions.ts b/src/NetscriptFunctions.ts index dd22c8568..d2af6e706 100644 --- a/src/NetscriptFunctions.ts +++ b/src/NetscriptFunctions.ts @@ -82,6 +82,13 @@ import { Stanek as IStanek, Infiltration as IInfiltration, SourceFileLvl, + BasicHGWOptions, + ProcessInfo, + HackingMultipliers, + HacknetMultipliers, + BitNodeMultipliers as IBNMults, + Server as IServerDef, + RunningScript as IRunningScriptDef, } from "./ScriptEditor/NetscriptDefinitions"; import { NetscriptSingularity } from "./NetscriptFunctions/Singularity"; @@ -165,9 +172,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { * is not specified. */ const getRunningScript = function ( - fn: any, - hostname: any, - callingFnName: any, + fn: string, + hostname: string, + callingFnName: string, scriptArgs: any, ): RunningScript | null { if (typeof callingFnName !== "string" || callingFnName === "") { @@ -196,7 +203,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return workerScript.scriptRef; }; - const getRunningScriptByPid = function (pid: any, callingFnName: any): RunningScript | null { + const getRunningScriptByPid = function (pid: number, callingFnName: string): RunningScript | null { if (typeof callingFnName !== "string" || callingFnName === "") { callingFnName = "getRunningScriptgetRunningScriptByPid"; } @@ -216,7 +223,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { * @param {any[]} scriptArgs - Running script's arguments * @returns {string} Error message to print to logs */ - const getCannotFindRunningScriptErrorMessage = function (fn: any, hostname: any, scriptArgs: any): string { + const getCannotFindRunningScriptErrorMessage = function (fn: string, hostname: string, scriptArgs: any): string { if (!Array.isArray(scriptArgs)) { scriptArgs = []; } @@ -231,7 +238,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { * @param {string} callingFn - Name of calling function. For logging purposes * @returns {boolean} True if the server is a Hacknet Server, false otherwise */ - const failOnHacknetServer = function (server: any, callingFn: any = ""): boolean { + const failOnHacknetServer = function (server: BaseServer, callingFn = ""): boolean { if (server instanceof HacknetServer) { workerScript.log(callingFn, () => `Does not work on Hacknet Servers`); return true; @@ -319,7 +326,11 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } }; - const hack = function (hostname: any, manual: any, { threads: requestedThreads, stock }: any = {}): Promise { + const hack = function ( + hostname: string, + manual: boolean, + { threads: requestedThreads, stock }: any = {}, + ): Promise { if (hostname === undefined) { throw makeRuntimeErrorMsg("hack", "Takes 1 argument."); } @@ -450,7 +461,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { getServer: safeGetServer, checkSingularityAccess: checkSingularityAccess, hack: hack, - getValidPort: (funcName: string, port: any): IPort => { + getValidPort: (funcName: string, port: number): IPort => { if (isNaN(port)) { throw makeRuntimeErrorMsg( funcName, @@ -506,7 +517,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { hacknet: hacknet, sprintf: sprintf, vsprintf: vsprintf, - scan: function (hostname: any = workerScript.hostname): any { + scan: function (_hostname: unknown = workerScript.hostname): string[] { + const hostname = helper.string("scan", "hostname", _hostname); updateDynamicRam("scan", getRamCost(Player, "scan")); const server = safeGetServer(hostname, "scan"); const out = []; @@ -520,11 +532,14 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { workerScript.log("scan", () => `returned ${server.serversOnNetwork.length} connections for ${server.hostname}`); return out; }, - hack: function (hostname: any, { threads: requestedThreads, stock }: any = {}): any { + hack: function (_hostname: unknown, { threads: requestedThreads, stock }: BasicHGWOptions = {}): Promise { + const hostname = helper.string("hack", "hostname", _hostname); updateDynamicRam("hack", getRamCost(Player, "hack")); return hack(hostname, false, { threads: requestedThreads, stock: stock }); }, - hackAnalyzeThreads: function (hostname: any, hackAmount: any): any { + hackAnalyzeThreads: function (_hostname: unknown, _hackAmount: unknown): number { + const hostname = helper.string("hackAnalyzeThreads", "hostname", _hostname); + const hackAmount = helper.number("hackAnalyzeThreads", "hackAmount", _hackAmount); updateDynamicRam("hackAnalyzeThreads", getRamCost(Player, "hackAnalyzeThreads")); // Check argument validity @@ -554,43 +569,48 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return hackAmount / Math.floor(server.moneyAvailable * percentHacked); }, - hackAnalyze: function (hostname: any): any { + hackAnalyze: function (_hostname: unknown): number { + const hostname = helper.string("hackAnalyze", "hostname", _hostname); updateDynamicRam("hackAnalyze", getRamCost(Player, "hackAnalyze")); const server = safeGetServer(hostname, "hackAnalyze"); if (!(server instanceof Server)) { workerScript.log("hackAnalyze", () => "Cannot be executed on this server."); - return false; + return 0; } return calculatePercentMoneyHacked(server, Player); }, - hackAnalyzeSecurity: function (threads: any): number { + hackAnalyzeSecurity: function (_threads: unknown): number { + const threads = helper.number("hackAnalyzeSecurity", "threads", _threads); updateDynamicRam("hackAnalyzeSecurity", getRamCost(Player, "hackAnalyzeSecurity")); return CONSTANTS.ServerFortifyAmount * threads; }, - hackAnalyzeChance: function (hostname: any): any { + hackAnalyzeChance: function (_hostname: unknown): number { + const hostname = helper.string("hackAnalyzeChance", "hostname", _hostname); updateDynamicRam("hackAnalyzeChance", getRamCost(Player, "hackAnalyzeChance")); const server = safeGetServer(hostname, "hackAnalyzeChance"); if (!(server instanceof Server)) { workerScript.log("hackAnalyzeChance", () => "Cannot be executed on this server."); - return false; + return 0; } return calculateHackingChance(server, Player); }, - sleep: function (time: any): any { + sleep: async function (_time: unknown = 0): Promise { + const time = helper.number("sleep", "time", _time); updateDynamicRam("sleep", getRamCost(Player, "sleep")); if (time === undefined) { throw makeRuntimeErrorMsg("sleep", "Takes 1 argument."); } workerScript.log("sleep", () => `Sleeping for ${time} milliseconds`); return netscriptDelay(time, workerScript).then(function () { - return Promise.resolve(true); + return Promise.resolve(); }); }, - asleep: function (time: any): any { + asleep: function (_time: unknown = 0): Promise { + const time = helper.number("asleep", "time", _time); updateDynamicRam("asleep", getRamCost(Player, "asleep")); if (time === undefined) { throw makeRuntimeErrorMsg("asleep", "Takes 1 argument."); @@ -598,16 +618,24 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { workerScript.log("asleep", () => `Sleeping for ${time} milliseconds`); return new Promise((resolve) => setTimeout(resolve, time)); }, - grow: function (hostname: any, { threads: requestedThreads, stock }: any = {}): any { + grow: async function ( + _hostname: unknown, + { threads: requestedThreads, stock }: BasicHGWOptions = {}, + ): Promise { + const hostname = helper.string("grow", "hostname", _hostname); updateDynamicRam("grow", getRamCost(Player, "grow")); - const threads = resolveNetscriptRequestedThreads(workerScript, "grow", requestedThreads); + const threads = resolveNetscriptRequestedThreads( + workerScript, + "grow", + requestedThreads ?? workerScript.scriptRef.threads, + ); if (hostname === undefined) { throw makeRuntimeErrorMsg("grow", "Takes 1 argument."); } const server = safeGetServer(hostname, "grow"); if (!(server instanceof Server)) { workerScript.log("grow", () => "Cannot be executed on this server."); - return false; + return Promise.resolve(0); } const host = GetServer(workerScript.hostname); @@ -653,14 +681,17 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return Promise.resolve(moneyAfter / moneyBefore); }); }, - growthAnalyze: function (hostname: any, growth: any, cores: any = 1): any { + growthAnalyze: function (_hostname: unknown, _growth: unknown, _cores: unknown = 1): number { + const hostname = helper.string("growthAnalyze", "hostname", _hostname); + const growth = helper.number("growthAnalyze", "growth", _growth); + const cores = helper.number("growthAnalyze", "cores", _cores); updateDynamicRam("growthAnalyze", getRamCost(Player, "growthAnalyze")); // Check argument validity const server = safeGetServer(hostname, "growthAnalyze"); if (!(server instanceof Server)) { workerScript.log("growthAnalyze", () => "Cannot be executed on this server."); - return false; + return 0; } if (typeof growth !== "number" || isNaN(growth) || growth < 1 || !isFinite(growth)) { throw makeRuntimeErrorMsg("growthAnalyze", `Invalid argument: growth must be numeric and >= 1, is ${growth}.`); @@ -668,20 +699,26 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return numCycleForGrowth(server, Number(growth), Player, cores); }, - growthAnalyzeSecurity: function (threads: any): number { + growthAnalyzeSecurity: function (_threads: unknown): number { + const threads = helper.number("growthAnalyzeSecurity", "threads", _threads); updateDynamicRam("growthAnalyzeSecurity", getRamCost(Player, "growthAnalyzeSecurity")); return 2 * CONSTANTS.ServerFortifyAmount * threads; }, - weaken: function (hostname: any, { threads: requestedThreads }: any = {}): any { + weaken: async function (_hostname: unknown, { threads: requestedThreads }: BasicHGWOptions = {}): Promise { + const hostname = helper.string("weaken", "hostname", _hostname); updateDynamicRam("weaken", getRamCost(Player, "weaken")); - const threads = resolveNetscriptRequestedThreads(workerScript, "weaken", requestedThreads); + const threads = resolveNetscriptRequestedThreads( + workerScript, + "weaken", + requestedThreads ?? workerScript.scriptRef.threads, + ); if (hostname === undefined) { throw makeRuntimeErrorMsg("weaken", "Takes 1 argument."); } const server = safeGetServer(hostname, "weaken"); if (!(server instanceof Server)) { workerScript.log("weaken", () => "Cannot be executed on this server."); - return false; + return Promise.resolve(0); } // No root access or skill level too low @@ -721,12 +758,14 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return Promise.resolve(CONSTANTS.ServerWeakenAmount * threads * coreBonus); }); }, - weakenAnalyze: function (threads: any, cores: any = 1): number { + weakenAnalyze: function (_threads: unknown, _cores: unknown = 1): number { + const threads = helper.number("weakenAnalyze", "threads", _threads); + const cores = helper.number("weakenAnalyze", "cores", _cores); updateDynamicRam("weakenAnalyze", getRamCost(Player, "weakenAnalyze")); const coreBonus = 1 + (cores - 1) / 16; return CONSTANTS.ServerWeakenAmount * threads * coreBonus * BitNodeMultipliers.ServerWeakenRate; }, - share: function (): Promise { + share: async function (): Promise { updateDynamicRam("share", getRamCost(Player, "share")); workerScript.log("share", () => "Sharing this computer."); const end = StartSharing(workerScript.scriptRef.threads * calculateIntelligenceBonus(Player.intelligence, 2)); @@ -746,7 +785,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } workerScript.print(argsToString(args)); }, - printf: function (format: string, ...args: any[]): void { + printf: function (_format: unknown, ...args: any[]): void { + const format = helper.string("printf", "format", _format); updateDynamicRam("printf", getRamCost(Player, "printf")); if (typeof format !== "string") { throw makeRuntimeErrorMsg("printf", "First argument must be string for the format."); @@ -777,7 +817,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } Terminal.print(`${workerScript.scriptRef.filename}: ${str}`); }, - tprintf: function (format: any, ...args: any): any { + tprintf: function (_format: unknown, ...args: any[]): void { + const format = helper.string("printf", "format", _format); updateDynamicRam("tprintf", getRamCost(Player, "tprintf")); if (typeof format !== "string") { throw makeRuntimeErrorMsg("tprintf", "First argument must be string for the format."); @@ -802,14 +843,15 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } Terminal.print(`${str}`); }, - clearLog: function (): any { + clearLog: function (): void { updateDynamicRam("clearLog", getRamCost(Player, "clearLog")); workerScript.scriptRef.clearLog(); }, - disableLog: function (fn: any): any { + disableLog: function (_fn: unknown): void { + const fn = helper.string("disableLog", "fn", _fn); updateDynamicRam("disableLog", getRamCost(Player, "disableLog")); if (fn === "ALL") { - for (fn of Object.keys(possibleLogs)) { + for (const fn of Object.keys(possibleLogs)) { workerScript.disableLogs[fn] = true; } workerScript.log("disableLog", () => `Disabled logging for all functions`); @@ -820,10 +862,11 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { workerScript.log("disableLog", () => `Disabled logging for ${fn}`); } }, - enableLog: function (fn: any): any { + enableLog: function (_fn: unknown): void { + const fn = helper.string("enableLog", "fn", _fn); updateDynamicRam("enableLog", getRamCost(Player, "enableLog")); if (fn === "ALL") { - for (fn of Object.keys(possibleLogs)) { + for (const fn of Object.keys(possibleLogs)) { delete workerScript.disableLogs[fn]; } workerScript.log("enableLog", () => `Enabled logging for all functions`); @@ -833,24 +876,29 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { delete workerScript.disableLogs[fn]; workerScript.log("enableLog", () => `Enabled logging for ${fn}`); }, - isLogEnabled: function (fn: any): any { + isLogEnabled: function (_fn: unknown): boolean { + const fn = helper.string("isLogEnabled", "fn", _fn); updateDynamicRam("isLogEnabled", getRamCost(Player, "isLogEnabled")); if (possibleLogs[fn] === undefined) { throw makeRuntimeErrorMsg("isLogEnabled", `Invalid argument: ${fn}.`); } return !workerScript.disableLogs[fn]; }, - getScriptLogs: function (fn: any, hostname: any, ...scriptArgs: any): any { + getScriptLogs: function (_fn: unknown, _hostname: unknown, ...scriptArgs: any[]): string[] { + const fn = helper.string("getScriptLogs", "fn", _fn); + const hostname = helper.string("getScriptLogs", "hostname", _hostname); updateDynamicRam("getScriptLogs", getRamCost(Player, "getScriptLogs")); const runningScriptObj = getRunningScript(fn, hostname, "getScriptLogs", scriptArgs); if (runningScriptObj == null) { workerScript.log("getScriptLogs", () => getCannotFindRunningScriptErrorMessage(fn, hostname, scriptArgs)); - return ""; + return []; } return runningScriptObj.logs.slice(); }, - tail: function (fn: any, hostname: any = workerScript.hostname, ...scriptArgs: any): any { + tail: function (_fn: unknown, _hostname: unknown = workerScript.hostname, ...scriptArgs: any[]): void { + const fn = helper.string("tail", "fn", _fn); + const hostname = helper.string("tail", "hostname", _hostname); updateDynamicRam("tail", getRamCost(Player, "tail")); let runningScriptObj; if (arguments.length === 0) { @@ -867,7 +915,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { LogBoxEvents.emit(runningScriptObj); }, - nuke: function (hostname: any): boolean { + nuke: function (_hostname: unknown): boolean { + const hostname = helper.string("tail", "hostname", _hostname); updateDynamicRam("nuke", getRamCost(Player, "nuke")); if (hostname === undefined) { throw makeRuntimeErrorMsg("nuke", "Takes 1 argument."); @@ -891,7 +940,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { workerScript.log("nuke", () => `Executed NUKE.exe virus on '${server.hostname}' to gain root access.`); return true; }, - brutessh: function (hostname: any): boolean { + brutessh: function (_hostname: unknown): boolean { + const hostname = helper.string("brutessh", "hostname", _hostname); updateDynamicRam("brutessh", getRamCost(Player, "brutessh")); if (hostname === undefined) { throw makeRuntimeErrorMsg("brutessh", "Takes 1 argument."); @@ -913,7 +963,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return true; }, - ftpcrack: function (hostname: any): boolean { + ftpcrack: function (_hostname: unknown): boolean { + const hostname = helper.string("ftpcrack", "hostname", _hostname); updateDynamicRam("ftpcrack", getRamCost(Player, "ftpcrack")); if (hostname === undefined) { throw makeRuntimeErrorMsg("ftpcrack", "Takes 1 argument."); @@ -935,7 +986,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return true; }, - relaysmtp: function (hostname: any): boolean { + relaysmtp: function (_hostname: unknown): boolean { + const hostname = helper.string("relaysmtp", "hostname", _hostname); updateDynamicRam("relaysmtp", getRamCost(Player, "relaysmtp")); if (hostname === undefined) { throw makeRuntimeErrorMsg("relaysmtp", "Takes 1 argument."); @@ -957,7 +1009,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return true; }, - httpworm: function (hostname: any): boolean { + httpworm: function (_hostname: unknown): boolean { + const hostname = helper.string("httpworm", "hostname", _hostname); updateDynamicRam("httpworm", getRamCost(Player, "httpworm")); if (hostname === undefined) { throw makeRuntimeErrorMsg("httpworm", "Takes 1 argument"); @@ -979,7 +1032,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return true; }, - sqlinject: function (hostname: any): boolean { + sqlinject: function (_hostname: unknown): boolean { + const hostname = helper.string("sqlinject", "hostname", _hostname); updateDynamicRam("sqlinject", getRamCost(Player, "sqlinject")); if (hostname === undefined) { throw makeRuntimeErrorMsg("sqlinject", "Takes 1 argument."); @@ -1001,7 +1055,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return true; }, - run: function (scriptname: any, threads: any = 1, ...args: any[]): any { + run: function (_scriptname: unknown, _threads: unknown = 1, ...args: any[]): number { + const scriptname = helper.string("run", "scriptname", _scriptname); + const threads = helper.number("run", "threads", _threads); updateDynamicRam("run", getRamCost(Player, "run")); if (scriptname === undefined) { throw makeRuntimeErrorMsg("run", "Usage: run(scriptname, [numThreads], [arg1], [arg2]...)"); @@ -1016,7 +1072,10 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return runScriptFromScript(Player, "run", scriptServer, scriptname, args, workerScript, threads); }, - exec: function (scriptname: any, hostname: any, threads: any = 1, ...args: any[]): any { + exec: function (_scriptname: unknown, _hostname: unknown, _threads: unknown = 1, ...args: any[]): number { + const scriptname = helper.string("exec", "scriptname", _scriptname); + const hostname = helper.string("exec", "hostname", _hostname); + const threads = helper.number("exec", "threads", _threads); updateDynamicRam("exec", getRamCost(Player, "exec")); if (scriptname === undefined || hostname === undefined) { throw makeRuntimeErrorMsg("exec", "Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)"); @@ -1027,7 +1086,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { const server = safeGetServer(hostname, "exec"); return runScriptFromScript(Player, "exec", server, scriptname, args, workerScript, threads); }, - spawn: function (scriptname: any, threads: any = 1, ...args: any[]): any { + spawn: function (_scriptname: unknown, _threads: unknown = 1, ...args: any[]): void { + const scriptname = helper.string("spawn", "scriptname", _scriptname); + const threads = helper.number("spawn", "threads", _threads); updateDynamicRam("spawn", getRamCost(Player, "spawn")); if (!scriptname || !threads) { throw makeRuntimeErrorMsg("spawn", "Usage: spawn(scriptname, threads)"); @@ -1053,7 +1114,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { workerScript.log("spawn", () => "Exiting..."); } }, - kill: function (filename: any, hostname?: any, ...scriptArgs: any): any { + kill: function (_filename: unknown, _hostname?: unknown, ...scriptArgs: any[]): boolean { + const filename = helper.string("kill", "filename", _filename); + const hostname = helper.string("kill", "hostname", _hostname); updateDynamicRam("kill", getRamCost(Player, "kill")); let res; @@ -1099,7 +1162,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return false; } }, - killall: function (hostname: any = workerScript.hostname): any { + killall: function (_hostname: unknown = workerScript.hostname): boolean { + const hostname = helper.string("killall", "hostname", _hostname); updateDynamicRam("killall", getRamCost(Player, "killall")); if (hostname === undefined) { throw makeRuntimeErrorMsg("killall", "Takes 1 argument"); @@ -1117,7 +1181,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return scriptsRunning; }, - exit: function (): any { + exit: function (): void { updateDynamicRam("exit", getRamCost(Player, "exit")); workerScript.running = false; // Prevent workerScript from "finishing execution naturally" if (killWorkerScript(workerScript)) { @@ -1126,7 +1190,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { workerScript.log("exit", () => "Failed. This is a bug. Report to dev."); } }, - scp: async function (scriptname: any, hostname1: any, hostname2?: any): Promise { + scp: async function (scriptname: any, _hostname1: unknown, hostname2?: any): Promise { + const hostname1 = helper.string("scp", "hostname1", _hostname1); updateDynamicRam("scp", getRamCost(Player, "scp")); if (arguments.length !== 2 && arguments.length !== 3) { throw makeRuntimeErrorMsg("scp", "Takes 2 or 3 arguments"); @@ -1283,7 +1348,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { newScript.updateRamUsage(Player, destServer.scripts).then(() => resolve(true)); }); }, - ls: function (hostname: any, grep: any): any { + ls: function (_hostname: unknown, _grep: unknown = ""): string[] { + const hostname = helper.string("ls", "hostname", _hostname); + const grep = helper.string("ls", "grep", _grep); updateDynamicRam("ls", getRamCost(Player, "ls")); if (hostname === undefined) { throw makeRuntimeErrorMsg("ls", "Usage: ls(hostname/ip, [grep filter])"); @@ -1350,7 +1417,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { allFiles.sort(); return allFiles; }, - ps: function (hostname: any = workerScript.hostname): any { + ps: function (_hostname: unknown = workerScript.hostname): ProcessInfo[] { + const hostname = helper.string("ps", "hostname", _hostname); updateDynamicRam("ps", getRamCost(Player, "ps")); const server = safeGetServer(hostname, "ps"); const processes = []; @@ -1364,7 +1432,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return processes; }, - hasRootAccess: function (hostname: any): any { + hasRootAccess: function (_hostname: unknown): boolean { + const hostname = helper.string("hasRootAccess", "hostname", _hostname); updateDynamicRam("hasRootAccess", getRamCost(Player, "hasRootAccess")); if (hostname === undefined) { throw makeRuntimeErrorMsg("hasRootAccess", "Takes 1 argument"); @@ -1372,7 +1441,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { const server = safeGetServer(hostname, "hasRootAccess"); return server.hasAdminRights; }, - getHostname: function (): any { + getHostname: function (): string { updateDynamicRam("getHostname", getRamCost(Player, "getHostname")); const scriptServer = GetServer(workerScript.hostname); if (scriptServer == null) { @@ -1380,13 +1449,13 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return scriptServer.hostname; }, - getHackingLevel: function (): any { + getHackingLevel: function (): number { updateDynamicRam("getHackingLevel", getRamCost(Player, "getHackingLevel")); Player.updateSkillLevels(); workerScript.log("getHackingLevel", () => `returned ${Player.hacking}`); return Player.hacking; }, - getHackingMultipliers: function (): any { + getHackingMultipliers: function (): HackingMultipliers { updateDynamicRam("getHackingMultipliers", getRamCost(Player, "getHackingMultipliers")); return { chance: Player.hacking_chance_mult, @@ -1395,7 +1464,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { growth: Player.hacking_grow_mult, }; }, - getHacknetMultipliers: function (): any { + getHacknetMultipliers: function (): HacknetMultipliers { updateDynamicRam("getHacknetMultipliers", getRamCost(Player, "getHacknetMultipliers")); return { production: Player.hacknet_node_money_mult, @@ -1405,7 +1474,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { levelCost: Player.hacknet_node_level_cost_mult, }; }, - getBitNodeMultipliers: function (): any { + getBitNodeMultipliers: function (): IBNMults { updateDynamicRam("getBitNodeMultipliers", getRamCost(Player, "getBitNodeMultipliers")); if (SourceFileFlags[5] <= 0 && Player.bitNodeN !== 5) { throw makeRuntimeErrorMsg("getBitNodeMultipliers", "Requires Source-File 5 to run."); @@ -1413,7 +1482,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { const copy = Object.assign({}, BitNodeMultipliers); return copy; }, - getServer: function (hostname: any = workerScript.hostname): any { + getServer: function (_hostname: unknown = workerScript.hostname): IServerDef { + const hostname = helper.string("getServer", "hostname", _hostname); updateDynamicRam("getServer", getRamCost(Player, "getServer")); const server = safeGetServer(hostname, "getServer"); const copy = Object.assign({}, server) as any; @@ -1436,7 +1506,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { if (!copy.serverGrowth) copy.serverGrowth = 0; return copy; }, - getServerMoneyAvailable: function (hostname: any): any { + getServerMoneyAvailable: function (_hostname: unknown): number { + const hostname = helper.string("getServerMoneyAvailable", "hostname", _hostname); updateDynamicRam("getServerMoneyAvailable", getRamCost(Player, "getServerMoneyAvailable")); const server = safeGetServer(hostname, "getServerMoneyAvailable"); if (!(server instanceof Server)) { @@ -1460,7 +1531,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return server.moneyAvailable; }, - getServerSecurityLevel: function (hostname: any): any { + getServerSecurityLevel: function (_hostname: unknown): number { + const hostname = helper.string("getServerSecurityLevel", "hostname", _hostname); updateDynamicRam("getServerSecurityLevel", getRamCost(Player, "getServerSecurityLevel")); const server = safeGetServer(hostname, "getServerSecurityLevel"); if (!(server instanceof Server)) { @@ -1476,7 +1548,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return server.hackDifficulty; }, - getServerBaseSecurityLevel: function (hostname: any): any { + getServerBaseSecurityLevel: function (_hostname: unknown): number { + const hostname = helper.string("getServerBaseSecurityLevel", "hostname", _hostname); updateDynamicRam("getServerBaseSecurityLevel", getRamCost(Player, "getServerBaseSecurityLevel")); workerScript.log( "getServerBaseSecurityLevel", @@ -1496,7 +1569,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return server.baseDifficulty; }, - getServerMinSecurityLevel: function (hostname: any): any { + getServerMinSecurityLevel: function (_hostname: unknown): number { + const hostname = helper.string("getServerMinSecurityLevel", "hostname", _hostname); updateDynamicRam("getServerMinSecurityLevel", getRamCost(Player, "getServerMinSecurityLevel")); const server = safeGetServer(hostname, "getServerMinSecurityLevel"); if (!(server instanceof Server)) { @@ -1512,7 +1586,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return server.minDifficulty; }, - getServerRequiredHackingLevel: function (hostname: any): any { + getServerRequiredHackingLevel: function (_hostname: unknown): number { + const hostname = helper.string("getServerRequiredHackingLevel", "hostname", _hostname); updateDynamicRam("getServerRequiredHackingLevel", getRamCost(Player, "getServerRequiredHackingLevel")); const server = safeGetServer(hostname, "getServerRequiredHackingLevel"); if (!(server instanceof Server)) { @@ -1528,7 +1603,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return server.requiredHackingSkill; }, - getServerMaxMoney: function (hostname: any): any { + getServerMaxMoney: function (_hostname: unknown): number { + const hostname = helper.string("getServerMaxMoney", "hostname", _hostname); updateDynamicRam("getServerMaxMoney", getRamCost(Player, "getServerMaxMoney")); const server = safeGetServer(hostname, "getServerMaxMoney"); if (!(server instanceof Server)) { @@ -1544,7 +1620,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return server.moneyMax; }, - getServerGrowth: function (hostname: any): any { + getServerGrowth: function (_hostname: unknown): number { + const hostname = helper.string("getServerGrowth", "hostname", _hostname); updateDynamicRam("getServerGrowth", getRamCost(Player, "getServerGrowth")); const server = safeGetServer(hostname, "getServerGrowth"); if (!(server instanceof Server)) { @@ -1557,7 +1634,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { workerScript.log("getServerGrowth", () => `returned ${server.serverGrowth} for '${server.hostname}'`); return server.serverGrowth; }, - getServerNumPortsRequired: function (hostname: any): any { + getServerNumPortsRequired: function (_hostname: unknown): number { + const hostname = helper.string("getServerNumPortsRequired", "hostname", _hostname); updateDynamicRam("getServerNumPortsRequired", getRamCost(Player, "getServerNumPortsRequired")); const server = safeGetServer(hostname, "getServerNumPortsRequired"); if (!(server instanceof Server)) { @@ -1573,7 +1651,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return server.numOpenPortsRequired; }, - getServerRam: function (hostname: any): any { + getServerRam: function (_hostname: unknown): [number, number] { + const hostname = helper.string("getServerRam", "hostname", _hostname); updateDynamicRam("getServerRam", getRamCost(Player, "getServerRam")); workerScript.log( "getServerRam", @@ -1586,23 +1665,28 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return [server.maxRam, server.ramUsed]; }, - getServerMaxRam: function (hostname: any): any { + getServerMaxRam: function (_hostname: unknown): number { + const hostname = helper.string("getServerMaxRam", "hostname", _hostname); updateDynamicRam("getServerMaxRam", getRamCost(Player, "getServerMaxRam")); const server = safeGetServer(hostname, "getServerMaxRam"); workerScript.log("getServerMaxRam", () => `returned ${numeralWrapper.formatRAM(server.maxRam)}`); return server.maxRam; }, - getServerUsedRam: function (hostname: any): any { + getServerUsedRam: function (_hostname: unknown): number { + const hostname = helper.string("getServerUsedRam", "hostname", _hostname); updateDynamicRam("getServerUsedRam", getRamCost(Player, "getServerUsedRam")); const server = safeGetServer(hostname, "getServerUsedRam"); workerScript.log("getServerUsedRam", () => `returned ${numeralWrapper.formatRAM(server.ramUsed)}`); return server.ramUsed; }, - serverExists: function (hostname: any): any { + serverExists: function (_hostname: unknown): boolean { + const hostname = helper.string("serverExists", "hostname", _hostname); updateDynamicRam("serverExists", getRamCost(Player, "serverExists")); return GetServer(hostname) !== null; }, - fileExists: function (filename: any, hostname: any = workerScript.hostname): any { + fileExists: function (_filename: unknown, _hostname: unknown = workerScript.hostname): boolean { + const filename = helper.string("fileExists", "filename", _filename); + const hostname = helper.string("fileExists", "hostname", _hostname); updateDynamicRam("fileExists", getRamCost(Player, "fileExists")); if (filename === undefined) { throw makeRuntimeErrorMsg("fileExists", "Usage: fileExists(scriptname, [server])"); @@ -1626,7 +1710,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { const txtFile = getTextFile(filename, server); return txtFile != null; }, - isRunning: function (fn: any, hostname: any = workerScript.hostname, ...scriptArgs: any): any { + isRunning: function (_fn: unknown, _hostname: unknown = workerScript.hostname, ...scriptArgs: any[]): boolean { + const fn = helper.string("isRunning", "fn", _fn); + const hostname = helper.string("isRunning", "hostname", _hostname); updateDynamicRam("isRunning", getRamCost(Player, "isRunning")); if (fn === undefined || hostname === undefined) { throw makeRuntimeErrorMsg("isRunning", "Usage: isRunning(scriptname, server, [arg1], [arg2]...)"); @@ -1637,17 +1723,18 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return getRunningScript(fn, hostname, "isRunning", scriptArgs) != null; } }, - getPurchasedServerLimit: function (): any { + getPurchasedServerLimit: function (): number { updateDynamicRam("getPurchasedServerLimit", getRamCost(Player, "getPurchasedServerLimit")); return getPurchaseServerLimit(); }, - getPurchasedServerMaxRam: function (): any { + getPurchasedServerMaxRam: function (): number { updateDynamicRam("getPurchasedServerMaxRam", getRamCost(Player, "getPurchasedServerMaxRam")); return getPurchaseServerMaxRam(); }, - getPurchasedServerCost: function (ram: any): any { + getPurchasedServerCost: function (_ram: unknown): number { + const ram = helper.number("getPurchasedServerCost", "ram", _ram); updateDynamicRam("getPurchasedServerCost", getRamCost(Player, "getPurchasedServerCost")); const cost = getPurchaseServerCost(ram); @@ -1658,10 +1745,10 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return cost; }, - purchaseServer: function (aname: any, aram: any): any { + purchaseServer: function (_name: unknown, _ram: unknown): string { + const name = helper.string("purchaseServer", "name", _name); + const ram = helper.number("purchaseServer", "ram", _ram); if (arguments.length !== 2) throw makeRuntimeErrorMsg("purchaseServer", "Takes 2 arguments"); - const name = helper.string("purchaseServer", "name", aname); - const ram = helper.number("purchaseServer", "ram", aram); updateDynamicRam("purchaseServer", getRamCost(Player, "purchaseServer")); let hostnameStr = String(name); hostnameStr = hostnameStr.replace(/\s+/g, ""); @@ -1722,7 +1809,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return newServ.hostname; }, - deleteServer: function (name: any): any { + deleteServer: function (_name: unknown): boolean { + const name = helper.string("purchaseServer", "name", _name); updateDynamicRam("deleteServer", getRamCost(Player, "deleteServer")); let hostnameStr = String(name); hostnameStr = hostnameStr.replace(/\s\s+/g, ""); @@ -1798,7 +1886,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { ); return false; }, - getPurchasedServers: function (): any { + getPurchasedServers: function (): string[] { updateDynamicRam("getPurchasedServers", getRamCost(Player, "getPurchasedServers")); const res: string[] = []; Player.purchasedServers.forEach(function (hostname) { @@ -1806,7 +1894,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { }); return res; }, - writePort: function (port: any, data: any = ""): any { + writePort: function (_port: unknown, data: any = ""): Promise { + const port = helper.number("writePort", "port", _port); updateDynamicRam("writePort", getRamCost(Player, "writePort")); if (typeof data !== "string" && typeof data !== "number") { throw makeRuntimeErrorMsg( @@ -1817,7 +1906,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { const iport = helper.getValidPort("writePort", port); return Promise.resolve(iport.write(data)); }, - write: function (port: any, data: any = "", mode: any = "a"): any { + write: function (_port: unknown, data: any = "", _mode: unknown = "a"): Promise { + const port = helper.string("write", "port", _port); + const mode = helper.string("write", "mode", _mode); updateDynamicRam("write", getRamCost(Player, "write")); if (isString(port)) { // Write to script or text file @@ -1870,7 +1961,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { throw makeRuntimeErrorMsg("write", `Invalid argument: ${port}`); } }, - tryWritePort: function (port: any, data: any = ""): any { + tryWritePort: function (_port: unknown, data: any = ""): Promise { + let port = helper.number("tryWritePort", "port", _port); updateDynamicRam("tryWritePort", getRamCost(Player, "tryWritePort")); if (typeof data !== "string" && typeof data !== "number") { throw makeRuntimeErrorMsg( @@ -1895,14 +1987,16 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { throw makeRuntimeErrorMsg("tryWritePort", `Invalid argument: ${port}`); } }, - readPort: function (port: any): any { + readPort: function (_port: unknown): any { + const port = helper.number("readPort", "port", _port); updateDynamicRam("readPort", getRamCost(Player, "readPort")); // Read from port const iport = helper.getValidPort("readPort", port); const x = iport.read(); return x; }, - read: function (port: any): any { + read: function (_port: unknown): string { + const port = helper.string("read", "port", _port); updateDynamicRam("read", getRamCost(Player, "read")); if (isString(port)) { // Read from script or text file @@ -1931,13 +2025,15 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { throw makeRuntimeErrorMsg("read", `Invalid argument: ${port}`); } }, - peek: function (port: any): any { + peek: function (_port: unknown): any { + const port = helper.number("peek", "port", _port); updateDynamicRam("peek", getRamCost(Player, "peek")); const iport = helper.getValidPort("peek", port); const x = iport.peek(); return x; }, - clear: function (file: any): any { + clear: function (_file: unknown): void { + const file = helper.string("peek", "file", _file); updateDynamicRam("clear", getRamCost(Player, "clear")); if (isString(file)) { // Clear text file @@ -1953,20 +2049,23 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } else { throw makeRuntimeErrorMsg("clear", `Invalid argument: ${file}`); } - return 0; }, - clearPort: function (port: any): any { + clearPort: function (_port: unknown): void { + const port = helper.number("clearPort", "port", _port); updateDynamicRam("clearPort", getRamCost(Player, "clearPort")); // Clear port const iport = helper.getValidPort("clearPort", port); - return iport.clear(); + iport.clear(); }, - getPortHandle: function (port: any): IPort { + getPortHandle: function (_port: unknown): IPort { + const port = helper.number("getPortHandle", "port", _port); updateDynamicRam("getPortHandle", getRamCost(Player, "getPortHandle")); const iport = helper.getValidPort("getPortHandle", port); return iport; }, - rm: function (fn: any, hostname: any): any { + rm: function (_fn: unknown, _hostname: unknown): boolean { + const fn = helper.string("rm", "fn", _fn); + let hostname = helper.string("rm", "hostname", _hostname); updateDynamicRam("rm", getRamCost(Player, "rm")); if (hostname == null || hostname === "") { @@ -1981,7 +2080,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return status.res; }, - scriptRunning: function (scriptname: any, hostname: any): any { + scriptRunning: function (_scriptname: unknown, _hostname: unknown): boolean { + const scriptname = helper.string("scriptRunning", "scriptname", _scriptname); + const hostname = helper.string("scriptRunning", "hostname", _hostname); updateDynamicRam("scriptRunning", getRamCost(Player, "scriptRunning")); const server = safeGetServer(hostname, "scriptRunning"); for (let i = 0; i < server.runningScripts.length; ++i) { @@ -1991,7 +2092,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return false; }, - scriptKill: function (scriptname: any, hostname: any): any { + scriptKill: function (_scriptname: unknown, _hostname: unknown): boolean { + const scriptname = helper.string("scriptKill", "scriptname", _scriptname); + const hostname = helper.string("scriptKill", "hostname", _hostname); updateDynamicRam("scriptKill", getRamCost(Player, "scriptKill")); const server = safeGetServer(hostname, "scriptKill"); let suc = false; @@ -2004,11 +2107,13 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return suc; }, - getScriptName: function (): any { + getScriptName: function (): string { updateDynamicRam("getScriptName", getRamCost(Player, "getScriptName")); return workerScript.name; }, - getScriptRam: function (scriptname: any, hostname: any = workerScript.hostname): any { + getScriptRam: function (_scriptname: unknown, _hostname: unknown = workerScript.hostname): number { + const scriptname = helper.string("getScriptRam", "scriptname", _scriptname); + const hostname = helper.string("getScriptRam", "hostname", _hostname); updateDynamicRam("getScriptRam", getRamCost(Player, "getScriptRam")); const server = safeGetServer(hostname, "getScriptRam"); for (let i = 0; i < server.scripts.length; ++i) { @@ -2018,7 +2123,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { } return 0; }, - getRunningScript: function (fn: any, hostname: any, ...args: any[]): any { + getRunningScript: function (_fn: unknown, _hostname: unknown, ...args: any[]): IRunningScriptDef | null { + const fn = helper.string("getRunningScript", "fn", _fn); + const hostname = helper.string("getRunningScript", "hostname", _hostname); updateDynamicRam("getRunningScript", getRamCost(Player, "getRunningScript")); let runningScript; @@ -2046,7 +2153,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { threads: runningScript.threads, }; }, - getHackTime: function (hostname: any): any { + getHackTime: function (_hostname: unknown = workerScript.hostname): number { + const hostname = helper.string("getHackTime", "hostname", _hostname); updateDynamicRam("getHackTime", getRamCost(Player, "getHackTime")); const server = safeGetServer(hostname, "getHackTime"); if (!(server instanceof Server)) { @@ -2059,7 +2167,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return calculateHackingTime(server, Player) * 1000; }, - getGrowTime: function (hostname: any): any { + getGrowTime: function (_hostname: unknown = workerScript.hostname): number { + const hostname = helper.string("getGrowTime", "hostname", _hostname); updateDynamicRam("getGrowTime", getRamCost(Player, "getGrowTime")); const server = safeGetServer(hostname, "getGrowTime"); if (!(server instanceof Server)) { @@ -2072,7 +2181,8 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return calculateGrowTime(server, Player) * 1000; }, - getWeakenTime: function (hostname: any = workerScript.hostname): any { + getWeakenTime: function (_hostname: unknown = workerScript.hostname): number { + const hostname = helper.string("getWeakenTime", "hostname", _hostname); updateDynamicRam("getWeakenTime", getRamCost(Player, "getWeakenTime")); const server = safeGetServer(hostname, "getWeakenTime"); if (!(server instanceof Server)) { @@ -2114,7 +2224,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return runningScriptObj.onlineMoneyMade / runningScriptObj.onlineRunningTime; } }, - getScriptExpGain: function (scriptname?: any, hostname?: any, ...args: any[]): any { + getScriptExpGain: function (scriptname?: any, hostname?: any, ...args: any[]): number { updateDynamicRam("getScriptExpGain", getRamCost(Player, "getScriptExpGain")); if (arguments.length === 0) { let total = 0; @@ -2136,40 +2246,43 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return runningScriptObj.onlineExpGained / runningScriptObj.onlineRunningTime; } }, - nFormat: function (n: any, format: any): any { + nFormat: function (_n: unknown, _format: unknown): string { + const n = helper.number("nFormat", "n", _n); + const format = helper.string("nFormat", "format", _format); updateDynamicRam("nFormat", getRamCost(Player, "nFormat")); - if (isNaN(n) || isNaN(parseFloat(n)) || typeof format !== "string") { + if (isNaN(n)) { return ""; } - return numeralWrapper.format(parseFloat(n), format); + return numeralWrapper.format(n, format); }, - tFormat: function (milliseconds: any, milliPrecision: any = false): any { + tFormat: function (_milliseconds: unknown, _milliPrecision: unknown = false): string { + const milliseconds = helper.number("tFormat", "milliseconds", _milliseconds); + const milliPrecision = helper.boolean(_milliPrecision); updateDynamicRam("tFormat", getRamCost(Player, "tFormat")); return convertTimeMsToTimeElapsedString(milliseconds, milliPrecision); }, - getTimeSinceLastAug: function (): any { + getTimeSinceLastAug: function (): number { updateDynamicRam("getTimeSinceLastAug", getRamCost(Player, "getTimeSinceLastAug")); return Player.playtimeSinceLastAug; }, - alert: function (message: any): void { + alert: function (_message: unknown): void { + const message = helper.string("alert", "message", _message); updateDynamicRam("alert", getRamCost(Player, "alert")); - message = argsToString([message]); dialogBoxCreate(message); }, - toast: function (message: any, variant: any = "success", duration: any = 2000): void { + toast: function (_message: unknown, _variant: unknown = "success", _duration: unknown = 2000): void { + const message = helper.string("toast", "message", _message); + const variant = helper.string("toast", "variant", _variant); + const duration = helper.number("toast", "duration", _duration); updateDynamicRam("toast", getRamCost(Player, "toast")); if (!["success", "info", "warning", "error"].includes(variant)) throw new Error(`variant must be one of "success", "info", "warning", or "error"`); - - message = argsToString([message]); - SnackbarEvents.emit(message, variant, duration); + SnackbarEvents.emit(message, variant as any, duration); }, - prompt: function (txt: any, options?: { type?: string; options?: string[] }): any { + prompt: function (_txt: unknown, options?: { type?: string; options?: string[] }): Promise { + const txt = helper.string("toast", "txt", _txt); updateDynamicRam("prompt", getRamCost(Player, "prompt")); - if (!isString(txt)) { - txt = JSON.stringify(txt); - } return new Promise(function (resolve) { PromptEvent.emit({ @@ -2179,7 +2292,14 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { }); }); }, - wget: async function (url: any, target: any, hostname: any = workerScript.hostname): Promise { + wget: async function ( + _url: unknown, + _target: unknown, + _hostname: unknown = workerScript.hostname, + ): Promise { + const url = helper.string("wget", "url", _url); + const target = helper.string("wget", "target", _target); + const hostname = helper.string("wget", "hostname", _hostname); updateDynamicRam("wget", getRamCost(Player, "wget")); if (!isScriptFilename(target) && !target.endsWith(".txt")) { workerScript.log("wget", () => `Invalid target file: '${target}'. Must be a script or text file.`); @@ -2217,7 +2337,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { }); }); }, - getFavorToDonate: function (): any { + getFavorToDonate: function (): number { updateDynamicRam("getFavorToDonate", getRamCost(Player, "getFavorToDonate")); return Math.floor(CONSTANTS.BaseFavorToDonate * BitNodeMultipliers.RepToDonateToFaction); }, @@ -2344,11 +2464,12 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { f(); }; // Wrap the user function to prevent WorkerScript leaking as 'this' }, - mv: function (host: string, source: string, destination: string): void { + mv: function (_host: unknown, _source: unknown, _destination: unknown): void { + const host = helper.string("mv", "host", _host); + const source = helper.string("mv", "source", _source); + const destination = helper.string("mv", "destination", _destination); updateDynamicRam("mv", getRamCost(Player, "mv")); - if (arguments.length != 3) throw makeRuntimeErrorMsg("mv", "Takes 3 argument."); - if (!isValidFilePath(source)) throw makeRuntimeErrorMsg("mv", `Invalid filename: '${source}'`); if (!isValidFilePath(destination)) throw makeRuntimeErrorMsg("mv", `Invalid filename: '${destination}'`); diff --git a/src/NetscriptFunctions/Bladeburner.ts b/src/NetscriptFunctions/Bladeburner.ts index c04e6ccfb..f6e669665 100644 --- a/src/NetscriptFunctions/Bladeburner.ts +++ b/src/NetscriptFunctions/Bladeburner.ts @@ -5,13 +5,14 @@ import { Bladeburner } from "../Bladeburner/Bladeburner"; import { getRamCost } from "../Netscript/RamCostGenerator"; import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers"; import { Bladeburner as INetscriptBladeburner, BladeburnerCurAction } from "../ScriptEditor/NetscriptDefinitions"; +import { IAction } from "src/Bladeburner/IAction"; export function NetscriptBladeburner( player: IPlayer, workerScript: WorkerScript, helper: INetscriptHelper, ): INetscriptBladeburner { - const checkBladeburnerAccess = function (func: any, skipjoined: any = false): void { + const checkBladeburnerAccess = function (func: string, skipjoined = false): void { const bladeburner = player.bladeburner; if (bladeburner === null) throw new Error("Must have joined bladeburner"); const apiAccess = @@ -32,7 +33,7 @@ export function NetscriptBladeburner( } }; - const checkBladeburnerCity = function (func: any, city: any): void { + const checkBladeburnerCity = function (func: string, city: string): void { const bladeburner = player.bladeburner; if (bladeburner === null) throw new Error("Must have joined bladeburner"); if (!bladeburner.cities.hasOwnProperty(city)) { @@ -40,7 +41,7 @@ export function NetscriptBladeburner( } }; - const getBladeburnerActionObject = function (func: any, type: any, name: any): any { + const getBladeburnerActionObject = function (func: string, type: string, name: string): IAction { const bladeburner = player.bladeburner; if (bladeburner === null) throw new Error("Must have joined bladeburner"); const actionId = bladeburner.getActionIdFromTypeAndName(type, name); @@ -77,10 +78,11 @@ export function NetscriptBladeburner( if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); return bladeburner.getBlackOpNamesNetscriptFn(); }, - getBlackOpRank: function (name: any = ""): number { + getBlackOpRank: function (_blackOpName: unknown): number { + const blackOpName = helper.string("getBlackOpRank", "blackOpName", _blackOpName); helper.updateDynamicRam("getBlackOpRank", getRamCost(player, "bladeburner", "getBlackOpRank")); checkBladeburnerAccess("getBlackOpRank"); - const action: any = getBladeburnerActionObject("getBlackOpRank", "blackops", name); + const action: any = getBladeburnerActionObject("getBlackOpRank", "blackops", blackOpName); return action.reqdRank; }, getGeneralActionNames: function (): string[] { @@ -97,7 +99,9 @@ export function NetscriptBladeburner( if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); return bladeburner.getSkillNamesNetscriptFn(); }, - startAction: function (type: any = "", name: any = ""): boolean { + startAction: function (_type: unknown, _name: unknown): boolean { + const type = helper.string("startAction", "type", _type); + const name = helper.string("startAction", "name", _name); helper.updateDynamicRam("startAction", getRamCost(player, "bladeburner", "startAction")); checkBladeburnerAccess("startAction"); const bladeburner = player.bladeburner; @@ -122,7 +126,9 @@ export function NetscriptBladeburner( if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); return bladeburner.getTypeAndNameFromActionId(bladeburner.action); }, - getActionTime: function (type: any = "", name: any = ""): number { + getActionTime: function (_type: unknown, _name: unknown): number { + const type = helper.string("getActionTime", "type", _type); + const name = helper.string("getActionTime", "name", _name); helper.updateDynamicRam("getActionTime", getRamCost(player, "bladeburner", "getActionTime")); checkBladeburnerAccess("getActionTime"); const bladeburner = player.bladeburner; @@ -133,7 +139,9 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.getActionTime", e); } }, - getActionEstimatedSuccessChance: function (type: any = "", name: any = ""): [number, number] { + getActionEstimatedSuccessChance: function (_type: unknown, _name: unknown): [number, number] { + const type = helper.string("getActionEstimatedSuccessChance", "type", _type); + const name = helper.string("getActionEstimatedSuccessChance", "name", _name); helper.updateDynamicRam( "getActionEstimatedSuccessChance", getRamCost(player, "bladeburner", "getActionEstimatedSuccessChance"), @@ -147,7 +155,10 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.getActionEstimatedSuccessChance", e); } }, - getActionRepGain: function (type: any = "", name: any = "", level: any): number { + getActionRepGain: function (_type: unknown, _name: unknown, _level: unknown): number { + const type = helper.string("getActionRepGain", "type", _type); + const name = helper.string("getActionRepGain", "name", _name); + const level = helper.number("getActionRepGain", "level", _level); helper.updateDynamicRam("getActionRepGain", getRamCost(player, "bladeburner", "getActionRepGain")); checkBladeburnerAccess("getActionRepGain"); const action = getBladeburnerActionObject("getActionRepGain", type, name); @@ -160,7 +171,9 @@ export function NetscriptBladeburner( return action.rankGain * rewardMultiplier * BitNodeMultipliers.BladeburnerRank; }, - getActionCountRemaining: function (type: any = "", name: any = ""): number { + getActionCountRemaining: function (_type: unknown, _name: unknown): number { + const type = helper.string("getActionCountRemaining", "type", _type); + const name = helper.string("getActionCountRemaining", "name", _name); helper.updateDynamicRam("getActionCountRemaining", getRamCost(player, "bladeburner", "getActionCountRemaining")); checkBladeburnerAccess("getActionCountRemaining"); const bladeburner = player.bladeburner; @@ -171,31 +184,43 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.getActionCountRemaining", e); } }, - getActionMaxLevel: function (type: any = "", name: any = ""): number { + getActionMaxLevel: function (_type: unknown, _name: unknown): number { + const type = helper.string("getActionMaxLevel", "type", _type); + const name = helper.string("getActionMaxLevel", "name", _name); helper.updateDynamicRam("getActionMaxLevel", getRamCost(player, "bladeburner", "getActionMaxLevel")); checkBladeburnerAccess("getActionMaxLevel"); const action = getBladeburnerActionObject("getActionMaxLevel", type, name); return action.maxLevel; }, - getActionCurrentLevel: function (type: any = "", name: any = ""): number { + getActionCurrentLevel: function (_type: unknown, _name: unknown): number { + const type = helper.string("getActionCurrentLevel", "type", _type); + const name = helper.string("getActionCurrentLevel", "name", _name); helper.updateDynamicRam("getActionCurrentLevel", getRamCost(player, "bladeburner", "getActionCurrentLevel")); checkBladeburnerAccess("getActionCurrentLevel"); const action = getBladeburnerActionObject("getActionCurrentLevel", type, name); return action.level; }, - getActionAutolevel: function (type: any = "", name: any = ""): boolean { + getActionAutolevel: function (_type: unknown, _name: unknown): boolean { + const type = helper.string("getActionAutolevel", "type", _type); + const name = helper.string("getActionAutolevel", "name", _name); helper.updateDynamicRam("getActionAutolevel", getRamCost(player, "bladeburner", "getActionAutolevel")); checkBladeburnerAccess("getActionAutolevel"); const action = getBladeburnerActionObject("getActionCurrentLevel", type, name); return action.autoLevel; }, - setActionAutolevel: function (type: any = "", name: any = "", autoLevel: any = true): void { + setActionAutolevel: function (_type: unknown, _name: unknown, _autoLevel: unknown = true): void { + const type = helper.string("setActionAutolevel", "type", _type); + const name = helper.string("setActionAutolevel", "name", _name); + const autoLevel = helper.boolean(_autoLevel); helper.updateDynamicRam("setActionAutolevel", getRamCost(player, "bladeburner", "setActionAutolevel")); checkBladeburnerAccess("setActionAutolevel"); const action = getBladeburnerActionObject("setActionAutolevel", type, name); action.autoLevel = autoLevel; }, - setActionLevel: function (type: any = "", name: any = "", level: any = 1): void { + setActionLevel: function (_type: unknown, _name: unknown, _level: unknown = 1): void { + const type = helper.string("setActionLevel", "type", _type); + const name = helper.string("setActionLevel", "name", _name); + const level = helper.number("setActionLevel", "level", _level); helper.updateDynamicRam("setActionLevel", getRamCost(player, "bladeburner", "setActionLevel")); checkBladeburnerAccess("setActionLevel"); const action = getBladeburnerActionObject("setActionLevel", type, name); @@ -221,7 +246,8 @@ export function NetscriptBladeburner( if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); return bladeburner.skillPoints; }, - getSkillLevel: function (skillName: any = ""): number { + getSkillLevel: function (_skillName: unknown): number { + const skillName = helper.string("getSkillLevel", "skillName", _skillName); helper.updateDynamicRam("getSkillLevel", getRamCost(player, "bladeburner", "getSkillLevel")); checkBladeburnerAccess("getSkillLevel"); const bladeburner = player.bladeburner; @@ -232,7 +258,8 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.getSkillLevel", e); } }, - getSkillUpgradeCost: function (skillName: any = ""): number { + getSkillUpgradeCost: function (_skillName: unknown): number { + const skillName = helper.string("getSkillUpgradeCost", "skillName", _skillName); helper.updateDynamicRam("getSkillUpgradeCost", getRamCost(player, "bladeburner", "getSkillUpgradeCost")); checkBladeburnerAccess("getSkillUpgradeCost"); const bladeburner = player.bladeburner; @@ -243,7 +270,8 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.getSkillUpgradeCost", e); } }, - upgradeSkill: function (skillName: any): boolean { + upgradeSkill: function (_skillName: unknown): boolean { + const skillName = helper.string("upgradeSkill", "skillName", _skillName); helper.updateDynamicRam("upgradeSkill", getRamCost(player, "bladeburner", "upgradeSkill")); checkBladeburnerAccess("upgradeSkill"); const bladeburner = player.bladeburner; @@ -254,7 +282,9 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.upgradeSkill", e); } }, - getTeamSize: function (type: any = "", name: any = ""): number { + getTeamSize: function (_type: unknown, _name: unknown): number { + const type = helper.string("getTeamSize", "type", _type); + const name = helper.string("getTeamSize", "name", _name); helper.updateDynamicRam("getTeamSize", getRamCost(player, "bladeburner", "getTeamSize")); checkBladeburnerAccess("getTeamSize"); const bladeburner = player.bladeburner; @@ -265,7 +295,10 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.getTeamSize", e); } }, - setTeamSize: function (type: any = "", name: any = "", size: any): number { + setTeamSize: function (_type: unknown, _name: unknown, _size: unknown): number { + const type = helper.string("setTeamSize", "type", _type); + const name = helper.string("setTeamSize", "name", _name); + const size = helper.number("setTeamSize", "size", _size); helper.updateDynamicRam("setTeamSize", getRamCost(player, "bladeburner", "setTeamSize")); checkBladeburnerAccess("setTeamSize"); const bladeburner = player.bladeburner; @@ -276,7 +309,8 @@ export function NetscriptBladeburner( throw helper.makeRuntimeErrorMsg("bladeburner.setTeamSize", e); } }, - getCityEstimatedPopulation: function (cityName: any): number { + getCityEstimatedPopulation: function (_cityName: unknown): number { + const cityName = helper.string("getCityEstimatedPopulation", "cityName", _cityName); helper.updateDynamicRam( "getCityEstimatedPopulation", getRamCost(player, "bladeburner", "getCityEstimatedPopulation"), @@ -287,7 +321,8 @@ export function NetscriptBladeburner( if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); return bladeburner.cities[cityName].popEst; }, - getCityCommunities: function (cityName: any): number { + getCityCommunities: function (_cityName: unknown): number { + const cityName = helper.string("getCityCommunities", "cityName", _cityName); helper.updateDynamicRam("getCityCommunities", getRamCost(player, "bladeburner", "getCityCommunities")); checkBladeburnerAccess("getCityCommunities"); checkBladeburnerCity("getCityCommunities", cityName); @@ -295,7 +330,8 @@ export function NetscriptBladeburner( if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); return bladeburner.cities[cityName].comms; }, - getCityChaos: function (cityName: any): number { + getCityChaos: function (_cityName: unknown): number { + const cityName = helper.string("getCityChaos", "cityName", _cityName); helper.updateDynamicRam("getCityChaos", getRamCost(player, "bladeburner", "getCityChaos")); checkBladeburnerAccess("getCityChaos"); checkBladeburnerCity("getCityChaos", cityName); @@ -310,13 +346,14 @@ export function NetscriptBladeburner( if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); return bladeburner.city; }, - switchCity: function (cityName: any): boolean { + switchCity: function (_cityName: unknown): boolean { + const cityName = helper.string("switchCity", "cityName", _cityName); helper.updateDynamicRam("switchCity", getRamCost(player, "bladeburner", "switchCity")); checkBladeburnerAccess("switchCity"); checkBladeburnerCity("switchCity", cityName); const bladeburner = player.bladeburner; if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); - return (bladeburner.city = cityName); + return bladeburner.city === cityName; }, getStamina: function (): [number, number] { helper.updateDynamicRam("getStamina", getRamCost(player, "bladeburner", "getStamina")); @@ -365,7 +402,7 @@ export function NetscriptBladeburner( checkBladeburnerAccess("getBonusTime"); const bladeburner = player.bladeburner; if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); - return (Math.round(bladeburner.storedCycles / 5))*1000; + return Math.round(bladeburner.storedCycles / 5) * 1000; }, }; } diff --git a/src/NetscriptFunctions/CodingContract.ts b/src/NetscriptFunctions/CodingContract.ts index 11dff9eed..ef908e83a 100644 --- a/src/NetscriptFunctions/CodingContract.ts +++ b/src/NetscriptFunctions/CodingContract.ts @@ -4,14 +4,14 @@ import { IPlayer } from "../PersonObjects/IPlayer"; import { getRamCost } from "../Netscript/RamCostGenerator"; import { is2DArray } from "../utils/helpers/is2DArray"; import { CodingContract } from "../CodingContracts"; -import { CodingContract as ICodingContract } from "../ScriptEditor/NetscriptDefinitions"; +import { CodingAttemptOptions, CodingContract as ICodingContract } from "../ScriptEditor/NetscriptDefinitions"; export function NetscriptCodingContract( player: IPlayer, workerScript: WorkerScript, helper: INetscriptHelper, ): ICodingContract { - const getCodingContract = function (func: any, hostname: any, filename: any): CodingContract { + const getCodingContract = function (func: string, hostname: string, filename: string): CodingContract { const server = helper.getServer(hostname, func); const contract = server.getContract(filename); if (contract == null) { @@ -27,10 +27,12 @@ export function NetscriptCodingContract( return { attempt: function ( answer: any, - filename: any, - hostname: any = workerScript.hostname, - { returnReward }: any = {}, + _filename: unknown, + _hostname: unknown = workerScript.hostname, + { returnReward }: CodingAttemptOptions = { returnReward: false }, ): boolean | string { + const filename = helper.string("attempt", "filename", _filename); + const hostname = helper.string("attempt", "hostname", _hostname); helper.updateDynamicRam("attempt", getRamCost(player, "codingcontract", "attempt")); const contract = getCodingContract("attempt", hostname, filename); @@ -53,7 +55,10 @@ export function NetscriptCodingContract( const serv = helper.getServer(hostname, "codingcontract.attempt"); if (contract.isSolution(answer)) { const reward = player.gainCodingContractReward(creward, contract.getDifficulty()); - workerScript.log("codingcontract.attempt", () => `Successfully completed Coding Contract '${filename}'. Reward: ${reward}`); + workerScript.log( + "codingcontract.attempt", + () => `Successfully completed Coding Contract '${filename}'. Reward: ${reward}`, + ); serv.removeContract(filename); return returnReward ? reward : true; } else { @@ -68,7 +73,8 @@ export function NetscriptCodingContract( workerScript.log( "codingcontract.attempt", () => - `Coding Contract attempt '${filename}' failed. ${contract.getMaxNumTries() - contract.tries + `Coding Contract attempt '${filename}' failed. ${ + contract.getMaxNumTries() - contract.tries } attempts remaining.`, ); } @@ -76,12 +82,16 @@ export function NetscriptCodingContract( return returnReward ? "" : false; } }, - getContractType: function (filename: any, hostname: any = workerScript.hostname): string { + getContractType: function (_filename: unknown, _hostname: unknown = workerScript.hostname): string { + const filename = helper.string("getContractType", "filename", _filename); + const hostname = helper.string("getContractType", "hostname", _hostname); helper.updateDynamicRam("getContractType", getRamCost(player, "codingcontract", "getContractType")); const contract = getCodingContract("getContractType", hostname, filename); return contract.getType(); }, - getData: function (filename: any, hostname: any = workerScript.hostname): any { + getData: function (_filename: unknown, _hostname: unknown = workerScript.hostname): any { + const filename = helper.string("getContractType", "filename", _filename); + const hostname = helper.string("getContractType", "hostname", _hostname); helper.updateDynamicRam("getData", getRamCost(player, "codingcontract", "getData")); const contract = getCodingContract("getData", hostname, filename); const data = contract.getData(); @@ -101,12 +111,16 @@ export function NetscriptCodingContract( return data; } }, - getDescription: function (filename: any, hostname: any = workerScript.hostname): string { + getDescription: function (_filename: unknown, _hostname: unknown = workerScript.hostname): string { + const filename = helper.string("getDescription", "filename", _filename); + const hostname = helper.string("getDescription", "hostname", _hostname); helper.updateDynamicRam("getDescription", getRamCost(player, "codingcontract", "getDescription")); const contract = getCodingContract("getDescription", hostname, filename); return contract.getDescription(); }, - getNumTriesRemaining: function (filename: any, hostname: any = workerScript.hostname): number { + getNumTriesRemaining: function (_filename: unknown, _hostname: unknown = workerScript.hostname): number { + const filename = helper.string("getNumTriesRemaining", "filename", _filename); + const hostname = helper.string("getNumTriesRemaining", "hostname", _hostname); helper.updateDynamicRam("getNumTriesRemaining", getRamCost(player, "codingcontract", "getNumTriesRemaining")); const contract = getCodingContract("getNumTriesRemaining", hostname, filename); return contract.getMaxNumTries() - contract.tries; diff --git a/src/NetscriptFunctions/Corporation.ts b/src/NetscriptFunctions/Corporation.ts index b9ae2f0b5..8adaaf11f 100644 --- a/src/NetscriptFunctions/Corporation.ts +++ b/src/NetscriptFunctions/Corporation.ts @@ -21,7 +21,7 @@ import { Division as NSDivision, WarehouseAPI, OfficeAPI, - InvestmentOffer + InvestmentOffer, } from "../ScriptEditor/NetscriptDefinitions"; import { @@ -100,8 +100,8 @@ export function NetscriptCorporation( return upgrade[1]; } - function getUpgradeLevel(aupgradeName: string): number { - const upgradeName = helper.string("levelUpgrade", "upgradeName", aupgradeName); + function getUpgradeLevel(_upgradeName: string): number { + const upgradeName = helper.string("levelUpgrade", "upgradeName", _upgradeName); const corporation = getCorporation(); const upgrade = Object.values(CorporationUpgrades).find((upgrade) => upgrade[4] === upgradeName); if (upgrade === undefined) throw new Error(`No upgrade named '${upgradeName}'`); @@ -109,8 +109,8 @@ export function NetscriptCorporation( return corporation.upgrades[upgN]; } - function getUpgradeLevelCost(aupgradeName: string): number { - const upgradeName = helper.string("levelUpgrade", "upgradeName", aupgradeName); + function getUpgradeLevelCost(_upgradeName: string): number { + const upgradeName = helper.string("levelUpgrade", "upgradeName", _upgradeName); const corporation = getCorporation(); const upgrade = Object.values(CorporationUpgrades).find((upgrade) => upgrade[4] === upgradeName); if (upgrade === undefined) throw new Error(`No upgrade named '${upgradeName}'`); @@ -135,11 +135,15 @@ export function NetscriptCorporation( function getInvestmentOffer(): InvestmentOffer { const corporation = getCorporation(); - if (corporation.fundingRound >= CorporationConstants.FundingRoundShares.length || corporation.fundingRound >= CorporationConstants.FundingRoundMultiplier.length || corporation.public) + if ( + corporation.fundingRound >= CorporationConstants.FundingRoundShares.length || + corporation.fundingRound >= CorporationConstants.FundingRoundMultiplier.length || + corporation.public + ) return { funds: 0, shares: 0, - round: corporation.fundingRound + 1 // Make more readable + round: corporation.fundingRound + 1, // Make more readable }; // Don't throw an error here, no reason to have a second function to check if you can get investment. const val = corporation.determineValuation(); const percShares = CorporationConstants.FundingRoundShares[corporation.fundingRound]; @@ -149,13 +153,18 @@ export function NetscriptCorporation( return { funds: funding, shares: investShares, - round: corporation.fundingRound + 1 // Make more readable + round: corporation.fundingRound + 1, // Make more readable }; } function acceptInvestmentOffer(): boolean { const corporation = getCorporation(); - if (corporation.fundingRound >= CorporationConstants.FundingRoundShares.length || corporation.fundingRound >= CorporationConstants.FundingRoundMultiplier.length || corporation.public) return false; + if ( + corporation.fundingRound >= CorporationConstants.FundingRoundShares.length || + corporation.fundingRound >= CorporationConstants.FundingRoundMultiplier.length || + corporation.public + ) + return false; const val = corporation.determineValuation(); const percShares = CorporationConstants.FundingRoundShares[corporation.fundingRound]; const roundMultiplier = CorporationConstants.FundingRoundMultiplier[corporation.fundingRound]; @@ -181,7 +190,6 @@ export function NetscriptCorporation( return true; } - function getResearchCost(division: IIndustry, researchName: string): number { const researchTree = IndustryResearchTrees[division.type]; if (researchTree === undefined) throw new Error(`No research tree for industry '${division.type}'`); @@ -192,17 +200,18 @@ export function NetscriptCorporation( } function hasResearched(division: IIndustry, researchName: string): boolean { - return division.researched[researchName] === undefined ? false : division.researched[researchName] as boolean; + return division.researched[researchName] === undefined ? false : (division.researched[researchName] as boolean); } function bribe(factionName: string, amountCash: number, amountShares: number): boolean { if (!player.factions.includes(factionName)) throw new Error("Invalid faction name"); - if (isNaN(amountCash) || amountCash < 0 || isNaN(amountShares) || amountShares < 0) throw new Error("Invalid value for amount field! Must be numeric, grater than 0."); + if (isNaN(amountCash) || amountCash < 0 || isNaN(amountShares) || amountShares < 0) + throw new Error("Invalid value for amount field! Must be numeric, grater than 0."); const corporation = getCorporation(); if (corporation.funds < amountCash) return false; if (corporation.numShares < amountShares) return false; - const faction = Factions[factionName] + const faction = Factions[factionName]; const info = faction.getInfo(); if (!info.offersWork()) return false; if (player.hasGangWith(factionName)) return false; @@ -302,40 +311,40 @@ export function NetscriptCorporation( checkAccess("getPurchaseWarehouseCost", 7); return CorporationConstants.WarehouseInitialCost; }, - getUpgradeWarehouseCost: function (adivisionName: any, acityName: any): number { + getUpgradeWarehouseCost: function (_divisionName: unknown, _cityName: unknown): number { checkAccess("upgradeWarehouse", 7); - const divisionName = helper.string("getUpgradeWarehouseCost", "divisionName", adivisionName); - const cityName = helper.string("getUpgradeWarehouseCost", "cityName", acityName); + const divisionName = helper.string("getUpgradeWarehouseCost", "divisionName", _divisionName); + const cityName = helper.string("getUpgradeWarehouseCost", "cityName", _cityName); const warehouse = getWarehouse(divisionName, cityName); return CorporationConstants.WarehouseUpgradeBaseCost * Math.pow(1.07, warehouse.level + 1); }, - hasWarehouse: function (adivisionName: any, acityName: any): boolean { + hasWarehouse: function (_divisionName: unknown, _cityName: unknown): boolean { checkAccess("hasWarehouse", 7); - const divisionName = helper.string("getWarehouse", "divisionName", adivisionName); - const cityName = helper.string("getWarehouse", "cityName", acityName); + const divisionName = helper.string("getWarehouse", "divisionName", _divisionName); + const cityName = helper.string("getWarehouse", "cityName", _cityName); const division = getDivision(divisionName); if (!(cityName in division.warehouses)) throw new Error(`Invalid city name '${cityName}'`); const warehouse = division.warehouses[cityName]; return warehouse !== 0; }, - getWarehouse: function (adivisionName: any, acityName: any): NSWarehouse { + getWarehouse: function (_divisionName: unknown, _cityName: unknown): NSWarehouse { checkAccess("getWarehouse", 7); - const divisionName = helper.string("getWarehouse", "divisionName", adivisionName); - const cityName = helper.string("getWarehouse", "cityName", acityName); + const divisionName = helper.string("getWarehouse", "divisionName", _divisionName); + const cityName = helper.string("getWarehouse", "cityName", _cityName); const warehouse = getWarehouse(divisionName, cityName); return { level: warehouse.level, loc: warehouse.loc, size: warehouse.size, sizeUsed: warehouse.sizeUsed, - smartSupplyEnabled: warehouse.smartSupplyEnabled + smartSupplyEnabled: warehouse.smartSupplyEnabled, }; }, - getMaterial: function (adivisionName: any, acityName: any, amaterialName: any): NSMaterial { + getMaterial: function (_divisionName: unknown, _cityName: unknown, _materialName: unknown): NSMaterial { checkAccess("getMaterial", 7); - const divisionName = helper.string("getMaterial", "divisionName", adivisionName); - const cityName = helper.string("getMaterial", "cityName", acityName); - const materialName = helper.string("getMaterial", "materialName", amaterialName); + const divisionName = helper.string("getMaterial", "divisionName", _divisionName); + const cityName = helper.string("getMaterial", "cityName", _cityName); + const materialName = helper.string("getMaterial", "materialName", _materialName); const material = getMaterial(divisionName, cityName, materialName); return { name: material.name, @@ -345,10 +354,10 @@ export function NetscriptCorporation( sell: material.sll, }; }, - getProduct: function (adivisionName: any, aproductName: any): NSProduct { + getProduct: function (_divisionName: unknown, _productName: unknown): NSProduct { checkAccess("getProduct", 7); - const divisionName = helper.string("getProduct", "divisionName", adivisionName); - const productName = helper.string("getProduct", "productName", aproductName); + const divisionName = helper.string("getProduct", "divisionName", _divisionName); + const productName = helper.string("getProduct", "productName", _productName); const product = getProduct(divisionName, productName); return { name: product.name, @@ -360,220 +369,271 @@ export function NetscriptCorporation( developmentProgress: product.prog, }; }, - purchaseWarehouse: function (adivisionName: any, acityName: any): void { + purchaseWarehouse: function (_divisionName: unknown, _cityName: unknown): void { checkAccess("purchaseWarehouse", 7); - const divisionName = helper.string("purchaseWarehouse", "divisionName", adivisionName); - const cityName = helper.string("purchaseWarehouse", "cityName", acityName); + const divisionName = helper.string("purchaseWarehouse", "divisionName", _divisionName); + const cityName = helper.string("purchaseWarehouse", "cityName", _cityName); const corporation = getCorporation(); PurchaseWarehouse(corporation, getDivision(divisionName), cityName); }, - upgradeWarehouse: function (adivisionName: any, acityName: any): void { + upgradeWarehouse: function (_divisionName: unknown, _cityName: unknown): void { checkAccess("upgradeWarehouse", 7); - const divisionName = helper.string("upgradeWarehouse", "divisionName", adivisionName); - const cityName = helper.string("upgradeWarehouse", "cityName", acityName); + const divisionName = helper.string("upgradeWarehouse", "divisionName", _divisionName); + const cityName = helper.string("upgradeWarehouse", "cityName", _cityName); const corporation = getCorporation(); UpgradeWarehouse(corporation, getDivision(divisionName), getWarehouse(divisionName, cityName)); }, - sellMaterial: function (adivisionName: any, acityName: any, amaterialName: any, aamt: any, aprice: any): void { + sellMaterial: function ( + _divisionName: unknown, + _cityName: unknown, + _materialName: unknown, + _amt: unknown, + _price: unknown, + ): void { checkAccess("sellMaterial", 7); - const divisionName = helper.string("sellMaterial", "divisionName", adivisionName); - const cityName = helper.string("sellMaterial", "cityName", acityName); - const materialName = helper.string("sellMaterial", "materialName", amaterialName); - const amt = helper.string("sellMaterial", "amt", aamt); - const price = helper.string("sellMaterial", "price", aprice); + const divisionName = helper.string("sellMaterial", "divisionName", _divisionName); + const cityName = helper.string("sellMaterial", "cityName", _cityName); + const materialName = helper.string("sellMaterial", "materialName", _materialName); + const amt = helper.string("sellMaterial", "amt", _amt); + const price = helper.string("sellMaterial", "price", _price); const material = getMaterial(divisionName, cityName, materialName); SellMaterial(material, amt, price); }, sellProduct: function ( - adivisionName: any, - acityName: any, - aproductName: any, - aamt: any, - aprice: any, - aall: any, + _divisionName: unknown, + _cityName: unknown, + _productName: unknown, + _amt: unknown, + _price: unknown, + _all: unknown, ): void { checkAccess("sellProduct", 7); - const divisionName = helper.string("sellProduct", "divisionName", adivisionName); - const cityName = helper.string("sellProduct", "cityName", acityName); - const productName = helper.string("sellProduct", "productName", aproductName); - const amt = helper.string("sellProduct", "amt", aamt); - const price = helper.string("sellProduct", "price", aprice); - const all = helper.boolean(aall); + const divisionName = helper.string("sellProduct", "divisionName", _divisionName); + const cityName = helper.string("sellProduct", "cityName", _cityName); + const productName = helper.string("sellProduct", "productName", _productName); + const amt = helper.string("sellProduct", "amt", _amt); + const price = helper.string("sellProduct", "price", _price); + const all = helper.boolean(_all); const product = getProduct(divisionName, productName); SellProduct(product, cityName, amt, price, all); }, - discontinueProduct: function (adivisionName: any, aproductName: any): void { + discontinueProduct: function (_divisionName: unknown, _productName: unknown): void { checkAccess("discontinueProduct", 7); - const divisionName = helper.string("discontinueProduct", "divisionName", adivisionName); - const productName = helper.string("discontinueProduct", "productName", aproductName); + const divisionName = helper.string("discontinueProduct", "divisionName", _divisionName); + const productName = helper.string("discontinueProduct", "productName", _productName); getDivision(divisionName).discontinueProduct(getProduct(divisionName, productName)); }, - setSmartSupply: function (adivisionName: any, acityName: any, aenabled: any): void { + setSmartSupply: function (_divisionName: unknown, _cityName: unknown, _enabled: unknown): void { checkAccess("setSmartSupply", 7); - const divisionName = helper.string("setSmartSupply", "divisionName", adivisionName); - const cityName = helper.string("sellProduct", "cityName", acityName); - const enabled = helper.boolean(aenabled); + const divisionName = helper.string("setSmartSupply", "divisionName", _divisionName); + const cityName = helper.string("sellProduct", "cityName", _cityName); + const enabled = helper.boolean(_enabled); const warehouse = getWarehouse(divisionName, cityName); if (!hasUnlockUpgrade("Smart Supply")) - throw helper.makeRuntimeErrorMsg(`corporation.setSmartSupply`, `You have not purchased the Smart Supply upgrade!`); + throw helper.makeRuntimeErrorMsg( + `corporation.setSmartSupply`, + `You have not purchased the Smart Supply upgrade!`, + ); SetSmartSupply(warehouse, enabled); }, - setSmartSupplyUseLeftovers: function (adivisionName: any, acityName: any, amaterialName: any, aenabled: any): void { + setSmartSupplyUseLeftovers: function ( + _divisionName: unknown, + _cityName: unknown, + _materialName: unknown, + _enabled: unknown, + ): void { checkAccess("setSmartSupplyUseLeftovers", 7); - const divisionName = helper.string("setSmartSupply", "divisionName", adivisionName); - const cityName = helper.string("sellProduct", "cityName", acityName); - const materialName = helper.string("sellProduct", "materialName", amaterialName); - const enabled = helper.boolean(aenabled); + const divisionName = helper.string("setSmartSupply", "divisionName", _divisionName); + const cityName = helper.string("sellProduct", "cityName", _cityName); + const materialName = helper.string("sellProduct", "materialName", _materialName); + const enabled = helper.boolean(_enabled); const warehouse = getWarehouse(divisionName, cityName); const material = getMaterial(divisionName, cityName, materialName); if (!hasUnlockUpgrade("Smart Supply")) - throw helper.makeRuntimeErrorMsg(`corporation.setSmartSupply`, `You have not purchased the Smart Supply upgrade!`); + throw helper.makeRuntimeErrorMsg( + `corporation.setSmartSupply`, + `You have not purchased the Smart Supply upgrade!`, + ); SetSmartSupplyUseLeftovers(warehouse, material, enabled); }, - buyMaterial: function (adivisionName: any, acityName: any, amaterialName: any, aamt: any): void { + buyMaterial: function (_divisionName: unknown, _cityName: unknown, _materialName: unknown, _amt: unknown): void { checkAccess("buyMaterial", 7); - const divisionName = helper.string("buyMaterial", "divisionName", adivisionName); - const cityName = helper.string("buyMaterial", "cityName", acityName); - const materialName = helper.string("buyMaterial", "materialName", amaterialName); - const amt = helper.number("buyMaterial", "amt", aamt); + const divisionName = helper.string("buyMaterial", "divisionName", _divisionName); + const cityName = helper.string("buyMaterial", "cityName", _cityName); + const materialName = helper.string("buyMaterial", "materialName", _materialName); + const amt = helper.number("buyMaterial", "amt", _amt); if (amt < 0) throw new Error("Invalid value for amount field! Must be numeric and greater than 0"); const material = getMaterial(divisionName, cityName, materialName); BuyMaterial(material, amt); }, - bulkPurchase: function (adivisionName: any, acityName: any, amaterialName: any, aamt: any): void { + bulkPurchase: function (_divisionName: unknown, _cityName: unknown, _materialName: unknown, _amt: unknown): void { checkAccess("bulkPurchase", 7); - const divisionName = helper.string("bulkPurchase", "divisionName", adivisionName); - if (!hasResearched(getDivision(adivisionName), "Bulk Purchasing")) throw new Error(`You have not researched Bulk Purchasing in ${divisionName}`) + const divisionName = helper.string("bulkPurchase", "divisionName", _divisionName); + if (!hasResearched(getDivision(_divisionName), "Bulk Purchasing")) + throw new Error(`You have not researched Bulk Purchasing in ${divisionName}`); const corporation = getCorporation(); - const cityName = helper.string("bulkPurchase", "cityName", acityName); - const materialName = helper.string("bulkPurchase", "materialName", amaterialName); - const amt = helper.number("bulkPurchase", "amt", aamt); - const warehouse = getWarehouse(divisionName, cityName) + const cityName = helper.string("bulkPurchase", "cityName", _cityName); + const materialName = helper.string("bulkPurchase", "materialName", _materialName); + const amt = helper.number("bulkPurchase", "amt", _amt); + const warehouse = getWarehouse(divisionName, cityName); const material = getMaterial(divisionName, cityName, materialName); BulkPurchase(corporation, warehouse, material, amt); }, makeProduct: function ( - adivisionName: any, - acityName: any, - aproductName: any, - adesignInvest: any, - amarketingInvest: any, + _divisionName: unknown, + _cityName: unknown, + _productName: unknown, + _designInvest: unknown, + _marketingInvest: unknown, ): void { checkAccess("makeProduct", 7); - const divisionName = helper.string("makeProduct", "divisionName", adivisionName); - const cityName = helper.string("makeProduct", "cityName", acityName); - const productName = helper.string("makeProduct", "productName", aproductName); - const designInvest = helper.number("makeProduct", "designInvest", adesignInvest); - const marketingInvest = helper.number("makeProduct", "marketingInvest", amarketingInvest); + const divisionName = helper.string("makeProduct", "divisionName", _divisionName); + const cityName = helper.string("makeProduct", "cityName", _cityName); + const productName = helper.string("makeProduct", "productName", _productName); + const designInvest = helper.number("makeProduct", "designInvest", _designInvest); + const marketingInvest = helper.number("makeProduct", "marketingInvest", _marketingInvest); const corporation = getCorporation(); MakeProduct(corporation, getDivision(divisionName), cityName, productName, designInvest, marketingInvest); }, exportMaterial: function ( - asourceDivision: any, - asourceCity: any, - atargetDivision: any, - atargetCity: any, - amaterialName: any, - aamt: any, + _sourceDivision: unknown, + _sourceCity: unknown, + _targetDivision: unknown, + _targetCity: unknown, + _materialName: unknown, + _amt: unknown, ): void { checkAccess("exportMaterial", 7); - const sourceDivision = helper.string("exportMaterial", "sourceDivision", asourceDivision); - const sourceCity = helper.string("exportMaterial", "sourceCity", asourceCity); - const targetDivision = helper.string("exportMaterial", "targetDivision", atargetDivision); - const targetCity = helper.string("exportMaterial", "targetCity", atargetCity); - const materialName = helper.string("exportMaterial", "materialName", amaterialName); - const amt = helper.string("exportMaterial", "amt", aamt); - ExportMaterial(targetDivision, targetCity, getMaterial(sourceDivision, sourceCity, materialName), amt + "", getDivision(targetDivision)); + const sourceDivision = helper.string("exportMaterial", "sourceDivision", _sourceDivision); + const sourceCity = helper.string("exportMaterial", "sourceCity", _sourceCity); + const targetDivision = helper.string("exportMaterial", "targetDivision", _targetDivision); + const targetCity = helper.string("exportMaterial", "targetCity", _targetCity); + const materialName = helper.string("exportMaterial", "materialName", _materialName); + const amt = helper.string("exportMaterial", "amt", _amt); + ExportMaterial( + targetDivision, + targetCity, + getMaterial(sourceDivision, sourceCity, materialName), + amt + "", + getDivision(targetDivision), + ); }, cancelExportMaterial: function ( - asourceDivision: any, - asourceCity: any, - atargetDivision: any, - atargetCity: any, - amaterialName: any, - aamt: any, + _sourceDivision: unknown, + _sourceCity: unknown, + _targetDivision: unknown, + _targetCity: unknown, + _materialName: unknown, + _amt: unknown, ): void { checkAccess("cancelExportMaterial", 7); - const sourceDivision = helper.string("cancelExportMaterial", "sourceDivision", asourceDivision); - const sourceCity = helper.string("cancelExportMaterial", "sourceCity", asourceCity); - const targetDivision = helper.string("cancelExportMaterial", "targetDivision", atargetDivision); - const targetCity = helper.string("cancelExportMaterial", "targetCity", atargetCity); - const materialName = helper.string("cancelExportMaterial", "materialName", amaterialName); - const amt = helper.string("cancelExportMaterial", "amt", aamt); + const sourceDivision = helper.string("cancelExportMaterial", "sourceDivision", _sourceDivision); + const sourceCity = helper.string("cancelExportMaterial", "sourceCity", _sourceCity); + const targetDivision = helper.string("cancelExportMaterial", "targetDivision", _targetDivision); + const targetCity = helper.string("cancelExportMaterial", "targetCity", _targetCity); + const materialName = helper.string("cancelExportMaterial", "materialName", _materialName); + const amt = helper.string("cancelExportMaterial", "amt", _amt); CancelExportMaterial(targetDivision, targetCity, getMaterial(sourceDivision, sourceCity, materialName), amt + ""); }, - setMaterialMarketTA1: function (adivisionName: any, acityName: any, amaterialName: any, aon: any): void { + setMaterialMarketTA1: function ( + _divisionName: unknown, + _cityName: unknown, + _materialName: unknown, + _on: unknown, + ): void { checkAccess("setMaterialMarketTA1", 7); - const divisionName = helper.string("setMaterialMarketTA1", "divisionName", adivisionName); - const cityName = helper.string("setMaterialMarketTA1", "cityName", acityName); - const materialName = helper.string("setMaterialMarketTA1", "materialName", amaterialName); - const on = helper.boolean(aon); + const divisionName = helper.string("setMaterialMarketTA1", "divisionName", _divisionName); + const cityName = helper.string("setMaterialMarketTA1", "cityName", _cityName); + const materialName = helper.string("setMaterialMarketTA1", "materialName", _materialName); + const on = helper.boolean(_on); if (!getDivision(divisionName).hasResearch("Market-TA.I")) - throw helper.makeRuntimeErrorMsg(`corporation.setMaterialMarketTA1`, `You have not researched MarketTA.I for division: ${divisionName}`); + throw helper.makeRuntimeErrorMsg( + `corporation.setMaterialMarketTA1`, + `You have not researched MarketTA.I for division: ${divisionName}`, + ); SetMaterialMarketTA1(getMaterial(divisionName, cityName, materialName), on); }, - setMaterialMarketTA2: function (adivisionName: any, acityName: any, amaterialName: any, aon: any): void { + setMaterialMarketTA2: function ( + _divisionName: unknown, + _cityName: unknown, + _materialName: unknown, + _on: unknown, + ): void { checkAccess("setMaterialMarketTA2", 7); - const divisionName = helper.string("setMaterialMarketTA2", "divisionName", adivisionName); - const cityName = helper.string("setMaterialMarketTA2", "cityName", acityName); - const materialName = helper.string("setMaterialMarketTA2", "materialName", amaterialName); - const on = helper.boolean(aon); + const divisionName = helper.string("setMaterialMarketTA2", "divisionName", _divisionName); + const cityName = helper.string("setMaterialMarketTA2", "cityName", _cityName); + const materialName = helper.string("setMaterialMarketTA2", "materialName", _materialName); + const on = helper.boolean(_on); if (!getDivision(divisionName).hasResearch("Market-TA.II")) - throw helper.makeRuntimeErrorMsg(`corporation.setMaterialMarketTA2`, `You have not researched MarketTA.II for division: ${divisionName}`); + throw helper.makeRuntimeErrorMsg( + `corporation.setMaterialMarketTA2`, + `You have not researched MarketTA.II for division: ${divisionName}`, + ); SetMaterialMarketTA2(getMaterial(divisionName, cityName, materialName), on); }, - setProductMarketTA1: function (adivisionName: any, aproductName: any, aon: any): void { + setProductMarketTA1: function (_divisionName: unknown, _productName: unknown, _on: unknown): void { checkAccess("setProductMarketTA1", 7); - const divisionName = helper.string("setProductMarketTA1", "divisionName", adivisionName); - const productName = helper.string("setProductMarketTA1", "productName", aproductName); - const on = helper.boolean(aon); + const divisionName = helper.string("setProductMarketTA1", "divisionName", _divisionName); + const productName = helper.string("setProductMarketTA1", "productName", _productName); + const on = helper.boolean(_on); if (!getDivision(divisionName).hasResearch("Market-TA.I")) - throw helper.makeRuntimeErrorMsg(`corporation.setProductMarketTA1`, `You have not researched MarketTA.I for division: ${divisionName}`); + throw helper.makeRuntimeErrorMsg( + `corporation.setProductMarketTA1`, + `You have not researched MarketTA.I for division: ${divisionName}`, + ); SetProductMarketTA1(getProduct(divisionName, productName), on); }, - setProductMarketTA2: function (adivisionName: any, aproductName: any, aon: any): void { + setProductMarketTA2: function (_divisionName: unknown, _productName: unknown, _on: unknown): void { checkAccess("setProductMarketTA2", 7); - const divisionName = helper.string("setProductMarketTA2", "divisionName", adivisionName); - const productName = helper.string("setProductMarketTA2", "productName", aproductName); - const on = helper.boolean(aon); + const divisionName = helper.string("setProductMarketTA2", "divisionName", _divisionName); + const productName = helper.string("setProductMarketTA2", "productName", _productName); + const on = helper.boolean(_on); if (!getDivision(divisionName).hasResearch("Market-TA.II")) - throw helper.makeRuntimeErrorMsg(`corporation.setProductMarketTA2`, `You have not researched MarketTA.II for division: ${divisionName}`); + throw helper.makeRuntimeErrorMsg( + `corporation.setProductMarketTA2`, + `You have not researched MarketTA.II for division: ${divisionName}`, + ); SetProductMarketTA2(getProduct(divisionName, productName), on); }, }; const officeAPI: OfficeAPI = { - getHireAdVertCost: function (adivisionName: any): number { + getHireAdVertCost: function (_divisionName: unknown): number { checkAccess("getHireAdVertCost", 8); - const divisionName = helper.string("getHireAdVertCost", "divisionName", adivisionName); + const divisionName = helper.string("getHireAdVertCost", "divisionName", _divisionName); const division = getDivision(divisionName); const upgrade = IndustryUpgrades[1]; return upgrade[1] * Math.pow(upgrade[2], division.upgrades[1]); }, - getHireAdVertCount: function (adivisionName: any): number { + getHireAdVertCount: function (_divisionName: unknown): number { checkAccess("getHireAdVertCount", 8); - const divisionName = helper.string("getHireAdVertCount", "divisionName", adivisionName); + const divisionName = helper.string("getHireAdVertCount", "divisionName", _divisionName); const division = getDivision(divisionName); - return division.upgrades[1] + return division.upgrades[1]; }, - getResearchCost: function (adivisionName: any, aresearchName: any): number { + getResearchCost: function (_divisionName: unknown, _researchName: unknown): number { checkAccess("getResearchCost", 8); - const divisionName = helper.string("getResearchCost", "divisionName", adivisionName); - const researchName = helper.string("getResearchCost", "researchName", aresearchName); + const divisionName = helper.string("getResearchCost", "divisionName", _divisionName); + const researchName = helper.string("getResearchCost", "researchName", _researchName); return getResearchCost(getDivision(divisionName), researchName); }, - hasResearched: function (adivisionName: any, aresearchName: any): boolean { + hasResearched: function (_divisionName: unknown, _researchName: unknown): boolean { checkAccess("hasResearched", 8); - const divisionName = helper.string("hasResearched", "divisionName", adivisionName); - const researchName = helper.string("hasResearched", "researchName", aresearchName); + const divisionName = helper.string("hasResearched", "divisionName", _divisionName); + const researchName = helper.string("hasResearched", "researchName", _researchName); return hasResearched(getDivision(divisionName), researchName); }, - setAutoJobAssignment: function (adivisionName: any, acityName: any, ajob: any, aamount: any): Promise { + setAutoJobAssignment: function ( + _divisionName: unknown, + _cityName: unknown, + _job: unknown, + _amount: unknown, + ): Promise { checkAccess("setAutoJobAssignment", 8); - const divisionName = helper.string("setAutoJobAssignment", "divisionName", adivisionName); - const cityName = helper.string("setAutoJobAssignment", "cityName", acityName); - const amount = helper.number("setAutoJobAssignment", "amount", aamount); - const job = helper.string("setAutoJobAssignment", "job", ajob); + const divisionName = helper.string("setAutoJobAssignment", "divisionName", _divisionName); + const cityName = helper.string("setAutoJobAssignment", "cityName", _cityName); + const amount = helper.number("setAutoJobAssignment", "amount", _amount); + const job = helper.string("setAutoJobAssignment", "job", _job); const office = getOffice(divisionName, cityName); if (!Object.values(EmployeePositions).includes(job)) throw new Error(`'${job}' is not a valid job.`); return netscriptDelay(1000, workerScript).then(function () { @@ -583,11 +643,11 @@ export function NetscriptCorporation( return Promise.resolve(office.setEmployeeToJob(job, amount)); }); }, - getOfficeSizeUpgradeCost: function (adivisionName: any, acityName: any, asize: any): number { + getOfficeSizeUpgradeCost: function (_divisionName: unknown, _cityName: unknown, _size: unknown): number { checkAccess("getOfficeSizeUpgradeCost", 8); - const divisionName = helper.string("getOfficeSizeUpgradeCost", "divisionName", adivisionName); - const cityName = helper.string("getOfficeSizeUpgradeCost", "cityName", acityName); - const size = helper.number("getOfficeSizeUpgradeCost", "size", asize); + const divisionName = helper.string("getOfficeSizeUpgradeCost", "divisionName", _divisionName); + const cityName = helper.string("getOfficeSizeUpgradeCost", "cityName", _cityName); + const size = helper.number("getOfficeSizeUpgradeCost", "size", _size); if (size < 0) throw new Error("Invalid value for size field! Must be numeric and greater than 0"); const office = getOffice(divisionName, cityName); const initialPriceMult = Math.round(office.size / CorporationConstants.OfficeInitialSize); @@ -598,40 +658,46 @@ export function NetscriptCorporation( } return CorporationConstants.OfficeInitialCost * mult; }, - assignJob: function (adivisionName: any, acityName: any, aemployeeName: any, ajob: any): Promise { + assignJob: function ( + _divisionName: unknown, + _cityName: unknown, + _employeeName: unknown, + _job: unknown, + ): Promise { checkAccess("assignJob", 8); - const divisionName = helper.string("assignJob", "divisionName", adivisionName); - const cityName = helper.string("assignJob", "cityName", acityName); - const employeeName = helper.string("assignJob", "employeeName", aemployeeName); - const job = helper.string("assignJob", "job", ajob); + const divisionName = helper.string("assignJob", "divisionName", _divisionName); + const cityName = helper.string("assignJob", "cityName", _cityName); + const employeeName = helper.string("assignJob", "employeeName", _employeeName); + const job = helper.string("assignJob", "job", _job); const employee = getEmployee(divisionName, cityName, employeeName); return netscriptDelay(1000, workerScript).then(function () { return Promise.resolve(AssignJob(employee, job)); }); }, - hireEmployee: function (adivisionName: any, acityName: any): any { + hireEmployee: function (_divisionName: unknown, _cityName: unknown): any { checkAccess("hireEmployee", 8); - const divisionName = helper.string("hireEmployee", "divisionName", adivisionName); - const cityName = helper.string("hireEmployee", "cityName", acityName); + const divisionName = helper.string("hireEmployee", "divisionName", _divisionName); + const cityName = helper.string("hireEmployee", "cityName", _cityName); const office = getOffice(divisionName, cityName); return office.hireRandomEmployee(); }, - upgradeOfficeSize: function (adivisionName: any, acityName: any, asize: any): void { + upgradeOfficeSize: function (_divisionName: unknown, _cityName: unknown, _size: unknown): void { checkAccess("upgradeOfficeSize", 8); - const divisionName = helper.string("upgradeOfficeSize", "divisionName", adivisionName); - const cityName = helper.string("upgradeOfficeSize", "cityName", acityName); - const size = helper.number("upgradeOfficeSize", "size", asize); + const divisionName = helper.string("upgradeOfficeSize", "divisionName", _divisionName); + const cityName = helper.string("upgradeOfficeSize", "cityName", _cityName); + const size = helper.number("upgradeOfficeSize", "size", _size); if (size < 0) throw new Error("Invalid value for size field! Must be numeric and greater than 0"); const office = getOffice(divisionName, cityName); const corporation = getCorporation(); UpgradeOfficeSize(corporation, office, size); }, - throwParty: function (adivisionName: any, acityName: any, acostPerEmployee: any): Promise { + throwParty: function (_divisionName: unknown, _cityName: unknown, _costPerEmployee: unknown): Promise { checkAccess("throwParty", 8); - const divisionName = helper.string("throwParty", "divisionName", adivisionName); - const cityName = helper.string("throwParty", "cityName", acityName); - const costPerEmployee = helper.number("throwParty", "costPerEmployee", acostPerEmployee); - if (costPerEmployee < 0) throw new Error("Invalid value for Cost Per Employee field! Must be numeric and greater than 0"); + const divisionName = helper.string("throwParty", "divisionName", _divisionName); + const cityName = helper.string("throwParty", "cityName", _cityName); + const costPerEmployee = helper.number("throwParty", "costPerEmployee", _costPerEmployee); + if (costPerEmployee < 0) + throw new Error("Invalid value for Cost Per Employee field! Must be numeric and greater than 0"); const office = getOffice(divisionName, cityName); const corporation = getCorporation(); return netscriptDelay( @@ -641,10 +707,10 @@ export function NetscriptCorporation( return Promise.resolve(ThrowParty(corporation, office, costPerEmployee)); }); }, - buyCoffee: function (adivisionName: any, acityName: any): Promise { + buyCoffee: function (_divisionName: unknown, _cityName: unknown): Promise { checkAccess("buyCoffee", 8); - const divisionName = helper.string("buyCoffee", "divisionName", adivisionName); - const cityName = helper.string("buyCoffee", "cityName", acityName); + const divisionName = helper.string("buyCoffee", "divisionName", _divisionName); + const cityName = helper.string("buyCoffee", "cityName", _cityName); const corporation = getCorporation(); return netscriptDelay( (60 * 1000) / (player.hacking_speed_mult * calculateIntelligenceBonus(player.intelligence, 1)), @@ -653,22 +719,22 @@ export function NetscriptCorporation( return Promise.resolve(BuyCoffee(corporation, getDivision(divisionName), getOffice(divisionName, cityName))); }); }, - hireAdVert: function (adivisionName: any): void { + hireAdVert: function (_divisionName: unknown): void { checkAccess("hireAdVert", 8); - const divisionName = helper.string("hireAdVert", "divisionName", adivisionName); + const divisionName = helper.string("hireAdVert", "divisionName", _divisionName); const corporation = getCorporation(); HireAdVert(corporation, getDivision(divisionName), getOffice(divisionName, "Sector-12")); }, - research: function (adivisionName: any, aresearchName: any): void { + research: function (_divisionName: unknown, _researchName: unknown): void { checkAccess("research", 8); - const divisionName = helper.string("research", "divisionName", adivisionName); - const researchName = helper.string("research", "researchName", aresearchName); + const divisionName = helper.string("research", "divisionName", _divisionName); + const researchName = helper.string("research", "researchName", _researchName); Research(getDivision(divisionName), researchName); }, - getOffice: function (adivisionName: any, acityName: any): any { + getOffice: function (_divisionName: unknown, _cityName: unknown): any { checkAccess("getOffice", 8); - const divisionName = helper.string("getOffice", "divisionName", adivisionName); - const cityName = helper.string("getOffice", "cityName", acityName); + const divisionName = helper.string("getOffice", "divisionName", _divisionName); + const cityName = helper.string("getOffice", "cityName", _cityName); const office = getOffice(divisionName, cityName); return { loc: office.loc, @@ -689,11 +755,11 @@ export function NetscriptCorporation( }, }; }, - getEmployee: function (adivisionName: any, acityName: any, aemployeeName: any): NSEmployee { + getEmployee: function (_divisionName: unknown, _cityName: unknown, _employeeName: unknown): NSEmployee { checkAccess("getEmployee", 8); - const divisionName = helper.string("getEmployee", "divisionName", adivisionName); - const cityName = helper.string("getEmployee", "cityName", acityName); - const employeeName = helper.string("getEmployee", "employeeName", aemployeeName); + const divisionName = helper.string("getEmployee", "divisionName", _divisionName); + const cityName = helper.string("getEmployee", "cityName", _cityName); + const employeeName = helper.string("getEmployee", "employeeName", _employeeName); const employee = getEmployee(divisionName, cityName, employeeName); return { name: employee.name, @@ -715,42 +781,43 @@ export function NetscriptCorporation( return { ...warehouseAPI, ...officeAPI, - expandIndustry: function (aindustryName: any, adivisionName: any): void { + expandIndustry: function (_industryName: unknown, _divisionName: unknown): void { checkAccess("expandIndustry"); - const industryName = helper.string("expandIndustry", "industryName", aindustryName); - const divisionName = helper.string("expandIndustry", "divisionName", adivisionName); + const industryName = helper.string("expandIndustry", "industryName", _industryName); + const divisionName = helper.string("expandIndustry", "divisionName", _divisionName); const corporation = getCorporation(); NewIndustry(corporation, industryName, divisionName); }, - expandCity: function (adivisionName: any, acityName: any): void { + expandCity: function (_divisionName: unknown, _cityName: unknown): void { checkAccess("expandCity"); - const divisionName = helper.string("expandCity", "divisionName", adivisionName); - const cityName = helper.string("expandCity", "cityName", acityName); + const divisionName = helper.string("expandCity", "divisionName", _divisionName); + const cityName = helper.string("expandCity", "cityName", _cityName); if (!CorporationConstants.Cities.includes(cityName)) throw new Error("Invalid city name"); const corporation = getCorporation(); const division = getDivision(divisionName); NewCity(corporation, division, cityName); }, - unlockUpgrade: function (aupgradeName: any): void { + unlockUpgrade: function (_upgradeName: unknown): void { checkAccess("unlockUpgrade"); - const upgradeName = helper.string("unlockUpgrade", "upgradeName", aupgradeName); + const upgradeName = helper.string("unlockUpgrade", "upgradeName", _upgradeName); const corporation = getCorporation(); const upgrade = Object.values(CorporationUnlockUpgrades).find((upgrade) => upgrade[2] === upgradeName); if (upgrade === undefined) throw new Error(`No upgrade named '${upgradeName}'`); UnlockUpgrade(corporation, upgrade); }, - levelUpgrade: function (aupgradeName: any): void { + levelUpgrade: function (_upgradeName: unknown): void { checkAccess("levelUpgrade"); - const upgradeName = helper.string("levelUpgrade", "upgradeName", aupgradeName); + const upgradeName = helper.string("levelUpgrade", "upgradeName", _upgradeName); const corporation = getCorporation(); const upgrade = Object.values(CorporationUpgrades).find((upgrade) => upgrade[4] === upgradeName); if (upgrade === undefined) throw new Error(`No upgrade named '${upgradeName}'`); LevelUpgrade(corporation, upgrade); }, - issueDividends: function (apercent: any): void { + issueDividends: function (_percent: unknown): void { checkAccess("issueDividends"); - const percent = helper.number("issueDividends", "percent", apercent); - if (percent < 0 || percent > 100) throw new Error("Invalid value for percent field! Must be numeric, greater than 0, and less than 100"); + const percent = helper.number("issueDividends", "percent", _percent); + if (percent < 0 || percent > 100) + throw new Error("Invalid value for percent field! Must be numeric, greater than 0, and less than 100"); const corporation = getCorporation(); if (!corporation.public) throw helper.makeRuntimeErrorMsg(`corporation.issueDividends`, `Your company has not gone public!`); @@ -759,9 +826,9 @@ export function NetscriptCorporation( // If you modify these objects you will affect them for real, it's not // copies. - getDivision: function (adivisionName: any): NSDivision { + getDivision: function (_divisionName: unknown): NSDivision { checkAccess("getDivision"); - const divisionName = helper.string("getDivision", "divisionName", adivisionName); + const divisionName = helper.string("getDivision", "divisionName", _divisionName); const division = getDivision(divisionName); return getSafeDivision(division); }, @@ -783,33 +850,34 @@ export function NetscriptCorporation( divisions: corporation.divisions.map((division): NSDivision => getSafeDivision(division)), }; }, - createCorporation: function (acorporationName: string, selfFund = true): boolean { - const corporationName = helper.string("createCorporation", "corporationName", acorporationName); + createCorporation: function (_corporationName: unknown, _selfFund: unknown = true): boolean { + const corporationName = helper.string("createCorporation", "corporationName", _corporationName); + const selfFund = helper.boolean(_selfFund); return createCorporation(corporationName, selfFund); }, - hasUnlockUpgrade: function (aupgradeName: any): boolean { + hasUnlockUpgrade: function (_upgradeName: unknown): boolean { checkAccess("hasUnlockUpgrade"); - const upgradeName = helper.string("hasUnlockUpgrade", "upgradeName", aupgradeName); + const upgradeName = helper.string("hasUnlockUpgrade", "upgradeName", _upgradeName); return hasUnlockUpgrade(upgradeName); }, - getUnlockUpgradeCost: function (aupgradeName: any): number { + getUnlockUpgradeCost: function (_upgradeName: unknown): number { checkAccess("getUnlockUpgradeCost"); - const upgradeName = helper.string("getUnlockUpgradeCost", "upgradeName", aupgradeName); + const upgradeName = helper.string("getUnlockUpgradeCost", "upgradeName", _upgradeName); return getUnlockUpgradeCost(upgradeName); }, - getUpgradeLevel: function (aupgradeName: any): number { + getUpgradeLevel: function (_upgradeName: unknown): number { checkAccess("hasUnlockUpgrade"); - const upgradeName = helper.string("getUpgradeLevel", "upgradeName", aupgradeName); + const upgradeName = helper.string("getUpgradeLevel", "upgradeName", _upgradeName); return getUpgradeLevel(upgradeName); }, - getUpgradeLevelCost: function (aupgradeName: any): number { + getUpgradeLevelCost: function (_upgradeName: unknown): number { checkAccess("getUpgradeLevelCost"); - const upgradeName = helper.string("getUpgradeLevelCost", "upgradeName", aupgradeName); + const upgradeName = helper.string("getUpgradeLevelCost", "upgradeName", _upgradeName); return getUpgradeLevelCost(upgradeName); }, - getExpandIndustryCost: function (aindustryName: any): number { + getExpandIndustryCost: function (_industryName: unknown): number { checkAccess("getExpandIndustryCost"); - const industryName = helper.string("getExpandIndustryCost", "industryName", aindustryName); + const industryName = helper.string("getExpandIndustryCost", "industryName", _industryName); return getExpandIndustryCost(industryName); }, getExpandCityCost: function (): number { @@ -824,31 +892,31 @@ export function NetscriptCorporation( checkAccess("acceptInvestmentOffer"); return acceptInvestmentOffer(); }, - goPublic: function (anumShares: any): boolean { + goPublic: function (_numShares: unknown): boolean { checkAccess("acceptInvestmentOffer"); - const numShares = helper.number("goPublic", "numShares", anumShares); + const numShares = helper.number("goPublic", "numShares", _numShares); return goPublic(numShares); }, - sellShares: function (anumShares: any): number { + sellShares: function (_numShares: unknown): number { checkAccess("acceptInvestmentOffer"); - const numShares = helper.number("sellStock", "numShares", anumShares); + const numShares = helper.number("sellStock", "numShares", _numShares); return SellShares(getCorporation(), player, numShares); }, - buyBackShares: function (anumShares: any): boolean { + buyBackShares: function (_numShares: unknown): boolean { checkAccess("acceptInvestmentOffer"); - const numShares = helper.number("buyStock", "numShares", anumShares); + const numShares = helper.number("buyStock", "numShares", _numShares); return BuyBackShares(getCorporation(), player, numShares); }, - bribe: function (afactionName: string, aamountCash: any, aamountShares: any): boolean { + bribe: function (_factionName: unknown, _amountCash: unknown, _amountShares: unknown): boolean { checkAccess("bribe"); - const factionName = helper.string("bribe", "factionName", afactionName); - const amountCash = helper.number("bribe", "amountCash", aamountCash); - const amountShares = helper.number("bribe", "amountShares", aamountShares); + const factionName = helper.string("bribe", "factionName", _factionName); + const amountCash = helper.number("bribe", "amountCash", _amountCash); + const amountShares = helper.number("bribe", "amountShares", _amountShares); return bribe(factionName, amountCash, amountShares); }, getBonusTime: function (): number { checkAccess("getBonusTime"); return Math.round(getCorporation().storedCycles / 5) * 1000; - } + }, }; } diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index 354e94b84..73581c89e 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -130,7 +130,9 @@ export function NetscriptSingularity( augs = augs.filter((a) => a.factions.length > 1 || Factions[facName].augmentations.includes(a.name)); // Remove blacklisted augs. - const blacklist = [AugmentationNames.NeuroFluxGovernor, AugmentationNames.TheRedPill]; + const blacklist = [AugmentationNames.NeuroFluxGovernor, AugmentationNames.TheRedPill].map( + (augmentation) => augmentation as string, + ); augs = augs.filter((a) => !blacklist.includes(a.name)); } diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx index ffde60312..70332f21f 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx @@ -2086,15 +2086,16 @@ export function reapplyAllAugmentations(this: IPlayer, resetMultipliers = true): this.augmentations[i].name = "Hacknet Node NIC Architecture Neural-Upload"; } - const augName = this.augmentations[i].name; + const playerAug = this.augmentations[i]; + const augName = playerAug.name; const aug = Augmentations[augName]; if (aug == null) { console.warn(`Invalid augmentation name in Player.reapplyAllAugmentations(). Aug ${augName} will be skipped`); continue; } aug.owned = true; - if (aug.name == AugmentationNames.NeuroFluxGovernor) { - for (let j = 0; j < aug.level; ++j) { + if (augName == AugmentationNames.NeuroFluxGovernor) { + for (let j = 0; j < playerAug.level; ++j) { applyAugmentation(this.augmentations[i], true); } continue; diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index cd688bcb1..87e65df5a 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -586,7 +586,7 @@ export interface BitNodeMultipliers { /** Influences the maximum allowed RAM for a purchased server */ PurchasedServerMaxRam: number; /** Influences cost of any purchased server at or above 128GB */ - PurchasedServerSoftCap: number; + PurchasedServerSoftcap: number; /** Influences the minimum favor the player must have with a faction before they can donate to gain rep. */ RepToDonateToFaction: number; /** Influences how much the money on a server can be reduced when a script performs a hack against it. */ @@ -5709,7 +5709,7 @@ export interface NS extends Singularity { * @param args - Arguments to identify the script * @returns The info about the running script if found, and null otherwise. */ - getRunningScript(filename?: FilenameOrPID, hostname?: string, ...args: (string | number)[]): RunningScript; + getRunningScript(filename?: FilenameOrPID, hostname?: string, ...args: (string | number)[]): RunningScript | null; /** * Get cost of purchasing a server. diff --git a/src/Server/BaseServer.ts b/src/Server/BaseServer.ts index af7a80628..faa0d3c35 100644 --- a/src/Server/BaseServer.ts +++ b/src/Server/BaseServer.ts @@ -163,7 +163,7 @@ export class BaseServer { return false; } - removeContract(contract: CodingContract): void { + removeContract(contract: CodingContract | string): void { if (contract instanceof CodingContract) { this.contracts = this.contracts.filter((c) => { return c.fn !== contract.fn; diff --git a/src/Sidebar/ui/SidebarRoot.tsx b/src/Sidebar/ui/SidebarRoot.tsx index 32bd2b18a..113d94f47 100644 --- a/src/Sidebar/ui/SidebarRoot.tsx +++ b/src/Sidebar/ui/SidebarRoot.tsx @@ -276,7 +276,7 @@ export function SidebarRoot(props: IProps): React.ReactElement { function handleShortcuts(this: Document, event: KeyboardEvent): any { if (Settings.DisableHotkeys) return; if ((props.player.isWorking && props.player.focus) || redPillFlag) return; - if (event.key === "t" && event.altKey) { + if (event.key === KEY.T && event.altKey) { event.preventDefault(); clickTerminal(); } else if (event.key === KEY.C && event.altKey) { @@ -522,7 +522,9 @@ export function SidebarRoot(props: IProps): React.ReactElement { - + @@ -570,7 +572,9 @@ export function SidebarRoot(props: IProps): React.ReactElement { > - + diff --git a/src/Terminal/Parser.ts b/src/Terminal/Parser.ts index 80c3654b4..fc38c1ba3 100644 --- a/src/Terminal/Parser.ts +++ b/src/Terminal/Parser.ts @@ -1,3 +1,4 @@ +import { KEY } from "../utils/helpers/keyCodes"; import { substituteAliases } from "../Alias"; // Helper function that checks if an argument (which is a string) is a valid number function isNumber(str: string): boolean { @@ -55,11 +56,11 @@ export function ParseCommand(command: string): (string | number | boolean)[] { } const c = command.charAt(i); - if (c === '"') { + if (c === KEY.DOUBLE_QUOTE) { // Double quotes - if (!escaped && prevChar === " ") { - const endQuote = command.indexOf('"', i + 1); - if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === " ")) { + if (!escaped && prevChar === KEY.SPACE) { + const endQuote = command.indexOf(KEY.DOUBLE_QUOTE, i + 1); + if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) { args.push(command.substr(i + 1, endQuote - i - 1)); if (endQuote === command.length - 1) { start = i = endQuote + 1; @@ -69,15 +70,15 @@ export function ParseCommand(command: string): (string | number | boolean)[] { continue; } } else if (inQuote === ``) { - inQuote = `"`; - } else if (inQuote === `"`) { - inQuote = ``; - } - } else if (c === "'") { + inQuote = KEY.DOUBLE_QUOTE; + } else if (inQuote === KEY.DOUBLE_QUOTE) { + inQuote = ``; + } + } else if (c === KEY.QUOTE) { // Single quotes, same thing as above - if (!escaped && prevChar === " ") { - const endQuote = command.indexOf("'", i + 1); - if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === " ")) { + if (!escaped && prevChar === KEY.SPACE) { + const endQuote = command.indexOf(KEY.QUOTE, i + 1); + if (endQuote !== -1 && (endQuote === command.length - 1 || command.charAt(endQuote + 1) === KEY.SPACE)) { args.push(command.substr(i + 1, endQuote - i - 1)); if (endQuote === command.length - 1) { start = i = endQuote + 1; @@ -87,11 +88,11 @@ export function ParseCommand(command: string): (string | number | boolean)[] { continue; } } else if (inQuote === ``) { - inQuote = `'`; - } else if (inQuote === `'`) { - inQuote = ``; - } - } else if (c === " " && inQuote === ``) { + inQuote = KEY.QUOTE; + } else if (inQuote === KEY.QUOTE) { + inQuote = ``; + } + } else if (c === KEY.SPACE && inQuote === ``) { const arg = command.substr(start, i - start); // If this is a number, convert it from a string to number diff --git a/src/Terminal/ui/TerminalInput.tsx b/src/Terminal/ui/TerminalInput.tsx index 35d2dd93a..afaf7604b 100644 --- a/src/Terminal/ui/TerminalInput.tsx +++ b/src/Terminal/ui/TerminalInput.tsx @@ -97,7 +97,7 @@ export function TerminalInput({ terminal, router, player }: IProps): React.React break; case "deletewordbefore": // Delete rest of word before the cursor for (let delStart = start - 1; delStart > -2; --delStart) { - if ((inputText.charAt(delStart) === " " || delStart === -1) && delStart !== start - 1) { + if ((inputText.charAt(delStart) === KEY.SPACE || delStart === -1) && delStart !== start - 1) { saveValue(inputText.substr(0, delStart + 1) + inputText.substr(start), () => { // Move cursor to correct location // foo bar |baz bum --> foo |baz bum @@ -110,7 +110,7 @@ export function TerminalInput({ terminal, router, player }: IProps): React.React break; case "deletewordafter": // Delete rest of word after the cursor, including trailing space for (let delStart = start + 1; delStart <= value.length + 1; ++delStart) { - if (inputText.charAt(delStart) === " " || delStart === value.length + 1) { + if (inputText.charAt(delStart) === KEY.SPACE || delStart === value.length + 1) { saveValue(inputText.substr(0, start) + inputText.substr(delStart + 1), () => { // Move cursor to correct location // foo bar |baz bum --> foo bar |bum @@ -151,7 +151,7 @@ export function TerminalInput({ terminal, router, player }: IProps): React.React break; case "prevword": for (let i = start - 2; i >= 0; --i) { - if (ref.value.charAt(i) === " ") { + if (ref.value.charAt(i) === KEY.SPACE) { ref.setSelectionRange(i + 1, i + 1); return; } @@ -163,7 +163,7 @@ export function TerminalInput({ terminal, router, player }: IProps): React.React break; case "nextword": for (let i = start + 1; i <= inputLength; ++i) { - if (ref.value.charAt(i) === " ") { + if (ref.value.charAt(i) === KEY.SPACE) { ref.setSelectionRange(i, i); return; } diff --git a/src/utils/helpers/keyCodes.ts b/src/utils/helpers/keyCodes.ts index 942ce80b0..29231dfec 100644 --- a/src/utils/helpers/keyCodes.ts +++ b/src/utils/helpers/keyCodes.ts @@ -15,6 +15,8 @@ export enum KEY { LEFT_ARROW = "ArrowLeft", RIGHT_ARROW = "ArrowRight", + QUOTE = "'", + DOUBLE_QUOTE = '"', OPEN_BRACKET = "[", CLOSE_BRACKET = "]", LESS_THAN = "<",