XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

1 个文件 +26 -7
Modified src/services/worldStateService.ts +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);