From 93bde7497367f8f93e1614cf8b3388cb3feb5a5c Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Tue, 13 Oct 2026 12:40:41 +0200 Subject: [PATCH] fix(games): roll Stella Sora's day at 13:00 UTC-7 for every region One worldwide server on a fixed UTC-7 resetting at 13:00 (20:00 UTC); the app used the regional default. Source: Game-Time-Master, which lists the zone as fixed rather than Pacific. Re-labels the game-day of some already-logged ticks. Co-Authored-By: Claude Opus 5.5 --- src/shared/games.ts | 16 +++++++--------- test/daily.test.ts | 3 +++ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/shared/games.ts b/src/shared/games.ts index efcbb3a..52efe1d 100644 --- a/src/shared/games.ts +++ b/src/shared/games.ts @@ -134,15 +134,13 @@ export const GAMES: Record = { // is a patch window, not a reset hour. So this game takes the regional // default until something states its server clock outright. gfl2: { id: "gfl2", name: "Girls' Frontline 2: Exilium", short: "GFL2", hue: "#A9C23F", studio: "Sunborn", dailyTasks: "Daily missions" }, - // No `resetOffsets`, and this is the Fate/Grand Order gap rather than the - // Blue Archive one: the source states an offset on every boundary, and the - // offset it states is `-07:00` in August. That is US Pacific in summer, which - // means it is `-08:00` in winter — one fixed number is wrong for half the year - // in either direction, and `resetOffsets` holds one fixed number. The page - // also never lands its boundaries on a single local hour (20:00 and 21:00 - // starts, 12:59 and 19:59 ends), so there is no reset hour to read off it - // either. See the fgo entry below for the same reasoning at more length. - stellasora: { id: "stellasora", name: "Stella Sora", short: "Stella Sora", hue: "#2E9E9E", studio: "Yostar", dailyTasks: "Daily missions" }, + // Stella Sora runs one worldwide server on a fixed UTC-7 that rolls its day + // at 13:00 — 20:00 UTC — per Game-Time-Master (github.com/cicerakes/Game-Time-Master). + // That settles what the source alone could not: it prints `-07:00` on every + // boundary, which read like US Pacific in summer (the Fate/Grand Order gap), + // and never landed its boundaries on one local hour. Game-Time-Master lists + // the zone as fixed (`Etc/GMT+7`), so one number holds all year. + stellasora: { id: "stellasora", name: "Stella Sora", short: "Stella Sora", hue: "#2E9E9E", studio: "Yostar", dailyTasks: "Daily missions", resetOffsets: { asia: -7, america: -7, europe: -7 }, resetHourLocal: { asia: 13, america: 13, europe: 13 } }, // Chaos Zero Nightmare runs one worldwide server whose day rolls at 18:00 UTC, // per Game-Time-Master (github.com/cicerakes/Game-Time-Master); GameWith's // guide states the same instant in UTC. The source is Game8 prose with no diff --git a/test/daily.test.ts b/test/daily.test.ts index 26f731e..82156aa 100644 --- a/test/daily.test.ts +++ b/test/daily.test.ts @@ -520,6 +520,9 @@ describe("reset clocks, per server, as Game-Time-Master states them", () => { ["pgr", "asia", "05:00", 0], ["pgr", "america", "05:00", 0], ["pgr", "europe", "05:00", 0], + ["stellasora", "asia", "20:00", -7], + ["stellasora", "america", "20:00", -7], + ["stellasora", "europe", "20:00", -7], ]; for (const [game, region, utc, offset] of ROWS) {