From e8fffc61838296038790fbefc3676d06f467eb3c Mon Sep 17 00:00:00 2001 From: phyzical Date: Thu, 24 Mar 2022 21:19:49 +0800 Subject: [PATCH] added two additonal augmentations * refactored augmentation names to enum --- src/Augmentation/AugmentationCreator.tsx | 28 +- src/Augmentation/AugmentationHelpers.tsx | 42 ++- src/Augmentation/data/AugmentationNames.ts | 368 +++++++-------------- src/Infiltration/ui/Victory.tsx | 11 +- src/PersonObjects/Resleeving/Resleeving.ts | 2 +- 5 files changed, 189 insertions(+), 262 deletions(-) diff --git a/src/Augmentation/AugmentationCreator.tsx b/src/Augmentation/AugmentationCreator.tsx index 13511b0cc..18c8061d2 100644 --- a/src/Augmentation/AugmentationCreator.tsx +++ b/src/Augmentation/AugmentationCreator.tsx @@ -94,7 +94,33 @@ function getRandomBonus(): any { return bonuses[Math.floor(bonuses.length * randomNumber.random())]; } -export const infiltratorsAugmentations = [ +export const infiltratorsOtherAugmentations = [ + new Augmentation({ + name: AugmentationNames.BionicFingers, + repCost: 15e1, + moneyCost: 1e6, + info: + "This state of the art augmentation removes the need for bones and tendons in your fingers, " + + "with this you will have the dexterity equal to the best rubik's cube player in the world. ", + stats: <>This augmentation increases the rep reward to {FactionNames.Infiltrators} by 5 per infiltration., + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.CorporationManagementImplant, + repCost: 25e1, + moneyCost: 1e6, + info: + "As time went on corporations realized that managers were redundant if they could be replaced by AI chips " + + "implanted directly in the brain, and so the this implant was developed which could analyse the users brain " + + "to find the perfect tone and sounding voice to increase productivity of the user to maximum profits.", + stats: ( + <>This augmentation multiplies the rep reward to {FactionNames.Infiltrators} by 2.5 per infiltration. + ), + factions: [FactionNames.Infiltrators], + }), +]; + +export const infiltratorsMiniGameAugmentations = [ new Augmentation({ name: AugmentationNames.BagOfSand, repCost: 1e2, diff --git a/src/Augmentation/AugmentationHelpers.tsx b/src/Augmentation/AugmentationHelpers.tsx index f8377bbd2..3ec1b6856 100644 --- a/src/Augmentation/AugmentationHelpers.tsx +++ b/src/Augmentation/AugmentationHelpers.tsx @@ -17,7 +17,8 @@ import { churchOfTheMachineGodAugmentations, generalAugmentations, getNextNeuroFluxLevel, - infiltratorsAugmentations, + infiltratorsMiniGameAugmentations, + infiltratorsOtherAugmentations, initNeuroFluxGovernor, initUnstableCircadianModulator, } from "./AugmentationCreator"; @@ -33,7 +34,8 @@ function createAugmentations(): void { initNeuroFluxGovernor(), initUnstableCircadianModulator(), ...generalAugmentations, - ...infiltratorsAugmentations, + ...infiltratorsMiniGameAugmentations, + ...infiltratorsOtherAugmentations, ...(factionExists(FactionNames.Bladeburners) ? bladeburnerAugmentations : []), ...(factionExists(FactionNames.ChurchOfTheMachineGod) ? churchOfTheMachineGodAugmentations : []), ].map(resetAugmentation); @@ -62,25 +64,35 @@ export function getGenericAugmentationPriceMultiplier(): number { return Math.pow(getBaseAugmentationPriceMultiplier(), Player.queuedAugmentations.length); } +function updateNeuroFluxGovernorCosts(neuroFluxGovernorAugmentation: Augmentation): void { + let nextLevel = getNextNeuroFluxLevel(); + --nextLevel; + const multiplier = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, nextLevel); + neuroFluxGovernorAugmentation.baseRepRequirement *= multiplier * BitNodeMultipliers.AugmentationRepCost; + neuroFluxGovernorAugmentation.baseCost *= multiplier * BitNodeMultipliers.AugmentationMoneyCost; + + for (let i = 0; i < Player.queuedAugmentations.length - 1; ++i) { + neuroFluxGovernorAugmentation.baseCost *= getBaseAugmentationPriceMultiplier(); + } +} + +function updateInfiltratorCosts(infiltratorAugmentation: Augmentation): void { + const infiltratorMultiplier = + infiltratorsMiniGameAugmentations.filter((augmentation) => Player.hasAugmentation(augmentation.name)).length + 1; + infiltratorAugmentation.baseCost = Math.pow(infiltratorAugmentation.baseCost * 1000, infiltratorMultiplier); + if (infiltratorsMiniGameAugmentations.find((augmentation) => augmentation.name === infiltratorAugmentation.name)) { + infiltratorAugmentation.baseRepRequirement *= infiltratorMultiplier; + } +} + export function updateAugmentationCosts(): void { for (const name of Object.keys(Augmentations)) { if (Augmentations.hasOwnProperty(name)) { const augmentationToUpdate = Augmentations[name]; if (augmentationToUpdate.name === AugmentationNames.NeuroFluxGovernor) { - let nextLevel = getNextNeuroFluxLevel(); - --nextLevel; - const multiplier = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, nextLevel); - augmentationToUpdate.baseRepRequirement *= multiplier * BitNodeMultipliers.AugmentationRepCost; - augmentationToUpdate.baseCost *= multiplier * BitNodeMultipliers.AugmentationMoneyCost; - - for (let i = 0; i < Player.queuedAugmentations.length - 1; ++i) { - augmentationToUpdate.baseCost *= getBaseAugmentationPriceMultiplier(); - } + updateNeuroFluxGovernorCosts(augmentationToUpdate); } else if (augmentationToUpdate.factions.includes(FactionNames.Infiltrators)) { - const infiltratorMultiplier = - infiltratorsAugmentations.filter((augmentation) => Player.hasAugmentation(augmentation.name)).length + 1; - augmentationToUpdate.baseCost = Math.pow(augmentationToUpdate.baseCost * 1000, infiltratorMultiplier); - augmentationToUpdate.baseRepRequirement *= infiltratorMultiplier; + updateInfiltratorCosts(augmentationToUpdate); } else { augmentationToUpdate.baseCost *= getGenericAugmentationPriceMultiplier(); } diff --git a/src/Augmentation/data/AugmentationNames.ts b/src/Augmentation/data/AugmentationNames.ts index f494bee54..5b98a1a63 100644 --- a/src/Augmentation/data/AugmentationNames.ts +++ b/src/Augmentation/data/AugmentationNames.ts @@ -1,251 +1,133 @@ -export const AugmentationNames: { - Targeting1: string; - Targeting2: string; - Targeting3: string; - SyntheticHeart: string; - SynfibrilMuscle: string; - CombatRib1: string; - CombatRib2: string; - CombatRib3: string; - NanofiberWeave: string; - SubdermalArmor: string; - WiredReflexes: string; - GrapheneBoneLacings: string; - BionicSpine: string; - GrapheneBionicSpine: string; - BionicLegs: string; - GrapheneBionicLegs: string; - SpeechProcessor: string; - TITN41Injection: string; - EnhancedSocialInteractionImplant: string; - BitWire: string; - ArtificialBioNeuralNetwork: string; - ArtificialSynapticPotentiation: string; - EnhancedMyelinSheathing: string; - SynapticEnhancement: string; - NeuralRetentionEnhancement: string; - DataJack: string; - ENM: string; - ENMCore: string; - ENMCoreV2: string; - ENMCoreV3: string; - ENMAnalyzeEngine: string; - ENMDMA: string; - Neuralstimulator: string; - NeuralAccelerator: string; - CranialSignalProcessorsG1: string; - CranialSignalProcessorsG2: string; - CranialSignalProcessorsG3: string; - CranialSignalProcessorsG4: string; - CranialSignalProcessorsG5: string; - NeuronalDensification: string; - NeuroreceptorManager: string; - NuoptimalInjectorImplant: string; - SpeechEnhancement: string; - FocusWire: string; - PCDNI: string; - PCDNIOptimizer: string; - PCDNINeuralNetwork: string; - PCMatrix: string; - ADRPheromone1: string; - ADRPheromone2: string; - ShadowsSimulacrum: string; - HacknetNodeCPUUpload: string; - HacknetNodeCacheUpload: string; - HacknetNodeNICUpload: string; - HacknetNodeKernelDNI: string; - HacknetNodeCoreDNI: string; - NeuroFluxGovernor: string; - Neurotrainer1: string; - Neurotrainer2: string; - Neurotrainer3: string; - Hypersight: string; - LuminCloaking1: string; - LuminCloaking2: string; - HemoRecirculator: string; - SmartSonar: string; - PowerRecirculator: string; - QLink: string; - TheRedPill: string; - SPTN97: string; - HiveMind: string; - CordiARCReactor: string; - SmartJaw: string; - Neotra: string; - Xanipher: string; - nextSENS: string; - OmniTekInfoLoad: string; - PhotosyntheticCells: string; - Neurolink: string; - TheBlackHand: string; - UnstableCircadianModulator: string; - CRTX42AA: string; - Neuregen: string; - CashRoot: string; - NutriGen: string; - INFRARet: string; - DermaForce: string; - GrapheneBrachiBlades: string; - GrapheneBionicArms: string; - BrachiBlades: string; - BionicArms: string; - SNA: string; - HydroflameLeftArm: string; - EsperEyewear: string; - EMS4Recombination: string; - OrionShoulder: string; - HyperionV1: string; - HyperionV2: string; - GolemSerum: string; - VangelisVirus: string; - VangelisVirus3: string; - INTERLINKED: string; - BladeRunner: string; - BladeArmor: string; - BladeArmorPowerCells: string; - BladeArmorEnergyShielding: string; - BladeArmorUnibeam: string; - BladeArmorOmnibeam: string; - BladeArmorIPU: string; - BladesSimulacrum: string; - StaneksGift1: string; - StaneksGift2: string; - StaneksGift3: string; - BagOfSand: string; - IntellisenseModule: string; - ReverseDictionary: string; - AmuletOfPersuasion: string; - LameSharkRepository: string; - CyberDecoder: string; - MineDetector: string; - WireCuttingManual: string; -} = { - Targeting1: "Augmented Targeting I", - Targeting2: "Augmented Targeting II", - Targeting3: "Augmented Targeting III", - SyntheticHeart: "Synthetic Heart", - SynfibrilMuscle: "Synfibril Muscle", - CombatRib1: "Combat Rib I", - CombatRib2: "Combat Rib II", - CombatRib3: "Combat Rib III", - NanofiberWeave: "Nanofiber Weave", - SubdermalArmor: "NEMEAN Subdermal Weave", - WiredReflexes: "Wired Reflexes", - GrapheneBoneLacings: "Graphene Bone Lacings", - BionicSpine: "Bionic Spine", - GrapheneBionicSpine: "Graphene Bionic Spine Upgrade", - BionicLegs: "Bionic Legs", - GrapheneBionicLegs: "Graphene Bionic Legs Upgrade", - SpeechProcessor: "Speech Processor Implant", - TITN41Injection: "TITN-41 Gene-Modification Injection", - EnhancedSocialInteractionImplant: "Enhanced Social Interaction Implant", - BitWire: "BitWire", - ArtificialBioNeuralNetwork: "Artificial Bio-neural Network Implant", - ArtificialSynapticPotentiation: "Artificial Synaptic Potentiation", - EnhancedMyelinSheathing: "Enhanced Myelin Sheathing", - SynapticEnhancement: "Synaptic Enhancement Implant", - NeuralRetentionEnhancement: "Neural-Retention Enhancement", - DataJack: "DataJack", - ENM: "Embedded Netburner Module", - ENMCore: "Embedded Netburner Module Core Implant", - ENMCoreV2: "Embedded Netburner Module Core V2 Upgrade", - ENMCoreV3: "Embedded Netburner Module Core V3 Upgrade", - ENMAnalyzeEngine: "Embedded Netburner Module Analyze Engine", - ENMDMA: "Embedded Netburner Module Direct Memory Access Upgrade", - Neuralstimulator: "Neuralstimulator", - NeuralAccelerator: "Neural Accelerator", - CranialSignalProcessorsG1: "Cranial Signal Processors - Gen I", - CranialSignalProcessorsG2: "Cranial Signal Processors - Gen II", - CranialSignalProcessorsG3: "Cranial Signal Processors - Gen III", - 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", - PCDNI: "PC Direct-Neural Interface", - PCDNIOptimizer: "PC Direct-Neural Interface Optimization Submodule", - PCDNINeuralNetwork: "PC Direct-Neural Interface NeuroNet Injector", - PCMatrix: "PCMatrix", - ADRPheromone1: "ADR-V1 Pheromone Gene", - ADRPheromone2: "ADR-V2 Pheromone Gene", - ShadowsSimulacrum: "The Shadow's Simulacrum", - HacknetNodeCPUUpload: "Hacknet Node CPU Architecture Neural-Upload", - HacknetNodeCacheUpload: "Hacknet Node Cache Architecture Neural-Upload", - HacknetNodeNICUpload: "Hacknet Node NIC Architecture Neural-Upload", - HacknetNodeKernelDNI: "Hacknet Node Kernel Direct-Neural Interface", - HacknetNodeCoreDNI: "Hacknet Node Core Direct-Neural Interface", - NeuroFluxGovernor: "NeuroFlux Governor", - Neurotrainer1: "Neurotrainer I", - Neurotrainer2: "Neurotrainer II", - Neurotrainer3: "Neurotrainer III", - Hypersight: "HyperSight Corneal Implant", - LuminCloaking1: "LuminCloaking-V1 Skin Implant", - LuminCloaking2: "LuminCloaking-V2 Skin Implant", - HemoRecirculator: "HemoRecirculator", - SmartSonar: "SmartSonar Implant", - PowerRecirculator: "Power Recirculation Core", - QLink: "QLink", - TheRedPill: "The Red Pill", - SPTN97: "SPTN-97 Gene Modification", - HiveMind: "ECorp HVMind Implant", - CordiARCReactor: "CordiARC Fusion Reactor", - SmartJaw: "SmartJaw", - Neotra: "Neotra", - Xanipher: "Xanipher", - nextSENS: "nextSENS Gene Modification", - OmniTekInfoLoad: "OmniTek InfoLoad", - PhotosyntheticCells: "Photosynthetic Cells", - Neurolink: "BitRunners Neurolink", - TheBlackHand: "The Black Hand", - UnstableCircadianModulator: "Unstable Circadian Modulator", - CRTX42AA: "CRTX42-AA Gene Modification", - Neuregen: "Neuregen Gene Modification", - CashRoot: "CashRoot Starter Kit", - NutriGen: "NutriGen Implant", - INFRARet: "INFRARET Enhancement", - DermaForce: "DermaForce Particle Barrier", - GrapheneBrachiBlades: "Graphene BrachiBlades Upgrade", - GrapheneBionicArms: "Graphene Bionic Arms Upgrade", - BrachiBlades: "BrachiBlades", - BionicArms: "Bionic Arms", - SNA: "Social Negotiation Assistant (S.N.A)", - HydroflameLeftArm: "Hydroflame Left Arm", - EsperEyewear: "EsperTech Bladeburner Eyewear", - EMS4Recombination: "EMS-4 Recombination", - OrionShoulder: "ORION-MKIV Shoulder", - HyperionV1: "Hyperion Plasma Cannon V1", - HyperionV2: "Hyperion Plasma Cannon V2", - GolemSerum: "GOLEM Serum", - VangelisVirus: "Vangelis Virus", - VangelisVirus3: "Vangelis Virus 3.0", - INTERLINKED: "I.N.T.E.R.L.I.N.K.E.D", - BladeRunner: "Blade's Runners", - BladeArmor: "BLADE-51b Tesla Armor", - BladeArmorPowerCells: "BLADE-51b Tesla Armor: Power Cells Upgrade", - BladeArmorEnergyShielding: "BLADE-51b Tesla Armor: Energy Shielding Upgrade", - BladeArmorUnibeam: "BLADE-51b Tesla Armor: Unibeam Upgrade", - BladeArmorOmnibeam: "BLADE-51b Tesla Armor: Omnibeam Upgrade", - BladeArmorIPU: "BLADE-51b Tesla Armor: IPU Upgrade", - BladesSimulacrum: "The Blade's Simulacrum", +export enum AugmentationNames { + Targeting1 = "Augmented Targeting I", + Targeting2 = "Augmented Targeting II", + Targeting3 = "Augmented Targeting III", + SyntheticHeart = "Synthetic Heart", + SynfibrilMuscle = "Synfibril Muscle", + CombatRib1 = "Combat Rib I", + CombatRib2 = "Combat Rib II", + CombatRib3 = "Combat Rib III", + NanofiberWeave = "Nanofiber Weave", + SubdermalArmor = "NEMEAN Subdermal Weave", + WiredReflexes = "Wired Reflexes", + GrapheneBoneLacings = "Graphene Bone Lacings", + BionicSpine = "Bionic Spine", + GrapheneBionicSpine = "Graphene Bionic Spine Upgrade", + BionicLegs = "Bionic Legs", + GrapheneBionicLegs = "Graphene Bionic Legs Upgrade", + SpeechProcessor = "Speech Processor Implant", + TITN41Injection = "TITN-41 Gene-Modification Injection", + EnhancedSocialInteractionImplant = "Enhanced Social Interaction Implant", + BitWire = "BitWire", + ArtificialBioNeuralNetwork = "Artificial Bio-neural Network Implant", + ArtificialSynapticPotentiation = "Artificial Synaptic Potentiation", + EnhancedMyelinSheathing = "Enhanced Myelin Sheathing", + SynapticEnhancement = "Synaptic Enhancement Implant", + NeuralRetentionEnhancement = "Neural-Retention Enhancement", + DataJack = "DataJack", + ENM = "Embedded Netburner Module", + ENMCore = "Embedded Netburner Module Core Implant", + ENMCoreV2 = "Embedded Netburner Module Core V2 Upgrade", + ENMCoreV3 = "Embedded Netburner Module Core V3 Upgrade", + ENMAnalyzeEngine = "Embedded Netburner Module Analyze Engine", + ENMDMA = "Embedded Netburner Module Direct Memory Access Upgrade", + Neuralstimulator = "Neuralstimulator", + NeuralAccelerator = "Neural Accelerator", + CranialSignalProcessorsG1 = "Cranial Signal Processors - Gen I", + CranialSignalProcessorsG2 = "Cranial Signal Processors - Gen II", + CranialSignalProcessorsG3 = "Cranial Signal Processors - Gen III", + 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", + PCDNI = "PC Direct-Neural Interface", + PCDNIOptimizer = "PC Direct-Neural Interface Optimization Submodule", + PCDNINeuralNetwork = "PC Direct-Neural Interface NeuroNet Injector", + PCMatrix = "PCMatrix", + ADRPheromone1 = "ADR-V1 Pheromone Gene", + ADRPheromone2 = "ADR-V2 Pheromone Gene", + ShadowsSimulacrum = "The Shadow's Simulacrum", + HacknetNodeCPUUpload = "Hacknet Node CPU Architecture Neural-Upload", + HacknetNodeCacheUpload = "Hacknet Node Cache Architecture Neural-Upload", + HacknetNodeNICUpload = "Hacknet Node NIC Architecture Neural-Upload", + HacknetNodeKernelDNI = "Hacknet Node Kernel Direct-Neural Interface", + HacknetNodeCoreDNI = "Hacknet Node Core Direct-Neural Interface", + NeuroFluxGovernor = "NeuroFlux Governor", + Neurotrainer1 = "Neurotrainer I", + Neurotrainer2 = "Neurotrainer II", + Neurotrainer3 = "Neurotrainer III", + Hypersight = "HyperSight Corneal Implant", + LuminCloaking1 = "LuminCloaking-V1 Skin Implant", + LuminCloaking2 = "LuminCloaking-V2 Skin Implant", + HemoRecirculator = "HemoRecirculator", + SmartSonar = "SmartSonar Implant", + PowerRecirculator = "Power Recirculation Core", + QLink = "QLink", + TheRedPill = "The Red Pill", + SPTN97 = "SPTN-97 Gene Modification", + HiveMind = "ECorp HVMind Implant", + CordiARCReactor = "CordiARC Fusion Reactor", + SmartJaw = "SmartJaw", + Neotra = "Neotra", + Xanipher = "Xanipher", + nextSENS = "nextSENS Gene Modification", + OmniTekInfoLoad = "OmniTek InfoLoad", + PhotosyntheticCells = "Photosynthetic Cells", + Neurolink = "BitRunners Neurolink", + TheBlackHand = "The Black Hand", + UnstableCircadianModulator = "Unstable Circadian Modulator", + CRTX42AA = "CRTX42-AA Gene Modification", + Neuregen = "Neuregen Gene Modification", + CashRoot = "CashRoot Starter Kit", + NutriGen = "NutriGen Implant", + INFRARet = "INFRARET Enhancement", + DermaForce = "DermaForce Particle Barrier", + GrapheneBrachiBlades = "Graphene BrachiBlades Upgrade", + GrapheneBionicArms = "Graphene Bionic Arms Upgrade", + BrachiBlades = "BrachiBlades", + BionicArms = "Bionic Arms", + SNA = "Social Negotiation Assistant (S.N.A)", + HydroflameLeftArm = "Hydroflame Left Arm", + EsperEyewear = "EsperTech Bladeburner Eyewear", + EMS4Recombination = "EMS-4 Recombination", + OrionShoulder = "ORION-MKIV Shoulder", + HyperionV1 = "Hyperion Plasma Cannon V1", + HyperionV2 = "Hyperion Plasma Cannon V2", + GolemSerum = "GOLEM Serum", + VangelisVirus = "Vangelis Virus", + VangelisVirus3 = "Vangelis Virus 3.0", + INTERLINKED = "I.N.T.E.R.L.I.N.K.E.D", + BladeRunner = "Blade's Runners", + BladeArmor = "BLADE-51b Tesla Armor", + BladeArmorPowerCells = "BLADE-51b Tesla Armor: Power Cells Upgrade", + BladeArmorEnergyShielding = "BLADE-51b Tesla Armor: Energy Shielding Upgrade", + BladeArmorUnibeam = "BLADE-51b Tesla Armor: Unibeam Upgrade", + BladeArmorOmnibeam = "BLADE-51b Tesla Armor: Omnibeam Upgrade", + BladeArmorIPU = "BLADE-51b Tesla Armor: IPU Upgrade", + BladesSimulacrum = "The Blade's Simulacrum", - StaneksGift1: "Stanek's Gift - Genesis", - StaneksGift2: "Stanek's Gift - Awakening", - StaneksGift3: "Stanek's Gift - Serenity", + StaneksGift1 = "Stanek's Gift - Genesis", + StaneksGift2 = "Stanek's Gift - Awakening", + StaneksGift3 = "Stanek's Gift - Serenity", - BagOfSand: "A Bag of Sand", - IntellisenseModule: "Intellisense Module", - ReverseDictionary: "Reverse Dictionary", - AmuletOfPersuasion: "Amulet of Persuasian", - LameSharkRepository: "Lame Shark Repository", - CyberDecoder: "Cyber Decoder", - MineDetector: "Mine Detector", - WireCuttingManual: "Wire Cutting Manual", + BagOfSand = "A Bag of Sand", + IntellisenseModule = "Intellisense Module", + ReverseDictionary = "Reverse Dictionary", + AmuletOfPersuasion = "Amulet of Persuasian", + LameSharkRepository = "Lame Shark Repository", + CyberDecoder = "Cyber Decoder", + MineDetector = "Mine Detector", + WireCuttingManual = "Wire Cutting Manual", + + BionicFingers = "Bionic Fingers", + CorporationManagementImplant = "Corporation Management Implant", //Wasteland Augs //PepBoy: "P.E.P-Boy", Plasma Energy Projection System //PepBoyForceField Generates plasma force fields //PepBoyBlasts Generate high density plasma concussive blasts //PepBoyDataStorage STore more data on pep boy, -}; +} diff --git a/src/Infiltration/ui/Victory.tsx b/src/Infiltration/ui/Victory.tsx index 1c63fb74f..aa77ace16 100644 --- a/src/Infiltration/ui/Victory.tsx +++ b/src/Infiltration/ui/Victory.tsx @@ -10,6 +10,7 @@ import Button from "@mui/material/Button"; import MenuItem from "@mui/material/MenuItem"; import Select, { SelectChangeEvent } from "@mui/material/Select"; import { FactionNames } from "../../Faction/data/FactionNames"; +import { AugmentationNames } from "../../Augmentation/data/AugmentationNames"; interface IProps { StartingDifficulty: number; @@ -37,8 +38,14 @@ export function Victory(props: IProps): React.ReactElement { levelBonus * BitNodeMultipliers.InfiltrationRep; - // TODO: add two augmentations to infiltrators to increase this by 5 and * 2 - const infiltratorsRepGain = 5; + const bionicFingersRepGain = player.hasAugmentation(AugmentationNames.BionicFingers, true) ? 5 : 0; + const CorporationManagementImplantRepMultiplier = player.hasAugmentation( + AugmentationNames.CorporationManagementImplant, + true, + ) + ? 2.5 + : 1; + const infiltratorsRepGain = (5 + bionicFingersRepGain) * CorporationManagementImplantRepMultiplier; const infiltratorFaction = Factions[FactionNames.Infiltrators]; const isMemberOfInfiltrators = infiltratorFaction && infiltratorFaction.isMember; diff --git a/src/PersonObjects/Resleeving/Resleeving.ts b/src/PersonObjects/Resleeving/Resleeving.ts index 2d3f2daa6..b4fe06248 100644 --- a/src/PersonObjects/Resleeving/Resleeving.ts +++ b/src/PersonObjects/Resleeving/Resleeving.ts @@ -111,7 +111,7 @@ export function generateResleeves(): Resleeve[] { AugmentationNames.StaneksGift1, AugmentationNames.StaneksGift2, AugmentationNames.StaneksGift3, - ]; + ].map((faction) => faction as string); if (forbidden.includes(randKey)) { continue; }