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:
parent
4926b2f2be
commit
468efed71c
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user