hypixel-api-reborn 11.2.0 → 11.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +1 -1
  2. package/eslint.config.mjs +71 -0
  3. package/package.json +14 -20
  4. package/src/API/getAchievements.js +1 -0
  5. package/src/API/getBoosters.js +1 -0
  6. package/src/API/getChallenges.js +1 -0
  7. package/src/API/getGameCounts.js +1 -0
  8. package/src/API/getGuild.js +4 -3
  9. package/src/API/getGuildAchievements.js +1 -0
  10. package/src/API/getLeaderboards.js +1 -1
  11. package/src/API/getPlayer.js +1 -0
  12. package/src/API/getQuests.js +1 -0
  13. package/src/API/getRecentGames.js +5 -9
  14. package/src/API/getServerInfo.js +40 -37
  15. package/src/API/getStatus.js +1 -0
  16. package/src/API/getWatchdogStats.js +1 -0
  17. package/src/API/housing/getActiveHouses.js +7 -0
  18. package/src/API/housing/getHouse.js +9 -0
  19. package/src/API/housing/getPlayerHouses.js +11 -0
  20. package/src/API/index.js +6 -1
  21. package/src/API/skyblock/getAuction.js +8 -6
  22. package/src/API/skyblock/getAuctions.js +15 -12
  23. package/src/API/skyblock/getAuctionsByPlayer.js +1 -1
  24. package/src/API/skyblock/getBazaar.js +1 -3
  25. package/src/API/skyblock/getBingo.js +1 -2
  26. package/src/API/skyblock/getBingoByPlayer.js +3 -3
  27. package/src/API/skyblock/getEndedAuctions.js +1 -0
  28. package/src/API/skyblock/getFireSales.js +1 -1
  29. package/src/API/skyblock/getGarden.js +7 -0
  30. package/src/API/skyblock/getGovernment.js +1 -2
  31. package/src/API/skyblock/getMember.js +5 -2
  32. package/src/API/skyblock/getMuseum.js +1 -0
  33. package/src/API/skyblock/getNews.js +1 -0
  34. package/src/API/skyblock/getProfiles.js +5 -2
  35. package/src/Client.js +88 -16
  36. package/src/Private/rateLimit.js +7 -11
  37. package/src/Private/requests.js +12 -13
  38. package/src/Private/updater.js +2 -3
  39. package/src/Private/uuidCache.js +1 -2
  40. package/src/Private/validate.js +19 -19
  41. package/src/index.js +5 -0
  42. package/src/structures/APIIncident.js +1 -2
  43. package/src/structures/APIStatus.js +0 -1
  44. package/src/structures/Boosters/Booster.js +9 -8
  45. package/src/structures/Game.js +1 -1
  46. package/src/structures/Guild/Guild.js +19 -36
  47. package/src/structures/Guild/GuildMember.js +2 -2
  48. package/src/structures/House.js +54 -0
  49. package/src/structures/MiniGames/Arcade.js +798 -312
  50. package/src/structures/MiniGames/ArenaBrawl.js +98 -32
  51. package/src/structures/MiniGames/BedWars.js +197 -194
  52. package/src/structures/MiniGames/BlitzSurvivalGames.js +381 -129
  53. package/src/structures/MiniGames/BuildBattle.js +19 -8
  54. package/src/structures/MiniGames/CopsAndCrims.js +253 -25
  55. package/src/structures/MiniGames/Duels.js +905 -664
  56. package/src/structures/MiniGames/MegaWalls.js +390 -51
  57. package/src/structures/MiniGames/MurderMystery.js +151 -30
  58. package/src/structures/MiniGames/Paintball.js +31 -11
  59. package/src/structures/MiniGames/Pit.js +4 -5
  60. package/src/structures/MiniGames/Quakecraft.js +113 -50
  61. package/src/structures/MiniGames/SkyWars.js +528 -372
  62. package/src/structures/MiniGames/SmashHeroes.js +201 -73
  63. package/src/structures/MiniGames/SpeedUHC.js +77 -24
  64. package/src/structures/MiniGames/TNTGames.js +242 -73
  65. package/src/structures/MiniGames/TurboKartRacers.js +55 -115
  66. package/src/structures/MiniGames/UHC.js +144 -132
  67. package/src/structures/MiniGames/VampireZ.js +70 -37
  68. package/src/structures/MiniGames/Warlords.js +126 -1
  69. package/src/structures/MiniGames/WoolWars.js +60 -9
  70. package/src/structures/Pet.js +1 -1
  71. package/src/structures/Player.js +43 -128
  72. package/src/structures/PlayerCosmetics.js +5 -4
  73. package/src/structures/SkyBlock/Auctions/AuctionInfo.js +2 -1
  74. package/src/structures/SkyBlock/Auctions/BaseAuction.js +1 -1
  75. package/src/structures/SkyBlock/News/SkyblockNews.js +15 -15
  76. package/src/structures/SkyBlock/PlayerBingo.js +7 -14
  77. package/src/structures/SkyBlock/SkyblockGarden.js +146 -0
  78. package/src/structures/SkyBlock/SkyblockInventoryItem.js +4 -28
  79. package/src/structures/SkyBlock/SkyblockMember.js +90 -228
  80. package/src/structures/SkyBlock/SkyblockPet.js +3 -4
  81. package/src/structures/SkyBlock/Static/Bingo.js +10 -11
  82. package/src/structures/SkyBlock/Static/BingoData.js +1 -1
  83. package/src/structures/Static/Achievement.js +16 -15
  84. package/src/structures/Static/AchievementTier.js +2 -2
  85. package/src/structures/Static/Quest.js +2 -2
  86. package/src/utils/Constants.js +522 -520
  87. package/src/utils/{guildExp.js → Guild.js} +42 -12
  88. package/src/utils/Player.js +112 -0
  89. package/src/utils/SkyblockUtils.js +482 -192
  90. package/src/utils/arrayTools.js +1 -1
  91. package/src/utils/divide.js +1 -1
  92. package/src/utils/index.js +2 -1
  93. package/src/utils/isGuildID.js +1 -1
  94. package/src/utils/oscillation.js +4 -2
  95. package/src/utils/removeSnakeCase.js +11 -7
  96. package/src/utils/rgbToHexColor.js +1 -1
  97. package/src/utils/romanize.js +3 -3
  98. package/src/utils/toUuid.js +4 -4
  99. package/src/utils/varInt.js +2 -2
  100. package/typings/index.d.ts +1186 -967
  101. package/src/utils/toIGN.js +0 -24
