diff --git a/src/Augmentation/AugmentationHelpers.tsx b/src/Augmentation/AugmentationHelpers.tsx index 37fd019c7..cadffe47d 100644 --- a/src/Augmentation/AugmentationHelpers.tsx +++ b/src/Augmentation/AugmentationHelpers.tsx @@ -2044,6 +2044,28 @@ function initAugmentations(): void { } AddToAugmentations(SNA); + const NeuroreceptorManager = new Augmentation({ + name: AugmentationNames.NeuroreceptorManager, + repCost: 0.75e5, + moneyCost: 5.5e8, + info: + "A brain implant carefully assembled around the synapses, which " + + "micromanages the activity and levels of various neuroreceptor " + + "chemicals and modulates electrical acvitiy to optimize concentration, " + + "allowing the user to multitask much more effectively.", + stats: ( + <> + This augmentation removes the penalty for not focusing on actions such as working in a job or working for a + faction. + + ), + }); + NeuroreceptorManager.addToFactions(["Tian Di Hui"]); + if (augmentationExists(AugmentationNames.NeuroreceptorManager)) { + delete Augmentations[AugmentationNames.NeuroreceptorManager]; + } + AddToAugmentations(NeuroreceptorManager); + // Special Bladeburner Augmentations const BladeburnersFactionName = "Bladeburners"; if (factionExists(BladeburnersFactionName)) { diff --git a/src/Augmentation/data/AugmentationNames.ts b/src/Augmentation/data/AugmentationNames.ts index ff1f19c6d..53eb19127 100644 --- a/src/Augmentation/data/AugmentationNames.ts +++ b/src/Augmentation/data/AugmentationNames.ts @@ -41,6 +41,7 @@ export const AugmentationNames: IMap = { CranialSignalProcessorsG4: "Cranial Signal Processors - Gen IV", CranialSignalProcessorsG5: "Cranial Signal Processors - Gen V", NeuronalDensification: "Neuronal Densification", + NeuroreceptorManager: "Neuroreceptor Management Implant", NuoptimalInjectorImplant: "Nuoptimal Nootropic Injector Implant", SpeechEnhancement: "Speech Enhancement", FocusWire: "FocusWire", diff --git a/src/Constants.ts b/src/Constants.ts index 1b7ebc413..0dce70c0e 100644 --- a/src/Constants.ts +++ b/src/Constants.ts @@ -9,6 +9,7 @@ export const CONSTANTS: { MaxSkillLevel: number; MilliPerCycle: number; CorpFactionRepRequirement: number; + BaseFocusBonus: number; BaseCostFor1GBOfRamHome: number; BaseCostFor1GBOfRamServer: number; TravelCost: number; @@ -285,6 +286,7 @@ export const CONSTANTS: { GameCyclesPerFiveMinutes: 300000 / 200, // Player Work & Action + BaseFocusBonus: 0.8, FactionWorkHacking: "Faction Hacking Work", FactionWorkField: "Faction Field Work", FactionWorkSecurity: "Faction Security Work", diff --git a/src/PersonObjects/IPlayer.ts b/src/PersonObjects/IPlayer.ts index d161e87d8..8b9d467f3 100644 --- a/src/PersonObjects/IPlayer.ts +++ b/src/PersonObjects/IPlayer.ts @@ -192,7 +192,7 @@ export interface IPlayer { getNextCompanyPosition(company: Company, entryPosType: CompanyPosition): CompanyPosition | null; getUpgradeHomeRamCost(): number; gotoLocation(to: LocationName): boolean; - hasAugmentation(aug: Augmentation): boolean; + hasAugmentation(aug: string | Augmentation): boolean; hasCorporation(): boolean; hasGangWith(facName: string): boolean; hasTorRouter(): boolean; diff --git a/src/PersonObjects/Player/PlayerObject.ts b/src/PersonObjects/Player/PlayerObject.ts index 1e4257327..4cc52f6ba 100644 --- a/src/PersonObjects/Player/PlayerObject.ts +++ b/src/PersonObjects/Player/PlayerObject.ts @@ -199,7 +199,7 @@ export class PlayerObject implements IPlayer { getNextCompanyPosition: (company: Company, entryPosType: CompanyPosition) => CompanyPosition | null; getUpgradeHomeRamCost: () => number; gotoLocation: (to: LocationName) => boolean; - hasAugmentation: (aug: Augmentation) => boolean; + hasAugmentation: (aug: string | Augmentation) => boolean; hasCorporation: () => boolean; hasGangWith: (facName: string) => boolean; hasTorRouter: () => boolean; diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx index de5b6b334..cf1a28f7c 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx @@ -519,7 +519,10 @@ export function resetWorkStatus(this: IPlayer, generalType?: string, group?: str } export function processWorkEarnings(this: IPlayer, numCycles = 1): void { - const focusBonus = this.focus ? 1 : 0.8; + let focusBonus = 1; + if (!this.hasAugmentation(AugmentationNames["NeuroreceptorManager"])) { + focusBonus = this.focus ? 1 : CONSTANTS.BaseFocusBonus; + } const hackExpGain = focusBonus * this.workHackExpGainRate * numCycles; const strExpGain = focusBonus * this.workStrExpGainRate * numCycles; const defExpGain = focusBonus * this.workDefExpGainRate * numCycles;