返回提交历史
Modified
src/services/worldStateService.ts
+26
-7
XFEstudio/SpaceNinjaServer
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>
468efed7
代码差异
1 个文件
+26
-7
@@ -298,26 +298,42 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
298
298
"SORTIE_MODIFIER_TOXIN",
299
299
"SORTIE_MODIFIER_POISON",
300
300
"SORTIE_MODIFIER_HAZARD_RADIATION",
301
"SORTIE_MODIFIER_HAZARD_MAGNETIC",
302
"SORTIE_MODIFIER_HAZARD_FOG", // TODO: push this if the mission tileset is Grineer Forest
303
"SORTIE_MODIFIER_HAZARD_FIRE", // TODO: push this if the mission tileset is Corpus Ship or Grineer Galleon
304
"SORTIE_MODIFIER_HAZARD_ICE",
305
"SORTIE_MODIFIER_HAZARD_COLD",
306
301
"SORTIE_MODIFIER_SECONDARY_ONLY",
307
302
"SORTIE_MODIFIER_SHOTGUN_ONLY",
308
303
"SORTIE_MODIFIER_SNIPER_ONLY",
309
304
"SORTIE_MODIFIER_RIFLE_ONLY",
310
305
"SORTIE_MODIFIER_BOW_ONLY"
311
306
];
307
const pushTilesetModifiers = (tileset: string): void => {
308
switch (tileset) {
309
case "SORTIE_MODIFIER_HAZARD_FOG":
310
modifiers.push("SORTIE_MODIFIER_HAZARD_FOG");
311
break;
312
case "CorpusShipTileset":
313
case "GrineerGalleonTileset":
314
case "InfestedCorpusShipTileset":
315
modifiers.push("SORTIE_MODIFIER_HAZARD_MAGNETIC");
316
modifiers.push("SORTIE_MODIFIER_HAZARD_FIRE");
317
modifiers.push("SORTIE_MODIFIER_HAZARD_ICE");
318
break;
319
case "CorpusIcePlanetTileset":
320
case "CorpusIcePlanetTilesetCaves":
321
modifiers.push("SORTIE_MODIFIER_HAZARD_COLD");
322
break;
323
}
324
};
312
325
313
326
if (i == 2 && boss != "SORTIE_BOSS_CORRUPTED_VOR" && rng.randomInt(0, 2) == 2) {
327
const tileset = sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets];
328
pushTilesetModifiers(tileset);
329
314
330
const modifierType = rng.randomElement(modifiers)!;
315
331
316
332
selectedNodes.push({
317
333
missionType: "MT_ASSASSINATION",
318
334
modifierType,
319
335
node: sortieBossNode[boss],
320
tileset: sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets]
336
tileset
321
337
});
322
338
continue;
323
339
}
@@ -343,13 +359,16 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
343
359
modifiers.push("SORTIE_MODIFIER_SHIELDS");
344
360
}
345
361
362
const tileset = sortieTilesets[node as keyof typeof sortieTilesets];
363
pushTilesetModifiers(tileset);
364
346
365
const modifierType = rng.randomElement(modifiers)!;
347
366
348
367
selectedNodes.push({
349
368
missionType,
350
369
modifierType,
351
370
node,
352
tileset: sortieTilesets[node as keyof typeof sortieTilesets]
371
tileset
353
372
});
354
373
nodes.splice(randomIndex, 1);
355
374
missionTypes.add(missionType);