@@ -1,4 +1,224 @@
1
1
  const divide = require('../../utils/divide');
2
+
3
+ class MegaWallsModeStats {
4
+ /**
5
+ * @param {object} data MegaWalls data
6
+ * @param {string} mode MegaWalls Mode
7
+ * @param {string} kit MegaWalls Kit
8
+ */
9
+ constructor(data, mode, kit) {
10
+ if (kit) kit = `${kit}_`;
11
+ /**
12
+ * Kills
13
+ * @type {number}
14
+ */
15
+ this.kills = data[`${kit}kills_${mode}`] || 0;
16
+ /**
17
+ * Assists
18
+ * @type {number}
19
+ */
20
+ this.assists = data[`${kit}assists_${mode}`] || 0;
21
+ /**
22
+ * Deaths
23
+ * @type {number}
24
+ */
25
+ this.deaths = data[`${kit}deaths_${mode}`] || 0;
26
+ /**
27
+ * Kill Death ratio
28
+ * @type {number}
29
+ */
30
+ this.KDRatio = divide(this.kills, this.deaths);
31
+ /**
32
+ * Wins
33
+ * @type {number}
34
+ */
35
+ this.wins = data[`${kit}wins_${mode}`] || 0;
36
+ /**
37
+ * Losses
38
+ * @type {number}
39
+ */
40
+ this.losses = data[`${kit}losses_${mode}`] || 0;
41
+ /**
42
+ * Win Loss ratio
43
+ * @type {number}
44
+ */
45
+ this.WLRatio = divide(this.wins, this.losses);
46
+ /**
47
+ * Final kills
48
+ * @type {number}
49
+ */
50
+ this.finalKills = data[`${kit}final_kills_${mode}`] || 0;
51
+ /**
52
+ * Final assists
53
+ * @type {number}
54
+ */
55
+ this.finalAssists = data[`${kit}final_assists_${mode}`] || 0;
56
+ /**
57
+ * Final deaths
58
+ * @type {number}
59
+ */
60
+ this.finalDeaths = data[`${kit}final_deaths_${mode}`] || 0;
61
+ /**
62
+ * Final Kill Death ratio
63
+ * @type {number}
64
+ */
65
+ this.finalKDRatio = divide(this.finalKills, this.finalDeaths);
66
+ /**
67
+ * Played games
68
+ * @type {number}
69
+ */
70
+ this.playedGames = data[`${kit}games_played_${mode}`] || 0;
71
+ /**
72
+ * Wither damage
73
+ * @type {number}
74
+ */
75
+ this.witherDamage = data[`${kit}wither_damage_${mode}`] || 0;
76
+ /**
77
+ * Defender kills
78
+ * @type {number}
79
+ */
80
+ this.defenderKills = data[`${kit}defender_kills_${mode}`] || 0;
81
+ /**
82
+ * Walked
83
+ * @type {number}
84
+ */
85
+ this.walked = data[`${kit}meters_walked_${mode}`] || 0;
86
+ /**
87
+ * Blocks Placed
88
+ * @type {number}
89
+ */
90
+ this.blocksPlaced = data[`${kit}blocks_placed_${mode}`] || 0;
91
+ /**
92
+ * Blocks Broken
93
+ * @type {number}
94
+ */
95
+ this.blocksBroken = data[`${kit}blocks_broken_${mode}`] || 0;
96
+ /**
97
+ * Melee Kills
98
+ * @type {number}
99
+ */
100
+ this.meleeKills = data[`${kit}kills_melee_${mode}`] || 0;
101
+ /**
102
+ * Damage Delt
103
+ * @type {number}
104
+ */
105
+ this.damageDealt = data[`${kit}damage_dealt_${mode}`] || 0;
106
+ }
107
+ }
108
+ class MegaWallsKitStats {
109
+ /**
110
+ * @param {object} data MegaWalls data
111
+ * @param {string} kit MegaWalls Kit
112
+ */
113
+ constructor(data, kit) {
114
+ /**
115
+ * Kills
116
+ * @type {number}
117
+ */
118
+ this.kills = data[`${kit}_kills`] || 0;
119
+ /**
120
+ * Assists
121
+ * @type {number}
122
+ */
123
+ this.assists = data[`${kit}_assists`] || 0;
124
+ /**
125
+ * Deaths
126
+ * @type {number}
127
+ */
128
+ this.deaths = data[`${kit}_deaths`] || 0;
129
+ /**
130
+ * Kill Death ratio
131
+ * @type {number}
132
+ */
133
+ this.KDRatio = divide(this.kills, this.deaths);
134
+ /**
135
+ * Wins
136
+ * @type {number}
137
+ */
138
+ this.wins = data[`${kit}_wins`] || 0;
139
+ /**
140
+ * Losses
141
+ * @type {number}
142
+ */
143
+ this.losses = data[`${kit}_losses`] || 0;
144
+ /**
145
+ * Win Loss ratio
146
+ * @type {number}
147
+ */
148
+ this.WLRatio = divide(this.wins, this.losses);
149
+ /**
150
+ * Final kills
151
+ * @type {number}
152
+ */
153
+ this.finalKills = data[`${kit}_final_kills`] || 0;
154
+ /**
155
+ * Final assists
156
+ * @type {number}
157
+ */
158
+ this.finalAssists = data[`${kit}_final_assists`] || 0;
159
+ /**
160
+ * Final deaths
161
+ * @type {number}
162
+ */
163
+ this.finalDeaths = data[`${kit}_final_deaths`] || 0;
164
+ /**
165
+ * Final Kill Death ratio
166
+ * @type {number}
167
+ */
168
+ this.finalKDRatio = divide(this.finalKills, this.finalDeaths);
169
+ /**
170
+ * Played games
171
+ * @type {number}
172
+ */
173
+ this.playedGames = data[`${kit}_games_played`] || 0;
174
+ /**
175
+ * Wither damage
176
+ * @type {number}
177
+ */
178
+ this.witherDamage = data[`${kit}_wither_damage`] || 0;
179
+ /**
180
+ * Defender kills
181
+ * @type {number}
182
+ */
183
+ this.defenderKills = data[`${kit}_defender_kills`] || 0;
184
+ /**
185
+ * Walked
186
+ * @type {number}
187
+ */
188
+ this.walked = data[`${kit}_meters_walked`] || 0;
189
+ /**
190
+ * Blocks Placed
191
+ * @type {number}
192
+ */
193
+ this.blocksPlaced = data[`${kit}_blocks_placed`] || 0;
194
+ /**
195
+ * Blocks Broken
196
+ * @type {number}
197
+ */
198
+ this.blocksBroken = data[`${kit}_blocks_broken`] || 0;
199
+ /**
200
+ * Melee Kills
201
+ * @type {number}
202
+ */
203
+ this.meleeKills = data[`${kit}_kills_melee`] || 0;
204
+ /**
205
+ * Damage Delt
206
+ * @type {number}
207
+ */
208
+ this.damageDealt = data[`${kit}_damage_dealt`] || 0;
209
+ /**
210
+ * Stats for each mode
211
+ * @type {MegaWallsModeStats}
212
+ */
213
+ this.faceOff = new MegaWallsModeStats(data, 'face_off', kit);
214
+ /**
215
+ * Stats for each mode
216
+ * @type {MegaWallsModeStats}
217
+ */
218
+ this.casualBrawl = new MegaWallsModeStats(data, 'gvg', kit);
219
+ }
220
+ }
221
+
2
222
  /**
3
223
  * MegaWalls class
4
224
  */
