fix: some problems with 1999 calendar rotation #1829
@ -7,6 +7,7 @@ import { CRng } from "@/src/services/rngService";
 | 
			
		||||
import { eMissionType, ExportNightwave, ExportRegions, IRegion } from "warframe-public-export-plus";
 | 
			
		||||
import {
 | 
			
		||||
    ICalendarDay,
 | 
			
		||||
    ICalendarEvent,
 | 
			
		||||
    ICalendarSeason,
 | 
			
		||||
    ILiteSortie,
 | 
			
		||||
    ISeasonChallenge,
 | 
			
		||||
@ -464,8 +465,8 @@ const birthdays: number[] = [
 | 
			
		||||
 | 
			
		||||
const getCalendarSeason = (week: number): ICalendarSeason => {
 | 
			
		||||
    const seasonIndex = week % 4;
 | 
			
		||||
    const seasonDay1 = seasonIndex * 90 + 1;
 | 
			
		||||
    const seasonDay91 = seasonIndex * 90 + 91;
 | 
			
		||||
    const seasonDay1 = [1, 91, 182, 274][seasonIndex];
 | 
			
		||||
    const seasonDay91 = seasonDay1 + 90;
 | 
			
		||||
    const eventDays: ICalendarDay[] = [];
 | 
			
		||||
    for (const day of birthdays) {
 | 
			
		||||
        if (day < seasonDay1) {
 | 
			
		||||
@ -572,16 +573,19 @@ const getCalendarSeason = (week: number): ICalendarSeason => {
 | 
			
		||||
        "/Lotus/StoreItems/Types/Gameplay/NarmerSorties/ArchonCrystalViolet"
 | 
			
		||||
    ];
 | 
			
		||||
    for (let i = 0; i != rewardRanges.length - 1; ++i) {
 | 
			
		||||
        const events: ICalendarEvent[] = [];
 | 
			
		||||
        for (let j = 0; j != 2; ++j) {
 | 
			
		||||
            const rewardIndex = rng.randomInt(0, rewards.length - 1);
 | 
			
		||||
        const reward = rewards[rewardIndex];
 | 
			
		||||
            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;
 | 
			
		||||
        do {
 | 
			
		||||
            day = rng.randomInt(rewardRanges[i] + 1, rewardRanges[i + 1] - 1);
 | 
			
		||||
        } while (eventDays.find(x => x.day == day));
 | 
			
		||||
        eventDays.push({ day, events: [{ type: "CET_REWARD", reward }] });
 | 
			
		||||
        eventDays.push({ day, events });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const upgrades = [
 | 
			
		||||
@ -625,16 +629,19 @@ const getCalendarSeason = (week: number): ICalendarSeason => {
 | 
			
		||||
        "/Lotus/Upgrades/Calendar/ElectricalDamageOnBulletJump"
 | 
			
		||||
    ];
 | 
			
		||||
    for (let i = 0; i != upgradeRanges.length - 1; ++i) {
 | 
			
		||||
        const events: ICalendarEvent[] = [];
 | 
			
		||||
        for (let j = 0; j != 3; ++j) {
 | 
			
		||||
            const upgradeIndex = rng.randomInt(0, upgrades.length - 1);
 | 
			
		||||
        const upgrade = upgrades[upgradeIndex];
 | 
			
		||||
            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;
 | 
			
		||||
        do {
 | 
			
		||||
            day = rng.randomInt(upgradeRanges[i] + 1, upgradeRanges[i + 1] - 1);
 | 
			
		||||
        } 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);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user