Finished bw stats table

This commit is contained in:
2025-08-21 23:26:17 +02:00
parent b222fb1f60
commit b9959e86b7
4 changed files with 248 additions and 20 deletions

17
src/lib/funcs.ts Normal file
View File

@@ -0,0 +1,17 @@
export function concatStatArrays(...arrays: number[][]) {
if (arrays.length === 0) return []
const indexes = [2, 5, 8]
const result = arrays[0].map((v, index) => {
if (v < 0) return "?"
if (indexes.includes(index) || index === arrays[0].length - 1) {
return arrays.reduce((sum, array) => sum + array[index], 0) / arrays.length
}
return arrays.reduce((sum, array) => sum + array[index], 0)
})
return result
}

View File

@@ -127,38 +127,44 @@ export function getBedwarsModeStats(mode: Mode, stats: _BedwarsStats, raw = fals
}
}
function devide(num: number, num2: number) {
if (num2 === 0) return num
return num / num2
}
function bedwarsModeStats(prefix: string, stats: _BedwarsStats, raw = false) {
if (raw) {
return [
stats[`${prefix}_kills_bedwars`],
stats[`${prefix}_deaths_bedwars`],
stats[`${prefix}_kills_bedwars`] / stats[`${prefix}_deaths_bedwars`],
devide(stats[`${prefix}_kills_bedwars`], stats[`${prefix}_deaths_bedwars`]),
stats[`${prefix}_final_kills_bedwars`],
stats[`${prefix}_final_deaths_bedwars`],
stats[`${prefix}_final_kills_bedwars`] / stats[`${prefix}_final_deaths_bedwars`],
devide(stats[`${prefix}_final_kills_bedwars`], stats[`${prefix}_final_deaths_bedwars`]),
stats[`${prefix}_wins_bedwars`],
stats[`${prefix}_losses_bedwars`],
stats[`${prefix}_wins_bedwars`] / stats[`${prefix}_losses_bedwars`],
devide(stats[`${prefix}_wins_bedwars`], stats[`${prefix}_losses_bedwars`]),
stats[`${prefix}_winstreak`] ?? -1,
stats[`${prefix}_beds_broken_bedwars`],
stats[`${prefix}_beds_lost_bedwars`],
stats[`${prefix}_beds_broken_bedwars`] / stats[`${prefix}_beds_lost_bedwars`]
devide(stats[`${prefix}_beds_broken_bedwars`], stats[`${prefix}_beds_lost_bedwars`])
]
}
return [
stats[`${prefix}_kills_bedwars`],
stats[`${prefix}_deaths_bedwars`],
(stats[`${prefix}_kills_bedwars`] / stats[`${prefix}_deaths_bedwars`]).toFixed(2),
devide(stats[`${prefix}_kills_bedwars`], stats[`${prefix}_deaths_bedwars`]).toFixed(2),
stats[`${prefix}_final_kills_bedwars`],
stats[`${prefix}_final_deaths_bedwars`],
(stats[`${prefix}_final_kills_bedwars`] / stats[`${prefix}_final_deaths_bedwars`]).toFixed(2),
devide(stats[`${prefix}_final_kills_bedwars`], stats[`${prefix}_final_deaths_bedwars`]).toFixed(2),
stats[`${prefix}_wins_bedwars`],
stats[`${prefix}_losses_bedwars`],
(stats[`${prefix}_wins_bedwars`] / stats[`${prefix}_losses_bedwars`]).toFixed(2),
devide(stats[`${prefix}_wins_bedwars`], stats[`${prefix}_losses_bedwars`]).toFixed(2),
stats[`${prefix}_winstreak`] ?? "?",
stats[`${prefix}_beds_broken_bedwars`],
stats[`${prefix}_beds_lost_bedwars`],
(stats[`${prefix}_beds_broken_bedwars`] / stats[`${prefix}_beds_lost_bedwars`]).toFixed(2)
devide(stats[`${prefix}_beds_broken_bedwars`], stats[`${prefix}_beds_lost_bedwars`]).toFixed(2)
]
}

View File

