COMPANY: Much better job location interface (#927)

This commit is contained in:
Jesse Clark
2023-12-18 04:23:47 -08:00
committed by GitHub
parent 97d679bdac
commit 28ef5df880
22 changed files with 443 additions and 798 deletions
+2 -6
View File
@@ -3,14 +3,13 @@ import { constructorsForReviver, Generic_toJSON, Generic_fromJSON, IReviverValue
import { Player } from "@player";
import { Work, WorkType } from "./Work";
import { influenceStockThroughCompanyWork } from "../StockMarket/PlayerInfluencing";
import { AugmentationName, CompanyName, JobName } from "@enums";
import { CompanyName, JobName } from "@enums";
import { calculateCompanyWorkStats } from "./Formulas";
import { Companies } from "../Company/Companies";
import { applyWorkStats, scaleWorkStats, WorkStats } from "./WorkStats";
import { Company } from "../Company/Company";
import { dialogBoxCreate } from "../ui/React/DialogBox";
import { Reputation } from "../ui/React/Reputation";
import { CONSTANTS } from "../Constants";
import { CompanyPositions } from "../Company/CompanyPositions";
import { isMember } from "../utils/EnumHelper";
import { invalidWork } from "./InvalidWork";
@@ -34,10 +33,7 @@ export class CompanyWork extends Work {
}
getGainRates(job: JobName): WorkStats {
let focusBonus = 1;
if (!Player.hasAugmentation(AugmentationName.NeuroreceptorManager, true)) {
focusBonus = Player.focus ? 1 : CONSTANTS.BaseFocusBonus;
}
const focusBonus = CompanyPositions[job].isPartTime ? 1 : Player.focusPenalty();
const company = this.getCompany();
return scaleWorkStats(calculateCompanyWorkStats(Player, company, CompanyPositions[job], company.favor), focusBonus);
}
+2 -5
View File
@@ -1,6 +1,6 @@
import { dialogBoxCreate } from "../ui/React/DialogBox";
import { constructorsForReviver, Generic_toJSON, Generic_fromJSON, IReviverValue } from "../utils/JSONReviver";
import { AugmentationName, CompletedProgramName } from "@enums";
import { CompletedProgramName } from "@enums";
import { CONSTANTS } from "../Constants";
import { Player } from "@player";
import { Programs } from "../Programs/Programs";
@@ -55,10 +55,7 @@ export class CreateProgramWork extends Work {
}
process(cycles: number): boolean {
let focusBonus = 1;
if (!Player.hasAugmentation(AugmentationName.NeuroreceptorManager, true)) {
focusBonus = Player.focus ? 1 : CONSTANTS.BaseFocusBonus;
}
const focusBonus = Player.focusPenalty();
//Higher hacking skill will allow you to create programs faster
const reqLvl = this.getProgram().create?.level ?? 0;
let skillMult = (Player.skills.hacking / reqLvl) * calculateIntelligenceBonus(Player.skills.intelligence, 3); //This should always be greater than 1;
+3 -3
View File
@@ -55,10 +55,10 @@ export class CrimeWork extends Work {
);
return;
}
const focusPenalty = Player.focusPenalty();
const focusBonus = Player.focusPenalty();
// exp times 2 because were trying to maintain the same numbers as before the conversion
// Technically the definition of Crimes should have the success numbers and failure should divide by 4
let gains = scaleWorkStats(this.earnings(), focusPenalty, false);
let gains = scaleWorkStats(this.earnings(), focusBonus, false);
let karma = crime.karma;
const success = determineCrimeSuccess(crime.type);
if (success) {
@@ -75,7 +75,7 @@ export class CrimeWork extends Work {
Player.gainDexterityExp(gains.dexExp);
Player.gainAgilityExp(gains.agiExp);
Player.gainCharismaExp(gains.chaExp);
Player.karma -= karma * focusPenalty;
Player.karma -= karma * focusBonus;
}
finish(): void {
+3 -10
View File
@@ -4,12 +4,11 @@ import React from "react";
import { Work, WorkType } from "./Work";
import { constructorsForReviver, Generic_toJSON, Generic_fromJSON, IReviverValue } from "../utils/JSONReviver";
import { Player } from "@player";
import { AugmentationName, FactionName, FactionWorkType } from "@enums";
import { FactionName, FactionWorkType } from "@enums";
import { Factions } from "../Faction/Factions";
import { applyWorkStats, scaleWorkStats, WorkStats } from "./WorkStats";
import { dialogBoxCreate } from "../ui/React/DialogBox";
import { Reputation } from "../ui/React/Reputation";
import { CONSTANTS } from "../Constants";
import { calculateFactionExp, calculateFactionRep } from "./Formulas";
import { getEnumHelper } from "../utils/EnumHelper";
@@ -36,18 +35,12 @@ export class FactionWork extends Work {
}
getReputationRate(): number {
let focusBonus = 1;
if (!Player.hasAugmentation(AugmentationName.NeuroreceptorManager, true)) {
focusBonus = Player.focus ? 1 : CONSTANTS.BaseFocusBonus;
}
const focusBonus = Player.focusPenalty();
return calculateFactionRep(Player, this.factionWorkType, this.getFaction().favor) * focusBonus;
}
getExpRates(): WorkStats {
let focusBonus = 1;
if (!Player.hasAugmentation(AugmentationName.NeuroreceptorManager, true)) {
focusBonus = Player.focus ? 1 : CONSTANTS.BaseFocusBonus;
}
const focusBonus = Player.focusPenalty();
const rate = calculateFactionExp(Player, this.factionWorkType);
return scaleWorkStats(rate, focusBonus, false);
}
+1 -5
View File
@@ -35,11 +35,7 @@ export class GraftingWork extends Work {
}
process(cycles: number): boolean {
let focusBonus = 1;
if (!Player.hasAugmentation(AugmentationName.NeuroreceptorManager, true)) {
focusBonus = Player.focus ? 1 : CONSTANTS.BaseFocusBonus;
}
const focusBonus = Player.focusPenalty();
this.cyclesWorked += cycles;
this.unitCompleted += CONSTANTS.MilliPerCycle * cycles * graftingIntBonus() * focusBonus;