Skip to content

Commit 1834808

Browse files
committed
Update <Player>.stats.UHC
1 parent 93564af commit 1834808

File tree

2 files changed

+156
-167
lines changed

2 files changed

+156
-167
lines changed

src/structures/MiniGames/UHC.js

Lines changed: 135 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,183 +1,194 @@
11
const divide = require('../../utils/divide');
22

33
// eslint-disable-next-line jsdoc/require-jsdoc
4-
function getStarLevel(data) {
5-
const kills =
6-
(data.kills || 0) +
7-
(data.kills_solo || 0) +
8-
(data['kills_red vs blue'] || 0) +
9-
(data['kills_no diamonds'] || 0) +
10-
(data.kills_brawl || 0) +
11-
(data['kills_solo brawl'] || 0) +
12-
(data['kills_duo brawl'] || 0);
13-
const wins =
14-
(data.wins || 0) +
15-
(data.wins_solo || 0) +
16-
(data['wins_red vs blue'] || 0) +
17-
(data['wins_no diamonds'] || 0) +
18-
(data.wins_brawl || 0) +
19-
(data['wins_solo brawl'] || 0) +
20-
(data['wins_duo brawl'] || 0);
4+
function getStarLevel(kills, wins) {
215
const sum = Number(kills) + wins * 10;
226
let starLevel = 1;
237
const sums = [0, 1, 6, 21, 46, 96, 171, 271, 521, 1021, 1321, 1621, 1921, 2221, 2521, Infinity];
248
starLevel += sums.map((x) => x * 10 - sum).findIndex((x) => 0 < x) - 1;
259
return starLevel;
2610
}
2711

28-
/**
29-
* UHC class
30-
*/
31-
class UHC {
12+
class UHCGamemode {
3213
/**
3314
* @param {object} data UHC data
15+
* @param {string} mode UHC Mode Name
3416
*/
35-
constructor(data) {
17+
constructor(data, mode) {
18+
if (mode) mode = `_${mode}`;
3619
/**
37-
* Coins
20+
* Kills
3821
* @type {number}
3922
*/
40-
this.coins = data.coins || 0;
23+
this.kills = data[`kills${mode}`] || 0;
4124
/**
42-
* Score
25+
* Deaths
4326
* @type {number}
4427
*/
45-
this.score = data.score || 0;
28+
this.deaths = data[`deaths${mode}`] || 0;
4629
/**
47-
* Kills
30+
* Wins
4831
* @type {number}
4932
*/
50-
this.kills =
51-
(data.kills || 0) +
52-
(data.kills_solo || 0) +
53-
(data['kills_red vs blue'] || 0) +
54-
(data['kills_no diamonds'] || 0) +
55-
(data.kills_brawl || 0) +
56-
(data['kills_solo brawl'] || 0) +
57-
(data['kills_duo brawl'] || 0);
33+
this.wins = data[`wins${mode}`] || 0;
5834
/**
59-
* Deaths
35+
* Golden Heads Eaten
6036
* @type {number}
6137
*/
62-
this.deaths =
63-
(data.deaths || 0) +
64-
(data.deaths_solo || 0) +
65-
(data['deaths_red vs blue'] || 0) +
66-
(data['deaths_no diamonds'] || 0) +
67-
(data.deaths_brawl || 0) +
68-
(data['deaths_solo brawl'] || 0) +
69-
(data['deaths_duo brawl'] || 0);
38+
this.headsEaten = data[`heads_eaten${mode}`] || 0;
7039
/**
71-
* Kill/Death ratio
40+
* Ultimates Crafted
7241
* @type {number}
7342
*/
74-
this.KDRatio = divide(this.kills, this.deaths);
43+
this.ultimatesCrafted = data[`ultimates_crafted${mode}`] || 0;
7544
/**
76-
* Wins
45+
* Extra Ultimates Crafted
7746
* @type {number}
7847
*/
79-
this.wins =
80-
(data.wins || 0) +
81-
(data.wins_solo || 0) +
82-
(data['wins_red vs blue'] || 0) +
83-
(data['wins_no diamonds'] || 0) +
84-
(data.wins_brawl || 0) +
85-
(data['wins_solo brawl'] || 0) +
86-
(data['wins_duo brawl'] || 0);
48+
this.extraUltimatesCrafted = data[`extra_ultimates_crafted${mode}`] || 0;
49+
}
50+
}
51+
52+
/**
53+
* UHC class
54+
*/
55+
class UHC {
56+
/**
57+
* @param {object} data UHC data
58+
*/
59+
constructor(data) {
8760
/**
88-
* Heads eaten
61+
* Coins
8962
* @type {number}
9063
*/
91-
this.headsEaten =
92-
(data.heads_eaten || 0) +
93-
(data.heads_eaten_solo || 0) +
94-
(data['heads_eaten_red vs blue'] || 0) +
95-
(data['heads_eaten_no diamonds'] || 0) +
96-
(data.heads_eaten_brawl || 0) +
97-
(data['heads_eaten_solo brawl'] || 0) +
98-
(data['heads_eaten_duo brawl'] || 0);
64+
this.coins = data.coins || 0;
9965
/**
100-
* Star level
66+
* Score
10167
* @type {number}
10268
*/
103-
this.starLevel = getStarLevel(data);
69+
this.score = data.score || 0;
70+
/**
71+
* Selected Kit
72+
* @type {string}
73+
*/
74+
this.kit = data.equippedKit || '';
10475
/**
10576
* Solo
106-
* @type {UHCModeStats}
77+
* @type {UHCGamemode}
10778
*/
108-
this.solo = {
109-
kills: data.kills_solo || 0,
110-
deaths: data.deaths_solo || 0,
111-
wins: data.wins_solo || 0,
112-
headsEaten: data.heads_eaten_solo || 0
113-
};
79+
this.solo = new UHCGamemode(data, 'solo');
11480
/**
115-
* Team
116-
* @type {UHCModeStats}
81+
* Teams
82+
* @type {UHCGamemode}
11783
*/
118-
this.team = {
119-
kills: data.kills || 0,
120-
deaths: data.deaths || 0,
121-
wins: data.wins || 0,
122-
headsEaten: data.heads_eaten || 0
123-
};
84+
this.team = new UHCGamemode(data);
12485
/**
12586
* Red vs Blue
126-
* @type {UHCModeStats}
87+
* @type {UHCGamemode}
12788
*/
128-
this.redVsBlue = {
129-
kills: data['kills_red vs blue'] || 0,
130-
deaths: data['deaths_red vs blue'] || 0,
131-
wins: data['wins_red vs blue'] || 0,
132-
headsEaten: data['heads_eaten_red vs blue'] || 0
133-
};
89+
this.redVsBlue = new UHCGamemode(data, 'red_vs_blue');
13490
/**
13591
* No Diamond
136-
* @type {UHCModeStats}
92+
* @type {UHCGamemode}
13793
*/
138-
this.noDiamond = {
139-
kills: data['kills_no diamonds'] || 0,
140-
deaths: data['deaths_no diamonds'] || 0,
141-
wins: data['wins_no diamonds'] || 0,
142-
headsEaten: data['heads_eaten_no diamonds'] || 0
143-
};
94+
this.noDiamond = new UHCGamemode(data, 'no_diamonds');
14495
/**
14596
* Brawl
146-
* @type {UHCModeStats}
97+
* @type {UHCGamemode}
14798
*/
148-
this.brawl = {
149-
kills: data.kills_brawl || 0,
150-
deaths: data.deaths_brawl || 0,
151-
wins: data.wins_brawl || 0,
152-
headsEaten: data.heads_eaten_brawl || 0
153-
};
99+
this.brawl = new UHCGamemode(data, 'brawl');
154100
/**
155101
* Solo brawl
156-
* @type {UHCModeStats}
102+
* @type {UHCGamemode}
157103
*/
158-
this.soloBrawl = {
159-
kills: data['kills_solo brawl'] || 0,
160-
deaths: data['deaths_solo brawl'] || 0,
161-
wins: data['wins_solo brawl'] || 0,
162-
headsEaten: data['heads_eaten_solo brawl'] || 0
163-
};
104+
this.soloBrawl = new UHCGamemode(data, 'solo_brawl');
164105
/**
165106
* Duo Brawl
166-
* @type {UHCModeStats}
167-
*/
168-
this.duoBrawl = {
169-
kills: data['kills_duo brawl'] || 0,
170-
deaths: data['deaths_duo brawl'] || 0,
171-
wins: data['wins_duo brawl'] || 0,
172-
headsEaten: data['heads_eaten_duo brawl'] || 0
173-
};
107+
* @type {UHCGamemode}
108+
*/
109+
this.duoBrawl = new UHCGamemode(data, 'duo_brawl');
110+
/**
111+
* Wins
112+
* @type {number}
113+
*/
114+
this.wins =
115+
this.solo.wins +
116+
this.team.wins +
117+
this.redVsBlue.wins +
118+
this.noDiamond.wins +
119+
this.brawl.wins +
120+
this.soloBrawl.wins +
121+
this.duoBrawl.wins;
122+
/**
123+
* Kills
124+
* @type {number}
125+
*/
126+
this.kills =
127+
this.solo.kills +
128+
this.team.kills +
129+
this.redVsBlue.kills +
130+
this.noDiamond.kills +
131+
this.brawl.kills +
132+
this.soloBrawl.kills +
133+
this.duoBrawl.kills;
134+
/**
135+
* Deaths
136+
* @type {number}
137+
*/
138+
this.deaths =
139+
this.solo.deaths +
140+
this.team.deaths +
141+
this.redVsBlue.deaths +
142+
this.noDiamond.deaths +
143+
this.brawl.deaths +
144+
this.soloBrawl.deaths +
145+
this.duoBrawl.deaths;
146+
/**
147+
* Kill/Death ratio
148+
* @type {number}
149+
*/
150+
this.KDRatio = divide(this.kills, this.deaths);
151+
/**
152+
* Heads eaten
153+
* @type {number}
154+
*/
155+
this.headsEaten =
156+
this.solo.headsEaten +
157+
this.team.headsEaten +
158+
this.redVsBlue.headsEaten +
159+
this.noDiamond.headsEaten +
160+
this.brawl.headsEaten +
161+
this.soloBrawl.headsEaten +
162+
this.duoBrawl.headsEaten;
163+
/**
164+
* Ultimates Crafted
165+
* @type {number}
166+
*/
167+
this.ultimatesCrafted =
168+
this.solo.ultimatesCrafted +
169+
this.team.ultimatesCrafted +
170+
this.redVsBlue.ultimatesCrafted +
171+
this.noDiamond.ultimatesCrafted +
172+
this.brawl.ultimatesCrafted +
173+
this.soloBrawl.ultimatesCrafted +
174+
this.duoBrawl.ultimatesCrafted;
175+
/**
176+
* Extra Ultimates Crafted
177+
* @type {number}
178+
*/
179+
this.extraUltimatesCrafted =
180+
this.solo.extraUltimatesCrafted +
181+
this.team.extraUltimatesCrafted +
182+
this.redVsBlue.extraUltimatesCrafted +
183+
this.noDiamond.extraUltimatesCrafted +
184+
this.brawl.extraUltimatesCrafted +
185+
this.soloBrawl.extraUltimatesCrafted +
186+
this.duoBrawl.extraUltimatesCrafted;
187+
/**
188+
* Star level
189+
* @type {number}
190+
*/
191+
this.starLevel = getStarLevel(this.kills, this.wins);
174192
}
175193
}
176-
/**
177-
* @typedef {object} UHCModeStats
178-
* @property {number} kills Kills
179-
* @property {number} deaths Deaths
180-
* @property {number} wins Wins
181-
* @property {number} headsEaten Heads eaten
182-
*/
183194
module.exports = UHC;

typings/index.d.ts

Lines changed: 21 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3648,57 +3648,35 @@ declare module 'hypixel-api-reborn' {
36483648
totalSlumberTickets: number;
36493649
}
36503650

3651+
class UHCGamemode {
3652+
constructor(data: Record<string, unknown>, mode: string);
3653+
kills: number;
3654+
deaths: number;
3655+
wins: number;
3656+
headsEaten: number;
3657+
ultimatesCrafted: number;
3658+
extraUltimatesCrafted: number;
3659+
}
36513660
class UHC {
36523661
constructor(data: Record<string, unknown>);
36533662
coins: number;
36543663
score: number;
3664+
kit: string;
3665+
solo: UHCGamemode;
3666+
team: UHCGamemode;
3667+
redVsBlue: UHCGamemode;
3668+
noDiamond: UHCGamemode;
3669+
brawl: UHCGamemode;
3670+
soloBrawl: UHCGamemode;
3671+
duoBrawl: UHCGamemode;
3672+
wins: number;
36553673
kills: number;
36563674
deaths: number;
3657-
wins: number;
3675+
KDRatio: number;
36583676
headsEaten: number;
3677+
ultimatesCrafted: number;
3678+
extraUltimatesCrafted: number;
36593679
starLevel: number;
3660-
solo: {
3661-
wins: number;
3662-
kills: number;
3663-
deaths: number;
3664-
headsEaten: number;
3665-
};
3666-
team: {
3667-
wins: number;
3668-
kills: number;
3669-
deaths: number;
3670-
headsEaten: number;
3671-
};
3672-
redVsBlue: {
3673-
wins: number;
3674-
kills: number;
3675-
deaths: number;
3676-
headsEaten: number;
3677-
};
3678-
noDiamond: {
3679-
wins: number;
3680-
kills: number;
3681-
deaths: number;
3682-
headsEaten: number;
3683-
};
3684-
brawl: {
3685-
wins: number;
3686-
kills: number;
3687-
deaths: number;
3688-
headsEaten: number;
3689-
};
3690-
brawlSolo: {
3691-
wins: number;
3692-
kills: number;
3693-
deaths: number;
3694-
headsEaten: number;
3695-
};
3696-
brawlDuo: {
3697-
wins: number;
3698-
kills: number;
3699-
deaths: number;
3700-
headsEaten: number;
3701-
};
37023680
}
37033681
class SpeedUHCMode {
37043682
constructor(data: Record<string, unknown>, mode: string);

0 commit comments

Comments
 (0)