feat: worldState.allTheFissures (#2313)
All checks were successful
Build / build (push) Successful in 51s
Build Docker image / docker-arm64 (push) Successful in 1m3s
Build Docker image / docker-amd64 (push) Successful in 1m16s

Closes #2294

Reviewed-on: #2313
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
Sainan 2025-06-26 14:32:26 -07:00 committed by Sainan
parent 0ba641a2ac
commit 764cdd1ab8
4 changed files with 37 additions and 14 deletions

View File

@ -34,4 +34,5 @@ SpaceNinjaServer requires a `config.json`. To set it up, you can copy the [confi
- `RadioLegion2Syndicate` for The Emissary - `RadioLegion2Syndicate` for The Emissary
- `RadioLegionIntermissionSyndicate` for Intermission I - `RadioLegionIntermissionSyndicate` for Intermission I
- `RadioLegionSyndicate` for The Wolf of Saturn Six - `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`) - `worldState.circuitGameModes` can be provided with an array of valid game modes (`Survival`, `VoidFlood`, `Excavation`, `Defense`, `Exterminate`, `Assassination`, `Alchemy`)

View File

@ -74,6 +74,7 @@
"vallisOverride": "", "vallisOverride": "",
"duviriOverride": "", "duviriOverride": "",
"nightwaveOverride": "", "nightwaveOverride": "",
"allTheFissures": "",
"circuitGameModes": null "circuitGameModes": null
}, },
"dev": { "dev": {

View File

@ -81,6 +81,7 @@ export interface IConfig {
vallisOverride?: string; vallisOverride?: string;
duviriOverride?: string; duviriOverride?: string;
nightwaveOverride?: string; nightwaveOverride?: string;
allTheFissures?: string;
circuitGameModes?: string[]; circuitGameModes?: string[];
}; };
dev?: { dev?: {

View File

@ -1524,6 +1524,25 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
}; };
export const populateFissures = async (worldState: IWorldState): Promise<void> => { export const populateFissures = async (worldState: IWorldState): Promise<void> => {
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({}); const fissures = await Fissure.find({});
for (const fissure of fissures) { for (const fissure of fissures) {
const meta = ExportRegions[fissure.Node]; const meta = ExportRegions[fissure.Node];
@ -1539,6 +1558,7 @@ export const populateFissures = async (worldState: IWorldState): Promise<void> =
Hard: fissure.Hard Hard: fissure.Hard
}); });
} }
}
}; };
export const idToBountyCycle = (id: string): number => { export const idToBountyCycle = (id: string): number => {