From b829534067af81fd59b271a29c7ae0e215553e7b Mon Sep 17 00:00:00 2001 From: catloversg <152669316+catloversg@users.noreply.github.com> Date: Tue, 8 Oct 2024 13:20:58 +0700 Subject: [PATCH] BUGFIX: Scripts are killed too late when prestiging (#1683) * Scripts are killed too late when prestiging * Kill all scripts earlier --- src/Augmentation/AugmentationHelpers.ts | 7 ++++++- src/Prestige.ts | 11 ++++++----- src/RedPill.tsx | 4 ++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/Augmentation/AugmentationHelpers.ts b/src/Augmentation/AugmentationHelpers.ts index 25e5869cf..d8c3159ff 100644 --- a/src/Augmentation/AugmentationHelpers.ts +++ b/src/Augmentation/AugmentationHelpers.ts @@ -12,6 +12,7 @@ import { Router } from "../ui/GameRoot"; import { Page } from "../ui/Router"; import { mergeMultipliers } from "../PersonObjects/Multipliers"; import { currentNodeMults } from "../BitNode/BitNodeMultipliers"; +import { prestigeWorkerScripts } from "../NetscriptWorker"; const soaAugmentationNames = [ AugmentationName.BeautyOfAphrodite, @@ -67,6 +68,10 @@ export function installAugmentations(force?: boolean): boolean { dialogBoxCreate("You have not purchased any Augmentations to install!"); return false; } + + // We must kill all scripts before installing augmentations. + prestigeWorkerScripts(); + let augmentationList = ""; let nfgIndex = -1; for (let i = Player.queuedAugmentations.length - 1; i >= 0; i--) { @@ -93,7 +98,7 @@ export function installAugmentations(force?: boolean): boolean { augmentationList += aug.name + level + "\n"; } Player.queuedAugmentations = []; - if (!force) { + if (!force && augmentationList !== "") { dialogBoxCreate( "You slowly drift to sleep as scientists put you under in order " + "to install the following Augmentations:\n" + diff --git a/src/Prestige.ts b/src/Prestige.ts index 5fa7c7ef3..4efa6a3b5 100644 --- a/src/Prestige.ts +++ b/src/Prestige.ts @@ -48,6 +48,9 @@ function setInitialExpForPlayer() { // Prestige by purchasing augmentation export function prestigeAugmentation(): void { + // We must kill all scripts before doing anything else. + prestigeWorkerScripts(); + initBitNodeMultipliers(); // Maintain invites to factions with the 'keepOnInstall' flag, and rumors about others @@ -64,9 +67,6 @@ export function prestigeAugmentation(): void { Player.prestigeAugmentation(); Go.prestigeAugmentation(); - // Delete all Worker Scripts objects - prestigeWorkerScripts(); - const homeComp = Player.getHomeComputer(); // Delete all servers except home computer prestigeAllServers(); @@ -188,13 +188,14 @@ export function prestigeAugmentation(): void { // Prestige by destroying Bit Node and gaining a Source File export function prestigeSourceFile(isFlume: boolean): void { + // We must kill all scripts before doing anything else. + prestigeWorkerScripts(); + initBitNodeMultipliers(); Player.prestigeSourceFile(); Go.prestigeSourceFile(); - prestigeWorkerScripts(); // Delete all Worker Scripts objects - const homeComp = Player.getHomeComputer(); // Stop a Terminal action if there is one. diff --git a/src/RedPill.tsx b/src/RedPill.tsx index 7f274d1b7..2b566b4d9 100644 --- a/src/RedPill.tsx +++ b/src/RedPill.tsx @@ -9,6 +9,7 @@ import { Router } from "./ui/GameRoot"; import { Page } from "./ui/Router"; import { prestigeSourceFile } from "./Prestige"; import { getDefaultBitNodeOptions, setBitNodeOptions } from "./BitNode/BitNodeUtils"; +import { prestigeWorkerScripts } from "./NetscriptWorker"; function giveSourceFile(bitNodeNumber: number): void { const sourceFileKey = "SourceFile" + bitNodeNumber.toString(); @@ -56,6 +57,9 @@ export function enterBitNode( newBitNode: number, bitNodeOptions: BitNodeOptions, ): void { + // We must kill all scripts before setting up BitNode data and performing the prestige. + prestigeWorkerScripts(); + if (!isFlume) { giveSourceFile(destroyedBitNode); } else if (Player.sourceFileLvl(5) === 0 && newBitNode !== 5) {