diff --git a/src/utils/IPAddress.ts b/src/utils/IPAddress.ts index 0c1ba1c2c..740e2452b 100644 --- a/src/utils/IPAddress.ts +++ b/src/utils/IPAddress.ts @@ -1,10 +1,21 @@ import type { IPAddress } from "../Types/strings"; -import { getRandomByte } from "./helpers/getRandomByte"; /** * Generate a random IP address * Does not check to see if the IP already exists in the game */ export const createRandomIp = (): IPAddress => { - return `${getRandomByte(99)}.${getRandomByte(9)}.${getRandomByte(9)}.${getRandomByte(9)}` as IPAddress; + // Credit goes to yichizhng on BitBurner discord + // Generates a number like 0.c8f0a07f1d47e8 + const ip = Math.random().toString(16); + // uses regex to match every 2 characters. [0.][c8][f0][a0][7f][1d][47][e8] + // we only want #1 through #4 + const matchResult = ip.match(/../g); + if (!matchResult) { + // This case should never happen. + throw new Error(`Unexpected regex matching bug in createRandomIp. ip: ${ip}`); + } + const sliced = matchResult.slice(1, 5); + //convert each to a decimal number and join them together to make a human readable IP address. + return sliced.map((x) => parseInt(x, 16)).join(".") as IPAddress; }; diff --git a/test/jest/__snapshots__/FullSave.test.ts.snap b/test/jest/__snapshots__/FullSave.test.ts.snap index 823ef3ef5..2215537ef 100644 --- a/test/jest/__snapshots__/FullSave.test.ts.snap +++ b/test/jest/__snapshots__/FullSave.test.ts.snap @@ -88,60 +88,60 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "City", "data": { "chaos": 0, - "comms": 42, + "comms": 30, "name": "Aevum", - "pop": 1101351351, - "popEst": 803688823.7027026, + "pop": 1060810810, + "popEst": 688093498.3783784, }, }, "Chongqing": { "ctor": "City", "data": { "chaos": 0, - "comms": 54, + "comms": 42, "name": "Chongqing", - "pop": 1141891892, - "popEst": 925858290.8108107, + "pop": 1101351351, + "popEst": 803688823.7027026, }, }, "Ishima": { "ctor": "City", "data": { "chaos": 0, - "comms": 89, + "comms": 78, "name": "Ishima", - "pop": 1263513514, - "popEst": 1331811541.7837837, + "pop": 1222972973, + "popEst": 1189919649.4054055, }, }, "New Tokyo": { "ctor": "City", "data": { "chaos": 0, - "comms": 78, + "comms": 66, "name": "New Tokyo", - "pop": 1222972973, - "popEst": 1189919649.4054055, + "pop": 1182432432, + "popEst": 1054601898.8108108, }, }, "Sector-12": { "ctor": "City", "data": { "chaos": 0, - "comms": 66, + "comms": 54, "name": "Sector-12", - "pop": 1182432432, - "popEst": 1054601898.8108108, + "pop": 1141891892, + "popEst": 925858290.8108107, }, }, "Volhaven": { "ctor": "City", "data": { "chaos": 0, - "comms": 101, + "comms": 89, "name": "Volhaven", - "pop": 1304054054, - "popEst": 1480277574.8108108, + "pop": 1263513514, + "popEst": 1331811541.7837837, }, }, }, @@ -156,7 +156,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Contract", "data": { "autoLevel": true, - "count": 117, + "count": 105, "failures": 0, "level": 1, "maxLevel": 1, @@ -167,7 +167,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Contract", "data": { "autoLevel": true, - "count": 125, + "count": 113, "failures": 0, "level": 1, "maxLevel": 1, @@ -178,7 +178,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Contract", "data": { "autoLevel": true, - "count": 115, + "count": 105, "failures": 0, "level": 1, "maxLevel": 1, @@ -203,7 +203,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Operation", "data": { "autoLevel": true, - "count": 23, + "count": 11, "failures": 0, "level": 1, "maxLevel": 1, @@ -215,7 +215,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Operation", "data": { "autoLevel": true, - "count": 88, + "count": 80, "failures": 0, "level": 1, "maxLevel": 1, @@ -227,7 +227,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Operation", "data": { "autoLevel": true, - "count": 7, + "count": 144, "failures": 0, "level": 1, "maxLevel": 1, @@ -239,7 +239,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Operation", "data": { "autoLevel": true, - "count": 15, + "count": 3, "failures": 0, "level": 1, "maxLevel": 1, @@ -251,7 +251,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Operation", "data": { "autoLevel": true, - "count": 148, + "count": 136, "failures": 0, "level": 1, "maxLevel": 1, @@ -263,7 +263,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "ctor": "Operation", "data": { "autoLevel": true, - "count": 94, + "count": 86, "failures": 0, "level": 1, "maxLevel": 1, @@ -272,7 +272,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` }, }, }, - "randomEventCounter": 303, + "randomEventCounter": 274, "rank": 2000, "skillPoints": 666, "skills": {},