@@ -9,7 +229,7 @@ class MegaWalls {
9
229
  constructor(data) {
10
230
  /**
11
231
  * Selected class
12
- * @type {string}
232
+ * @type {string|null}
13
233
  */
14
234
  this.selectedClass = data.chosen_class || null;
15
235
  /**
@@ -56,24 +276,22 @@ class MegaWalls {
56
276
  * Final kills
57
277
  * @type {number}
58
278
  */
59
- this.finalKills = data.final_kills || 0;
279
+ this.finalKills = (data.final_kills || 0) + (data.finalkills || 0);
60
280
  /**
61
281
  * Final assists
62
282
  * @type {number}
63
283
  */
64
- this.finalAssists = data.final_assists || 0;
284
+ this.finalAssists = (data.final_assists || 0) + (data.finalassists || 0);
65
285
  /**
66
286
  * Final deaths
67
287
  * @type {number}
68
288
  */
69
- this.finalDeaths = isNaN((data.final_deaths || 0) + (data.finalDeaths || 0))
70
- ? 0
71
- : Math.floor((data.final_deaths || 0) + (data.finalDeaths || 0));
289
+ this.finalDeaths = (data.final_deaths || 0) + (data.finalDeaths || 0);
72
290
  /**
73
291
  * Final Kill Death ratio
74
292
  * @type {number}
75
293
  */
76
- this.finalKDRatio = divide(data.final_kills, (data.final_deaths || 0) + (data.finalDeaths || 0));
294
+ this.finalKDRatio = divide(this.finalKills, this.finalDeaths);
77
295
  /**
78
296
  * Played games
79
297
  * @type {number}
@@ -83,57 +301,178 @@ class MegaWalls {
83
301
  * Wither damage
84
302
  * @type {number}
85
303
  */
86
- this.witherDamage = data.wither_damage || 0;
304
+ this.witherDamage = (data.wither_damage || 0) + (data.witherDamager || 0);
87
305
  /**
88
306
  * Defender kills
89
307
  * @type {number}
90
308
  */
91
309
  this.defenderKills = data.defender_kills || 0;
310
+ /**
311
+ * Walked
312
+ * @type {number}
313
+ */
314
+ this.walked = data.meters_walked || 0;
315
+ /**
316
+ * Blocks Placed
317
+ * @type {number}
318
+ */
319
+ this.blocksPlaced = data.blocks_placed || 0;
320
+ /**
321
+ * Blocks Broken
322
+ * @type {number}
323
+ */
324
+ this.blocksBroken = data.blocks_broken || 0;
325
+ /**
326
+ * Melee Kills
327
+ * @type {number}
328
+ */
329
+ this.meleeKills = data.kills_melee || 0;
330
+ /**
331
+ * Damage Delt
332
+ * @type {number}
333
+ */
334
+ this.damageDealt = data.damage_dealt || 0;
335
+ /**
336
+ * Stats for each mode
337
+ * @type {MegaWallsModeStats}
338
+ */
339
+ this.faceOff = new MegaWallsModeStats(data, 'face_off');
92
340
  /**
93
341
  * Stats for each mode
94
- * @type {MegaWallsMode}
95
- */
96
- this.mode = {
97
- normal: {
98
- kills: data.kills_standard || 0,
99
- deaths: data.deaths_standard || 0,
100
- KDRatio: divide(data.kills_standard, data.deaths_standard),
101
- wins: data.wins_standard || 0,
102
- losses: data.losses_standard || 0,
103
- WLRatio: divide(data.wins_standard, data.losses_standard)
104
- },
105
- faceoff: {
106
- kills: data.kills_face_off || 0,
107
- deaths: data.deaths_face_off || 0,
108
- KDRatio: divide(data.kills_face_off, data.deaths_face_off),
109
- wins: data.wins_face_off || 0,
110
- losses: data.losses_face_off || 0,
111
- WLRatio: divide(data.wins_face_off, data.losses_face_off)
112
- },
113
- casualBrawl: {
114
- kills: data.kills_gvg || 0,
115
- deaths: data.deaths_gvg || 0,
116
- KDRatio: divide(data.kills_gvg, data.deaths_gvg),
117
- wins: data.wins_gvg || 0,
118
- losses: data.losses_gvg || 0,
119
- WLRatio: divide(data.wins_gvg, data.losses_gvg)
120
- }
121
- };
342
+ * @type {MegaWallsModeStats}
343
+ */
344
+ this.casualBrawl = new MegaWallsModeStats(data, 'gvg');
345
+ /**
346
+ * cow kit stats
347
+ * @type {MegaWallsKitStats}
348
+ */
349
+ this.cow = new MegaWallsKitStats(data, 'cow');
350
+ /**
351
+ * hunter kit stats
352
+ * @type {MegaWallsKitStats}
353
+ */
354
+ this.hunter = new MegaWallsKitStats(data, 'hunter');
355
+ /**
356
+ * shark kit stats
357
+ * @type {MegaWallsKitStats}
358
+ */
359
+ this.shark = new MegaWallsKitStats(data, 'shark');
360
+ /**
361
+ * arcanist kit stats
362
+ * @type {MegaWallsKitStats}
363
+ */
364
+ this.arcanist = new MegaWallsKitStats(data, 'arcanist');
365
+ /**
366
+ * deadlord kit stats
367
+ * @type {MegaWallsKitStats}
368
+ */
369
+ this.deadlord = new MegaWallsKitStats(data, 'deadlord');
370
+ /**
371
+ * golem kit stats
372
+ * @type {MegaWallsKitStats}
373
+ */
374
+ this.golem = new MegaWallsKitStats(data, 'golem');
375
+ /**
376
+ * herobrine kit stats
377
+ * @type {MegaWallsKitStats}
378
+ */
379
+ this.herobrine = new MegaWallsKitStats(data, 'herobrine');
380
+ /**
381
+ * pigman kit stats
382
+ * @type {MegaWallsKitStats}
383
+ */
384
+ this.pigman = new MegaWallsKitStats(data, 'pigman');
385
+ /**
386
+ * zombie kit stats
387
+ * @type {MegaWallsKitStats}
388
+ */
389
+ this.zombie = new MegaWallsKitStats(data, 'zombie');
390
+ /**
391
+ * blaze kit stats
392
+ * @type {MegaWallsKitStats}
393
+ */
394
+ this.blaze = new MegaWallsKitStats(data, 'blaze');
395
+ /**
396
+ * enderman kit stats
397
+ * @type {MegaWallsKitStats}
398
+ */
399
+ this.enderman = new MegaWallsKitStats(data, 'enderman');
400
+ /**
401
+ * shaman kit stats
402
+ * @type {MegaWallsKitStats}
403
+ */
404
+ this.shaman = new MegaWallsKitStats(data, 'shaman');
405
+ /**
406
+ * squid kit stats
407
+ * @type {MegaWallsKitStats}
408
+ */
409
+ this.squid = new MegaWallsKitStats(data, 'squid');
410
+ /**
411
+ * creeper kit stats
412
+ * @type {MegaWallsKitStats}
413
+ */
414
+ this.creeper = new MegaWallsKitStats(data, 'creeper');
415
+ /**
416
+ * pirate kit stats
417
+ * @type {MegaWallsKitStats}
418
+ */
419
+ this.pirate = new MegaWallsKitStats(data, 'pirate');
420
+ /**
421
+ * sheep kit stats
422
+ * @type {MegaWallsKitStats}
423
+ */
424
+ this.sheep = new MegaWallsKitStats(data, 'sheep');
425
+ /**
426
+ * skeleton kit stats
427
+ * @type {MegaWallsKitStats}
428
+ */
429
+ this.skeleton = new MegaWallsKitStats(data, 'skeleton');
430
+ /**
431
+ * spider kit stats
432
+ * @type {MegaWallsKitStats}
433
+ */
434
+ this.spider = new MegaWallsKitStats(data, 'spider');
435
+ /**
436
+ * werewolf kit stats
437
+ * @type {MegaWallsKitStats}
438
+ */
439
+ this.werewolf = new MegaWallsKitStats(data, 'werewolf');
440
+ /**
441
+ * angel kit stats
442
+ * @type {MegaWallsKitStats}
443
+ */
444
+ this.angel = new MegaWallsKitStats(data, 'angel');
445
+ /**
446
+ * assassin kit stats
447
+ * @type {MegaWallsKitStats}
448
+ */
449
+ this.assassin = new MegaWallsKitStats(data, 'assassin');
450
+ /**
451
+ * automaton kit stats
452
+ * @type {MegaWallsKitStats}
453
+ */
454
+ this.automaton = new MegaWallsKitStats(data, 'automaton');
455
+ /**
456
+ * moleman kit stats
457
+ * @type {MegaWallsKitStats}
458
+ */
459
+ this.moleman = new MegaWallsKitStats(data, 'moleman');
460
+ /**
461
+ * phoenix kit stats
462
+ * @type {MegaWallsKitStats}
463
+ */
464
+ this.phoenix = new MegaWallsKitStats(data, 'phoenix');
465
+ /**
466
+ * renegade kit stats
467
+ * @type {MegaWallsKitStats}
468
+ */
469
+ this.renegade = new MegaWallsKitStats(data, 'renegade');
470
+ /**
471
+ * snowman kit stats
472
+ * @type {MegaWallsKitStats}
473
+ */
474
+ this.snowman = new MegaWallsKitStats(data, 'snowman');
122
475
  }
123
476
  }
