From 314e37430d007b3d99b80413040c558d3e5b52a0 Mon Sep 17 00:00:00 2001 From: nickofolas Date: Thu, 7 Apr 2022 00:48:39 -0500 Subject: [PATCH] Add Augmentation unique to Grafting --- src/Augmentation/AugmentationCreator.tsx | 13 +++++++++++++ src/Augmentation/AugmentationHelpers.tsx | 5 +++++ src/Augmentation/data/AugmentationNames.ts | 1 + src/PersonObjects/Grafting/GraftableAugmentation.ts | 6 ++++++ .../Player/PlayerObjectGeneralMethods.tsx | 5 ++++- 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Augmentation/AugmentationCreator.tsx b/src/Augmentation/AugmentationCreator.tsx index f9693c1bf..767ded38e 100644 --- a/src/Augmentation/AugmentationCreator.tsx +++ b/src/Augmentation/AugmentationCreator.tsx @@ -1484,6 +1484,19 @@ export const initGeneralAugmentations = (): Augmentation[] => [ ), factions: [FactionNames.TianDiHui], }), + + // Grafting-exclusive Augmentation + new Augmentation({ + name: AugmentationNames.CongruityImplant, + repCost: 0, + moneyCost: 150e12, + info: + "Developed by a pioneer in Grafting research, this implant " + + "generates pulses of stability which seem to have a nullifying " + + "effect versus the Entropy virus.", + stats: <>This Augmentation removes the Entropy virus, and prevents it from affecting you again., + factions: [], + }), ]; export const initBladeburnerAugmentations = (): Augmentation[] => [ diff --git a/src/Augmentation/AugmentationHelpers.tsx b/src/Augmentation/AugmentationHelpers.tsx index 2250d65f3..ba98992ec 100644 --- a/src/Augmentation/AugmentationHelpers.tsx +++ b/src/Augmentation/AugmentationHelpers.tsx @@ -141,6 +141,11 @@ function applyAugmentation(aug: IPlayerOwnedAugmentation, reapply = false): void } } + // Special logic for Congruity Implant + if (aug.name === AugmentationNames.CongruityImplant) { + Player.entropy = 0; + } + // Push onto Player's Augmentation list if (!reapply) { const ownedAug = new PlayerOwnedAugmentation(aug.name); diff --git a/src/Augmentation/data/AugmentationNames.ts b/src/Augmentation/data/AugmentationNames.ts index f0fe6a46f..fc77c6d78 100644 --- a/src/Augmentation/data/AugmentationNames.ts +++ b/src/Augmentation/data/AugmentationNames.ts @@ -91,6 +91,7 @@ export enum AugmentationNames { BionicArms = "Bionic Arms", SNA = "Social Negotiation Assistant (S.N.A)", HydroflameLeftArm = "Hydroflame Left Arm", + CongruityImplant = "nickofolas Congruity Implant", EsperEyewear = "EsperTech Bladeburner Eyewear", EMS4Recombination = "EMS-4 Recombination", OrionShoulder = "ORION-MKIV Shoulder", diff --git a/src/PersonObjects/Grafting/GraftableAugmentation.ts b/src/PersonObjects/Grafting/GraftableAugmentation.ts index dbace889d..1f22f2c25 100644 --- a/src/PersonObjects/Grafting/GraftableAugmentation.ts +++ b/src/PersonObjects/Grafting/GraftableAugmentation.ts @@ -1,6 +1,7 @@ import { sum } from "lodash"; import { Augmentation } from "../../Augmentation/Augmentation"; +import { AugmentationNames } from "../../Augmentation/data/AugmentationNames"; import { CONSTANTS } from "../../Constants"; export interface IConstructorParams { @@ -18,6 +19,11 @@ export class GraftableAugmentation { } get cost(): number { + // Sell the Grafting-exclusive Aug at its starting price only + if (this.augmentation.name === AugmentationNames.CongruityImplant) { + return this.augmentation.startingCost; + } + return this.augmentation.startingCost * CONSTANTS.AugmentationGraftingCostMult; } diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx index 00f0acbd7..da209729d 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx @@ -1371,7 +1371,10 @@ export function finishGraftAugmentationWork(this: IPlayer, cancelled: boolean): ); applyAugmentation(Augmentations[augName]); - this.entropy += 1; + + if (!this.hasAugmentation(AugmentationNames.CongruityImplant)) { + this.entropy += 1; + } this.applyEntropy(this.entropy); } else { dialogBoxCreate(`You cancelled the crafting of ${augName}.
Your money was not returned to you.`);