diff --git a/src/app/(stats)/player/[ign]/_stats/arcade/arcade.tsx b/src/app/(stats)/player/[ign]/_stats/arcade/arcade.tsx
index 1fb74e5..1dda259 100644
--- a/src/app/(stats)/player/[ign]/_stats/arcade/arcade.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/arcade/arcade.tsx
@@ -4,6 +4,7 @@ import { getArcadeTotalWins } from "@/lib/hypixel/arcade/general"
import { NonNullStats } from "@/lib/schema/player"
import { BasicStat } from "../../_components/Stats"
import GeneralStats from "../GeneralStats"
+import ArcadeOtherStats from "./other"
import { ArcadeMiniWallsStats, ArcadePixelPartyStats, ArcadeZombieStats } from "./stats"
export default function ArcadeStats({ stats }: { stats: NonNullStats["Arcade"] }) {
@@ -31,6 +32,8 @@ export default function ArcadeStats({ stats }: { stats: NonNullStats["Arcade"] }
+
+
)
}
diff --git a/src/app/(stats)/player/[ign]/_stats/arcade/other.tsx b/src/app/(stats)/player/[ign]/_stats/arcade/other.tsx
new file mode 100644
index 0000000..f5f4aa4
--- /dev/null
+++ b/src/app/(stats)/player/[ign]/_stats/arcade/other.tsx
@@ -0,0 +1,122 @@
+import { formatMillisecondsToTime, formatNumber } from "@/lib/formatters"
+import { devide } from "@/lib/hypixel/general"
+import { NonNullStats } from "@/lib/schema/player"
+import { capitalizeFirstLetter } from "@/lib/utils"
+import { ReactNode } from "react"
+import { BasicStat } from "../../_components/Stats"
+
+export default function ArcadeOtherStats({ stats }: { stats: NonNullable }) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+function ArcadeOtherStat({ title, children }: { title: string, children: ReactNode }) {
+ return (
+
+
{title}
+ {children}
+
+ )
+}
diff --git a/src/app/(stats)/player/[ign]/_stats/arcade/stats.tsx b/src/app/(stats)/player/[ign]/_stats/arcade/stats.tsx
index f41ae91..c5a06fc 100644
--- a/src/app/(stats)/player/[ign]/_stats/arcade/stats.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/arcade/stats.tsx
@@ -78,24 +78,24 @@ export function ArcadeMiniWallsStats({ stats }: { stats: NonNullableMini Walls
-
+
-
+
-
-
-
+
+
+
-
-
+
+
diff --git a/src/lib/formatters.ts b/src/lib/formatters.ts
index 564802d..eabb926 100644
--- a/src/lib/formatters.ts
+++ b/src/lib/formatters.ts
@@ -36,6 +36,27 @@ export function formatSecondsToTime(seconds: number) {
return parts.join(" ")
}
+export function formatMillisecondsToTime(milliseconds: number) {
+ if (!Number.isFinite(milliseconds)) return "0ms"
+ milliseconds = Math.floor(Math.max(0, milliseconds))
+ const seconds = Math.floor(milliseconds / 1000)
+ const ms = milliseconds % 1000
+
+ const days = Math.floor(seconds / 86400)
+ const hours = Math.floor((seconds % 86400) / 3600)
+ const minutes = Math.floor((seconds % 3600) / 60)
+ const secs = seconds % 60
+
+ const parts: string[] = []
+ if (days) parts.push(days + "d")
+ if (hours) parts.push(hours + "h")
+ if (minutes) parts.push(minutes + "m")
+ if (secs) parts.push(secs + "s")
+ if (ms || parts.length === 0) parts.push(ms + "ms")
+
+ return parts.join(" ")
+}
+
export function formatRelativeTime(timestamp: number, type: "past" | "future") {
const now = Date.now()
let diffMs = timestamp - now
diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts
index 8748315..897b741 100644
--- a/src/lib/schema/stats.ts
+++ b/src/lib/schema/stats.ts
@@ -991,7 +991,35 @@ export const arcadeStatsSchema = z.object({
times_knocked_down_zombies: z.number().default(0),
doors_opened_zombies: z.number().default(0),
windows_repaired_zombies: z.number().default(0),
+ kills_dayone: z.number().default(0),
+ headshots_dayone: z.number().default(0),
+ melee_weapon: z.string().optional(),
+ kills_oneinthequiver: z.number().default(0),
+ deaths_oneinthequiver: z.number().default(0),
+ max_wave: z.number().default(0),
+ kills_dragonwars2: z.number().default(0),
+ eggs_found_easter_simulator: z.number().default(0),
+ poop_collected: z.number().default(0),
+ goals_soccer: z.number().default(0),
+ kicks_soccer: z.number().default(0),
+ powerkicks_soccer: z.number().default(0),
coins: z.number().default(0),
+ sw_kills: z.number().default(0),
+ sw_empire_kills: z.number().default(0),
+ sw_rebel_kills: z.number().default(0),
+ sw_deaths: z.number().default(0),
+ sw_shots_fired: z.number().default(0),
+ gifts_grinch_simulator_v2: z.number().default(0),
+ candy_found_halloween_simulator: z.number().default(0),
+ hitw_record_q: z.number().default(0),
+ hitw_record_f: z.number().default(0),
+ rounds_simon_says: z.number().default(0),
+ delivered_santa_simulator: z.number().default(0),
+ spotted_santa_simulator: z.number().default(0),
+ items_found_scuba_simulator: z.number().default(0),
+ total_points_scuba_simulator: z.number().default(0),
+ kills_throw_out: z.number().default(0),
+ deaths_throw_out: z.number().default(0),
pixel_party: z.object({
wins: z.number().default(0),
games_played: z.number().default(0),
@@ -1008,7 +1036,12 @@ export const arcadeStatsSchema = z.object({
power_ups_collected_hyper: z.number().default(0)
}).optional(),
dropper: z.object({
- wins: z.number().default(0)
+ wins: z.number().default(0),
+ flawless_games: z.number().default(0),
+ games_finished: z.number().default(0),
+ maps_completed: z.number().default(0),
+ fastest_game: z.number().default(0),
+ fails: z.number().default(0)
}).optional(),
...arcadeModeWins(),
...arcadeZombiesModeStats(),