91 lines
2.3 KiB
TypeScript
91 lines
2.3 KiB
TypeScript
import z from "zod"
|
|
|
|
function blitzKitPlayedStats() {
|
|
const ids = [
|
|
"arachnologist",
|
|
"archer",
|
|
"armorer",
|
|
"astronaut",
|
|
"baker",
|
|
"blaze",
|
|
"creepertamer",
|
|
"diver",
|
|
"donkeytamer",
|
|
"farmer",
|
|
"fisherman",
|
|
"florist",
|
|
"golem",
|
|
"guardian",
|
|
"horsetamer",
|
|
"hunter",
|
|
"hype train",
|
|
"jockey",
|
|
"knight",
|
|
"meatmaster",
|
|
"milkman",
|
|
"necromancer",
|
|
"paladin",
|
|
"phoenix",
|
|
"pigman",
|
|
"ranger",
|
|
"reaper",
|
|
"reddragon",
|
|
"rogue",
|
|
"scout",
|
|
"shadow knight",
|
|
"shark",
|
|
"slimeyslime",
|
|
"snowman",
|
|
"speleologist",
|
|
"tim",
|
|
"toxicologist",
|
|
"troll",
|
|
"viking",
|
|
"warlock",
|
|
"warrior",
|
|
"wolftamer"
|
|
] as const
|
|
|
|
const stats = [
|
|
"wins",
|
|
"wins_teams",
|
|
"time_played",
|
|
"exp",
|
|
"kills",
|
|
"games_played"
|
|
] as const
|
|
|
|
const entries = new Map<string, z.ZodDefault<z.ZodNumber>>()
|
|
const kits = new Map<string, z.ZodDefault<z.ZodNumber>>()
|
|
const prestiges = new Map<string, z.ZodDefault<z.ZodNumber>>()
|
|
|
|
for (const id of ids) {
|
|
for (const stat of stats) {
|
|
entries.set(`${stat}_${id}`, z.number().default(0))
|
|
kits.set(`${id}`, z.number().default(-1))
|
|
prestiges.set(`p${id}`, z.number().default(0))
|
|
}
|
|
}
|
|
|
|
return {
|
|
stats: Object.fromEntries(entries) as Record<`${typeof stats[number]}_${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>,
|
|
kits: Object.fromEntries(kits) as Record<`${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>,
|
|
prestiges: Object.fromEntries(prestiges) as Record<`p${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>
|
|
}
|
|
}
|
|
|
|
export const blitzStatsSchema = z.object({
|
|
kills: z.number().default(0),
|
|
deaths: z.number().default(0),
|
|
kills_solo_normal: z.number().default(0),
|
|
kills_teams_normal: z.number().default(0),
|
|
wins_solo_normal: z.number().default(0),
|
|
wins_teams_normal: z.number().default(0),
|
|
coins: z.number().default(0),
|
|
damage: z.number().default(0),
|
|
damage_taken: z.number().default(0),
|
|
...blitzKitPlayedStats().stats,
|
|
...blitzKitPlayedStats().kits,
|
|
...blitzKitPlayedStats().prestiges
|
|
})
|