From 0d18ac80fef634039cc308bac01971a7a948d803 Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Wed, 13 May 2026 10:29:39 -0700 Subject: [PATCH] BUGFIX: getAugmentationBasePrice ignores bitnode mult for SoA augs (#2756) --- markdown/bitburner.singularity.getaugmentationbaseprice.md | 4 +++- src/Augmentation/AugmentationHelpers.ts | 2 +- src/NetscriptFunctions/Singularity.ts | 7 ++++++- src/ScriptEditor/NetscriptDefinitions.d.ts | 3 ++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/markdown/bitburner.singularity.getaugmentationbaseprice.md b/markdown/bitburner.singularity.getaugmentationbaseprice.md index 4888bd3bb..6f2a94cfa 100644 --- a/markdown/bitburner.singularity.getaugmentationbaseprice.md +++ b/markdown/bitburner.singularity.getaugmentationbaseprice.md @@ -52,9 +52,11 @@ Name of Augmentation. number -Base price of the augmentation, before price multiplier. +Base price of the augmentation, before the player's price multiplier. ## Remarks RAM cost: 2.5 GB \* 16/4/1 +This excludes the player's price multiplier, but does include the relevant BitNode multiplier (for all augs that aren't part of Shadows of Anarchy, which doesn't use BitNode multipliers). + diff --git a/src/Augmentation/AugmentationHelpers.ts b/src/Augmentation/AugmentationHelpers.ts index eb867088e..affede475 100644 --- a/src/Augmentation/AugmentationHelpers.ts +++ b/src/Augmentation/AugmentationHelpers.ts @@ -14,7 +14,7 @@ import { mergeMultipliers } from "../PersonObjects/Multipliers"; import { currentNodeMults } from "../BitNode/BitNodeMultipliers"; import { prestigeWorkerScripts } from "../NetscriptWorker"; -const soaAugmentationNames = [ +export const soaAugmentationNames = [ AugmentationName.BeautyOfAphrodite, AugmentationName.ChaosOfDionysus, AugmentationName.FloodOfPoseidon, diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index 4fe090f5b..3967cb8f2 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -5,7 +5,7 @@ import { CityName, CompletedProgramName, FactionWorkType, LocationName } from "@ import { purchaseAugmentation, joinFaction, getFactionAugmentationsFiltered } from "../Faction/FactionHelpers"; import { startWorkerScript } from "../NetscriptWorker"; import { Augmentations } from "../Augmentation/Augmentations"; -import { getAugCost, installAugmentations } from "../Augmentation/AugmentationHelpers"; +import { getAugCost, installAugmentations, soaAugmentationNames } from "../Augmentation/AugmentationHelpers"; import { CONSTANTS } from "../Constants"; import { RunningScript } from "../Script/RunningScript"; import { calculateAchievements } from "../Achievements/Achievements"; @@ -141,6 +141,11 @@ export function NetscriptSingularity(): InternalAPI { helpers.checkSingularityAccess(ctx); const augName = getEnumHelper("AugmentationName").nsGetMember(ctx, _augName); const aug = Augmentations[augName]; + // SoA augmentations don't use the bitnode AugmentationMoneyCost multiplier; + // their cost only scales with the number of SoA augs already owned. + if (soaAugmentationNames.includes(augName)) { + return aug.baseCost; + } return aug.baseCost * currentNodeMults.AugmentationMoneyCost; }, getAugmentationPrice: (ctx) => (_augName) => { diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index 0b9c064a7..7311a5ac1 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -2655,9 +2655,10 @@ export interface Singularity { * @remarks * RAM cost: 2.5 GB * 16/4/1 * + * This excludes the player's price multiplier, but does include the relevant BitNode multiplier (for all augs that aren't part of Shadows of Anarchy, which doesn't use BitNode multipliers). * * @param augName - Name of Augmentation. - * @returns Base price of the augmentation, before price multiplier. + * @returns Base price of the augmentation, before the player's price multiplier. */ getAugmentationBasePrice(augName: string): number;