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

代码差异

1 个文件 +45 -41
Modified src/services/worldStateService.ts +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,