From 657502dcaace76ad512eef08999bc45b89ed0f9a Mon Sep 17 00:00:00 2001 From: Cody <36463298+ugcodrr@users.noreply.github.com> Date: Wed, 21 Oct 2026 15:39:14 -0400 Subject: [PATCH 1/3] fix(schemas): remove Zombies' overall fastest win and its leaderboard Zombies as a whole has no fastest win, only each map's. Zombies.overall was a ZombiesMapDifficulty built without a map, so it stored Hypixel's fastest_time_30_zombies, which isn't the fastest of the maps' wins, and ranked it on its own leaderboard and as the extra column of the Overall Wins leaderboard. Zombies.overall is now a ZombiesOverall with the same fields minus fastestWin, so that leaderboard goes away and Overall Wins has no extra column. Each map's overall fastest win, the fastest of its difficulties, is unchanged, and so is Alien Arcadium's. --- .../src/player/gamemodes/arcade/mode.ts | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/packages/schemas/src/player/gamemodes/arcade/mode.ts b/packages/schemas/src/player/gamemodes/arcade/mode.ts index e2dd5a1a2..f93d245f1 100644 --- a/packages/schemas/src/player/gamemodes/arcade/mode.ts +++ b/packages/schemas/src/player/gamemodes/arcade/mode.ts @@ -1436,9 +1436,40 @@ export class ZombiesMap { } } +// Zombies across every map. There's no fastest win here: Hypixel's fastest_time_30_zombies isn't +// the fastest of the maps' wins, and each map's overall already has its own +export class ZombiesOverall { + @Field({ historical: { enabled: false } }) + public wins: number; + + @Field({ leaderboard: { enabled: false } }) + public kills: number; + + @Field({ leaderboard: { enabled: false } }) + public deaths: number; + + @Field({ leaderboard: { enabled: false } }) + public bestRound: number; + + @Field() + public doorsOpened: number; + + @Field() + public totalRounds: number; + + public constructor(data: APIData) { + this.wins = data.wins_zombies; + this.kills = data.zombie_kills_zombies; + this.deaths = data.deaths_zombies; + this.bestRound = data.best_round_zombies; + this.doorsOpened = data.doors_opened_zombies; + this.totalRounds = data.total_rounds_survived_zombies; + } +} + export class Zombies { @Field() - public overall: ZombiesMapDifficulty; + public overall: ZombiesOverall; @Field() public deadEnd: ZombiesMap; @@ -1453,7 +1484,7 @@ export class Zombies { public prison: ZombiesMap; public constructor(data: APIData) { - this.overall = new ZombiesMapDifficulty(data); + this.overall = new ZombiesOverall(data); this.deadEnd = new ZombiesMap(data, "deadend"); this.badBlood = new ZombiesMap(data, "badblood"); From e4cc892b5937232fa8af986038043e6401594b3c Mon Sep 17 00:00:00 2001 From: Robert <36463298+ugcodrr@users.noreply.github.com> Date: Wed, 21 Oct 2026 16:32:42 -0400 Subject: [PATCH 2/3] Remove outdated comment on zombies overall wins Removed comment about fastest win for zombies across maps. --- packages/schemas/src/player/gamemodes/arcade/mode.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/schemas/src/player/gamemodes/arcade/mode.ts b/packages/schemas/src/player/gamemodes/arcade/mode.ts index f93d245f1..f3332c612 100644 --- a/packages/schemas/src/player/gamemodes/arcade/mode.ts +++ b/packages/schemas/src/player/gamemodes/arcade/mode.ts @@ -1436,8 +1436,6 @@ export class ZombiesMap { } } -// Zombies across every map. There's no fastest win here: Hypixel's fastest_time_30_zombies isn't -// the fastest of the maps' wins, and each map's overall already has its own export class ZombiesOverall { @Field({ historical: { enabled: false } }) public wins: number; From 0e9a6280208513315e02e43834f99e64ea0eb4bf Mon Sep 17 00:00:00 2001 From: Cody <36463298+ugcodrr@users.noreply.github.com> Date: Thu, 22 Oct 2026 00:24:56 -0400 Subject: [PATCH 3/3] refactor(schemas): require a map for Zombies map stats --- packages/schemas/src/player/gamemodes/arcade/mode.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/schemas/src/player/gamemodes/arcade/mode.ts b/packages/schemas/src/player/gamemodes/arcade/mode.ts index f3332c612..3e5369cd5 100644 --- a/packages/schemas/src/player/gamemodes/arcade/mode.ts +++ b/packages/schemas/src/player/gamemodes/arcade/mode.ts @@ -1392,8 +1392,8 @@ export class ZombiesMapDifficulty { @Field() public totalRounds: number; - public constructor(data: APIData, map?: string, difficulty?: string) { - const mode = map ? `_${map}${difficulty ? `_${difficulty}` : ""}` : ""; + public constructor(data: APIData, map: string, difficulty?: string) { + const mode = `_${map}${difficulty ? `_${difficulty}` : ""}`; this.wins = data[`wins_zombies${mode}`]; this.fastestWin = (data[`fastest_time_30_zombies${mode}`] ?? 0) * 1000; @@ -1418,7 +1418,7 @@ export class ZombiesMap { @Field() public overall: ZombiesMapDifficulty; - public constructor(data: APIData, map?: string) { + public constructor(data: APIData, map: string) { this.normal = new ZombiesMapDifficulty(data, map, "normal"); this.hard = new ZombiesMapDifficulty(data, map, "hard"); this.rip = new ZombiesMapDifficulty(data, map, "rip");