124
- /**
125
- * @typedef {object} MegaWallsMode
126
- * @property {object} normal Normal mode
127
- * @property {object} faceoff Faceoff mode
128
- * @property {object} casualBrawl Casual brawl mode
129
- */
130
- /**
131
- * @typedef {object} MegaWallsModeStats
132
- * @property {number} kills Kills
133
- * @property {number} deaths Deaths
134
- * @property {number} KDRatio Kill Death ratio
135
- * @property {number} wins Wins
136
- * @property {number} losses Losses
137
- * @property {number} WLRatio Win Loss ratio
138
- */
477
+
139
478
  module.exports = MegaWalls;
@@ -1,4 +1,89 @@
1
1
  const divide = require('../../utils/divide');
2
+
3
+ /**
4
+ * MurderMystery stats by gamemode
5
+ */
6
+ class MurderMysteryModeStats {
7
+ /**
8
+ * Constructor
9
+ * @param {Object} data Data from API
10
+ * @param {string} gamemode String gamemode name
11
+ */
12
+ constructor(data, gamemode) {
13
+ /**
14
+ * Amount of gold picked up in games
15
+ * @type {number}
16
+ */
17
+ this.goldPickedUp = data[`coins_pickedup_${gamemode}`] || 0;
18
+ /**
19
+ * Kills
20
+ * @type {number}
21
+ */
22
+ this.kills = data[`kills_${gamemode}`] || 0;
23
+ /**
24
+ * Thrown Knife Kills
25
+ * @type {number}
26
+ */
27
+ this.thrownKnifeKills = data[`thrown_knife_kills_${gamemode}`] || 0;
28
+ /**
29
+ * Knife Kills
30
+ * @type {number}
31
+ */
32
+ this.knifeKills = data[`knife_kills_${gamemode}`] || 0;
33
+ /**
34
+ * Bow Kills
35
+ * @type {number}
36
+ */
37
+ this.bowKills = data[`bow_kills_${gamemode}`] || 0;
38
+ /**
39
+ * Trap Kills
40
+ * @type {number}
41
+ */
42
+ this.trapKills = data[`trap_kills_${gamemode}`] || 0;
43
+ /**
44
+ * Deaths
45
+ * @type {number}
46
+ */
47
+ this.deaths = data[`deaths_${gamemode}`] || 0;
48
+ /**
49
+ * Suicides
50
+ * @type {number}
51
+ */
52
+ this.suicides = data[`suicides_${gamemode}`] || 0;
53
+
54
+ /**
55
+ * Kill/Death ratio
56
+ * @type {number}
57
+ */
58
+ this.KDRatio = divide(this.kills, this.deaths);
59
+ /**
60
+ * Wins as Murderer
61
+ * @type {number}
62
+ */
63
+ this.wins = data[`wins_${gamemode}`] || 0;
64
+ /**
65
+ * Wins as Detective
66
+ * @type {number}
67
+ */
68
+ this.winsAsDetective = data[`detective_wins_${gamemode}`] || 0;
69
+ /**
70
+ * Wins as Murderer
71
+ * @type {number}
72
+ */
73
+ this.winsAsMurderer = data[`murderer_wins_${gamemode}`] || 0;
74
+ /**
75
+ * Wins as Hero
76
+ * @type {number}
77
+ */
78
+ this.winsAsHero = data[`was_hero_${gamemode}`] || 0;
79
+ /**
80
+ * Played games
81
+ * @type {number}
82
+ */
83
+ this.playedGames = data[`games_${gamemode}`] || 0;
84
+ }
85
+ }
86
+
2
87
  /**
3
88
  * MurderMystery class
4
89
  */
