From be515cc1951c688490f908a460c127b3c2ca158a Mon Sep 17 00:00:00 2001 From: catloversg <152669316+catloversg@users.noreply.github.com> Date: Sat, 24 Aug 2024 11:06:53 +0700 Subject: [PATCH] BUGFIX: Crash in b1tflum3 and destroyW0r1dD43m0n API (#1619) --- src/BitNode/BitNodeUtils.ts | 2 +- src/Netscript/NetscriptHelpers.tsx | 2 +- src/RedPill.tsx | 20 +++++++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/BitNode/BitNodeUtils.ts b/src/BitNode/BitNodeUtils.ts index b2705c477..4fe87a1ad 100644 --- a/src/BitNode/BitNodeUtils.ts +++ b/src/BitNode/BitNodeUtils.ts @@ -30,7 +30,7 @@ export function knowAboutBitverse(): boolean { export function getDefaultBitNodeOptions(): BitNodeOptions { return { - sourceFileOverrides: new Map(), + sourceFileOverrides: new JSONMap(), intelligenceOverride: undefined, restrictHomePCUpgrade: false, disableGang: false, diff --git a/src/Netscript/NetscriptHelpers.tsx b/src/Netscript/NetscriptHelpers.tsx index 631810f08..f663533e4 100644 --- a/src/Netscript/NetscriptHelpers.tsx +++ b/src/Netscript/NetscriptHelpers.tsx @@ -761,7 +761,7 @@ function validateBitNodeOptions(ctx: NetscriptContext, bitNodeOptions: unknown): result.sourceFileOverrides = new JSONMap(options.sourceFileOverrides); if (options.intelligenceOverride !== undefined) { - result.intelligenceOverride = number(ctx, "intelligenceOverride", options.intelligenceOverride); + result.intelligenceOverride = positiveInteger(ctx, "intelligenceOverride", options.intelligenceOverride); } else { result.intelligenceOverride = undefined; } diff --git a/src/RedPill.tsx b/src/RedPill.tsx index a44681d24..7f274d1b7 100644 --- a/src/RedPill.tsx +++ b/src/RedPill.tsx @@ -8,7 +8,7 @@ import { dialogBoxCreate } from "./ui/React/DialogBox"; import { Router } from "./ui/GameRoot"; import { Page } from "./ui/Router"; import { prestigeSourceFile } from "./Prestige"; -import { setBitNodeOptions } from "./BitNode/BitNodeUtils"; +import { getDefaultBitNodeOptions, setBitNodeOptions } from "./BitNode/BitNodeUtils"; function giveSourceFile(bitNodeNumber: number): void { const sourceFileKey = "SourceFile" + bitNodeNumber.toString(); @@ -69,12 +69,26 @@ export function enterBitNode( Player.bitNodeN = newBitNode; // Set BitNode options - setBitNodeOptions(bitNodeOptions); + try { + setBitNodeOptions(bitNodeOptions); + } catch (error) { + dialogBoxCreate( + <> + Invalid BitNode options. This is a bug. Please report it to developers. +
+
+ {error instanceof Error ? error.stack : String(error)} + , + ); + // Use default options + setBitNodeOptions(getDefaultBitNodeOptions()); + } + + prestigeSourceFile(isFlume); if (newBitNode === 6) { Router.toPage(Page.BladeburnerCinematic); } else { Router.toPage(Page.Terminal); } - prestigeSourceFile(isFlume); }