mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-17 23:08:36 +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;
|
const MULTI_MAZE_THRESHOLD = 5;
|
||||||
|
|
||||||
type labDetails = {
|
type LabDetails = {
|
||||||
name: string;
|
name: string;
|
||||||
depth: number;
|
depth: number;
|
||||||
cha: number;
|
cha: number;
|
||||||
@@ -33,7 +33,7 @@ type labDetails = {
|
|||||||
manual: boolean;
|
manual: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const labData: Record<string, labDetails> = {
|
export const labData: Record<string, LabDetails> = {
|
||||||
[SpecialServers.NormalLab]: {
|
[SpecialServers.NormalLab]: {
|
||||||
name: SpecialServers.NormalLab,
|
name: SpecialServers.NormalLab,
|
||||||
depth: 7,
|
depth: 7,
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ export type LogEntry = {
|
|||||||
message: string | PasswordResponse;
|
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 = {
|
export const DarknetState = {
|
||||||
allowMutating: true,
|
allowMutating: true,
|
||||||
openServer: null as BaseServer | null,
|
openServer: null as BaseServer | null,
|
||||||
@@ -57,6 +60,25 @@ export const DarknetState = {
|
|||||||
netViewLeftScroll: 0,
|
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.
|
* 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 { getDarkscapeNavigator } from "./DarkNet/effects/effects";
|
||||||
import { CodingContractEventEmitter } from "./CodingContract/CodingContractEventEmitter";
|
import { CodingContractEventEmitter } from "./CodingContract/CodingContractEventEmitter";
|
||||||
import { showLiterature } from "./Literature/LiteratureHelpers";
|
import { showLiterature } from "./Literature/LiteratureHelpers";
|
||||||
|
import { prestigeDarknetState } from "./DarkNet/models/DarknetState";
|
||||||
|
|
||||||
const BitNode8StartingMoney = 250e6;
|
const BitNode8StartingMoney = 250e6;
|
||||||
function delayedDialog(message: string, canBeDismissedEasily = true) {
|
function delayedDialog(message: string, canBeDismissedEasily = true) {
|
||||||
@@ -75,6 +76,8 @@ export function prestigeAugmentation(): void {
|
|||||||
// Delete all servers except home computer
|
// Delete all servers except home computer
|
||||||
prestigeAllServers();
|
prestigeAllServers();
|
||||||
|
|
||||||
|
prestigeDarknetState(false);
|
||||||
|
|
||||||
// Reset home computer (only the programs) and add to AllServers
|
// Reset home computer (only the programs) and add to AllServers
|
||||||
AddToAllServers(homeComp);
|
AddToAllServers(homeComp);
|
||||||
prestigeHomeComputer(homeComp);
|
prestigeHomeComputer(homeComp);
|
||||||
@@ -225,6 +228,8 @@ export function prestigeSourceFile(isFlume: boolean): void {
|
|||||||
// Delete all servers except home computer
|
// Delete all servers except home computer
|
||||||
prestigeAllServers(); // Must be done before initForeignServers()
|
prestigeAllServers(); // Must be done before initForeignServers()
|
||||||
|
|
||||||
|
prestigeDarknetState(true);
|
||||||
|
|
||||||
// Reset home computer (only the programs) and add to AllServers
|
// Reset home computer (only the programs) and add to AllServers
|
||||||
AddToAllServers(homeComp);
|
AddToAllServers(homeComp);
|
||||||
prestigeHomeComputer(homeComp);
|
prestigeHomeComputer(homeComp);
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ import "../Script/RunningScript"; // For reviver side-effect
|
|||||||
import { assertObject } from "../utils/TypeAssertion";
|
import { assertObject } from "../utils/TypeAssertion";
|
||||||
import { DarknetServer } from "./DarknetServer";
|
import { DarknetServer } from "./DarknetServer";
|
||||||
import { applyRamBlocks } from "../DarkNet/effects/ramblock";
|
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
|
* 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 {
|
export function prestigeAllServers(): void {
|
||||||
AllServers.clear();
|
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 {
|
export function loadAllServers(saveString: string): void {
|
||||||
@@ -166,9 +160,8 @@ export function loadAllServers(saveString: string): void {
|
|||||||
for (const [serverName, server] of Object.entries(allServersData)) {
|
for (const [serverName, server] of Object.entries(allServersData)) {
|
||||||
if (!(server instanceof Server) && !(server instanceof HacknetServer) && !(server instanceof DarknetServer)) {
|
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.`);
|
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
|
// Apply blocked ram for darknet servers
|
||||||
|
|||||||
@@ -1298,6 +1298,12 @@ describe("lab location methods", () => {
|
|||||||
});
|
});
|
||||||
test("dnet.labradar()", async () => {
|
test("dnet.labradar()", async () => {
|
||||||
const ns = getNsOnServerNearLabyrinth();
|
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;
|
const response = (await ns.dnet.labradar()) as Result;
|
||||||
assertNonNullish(response.message);
|
assertNonNullish(response.message);
|
||||||
const surroundingsString = response.message.split("\n");
|
const surroundingsString = response.message.split("\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user