From b308fe91eb25566244474335458993eef49414c4 Mon Sep 17 00:00:00 2001 From: Taken Date: Fri, 22 Aug 2025 21:54:29 +0200 Subject: [PATCH] Fixed bedwars --- src/lib/funcs.ts | 64 ++++++++++++++++++++++++++++++++------ src/lib/hypixel/bedwars.ts | 40 ++++++++++++++---------- 2 files changed, 78 insertions(+), 26 deletions(-) diff --git a/src/lib/funcs.ts b/src/lib/funcs.ts index ac15ba1..9589a71 100644 --- a/src/lib/funcs.ts +++ b/src/lib/funcs.ts @@ -1,17 +1,61 @@ -export function concatStatArrays(...arrays: number[][]) { - if (arrays.length === 0) return [] +import { BedwarsModeStats } from "./hypixel/bedwars" - const indexes = [2, 5, 8] +export function concatStatArrays(...stats: BedwarsModeStats[]) { + if (stats.length === 0) return [] - const result = arrays[0].map((v, index) => { - if (v < 0) return "?" + const base: BedwarsModeStats = { + kills_bedwars: 0, + deaths_bedwars: 0, + final_kills_bedwars: 0, + final_deaths_bedwars: 0, + wins_bedwars: 0, + losses_bedwars: 0, + winstreak: -1, + beds_broken_bedwars: 0, + beds_lost_bedwars: 0 + } - if (indexes.includes(index) || index === arrays[0].length - 1) { - return arrays.reduce((sum, array) => sum + array[index], 0) / arrays.length + for (const s of stats) { + base.kills_bedwars += s.kills_bedwars + base.deaths_bedwars += s.deaths_bedwars + base.final_kills_bedwars += s.final_kills_bedwars + base.final_deaths_bedwars += s.final_deaths_bedwars + base.wins_bedwars += s.wins_bedwars + base.losses_bedwars += s.losses_bedwars + if (s.winstreak !== -1) { + base.winstreak = Math.max(base.winstreak, s.winstreak) } + base.beds_broken_bedwars += s.beds_broken_bedwars + base.beds_lost_bedwars += s.beds_lost_bedwars + } - return arrays.reduce((sum, array) => sum + array[index], 0) - }) + const devide = (a: number, b: number) => { + if (b === 0) return a + return a / b + } - return result + const ret = { + ...base, + winstreak: base.winstreak < 0 ? "?" : base.winstreak, + kd: devide(base.kills_bedwars, base.deaths_bedwars), + fkd: devide(base.final_kills_bedwars, base.final_deaths_bedwars), + wl: devide(base.wins_bedwars, base.losses_bedwars), + bbl: devide(base.beds_broken_bedwars, base.beds_lost_bedwars) + } + + return [ + ret.kills_bedwars, + ret.deaths_bedwars, + ret.kd, + ret.final_kills_bedwars, + ret.final_deaths_bedwars, + ret.fkd, + ret.wins_bedwars, + ret.losses_bedwars, + ret.wl, + ret.winstreak, + ret.beds_broken_bedwars, + ret.beds_lost_bedwars, + ret.bbl + ] } diff --git a/src/lib/hypixel/bedwars.ts b/src/lib/hypixel/bedwars.ts index c733db5..69defd2 100644 --- a/src/lib/hypixel/bedwars.ts +++ b/src/lib/hypixel/bedwars.ts @@ -82,7 +82,19 @@ type Mode = | "underworld_4s" | "castle" -export function getBedwarsModeStats(mode: Mode, stats: _BedwarsStats, raw: true): number[] +export type BedwarsModeStats = { + kills_bedwars: number + deaths_bedwars: number + final_kills_bedwars: number + final_deaths_bedwars: number + wins_bedwars: number + losses_bedwars: number + winstreak: number + beds_broken_bedwars: number + beds_lost_bedwars: number +} + +export function getBedwarsModeStats(mode: Mode, stats: _BedwarsStats, raw: true): BedwarsModeStats export function getBedwarsModeStats(mode: Mode, stats: _BedwarsStats, raw?: false): (string | number)[] export function getBedwarsModeStats(mode: Mode, stats: _BedwarsStats, raw = false) { switch (mode) { @@ -135,21 +147,17 @@ function devide(num: number, num2: number) { function bedwarsModeStats(prefix: string, stats: _BedwarsStats, raw = false) { if (raw) { - return [ - 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`], - devide(stats[`${prefix}_final_kills_bedwars`], stats[`${prefix}_final_deaths_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`], - devide(stats[`${prefix}_beds_broken_bedwars`], stats[`${prefix}_beds_lost_bedwars`]) - ] + return { + kills_bedwars: stats[`${prefix}_kills_bedwars`], + deaths_bedwars: stats[`${prefix}_deaths_bedwars`], + final_kills_bedwars: stats[`${prefix}_final_kills_bedwars`], + final_deaths_bedwars: stats[`${prefix}_final_deaths_bedwars`], + wins_bedwars: stats[`${prefix}_wins_bedwars`], + losses_bedwars: stats[`${prefix}_losses_bedwars`], + winstreak: stats[`${prefix}_winstreak`] ?? -1, + beds_broken_bedwars: stats[`${prefix}_beds_broken_bedwars`], + beds_lost_bedwars: stats[`${prefix}_beds_lost_bedwars`] + } } return [