fix(routines): Ridu Weekly tops out at 2,100 points, not 1,300

The wiki recorded 2,100 on 2026-01-05 and the owner confirmed it in game;
Game8's page still says 1,300. Same id, so logged numbers are kept — a week
logged at 1,300 now reads 1,300 of 2,100.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Lucas Winther
2026-10-16 03:00:31 +02:00
co-authored by Claude Opus 5.5
parent cd52641d88
commit 387fc1d2e4
4 changed files with 15 additions and 13 deletions
+7 -5
View File
@@ -181,11 +181,13 @@ export const ROUTINES: readonly Routine[] = [
game: "zzz",
title: "Ridu Weekly",
period: { unit: "week", startsOn: 1 },
// The last milestone; every reward is claimed by then.
measure: { kind: "amount", target: 1300, unit: "points" },
source: "https://game8.co/games/Zenless-Zone-Zero/archives/484723",
asOf: "2025-12-02",
checked: "2026-10-13",
// The last milestone; every reward is claimed by then. Was 1,300 until the
// wiki recorded 2,100 on 2026-01-05 — Game8's page still says 1,300.
measure: { kind: "amount", target: 2100, unit: "points" },
source: "https://zenless-zone-zero.fandom.com/wiki/Ridu_Weekly",
asOf: "2026-08-31",
checked: "2026-10-14",
note: "Confirmed in game, 2026-10-16.",
},
// Arknights: Endfield.
+2 -2
View File
@@ -1333,8 +1333,8 @@ describe("built-in weekly and monthly tasks in Your own", () => {
routines={routinesFor("zzz")} onMakeItMine={noop} />,
);
expect(html).toContain("Ridu Weekly");
expect(html).toContain("as of 2 Dec 2025");
expect(html).toContain('href="https://game8.co/games/Zenless-Zone-Zero/archives/484723"');
expect(html).toContain("as of 31 Aug 2026");
expect(html).toContain('href="https://zenless-zone-zero.fandom.com/wiki/Ridu_Weekly"');
expect(html).toContain("Make it mine");
});
+3 -3
View File
@@ -69,7 +69,7 @@ describe("ROUTINES", () => {
["Embers Exchange: Star Rail Special Pass", { unit: "month", startsOn: 1 }, { kind: "amount", target: 5, unit: "passes" }],
]);
expect(shape("zzz")).toEqual([
["Ridu Weekly", week, { kind: "amount", target: 1300, unit: "points" }],
["Ridu Weekly", week, { kind: "amount", target: 2100, unit: "points" }],
]);
expect(shape("endfield")).toEqual([
["Weekly Routine", week, { kind: "amount", target: 10, unit: "points" }],
@@ -85,7 +85,7 @@ describe("ROUTINES", () => {
now: Date.parse("2026-10-15T12:00:00Z"), logged: [],
amounts: { "2026-10-12": { value: 900, at: "2026-10-15T12:00:00.000Z" } },
});
expect(s).toMatchObject({ scope: "week", count: 900, required: 1300 });
expect(s).toMatchObject({ scope: "week", count: 900, required: 2100 });
});
});
@@ -239,7 +239,7 @@ describe("making a built-in your own", () => {
const ridu = routinesFor("zzz")[0]!;
expect(mineFrom(ridu)).toEqual({
game: "zzz", title: "Ridu Weekly", period: { unit: "week", startsOn: 1 },
measure: { kind: "amount", target: 1300, unit: "points" }, from: "routine:zzz:ridu-weekly",
measure: { kind: "amount", target: 2100, unit: "points" }, from: "routine:zzz:ridu-weekly",
});
});
});
+3 -3
View File
@@ -1499,15 +1499,15 @@ describe("built-in weekly and monthly tasks in the strip", () => {
const NOW = Date.parse("2026-10-15T12:00:00.000Z");
const ridu = routinesFor("zzz")[0]!;
const status: GoalStatus = {
scope: "week", measure: "amount", periodStart: "2026-10-12", required: 1300, count: 0,
met: false, needed: 1300, open: 4, shortfall: false,
scope: "week", measure: "amount", periodStart: "2026-10-12", required: 2100, count: 0,
met: false, needed: 2100, open: 4, shortfall: false,
};
test("a routine draws like a task, and its tooltip says its source date", () => {
const [group] = dailyGroups(["zzz"], [], NOW, "europe", (id) => metaFor(id, {}),
(e) => Date.parse(e.startsAt), false, undefined, [ridu], () => status);
expect(group!.items[0]!.key).toBe("routine:zzz:ridu-weekly");
expect(group!.items[0]!.title).toContain("as of 2 Dec 2025");
expect(group!.items[0]!.title).toContain("as of 31 Aug 2026");
});
test("the question shows on its own, and names the game", () => {