@@ -12,6 +97,11 @@ class MurderMystery {
12
97
  * @type {number}
13
98
  */
14
99
  this.tokens = data.coins || 0;
100
+ /**
101
+ * Amount of gold picked up in games
102
+ * @type {number}
103
+ */
104
+ this.goldPickedUp = data.coins_pickedup || 0;
15
105
  /**
16
106
  * Played games
17
107
  * @type {number}
@@ -22,6 +112,31 @@ class MurderMystery {
22
112
  * @type {number}
23
113
  */
24
114
  this.kills = data.kills || 0;
115
+ /**
116
+ * Thrown Knife Kills
117
+ * @type {number}
118
+ */
119
+ this.thrownKnifeKills = data.thrown_knife_kills || 0;
120
+ /**
121
+ * Knife Kills
122
+ * @type {number}
123
+ */
124
+ this.knifeKills = data.knife_kills || 0;
125
+ /**
126
+ * Trap Kills
127
+ * @type {number}
128
+ */
129
+ this.trapKills = data.trap_kills || 0;
130
+ /**
131
+ * Bow Kills
132
+ * @type {number}
133
+ */
134
+ this.bowKills = data.bow_kills || 0;
135
+ /**
136
+ * Kills As Murderer
137
+ * @type {number}
138
+ */
139
+ this.killsAsMurderer = data.kills_as_murderer || 0;
25
140
  /**
26
141
  * Deaths
27
142
  * @type {number}
@@ -31,7 +146,7 @@ class MurderMystery {
31
146
  * Kill/Death ratio
32
147
  * @type {number}
33
148
  */
34
- this.KDRatio = divide(data.kills, data.deaths);
149
+ this.KDRatio = divide(this.kills, this.deaths);
35
150
  /**
36
151
  * Wins as Murderer
37
152
  * @type {number}
@@ -42,52 +157,58 @@ class MurderMystery {
42
157
  * @type {number}
43
158
  */
44
159
  this.winsAsDetective = data.detective_wins || 0;
160
+ /**
161
+ * Wins as Hero
162
+ * @type {number}
163
+ */
164
+ this.winsAsHero = data.was_hero || 0;
165
+ /**
166
+ * Fastest win as the Murderer (Time in seconds)
167
+ * @type {number}
168
+ */
169
+ this.fastestWinAsMurderer = data.quickest_murderer_win_time_seconds || 0;
170
+ /**
171
+ * Fastest win as the Detective (Time in seconds)
172
+ * @type {number}
173
+ */
174
+ this.fastestWinAsDetective = data.quickest_detective_win_time_seconds || 0;
175
+ /**
176
+ * Total time Survived (Time in seconds)
177
+ * @type {number}
178
+ */
179
+ this.totalTimeSurvived = data.total_time_survived_seconds || 0;
45
180
  /**
46
181
  * Wins
47
182
  * @type {number}
48
183
  */
49
184
  this.wins = data.wins || 0;
185
+ /**
186
+ * Suicides
187
+ * @type {number}
188
+ */
189
+ this.suicides = data.suicides || 0;
190
+ /**
191
+ * Classic
192
+ * @type {MurderMysteryModeStats}
193
+ */
194
+ this.classic = new MurderMysteryModeStats(data, 'MURDER_CLASSIC');
50
195
  /**
51
196
  * Assasins
52
197
  * @type {MurderMysteryModeStats}
53
198
  */
54
- this.assassins = {
55
- kills: data.kills_MURDER_ASSASSINS || 0,
56
- deaths: data.deaths_MURDER_ASSASSINS || 0,
57
- KDRatio: divide(data.kills_MURDER_ASSASSINS, data.deaths_MURDER_ASSASSINS),
58
- wins: data.wins_MURDER_ASSASSINS || 0,
59
- playedGames: data.games_MURDER_ASSASSINS || 0
60
- };
199
+ this.assassins = new MurderMysteryModeStats(data, 'MURDER_ASSASSINS');
61
200
  /**
62
201
  * Double Up
63
202
  * @type {MurderMysteryModeStats}
64
203
  */
65
- this.doubleUp = {
66
- kills: data.kills_MURDER_DOUBLE_UP || 0,
67
- deaths: data.deaths_MURDER_DOUBLE_UP || 0,
68
- KDRatio: divide(data.kills_MURDER_DOUBLE_UP, data.deaths_MURDER_DOUBLE_UP),
69
- wins: data.wins_MURDER_DOUBLE_UP || 0,
70
- playedGames: data.games_MURDER_DOUBLE_UP || 0
71
- };
204
+ this.doubleUp = new MurderMysteryModeStats(data, 'MURDER_DOUBLE_UP');
205
+
72
206
  /**
73
207
  * Infection
74
208
  * @type {MurderMysteryModeStats}
75
209
  */
76
- this.infection = {
77
- kills: data.kills_MURDER_INFECTION || 0,
78
- deaths: data.deaths_MURDER_INFECTION || 0,
79
- KDRatio: divide(data.kills_MURDER_INFECTION, data.deaths_MURDER_INFECTION),
80
- wins: data.wins_MURDER_INFECTION || 0,
81
- playedGames: data.games_MURDER_INFECTION || 0
82
- };
210
+ this.infection = new MurderMysteryModeStats(data, 'MURDER_INFECTION');
83
211
  }
84
212
  }
85
- /**
86
- * @typedef {object} MurderMysteryModeStats
87
- * @property {number} kills Kills
88
- * @property {number} deaths Deaths
89
- * @property {number} KDRatio Kill/Death ratio
90
- * @property {number} wins Wins
91
- * @property {number} playedGames Played games
92
- */
213
+
93
214
  module.exports = MurderMystery;