fix: restrict sortie mission types based on what the tileset supports #2003

Merged
Sainan merged 3 commits from sortie-fix into main 2025-05-07 20:14:05 -07:00
Showing only changes of commit e34644ce9e - Show all commits

View File

@ -212,6 +212,27 @@ const pushSyndicateMissions = (
}); });
}; };
type TSortieTileset = keyof typeof sortieTilesetMissions;
const pushTilesetModifiers = (modifiers: string[], tileset: TSortieTileset): void => {
switch (tileset) {
case "GrineerForestTileset":
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;
}
};
export const getSortie = (day: number): ISortie => { export const getSortie = (day: number): ISortie => {
const seed = new CRng(day).randomInt(0, 0xffff); const seed = new CRng(day).randomInt(0, 0xffff);
const rng = new CRng(seed); const rng = new CRng(seed);
@ -257,29 +278,10 @@ export const getSortie = (day: number): ISortie => {
"SORTIE_MODIFIER_RIFLE_ONLY", "SORTIE_MODIFIER_RIFLE_ONLY",
"SORTIE_MODIFIER_BOW_ONLY" "SORTIE_MODIFIER_BOW_ONLY"
]; ];
type TSortieTileset = keyof typeof sortieTilesetMissions;
const pushTilesetModifiers = (tileset: TSortieTileset): void => {
switch (tileset) {
case "GrineerForestTileset":
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] as TSortieTileset; const tileset = sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets] as TSortieTileset;
pushTilesetModifiers(tileset); pushTilesetModifiers(modifiers, tileset);
const modifierType = rng.randomElement(modifiers)!; const modifierType = rng.randomElement(modifiers)!;
@ -293,7 +295,7 @@ export const getSortie = (day: number): ISortie => {
} }
const tileset = sortieTilesets[node as keyof typeof sortieTilesets] as TSortieTileset; const tileset = sortieTilesets[node as keyof typeof sortieTilesets] as TSortieTileset;
pushTilesetModifiers(tileset); pushTilesetModifiers(modifiers, tileset);
const missionType = rng.randomElement(sortieTilesetMissions[tileset])!; const missionType = rng.randomElement(sortieTilesetMissions[tileset])!;