Finished murder mystery

This commit is contained in:
2025-09-03 12:49:20 +02:00
parent 573492ba14
commit 17cf013593
3 changed files with 43 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
import { formatNumber, formatSecondsToTime } from "@/lib/formatters"
import { devide } from "@/lib/hypixel/general"
import { NonNullStats } from "@/lib/schema/player"
import { BasicStat } from "../../_components/Stats"
export default function InfectionStats({ stats }: { stats: NonNullStats["MurderMystery"] }) {
if (!stats) return null
return (
<div>
<h2 className="text-xl font-bold">Infection</h2>
<div className="flex">
<div className="flex-1">
<BasicStat title="Kills as Infected: " value={formatNumber(stats.kills_as_infected_MURDER_INFECTION)} />
<BasicStat title="Kills as Survivor: " value={formatNumber(stats.kills_as_survivor_MURDER_INFECTION)} />
<BasicStat title="Final Kills: " value={formatNumber(stats.kills_MURDER_INFECTION)} />
</div>
<div className="flex-1">
<BasicStat title="Wins: " value={formatNumber(stats.wins_MURDER_INFECTION)} />
<BasicStat title="Losses: " value={formatNumber(stats.games_MURDER_INFECTION - stats.wins_MURDER_INFECTION)} />
<BasicStat
title="Win/Loss Ratio: "
value={formatNumber(devide(stats.wins_MURDER_INFECTION, stats.games_MURDER_INFECTION - stats.wins_MURDER_INFECTION))}
/>
</div>
<div className="flex-1">
<BasicStat title="Time Survived: " value={formatSecondsToTime(stats.total_time_survived_seconds_MURDER_INFECTION)} />
<BasicStat title="Gold Collected: " value={formatNumber(stats.coins_pickedup_MURDER_INFECTION)} />
</div>
</div>
</div>
)
}

View File

@@ -4,6 +4,7 @@ import { Separator } from "@/components/ui/separator"
import { formatNumber } from "@/lib/formatters"
import { NonNullStats } from "@/lib/schema/player"
import CollapsedStats from "../../_components/CollapsedStats"
import InfectionStats from "./infection"
import MurderMysteryGeneralStats from "./stats"
import MurderMysteryStatTable from "./table"
@@ -35,6 +36,8 @@ export default function MurderMysteryStats({ stats }: { stats: NonNullStats["Mur
<Separator className="my-4" />
<MurderMysteryGeneralStats statsChecked={stats} />
<Separator className="my-4" />
<InfectionStats stats={stats} />
<Separator className="my-4" />
<MurderMysteryStatTable stats={stats} />
<Separator className="my-4" />
</AccordionContent>

View File

@@ -376,5 +376,12 @@ export const murderMysteryStatsSchema = z.looseObject({
active_knife_skin: z.string().optional(),
quickest_detective_win_time_seconds: z.number().default(0),
quickest_murderer_win_time_seconds: z.number().default(0),
kills_as_infected_MURDER_INFECTION: z.number().default(0),
kills_as_survivor_MURDER_INFECTION: z.number().default(0),
kills_MURDER_INFECTION: z.number().default(0),
wins_MURDER_INFECTION: z.number().default(0),
games_MURDER_INFECTION: z.number().default(0),
total_time_survived_seconds_MURDER_INFECTION: z.number().default(0),
coins_pickedup_MURDER_INFECTION: z.number().default(0),
...murderMysteryModeStats()
})