diff --git a/src/Augmentation/Augmentation.tsx b/src/Augmentation/Augmentation.tsx index a2ccfc8b1..c8ffe730e 100644 --- a/src/Augmentation/Augmentation.tsx +++ b/src/Augmentation/Augmentation.tsx @@ -394,6 +394,9 @@ export class Augmentation { // Initial cost. Doesn't change when you purchase multiple Augmentation startingCost = 0; + // Initial rep requirement. Doesn't change when you purchase multiple Augmentation + startingRepRequirement = 0 + // Factions that offer this aug. factions: string[] = []; @@ -413,6 +416,7 @@ export class Augmentation { this.baseRepRequirement = params.repCost * BitNodeMultipliers.AugmentationRepCost; this.baseCost = params.moneyCost * BitNodeMultipliers.AugmentationMoneyCost; this.startingCost = this.baseCost; + this.startingRepRequirement = this.baseRepRequirement; this.factions = params.factions; if (params.isSpecial) { diff --git a/src/Augmentation/AugmentationHelpers.tsx b/src/Augmentation/AugmentationHelpers.tsx index 2e6164f7f..c31e734ac 100644 --- a/src/Augmentation/AugmentationHelpers.tsx +++ b/src/Augmentation/AugmentationHelpers.tsx @@ -112,6 +112,126 @@ function getRandomBonus(): any { return bonuses[Math.floor(bonuses.length * randomNumber.random())]; } +export const infiltratorsAugmentations = [ + new Augmentation({ + name: AugmentationNames.BagOfSand, + repCost: 100, + moneyCost: 1e9, + info: + "You watched a bittube video about sword fighting, " + + "it suggested the best way to win a sword fight was to play dirty " + + "so you filled a bag full of sand from outside your house.", + stats: ( + <> + This augmentation makes the Slash minigame easier buy extending the time you can slash. + + ), + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.IntellisenseModule, + repCost: 100, + moneyCost: 1e9, + info: + "A brain implant with AI power that focuses in auto linting and intelisense, which " + + "provides the ability to perform code completion better than any exisiting " + + "IDE envronment on the market to date.", + stats: ( + <> + This augmentation makes the Bracket minigame easier buy letting you get a few incorrect guesses. + + ), + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.ReverseDictionary, + repCost: 100, + moneyCost: 1e9, + info: + "An ancient dictionary with a thick layer of dust it looks like a differnet language, " + + "as you examine it further you relise that its actually just a normal dictonary but the words are " + + "written backwards if only you could take the book home, you think it would become like a second language.", + stats: ( + <> + This augmentation makes the Backwards minigame easier by making the words no longer backwards. + + ), + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.AmuletOfPersuasian, + repCost: 100, + moneyCost: 1e9, + info: + "A fancy looking amulet that looks like something an Egyptian goddess would wear, " + + "you hear faint whispers that are trying to convince you to do things you wouldnt normaly do, " + + "apon touching it the voices stop how strange.", + stats: ( + <> + This augmentation makes the Bribe minigame easier by TODO. + + ), + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.LameSharkRepository, + repCost: 100, + moneyCost: 1e9, + info: + "You stumble accross an old opensource repository for a weird defunct version of LameShark, " + + "apon studing the source code it seems to just have a bunch of arrow key cheat codes. ", + stats: ( + <> + This augmentation makes the Cheat Code minigame easier by letting you see the full sequence before entering it. + + ), + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.CyberDecoder, + repCost: 100, + moneyCost: 1e9, + info: + "A cool looking do hickey that odly resembles Keanu Reeves face, " + + "it has a usb cable that looks like it plugs into something.", + stats: ( + <> + This augmentation makes the Symbol matching minigame easier by TODO. + + ), + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.MineDetector, + repCost: 100, + moneyCost: 1e9, + info: + "You stumble across an old mine detector at an army surplus store, " + + "on the side is inscribed 'X(' i wonder what happend to the orginal owner, " + + "its a bit beaten up but looks like it should still do the job.", + stats: ( + <> + This augmentation makes the Minesweeper minigame easier by showing the location of all mines. + + ), + factions: [FactionNames.Infiltrators], + }), + new Augmentation({ + name: AugmentationNames.WireCuttingManual, + repCost: 100, + moneyCost: 1e9, + info: + "You found an old wire cutting for dummys book in the local library, " + + "how hard can it be to cut wires, right?", + stats: ( + <> + This augmentation makes the Wire Cutting minigame easier by highlighting the correct wires to cut. + + ), + factions: [FactionNames.Infiltrators], + }), +] + function initAugmentations(): void { for (const name of Object.keys(Factions)) { if (Factions.hasOwnProperty(name)) { @@ -1600,123 +1720,7 @@ function initAugmentations(): void { ), factions: [FactionNames.TianDiHui], }), - new Augmentation({ - name: AugmentationNames.BagOfSand, - repCost: 100, - moneyCost: 1e9, - info: - "You watched a youtube video about sword fighting, " + - "it suggested the best way to win a sword fight was to play dirty " + - "so you filled a bag full of sand from outside your house.", - stats: ( - <> - This augmentation autocompletes the Slash minigame. - - ), - factions: [FactionNames.Infiltrators], - }), - new Augmentation({ - name: AugmentationNames.IntellisenseModule, - repCost: 100, - moneyCost: 1e9, - info: - "A brain implant with AI power that focuses in auto linting and intelisense, which " + - "provides the ability to perform code completion better than any exisiting " + - "IDE envronment on the market to date.", - stats: ( - <> - This augmentation autocompletes the Bracket minigame. - - ), - factions: [FactionNames.Infiltrators], - }), - new Augmentation({ - name: AugmentationNames.ReverseDictionary, - repCost: 100, - moneyCost: 1e9, - info: - "An ancient dictionary with a thick layer of dust it looks like a differnet language, " + - "as you examine it further you relise that its actually just a normal dictonary but the words are " + - "written backwards if only you could take the book home, you think it would become like a second language.", - stats: ( - <> - This augmentation autocompletes the Backward minigame. - - ), - factions: [FactionNames.Infiltrators], - }), - new Augmentation({ - name: AugmentationNames.AmuletOfPersuasian, - repCost: 100, - moneyCost: 1e9, - info: - "A fancy looking amulet that looks like something an Egyptian goddess would wear, " + - "you hear faint whispers that are trying to convince you to do things you wouldnt normaly do, " + - "apon touching it the voices stop how strange.", - stats: ( - <> - This augmentation autocompletes the Bribe minigame. - - ), - factions: [FactionNames.Infiltrators], - }), - new Augmentation({ - name: AugmentationNames.GameSharkRepository, - repCost: 100, - moneyCost: 1e9, - info: - "You stumble accross an old opensource repository for a weird defunct version of gameshark, " + - "apon studing the source code it seems to just have a bunch of arrow key cheat codes. ", - stats: ( - <> - This augmentation autocompletes the Cheat Code minigame. - - ), - factions: [FactionNames.Infiltrators], - }), - new Augmentation({ - name: AugmentationNames.CyberDecoder, - repCost: 100, - moneyCost: 1e9, - info: - "A cool looking do hickey that odly resembles Keanu Reeves face, " + - "it has a usb cable that looks like it plugs into something.", - stats: ( - <> - This augmentation autocompletes the Cyberpunk2077 minigame. - - ), - factions: [FactionNames.Infiltrators], - }), - new Augmentation({ - name: AugmentationNames.MineDetector, - repCost: 100, - moneyCost: 1e9, - info: - "You stumble across an old mine detector at an army surplus store, " + - "on the side is inscribed 'X(' i wonder what happend to the orginal owner, " + - "its a bit beaten up but looks like it should still do the job.", - stats: ( - <> - This augmentation autocompletes the Minesweeper minigame. - - ), - factions: [FactionNames.Infiltrators], - }), - new Augmentation({ - name: AugmentationNames.WireCuttingManual, - repCost: 100, - moneyCost: 1e9, - info: - "You found an old wire cutting for dummys book in the local library, " + - "how hard can it be to cut wires, right?", - stats: ( - <> - This augmentation autocompletes the Wire Cutting minigame. - - ), - factions: [FactionNames.Infiltrators], - }), + ...infiltratorsAugmentations ]; // Special Bladeburner Augmentations @@ -2120,9 +2124,17 @@ function initAugmentations(): void { CONSTANTS.MultipleAugMultiplier * [1, 0.96, 0.94, 0.93][SourceFileFlags[11]], Player.queuedAugmentations.length, ); + + const purchasedOrQueuedInfiltratorAugmentationCount = infiltratorsAugmentations.filter(augmentation => Player.hasAugmentation(augmentation.name)).length for (const name of Object.keys(Augmentations)) { if (Augmentations.hasOwnProperty(name)) { - Augmentations[name].baseCost *= mult; + const augmentationToUpdate = Augmentations[name] + if (augmentationToUpdate.factions.includes(FactionNames.Infiltrators)) { + augmentationToUpdate.baseCost = Math.pow(augmentationToUpdate.baseCost, purchasedOrQueuedInfiltratorAugmentationCount); + augmentationToUpdate.baseRepRequirement *= purchasedOrQueuedInfiltratorAugmentationCount; + } else { + augmentationToUpdate.baseCost *= mult; + } } } diff --git a/src/Augmentation/data/AugmentationNames.ts b/src/Augmentation/data/AugmentationNames.ts index 6e54fd40a..0ad2be9e5 100644 --- a/src/Augmentation/data/AugmentationNames.ts +++ b/src/Augmentation/data/AugmentationNames.ts @@ -115,7 +115,7 @@ export const AugmentationNames: { IntellisenseModule: string; ReverseDictionary: string; AmuletOfPersuasian: string; - GameSharkRepository: string; + LameSharkRepository: string; CyberDecoder: string; MineDetector: string; WireCuttingManual: string; @@ -238,7 +238,7 @@ export const AugmentationNames: { IntellisenseModule: "Intellisense Module", ReverseDictionary: "Reverse Dictionary", AmuletOfPersuasian: "Amulet of Persuasian", - GameSharkRepository: "Game Shark Repository", + LameSharkRepository: "Lame Shark Repository", CyberDecoder: "CyberDecoder", MineDetector: "MineDetector", WireCuttingManual: "WireCuttingManual",