diff --git a/src/Locations/ui/GymLocation.tsx b/src/Locations/ui/GymLocation.tsx index c735c2b69..f6aa54158 100644 --- a/src/Locations/ui/GymLocation.tsx +++ b/src/Locations/ui/GymLocation.tsx @@ -35,7 +35,9 @@ export function GymLocation(props: IProps): React.ReactElement { function train(stat: string): void { const loc = props.loc; - props.p.startClass(props.router, calculateCost(), loc.expMult, stat); + props.p.startClass(calculateCost(), loc.expMult, stat); + props.p.startFocusing(); + props.router.toWork(); } function trainStrength(): void { diff --git a/src/Locations/ui/UniversityLocation.tsx b/src/Locations/ui/UniversityLocation.tsx index fd65fa62c..f9ed00738 100644 --- a/src/Locations/ui/UniversityLocation.tsx +++ b/src/Locations/ui/UniversityLocation.tsx @@ -34,7 +34,9 @@ export function UniversityLocation(props: IProps): React.ReactElement { function take(stat: string): void { const loc = props.loc; - player.startClass(router, calculateCost(), loc.expMult, stat); + player.startClass(calculateCost(), loc.expMult, stat); + player.startFocusing(); + router.toWork(); } function study(): void { diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index 2c303352a..5f37b2596 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -343,7 +343,7 @@ export function NetscriptSingularity( workerScript.log("universityCourse", () => `Invalid class name: ${className}.`); return false; } - player.startClass(Router, costMult, expMult, task); + player.startClass(costMult, expMult, task); if (focus) { player.startFocusing(); Router.toWork(); @@ -433,19 +433,19 @@ export function NetscriptSingularity( switch (stat.toLowerCase()) { case "strength".toLowerCase(): case "str".toLowerCase(): - player.startClass(Router, costMult, expMult, CONSTANTS.ClassGymStrength); + player.startClass(costMult, expMult, CONSTANTS.ClassGymStrength); break; case "defense".toLowerCase(): case "def".toLowerCase(): - player.startClass(Router, costMult, expMult, CONSTANTS.ClassGymDefense); + player.startClass(costMult, expMult, CONSTANTS.ClassGymDefense); break; case "dexterity".toLowerCase(): case "dex".toLowerCase(): - player.startClass(Router, costMult, expMult, CONSTANTS.ClassGymDexterity); + player.startClass(costMult, expMult, CONSTANTS.ClassGymDexterity); break; case "agility".toLowerCase(): case "agi".toLowerCase(): - player.startClass(Router, costMult, expMult, CONSTANTS.ClassGymAgility); + player.startClass(costMult, expMult, CONSTANTS.ClassGymAgility); break; default: workerScript.log("gymWorkout", () => `Invalid stat: ${stat}.`); @@ -653,7 +653,9 @@ export function NetscriptSingularity( !( player.workType == CONSTANTS.WorkTypeFaction || player.workType == CONSTANTS.WorkTypeCompany || - player.workType == CONSTANTS.WorkTypeCompanyPartTime + player.workType == CONSTANTS.WorkTypeCompanyPartTime || + player.workType == CONSTANTS.WorkTypeCreateProgram || + player.workType == CONSTANTS.WorkTypeStudyClass ) ) { throw helper.makeRuntimeErrorMsg("setFocus", "Cannot change focus for current job"); @@ -1269,7 +1271,7 @@ export function NetscriptSingularity( return false; } - player.startCreateProgramWork(Router, p.name, create.time, create.level); + player.startCreateProgramWork(p.name, create.time, create.level); if (focus) { player.startFocusing(); Router.toWork(); diff --git a/src/PersonObjects/IPlayer.ts b/src/PersonObjects/IPlayer.ts index e6aa717c5..3138e5c9d 100644 --- a/src/PersonObjects/IPlayer.ts +++ b/src/PersonObjects/IPlayer.ts @@ -215,7 +215,7 @@ export interface IPlayer { singularityStopWork(): string; startBladeburner(p: any): void; startFactionWork(faction: Faction): void; - startClass(router: IRouter, costMult: number, expMult: number, className: string): void; + startClass(costMult: number, expMult: number, className: string): void; startCorporation(corpName: string, additionalShares?: number): void; startCrime( router: IRouter, @@ -247,7 +247,7 @@ export interface IPlayer { quitJob(company: string): void; hasJob(): boolean; createHacknetServer(): HacknetServer; - startCreateProgramWork(router: IRouter, programName: string, time: number, reqLevel: number): void; + startCreateProgramWork(programName: string, time: number, reqLevel: number): void; queueAugmentation(augmentationName: string): void; receiveInvite(factionName: string): void; updateSkillLevels(): void; diff --git a/src/PersonObjects/Player/PlayerObject.ts b/src/PersonObjects/Player/PlayerObject.ts index 07d5bacef..b2b859eaa 100644 --- a/src/PersonObjects/Player/PlayerObject.ts +++ b/src/PersonObjects/Player/PlayerObject.ts @@ -220,7 +220,7 @@ export class PlayerObject implements IPlayer { singularityStopWork: () => string; startBladeburner: (p: any) => void; startFactionWork: (faction: Faction) => void; - startClass: (router: IRouter, costMult: number, expMult: number, className: string) => void; + startClass: (costMult: number, expMult: number, className: string) => void; startCorporation: (corpName: string, additionalShares?: number) => void; startCrime: ( router: IRouter, @@ -253,7 +253,7 @@ export class PlayerObject implements IPlayer { hasJob: () => boolean; process: (router: IRouter, numCycles?: number) => void; createHacknetServer: () => HacknetServer; - startCreateProgramWork: (router: IRouter, programName: string, time: number, reqLevel: number) => void; + startCreateProgramWork: (programName: string, time: number, reqLevel: number) => void; queueAugmentation: (augmentationName: string) => void; receiveInvite: (factionName: string) => void; updateSkillLevels: () => void; diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx index 266ae828e..365634cf7 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx @@ -1253,14 +1253,12 @@ export function getWorkRepGain(this: IPlayer): number { /* Creating a Program */ export function startCreateProgramWork( this: IPlayer, - router: IRouter, programName: string, time: number, reqLevel: number, ): void { this.resetWorkStatus(); this.isWorking = true; - this.focus = true; this.workType = CONSTANTS.WorkTypeCreateProgram; //Time needed to complete work affected by hacking skill (linearly based on @@ -1289,7 +1287,6 @@ export function startCreateProgramWork( } this.createProgramName = programName; - router.toWork(); } export function createProgramWork(this: IPlayer, numCycles: number): boolean { @@ -1337,10 +1334,9 @@ export function finishCreateProgramWork(this: IPlayer, cancelled: boolean): stri return "You've finished creating " + programName + "! The new program can be found on your home computer."; } /* Studying/Taking Classes */ -export function startClass(this: IPlayer, router: IRouter, costMult: number, expMult: number, className: string): void { +export function startClass(this: IPlayer, costMult: number, expMult: number, className: string): void { this.resetWorkStatus(); this.isWorking = true; - this.focus = true; this.workType = CONSTANTS.WorkTypeStudyClass; this.workCostMult = costMult; this.workExpMult = expMult; @@ -1353,7 +1349,6 @@ export function startClass(this: IPlayer, router: IRouter, costMult: number, exp this.workDexExpGainRate = earnings.workDexExpGainRate; this.workAgiExpGainRate = earnings.workAgiExpGainRate; this.workChaExpGainRate = earnings.workChaExpGainRate; - router.toWork(); } export function takeClass(this: IPlayer, numCycles: number): boolean { diff --git a/src/Programs/ui/ProgramsRoot.tsx b/src/Programs/ui/ProgramsRoot.tsx index df846da22..7c23b3183 100644 --- a/src/Programs/ui/ProgramsRoot.tsx +++ b/src/Programs/ui/ProgramsRoot.tsx @@ -50,7 +50,9 @@ export function ProgramsRoot(): React.ReactElement { sx={{ my: 1 }} onClick={(event) => { if (!event.isTrusted) return; - player.startCreateProgramWork(router, program.name, create.time, create.level); + player.startCreateProgramWork(program.name, create.time, create.level); + player.startFocusing(); + router.toWork(); }} > {program.name}