/* Functions that handle applying for different jobs/positions in a Company */ //Determines the job that the Player should get (if any) at the current //company PlayerObject.prototype.applyForJob = function(entryPosType) { if (Engine.Debug) { console.log("Player.applyForJob() called"); } var currCompany = ""; if (this.companyName != "") { currCompany = Companies[this.companyName]; } var currPositionName = ""; if (this.companyPosition != "") { currPositionName = this.companyPosition.positionName; } var company = Companies[this.location]; //Company being applied to var pos = entryPosType; if (!this.isQualified(company, pos)) { dialogBoxCreate("You are not qualified for this position"); return; } while (true) { if (Engine.Debug) {console.log("Determining qualification for next Company Position");} var newPos = getNextCompanyPosition(pos); if (newPos == null) { if (Engine.Debug) { console.log("Player already at highest position, cannot go any higher"); } 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; } } //Check if the determined job is the same as the player's current job if (currCompany != "") { if (currCompany.companyName == company.companyName && pos.positionName == currPositionName) { dialogBoxCreate("Unfortunately, you do not qualify for a promotion"); return; //Same job, do nothing } } //Lose reputation from a Company if you are leaving it for another job if (currCompany != "") { if (currCompany.companyName != company.companyName) { company.playerReputation -= 1000; if (company.playerReputation < 0) {company.playerReputation = 0;} if (Engine.debug) { console.log("Lost reputation for " + company.companyName + ". It is now " + company.playerReputation); } } } this.companyName = company.companyName; this.companyPosition = pos; dialogBoxCreate("Congratulations! You were offered a new job at ", this.companyName, " as a " + pos.positionName); Engine.loadLocationContent(); } PlayerObject.prototype.applyForSoftwareJob = function() { this.applyForJob(CompanyPositions.SoftwareIntern); } PlayerObject.prototype.applyForItJob = function() { this.applyForJob(CompanyPositions.ITIntern); } PlayerObject.prototype.applyForSecurityEngineerJob = function() { var company = Companies[this.location]; //Company being applied to if (this.isQualified(company, CompanyPositions.SecurityEngineer)) { this.companyName = company.companyName; this.companyPosition = CompanyPositions.SecurityEngineer; dialogBoxCreate("Congratulations, you were offered a position at ", this.companyName, " as a Security Engineer!" , ""); Engine.loadLocationContent(); } else { dialogBoxCreate("Unforunately, you do not qualify for this position"); } } PlayerObject.prototype.applyForNetworkEngineerJob = function() { var company = Companies[this.location]; //Company being applied to if (this.isQualified(company, CompanyPositions.NetworkEngineer)) { this.applyForJob(CompanyPositions.NetworkEngineer); } else { dialogBoxCreate("Unforunately, you do not qualify for this position"); } } PlayerObject.prototype.applyForBusinessJob = function() { this.applyForJob(CompanyPositions.BusinessIntern); } PlayerObject.prototype.applyForSecurityJob = function() { //TODO If case for POlice departments this.applyForJob(CompanyPositions.SecurityGuard); } PlayerObject.prototype.applyForAgentJob = function() { var company = Companies[this.location]; //Company being applied to if (this.isQualified(company, CompanyPositions.FieldAgent)) { this.applyForJob(CompanyPositions.FieldAgent); } else { dialogBoxCreate("Unforunately, you do not qualify for this position"); } } PlayerObject.prototype.applyForEmployeeJob = function() { var company = Companies[this.location]; //Company being applied to if (this.isQualified(company, CompanyPositions.Employee)) { this.companyName = company.companyName; this.companyPosition = CompanyPositions.Employee; dialogBoxCreate("Congratulations, you are now employed at ", this.companyName, "", ""); Engine.loadLocationContent(); } else { dialogBoxCreate("Unforunately, you do not qualify for this position"); } } PlayerObject.prototype.applyForWaiterJob = function() { var company = Companies[this.location]; //Company being applied to if (this.isQualified(company, CompanyPositions.Waiter)) { this.companyName = company.companyName; this.companyPosition = CompanyPositions.Waiter; dialogBoxCreate("Congratulations, you are now employed as a waiter at ", this.companyName, "", ""); Engine.loadLocationContent(); } else { dialogBoxCreate("Unforunately, you do not qualify for this position"); } } //Checks if the Player is qualified for a certain position PlayerObject.prototype.isQualified = function(company, position) { var offset = company.jobStatReqOffset; var reqHacking = position.requiredHacking > 1 ? position.requiredHacking+offset : 1; var reqStrength = position.requiredStrength > 1 ? position.requiredStrength+offset : 1; var reqDefense = position.requiredDefense > 1 ? position.requiredDefense+offset : 1; var reqDexterity = position.requiredDexterity > 1 ? position.requiredDexterity+offset : 1; var reqAgility = position.requiredDexterity > 1 ? position.requiredDexterity+offset : 1; var reqCharisma = position.requiredCharisma > 1 ? position.requiredCharisma+offset : 1; if (this.hacking_skill >= reqHacking && this.strength >= reqStrength && this.defense >= reqDefense && this.dexterity >= reqDexterity && this.agility >= reqAgility && this.charisma >= reqCharisma && company.playerReputation >= position.requiredReputation) { return true; } return false; }