Files
blitzkit/packages/bot/src/core/blitzstars/tankAverages.ts
T

101 lines
2.2 KiB
TypeScript
Raw Normal View History

2024-09-15 16:20:11 -05:00
import { BlitzStats } from '@blitzkit/core';
import { context } from '@blitzkit/core/src/blitzkit/context';
2023-06-01 18:36:39 +00:00
2024-03-12 23:36:56 -05:00
interface SpecialStats {
2023-06-01 18:36:39 +00:00
winrate: number;
damageRatio: number;
kdr: number;
damagePerBattle: number;
killsPerBattle: number;
hitsPerBattle: number;
spotsPerBattle: number;
wpm: number;
dpm: number;
kpm: number;
hitRate: number;
survivalRate: number;
}
export type Percentiles = [
number,
number,
number,
number,
number,
number,
number,
number,
number,
];
export interface SpecialPercentiles {
winRate: Percentiles;
damageRatio: Percentiles;
kdr: Percentiles;
damagePerBattle: Percentiles;
killsPerBattle: Percentiles;
hitsPerBattle: Percentiles;
spotsPerBattle: Percentiles;
wpm: Percentiles;
dpm: Percentiles;
kpm: Percentiles;
hitRate: Percentiles;
survivalRate: Percentiles;
}
export interface MeanSd {
winrateMean: number;
winrateSd: number;
hitRateMean: number;
hitRateSd: number;
survivalRateMean: number;
survivalRateSd: number;
damageRatioMean: number;
damageRatioSd: number;
kdrMean: number;
kdrSd: number;
dpbMean: number;
dpbSd: number;
kpbMean: number;
kpbSd: number;
hpbMean: number;
hpbSd: number;
spbMean: number;
spbSd: number;
}
2023-06-08 01:01:24 +00:00
export interface IndividualTankAverage {
2023-06-01 18:36:39 +00:00
_id: number;
battle_life_time: number;
total_battle_life_time: number;
number_of_players: number;
tank_id: number;
2024-08-10 13:29:10 -05:00
all: BlitzStats;
2023-06-01 18:36:39 +00:00
special: SpecialStats;
percentiles: SpecialPercentiles;
percentiles_player_count: number;
meanSd: MeanSd;
shotEff: number;
last_update: number;
}
2024-09-07 23:00:56 -05:00
export type BlitzStarsTankAverages = Record<number, IndividualTankAverage>;
2023-06-01 18:36:39 +00:00
2024-09-07 23:00:56 -05:00
export const blitzStarsTankAverages = fetch(
2024-09-15 16:20:11 -05:00
'https://www.blitzstars.com/api/tankaverages.json',
)
.then((response) => response.json())
2023-09-24 15:58:42 -05:00
.then((json) => {
if (context === 'server') {
2024-09-07 23:00:56 -05:00
const partialTankAverages: BlitzStarsTankAverages = {};
2023-09-24 15:58:42 -05:00
(json as IndividualTankAverage[]).forEach((individualTankAverage) => {
partialTankAverages[individualTankAverage.tank_id] =
individualTankAverage;
2023-09-24 15:58:42 -05:00
});
2023-09-24 15:58:42 -05:00
return partialTankAverages;
} else {
2024-09-07 23:00:56 -05:00
return json as BlitzStarsTankAverages;
2023-09-24 15:58:42 -05:00
}
});