resetWeek(): void { const now = new Date(); const newWeekKey = WRank.weekKey(now); const prevWeekKey = WRank.weekKey(new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)); // Access internal data via WRank const prevWeek = WRank.weekFromKey(prevWeekKey); const newWeek = WRank.currentWeek(); // ensures new week exists if (prevWeek) { const goal = Config.get({ section: "wrank", key: "goal" }); for (const nation of [Nation.Capella, Nation.Procyon]) { const entries = prevWeek.entries[nation]; const rank1 = entries.find((e) => e.currentRank === 1); // Rank 1 with >= goal TGs becomes Bringer — no exceptions // Officers use Bringer.override() for manual adjustments if (rank1 && rank1.tgCount >= goal) { newWeek.bringer[nation] = rank1.characterName; } else { newWeek.bringer[nation] = null; } // Overrides do NOT carry forward — each week starts clean delete (newWeek.bringer as any)[`${nation}Override`]; } } WRank.save(); console.log(`[TG] Week reset to ${newWeekKey}. Bringer:`, newWeek.bringer); },