From 759c57b29a58eda46bff015e22972a51dc711834 Mon Sep 17 00:00:00 2001 From: Snarling <84951833+Snarling@users.noreply.github.com> Date: Sat, 23 Apr 2022 23:48:01 -0400 Subject: [PATCH] applyForJob streamline and fix logic --- .../Player/PlayerObjectGeneralMethods.tsx | 66 +++++-------------- 1 file changed, 18 insertions(+), 48 deletions(-) diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx index 47fb777c0..20fecebb7 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx @@ -569,7 +569,7 @@ export function processWorkEarnings(this: IPlayer, numCycles = 1): void { /* Working for Company */ export function startWork(this: IPlayer, companyName: string): void { - this.resetWorkStatus(CONSTANTS.WorkTypeCompany, companyName); + if (this.isWorking) this.resetWorkStatus(CONSTANTS.WorkTypeCompany, companyName); this.isWorking = true; this.companyName = companyName; this.workType = CONSTANTS.WorkTypeCompany; @@ -1747,14 +1747,6 @@ export function hospitalize(this: IPlayer): number { //The 'sing' argument designates whether or not this is being called from //the applyToCompany() Netscript Singularity function export function applyForJob(this: IPlayer, entryPosType: CompanyPosition, sing = false): boolean { - // Get current company and job - let currCompany = null; - if (this.companyName !== "") { - currCompany = Companies[this.companyName]; - } - const currPositionName = this.jobs[this.companyName]; - - // Get company that's being applied to const company = Companies[this.location]; //Company being applied to if (!(company instanceof Company)) { console.error(`Could not find company that matches the location: ${this.location}. Player.applyToCompany() failed`); @@ -1764,66 +1756,44 @@ export function applyForJob(this: IPlayer, entryPosType: CompanyPosition, sing = let pos = entryPosType; if (!this.isQualified(company, pos)) { - const reqText = getJobRequirementText(company, pos); if (!sing) { - dialogBoxCreate("Unfortunately, you do not qualify for this position
" + reqText); + dialogBoxCreate("Unfortunately, you do not qualify for this position
" + getJobRequirementText(company, pos)); } return false; } - // Check if this company has the position if (!company.hasPosition(pos)) { + console.error(`Company ${company.name} does not have position ${pos}. Player.applyToCompany() failed`); return false; } while (true) { - const newPos = getNextCompanyPositionHelper(pos); - if (newPos == null) { - break; - } - - //Check if this company has this position - if (company.hasPosition(newPos)) { - if (!this.isQualified(company, newPos)) { - //If player not qualified for next job, break loop so player will be given current job - break; - } - pos = newPos; - } else { - break; - } + const nextPos = getNextCompanyPositionHelper(pos); + if (nextPos == null) break; + if (company.hasPosition(nextPos) && this.isQualified(company, nextPos)) { + pos = nextPos; + } else break; } - //Check if the determined job is the same as the player's current job - if (currCompany != null) { - if (currCompany.name == company.name && pos.name == currPositionName) { + if (this.jobs[company.name] === pos.name) { + //if the player already has this job with this employer + if (!sing) { const nextPos = getNextCompanyPositionHelper(pos); - if (nextPos == null) { - if (!sing) { - dialogBoxCreate("You are already at the highest position for your field! No promotion available"); - } - return false; - } else if (company.hasPosition(nextPos)) { - if (!sing) { - const reqText = getJobRequirementText(company, nextPos); - dialogBoxCreate("Unfortunately, you do not qualify for a promotion
" + reqText); - } - return false; + if (nextPos == null || !company.hasPosition(nextPos)) { + dialogBoxCreate("You are already at the highest position for your field! No promotion available"); } else { - if (!sing) { - dialogBoxCreate("You are already at the highest position for your field! No promotion available"); - } - return false; + const reqText = getJobRequirementText(company, nextPos); + dialogBoxCreate("Unfortunately, you do not qualify for a promotion
" + reqText); } } + return false; } this.jobs[company.name] = pos.name; - if (!this.focus && this.isWorking && this.companyName !== this.location) this.resetWorkStatus(); - this.companyName = this.location; + if (!this.isWorking) this.companyName = company.name; if (!sing) { - dialogBoxCreate("Congratulations! You were offered a new job at " + this.companyName + " as a " + pos.name + "!"); + dialogBoxCreate("Congratulations! You were offered a new job at " + company.name + " as a " + pos.name + "!"); } return true; }