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

feat: randomly generate 1999 calendar seasons (#1689)

also handling week rollover now Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1689 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

435aafea
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

7 个文件 +227 -407
Modified src/services/worldStateService.ts +209 -16
@@ -1,14 +1,10 @@
1 1 import staticWorldState from "@/static/fixed_responses/worldState/worldState.json";
2 import static1999FallDays from "@/static/fixed_responses/worldState/1999_fall_days.json";
3 import static1999SpringDays from "@/static/fixed_responses/worldState/1999_spring_days.json";
4 import static1999SummerDays from "@/static/fixed_responses/worldState/1999_summer_days.json";
5 import static1999WinterDays from "@/static/fixed_responses/worldState/1999_winter_days.json";
6 2 import { buildConfig } from "@/src/services/buildConfigService";
7 3 import { unixTimesInMs } from "@/src/constants/timeConstants";
8 4 import { config } from "@/src/services/configService";
9 5 import { CRng } from "@/src/services/rngService";
10 6 import { eMissionType, ExportNightwave, ExportRegions } from "warframe-public-export-plus";
11 import { ISeasonChallenge, ISortie, IWorldState } from "../types/worldStateTypes";
7 import { ICalendarDay, ICalendarSeason, ISeasonChallenge, ISortie, IWorldState } from "../types/worldStateTypes";
12 8
13 9 const sortieBosses = [
14 10 "SORTIE_BOSS_HYENA",
@@ -352,6 +348,209 @@ const getSeasonWeeklyHardChallenge = (week: number, id: number): ISeasonChalleng
352 348 };
353 349 };
354 350
351 const birthdays: number[] = [
352 1, // Kaya
353 45, // Lettie
354 74, // Minerva (MinervaVelemirDialogue_rom.dialogue)
355 143, // Amir
356 166, // Flare
357 191, // Aoi
358 306, // Eleanor
359 307, // Arthur
360 338, // Quincy
361 355 // Velimir (MinervaVelemirDialogue_rom.dialogue)
362 ];
363
364 const getCalendarSeason = (week: number): ICalendarSeason => {
365 const seasonIndex = week % 4;
366 const seasonDay1 = seasonIndex * 90 + 1;
367 const seasonDay91 = seasonIndex * 90 + 91;
368 const eventDays: ICalendarDay[] = [];
369 for (const day of birthdays) {
370 if (day < seasonDay1) {
371 continue;
372 }
373 if (day >= seasonDay91) {
374 break;
375 }
376 //logger.debug(`birthday on day ${day}`);
377 eventDays.push({ day, events: [] }); // This is how CET_PLOT looks in worldState as of around 38.5.0
378 }
379 const rng = new CRng(week);
380 const challenges = [
381 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesEasy",
382 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesMedium",
383 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesHard",
384 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithMeleeEasy",
385 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithMeleeMedium",
386 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithMeleeHard",
387 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithAbilitiesEasy",
388 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithAbilitiesMedium",
389 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithAbilitiesHard",
390 "/Lotus/Types/Challenges/Calendar1999/CalendarDestroyPropsEasy",
391 "/Lotus/Types/Challenges/Calendar1999/CalendarDestroyPropsMedium",
392 "/Lotus/Types/Challenges/Calendar1999/CalendarDestroyPropsHard",
393 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEximusEasy",
394 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEximusMedium",
395 "/Lotus/Types/Challenges/Calendar1999/CalendarKillEximusHard",
396 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesEasy",
397 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesMedium",
398 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesHard",
399 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithAbilitiesEasy",
400 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithAbilitiesMedium",
401 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithAbilitiesHard",
402 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTankHard",
403 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithMeleeEasy",
404 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithMeleeMedium",
405 "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithMeleeHard",
406 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesEasy",
407 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesMedium",
408 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesHard",
409 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithAbilitiesEasy",
410 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithAbilitiesMedium",
411 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithAbilitiesHard",
412 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithMeleeEasy",
413 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithMeleeMedium",
414 "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithMeleeHard"
415 ];
416 const rewardRanges: number[] = [];
417 const upgradeRanges: number[] = [];
418 for (let i = 0; i != 6; ++i) {
419 const chunkDay1 = seasonDay1 + i * 15;
420 const chunkDay13 = chunkDay1 - 1 + 13;
421 let challengeDay: number;
422 do {
423 challengeDay = rng.randomInt(chunkDay1, chunkDay13);
424 } while (birthdays.indexOf(challengeDay) != -1);
425
426 const challengeIndex = rng.randomInt(0, challenges.length - 1);
427 const challenge = challenges[challengeIndex];
428 challenges.splice(challengeIndex, 1);
429
430 //logger.debug(`challenge on day ${challengeDay}`);
431 eventDays.push({
432 day: challengeDay,
433 events: [{ type: "CET_CHALLENGE", challenge }]
434 });
435
436 rewardRanges.push(challengeDay);
437 if (i == 0 || i == 3 || i == 5) {
438 upgradeRanges.push(challengeDay);
439 }
440 }
441 rewardRanges.push(seasonDay91);
442 upgradeRanges.push(seasonDay91);
443
444 const rewards = [
445 "/Lotus/StoreItems/Types/Items/MiscItems/UtilityUnlocker",
446 "/Lotus/StoreItems/Types/Recipes/Components/FormaAuraBlueprint",
447 "/Lotus/StoreItems/Types/Recipes/Components/FormaBlueprint",
448 "/Lotus/StoreItems/Types/Recipes/Components/WeaponUtilityUnlockerBlueprint",
449 "/Lotus/StoreItems/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker",
450 "/Lotus/StoreItems/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker",
451 "/Lotus/StoreItems/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker",
452 "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CircuitSilverSteelPathFusionBundle",
453 "/Lotus/StoreItems/Types/BoosterPacks/CalendarRivenPack",
454 "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleSmall",
455 "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleLarge",
456 "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack",
457 "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack",
458 "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem",
459 "/Lotus/Types/StoreItems/Boosters/ModDropChanceBooster3DayStoreItem",
460 "/Lotus/Types/StoreItems/Boosters/ResourceDropChance3DayStoreItem",
461 "/Lotus/StoreItems/Types/Items/MiscItems/Forma",
462 "/Lotus/StoreItems/Types/Recipes/Components/OrokinCatalystBlueprint",
463 "/Lotus/StoreItems/Types/Recipes/Components/OrokinReactorBlueprint",
464 "/Lotus/StoreItems/Types/Items/MiscItems/WeaponUtilityUnlocker",
465 "/Lotus/Types/StoreItems/Packages/Calendar/CalendarVosforPack",
466 "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalOrange",
467 "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalNira",
468 "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalGreen",
469 "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalBoreal",
470 "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalAmar",
471 "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalViolet"
472 ];
473 for (let i = 0; i != rewardRanges.length - 1; ++i) {
474 const rewardIndex = rng.randomInt(0, rewards.length - 1);
475 const reward = rewards[rewardIndex];
476 rewards.splice(rewardIndex, 1);
477
478 //logger.debug(`trying to fit a reward between day ${rewardRanges[i]} and ${rewardRanges[i + 1]}`);
479 let day: number;
480 do {
481 day = rng.randomInt(rewardRanges[i] + 1, rewardRanges[i + 1] - 1);
482 } while (eventDays.find(x => x.day == day));
483 eventDays.push({ day, events: [{ type: "CET_REWARD", reward }] });
484 }
485
486 const upgrades = [
487 "/Lotus/Upgrades/Calendar/MeleeCritChance",
488 "/Lotus/Upgrades/Calendar/MeleeAttackSpeed",
489 "/Lotus/Upgrades/Calendar/EnergyOrbToAbilityRange",
490 "/Lotus/Upgrades/Calendar/AbilityStrength",
491 "/Lotus/Upgrades/Calendar/Armor",
492 "/Lotus/Upgrades/Calendar/RadiationProcOnTakeDamage",
493 "/Lotus/Upgrades/Calendar/CompanionDamage",
494 "/Lotus/Upgrades/Calendar/GasChanceToPrimaryAndSecondary",
495 "/Lotus/Upgrades/Calendar/MagazineCapacity",
496 "/Lotus/Upgrades/Calendar/PunchToPrimary",
497 "/Lotus/Upgrades/Calendar/HealingEffects",
498 "/Lotus/Upgrades/Calendar/EnergyRestoration",
499 "/Lotus/Upgrades/Calendar/OvershieldCap",
500 "/Lotus/Upgrades/Calendar/ElectricStatusDamageAndChance",
501 "/Lotus/Upgrades/Calendar/FinisherChancePerComboMultiplier",
502 "/Lotus/Upgrades/Calendar/MagnetStatusPull",
503 "/Lotus/Upgrades/Calendar/CompanionsBuffNearbyPlayer",
504 "/Lotus/Upgrades/Calendar/StatusChancePerAmmoSpent",
505 "/Lotus/Upgrades/Calendar/OrbsDuplicateOnPickup",
506 "/Lotus/Upgrades/Calendar/AttackAndMovementSpeedOnCritMelee",
507 "/Lotus/Upgrades/Calendar/RadialJavelinOnHeavy",
508 "/Lotus/Upgrades/Calendar/MagnitizeWithinRangeEveryXCasts",
509 "/Lotus/Upgrades/Calendar/CompanionsRadiationChance",
510 "/Lotus/Upgrades/Calendar/BlastEveryXShots",
511 "/Lotus/Upgrades/Calendar/GenerateOmniOrbsOnWeakKill",
512 "/Lotus/Upgrades/Calendar/ElectricDamagePerDistance",
513 "/Lotus/Upgrades/Calendar/MeleeSlideFowardMomentumOnEnemyHit",
514 "/Lotus/Upgrades/Calendar/SharedFreeAbilityEveryXCasts",
515 "/Lotus/Upgrades/Calendar/ReviveEnemyAsSpectreOnKill",
516 "/Lotus/Upgrades/Calendar/RefundBulletOnStatusProc",
517 "/Lotus/Upgrades/Calendar/ExplodingHealthOrbs",
518 "/Lotus/Upgrades/Calendar/SpeedBuffsWhenAirborne",
519 "/Lotus/Upgrades/Calendar/EnergyWavesOnCombo",
520 "/Lotus/Upgrades/Calendar/PowerStrengthAndEfficiencyPerEnergySpent",
521 "/Lotus/Upgrades/Calendar/CloneActiveCompanionForEnergySpent",
522 "/Lotus/Upgrades/Calendar/GuidingMissilesChance",
523 "/Lotus/Upgrades/Calendar/EnergyOrbsGrantShield",
524 "/Lotus/Upgrades/Calendar/ElectricalDamageOnBulletJump"
525 ];
526 for (let i = 0; i != upgradeRanges.length - 1; ++i) {
527 const upgradeIndex = rng.randomInt(0, upgrades.length - 1);
528 const upgrade = upgrades[upgradeIndex];
529 upgrades.splice(upgradeIndex, 1);
530
531 //logger.debug(`trying to fit an upgrade between day ${upgradeRanges[i]} and ${upgradeRanges[i + 1]}`);
532 let day: number;
533 do {
534 day = rng.randomInt(upgradeRanges[i] + 1, upgradeRanges[i + 1] - 1);
535 } while (eventDays.find(x => x.day == day));
536 eventDays.push({ day, events: [{ type: "CET_UPGRADE", upgrade }] });
537 }
538
539 eventDays.sort((a, b) => a.day - b.day);
540
541 const weekStart = EPOCH + week * 604800000;
542 const weekEnd = weekStart + 604800000;
543 return {
544 Activation: { $date: { $numberLong: weekStart.toString() } },
545 Expiry: { $date: { $numberLong: weekEnd.toString() } },
546 Days: eventDays,
547 Season: ["CST_WINTER", "CST_SPRING", "CST_SUMMER", "CST_FALL"][seasonIndex],
548 YearIteration: Math.trunc(week / 4),
549 Version: 19,
550 UpgradeAvaliabilityRequirements: ["/Lotus/Upgrades/Calendar/1999UpgradeApplicationRequirement"]
551 };
552 };
553
355 554 export const getWorldState = (buildLabel?: string): IWorldState => {
356 555 const day = Math.trunc((Date.now() - EPOCH) / 86400000);
357 556 const week = Math.trunc(day / 7);
@@ -376,6 +575,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
376 575 Params: "",
377 576 ActiveChallenges: []
378 577 },
578 KnownCalendarSeasons: [],
379 579 ...staticWorldState,
380 580 SyndicateMissions: [...staticWorldState.SyndicateMissions]
381 581 };
@@ -834,17 +1034,10 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
834 1034 });
835 1035
836 1036 // 1999 Calendar Season cycling every week + YearIteration every 4 weeks
837 // TODO: Handle imminent rollover
838 worldState.KnownCalendarSeasons[0].Activation = { $date: { $numberLong: weekStart.toString() } };
839 worldState.KnownCalendarSeasons[0].Expiry = { $date: { $numberLong: weekEnd.toString() } };
840 worldState.KnownCalendarSeasons[0].Season = ["CST_WINTER", "CST_SPRING", "CST_SUMMER", "CST_FALL"][week % 4];
841 worldState.KnownCalendarSeasons[0].Days = [
842 static1999WinterDays,
843 static1999SpringDays,
844 static1999SummerDays,
845 static1999FallDays
846 ][week % 4];
847 worldState.KnownCalendarSeasons[0].YearIteration = Math.trunc(week / 4);
1037 worldState.KnownCalendarSeasons.push(getCalendarSeason(week));
1038 if (isBeforeNextExpectedWorldStateRefresh(weekEnd)) {
1039 worldState.KnownCalendarSeasons.push(getCalendarSeason(week + 1));
1040 }
848 1041
849 1042 // Sentient Anomaly cycling every 30 minutes
850 1043 const halfHour = Math.trunc(Date.now() / (unixTimesInMs.hour / 2));
Modified src/types/worldStateTypes.ts +17 -3
@@ -127,8 +127,22 @@ export interface ICalendarSeason {
127 127 Activation: IMongoDate;
128 128 Expiry: IMongoDate;
129 129 Season: string; // "CST_UNDEFINED" | "CST_WINTER" | "CST_SPRING" | "CST_SUMMER" | "CST_FALL"
130 Days: {
131 day: number;
132 }[];
130 Days: ICalendarDay[];
133 131 YearIteration: number;
132 Version: number;
133 UpgradeAvaliabilityRequirements: string[];
134 }
135
136 export interface ICalendarDay {
137 day: number;
138 events: ICalendarEvent[];
139 }
140
141 export interface ICalendarEvent {
142 type: string;
143 challenge?: string;
144 reward?: string;
145 upgrade?: string;
146 dialogueName?: string;
147 dialogueConvo?: string;
134 148 }
Deleted static/fixed_responses/worldState/1999_fall_days.json +0 -77
@@ -1,77 +0,0 @@
1 [
2 { "day": 276, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesEasy" }] },
3 {
4 "day": 283,
5 "events": [
6 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/CompanionDamage" },
7 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/GasChanceToPrimaryAndSecondary" },
8 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/ElectricStatusDamageAndChance" }
9 ]
10 },
11 {
12 "day": 289,
13 "events": [
14 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponUtilityUnlocker" },
15 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" }
16 ]
17 },
18 { "day": 295, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithMeleeEasy" }] },
19 {
20 "day": 302,
21 "events": [
22 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
23 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker" }
24 ]
25 },
26 { "day": 305, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEximusMedium" }] },
27 { "day": 306, "events": [{ "type": "CET_PLOT", "dialogueName": "/Lotus/Types/Gameplay/1999Wf/Dialogue/EleanorDialogue_rom.dialogue", "dialogueConvo": "EleanorBirthdayConvo" }] },
28 { "day": 307, "events": [{ "type": "CET_PLOT", "dialogueName": "/Lotus/Types/Gameplay/1999Wf/Dialogue/ArthurDialogue_rom.dialogue", "dialogueConvo": "ArthurBirthdayConvo" }] },
29 {
30 "day": 309,
31 "events": [
32 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/Forma" },
33 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalBoreal" }
34 ]
35 },
36 {
37 "day": 314,
38 "events": [
39 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/PowerStrengthAndEfficiencyPerEnergySpent" },
40 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/ElectricalDamageOnBulletJump" },
41 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MeleeSlideFowardMomentumOnEnemyHit" }
42 ]
43 },
44 { "day": 322, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesMedium" }] },
45 {
46 "day": 328,
47 "events": [
48 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker" },
49 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleSmall" }
50 ]
51 },
52 { "day": 337, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithAbilitiesHard" }] },
53 { "day": 338, "events": [{ "type": "CET_PLOT", "dialogueName": "/Lotus/Types/Gameplay/1999Wf/Dialogue/QuincyDialogue_rom.dialogue", "dialogueConvo": "QuincyBirthdayConvo" }] },
54 {
55 "day": 340,
56 "events": [
57 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MeleeCritChance" },
58 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/RadiationProcOnTakeDamage" },
59 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/AbilityStrength" }
60 ]
61 },
62 {
63 "day": 343,
64 "events": [
65 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker" },
66 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/FormaAura" }
67 ]
68 },
69 { "day": 352, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillTankHard" }] },
70 {
71 "day": 364,
72 "events": [
73 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" },
74 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Boosters/ModDropChanceBooster3DayStoreItem" }
75 ]
76 }
77 ]
Deleted static/fixed_responses/worldState/1999_spring_days.json +0 -75
@@ -1,75 +0,0 @@
1 [
2 { "day": 100, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesEasy" }] },
3 {
4 "day": 101,
5 "events": [
6 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/EnergyOrbToAbilityRange" },
7 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/ElectricStatusDamageAndChance" },
8 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/EnergyRestoration" }
9 ]
10 },
11 {
12 "day": 102,
13 "events": [
14 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalBoreal" },
15 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" }
16 ]
17 },
18 { "day": 106, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesEasy" }] },
19 {
20 "day": 107,
21 "events": [
22 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
23 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleSmall" }
24 ]
25 },
26 { "day": 122, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithMeleeMedium" }] },
27 {
28 "day": 127,
29 "events": [
30 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/Forma" },
31 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarVosforPack" }
32 ]
33 },
34 { "day": 129, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithAbilitiesMedium" }] },
35 {
36 "day": 135,
37 "events": [
38 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
39 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker" }
40 ]
41 },
42 {
43 "day": 142,
44 "events": [
45 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/BlastEveryXShots" },
46 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MagnitizeWithinRangeEveryXCasts" },
47 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/GenerateOmniOrbsOnWeakKill" }
48 ]
49 },
50 { "day": 143, "events": [{ "type": "CET_PLOT", "dialogueName": "/Lotus/Types/Gameplay/1999Wf/Dialogue/JabirDialogue_rom.dialogue", "dialogueConvo": "AmirBirthdayConvo" }] },
51 { "day": 161, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithAbilitiesHard" }] },
52 {
53 "day": 165,
54 "events": [
55 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/Forma" },
56 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Boosters/ModDropChanceBooster3DayStoreItem" }
57 ]
58 },
59 { "day": 169, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarDestroyPropsHard" }] },
60 {
61 "day": 171,
62 "events": [
63 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/GasChanceToPrimaryAndSecondary" },
64 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/AbilityStrength" },
65 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MeleeCritChance" }
66 ]
67 },
68 {
69 "day": 176,
70 "events": [
71 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
72 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Recipes/Components/WeaponUtilityUnlockerBlueprint" }
73 ]
74 }
75 ]
Deleted static/fixed_responses/worldState/1999_summer_days.json +0 -75
@@ -1,75 +0,0 @@
1 [
2 { "day": 186, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesEasy" }] },
3 { "day": 191, "events": [{ "type": "CET_PLOT", "dialogueName": "/Lotus/Types/Gameplay/1999Wf/Dialogue/AoiDialogue_rom.dialogue", "dialogueConvo": "AoiBirthdayConvo" }] },
4 {
5 "day": 193,
6 "events": [
7 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalAmar" },
8 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" }
9 ]
10 },
11 {
12 "day": 197,
13 "events": [
14 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MeleeAttackSpeed" },
15 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/AbilityStrength" },
16 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/CompanionDamage" }
17 ]
18 },
19 { "day": 199, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithMeleeMedium" }] },
20 {
21 "day": 210,
22 "events": [
23 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
24 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CircuitSilverSteelPathFusionBundle" }
25 ]
26 },
27 { "day": 215, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesWithMeleeEasy" }] },
28 {
29 "day": 228,
30 "events": [
31 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Recipes/Components/WeaponUtilityUnlockerBlueprint" },
32 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarRivenPack" }
33 ]
34 },
35 { "day": 236, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarDestroyPropsMedium" }] },
36 {
37 "day": 237,
38 "events": [
39 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleLarge" },
40 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" }
41 ]
42 },
43 {
44 "day": 240,
45 "events": [
46 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/RadialJavelinOnHeavy" },
47 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/SharedFreeAbilityEveryXCasts" },
48 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/CompanionsRadiationChance" }
49 ]
50 },
51 { "day": 245, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithAbilitiesHard" }] },
52 {
53 "day": 250,
54 "events": [
55 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem" },
56 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Recipes/Components/OrokinReactorBlueprint" }
57 ]
58 },
59 { "day": 254, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillTankHard" }] },
60 {
61 "day": 267,
62 "events": [
63 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
64 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker" }
65 ]
66 },
67 {
68 "day": 270,
69 "events": [
70 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/EnergyOrbToAbilityRange" },
71 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/PunchToPrimary" },
72 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/OvershieldCap" }
73 ]
74 }
75 ]
Deleted static/fixed_responses/worldState/1999_winter_days.json +0 -75
@@ -1,75 +0,0 @@
1 [
2 { "day": 6, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEximusEasy" }] },
3 {
4 "day": 15,
5 "events": [
6 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MagazineCapacity" },
7 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/Armor" },
8 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/EnergyRestoration" }
9 ]
10 },
11 { "day": 21, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesEasy" }] },
12 {
13 "day": 25,
14 "events": [
15 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" },
16 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalGreen" }
17 ]
18 },
19 {
20 "day": 31,
21 "events": [
22 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Recipes/Components/WeaponUtilityUnlockerBlueprint" },
23 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleSmall" }
24 ]
25 },
26 { "day": 43, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithAbilitiesMedium" }] },
27 { "day": 45, "events": [{ "type": "CET_PLOT", "dialogueName": "/Lotus/Types/Gameplay/1999Wf/Dialogue/LettieDialogue_rom.dialogue", "dialogueConvo": "LettieBirthdayConvo" }] },
28 {
29 "day": 47,
30 "events": [
31 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem" },
32 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" }
33 ]
34 },
35 { "day": 48, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithMeleeMedium" }] },
36 {
37 "day": 54,
38 "events": [
39 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/CompanionsBuffNearbyPlayer" },
40 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/OrbsDuplicateOnPickup" },
41 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/FinisherChancePerComboMultiplier" }
42 ]
43 },
44 {
45 "day": 56,
46 "events": [
47 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
48 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleSmall" }
49 ]
50 },
51 { "day": 71, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesHard" }] },
52 {
53 "day": 77,
54 "events": [
55 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker" },
56 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CircuitSilverSteelPathFusionBundle" }
57 ]
58 },
59 { "day": 80, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarDestroyPropsMedium" }] },
60 {
61 "day": 83,
62 "events": [
63 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Recipes/Components/OrokinReactorBlueprint" },
64 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponUtilityUnlocker" }
65 ]
66 },
67 {
68 "day": 87,
69 "events": [
70 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/EnergyOrbToAbilityRange" },
71 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MeleeAttackSpeed" },
72 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/CompanionDamage" }
73 ]
74 }
75 ]
Modified static/fixed_responses/worldState/worldState.json +1 -86
@@ -2716,90 +2716,5 @@
2716 2716 "ConstructionProjects": [],
2717 2717 "TwitchPromos": [],
2718 2718 "ExperimentRecommended": [],
2719 "ForceLogoutVersion": 0,
2720 "KnownCalendarSeasons": [
2721 {
2722 "Activation": { "$date": { "$numberLong": "1733961600000" } },
2723 "Expiry": { "$date": { "$numberLong": "2000000000000" } },
2724 "Days": [
2725 { "day": 6, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEximusEasy" }] },
2726 {
2727 "day": 15,
2728 "events": [
2729 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MagazineCapacity" },
2730 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/Armor" },
2731 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/EnergyRestoration" }
2732 ]
2733 },
2734 { "day": 21, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesEasy" }] },
2735 {
2736 "day": 25,
2737 "events": [
2738 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" },
2739 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalGreen" }
2740 ]
2741 },
2742 {
2743 "day": 31,
2744 "events": [
2745 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Recipes/Components/WeaponUtilityUnlockerBlueprint" },
2746 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleSmall" }
2747 ]
2748 },
2749 { "day": 43, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesWithAbilitiesMedium" }] },
2750 { "day": 45, "events": [{ "type": "CET_PLOT", "dialogueName": "/Lotus/Types/Gameplay/1999Wf/Dialogue/LettieDialogue_rom.dialogue", "dialogueConvo": "LettieBirthdayConvo" }] },
2751 {
2752 "day": 47,
2753 "events": [
2754 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Boosters/AffinityBooster3DayStoreItem" },
2755 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarMajorArtifactPack" }
2756 ]
2757 },
2758 { "day": 48, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillScaldraEnemiesWithMeleeMedium" }] },
2759 {
2760 "day": 54,
2761 "events": [
2762 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/CompanionsBuffNearbyPlayer" },
2763 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/OrbsDuplicateOnPickup" },
2764 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/FinisherChancePerComboMultiplier" }
2765 ]
2766 },
2767 {
2768 "day": 56,
2769 "events": [
2770 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/BoosterPacks/CalendarArtifactPack" },
2771 { "type": "CET_REWARD", "reward": "/Lotus/Types/StoreItems/Packages/Calendar/CalendarKuvaBundleSmall" }
2772 ]
2773 },
2774 { "day": 71, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarKillTechrotEnemiesHard" }] },
2775 {
2776 "day": 77,
2777 "events": [
2778 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker" },
2779 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CircuitSilverSteelPathFusionBundle" }
2780 ]
2781 },
2782 { "day": 80, "events": [{ "type": "CET_CHALLENGE", "challenge": "/Lotus/Types/Challenges/Calendar1999/CalendarDestroyPropsMedium" }] },
2783 {
2784 "day": 83,
2785 "events": [
2786 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Recipes/Components/OrokinReactorBlueprint" },
2787 { "type": "CET_REWARD", "reward": "/Lotus/StoreItems/Types/Items/MiscItems/WeaponUtilityUnlocker" }
2788 ]
2789 },
2790 {
2791 "day": 87,
2792 "events": [
2793 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/EnergyOrbToAbilityRange" },
2794 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/MeleeAttackSpeed" },
2795 { "type": "CET_UPGRADE", "upgrade": "/Lotus/Upgrades/Calendar/CompanionDamage" }
2796 ]
2797 }
2798 ],
2799 "Season": "CST_WINTER",
2800 "YearIteration": 0,
2801 "Version": 17,
2802 "UpgradeAvaliabilityRequirements": ["/Lotus/Upgrades/Calendar/1999UpgradeApplicationRequirement"]
2803 }
2804 ]
2719 "ForceLogoutVersion": 0
2805 2720 }