From 764cdd1ab859663dd32d22e9e2e9935d8e022c7c Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Thu, 26 Jun 2025 14:32:26 -0700 Subject: [PATCH] feat: worldState.allTheFissures (#2313) Closes #2294 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2313 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- README.md | 1 + config.json.example | 1 + src/services/configService.ts | 1 + src/services/worldStateService.ts | 48 ++++++++++++++++++++++--------- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0bd7de22..5b2425ef 100644 --- a/README.md +++ b/README.md @@ -34,4 +34,5 @@ SpaceNinjaServer requires a `config.json`. To set it up, you can copy the [confi - `RadioLegion2Syndicate` for The Emissary - `RadioLegionIntermissionSyndicate` for Intermission I - `RadioLegionSyndicate` for The Wolf of Saturn Six +- `allTheFissures` can be set to `normal` or `hard` to enable all fissures either in normal or steel path, respectively. - `worldState.circuitGameModes` can be provided with an array of valid game modes (`Survival`, `VoidFlood`, `Excavation`, `Defense`, `Exterminate`, `Assassination`, `Alchemy`) diff --git a/config.json.example b/config.json.example index 11da5729..baf51baa 100644 --- a/config.json.example +++ b/config.json.example @@ -74,6 +74,7 @@ "vallisOverride": "", "duviriOverride": "", "nightwaveOverride": "", + "allTheFissures": "", "circuitGameModes": null }, "dev": { diff --git a/src/services/configService.ts b/src/services/configService.ts index fe74a584..4f2e93e7 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -81,6 +81,7 @@ export interface IConfig { vallisOverride?: string; duviriOverride?: string; nightwaveOverride?: string; + allTheFissures?: string; circuitGameModes?: string[]; }; dev?: { diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 0a2bfd4f..5aba5813 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1524,20 +1524,40 @@ export const getWorldState = (buildLabel?: string): IWorldState => { }; export const populateFissures = async (worldState: IWorldState): Promise => { - const fissures = await Fissure.find({}); - for (const fissure of fissures) { - const meta = ExportRegions[fissure.Node]; - worldState.ActiveMissions.push({ - _id: toOid(fissure._id), - Region: meta.systemIndex + 1, - Seed: 1337, - Activation: toMongoDate(fissure.Activation), - Expiry: toMongoDate(fissure.Expiry), - Node: fissure.Node, - MissionType: eMissionType[meta.missionIndex].tag, - Modifier: fissure.Modifier, - Hard: fissure.Hard - }); + if (config.worldState?.allTheFissures) { + let i = 0; + for (const [tier, nodes] of Object.entries(fissureMissions)) { + for (const node of nodes) { + const meta = ExportRegions[node]; + worldState.ActiveMissions.push({ + _id: { $oid: (i++).toString().padStart(8, "0") + "8e0c70ba050f1eb7" }, + Region: meta.systemIndex + 1, + Seed: 1337, + Activation: { $date: { $numberLong: "1000000000000" } }, + Expiry: { $date: { $numberLong: "2000000000000" } }, + Node: node, + MissionType: eMissionType[meta.missionIndex].tag, + Modifier: tier, + Hard: config.worldState.allTheFissures == "hard" + }); + } + } + } else { + const fissures = await Fissure.find({}); + for (const fissure of fissures) { + const meta = ExportRegions[fissure.Node]; + worldState.ActiveMissions.push({ + _id: toOid(fissure._id), + Region: meta.systemIndex + 1, + Seed: 1337, + Activation: toMongoDate(fissure.Activation), + Expiry: toMongoDate(fissure.Expiry), + Node: fissure.Node, + MissionType: eMissionType[meta.missionIndex].tag, + Modifier: fissure.Modifier, + Hard: fissure.Hard + }); + } } };