@breezil/hypixel-parsers 1.0.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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/dist/arcade.d.ts +560 -0
  4. package/dist/arcade.d.ts.map +1 -0
  5. package/dist/arcade.js +619 -0
  6. package/dist/arcade.js.map +1 -0
  7. package/dist/arenabrawl.d.ts +56 -0
  8. package/dist/arenabrawl.d.ts.map +1 -0
  9. package/dist/arenabrawl.js +107 -0
  10. package/dist/arenabrawl.js.map +1 -0
  11. package/dist/bedwars.d.ts +747 -0
  12. package/dist/bedwars.d.ts.map +1 -0
  13. package/dist/bedwars.js +844 -0
  14. package/dist/bedwars.js.map +1 -0
  15. package/dist/blitz.d.ts +105 -0
  16. package/dist/blitz.d.ts.map +1 -0
  17. package/dist/blitz.js +259 -0
  18. package/dist/blitz.js.map +1 -0
  19. package/dist/buildbattle.d.ts +54 -0
  20. package/dist/buildbattle.d.ts.map +1 -0
  21. package/dist/buildbattle.js +92 -0
  22. package/dist/buildbattle.js.map +1 -0
  23. package/dist/common.d.ts +11 -0
  24. package/dist/common.d.ts.map +1 -0
  25. package/dist/common.js +34 -0
  26. package/dist/common.js.map +1 -0
  27. package/dist/copsandcrims.d.ts +201 -0
  28. package/dist/copsandcrims.d.ts.map +1 -0
  29. package/dist/copsandcrims.js +269 -0
  30. package/dist/copsandcrims.js.map +1 -0
  31. package/dist/duels.d.ts +358 -0
  32. package/dist/duels.d.ts.map +1 -0
  33. package/dist/duels.js +570 -0
  34. package/dist/duels.js.map +1 -0
  35. package/dist/guild.d.ts +49 -0
  36. package/dist/guild.d.ts.map +1 -0
  37. package/dist/guild.js +95 -0
  38. package/dist/guild.js.map +1 -0
  39. package/dist/housing.d.ts +16 -0
  40. package/dist/housing.d.ts.map +1 -0
  41. package/dist/housing.js +34 -0
  42. package/dist/housing.js.map +1 -0
  43. package/dist/index.d.ts +50 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +66 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/megawalls.d.ts +363 -0
  48. package/dist/megawalls.d.ts.map +1 -0
  49. package/dist/megawalls.js +684 -0
  50. package/dist/megawalls.js.map +1 -0
  51. package/dist/murdermystery.d.ts +293 -0
  52. package/dist/murdermystery.d.ts.map +1 -0
  53. package/dist/murdermystery.js +349 -0
  54. package/dist/murdermystery.js.map +1 -0
  55. package/dist/nbt.d.ts +37 -0
  56. package/dist/nbt.d.ts.map +1 -0
  57. package/dist/nbt.js +133 -0
  58. package/dist/nbt.js.map +1 -0
  59. package/dist/paintball.d.ts +52 -0
  60. package/dist/paintball.d.ts.map +1 -0
  61. package/dist/paintball.js +79 -0
  62. package/dist/paintball.js.map +1 -0
  63. package/dist/pit.d.ts +181 -0
  64. package/dist/pit.d.ts.map +1 -0
  65. package/dist/pit.js +262 -0
  66. package/dist/pit.js.map +1 -0
  67. package/dist/player.d.ts +338 -0
  68. package/dist/player.d.ts.map +1 -0
  69. package/dist/player.js +521 -0
  70. package/dist/player.js.map +1 -0
  71. package/dist/quakecraft.d.ts +75 -0
  72. package/dist/quakecraft.d.ts.map +1 -0
  73. package/dist/quakecraft.js +99 -0
  74. package/dist/quakecraft.js.map +1 -0
  75. package/dist/recentgames.d.ts +10 -0
  76. package/dist/recentgames.d.ts.map +1 -0
  77. package/dist/recentgames.js +27 -0
  78. package/dist/recentgames.js.map +1 -0
  79. package/dist/resources-achievements.d.ts +29 -0
  80. package/dist/resources-achievements.d.ts.map +1 -0
  81. package/dist/resources-achievements.js +67 -0
  82. package/dist/resources-achievements.js.map +1 -0
  83. package/dist/resources-challenges.d.ts +12 -0
  84. package/dist/resources-challenges.d.ts.map +1 -0
  85. package/dist/resources-challenges.js +36 -0
  86. package/dist/resources-challenges.js.map +1 -0
  87. package/dist/resources-games.d.ts +10 -0
  88. package/dist/resources-games.d.ts.map +1 -0
  89. package/dist/resources-games.js +28 -0
  90. package/dist/resources-games.js.map +1 -0
  91. package/dist/resources-guild-achievements.d.ts +23 -0
  92. package/dist/resources-guild-achievements.d.ts.map +1 -0
  93. package/dist/resources-guild-achievements.js +56 -0
  94. package/dist/resources-guild-achievements.js.map +1 -0
  95. package/dist/resources-quests.d.ts +23 -0
  96. package/dist/resources-quests.d.ts.map +1 -0
  97. package/dist/resources-quests.js +53 -0
  98. package/dist/resources-quests.js.map +1 -0
  99. package/dist/resources-vanity.d.ts +19 -0
  100. package/dist/resources-vanity.d.ts.map +1 -0
  101. package/dist/resources-vanity.js +33 -0
  102. package/dist/resources-vanity.js.map +1 -0
  103. package/dist/skyblock-auctions.d.ts +50 -0
  104. package/dist/skyblock-auctions.d.ts.map +1 -0
  105. package/dist/skyblock-auctions.js +90 -0
  106. package/dist/skyblock-auctions.js.map +1 -0
  107. package/dist/skyblock-bazaar.d.ts +25 -0
  108. package/dist/skyblock-bazaar.d.ts.map +1 -0
  109. package/dist/skyblock-bazaar.js +54 -0
  110. package/dist/skyblock-bazaar.js.map +1 -0
  111. package/dist/skyblock-bingo.d.ts +8 -0
  112. package/dist/skyblock-bingo.d.ts.map +1 -0
  113. package/dist/skyblock-bingo.js +19 -0
  114. package/dist/skyblock-bingo.js.map +1 -0
  115. package/dist/skyblock-items.d.ts +150 -0
  116. package/dist/skyblock-items.d.ts.map +1 -0
  117. package/dist/skyblock-items.js +247 -0
  118. package/dist/skyblock-items.js.map +1 -0
  119. package/dist/skyblock-misc.d.ts +91 -0
  120. package/dist/skyblock-misc.d.ts.map +1 -0
  121. package/dist/skyblock-misc.js +159 -0
  122. package/dist/skyblock-misc.js.map +1 -0
  123. package/dist/skyblock-museum.d.ts +24 -0
  124. package/dist/skyblock-museum.d.ts.map +1 -0
  125. package/dist/skyblock-museum.js +51 -0
  126. package/dist/skyblock-museum.js.map +1 -0
  127. package/dist/skyblock-news.d.ts +12 -0
  128. package/dist/skyblock-news.d.ts.map +1 -0
  129. package/dist/skyblock-news.js +25 -0
  130. package/dist/skyblock-news.js.map +1 -0
  131. package/dist/skyblock-resources.d.ts +94 -0
  132. package/dist/skyblock-resources.d.ts.map +1 -0
  133. package/dist/skyblock-resources.js +175 -0
  134. package/dist/skyblock-resources.js.map +1 -0
  135. package/dist/skyblock.d.ts +972 -0
  136. package/dist/skyblock.d.ts.map +1 -0
  137. package/dist/skyblock.js +1371 -0
  138. package/dist/skyblock.js.map +1 -0
  139. package/dist/skywars.d.ts +319 -0
  140. package/dist/skywars.d.ts.map +1 -0
  141. package/dist/skywars.js +611 -0
  142. package/dist/skywars.js.map +1 -0
  143. package/dist/smashheroes.d.ts +126 -0
  144. package/dist/smashheroes.d.ts.map +1 -0
  145. package/dist/smashheroes.js +206 -0
  146. package/dist/smashheroes.js.map +1 -0
  147. package/dist/static.d.ts +42 -0
  148. package/dist/static.d.ts.map +1 -0
  149. package/dist/static.js +106 -0
  150. package/dist/static.js.map +1 -0
  151. package/dist/status.d.ts +9 -0
  152. package/dist/status.d.ts.map +1 -0
  153. package/dist/status.js +18 -0
  154. package/dist/status.js.map +1 -0
  155. package/dist/tntgames.d.ts +189 -0
  156. package/dist/tntgames.d.ts.map +1 -0
  157. package/dist/tntgames.js +283 -0
  158. package/dist/tntgames.js.map +1 -0
  159. package/dist/turbokartracers.d.ts +85 -0
  160. package/dist/turbokartracers.d.ts.map +1 -0
  161. package/dist/turbokartracers.js +165 -0
  162. package/dist/turbokartracers.js.map +1 -0
  163. package/dist/uhc.d.ts +55 -0
  164. package/dist/uhc.d.ts.map +1 -0
  165. package/dist/uhc.js +94 -0
  166. package/dist/uhc.js.map +1 -0
  167. package/dist/vampirez.d.ts +75 -0
  168. package/dist/vampirez.d.ts.map +1 -0
  169. package/dist/vampirez.js +104 -0
  170. package/dist/vampirez.js.map +1 -0
  171. package/dist/walls.d.ts +96 -0
  172. package/dist/walls.d.ts.map +1 -0
  173. package/dist/walls.js +122 -0
  174. package/dist/walls.js.map +1 -0
  175. package/dist/warlords.d.ts +229 -0
  176. package/dist/warlords.d.ts.map +1 -0
  177. package/dist/warlords.js +309 -0
  178. package/dist/warlords.js.map +1 -0
  179. package/package.json +55 -0
