@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,844 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseBedWars = parseBedWars;
4
+ const common_1 = require("./common");
5
+ const DAMAGE_TYPES = {
6
+ total: "",
7
+ custom: "custom_",
8
+ drowning: "drowning_",
9
+ entityAttack: "entity_attack_",
10
+ entityExplosion: "entity_explosion_",
11
+ fall: "fall_",
12
+ fire: "fire_",
13
+ fireTick: "fire_tick_",
14
+ magic: "magic_",
15
+ projectile: "projectile_",
16
+ suffocation: "suffocation_",
17
+ void: "void_",
18
+ lava: "lava_",
19
+ contact: "contact_",
20
+ thorns: "thorns_",
21
+ };
22
+ const SOLO_VARIANTS = {
23
+ oneBlock: "eight_one_oneblock_",
24
+ rush: "eight_one_rush_",
25
+ ultimate: "eight_one_ultimate_",
26
+ };
27
+ const DOUBLES_VARIANTS = {
28
+ tourneyOne: "tourney_bedwars_eight_two_1_",
29
+ tourneyZero: "tourney_bedwars_eight_two_0_",
30
+ armed: "eight_two_armed_",
31
+ lucky: "eight_two_lucky_",
32
+ rush: "eight_two_rush_",
33
+ swap: "eight_two_swap_",
34
+ totallyNormal: "eight_two_totallynormal_",
35
+ ultimate: "eight_two_ultimate_",
36
+ underworld: "eight_two_underworld_",
37
+ voidless: "eight_two_voidless_",
38
+ };
39
+ const FOURS_VARIANTS = {
40
+ tourneyOne: "tourney_bedwars4s_1_",
41
+ tourneyZero: "tourney_bedwars4s_0_",
42
+ armed: "four_four_armed_",
43
+ lucky: "four_four_lucky_",
44
+ rush: "four_four_rush_",
45
+ swap: "four_four_swap_",
46
+ ultimate: "four_four_ultimate_",
47
+ underworld: "four_four_underworld_",
48
+ voidless: "four_four_voidless_",
49
+ };
50
+ const FOUR_VS_FOUR_VARIANTS = {
51
+ tourney: "tourney_bedwars_two_four_0_",
52
+ };
53
+ const BEDWARS_BOXES = {
54
+ openedChests: "Bedwars_openedChests",
55
+ openedCommons: "Bedwars_openedCommons",
56
+ openedEpics: "Bedwars_openedEpics",
57
+ openedLegendaries: "Bedwars_openedLegendaries",
58
+ openedRares: "Bedwars_openedRares",
59
+ box: "bedwars_box",
60
+ commons: "bedwars_box_commons",
61
+ epics: "bedwars_box_epics",
62
+ legendaries: "bedwars_box_legendaries",
63
+ rares: "bedwars_box_rares",
64
+ total: "bedwars_boxes",
65
+ christmas: "bedwars_christmas_boxes",
66
+ easter: "bedwars_easter_boxes",
67
+ golden: "bedwars_golden_boxes",
68
+ halloween: "bedwars_halloween_boxes",
69
+ lunar: "bedwars_lunar_boxes",
70
+ };
71
+ const BEDWARS_FREE_EVENT_KEYS = {
72
+ christmasBoxes2017: "free_event_key_bedwars_christmas_boxes_2017",
73
+ christmasBoxes2018: "free_event_key_bedwars_christmas_boxes_2018",
74
+ christmasBoxes2019: "free_event_key_bedwars_christmas_boxes_2019",
75
+ christmasBoxes2020: "free_event_key_bedwars_christmas_boxes_2020",
76
+ christmasBoxes2021: "free_event_key_bedwars_christmas_boxes_2021",
77
+ christmasBoxes2022: "free_event_key_bedwars_christmas_boxes_2022",
78
+ christmasBoxes2023: "free_event_key_bedwars_christmas_boxes_2023",
79
+ easterBoxes2018: "free_event_key_bedwars_easter_boxes_2018",
80
+ easterBoxes2019: "free_event_key_bedwars_easter_boxes_2019",
81
+ easterBoxes2020: "free_event_key_bedwars_easter_boxes_2020",
82
+ easterBoxes2021: "free_event_key_bedwars_easter_boxes_2021",
83
+ easterBoxes2022: "free_event_key_bedwars_easter_boxes_2022",
84
+ easterBoxes2023: "free_event_key_bedwars_easter_boxes_2023",
85
+ halloweenBoxes2017: "free_event_key_bedwars_halloween_boxes_2017",
86
+ halloweenBoxes2018: "free_event_key_bedwars_halloween_boxes_2018",
87
+ halloweenBoxes2019: "free_event_key_bedwars_halloween_boxes_2019",
88
+ halloweenBoxes2020: "free_event_key_bedwars_halloween_boxes_2020",
89
+ halloweenBoxes2021: "free_event_key_bedwars_halloween_boxes_2021",
90
+ halloweenBoxes2022: "free_event_key_bedwars_halloween_boxes_2022",
91
+ halloweenBoxes2023: "free_event_key_bedwars_halloween_boxes_2023",
92
+ lunarBoxes2018: "free_event_key_bedwars_lunar_boxes_2018",
93
+ lunarBoxes2019: "free_event_key_bedwars_lunar_boxes_2019",
94
+ lunarBoxes2020: "free_event_key_bedwars_lunar_boxes_2020",
95
+ };
96
+ const PRACTICE_ELEVATIONS = {
97
+ none: "NONE",
98
+ slight: "SLIGHT",
99
+ staircase: "STAIRCASE",
100
+ };
101
+ const PRACTICE_DISTANCES = {
102
+ blocks30: "30",
103
+ blocks50: "50",
104
+ blocks100: "100",
105
+ };
106
+ const CHALLENGE_NAMES = {
107
+ archerOnly: "archer_only",
108
+ assassin: "assassin",
109
+ cantTouchThis: "cant_touch_this",
110
+ cappedResources: "capped_resources",
111
+ collector: "collector",
112
+ defuser: "defuser",
113
+ delayedHitting: "delayed_hitting",
114
+ hotbar: "hotbar",
115
+ invisibleShop: "invisible_shop",
116
+ knockbackStickOnly: "knockback_stick_only",
117
+ masterAssassin: "master_assassin",
118
+ miningFatigue: "mining_fatigue",
119
+ noHealing: "no_healing",
120
+ noHitting: "no_hitting",
121
+ noShift: "no_shift",
122
+ noSprint: "no_sprint",
123
+ noSwords: "no_swords",
124
+ noTeamUpgrades: "no_team_upgrades",
125
+ noUtilities: "no_utilities",
126
+ patriot: "patriot",
127
+ protectThePresident: "protect_the_president",
128
+ resetArmor: "reset_armor",
129
+ selfish: "selfish",
130
+ slowGenerator: "slow_generator",
131
+ sponge: "sponge",
132
+ stamina: "stamina",
133
+ stopLight: "stop_light",
134
+ toxicRain: "toxic_rain",
135
+ weightedItems: "weighted_items",
136
+ woodworker: "woodworker",
137
+ };
138
+ const SLUMBER_MINION = {
139
+ enderDust: "ender_dust",
140
+ enderDustCollected: "ender_dust_collected",
141
+ games: "games",
142
+ tickets: "tickets",
143
+ ticketsCollected: "tickets_collected",
144
+ };
145
+ const SLUMBER_SANDMAN = {
146
+ expMultiplier: "exp_multiplier",
147
+ ticketMultiplier: "ticket_multiplier",
148
+ };
149
+ const SLUMBER_ROOMS = {
150
+ ownersOffice: "owners_office",
151
+ room1: "room_1",
152
+ room2: "room_2",
153
+ room3: "room_3",
154
+ room4: "room_4",
155
+ room5: "room_5",
156
+ room6: "room_6",
157
+ room7: "room_7",
158
+ room8: "room_8",
159
+ room9: "room_9",
160
+ room10: "room_10",
161
+ room11: "room_11",
162
+ room12: "room_12",
163
+ roomArcade: "room_arcade",
164
+ roomBlitz: "room_blitz",
165
+ roomConcert: "room_concert",
166
+ roomExecutives: "room_executives",
167
+ roomGarage: "room_garage",
168
+ roomHammer: "room_hammer",
169
+ roomHousing: "room_housing",
170
+ roomInspector: "room_inspector",
171
+ roomIntricate: "room_intricate",
172
+ roomLimbo: "room_limbo",
173
+ roomMoon: "room_moon",
174
+ roomOasis: "room_oasis",
175
+ roomPyramid: "room_pyramid",
176
+ roomQuiz: "room_quiz",
177
+ roomRooftop: "room_rooftop",
178
+ roomSkyblock: "room_skyblock",
179
+ };
180
+ const SLUMBER_QUEST_NPCS = {
181
+ dreamfeastAppetizers: "dreamfeast_appetizers",
182
+ arcadePlayer: "npc_arcade_player",
183
+ billStarr: "npc_bill_starr",
184
+ blacksmith: "npc_blacksmith",
185
+ blacksmithApprentice: "npc_blacksmith_apprentice",
186
+ bucky: "npc_bucky",
187
+ combatArtistSally: "npc_combat_artist_sally",
188
+ donEspresso: "npc_don_espresso",
189
+ electricianRussel: "npc_electrician_russel",
190
+ executives: "npc_executives",
191
+ gamblerGeorge: "npc_gambler_george",
192
+ generalDaku: "npc_general_daku",
193
+ gizzyMoonpowder: "npc_gizzy_moonpowder",
194
+ hammer: "npc_hammer",
195
+ hammerPartTwo: "npc_hammer_part_two",
196
+ hermes: "npc_hermes",
197
+ inspector: "npc_inspector",
198
+ jeremyJagger: "npc_jeremy_jagger",
199
+ jetsMcturbo: "npc_jets_mcturbo",
200
+ jimmyBimmy: "npc_jimmy_bimmy",
201
+ johnIndigosHammer: "npc_john_indigos_hammer",
202
+ johnPireso: "npc_john_pireso",
203
+ kingFlut: "npc_king_flut",
204
+ ladySaichi: "npc_lady_saichi",
205
+ laundry: "npc_laundry",
206
+ laundryGal: "npc_laundry_gal",
207
+ lesterBrody: "npc_lester_brody",
208
+ masterMeyer: "npc_master_meyer",
209
+ meetTheSandman: "npc_meet_the_sandman",
210
+ oasis: "npc_oasis",
211
+ peter: "npc_peter",
212
+ quizShowHost: "npc_quiz_show_host",
213
+ receptionStart: "npc_reception_start",
214
+ skyblockPlayer: "npc_skyblock_player",
215
+ spaceman: "npc_spaceman",
216
+ theRatman: "npc_the_ratman",
217
+ wally: "npc_wally",
218
+ phaseFourAscensionQ1: "phase_four_ascension_q1",
219
+ phaseFourAscensionQ2: "phase_four_ascension_q2",
220
+ phaseFourAscensionQ3: "phase_four_ascension_q3",
221
+ phaseFourAscensionQ4: "phase_four_ascension_q4",
222
+ phaseFourAscensionQ5: "phase_four_ascension_q5",
223
+ phaseFourAscensionWalletQ: "phase_four_ascension_wallet_q",
224
+ phaseThreeAsc: "phase_three_asc",
225
+ phaseTwoAsc: "phase_two_asc",
226
+ staffWalletUpgrade: "staff_wallet_upgrade",
227
+ };
228
+ const SLUMBER_QUEST_NPC_TALK = {
229
+ aidenAllpillowNpc: "AidenAllpillowNpc",
230
+ arcadePlayerNpc: "ArcadePlayerNpc",
231
+ billStarrNpc: "BillStarrNpc",
232
+ bimmyNpc: "BimmyNpc",
233
+ blackSmithNpc: "BlackSmithNpc",
234
+ blackSmithRobertoNpc: "BlackSmithRobertoNpc",
235
+ ceoNpc: "CEONpc",
236
+ chefBuckyNpc: "ChefBuckyNpc",
237
+ chefGarryJamseyNpc: "ChefGarryJamseyNpc",
238
+ combatArtistSallyNpc: "CombatArtistSallyNpc",
239
+ donEspressoNpc: "DonEspressoNpc",
240
+ doorManNpc: "DoorManNpc",
241
+ electricianRusselNpc: "ElectricianRusselNpc",
242
+ fredericFerntonNpc: "FredericFerntonNpc",
243
+ gamblerGeorgeNpc: "GamblerGeorgeNpc",
244
+ generalDakuNpc: "GeneralDakuNpc",
245
+ gizzyMoonpowderNpc: "GizzyMoonpowderNpc",
246
+ hammerNpc: "HammerNpc",
247
+ hammerPartTwoNpc: "HammerPartTwoNpc",
248
+ hermesNpc: "HermesNpc",
249
+ hostessKatrinaNpc: "HostessKatrinaNpc",
250
+ hotelReceptionistNpc: "HotelReceptionistNpc",
251
+ inspectorMyaSterlingNpc: "InspectorMyaSterlingNpc",
252
+ jeremyJaggerNpc: "JeremyJaggerNpc",
253
+ jetsMcTurboNpc: "JetsMcTurboNpc",
254
+ jimmyNpc: "JimmyNpc",
255
+ johnIndigosNpc: "JohnIndigosNpc",
256
+ johnIndigosPhaseThreeNpc: "JohnIndigosPhaseThreeNpc",
257
+ johnIndigosPhaseTwoNpc: "JohnIndigosPhaseTwoNpc",
258
+ kingFlutNpc: "KingFlutNpc",
259
+ ladySaichiNpc: "LadySaichiNpc",
260
+ laundryGalNpc: "LaundryGalNpc",
261
+ laundryGuyNpc: "LaundryGuyNpc",
262
+ lesterBrodyNpc: "LesterBrodyNpc",
263
+ masterMeyerNpc: "MasterMeyerNpc",
264
+ oasisSpiritNpc: "OasisSpiritNpc",
265
+ peterNpc: "PeterNpc",
266
+ quizShowHostNpc: "QuizShowHostNpc",
267
+ ratmanNpc: "RatmanNpc",
268
+ sandmanNpc: "SandmanNpc",
269
+ skyBlockPlayerNpc: "SkyBlockPlayerNpc",
270
+ slumberVillagerNpc: "SlumberVillagerNpc",
271
+ spaceManNpc: "SpaceManNpc",
272
+ ticketMachineNpc: "TicketMachineNpc",
273
+ tranceNpc: "TranceNpc",
274
+ wallyNpc: "WallyNpc",
275
+ };
276
+ const SLUMBER_QUEST_OBJECTIVES = {
277
+ arcadeIron: "arcade_iron",
278
+ arcadeIronRepeat: "arcade_iron_repeat",
279
+ arcadeQuarters: "arcade_quarters",
280
+ arcadeQuartersRepeat: "arcade_quarters_repeat",
281
+ bakeAFeastfood: "bake_a_feastfood",
282
+ billStarrBlitz: "bill_starr_blitz",
283
+ blacksmithAmulet: "blacksmith_amulet",
284
+ blacksmithApprenticeCoins: "blacksmith_apprentice_coins",
285
+ blacksmithApprenticeCoinsRepeat: "blacksmith_apprentice_coins_repeat",
286
+ blacksmithApprenticeForgeCoal: "blacksmith_apprentice_forge_coal",
287
+ blacksmithApprenticeForgeCoalRepeat: "blacksmith_apprentice_forge_coal_repeat",
288
+ blacksmithApprenticeIron: "blacksmith_apprentice_iron",
289
+ blacksmithApprenticeIronRepeat: "blacksmith_apprentice_iron_repeat",
290
+ blacksmithGold: "blacksmith_gold",
291
+ blacksmithGoldenTicket: "blacksmith_golden_ticket",
292
+ blacksmithIronBars: "blacksmith_iron_bars",
293
+ blacksmithMold: "blacksmith_mold",
294
+ blacksmithWater: "blacksmith_water",
295
+ buckyEnderDust: "bucky_ender_dust",
296
+ buckyEnderDustRepeat: "bucky_ender_dust_repeat",
297
+ buckyFragments: "bucky_fragments",
298
+ buckyFragmentsRepeat: "bucky_fragments_repeat",
299
+ buckySkyTeaLeaves: "bucky_sky_tea_leaves",
300
+ buckySkyTeaLeavesRepeat: "bucky_sky_tea_leaves_repeat",
301
+ buckySouls: "bucky_souls",
302
+ buckySpiceRepeat: "bucky_spice_repeat",
303
+ checkersCoal: "checkers_coal",
304
+ checkersSheets: "checkers_sheets",
305
+ chessTickets: "chess_tickets",
306
+ chessTokensOfFerocity: "chess_tokens_of_ferocity",
307
+ chessWoolCables: "chess_wool_cables",
308
+ combatArtistSally: "combat_artist_sally",
309
+ combatArtistSallyRepeat: "combat_artist_sally_repeat",
310
+ combatArtistSallySouls: "combat_artist_sally_souls",
311
+ donEspressoDiamond: "don_espresso_diamond",
312
+ donEspressoGold: "don_espresso_gold",
313
+ electricianRussel: "electrician_russel",
314
+ electricianRusselRepeat: "electrician_russel_repeat",
315
+ executivesMeetingNumbers: "executives_meeting_numbers",
316
+ gamblerGeorgeWin: "gambler_george_win",
317
+ generalDakuTea: "general_daku_tea",
318
+ generalDakuTeaRepeat: "general_daku_tea_repeat",
319
+ gizzyMoonpowder: "gizzy_moonpowder",
320
+ gizzyMoonpowderRepeat: "gizzy_moonpowder_repeat",
321
+ hammerCoins: "hammer_coins",
322
+ hammerIron: "hammer_iron",
323
+ hammerPartTwoSilverBlade: "hammer_part_two_silver_blade",
324
+ hermesMysteryBoxes: "hermes_mystery_boxes",
325
+ inspectorAirFreshener: "inspector_air_freshener",
326
+ inspectorClueWeapon: "inspector_clue_weapon",
327
+ inspectorGloves: "inspector_gloves",
328
+ inspectorPhoto: "inspector_photo",
329
+ inspectorWorkBoots: "inspector_work_boots",
330
+ jaggerDiamond: "jagger_diamond",
331
+ jaggerEmerald: "jagger_emerald",
332
+ jaggerGold: "jagger_gold",
333
+ jaggerIron: "jagger_iron",
334
+ jaggerSpice: "jagger_spice",
335
+ jaggerWool: "jagger_wool",
336
+ jetsCables: "jets_cables",
337
+ jetsEmeralds: "jets_emeralds",
338
+ jetsGold: "jets_gold",
339
+ jetsHusks: "jets_husks",
340
+ jetsIron: "jets_iron",
341
+ jetsIronBars: "jets_iron_bars",
342
+ jetsNetherStars: "jets_nether_stars",
343
+ johnIndigosHammer: "john_indigos_hammer",
344
+ johnPiresoMap: "john_pireso_map",
345
+ kingFlutAmulet: "king_flut_amulet",
346
+ kingFlutDiamond: "king_flut_diamond",
347
+ kingFlutPillow: "king_flut_pillow",
348
+ ladySaichiMattress: "lady_saichi_mattress",
349
+ ladySaichiSheets: "lady_saichi_sheets",
350
+ laundryGalBottles: "laundry_gal_bottles",
351
+ laundryGalBottlesRepeat: "laundry_gal_bottles_repeat",
352
+ laundryGalPillows: "laundry_gal_pillows",
353
+ laundryManagerSheets: "laundry_manager_sheets",
354
+ laundryManagerSheetsRepeat: "laundry_manager_sheets_repeat",
355
+ lesterBrody: "lester_brody",
356
+ lesterBrodyRepeat: "lester_brody_repeat",
357
+ masterMeyer: "master_meyer",
358
+ masterMeyerRepeat: "master_meyer_repeat",
359
+ meetTheSandman: "meet_the_sandman",
360
+ oasisHusks: "oasis_husks",
361
+ oasisHusksRepeat: "oasis_husks_repeat",
362
+ oasisSouls: "oasis_souls",
363
+ peterEscape: "peter_escape",
364
+ phaseFourAscensionO1: "phase_four_ascension_o1",
365
+ phaseFourAscensionO2: "phase_four_ascension_o2",
366
+ phaseFourAscensionO3: "phase_four_ascension_o3",
367
+ phaseFourAscensionO4: "phase_four_ascension_o4",
368
+ phaseFourAscensionO5: "phase_four_ascension_o5",
369
+ phaseFourAscensionWalletO: "phase_four_ascension_wallet_o",
370
+ phaseThreeRecp: "phase_three_recp",
371
+ phaseTwoRecp: "phase_two_recp",
372
+ ratmanBedsheets: "ratman_bedsheets",
373
+ ratmanForgeCoal: "ratman_forge_coal",
374
+ ratmanIronBars: "ratman_iron_bars",
375
+ ratmanPillow: "ratman_pillow",
376
+ ratmanSparkPlug: "ratman_spark_plug",
377
+ receptionistIntroduction: "receptionist_introduction",
378
+ skyblockPlayerDust: "skyblock_player_dust",
379
+ skyblockPlayerLeaves: "skyblock_player_leaves",
380
+ spacemanNetherStars: "spaceman_nether_stars",
381
+ spacemanShopSpice: "spaceman_shop_spice",
382
+ unlockAnUpgrade: "unlock_an_upgrade",
383
+ wallyBedSheets: "wally_bed_sheets",
384
+ wallyEnderDust: "wally_ender_dust",
385
+ wallyNetherStars: "wally_nether_stars",
386
+ };
387
+ const SLUMBER_QUEST_ITEMS = {
388
+ airFreshener: "slumber_item_air_freshener",
389
+ amulet: "slumber_item_amulet",
390
+ bedSheets: "slumber_item_bed_sheets",
391
+ blitzStar: "slumber_item_blitz_star",
392
+ blockOfMegaWallsObsidian: "slumber_item_block_of_mega_walls_obsidian",
393
+ boots: "slumber_item_boots",
394
+ cable: "slumber_item_cable",
395
+ chaliceOfSand: "slumber_item_chalice_of_sand",
396
+ cleanedUpMurderKnife: "slumber_item_cleaned_up_murder_knife",
397
+ comfyPillow: "slumber_item_comfy_pillow",
398
+ diamondEssence: "slumber_item_diamond_essence",
399
+ diamondFragment: "slumber_item_diamond_fragment",
400
+ discardedKartWheel: "slumber_item_discarded_kart_wheel",
401
+ dwarvenMithril: "slumber_item_dwarven_mithril",
402
+ emeraldEssence: "slumber_item_emerald_essence",
403
+ emeraldShard: "slumber_item_emerald_shard",
404
+ enchantedHammer: "slumber_item_enchanted_hammer",
405
+ enderDust: "slumber_item_ender_dust",
406
+ fadedBlitzStar: "slumber_item_faded_blitz_star",
407
+ forgeCoal: "slumber_item_forge_coal",
408
+ gloves: "slumber_item_gloves",
409
+ glowingSandPaper: "slumber_item_glowing_sand_paper",
410
+ goldBar: "slumber_item_gold_bar",
411
+ goldEssence: "slumber_item_gold_essence",
412
+ goldenTicket: "slumber_item_golden_ticket",
413
+ imperialLeather: "slumber_item_imperial_leather",
414
+ indigosMap: "slumber_item_indigos_map",
415
+ ironEssence: "slumber_item_iron_essence",
416
+ ironNugget: "slumber_item_iron_nugget",
417
+ limboDust: "slumber_item_limbo_dust",
418
+ megaWallsObsidian: "slumber_item_mega_walls_obsidian",
419
+ missingAmulet: "slumber_item_missing_amulet",
420
+ moonStoneNugget: "slumber_item_moon_stone_nugget",
421
+ murderWeapon: "slumber_item_murder_weapon",
422
+ netherStar: "slumber_item_nether_star",
423
+ nightmareNoodles: "slumber_item_nightmare_noodles",
424
+ oasisWater: "slumber_item_oasis_water",
425
+ perfume: "slumber_item_perfume",
426
+ playerSoul: "slumber_item_player_soul",
427
+ potionBottle: "slumber_item_potion_bottle",
428
+ proofOfSuccess: "slumber_item_proof_of_success",
429
+ ratmanMask: "slumber_item_ratman_mask",
430
+ shopSpice: "slumber_item_shop_spice",
431
+ silverBladeReplay: "slumber_item_silver_blade_replay",
432
+ silverCoins: "slumber_item_silver_coins",
433
+ snoringNachos: "slumber_item_snoring_nachos",
434
+ soul: "slumber_item_soul",
435
+ soulSalsa: "slumber_item_soul_salsa",
436
+ spareKartWheel: "slumber_item_spare_kart_wheel",
437
+ sparkPlug: "slumber_item_spark_plug",
438
+ ticketTart: "slumber_item_ticket_tart",
439
+ timewornMysteryBox: "slumber_item_timeworn_mystery_box",
440
+ tokenOfFerocity: "slumber_item_token_of_ferocity",
441
+ trustyRope: "slumber_item_trusty_rope",
442
+ unusedBombMaterials: "slumber_item_unused_bomb_materials",
443
+ victimPhoto: "slumber_item_victim_photo",
444
+ voidHusk: "slumber_item_void_husk",
445
+ weaponMold: "slumber_item_weapon_mold",
446
+ };
447
+ const BEDWARS_BOON = {
448
+ appetizer: "appetizer",
449
+ firstCourse: "first_course",
450
+ oasis: "oasis",
451
+ slumber: "slumber",
452
+ };
453
+ const BEDWARS_DREAMFEAST = {
454
+ appetizerBoon: "appetizer_boon",
455
+ challengeWoolWarrior: "challenge_wool_warrior",
456
+ dreamOfAnimals: "dream_of_animals",
457
+ dreamOfPrestigeStars: "dream_of_prestige_stars",
458
+ firstCourseBoon: "first_course_boon",
459
+ firstDreamOfWoodSkins: "first_dream_of_wood_skins",
460
+ firstNightmareOfChallenges: "first_nightmare_of_challenges",
461
+ killmessagesGlorious: "killmessages_glorious",
462
+ npcskinCluckStack: "npcskin_cluck_stack",
463
+ woodSkinAcaciaLog: "woodSkin_acacia_log",
464
+ woodSkinBirchLog: "woodSkin_birch_log",
465
+ woodSkinDarkOakLog: "woodSkin_dark_oak_log",
466
+ woodSkinJungleLog: "woodSkin_jungle_log",
467
+ woodSkinOakLog: "woodSkin_oak_log",
468
+ woodSkinSpruceLog: "woodSkin_spruce_log",
469
+ };
470
+ const BEDWARS_FEASTFOOD_COOKED = {
471
+ nightmareNoodles: "nightmare_noodles",
472
+ snoringNachos: "snoring_nachos",
473
+ soulSalsa: "soul_salsa",
474
+ ticketTart: "ticket_tart",
475
+ };
476
+ const HALLOWEEN_PUMPKIN_REWARD_TIERS = {
477
+ i: "I",
478
+ ii: "II",
479
+ iii: "III",
480
+ iv: "IV",
481
+ v: "V",
482
+ };
483
+ function commaList(raw, key) {
484
+ const value = (0, common_1.str)(raw, key);
485
+ return value ? value.split(",") : [];
486
+ }
487
+ function stringArray(raw, key) {
488
+ const value = raw[key];
489
+ return Array.isArray(value)
490
+ ? value.filter((item) => typeof item === "string")
491
+ : [];
492
+ }
493
+ function readCounts(raw, map) {
494
+ const result = {};
495
+ for (const name of Object.keys(map)) {
496
+ result[name] = (0, common_1.num)(raw, map[name]);
497
+ }
498
+ return result;
499
+ }
500
+ function readFlags(raw, map) {
501
+ const result = {};
502
+ for (const name of Object.keys(map)) {
503
+ result[name] = (0, common_1.bool)(raw, map[name]);
504
+ }
505
+ return result;
506
+ }
507
+ function parseCombat(raw, mode, final) {
508
+ const result = {};
509
+ const suffix = final ? "final_" : "";
510
+ for (const name of Object.keys(DAMAGE_TYPES)) {
511
+ const type = DAMAGE_TYPES[name];
512
+ result[name] = {
513
+ kills: (0, common_1.num)(raw, `${mode}${type}${suffix}kills_bedwars`),
514
+ deaths: (0, common_1.num)(raw, `${mode}${type}${suffix}deaths_bedwars`),
515
+ };
516
+ }
517
+ return result;
518
+ }
519
+ function parseMode(raw, mode) {
520
+ return {
521
+ winstreak: (0, common_1.num)(raw, `${mode}winstreak`),
522
+ wins: (0, common_1.num)(raw, `${mode}wins_bedwars`),
523
+ losses: (0, common_1.num)(raw, `${mode}losses_bedwars`),
524
+ gamesPlayed: (0, common_1.num)(raw, `${mode}games_played_bedwars`),
525
+ beds: {
526
+ broken: (0, common_1.num)(raw, `${mode}beds_broken_bedwars`),
527
+ lost: (0, common_1.num)(raw, `${mode}beds_lost_bedwars`),
528
+ },
529
+ resources: {
530
+ total: (0, common_1.num)(raw, `${mode}resources_collected_bedwars`),
531
+ iron: (0, common_1.num)(raw, `${mode}iron_resources_collected_bedwars`),
532
+ gold: (0, common_1.num)(raw, `${mode}gold_resources_collected_bedwars`),
533
+ diamond: (0, common_1.num)(raw, `${mode}diamond_resources_collected_bedwars`),
534
+ emerald: (0, common_1.num)(raw, `${mode}emerald_resources_collected_bedwars`),
535
+ bed: (0, common_1.num)(raw, `${mode}bed_resources_collected_bedwars`),
536
+ wrappedPresent: (0, common_1.num)(raw, `${mode}wrapped_present_resources_collected_bedwars`),
537
+ itemsPurchased: (0, common_1.num)(raw, `${mode}items_purchased_bedwars`),
538
+ itemsPurchasedLegacy: (0, common_1.num)(raw, `${mode}_items_purchased_bedwars`),
539
+ permanentItemsPurchased: (0, common_1.num)(raw, `${mode}permanent_items_purchased_bedwars`),
540
+ permanentItemsPurchasedLegacy: (0, common_1.num)(raw, `${mode}permanent _items_purchased_bedwars`),
541
+ },
542
+ kills: parseCombat(raw, mode, false),
543
+ finals: parseCombat(raw, mode, true),
544
+ };
545
+ }
546
+ function parseTourneyMode(raw, mode) {
547
+ return {
548
+ ...parseMode(raw, mode),
549
+ winstreak2: (0, common_1.num)(raw, `${mode}winstreak2`),
550
+ };
551
+ }
552
+ function withVariants(raw, base, map) {
553
+ const variants = {};
554
+ for (const name of Object.keys(map)) {
555
+ const prefix = map[name];
556
+ variants[name] = prefix.startsWith("tourney")
557
+ ? parseTourneyMode(raw, prefix)
558
+ : parseMode(raw, prefix);
559
+ }
560
+ return { ...parseMode(raw, base), ...variants };
561
+ }
562
+ function parseActiveCosmetics(raw) {
563
+ return {
564
+ bedDestroy: (0, common_1.str)(raw, "activeBedDestroy"),
565
+ deathCry: (0, common_1.str)(raw, "activeDeathCry"),
566
+ glyph: (0, common_1.str)(raw, "activeGlyph"),
567
+ islandTopper: (0, common_1.str)(raw, "activeIslandTopper"),
568
+ killEffect: (0, common_1.str)(raw, "activeKillEffect"),
569
+ killMessages: (0, common_1.str)(raw, "activeKillMessages"),
570
+ npcSkin: (0, common_1.str)(raw, "activeNPCSkin"),
571
+ projectileTrail: (0, common_1.str)(raw, "activeProjectileTrail"),
572
+ sprays: (0, common_1.str)(raw, "activeSprays"),
573
+ victoryDance: (0, common_1.str)(raw, "activeVictoryDance"),
574
+ woodType: (0, common_1.str)(raw, "activeWoodType"),
575
+ };
576
+ }
577
+ function parseFavorites(raw) {
578
+ return {
579
+ hotbarSlots: commaList(raw, "favorite_slots"),
580
+ shopSlots: commaList(raw, "favourites_1"),
581
+ shopSlotsSecondary: commaList(raw, "favourites_2"),
582
+ };
583
+ }
584
+ function parseFigurines(raw) {
585
+ const figurines = (0, common_1.obj)(raw, "figurines");
586
+ const featured = (0, common_1.obj)(figurines, "featured");
587
+ return {
588
+ active: (0, common_1.str)(figurines, "active"),
589
+ featuredCommon: stringArray(featured, "COMMON"),
590
+ featuredLegendary: stringArray(featured, "LEGENDARY"),
591
+ featuredRare: stringArray(featured, "RARE"),
592
+ };
593
+ }
594
+ function parsePrivateGameSettings(raw) {
595
+ const settings = (0, common_1.obj)(raw, "privategames");
596
+ return {
597
+ bedInstaBreak: (0, common_1.bool)(settings, "bed_instabreak"),
598
+ disableBlockProtection: (0, common_1.bool)(settings, "disable_block_protection"),
599
+ eventTime: (0, common_1.str)(settings, "event_time"),
600
+ healthBuff: (0, common_1.str)(settings, "health_buff"),
601
+ lowGravity: (0, common_1.bool)(settings, "low_gravity"),
602
+ maxTeamUpgrades: (0, common_1.bool)(settings, "max_team_upgrades"),
603
+ noDiamonds: (0, common_1.bool)(settings, "no_diamonds"),
604
+ noEmeralds: (0, common_1.bool)(settings, "no_emeralds"),
605
+ oneHitOneKill: (0, common_1.bool)(settings, "one_hit_one_kill"),
606
+ respawnTime: (0, common_1.str)(settings, "respawn_time"),
607
+ speed: (0, common_1.str)(settings, "speed"),
608
+ };
609
+ }
610
+ function parseSettings(raw) {
611
+ const settings = (0, common_1.obj)(raw, "settings");
612
+ return {
613
+ deposit: (0, common_1.str)(settings, "deposit"),
614
+ slumberItemNotification: (0, common_1.str)(settings, "slumberItemNotification"),
615
+ slumberWalletFull: (0, common_1.bool)(settings, "slumberWalletFull"),
616
+ trapRemoval: (0, common_1.bool)(settings, "trapRemoval"),
617
+ };
618
+ }
619
+ function parseSlumberQuest(raw) {
620
+ const gambler = (0, common_1.obj)(raw, "gambler_george");
621
+ return {
622
+ completed: readFlags((0, common_1.obj)(raw, "completed"), SLUMBER_QUEST_NPCS),
623
+ started: readFlags((0, common_1.obj)(raw, "started"), SLUMBER_QUEST_NPCS),
624
+ lastCompleted: readCounts((0, common_1.obj)(raw, "lastCompleted"), SLUMBER_QUEST_NPCS),
625
+ lastStarted: readCounts((0, common_1.obj)(raw, "lastStarted"), SLUMBER_QUEST_NPCS),
626
+ lastTraded: (0, common_1.num)(raw, "lastTraded"),
627
+ npcTalk: readFlags((0, common_1.obj)((0, common_1.obj)(raw, "npc"), "talk"), SLUMBER_QUEST_NPC_TALK),
628
+ objective: readFlags((0, common_1.obj)(raw, "objective"), SLUMBER_QUEST_OBJECTIVES),
629
+ item: readCounts((0, common_1.obj)(raw, "item"), SLUMBER_QUEST_ITEMS),
630
+ gamblerGeorge: {
631
+ betAmount: (0, common_1.num)(gambler, "bet_amount"),
632
+ gambleGamesWon: (0, common_1.num)(gambler, "gamble_games_won"),
633
+ lostBet: (0, common_1.bool)(gambler, "lost_bet"),
634
+ lostBetTime: (0, common_1.num)(gambler, "lost_bet_time"),
635
+ shouldReward: (0, common_1.bool)(gambler, "should_reward"),
636
+ wonLastGame: (0, common_1.bool)(gambler, "won_last_game"),
637
+ },
638
+ };
639
+ }
640
+ function parseSlumber(raw) {
641
+ const slumber = (0, common_1.obj)(raw, "slumber");
642
+ return {
643
+ bagType: (0, common_1.str)(slumber, "bag_type"),
644
+ boonMultiplier: (0, common_1.num)(slumber, "boon_multiplier"),
645
+ currentCosmeticSorting: (0, common_1.str)(slumber, "currentCosmeticSorting"),
646
+ doublers: (0, common_1.num)(slumber, "doublers"),
647
+ tickets: (0, common_1.num)(slumber, "tickets"),
648
+ ticketsGivenToDoorman: (0, common_1.num)(slumber, "tickets_given_doorman"),
649
+ ticketsRequirementMet: (0, common_1.bool)(slumber, "tickets_requirement_met"),
650
+ totalTicketsEarned: (0, common_1.num)(slumber, "total_tickets_earned"),
651
+ walletFullWarning: (0, common_1.bool)(slumber, "wallet_full_warning"),
652
+ currentPhase: (0, common_1.num)((0, common_1.obj)(slumber, "phase"), "current"),
653
+ phaseThreeCompletedQuests: (0, common_1.num)((0, common_1.obj)(slumber, "phasethree"), "completed_quests"),
654
+ fredgie: {
655
+ dialogueIndex: (0, common_1.num)((0, common_1.obj)(slumber, "fredgie"), "dialogue_index"),
656
+ shouldUpdateIndex: (0, common_1.bool)((0, common_1.obj)(slumber, "fredgie"), "should_update_index"),
657
+ },
658
+ minion: readCounts((0, common_1.obj)(slumber, "minion"), SLUMBER_MINION),
659
+ sandman: readCounts((0, common_1.obj)(slumber, "sandman"), SLUMBER_SANDMAN),
660
+ rooms: readFlags((0, common_1.obj)(slumber, "room"), SLUMBER_ROOMS),
661
+ quest: parseSlumberQuest((0, common_1.obj)(slumber, "quest")),
662
+ };
663
+ }
664
+ function parsePracticeMode(raw) {
665
+ return {
666
+ blocksPlaced: (0, common_1.num)(raw, "blocks_placed"),
667
+ successfulAttempts: (0, common_1.num)(raw, "successful_attempts"),
668
+ failedAttempts: (0, common_1.num)(raw, "failed_attempts"),
669
+ };
670
+ }
671
+ function parseBridgingRecords(raw) {
672
+ const records = {};
673
+ for (const distanceName of Object.keys(PRACTICE_DISTANCES)) {
674
+ const distance = PRACTICE_DISTANCES[distanceName];
675
+ const elevations = {};
676
+ for (const elevationName of Object.keys(PRACTICE_ELEVATIONS)) {
677
+ const elevation = PRACTICE_ELEVATIONS[elevationName];
678
+ const prefix = `bridging_distance_${distance}:elevation_${elevation}:angle_`;
679
+ elevations[elevationName] = {
680
+ diagonal: (0, common_1.num)(raw, `${prefix}DIAGONAL:`),
681
+ straight: (0, common_1.num)(raw, `${prefix}STRAIGHT:`),
682
+ };
683
+ }
684
+ records[distanceName] = elevations;
685
+ }
686
+ return records;
687
+ }
688
+ function parsePractice(raw) {
689
+ const practice = (0, common_1.obj)(raw, "practice");
690
+ return {
691
+ selected: (0, common_1.str)(practice, "selected"),
692
+ bridging: {
693
+ ...parsePracticeMode((0, common_1.obj)(practice, "bridging")),
694
+ records: parseBridgingRecords((0, common_1.obj)(practice, "records")),
695
+ },
696
+ fireballJumping: parsePracticeMode((0, common_1.obj)(practice, "fireball_jumping")),
697
+ mlg: parsePracticeMode((0, common_1.obj)(practice, "mlg")),
698
+ pearlClutching: parsePracticeMode((0, common_1.obj)(practice, "pearl_clutching")),
699
+ };
700
+ }
701
+ function parseChallenges(raw) {
702
+ const bestTimes = (0, common_1.obj)(raw, "challenges");
703
+ const challenges = {};
704
+ for (const name of Object.keys(CHALLENGE_NAMES)) {
705
+ const challenge = CHALLENGE_NAMES[name];
706
+ challenges[name] = {
707
+ bestTime: (0, common_1.num)(bestTimes, `bw_challenge_${challenge}_best_time`),
708
+ timesCompleted: (0, common_1.num)(raw, `bw_challenge_${challenge}`),
709
+ };
710
+ }
711
+ return {
712
+ uniqueChallengesCompleted: (0, common_1.num)(raw, "bw_unique_challenges_completed"),
713
+ selectedChallengeType: (0, common_1.str)(raw, "selected_challenge_type"),
714
+ totalChallengesCompleted: (0, common_1.num)(raw, "total_challenges_completed"),
715
+ ...challenges,
716
+ };
717
+ }
718
+ function parseFeastfood(raw) {
719
+ return {
720
+ cooked: readFlags((0, common_1.obj)((0, common_1.obj)(raw, "feastfood"), "cooked"), BEDWARS_FEASTFOOD_COOKED),
721
+ };
722
+ }
723
+ function parseLeaderboardSettings(raw) {
724
+ const settings = (0, common_1.obj)(raw, "leaderboardSettings");
725
+ return {
726
+ mode: (0, common_1.str)(settings, "mode"),
727
+ resetType: (0, common_1.str)(settings, "resetType"),
728
+ };
729
+ }
730
+ function parseHalloween(raw) {
731
+ const halloween = (0, common_1.obj)(raw, "halloween");
732
+ const milestone = (0, common_1.obj)(halloween, "pumpkin_milestone");
733
+ const rewardsRaw = (0, common_1.obj)(milestone, "rewards");
734
+ const counts = {};
735
+ for (const [key, value] of Object.entries(milestone)) {
736
+ if (typeof value === "number") {
737
+ counts[key] = value;
738
+ }
739
+ }
740
+ const rewards = {};
741
+ for (const year of Object.keys(rewardsRaw)) {
742
+ rewards[year] = readFlags((0, common_1.obj)(rewardsRaw, year), HALLOWEEN_PUMPKIN_REWARD_TIERS);
743
+ }
744
+ return {
745
+ talkedToPatches: (0, common_1.bool)(halloween, "talked_to_patches"),
746
+ pumpkinMilestone: { counts, rewards },
747
+ };
748
+ }
749
+ function parseChristmasProgressQuest(raw, key) {
750
+ const quest = (0, common_1.obj)(raw, key);
751
+ return {
752
+ claimed: (0, common_1.num)(quest, "claimed"),
753
+ progression: (0, common_1.num)(quest, "progression"),
754
+ };
755
+ }
756
+ function parseChristmasListQuest(raw, key) {
757
+ const quest = (0, common_1.obj)(raw, key);
758
+ return {
759
+ claimed: (0, common_1.num)(quest, "claimed"),
760
+ progression: stringArray(quest, "progression"),
761
+ };
762
+ }
763
+ function parseSeasonal(raw) {
764
+ const christmasRaw = (0, common_1.obj)((0, common_1.obj)(raw, "seasonal"), "christmas");
765
+ const christmas = {};
766
+ for (const year of Object.keys(christmasRaw)) {
767
+ const yearRaw = (0, common_1.obj)(christmasRaw, year);
768
+ const megagift = (0, common_1.obj)(yearRaw, "megagift");
769
+ christmas[year] = {
770
+ talkedToNpc: (0, common_1.bool)(yearRaw, "talked_to_npc"),
771
+ candyCaneChallenger: parseChristmasListQuest(yearRaw, "candy_cane_challenger"),
772
+ festiveFrenzy: parseChristmasProgressQuest(yearRaw, "festive_frenzy"),
773
+ giftExchange: parseChristmasProgressQuest(yearRaw, "gift_exchange"),
774
+ happyHolidays: parseChristmasProgressQuest(yearRaw, "happy_holidays"),
775
+ holidayShopping: parseChristmasProgressQuest(yearRaw, "holiday_shopping"),
776
+ megagift: {
777
+ received: (0, common_1.num)(megagift, "received"),
778
+ sent: (0, common_1.num)(megagift, "sent"),
779
+ },
780
+ seasonOfGiving: parseChristmasProgressQuest(yearRaw, "season_of_giving"),
781
+ sneakySanta: parseChristmasProgressQuest(yearRaw, "sneaky_santa"),
782
+ twoWeekPhase: parseChristmasProgressQuest(yearRaw, "two_week_phase"),
783
+ winterVacation: parseChristmasListQuest(yearRaw, "winter_vacation"),
784
+ };
785
+ }
786
+ return { christmas };
787
+ }
788
+ /** Parses a player's Bedwars stats (`stats.Bedwars`) into a typed object. */
789
+ function parseBedWars(bw, level) {
790
+ return {
791
+ coins: (0, common_1.num)(bw, "coins") || (0, common_1.num)(bw, "tokens"),
792
+ experience: (0, common_1.num)(bw, "Experience"),
793
+ experienceNew: (0, common_1.num)(bw, "Experience_new"),
794
+ level,
795
+ firstJoinSeason7: (0, common_1.bool)(bw, "first_join_7"),
796
+ seenBetaMenu: (0, common_1.bool)(bw, "seen_beta_menu"),
797
+ understandsResourceBank: (0, common_1.bool)(bw, "understands_resource_bank"),
798
+ understandsStreaks: (0, common_1.bool)(bw, "understands_streaks"),
799
+ shopSort: (0, common_1.str)(bw, "shop_sort"),
800
+ shopSortOwnedFirst: (0, common_1.bool)(bw, "shop_sort_enable_owned_first"),
801
+ quickbuyPrivacy: (0, common_1.str)(bw, "quickbuy_privacy"),
802
+ selectedUltimate: (0, common_1.str)(bw, "selected_ultimate"),
803
+ activePrestigeScheme: (0, common_1.str)(bw, "active_prestige_scheme"),
804
+ activeStar: (0, common_1.str)(bw, "active_star"),
805
+ dataVersion: (0, common_1.num)(bw, "data_version"),
806
+ pianistEnabled: (0, common_1.bool)(bw, "pianistEnabled"),
807
+ votedSnowman: (0, common_1.bool)(bw, "voted_snowman"),
808
+ votedSugarCookie2: (0, common_1.bool)(bw, "voted_sugar_cookie2"),
809
+ spookyOpenAchievements: (0, common_1.num)(bw, "spooky_open_ach"),
810
+ gamesPlayedLegacy: (0, common_1.num)(bw, "games_played_bedwars_1"),
811
+ lastHytaleAd: (0, common_1.date)(bw, "lastHytaleAd"),
812
+ lastTourneyAd: (0, common_1.date)(bw, "lastTourneyAd"),
813
+ glyphStorage: commaList(bw, "glyph_storage_new"),
814
+ sprayGlyphField: commaList(bw, "spray_glyph_field"),
815
+ sprayStorage: commaList(bw, "spray_storage_new"),
816
+ packages: stringArray(bw, "packages"),
817
+ chestHistory: commaList(bw, "chest_history"),
818
+ chestHistoryNew: stringArray(bw, "chest_history_new"),
819
+ freeEventKeys: readFlags(bw, BEDWARS_FREE_EVENT_KEYS),
820
+ activeCosmetics: parseActiveCosmetics(bw),
821
+ boxes: readCounts(bw, BEDWARS_BOXES),
822
+ favorites: parseFavorites(bw),
823
+ figurines: parseFigurines(bw),
824
+ boon: readFlags((0, common_1.obj)(bw, "boon"), BEDWARS_BOON),
825
+ dreamfeast: readFlags((0, common_1.obj)(bw, "dreamfeast"), BEDWARS_DREAMFEAST),
826
+ feastfood: parseFeastfood(bw),
827
+ halloween: parseHalloween(bw),
828
+ leaderboardSettings: parseLeaderboardSettings(bw),
829
+ seasonal: parseSeasonal(bw),
830
+ privateGameSettings: parsePrivateGameSettings(bw),
831
+ settings: parseSettings(bw),
832
+ slumber: parseSlumber(bw),
833
+ practice: parsePractice(bw),
834
+ challenges: parseChallenges(bw),
835
+ overall: parseMode(bw, ""),
836
+ solo: withVariants(bw, "eight_one_", SOLO_VARIANTS),
837
+ doubles: withVariants(bw, "eight_two_", DOUBLES_VARIANTS),
838
+ threes: parseMode(bw, "four_three_"),
839
+ fours: withVariants(bw, "four_four_", FOURS_VARIANTS),
840
+ fourVsFour: withVariants(bw, "two_four_", FOUR_VS_FOUR_VARIANTS),
841
+ castle: parseMode(bw, "castle_"),
842
+ };
843
+ }
844
+ //# sourceMappingURL=bedwars.js.map