From 468efed71cac1d4a6727999c94851bd8803006d8 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Fri, 2 May 2025 15:07:00 -0700 Subject: [PATCH] fix: handle tileset-specific sortie modifiers (#1958) Closes #1956 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1958 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/services/worldStateService.ts | 33 ++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 77650d0f..0ef63d74 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -298,26 +298,42 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => { "SORTIE_MODIFIER_TOXIN", "SORTIE_MODIFIER_POISON", "SORTIE_MODIFIER_HAZARD_RADIATION", - "SORTIE_MODIFIER_HAZARD_MAGNETIC", - "SORTIE_MODIFIER_HAZARD_FOG", // TODO: push this if the mission tileset is Grineer Forest - "SORTIE_MODIFIER_HAZARD_FIRE", // TODO: push this if the mission tileset is Corpus Ship or Grineer Galleon - "SORTIE_MODIFIER_HAZARD_ICE", - "SORTIE_MODIFIER_HAZARD_COLD", "SORTIE_MODIFIER_SECONDARY_ONLY", "SORTIE_MODIFIER_SHOTGUN_ONLY", "SORTIE_MODIFIER_SNIPER_ONLY", "SORTIE_MODIFIER_RIFLE_ONLY", "SORTIE_MODIFIER_BOW_ONLY" ]; + const pushTilesetModifiers = (tileset: string): void => { + switch (tileset) { + case "SORTIE_MODIFIER_HAZARD_FOG": + modifiers.push("SORTIE_MODIFIER_HAZARD_FOG"); + break; + case "CorpusShipTileset": + case "GrineerGalleonTileset": + case "InfestedCorpusShipTileset": + modifiers.push("SORTIE_MODIFIER_HAZARD_MAGNETIC"); + modifiers.push("SORTIE_MODIFIER_HAZARD_FIRE"); + modifiers.push("SORTIE_MODIFIER_HAZARD_ICE"); + break; + case "CorpusIcePlanetTileset": + case "CorpusIcePlanetTilesetCaves": + modifiers.push("SORTIE_MODIFIER_HAZARD_COLD"); + break; + } + }; if (i == 2 && boss != "SORTIE_BOSS_CORRUPTED_VOR" && rng.randomInt(0, 2) == 2) { + const tileset = sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets]; + pushTilesetModifiers(tileset); + const modifierType = rng.randomElement(modifiers)!; selectedNodes.push({ missionType: "MT_ASSASSINATION", modifierType, node: sortieBossNode[boss], - tileset: sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets] + tileset }); continue; } @@ -343,13 +359,16 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => { modifiers.push("SORTIE_MODIFIER_SHIELDS"); } + const tileset = sortieTilesets[node as keyof typeof sortieTilesets]; + pushTilesetModifiers(tileset); + const modifierType = rng.randomElement(modifiers)!; selectedNodes.push({ missionType, modifierType, node, - tileset: sortieTilesets[node as keyof typeof sortieTilesets] + tileset }); nodes.splice(randomIndex, 1); missionTypes.add(missionType);