@@ -36,7 +36,169 @@ export const playerSchema = z.looseObject({
total_tickets_earned: z.number(),
doublers: z.number(),
room: z.record(z.string(), z.boolean())
}).optional()
}).optional(),
eight_one_winstreak: z.number().optional(),
eight_one_kills_bedwars: z.number().default(0),
eight_one_deaths_bedwars: z.number().default(0),
eight_one_final_kills_bedwars: z.number().default(0),
eight_one_final_deaths_bedwars: z.number().default(0),
eight_one_wins_bedwars: z.number().default(0),
eight_one_losses_bedwars: z.number().default(0),
eight_one_beds_broken_bedwars: z.number().default(0),
eight_one_beds_lost_bedwars: z.number().default(0),
eight_two_winstreak: z.number().optional(),
eight_two_kills_bedwars: z.number().default(0),
eight_two_deaths_bedwars: z.number().default(0),
eight_two_final_kills_bedwars: z.number().default(0),
eight_two_final_deaths_bedwars: z.number().default(0),
eight_two_wins_bedwars: z.number().default(0),
eight_two_losses_bedwars: z.number().default(0),
eight_two_beds_broken_bedwars: z.number().default(0),
eight_two_beds_lost_bedwars: z.number().default(0),
four_three_winstreak: z.number().optional(),
four_three_kills_bedwars: z.number().default(0),
four_three_deaths_bedwars: z.number().default(0),
four_three_final_kills_bedwars: z.number().default(0),
four_three_final_deaths_bedwars: z.number().default(0),
four_three_wins_bedwars: z.number().default(0),
four_three_losses_bedwars: z.number().default(0),
four_three_beds_broken_bedwars: z.number().default(0),
four_three_beds_lost_bedwars: z.number().default(0),
four_four_winstreak: z.number().optional(),
four_four_kills_bedwars: z.number().default(0),
four_four_deaths_bedwars: z.number().default(0),
four_four_final_kills_bedwars: z.number().default(0),
four_four_final_deaths_bedwars: z.number().default(0),
four_four_wins_bedwars: z.number().default(0),
four_four_losses_bedwars: z.number().default(0),
four_four_beds_broken_bedwars: z.number().default(0),
four_four_beds_lost_bedwars: z.number().default(0),
two_four_winstreak: z.number().optional(),
two_four_kills_bedwars: z.number().default(0),
two_four_deaths_bedwars: z.number().default(0),
two_four_final_kills_bedwars: z.number().default(0),
two_four_final_deaths_bedwars: z.number().default(0),
two_four_wins_bedwars: z.number().default(0),
two_four_losses_bedwars: z.number().default(0),
two_four_beds_broken_bedwars: z.number().default(0),
two_four_beds_lost_bedwars: z.number().default(0),
eight_two_rush_winstreak: z.number().optional(),
eight_two_rush_kills_bedwars: z.number().default(0),
eight_two_rush_deaths_bedwars: z.number().default(0),
eight_two_rush_final_kills_bedwars: z.number().default(0),
eight_two_rush_final_deaths_bedwars: z.number().default(0),
eight_two_rush_wins_bedwars: z.number().default(0),
eight_two_rush_losses_bedwars: z.number().default(0),
eight_two_rush_beds_broken_bedwars: z.number().default(0),
eight_two_rush_beds_lost_bedwars: z.number().default(0),
four_four_rush_winstreak: z.number().optional(),
four_four_rush_kills_bedwars: z.number().default(0),
four_four_rush_deaths_bedwars: z.number().default(0),
four_four_rush_final_kills_bedwars: z.number().default(0),
four_four_rush_final_deaths_bedwars: z.number().default(0),
four_four_rush_wins_bedwars: z.number().default(0),
four_four_rush_losses_bedwars: z.number().default(0),
four_four_rush_beds_broken_bedwars: z.number().default(0),
four_four_rush_beds_lost_bedwars: z.number().default(0),
eight_two_ultimate_winstreak: z.number().optional(),
eight_two_ultimate_kills_bedwars: z.number().default(0),
eight_two_ultimate_deaths_bedwars: z.number().default(0),
eight_two_ultimate_final_kills_bedwars: z.number().default(0),
eight_two_ultimate_final_deaths_bedwars: z.number().default(0),
eight_two_ultimate_wins_bedwars: z.number().default(0),
eight_two_ultimate_losses_bedwars: z.number().default(0),
eight_two_ultimate_beds_broken_bedwars: z.number().default(0),
eight_two_ultimate_beds_lost_bedwars: z.number().default(0),
four_four_ultimate_winstreak: z.number().optional(),
four_four_ultimate_kills_bedwars: z.number().default(0),
four_four_ultimate_deaths_bedwars: z.number().default(0),
four_four_ultimate_final_kills_bedwars: z.number().default(0),
four_four_ultimate_final_deaths_bedwars: z.number().default(0),
four_four_ultimate_wins_bedwars: z.number().default(0),
four_four_ultimate_losses_bedwars: z.number().default(0),
four_four_ultimate_beds_broken_bedwars: z.number().default(0),
four_four_ultimate_beds_lost_bedwars: z.number().default(0),
eight_two_lucky_winstreak: z.number().optional(),
eight_two_lucky_kills_bedwars: z.number().default(0),
eight_two_lucky_deaths_bedwars: z.number().default(0),
eight_two_lucky_final_kills_bedwars: z.number().default(0),
eight_two_lucky_final_deaths_bedwars: z.number().default(0),
eight_two_lucky_wins_bedwars: z.number().default(0),
eight_two_lucky_losses_bedwars: z.number().default(0),
eight_two_lucky_beds_broken_bedwars: z.number().default(0),
eight_two_lucky_beds_lost_bedwars: z.number().default(0),
four_four_lucky_winstreak: z.number().optional(),
four_four_lucky_kills_bedwars: z.number().default(0),
four_four_lucky_deaths_bedwars: z.number().default(0),
four_four_lucky_final_kills_bedwars: z.number().default(0),
four_four_lucky_final_deaths_bedwars: z.number().default(0),
four_four_lucky_wins_bedwars: z.number().default(0),
four_four_lucky_losses_bedwars: z.number().default(0),
four_four_lucky_beds_broken_bedwars: z.number().default(0),
four_four_lucky_beds_lost_bedwars: z.number().default(0),
eight_two_voidless_winstreak: z.number().optional(),
eight_two_voidless_kills_bedwars: z.number().default(0),
eight_two_voidless_deaths_bedwars: z.number().default(0),
eight_two_voidless_final_kills_bedwars: z.number().default(0),
eight_two_voidless_final_deaths_bedwars: z.number().default(0),
eight_two_voidless_wins_bedwars: z.number().default(0),
eight_two_voidless_losses_bedwars: z.number().default(0),
eight_two_voidless_beds_broken_bedwars: z.number().default(0),
eight_two_voidless_beds_lost_bedwars: z.number().default(0),
four_four_voidless_winstreak: z.number().optional(),
four_four_voidless_kills_bedwars: z.number().default(0),
four_four_voidless_deaths_bedwars: z.number().default(0),
four_four_voidless_final_kills_bedwars: z.number().default(0),
four_four_voidless_final_deaths_bedwars: z.number().default(0),
four_four_voidless_wins_bedwars: z.number().default(0),
four_four_voidless_losses_bedwars: z.number().default(0),
four_four_voidless_beds_broken_bedwars: z.number().default(0),
four_four_voidless_beds_lost_bedwars: z.number().default(0),
eight_two_armed_winstreak: z.number().optional(),
eight_two_armed_kills_bedwars: z.number().default(0),
eight_two_armed_deaths_bedwars: z.number().default(0),
eight_two_armed_final_kills_bedwars: z.number().default(0),
eight_two_armed_final_deaths_bedwars: z.number().default(0),
eight_two_armed_wins_bedwars: z.number().default(0),
eight_two_armed_losses_bedwars: z.number().default(0),
eight_two_armed_beds_broken_bedwars: z.number().default(0),
eight_two_armed_beds_lost_bedwars: z.number().default(0),
four_four_armed_winstreak: z.number().optional(),
four_four_armed_kills_bedwars: z.number().default(0),
four_four_armed_deaths_bedwars: z.number().default(0),
four_four_armed_final_kills_bedwars: z.number().default(0),
four_four_armed_final_deaths_bedwars: z.number().default(0),
four_four_armed_wins_bedwars: z.number().default(0),
four_four_armed_losses_bedwars: z.number().default(0),
four_four_armed_beds_broken_bedwars: z.number().default(0),
four_four_armed_beds_lost_bedwars: z.number().default(0),
four_four_swap_winstreak: z.number().optional(),
four_four_swap_kills_bedwars: z.number().default(0),
four_four_swap_deaths_bedwars: z.number().default(0),
four_four_swap_final_kills_bedwars: z.number().default(0),
four_four_swap_final_deaths_bedwars: z.number().default(0),
four_four_swap_wins_bedwars: z.number().default(0),
four_four_swap_losses_bedwars: z.number().default(0),
four_four_swap_beds_broken_bedwars: z.number().default(0),
four_four_swap_beds_lost_bedwars: z.number().default(0),
four_four_underworld_winstreak: z.number().optional(),
four_four_underworld_kills_bedwars: z.number().default(0),
four_four_underworld_deaths_bedwars: z.number().default(0),
four_four_underworld_final_kills_bedwars: z.number().default(0),
four_four_underworld_final_deaths_bedwars: z.number().default(0),
four_four_underworld_wins_bedwars: z.number().default(0),
four_four_underworld_losses_bedwars: z.number().default(0),
four_four_underworld_beds_broken_bedwars: z.number().default(0),
four_four_underworld_beds_lost_bedwars: z.number().default(0),
castle_winstreak: z.number().optional(),
castle_kills_bedwars: z.number().default(0),
castle_deaths_bedwars: z.number().default(0),
castle_final_kills_bedwars: z.number().default(0),
castle_final_deaths_bedwars: z.number().default(0),
castle_wins_bedwars: z.number().default(0),
castle_losses_bedwars: z.number().default(0),
castle_beds_broken_bedwars: z.number().default(0),
castle_beds_lost_bedwars: z.number().default(0)
}).optional()
}),
quests: z.record(