返回提交历史
Modified
src/services/worldStateService.ts
+45
-41
XFEstudio/XFESpaceNinjaServer
fix: filter sortie armor/shields modifier based on mission faction (#1934)
Closes #1931 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1934 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
cddd4bdf
代码差异
1 个文件
+45
-41
@@ -230,40 +230,6 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
230
230
231
231
const boss = rng.randomElement(sortieBosses)!;
232
232
233
const modifiers = [
234
"SORTIE_MODIFIER_LOW_ENERGY",
235
"SORTIE_MODIFIER_IMPACT",
236
"SORTIE_MODIFIER_SLASH",
237
"SORTIE_MODIFIER_PUNCTURE",
238
"SORTIE_MODIFIER_EXIMUS",
239
"SORTIE_MODIFIER_MAGNETIC",
240
"SORTIE_MODIFIER_CORROSIVE",
241
"SORTIE_MODIFIER_VIRAL",
242
"SORTIE_MODIFIER_ELECTRICITY",
243
"SORTIE_MODIFIER_RADIATION",
244
"SORTIE_MODIFIER_GAS",
245
"SORTIE_MODIFIER_FIRE",
246
"SORTIE_MODIFIER_EXPLOSION",
247
"SORTIE_MODIFIER_FREEZE",
248
"SORTIE_MODIFIER_TOXIN",
249
"SORTIE_MODIFIER_POISON",
250
"SORTIE_MODIFIER_HAZARD_RADIATION",
251
"SORTIE_MODIFIER_HAZARD_MAGNETIC",
252
"SORTIE_MODIFIER_HAZARD_FOG", // TODO: push this if the mission tileset is Grineer Forest
253
"SORTIE_MODIFIER_HAZARD_FIRE", // TODO: push this if the mission tileset is Corpus Ship or Grineer Galleon
254
"SORTIE_MODIFIER_HAZARD_ICE",
255
"SORTIE_MODIFIER_HAZARD_COLD",
256
"SORTIE_MODIFIER_SECONDARY_ONLY",
257
"SORTIE_MODIFIER_SHOTGUN_ONLY",
258
"SORTIE_MODIFIER_SNIPER_ONLY",
259
"SORTIE_MODIFIER_RIFLE_ONLY",
260
"SORTIE_MODIFIER_MELEE_ONLY",
261
"SORTIE_MODIFIER_BOW_ONLY"
262
];
263
264
if (sortieBossToFaction[boss] == "FC_CORPUS") modifiers.push("SORTIE_MODIFIER_SHIELDS");
265
if (sortieBossToFaction[boss] != "FC_CORPUS") modifiers.push("SORTIE_MODIFIER_ARMOR");
266
267
233
const nodes: string[] = [];
268
234
const availableMissionIndexes: number[] = [];
269
235
for (const [key, value] of Object.entries(ExportRegions)) {
@@ -314,9 +280,38 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
314
280
sortieFactionToSpecialMissionTileset[sortieBossToFaction[boss]]
315
281
);
316
282
283
const modifiers = [
284
"SORTIE_MODIFIER_LOW_ENERGY",
285
"SORTIE_MODIFIER_IMPACT",
286
"SORTIE_MODIFIER_SLASH",
287
"SORTIE_MODIFIER_PUNCTURE",
288
"SORTIE_MODIFIER_EXIMUS",
289
"SORTIE_MODIFIER_MAGNETIC",
290
"SORTIE_MODIFIER_CORROSIVE",
291
"SORTIE_MODIFIER_VIRAL",
292
"SORTIE_MODIFIER_ELECTRICITY",
293
"SORTIE_MODIFIER_RADIATION",
294
"SORTIE_MODIFIER_GAS",
295
"SORTIE_MODIFIER_FIRE",
296
"SORTIE_MODIFIER_EXPLOSION",
297
"SORTIE_MODIFIER_FREEZE",
298
"SORTIE_MODIFIER_TOXIN",
299
"SORTIE_MODIFIER_POISON",
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
"SORTIE_MODIFIER_SECONDARY_ONLY",
307
"SORTIE_MODIFIER_SHOTGUN_ONLY",
308
"SORTIE_MODIFIER_SNIPER_ONLY",
309
"SORTIE_MODIFIER_RIFLE_ONLY",
310
"SORTIE_MODIFIER_BOW_ONLY"
311
];
312
317
313
if (i == 2 && boss != "SORTIE_BOSS_CORRUPTED_VOR" && rng.randomInt(0, 2) == 2) {
318
const filteredModifiers = modifiers.filter(mod => mod !== "SORTIE_MODIFIER_MELEE_ONLY");
319
const modifierType = rng.randomElement(filteredModifiers)!;
314
const modifierType = rng.randomElement(modifiers)!;
320
315
321
316
selectedNodes.push({
322
317
missionType: "MT_ASSASSINATION",
@@ -334,12 +329,21 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
334
329
continue;
335
330
}
336
331
337
const filteredModifiers =
338
missionType === "MT_TERRITORY"
339
? modifiers.filter(mod => mod != "SORTIE_MODIFIER_HAZARD_RADIATION")
340
: modifiers;
332
modifiers.push("SORTIE_MODIFIER_MELEE_ONLY"); // not an assassination mission, can now push this
333
334
if (missionType != "MT_TERRITORY") {
335
modifiers.push("SORTIE_MODIFIER_HAZARD_RADIATION");
336
}
337
338
if (ExportRegions[node].factionIndex == 0) {
339
// Grineer
340
modifiers.push("SORTIE_MODIFIER_ARMOR");
341
} else if (ExportRegions[node].factionIndex == 1) {
342
// Corpus
343
modifiers.push("SORTIE_MODIFIER_SHIELDS");
344
}
341
345
342
const modifierType = rng.randomElement(filteredModifiers)!;
346
const modifierType = rng.randomElement(modifiers)!;
343
347
344
348
selectedNodes.push({
345
349
missionType,