fix: some problems with 1999 calendar rotation
All checks were successful
Build / build (push) Successful in 1m33s
Build / build (pull_request) Successful in 58s

- First day was incorrect for summer & autumn
- Only 1 reward was shown, now is a choice of 2
- Only 1 upgrade was shown, now is a choice of 3
This commit is contained in:
Sainan 2025-04-25 06:23:22 +02:00
parent 100aefcee4
commit 5f22614078

View File

@ -7,6 +7,7 @@ import { CRng } from "@/src/services/rngService";
import { eMissionType, ExportNightwave, ExportRegions, IRegion } from "warframe-public-export-plus"; import { eMissionType, ExportNightwave, ExportRegions, IRegion } from "warframe-public-export-plus";
import { import {
ICalendarDay, ICalendarDay,
ICalendarEvent,
ICalendarSeason, ICalendarSeason,
ILiteSortie, ILiteSortie,
ISeasonChallenge, ISeasonChallenge,
@ -464,8 +465,8 @@ const birthdays: number[] = [
const getCalendarSeason = (week: number): ICalendarSeason => { const getCalendarSeason = (week: number): ICalendarSeason => {
const seasonIndex = week % 4; const seasonIndex = week % 4;
const seasonDay1 = seasonIndex * 90 + 1; const seasonDay1 = [1, 91, 182, 274][seasonIndex];
const seasonDay91 = seasonIndex * 90 + 91; const seasonDay91 = seasonDay1 + 90;
const eventDays: ICalendarDay[] = []; const eventDays: ICalendarDay[] = [];
for (const day of birthdays) { for (const day of birthdays) {
if (day < seasonDay1) { if (day < seasonDay1) {
@ -572,16 +573,19 @@ const getCalendarSeason = (week: number): ICalendarSeason => {
"/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalViolet" "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalViolet"
]; ];
for (let i = 0; i != rewardRanges.length - 1; ++i) { for (let i = 0; i != rewardRanges.length - 1; ++i) {
const rewardIndex = rng.randomInt(0, rewards.length - 1); const events: ICalendarEvent[] = [];
const reward = rewards[rewardIndex]; for (let j = 0; j != 2; ++j) {
rewards.splice(rewardIndex, 1); const rewardIndex = rng.randomInt(0, rewards.length - 1);
events.push({ type: "CET_REWARD", reward: rewards[rewardIndex] });
rewards.splice(rewardIndex, 1);
}
//logger.debug(`trying to fit a reward between day ${rewardRanges[i]} and ${rewardRanges[i + 1]}`); //logger.debug(`trying to fit rewards between day ${rewardRanges[i]} and ${rewardRanges[i + 1]}`);
let day: number; let day: number;
do { do {
day = rng.randomInt(rewardRanges[i] + 1, rewardRanges[i + 1] - 1); day = rng.randomInt(rewardRanges[i] + 1, rewardRanges[i + 1] - 1);
} while (eventDays.find(x => x.day == day)); } while (eventDays.find(x => x.day == day));
eventDays.push({ day, events: [{ type: "CET_REWARD", reward }] }); eventDays.push({ day, events });
} }
const upgrades = [ const upgrades = [
@ -625,16 +629,19 @@ const getCalendarSeason = (week: number): ICalendarSeason => {
"/Lotus/Upgrades/Calendar/ElectricalDamageOnBulletJump" "/Lotus/Upgrades/Calendar/ElectricalDamageOnBulletJump"
]; ];
for (let i = 0; i != upgradeRanges.length - 1; ++i) { for (let i = 0; i != upgradeRanges.length - 1; ++i) {
const upgradeIndex = rng.randomInt(0, upgrades.length - 1); const events: ICalendarEvent[] = [];
const upgrade = upgrades[upgradeIndex]; for (let j = 0; j != 3; ++j) {
upgrades.splice(upgradeIndex, 1); const upgradeIndex = rng.randomInt(0, upgrades.length - 1);
events.push({ type: "CET_UPGRADE", upgrade: upgrades[upgradeIndex] });
upgrades.splice(upgradeIndex, 1);
}
//logger.debug(`trying to fit an upgrade between day ${upgradeRanges[i]} and ${upgradeRanges[i + 1]}`); //logger.debug(`trying to fit upgrades between day ${upgradeRanges[i]} and ${upgradeRanges[i + 1]}`);
let day: number; let day: number;
do { do {
day = rng.randomInt(upgradeRanges[i] + 1, upgradeRanges[i + 1] - 1); day = rng.randomInt(upgradeRanges[i] + 1, upgradeRanges[i + 1] - 1);
} while (eventDays.find(x => x.day == day)); } while (eventDays.find(x => x.day == day));
eventDays.push({ day, events: [{ type: "CET_UPGRADE", upgrade }] }); eventDays.push({ day, events });
} }
eventDays.sort((a, b) => a.day - b.day); eventDays.sort((a, b) => a.day - b.day);