diff --git a/dist/bitburner.d.ts b/dist/bitburner.d.ts index 9855c3e34..7b2f4df66 100644 --- a/dist/bitburner.d.ts +++ b/dist/bitburner.d.ts @@ -4520,9 +4520,10 @@ export declare interface Singularity { * * @param universityName - Name of university. You must be in the correct city for whatever university you specify. * @param courseName - Name of course. + * @param focus - Acquire player focus on this class. Optional. Defaults to true. * @returns True if actions is successfully started, false otherwise. */ - universityCourse(universityName: string, courseName: string): boolean; + universityCourse(universityName: string, courseName: string, focus?: boolean): boolean; /** * SF4.1 - Workout at the gym. @@ -4541,9 +4542,10 @@ export declare interface Singularity { * * @param gymName - Name of gym. You must be in the correct city for whatever gym you specify. * @param stat - The stat you want to train. + * @param focus - Acquire player focus on this gym workout. Optional. Defaults to true. * @returns True if actions is successfully started, false otherwise. */ - gymWorkout(gymName: string, stat: string): boolean; + gymWorkout(gymName: string, stat: string, focus?: boolean): boolean; /** * SF4.1 - Travel to another city. @@ -4954,9 +4956,10 @@ export declare interface Singularity { * ns.createProgram(“relaysmtp.exe”); * ``` * @param program - Name of program to create. + * @param focus - Acquire player focus on this program creation. Optional. Defaults to true. * @returns True if you successfully start working on the specified program, and false otherwise. */ - createProgram(program: string): boolean; + createProgram(program: string, focus?: boolean): boolean; /** * SF4.3 - Commit a crime. diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index d5fd567fb..41e860112 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -267,9 +267,10 @@ export function NetscriptSingularity( player.gainIntelligenceExp(CONSTANTS.IntelligenceSingFnBaseExpGain / 500); return true; }, - universityCourse: function (universityName: any, className: any): any { + universityCourse: function (universityName: any, className: any, focus = true): any { helper.updateDynamicRam("universityCourse", getRamCost(player, "universityCourse")); helper.checkSingularityAccess("universityCourse"); + const wasFocusing = player.focus; if (player.isWorking) { const txt = player.singularityStopWork(); workerScript.log("universityCourse", () => txt); @@ -343,13 +344,21 @@ export function NetscriptSingularity( return false; } player.startClass(Router, costMult, expMult, task); + if (focus) { + player.startFocusing(); + Router.toWork(); + } else if (wasFocusing) { + player.stopFocusing(); + Router.toTerminal(); + } workerScript.log("universityCourse", () => `Started ${task} at ${universityName}`); return true; }, - gymWorkout: function (gymName: any, stat: any): any { + gymWorkout: function (gymName: any, stat: any, focus = true): any { helper.updateDynamicRam("gymWorkout", getRamCost(player, "gymWorkout")); helper.checkSingularityAccess("gymWorkout"); + const wasFocusing = player.focus; if (player.isWorking) { const txt = player.singularityStopWork(); workerScript.log("gymWorkout", () => txt); @@ -442,6 +451,13 @@ export function NetscriptSingularity( workerScript.log("gymWorkout", () => `Invalid stat: ${stat}.`); return false; } + if (focus) { + player.startFocusing(); + Router.toWork(); + } else if (wasFocusing) { + player.stopFocusing(); + Router.toTerminal(); + } workerScript.log("gymWorkout", () => `Started training ${stat} at ${gymName}`); return true; }, @@ -1215,10 +1231,11 @@ export function NetscriptSingularity( ); return true; }, - createProgram: function (name: any): any { + createProgram: function (name: any, focus = true): any { helper.updateDynamicRam("createProgram", getRamCost(player, "createProgram")); helper.checkSingularityAccess("createProgram"); + const wasFocusing = player.focus; if (player.isWorking) { const txt = player.singularityStopWork(); workerScript.log("createProgram", () => txt); @@ -1253,6 +1270,13 @@ export function NetscriptSingularity( } player.startCreateProgramWork(Router, p.name, create.time, create.level); + if (focus) { + player.startFocusing(); + Router.toWork(); + } else if (wasFocusing) { + player.stopFocusing(); + Router.toTerminal(); + } workerScript.log("createProgram", () => `Began creating program: '${name}'`); return true; }, diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index 08c79e4ad..67c8bf1b7 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -1420,9 +1420,10 @@ export interface Singularity { * * @param universityName - Name of university. You must be in the correct city for whatever university you specify. * @param courseName - Name of course. + * @param focus - Acquire player focus on this class. Optional. Defaults to true. * @returns True if actions is successfully started, false otherwise. */ - universityCourse(universityName: string, courseName: string): boolean; + universityCourse(universityName: string, courseName: string, focus?: boolean): boolean; /** * Workout at the gym. @@ -1441,9 +1442,10 @@ export interface Singularity { * * @param gymName - Name of gym. You must be in the correct city for whatever gym you specify. * @param stat - The stat you want to train. + * @param focus - Acquire player focus on this gym workout. Optional. Defaults to true. * @returns True if actions is successfully started, false otherwise. */ - gymWorkout(gymName: string, stat: string): boolean; + gymWorkout(gymName: string, stat: string, focus?: boolean): boolean; /** * Travel to another city. @@ -1854,9 +1856,10 @@ export interface Singularity { * ns.createProgram(“relaysmtp.exe”); * ``` * @param program - Name of program to create. + * @param focus - Acquire player focus on this program creation. Optional. Defaults to true. * @returns True if you successfully start working on the specified program, and false otherwise. */ - createProgram(program: string): boolean; + createProgram(program: string, focus?: boolean): boolean; /** * Commit a crime.