mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-16 06:18:42 +02:00
BUGFIX: Darknet state is not reset properly on prestige (#2486)
This commit is contained in:
@@ -24,7 +24,7 @@ const PATH = " ";
|
||||
|
||||
const MULTI_MAZE_THRESHOLD = 5;
|
||||
|
||||
type labDetails = {
|
||||
type LabDetails = {
|
||||
name: string;
|
||||
depth: number;
|
||||
cha: number;
|
||||
@@ -33,7 +33,7 @@ type labDetails = {
|
||||
manual: boolean;
|
||||
};
|
||||
|
||||
export const labData: Record<string, labDetails> = {
|
||||
export const labData: Record<string, LabDetails> = {
|
||||
[SpecialServers.NormalLab]: {
|
||||
name: SpecialServers.NormalLab,
|
||||
depth: 7,
|
||||
|
||||
@@ -22,6 +22,9 @@ export type LogEntry = {
|
||||
message: string | PasswordResponse;
|
||||
};
|
||||
|
||||
/**
|
||||
* If you add a new property to this global state, you must check if you need to reset it in prestigeDarknetState.
|
||||
*/
|
||||
export const DarknetState = {
|
||||
allowMutating: true,
|
||||
openServer: null as BaseServer | null,
|
||||
@@ -57,6 +60,25 @@ export const DarknetState = {
|
||||
netViewLeftScroll: 0,
|
||||
};
|
||||
|
||||
export function prestigeDarknetState(prestigeSourceFile: boolean): void {
|
||||
DarknetState.allowMutating = true;
|
||||
DarknetState.openServer = null;
|
||||
DarknetState.storedCycles = 0;
|
||||
if (prestigeSourceFile) {
|
||||
DarknetState.hasUsedHeartbleed = false;
|
||||
}
|
||||
DarknetState.cyclesSinceLastMutation = 0;
|
||||
DarknetState.Network = new Array(MAX_NET_DEPTH).fill(null).map(() => new Array<null>(NET_WIDTH).fill(null));
|
||||
DarknetState.labyrinth = null;
|
||||
DarknetState.labLocations = { "-1": [1, 1] };
|
||||
DarknetState.lastPhishingCacheTime = new Date();
|
||||
DarknetState.lastStormTime = new Date();
|
||||
DarknetState.stockPromotions = {};
|
||||
DarknetState.migrationInductionServers.clear();
|
||||
DarknetState.serverState.clear();
|
||||
DarknetState.offlineServers = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the server state. It will initialize the state if it does not exist in DarknetState.serverState.
|
||||
*/
|
||||
|
||||
@@ -33,6 +33,7 @@ import { pendingUIShareJobIds } from "./NetworkShare/Share";
|
||||
import { getDarkscapeNavigator } from "./DarkNet/effects/effects";
|
||||
import { CodingContractEventEmitter } from "./CodingContract/CodingContractEventEmitter";
|
||||
import { showLiterature } from "./Literature/LiteratureHelpers";
|
||||
import { prestigeDarknetState } from "./DarkNet/models/DarknetState";
|
||||
|
||||
const BitNode8StartingMoney = 250e6;
|
||||
function delayedDialog(message: string, canBeDismissedEasily = true) {
|
||||
@@ -75,6 +76,8 @@ export function prestigeAugmentation(): void {
|
||||
// Delete all servers except home computer
|
||||
prestigeAllServers();
|
||||
|
||||
prestigeDarknetState(false);
|
||||
|
||||
// Reset home computer (only the programs) and add to AllServers
|
||||
AddToAllServers(homeComp);
|
||||
prestigeHomeComputer(homeComp);
|
||||
@@ -225,6 +228,8 @@ export function prestigeSourceFile(isFlume: boolean): void {
|
||||
// Delete all servers except home computer
|
||||
prestigeAllServers(); // Must be done before initForeignServers()
|
||||
|
||||
prestigeDarknetState(true);
|
||||
|
||||
// Reset home computer (only the programs) and add to AllServers
|
||||
AddToAllServers(homeComp);
|
||||
prestigeHomeComputer(homeComp);
|
||||
|
||||
@@ -11,8 +11,6 @@ import "../Script/RunningScript"; // For reviver side-effect
|
||||
import { assertObject } from "../utils/TypeAssertion";
|
||||
import { DarknetServer } from "./DarknetServer";
|
||||
import { applyRamBlocks } from "../DarkNet/effects/ramblock";
|
||||
import { DarknetState } from "../DarkNet/models/DarknetState";
|
||||
import { MAX_NET_DEPTH, NET_WIDTH } from "../DarkNet/Enums";
|
||||
|
||||
/**
|
||||
* Map of all Servers that exist in the game
|
||||
@@ -150,10 +148,6 @@ export const renameServer = (hostname: string, newName: string): void => {
|
||||
|
||||
export function prestigeAllServers(): void {
|
||||
AllServers.clear();
|
||||
// WIP: Check other properties in DarknetState as well, then improve validateDarknetNetwork.
|
||||
DarknetState.Network = new Array(MAX_NET_DEPTH)
|
||||
.fill(null)
|
||||
.map(() => new Array<DarknetServer | null>(NET_WIDTH).fill(null));
|
||||
}
|
||||
|
||||
export function loadAllServers(saveString: string): void {
|
||||
@@ -166,9 +160,8 @@ export function loadAllServers(saveString: string): void {
|
||||
for (const [serverName, server] of Object.entries(allServersData)) {
|
||||
if (!(server instanceof Server) && !(server instanceof HacknetServer) && !(server instanceof DarknetServer)) {
|
||||
throw new Error(`Server ${serverName} is not an instance of Server or HacknetServer or DarknetServer.`);
|
||||
} else {
|
||||
AllServers.set(serverName, server);
|
||||
}
|
||||
AllServers.set(serverName, server);
|
||||
}
|
||||
|
||||
// Apply blocked ram for darknet servers
|
||||
|
||||
@@ -1298,6 +1298,12 @@ describe("lab location methods", () => {
|
||||
});
|
||||
test("dnet.labradar()", async () => {
|
||||
const ns = getNsOnServerNearLabyrinth();
|
||||
|
||||
// Make sure we are at the starting point.
|
||||
const locationStatus = (await ns.dnet.labreport()) as LocationStatus;
|
||||
expect(isLocationStatus(locationStatus)).toBe(true);
|
||||
expect(locationStatus.coords).toStrictEqual([1, 1]);
|
||||
|
||||
const response = (await ns.dnet.labradar()) as Result;
|
||||
assertNonNullish(response.message);
|
||||
const surroundingsString = response.message.split("\n");
|
||||
|
||||
Reference in New Issue
Block a user