fix: handle tileset-specific sortie modifiers (#1958)

Closes #1956

Reviewed-on: OpenWF/SpaceNinjaServer#1958
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-05-02 15:07:00 -07:00 committed by Sainan
parent 4926b2f2be
commit 468efed71c

View File

@ -298,26 +298,42 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
"SORTIE_MODIFIER_TOXIN", "SORTIE_MODIFIER_TOXIN",
"SORTIE_MODIFIER_POISON", "SORTIE_MODIFIER_POISON",
"SORTIE_MODIFIER_HAZARD_RADIATION", "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_SECONDARY_ONLY",
"SORTIE_MODIFIER_SHOTGUN_ONLY", "SORTIE_MODIFIER_SHOTGUN_ONLY",
"SORTIE_MODIFIER_SNIPER_ONLY", "SORTIE_MODIFIER_SNIPER_ONLY",
"SORTIE_MODIFIER_RIFLE_ONLY", "SORTIE_MODIFIER_RIFLE_ONLY",
"SORTIE_MODIFIER_BOW_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) { 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)!; const modifierType = rng.randomElement(modifiers)!;
selectedNodes.push({ selectedNodes.push({
missionType: "MT_ASSASSINATION", missionType: "MT_ASSASSINATION",
modifierType, modifierType,
node: sortieBossNode[boss], node: sortieBossNode[boss],
tileset: sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets] tileset
}); });
continue; continue;
} }
@ -343,13 +359,16 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
modifiers.push("SORTIE_MODIFIER_SHIELDS"); modifiers.push("SORTIE_MODIFIER_SHIELDS");
} }
const tileset = sortieTilesets[node as keyof typeof sortieTilesets];
pushTilesetModifiers(tileset);
const modifierType = rng.randomElement(modifiers)!; const modifierType = rng.randomElement(modifiers)!;
selectedNodes.push({ selectedNodes.push({
missionType, missionType,
modifierType, modifierType,
node, node,
tileset: sortieTilesets[node as keyof typeof sortieTilesets] tileset
}); });
nodes.splice(randomIndex, 1); nodes.splice(randomIndex, 1);
missionTypes.add(missionType); missionTypes.add(missionType);