Added tnt games stats

This commit is contained in:
2025-09-06 20:46:00 +02:00
parent 45b2ae1763
commit 24e07e092a
9 changed files with 288 additions and 2 deletions

View File

@@ -0,0 +1,18 @@
import { WIZARDS } from "@/data/hypixel/tnt-games"
import { NonNullStats } from "@/lib/schema/player"
import { devide } from "../general"
export function getTNTGameMode(id: typeof WIZARDS[number]["id"]) {
return WIZARDS.find(w => w.id === id)!
}
export function getTNTModeStats(id: typeof WIZARDS[number]["id"], stats: NonNullable<NonNullStats["TNTGames"]>) {
return [
stats[`new_${id}wizard_kills`],
stats[`new_${id}wizard_deaths`],
stats[`new_${id}wizard_assists`],
devide(stats[`new_${id}wizard_kills`], stats[`new_${id}wizard_deaths`]),
stats[`new_${id}wizard_explode`],
stats[`new_${id}wizard_regen`]
]
}

View File

@@ -6,6 +6,7 @@ import {
murderMysteryStatsSchema,
pitStats,
skywarsStatsSchema,
tntGamesStatsSchema,
uhcSchema
} from "./stats"
@@ -28,7 +29,8 @@ export const playerSchema = z.looseObject({
MurderMystery: murderMysteryStatsSchema.optional(),
BuildBattle: buildBattleStatsSchema.optional(),
UHC: uhcSchema.optional(),
Pit: pitStats.optional()
Pit: pitStats.optional(),
TNTGames: tntGamesStatsSchema.optional()
}).optional(),
quests: z.record(
z.string(),

View File

@@ -503,3 +503,53 @@ export const pitStats = z.looseObject({
...pit_stats_ptl,
...rest
}))
function tntGamesModeStats() {
const ids = [
"ancient",
"blood",
"fire",
"hydro",
"ice",
"kinetic",
"storm",
"toxic",
"wither"
] as const
const stats = [
"kills",
"deaths",
"assists",
"explode",
"regen"
] as const
const entries = new Map<string, z.ZodDefault<z.ZodNumber>>()
for (const id of ids) {
for (const stat of stats) {
entries.set(`new_${id}wizard_${stat}`, z.number().default(0))
}
}
return Object.fromEntries(entries) as Record<`new_${typeof ids[number]}wizard_${typeof stats[number]}`, z.ZodDefault<z.ZodNumber>>
}
export const tntGamesStatsSchema = z.looseObject({
wins: z.number().default(0),
coins: z.number().default(0),
kills_tntag: z.number().default(0),
wins_tntag: z.number().default(0),
wins_tntrun: z.number().default(0),
record_tntrun: z.number().default(0),
kills_pvprun: z.number().default(0),
wins_pvprun: z.number().default(0),
record_pvprun: z.number().default(0),
wins_bowspleef: z.number().default(0),
deaths_bowspleef: z.number().default(0),
wins_capture: z.number().default(0),
kills_capture: z.number().default(0),
deaths_capture: z.number().default(0),
...tntGamesModeStats()
})