diff --git a/src/ingest/parsers/game8.ts b/src/ingest/parsers/game8.ts index cd80b44..f5f0489 100644 --- a/src/ingest/parsers/game8.ts +++ b/src/ingest/parsers/game8.ts @@ -373,7 +373,11 @@ function parseRange( export function inferType(title: string): EventType { const t = title.toLowerCase(); if (/\brerun\b/.test(t)) return "rerun"; - if (/\b(banner|wish|warp|convene|gacha)\b/.test(t)) return "banner"; + // Every game names its gacha something else — "Summoning Campaign" is the + // Fate/Grand Order one, and it is the whole of that page's banner vocabulary. + if (/\b(banner|wish|warp|convene|gacha|summon(?:ing)?)\b/.test(t)) { + return "banner"; + } if (/\b(login|log-in|sign-in|check-in|daily bonus)\b/.test(t)) return "login"; if (/\b(challenge|trial|onslaught|abyss|tower|test runs?|clash|combat)\b/.test(t)) return "challenge"; diff --git a/test/adapters/game8.test.ts b/test/adapters/game8.test.ts index 4a8f946..2d7af4d 100644 --- a/test/adapters/game8.test.ts +++ b/test/adapters/game8.test.ts @@ -178,6 +178,7 @@ describe("inferType", () => { ["Gold Clash", "challenge"], ["Seize the Day Login Bonus", "login"], ["Epitome Invocation Banner", "banner"], + ["Chaldea Boys Collection Summoning Campaign", "banner"], ["Mutual Aid in Bloom: Into the Frostlands", "other"], ]; test.each(cases)("%s → %s", (title, expected) => {