返回提交历史
Modified
src/services/worldStateService.ts
+209
-16
Modified
src/types/worldStateTypes.ts
+17
-3
Deleted
static/fixed_responses/worldState/1999_fall_days.json
+0
-77
Deleted
static/fixed_responses/worldState/1999_spring_days.json
+0
-75
Deleted
static/fixed_responses/worldState/1999_summer_days.json
+0
-75
Deleted
static/fixed_responses/worldState/1999_winter_days.json
+0
-75
Modified
static/fixed_responses/worldState/worldState.json
+1
-86
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
代码差异
7 个文件
+227
-407
@@ -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));
@@ -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
}
@@ -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
]
@@ -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
]
@@ -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
]
@@ -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
]
@@ -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
}