1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { getPlayersWithLevel } from "https://esm.town/v/ktodaz/getPlayersWithLevel";
export const getTopPlayersByScore = async () => {
const players = await getPlayersWithLevel();
// Add up the players score
const calculatePlayerScore = (player) => {
const { combat, offense, defense, support } = player;
return combat + offense + defense + support;
};
const playersWithScore = players.map((player) => ({
...player,
score: calculatePlayerScore(player),
}));
// Sort players by score
playersWithScore.sort((a, b) => b.score - a.score);
// Enforce kill limits per player type
const topPlayers = playersWithScore.filter((player) => {
if (player.is_commander) {
return player.kills > 15;
}
else if (player.is_SL) {
return player.kills > 15;
}
return player.kills > 20;
})
.slice(0, 10).map((player, index) => ({
...player,
rank: index + 1,
}));
// limit to 10 players
return {
topPlayers,
playersWithScore: playersWithScore.slice(0, 10),
allPlayers: players,
};
};