@@ -0,0 +1,684 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMegaWalls = parseMegaWalls;
4
+ const common_1 = require("./common");
5
+ const CLASSES = [
6
+ "Arcanist",
7
+ "Blaze",
8
+ "Creeper",
9
+ "Dreadlord",
10
+ "Enderman",
11
+ "Golem",
12
+ "Herobrine",
13
+ "Hunter",
14
+ "Pigman",
15
+ "Pirate",
16
+ "Shaman",
17
+ "Skeleton",
18
+ "Spider",
19
+ "Squid",
20
+ "Zombie",
21
+ ];
22
+ const KITS = [
23
+ "cow",
24
+ "hunter",
25
+ "shark",
26
+ "arcanist",
27
+ "dreadlord",
28
+ "golem",
29
+ "herobrine",
30
+ "pigman",
31
+ "zombie",
32
+ "blaze",
33
+ "enderman",
34
+ "shaman",
35
+ "squid",
36
+ "creeper",
37
+ "pirate",
38
+ "sheep",
39
+ "skeleton",
40
+ "spider",
41
+ "werewolf",
42
+ "angel",
43
+ "assassin",
44
+ "automaton",
45
+ "moleman",
46
+ "phoenix",
47
+ "renegade",
48
+ "snowman",
49
+ "dragon",
50
+ ];
51
+ const ACTIVITY_STATS = [
52
+ "absorption_potions_drunk",
53
+ "allies_healed",
54
+ "amount_healed",
55
+ "apples_eaten",
56
+ "arrows_fired",
57
+ "arrows_from_rend",
58
+ "arrows_hit",
59
+ "assists",
60
+ "beds_crafted",
61
+ "beds_placed",
62
+ "berserked_kills",
63
+ "blazes_spawned",
64
+ "blizzard_seconds_slow",
65
+ "blocks_broken",
66
+ "bread_crafted",
67
+ "bread_eaten",
68
+ "bucket_barriers_broken",
69
+ "damage_dealt",
70
+ "dark_matter_armor",
71
+ "deaths",
72
+ "defender_assists",
73
+ "defender_final_assists",
74
+ "defender_final_kills",
75
+ "defender_kills",
76
+ "diamond_ore_broken",
77
+ "divine_interventions",
78
+ "enduranced_final_kills",
79
+ "enemies_hit",
80
+ "energy_from_grappling_hook",
81
+ "energy_syphoned",
82
+ "final_assists",
83
+ "final_assists_after_final_killed",
84
+ "final_assists_melee",
85
+ "final_deaths",
86
+ "final_kills_after_final_killed",
87
+ "final_kills_after_grappling_hook",
88
+ "final_kills_below_10_hp",
89
+ "final_kills_below_5_hp",
90
+ "final_kills_ranged",
91
+ "final_kills_ranged_30",
92
+ "final_kills_ranged_50",
93
+ "final_kills_with_fire",
94
+ "final_water_kills",
95
+ "finals_with_strength",
96
+ "fish_eaten",
97
+ "food_eaten",
98
+ "force_of_nature_final_assists",
99
+ "force_of_nature_final_kills",
100
+ "games_beds_placed",
101
+ "games_played",
102
+ "golden_apples_eaten",
103
+ "healed_low_teammates",
104
+ "heroism_triggers",
105
+ "heroism_triggers_in_dm",
106
+ "inner_ink_blinds",
107
+ "iron_armor_gifted",
108
+ "iron_armor_gifted_december",
109
+ "iron_heart_absorption",
110
+ "iron_ore_broken",
111
+ "iron_sword_crafted",
112
+ "junk_items_eaten",
113
+ "kills_ranged",
114
+ "kills_with_strength",
115
+ "master_alechmy_hearts",
116
+ "meters_fallen",
117
+ "meters_travelled",
118
+ "on_fire_final_kills",
119
+ "on_fire_kills",
120
+ "perfect_disguises",
121
+ "players_healed",
122
+ "potions_drunk",
123
+ "potions_splashed",
124
+ "primed_tnt_kills",
125
+ "resistance_time_seconds",
126
+ "self_healed",
127
+ "snowmen_built",
128
+ "snowmen_players_hit",
129
+ "steaks_eaten",
130
+ "strikes_from_cloak",
131
+ "sword_crafted",
132
+ "time_played",
133
+ "total_deaths",
134
+ "total_final_kills",
135
+ "total_kills",
136
+ "treasures_found",
137
+ "ultra_pasteurized_drank",
138
+ "venom_strike_poison_damage",
139
+ "water_kills",
140
+ "wither_damage",
141
+ "wither_kills",
142
+ "wither_kills_last_alive",
143
+ "wood_chopped",
144
+ ];
145
+ const ABILITY_SLOT_STATS = [
146
+ "allies_healed",
147
+ "amount_healed",
148
+ "assists",
149
+ "blazes_spawned",
150
+ "blocks_broken",
151
+ "damage_dealt",
152
+ "defender_assists",
153
+ "defender_final_assists",
154
+ "defender_final_kills",
155
+ "defender_kills",
156
+ "enduranced_final_kills",
157
+ "enemies_hit",
158
+ "final_assists",
159
+ "final_assists_after_final_killed",
160
+ "final_assists_melee",
161
+ "final_kills_after_final_killed",
162
+ "final_kills_after_grappling_hook",
163
+ "final_kills_below_10_hp",
164
+ "final_kills_below_5_hp",
165
+ "healed_low_teammates",
166
+ "heroism_triggers",
167
+ "heroism_triggers_in_dm",
168
+ "inner_ink_blinds",
169
+ "iron_heart_absorption",
170
+ "iron_ore_broken",
171
+ "junk_items_eaten",
172
+ "meters_travelled",
173
+ "on_fire_final_kills",
174
+ "on_fire_kills",
175
+ "perfect_disguises",
176
+ "players_healed",
177
+ "resistance_time_seconds",
178
+ "self_healed",
179
+ "total_final_kills",
180
+ "total_kills",
181
+ "venom_strike_poison_damage",
182
+ ];
183
+ const STAT_KEYS = [
184
+ "absorptionPotionsDrunk",
185
+ "alliesHealed",
186
+ "amountHealed",
187
+ "applesEaten",
188
+ "arrowsFired",
189
+ "arrowsFromRend",
190
+ "arrowsHit",
191
+ "assists",
192
+ "bedsCrafted",
193
+ "bedsPlaced",
194
+ "berserkedKills",
195
+ "blazesSpawned",
196
+ "blizzardSecondsSlow",
197
+ "blocksBroken",
198
+ "breadCrafted",
199
+ "breadEaten",
200
+ "bucketBarriersBroken",
201
+ "damageDealt",
202
+ "darkMatterArmor",
203
+ "deaths",
204
+ "defenderAssists",
205
+ "defenderFinalAssists",
206
+ "defenderFinalKills",
207
+ "defenderKills",
208
+ "diamondOreBroken",
209
+ "divineInterventions",
210
+ "endurancedFinalKills",
211
+ "enemiesHit",
212
+ "energyFromGrapplingHook",
213
+ "energySyphoned",
214
+ "finalAssists",
215
+ "finalAssistsAfterFinalKilled",
216
+ "finalAssistsMelee",
217
+ "finalDeaths",
218
+ "finalKillsAfterFinalKilled",
219
+ "finalKillsAfterGrapplingHook",
220
+ "finalKillsBelow10Hp",
221
+ "finalKillsBelow5Hp",
222
+ "finalKillsRanged",
223
+ "finalKillsRanged30",
224
+ "finalKillsRanged50",
225
+ "finalKillsWithFire",
226
+ "finalWaterKills",
227
+ "finalsWithStrength",
228
+ "fishEaten",
229
+ "foodEaten",
230
+ "forceOfNatureFinalAssists",
231
+ "forceOfNatureFinalKills",
232
+ "gamesBedsPlaced",
233
+ "gamesPlayed",
234
+ "goldenApplesEaten",
235
+ "healedLowTeammates",
236
+ "heroismTriggers",
237
+ "heroismTriggersInDm",
238
+ "innerInkBlinds",
239
+ "ironArmorGifted",
240
+ "ironArmorGiftedDecember",
241
+ "ironHeartAbsorption",
242
+ "ironOreBroken",
243
+ "ironSwordCrafted",
244
+ "junkItemsEaten",
245
+ "killsRanged",
246
+ "killsWithStrength",
247
+ "masterAlechmyHearts",
248
+ "metersFallen",
249
+ "metersTravelled",
250
+ "onFireFinalKills",
251
+ "onFireKills",
252
+ "perfectDisguises",
253
+ "playersHealed",
254
+ "potionsDrunk",
255
+ "potionsSplashed",
256
+ "primedTntKills",
257
+ "resistanceTimeSeconds",
258
+ "selfHealed",
259
+ "snowmenBuilt",
260
+ "snowmenPlayersHit",
261
+ "steaksEaten",
262
+ "strikesFromCloak",
263
+ "swordCrafted",
264
+ "timePlayed",
265
+ "totalDeaths",
266
+ "totalFinalKills",
267
+ "totalKills",
268
+ "treasuresFound",
269
+ "ultraPasteurizedDrank",
270
+ "venomStrikePoisonDamage",
271
+ "waterKills",
272
+ "witherDamage",
273
+ "witherKills",
274
+ "witherKillsLastAlive",
275
+ "woodChopped",
276
+ ];
277
+ const ABILITY_SLOT_KEYS = [
278
+ "alliesHealed",
279
+ "amountHealed",
280
+ "assists",
281
+ "blazesSpawned",
282
+ "blocksBroken",
283
+ "damageDealt",
284
+ "defenderAssists",
285
+ "defenderFinalAssists",
286
+ "defenderFinalKills",
287
+ "defenderKills",
288
+ "endurancedFinalKills",
289
+ "enemiesHit",
290
+ "finalAssists",
291
+ "finalAssistsAfterFinalKilled",
292
+ "finalAssistsMelee",
293
+ "finalKillsAfterFinalKilled",
294
+ "finalKillsAfterGrapplingHook",
295
+ "finalKillsBelow10Hp",
296
+ "finalKillsBelow5Hp",
297
+ "healedLowTeammates",
298
+ "heroismTriggers",
299
+ "heroismTriggersInDm",
300
+ "innerInkBlinds",
301
+ "ironHeartAbsorption",
302
+ "ironOreBroken",
303
+ "junkItemsEaten",
304
+ "metersTravelled",
305
+ "onFireFinalKills",
306
+ "onFireKills",
307
+ "perfectDisguises",
308
+ "playersHealed",
309
+ "resistanceTimeSeconds",
310
+ "selfHealed",
311
+ "totalFinalKills",
312
+ "totalKills",
313
+ "venomStrikePoisonDamage",
314
+ ];
315
+ function modeStats(data, base) {
316
+ return {
317
+ overall: (0, common_1.num)(data, base),
318
+ standard: (0, common_1.num)(data, `${base}_standard`),
319
+ faceOff: (0, common_1.num)(data, `${base}_face_off`),
320
+ gvg: (0, common_1.num)(data, `${base}_gvg`),
321
+ };
322
+ }
323
+ function recordStats(data, base) {
324
+ return {
325
+ overall: (0, common_1.num)(data, base),
326
+ standard: (0, common_1.num)(data, `${base}_standard`),
327
+ faceOff: (0, common_1.num)(data, `${base}_face_off`),
328
+ gvg: (0, common_1.num)(data, `${base}_gvg`),
329
+ practice: (0, common_1.num)(data, `${base}_practice`),
330
+ };
331
+ }
332
+ function killStats(data, base) {
333
+ return {
334
+ overall: (0, common_1.num)(data, base),
335
+ standard: (0, common_1.num)(data, `${base}_standard`),
336
+ faceOff: (0, common_1.num)(data, `${base}_face_off`),
337
+ gvg: (0, common_1.num)(data, `${base}_gvg`),
338
+ melee: modeStats(data, `${base}_melee`),
339
+ meleeBehind: modeStats(data, `${base}_melee_behind`),
340
+ };
341
+ }
342
+ function activationStats(data, prefix) {
343
+ const base = `${prefix}activations`;
344
+ return {
345
+ overall: (0, common_1.num)(data, base),
346
+ standard: (0, common_1.num)(data, `${base}_standard`),
347
+ faceOff: (0, common_1.num)(data, `${base}_face_off`),
348
+ gvg: (0, common_1.num)(data, `${base}_gvg`),
349
+ deathmatch: modeStats(data, `${base}_deathmatch`),
350
+ };
351
+ }
352
+ function blocksPlacedStats(data, prefix) {
353
+ const base = `${prefix}blocks_placed`;
354
+ return {
355
+ overall: (0, common_1.num)(data, base),
356
+ standard: (0, common_1.num)(data, `${base}_standard`),
357
+ faceOff: (0, common_1.num)(data, `${base}_face_off`),
358
+ gvg: (0, common_1.num)(data, `${base}_gvg`),
359
+ preparation: modeStats(data, `${base}_preparation`),
360
+ };
361
+ }
362
+ function distanceStats(data, prefix) {
363
+ const base = `${prefix}meters_walked`;
364
+ return {
365
+ overall: (0, common_1.num)(data, base),
366
+ standard: (0, common_1.num)(data, `${base}_standard`),
367
+ faceOff: (0, common_1.num)(data, `${base}_face_off`),
368
+ gvg: (0, common_1.num)(data, `${base}_gvg`),
369
+ speed: modeStats(data, `${base}_speed`),
370
+ };
371
+ }
372
+ function activityStats(data, prefix) {
373
+ const out = {};
374
+ STAT_KEYS.forEach((key, index) => {
375
+ out[key] = modeStats(data, `${prefix}${ACTIVITY_STATS[index]}`);
376
+ });
377
+ out.kills = killStats(data, `${prefix}kills`);
378
+ out.finalKills = killStats(data, `${prefix}final_kills`);
379
+ out.activations = activationStats(data, prefix);
380
+ out.blocksPlaced = blocksPlacedStats(data, prefix);
381
+ out.metersWalked = distanceStats(data, prefix);
382
+ out.wins = recordStats(data, `${prefix}wins`);
383
+ out.losses = recordStats(data, `${prefix}losses`);
384
+ return out;
385
+ }
386
+ function abilitySlotStats(data, prefix) {
387
+ const out = {};
388
+ ABILITY_SLOT_KEYS.forEach((key, index) => {
389
+ out[key] = modeStats(data, `${prefix}${ABILITY_SLOT_STATS[index]}`);
390
+ });
391
+ out.kills = killStats(data, `${prefix}kills`);
392
+ out.finalKills = killStats(data, `${prefix}final_kills`);
393
+ out.activations = activationStats(data, prefix);
394
+ return out;
395
+ }
396
+ function abilityGSlotStats(data, prefix) {
397
+ return {
398
+ activations: activationStats(data, prefix),
399
+ amountHealed: modeStats(data, `${prefix}amount_healed`),
400
+ darkMatterArmor: modeStats(data, `${prefix}dark_matter_armor`),
401
+ };
402
+ }
403
+ function kitTiers(data, prefix) {
404
+ return {
405
+ a: (0, common_1.num)(data, `${prefix}a`),
406
+ b: (0, common_1.num)(data, `${prefix}b`),
407
+ c: (0, common_1.num)(data, `${prefix}c`),
408
+ d: (0, common_1.num)(data, `${prefix}d`),
409
+ g: (0, common_1.num)(data, `${prefix}g`),
410
+ };
411
+ }
412
+ function kitInfused(data, kit) {
413
+ return {
414
+ a: (0, common_1.num)(data, `${kit}_a_infused`),
415
+ b: (0, common_1.num)(data, `${kit}_b_infused`),
416
+ c: (0, common_1.num)(data, `${kit}_c_infused`),
417
+ d: (0, common_1.num)(data, `${kit}_d_infused`),
418
+ g: (0, common_1.num)(data, `${kit}_g_infused`),
419
+ };
420
+ }
421
+ function kitStats(data, kit) {
422
+ const prefix = `${kit}_`;
423
+ return {
424
+ stats: activityStats(data, prefix),
425
+ tiers: kitTiers(data, prefix),
426
+ newTiers: kitTiers(data, `${kit}_new_`),
427
+ infused: kitInfused(data, kit),
428
+ enderchestLevel: (0, common_1.num)(data, `${prefix}enderchest_level`),
429
+ classPoints: (0, common_1.num)(data, `${prefix}class_points`),
430
+ prestigeLevel: (0, common_1.num)(data, `${prefix}prestige_level`),
431
+ reclaimed: (0, common_1.num)(data, `${prefix}reclaimed`),
432
+ abilitySlots: {
433
+ a: abilitySlotStats(data, `${prefix}a_`),
434
+ b: abilitySlotStats(data, `${prefix}b_`),
435
+ c: abilitySlotStats(data, `${prefix}c_`),
436
+ g: abilityGSlotStats(data, `${prefix}g_`),
437
+ },
438
+ };
439
+ }
440
+ function classBreakdown(data, klass) {
441
+ return {
442
+ kills: (0, common_1.num)(data, `kills_${klass}`),
443
+ killsNew: (0, common_1.num)(data, `kills_new_${klass}`),
444
+ deaths: (0, common_1.num)(data, `deaths_${klass}`),
445
+ deathsNew: (0, common_1.num)(data, `deaths_new_${klass}`),
446
+ wins: (0, common_1.num)(data, `wins_${klass}`),
447
+ losses: (0, common_1.num)(data, `losses_${klass}`),
448
+ assists: (0, common_1.num)(data, `assists_${klass}`),
449
+ finalKills: (0, common_1.num)(data, `finalKills_${klass}`),
450
+ finalAssists: (0, common_1.num)(data, `finalAssists_${klass}`),
451
+ faceOffWins: (0, common_1.num)(data, `wins_face_off_${klass}`),
452
+ faceOffLosses: (0, common_1.num)(data, `losses_face_off_${klass}`),
453
+ practiceWins: (0, common_1.num)(data, `wins_practice_${klass}`),
454
+ practiceLosses: (0, common_1.num)(data, `losses_practice_${klass}`),
455
+ };
456
+ }
457
+ function weeklyClassBreakdown(data, klass) {
458
+ return {
459
+ kills: (0, common_1.num)(data, `weeklyKills_${klass}`),
460
+ deaths: (0, common_1.num)(data, `weeklyDeaths_${klass}`),
461
+ wins: (0, common_1.num)(data, `weeklyWins_${klass}`),
462
+ losses: (0, common_1.num)(data, `weeklyLosses_${klass}`),
463
+ finalKills: (0, common_1.num)(data, `weeklyFinalKills_${klass}`),
464
+ faceOffWins: (0, common_1.num)(data, `weeklyWins_face_off_${klass}`),
465
+ faceOffLosses: (0, common_1.num)(data, `weeklyLosses_face_off_${klass}`),
466
+ practiceWins: (0, common_1.num)(data, `weeklyWins_practice_${klass}`),
467
+ practiceLosses: (0, common_1.num)(data, `weeklyLosses_practice_${klass}`),
468
+ };
469
+ }
470
+ function periodTierFinalKills(data, period, klass) {
471
+ return {
472
+ a: (0, common_1.num)(data, `${period}_finalKills_${klass}_a`),
473
+ b: (0, common_1.num)(data, `${period}_finalKills_${klass}_b`),
474
+ };
475
+ }
476
+ function mapClasses(build) {
477
+ const out = {};
478
+ for (const klass of CLASSES) {
479
+ out[klass] = build(klass);
480
+ }
481
+ return out;
482
+ }
483
+ function classSkillLevels(progress) {
484
+ return {
485
+ a: (0, common_1.num)(progress, "skill_level_a"),
486
+ b: (0, common_1.num)(progress, "skill_level_b"),
487
+ c: (0, common_1.num)(progress, "skill_level_c"),
488
+ d: (0, common_1.num)(progress, "skill_level_d"),
489
+ g: (0, common_1.num)(progress, "skill_level_g"),
490
+ };
491
+ }
492
+ function classSkillFlags(progress, suffix) {
493
+ return {
494
+ a: (0, common_1.bool)(progress, `skill_level_a${suffix}`),
495
+ b: (0, common_1.bool)(progress, `skill_level_b${suffix}`),
496
+ c: (0, common_1.bool)(progress, `skill_level_c${suffix}`),
497
+ d: (0, common_1.bool)(progress, `skill_level_d${suffix}`),
498
+ g: (0, common_1.bool)(progress, `skill_level_g${suffix}`),
499
+ };
500
+ }
501
+ function prestigeTag(progress) {
502
+ const raw = progress.prestige_tag;
503
+ const tag = typeof raw === "object" && raw !== null && !Array.isArray(raw)
504
+ ? raw
505
+ : {};
506
+ return {
507
+ classPointsShowcase: (0, common_1.bool)(tag, "class_points_showcase"),
508
+ type: (0, common_1.str)(tag, "type"),
509
+ };
510
+ }
511
+ function parseClasses(stats) {
512
+ const raw = stats.classes;
513
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
514
+ return {};
515
+ }
516
+ const out = {};
517
+ for (const [name, value] of Object.entries(raw)) {
518
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
519
+ continue;
520
+ }
521
+ const progress = value;
522
+ out[name] = {
523
+ unlocked: (0, common_1.bool)(progress, "unlocked"),
524
+ prestige: (0, common_1.num)(progress, "prestige"),
525
+ enderchestRows: (0, common_1.num)(progress, "enderchest_rows"),
526
+ checked4: (0, common_1.bool)(progress, "checked4"),
527
+ prestigeChecked4: (0, common_1.bool)(progress, "prestigeChecked4"),
528
+ skillLevels: classSkillLevels(progress),
529
+ skillLevelsChecked4: classSkillFlags(progress, "Checked4"),
530
+ skillLevelsChecked5: classSkillFlags(progress, "Checked5"),
531
+ prestigeTag: prestigeTag(progress),
532
+ };
533
+ }
534
+ return out;
535
+ }
536
+ function parseKitInventories(stats) {
537
+ const out = {};
538
+ for (const key of Object.keys(stats)) {
539
+ if (!key.endsWith("Inventory")) {
540
+ continue;
541
+ }
542
+ const raw = stats[key];
543
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
544
+ continue;
545
+ }
546
+ const inventory = {};
547
+ for (const [slot, value] of Object.entries(raw)) {
548
+ if (typeof value === "string") {
549
+ inventory[slot] = value;
550
+ }
551
+ }
552
+ out[key] = inventory;
553
+ }
554
+ return out;
555
+ }
556
+ function parseStringArray(value) {
557
+ return Array.isArray(value)
558
+ ? value.filter((entry) => typeof entry === "string")
559
+ : [];
560
+ }
561
+ function parseVotes(stats) {
562
+ const out = {};
563
+ for (const key of Object.keys(stats)) {
564
+ if (key.startsWith("votes_") && typeof stats[key] === "number") {
565
+ out[key.slice("votes_".length)] = stats[key];
566
+ }
567
+ }
568
+ return out;
569
+ }
570
+ function parseChosenSkins(stats) {
571
+ const out = {};
572
+ for (const key of Object.keys(stats)) {
573
+ if (key.startsWith("chosen_skin_") && typeof stats[key] === "string") {
574
+ out[key.slice("chosen_skin_".length)] = stats[key];
575
+ }
576
+ }
577
+ return out;
578
+ }
579
+ function parseLeaderboardSettings(stats) {
580
+ const raw = stats.leaderboardSettings;
581
+ const settings = typeof raw === "object" && raw !== null && !Array.isArray(raw)
582
+ ? raw
583
+ : {};
584
+ return {
585
+ resetType: (0, common_1.str)(settings, "resetType"),
586
+ class: (0, common_1.str)(settings, "class"),
587
+ };
588
+ }
589
+ /** Parses a player's Mega Walls stats (`stats.Walls3`) into a typed object. */
590
+ function parseMegaWalls(stats) {
591
+ if (typeof stats !== "object" || stats === null) {
592
+ return null;
593
+ }
594
+ const kits = {};
595
+ for (const kit of KITS) {
596
+ kits[kit] = kitStats(stats, kit);
597
+ }
598
+ return {
599
+ coins: (0, common_1.num)(stats, "coins"),
600
+ witherCoins: (0, common_1.num)(stats, "witherCoins"),
601
+ classPoints: (0, common_1.num)(stats, "class_points"),
602
+ classPointsVersion: (0, common_1.num)(stats, "class_points_version"),
603
+ mythicFavor: (0, common_1.num)(stats, "mythic_favor"),
604
+ exchangeFavorBought: (0, common_1.num)(stats, "exchange_favor_bought"),
605
+ exchangeFavorSold: (0, common_1.num)(stats, "exchange_favor_sold"),
606
+ newEnderchest: (0, common_1.num)(stats, "new_echest"),
607
+ newPrestige: (0, common_1.num)(stats, "new_prestige"),
608
+ pickaxeLevel: (0, common_1.num)(stats, "pickaxeLevel"),
609
+ pickaxeRefunded: (0, common_1.num)(stats, "pickaxe_refunded"),
610
+ playStreak: (0, common_1.num)(stats, "play_streak"),
611
+ refundedCoinsPp: (0, common_1.num)(stats, "refundedCoinsPP"),
612
+ shoutTotal: (0, common_1.num)(stats, "shoutTotal"),
613
+ chosenClass: (0, common_1.str)(stats, "chosen_class"),
614
+ chosenKillSign: (0, common_1.str)(stats, "chosen_kill_sign"),
615
+ killMessage: (0, common_1.str)(stats, "kill_message"),
616
+ dreadlordEffect: (0, common_1.str)(stats, "Dreadlord_effect"),
617
+ activeChallengeMap: (0, common_1.str)(stats, "activeChallengeMap"),
618
+ warCry: (0, common_1.str)(stats, "war_cry"),
619
+ smileyKills: (0, common_1.str)(stats, "smiley_kills"),
620
+ blood: (0, common_1.bool)(stats, "blood"),
621
+ mutationsVisibility: (0, common_1.bool)(stats, "mutations_visibility"),
622
+ gvgDecide: (0, common_1.bool)(stats, "gvg_decide"),
623
+ faceOffJoinNoParty: (0, common_1.bool)(stats, "faceoff_join_noparty"),
624
+ toggleHints: (0, common_1.bool)(stats, "toggle_hints"),
625
+ toggleNotifications: (0, common_1.bool)(stats, "toggle_notifications"),
626
+ witherHealthHearts: (0, common_1.bool)(stats, "wither_health_hearts"),
627
+ colorblind: {
628
+ enabled: (0, common_1.bool)(stats, "colorblind"),
629
+ bold: (0, common_1.bool)(stats, "colorblind_bold"),
630
+ italic: (0, common_1.bool)(stats, "colorblind_italic"),
631
+ red: (0, common_1.str)(stats, "colorblind_red"),
632
+ green: (0, common_1.str)(stats, "colorblind_green"),
633
+ blue: (0, common_1.str)(stats, "colorblind_blue"),
634
+ yellow: (0, common_1.str)(stats, "colorblind_yellow"),
635
+ },
636
+ packages: parseStringArray(stats.packages),
637
+ cakesFoundByName: parseStringArray(stats.cakes_found_by_name),
638
+ votes: parseVotes(stats),
639
+ chosenSkins: parseChosenSkins(stats),
640
+ finalKillsLegacy: (0, common_1.num)(stats, "finalKills"),
641
+ finalAssistsLegacy: (0, common_1.num)(stats, "finalAssists"),
642
+ finalDeathsLegacy: (0, common_1.num)(stats, "finalDeaths"),
643
+ witherDamageLegacy: (0, common_1.num)(stats, "witherDamage"),
644
+ killsNewLegacy: (0, common_1.num)(stats, "kills_new"),
645
+ deathsNewLegacy: (0, common_1.num)(stats, "deaths_new"),
646
+ cakesFound: modeStats(stats, "cakes_found"),
647
+ plays: {
648
+ standard: (0, common_1.num)(stats, "plays_standard"),
649
+ faceOff: (0, common_1.num)(stats, "plays_face_off"),
650
+ practice: (0, common_1.num)(stats, "plays_practice"),
651
+ },
652
+ stats: activityStats(stats, ""),
653
+ byClass: mapClasses((klass) => classBreakdown(stats, klass)),
654
+ weekly: {
655
+ kills: (0, common_1.num)(stats, "weeklyKills"),
656
+ deaths: (0, common_1.num)(stats, "weeklyDeaths"),
657
+ wins: (0, common_1.num)(stats, "weeklyWins"),
658
+ losses: (0, common_1.num)(stats, "weeklyLosses"),
659
+ finalKills: (0, common_1.num)(stats, "weeklyFinalKills"),
660
+ faceOffWins: (0, common_1.num)(stats, "weeklyWins_face_off"),
661
+ faceOffLosses: (0, common_1.num)(stats, "weeklyLosses_face_off"),
662
+ practiceWins: (0, common_1.num)(stats, "weeklyWins_practice"),
663
+ practiceLosses: (0, common_1.num)(stats, "weeklyLosses_practice"),
664
+ byClass: mapClasses((klass) => weeklyClassBreakdown(stats, klass)),
665
+ finalKillsByTier: {
666
+ a: (0, common_1.num)(stats, "weekly_finalKills_a"),
667
+ b: (0, common_1.num)(stats, "weekly_finalKills_b"),
668
+ },
669
+ finalKillsByClassTier: mapClasses((klass) => periodTierFinalKills(stats, "weekly", klass)),
670
+ },
671
+ monthly: {
672
+ finalKillsByTier: {
673
+ a: (0, common_1.num)(stats, "monthly_finalKills_a"),
674
+ b: (0, common_1.num)(stats, "monthly_finalKills_b"),
675
+ },
676
+ finalKillsByClassTier: mapClasses((klass) => periodTierFinalKills(stats, "monthly", klass)),
677
+ },
678
+ classes: parseClasses(stats),
679
+ kits,
680
+ kitInventories: parseKitInventories(stats),
681
+ leaderboardSettings: parseLeaderboardSettings(stats),
682
+ };
683
+ }
684
+ //# sourceMappingURL=megawalls.js.map