From d873f7279b2654d388675f108fdbc95e983a4208 Mon Sep 17 00:00:00 2001 From: theit8514 Date: Tue, 21 Dec 2021 08:13:18 -0500 Subject: [PATCH] Add focus parameter to workForCompany/workForFaction Defaults to true to keep previous behavior. --- src/NetscriptFunctions/Singularity.ts | 48 ++++++++++++++++------ src/ScriptEditor/NetscriptDefinitions.d.ts | 6 ++- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index a5508f92f..3c185e602 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -819,7 +819,7 @@ export function NetscriptSingularity( return player.getUpgradeHomeRamCost(); }, - workForCompany: function (companyName: any): any { + workForCompany: function (companyName: any, focus: boolean = true): any { helper.updateDynamicRam("workForCompany", getRamCost("workForCompany")); helper.checkSingularityAccess("workForCompany", 2); @@ -848,7 +848,6 @@ export function NetscriptSingularity( return false; } - const wasWorking = player.isWorking; const wasFocused = player.focus; if (player.isWorking) { const txt = player.singularityStopWork(); @@ -861,8 +860,14 @@ export function NetscriptSingularity( player.startWork(companyName); } - if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing(); - else if (wasWorking && wasFocused) player.startFocusing(); + if (focus) { + player.startFocusing(); + Router.toWork(); + } + else if (wasFocused) { + player.stopFocusing(); + Router.toTerminal(); + } workerScript.log( "workForCompany", () => `Began working at '${player.companyName}' as a '${companyPositionName}'`, @@ -986,7 +991,7 @@ export function NetscriptSingularity( workerScript.log("joinFaction", () => `Joined the '${name}' faction.`); return true; }, - workForFaction: function (name: any, type: any): any { + workForFaction: function (name: any, type: any, focus: boolean = true): any { helper.updateDynamicRam("workForFaction", getRamCost("workForFaction")); helper.checkSingularityAccess("workForFaction", 2); getFaction("workForFaction", name); @@ -1002,8 +1007,7 @@ export function NetscriptSingularity( return false; } - const wasWorking = player.isWorking; - const wasFocused = player.focus; + const wasFocusing = player.focus; if (player.isWorking) { const txt = player.singularityStopWork(); workerScript.log("workForFaction", () => txt); @@ -1102,8 +1106,14 @@ export function NetscriptSingularity( return false; } player.startFactionHackWork(fac); - if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing(); - else if (wasWorking && wasFocused) player.startFocusing(); + if (focus) + { + player.startFocusing(); + Router.toWork(); + } else if (wasFocusing) { + player.stopFocusing(); + Router.toTerminal(); + } workerScript.log("workForFaction", () => `Started carrying out hacking contracts for '${fac.name}'`); return true; case "field": @@ -1114,8 +1124,14 @@ export function NetscriptSingularity( return false; } player.startFactionFieldWork(fac); - if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing(); - else if (wasWorking && wasFocused) player.startFocusing(); + if (focus) + { + player.startFocusing(); + Router.toWork(); + } else if (wasFocusing) { + player.stopFocusing(); + Router.toTerminal(); + } workerScript.log("workForFaction", () => `Started carrying out field missions for '${fac.name}'`); return true; case "security": @@ -1126,8 +1142,14 @@ export function NetscriptSingularity( return false; } player.startFactionSecurityWork(fac); - if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing(); - else if (wasWorking && wasFocused) player.startFocusing(); + if (focus) + { + player.startFocusing(); + Router.toWork(); + } else if (wasFocusing) { + player.stopFocusing(); + Router.toTerminal(); + } workerScript.log("workForFaction", () => `Started carrying out security work for '${fac.name}'`); return true; default: diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index 3232a6e06..2af8bdf2e 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -1493,9 +1493,10 @@ export interface Singularity { * //This way, your company reputation will be updated every minute. * ``` * @param companyName - Name of company to work for. Must be an exact match. Optional. If not specified, this argument defaults to the last job that you worked + * @param focus - Acquire player focus on this work operation. Optional. Defaults to true. * @returns True if the player starts working, and false otherwise. */ - workForCompany(companyName?: string): boolean; + workForCompany(companyName?: string, focus?: boolean): boolean; /** * SF4.2 - Apply for a job at a company. @@ -1612,9 +1613,10 @@ export interface Singularity { * ``` * @param faction - Name of faction to work for. * @param workType - Type of work to perform for the faction. + * @param focus - Acquire player focus on this work operation. Optional. Defaults to true. * @returns True if the player starts working, and false otherwise. */ - workForFaction(faction: string, workType: string): boolean; + workForFaction(faction: string, workType: string, focus?: boolean): boolean; /** * SF4.2 - Get faction reputation.