farming-weight 0.8.7 → 0.9.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 (71) hide show
  1. package/dist/constants/crops.d.ts +2 -0
  2. package/dist/constants/crops.js +25 -0
  3. package/dist/constants/crops.js.map +1 -1
  4. package/dist/constants/enchants.d.ts +3 -0
  5. package/dist/constants/enchants.js +18 -0
  6. package/dist/constants/enchants.js.map +1 -1
  7. package/dist/constants/plots.d.ts +130 -0
  8. package/dist/constants/plots.js +157 -0
  9. package/dist/constants/plots.js.map +1 -0
  10. package/dist/constants/reforges.d.ts +1 -1
  11. package/dist/constants/reforges.js +105 -0
  12. package/dist/constants/reforges.js.map +1 -1
  13. package/dist/constants/specific.js +228 -1
  14. package/dist/constants/specific.js.map +1 -1
  15. package/dist/constants/upgrades.d.ts +31 -5
  16. package/dist/constants/upgrades.js +11 -1
  17. package/dist/constants/upgrades.js.map +1 -1
  18. package/dist/fortune/farmingarmor.d.ts +3 -2
  19. package/dist/fortune/farmingarmor.js +26 -9
  20. package/dist/fortune/farmingarmor.js.map +1 -1
  21. package/dist/fortune/farmingequipment.js +3 -3
  22. package/dist/fortune/farmingequipment.js.map +1 -1
  23. package/dist/fortune/farmingtool.d.ts +2 -1
  24. package/dist/fortune/farmingtool.js +16 -1
  25. package/dist/fortune/farmingtool.js.map +1 -1
  26. package/dist/fortune/item.d.ts +1 -1
  27. package/dist/fortune/upgradeable.d.ts +13 -3
  28. package/dist/fortune/upgradeable.js.map +1 -1
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.js +1 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/items/accessories.js +29 -2
  33. package/dist/items/accessories.js.map +1 -1
  34. package/dist/items/armor.d.ts +1 -1
  35. package/dist/items/armor.js +510 -71
  36. package/dist/items/armor.js.map +1 -1
  37. package/dist/items/equipment.d.ts +1 -1
  38. package/dist/items/equipment.js +1 -1
  39. package/dist/items/equipment.js.map +1 -1
  40. package/dist/items/tools.js +813 -85
  41. package/dist/items/tools.js.map +1 -1
  42. package/dist/player/player.d.ts +5 -2
  43. package/dist/player/player.js +52 -2
  44. package/dist/player/player.js.map +1 -1
  45. package/dist/player/playeroptions.d.ts +1 -0
  46. package/dist/player/playeroptions.js.map +1 -1
  47. package/dist/upgrades/sources/accessorysources.js +10 -8
  48. package/dist/upgrades/sources/accessorysources.js.map +1 -1
  49. package/dist/upgrades/sources/armorsetsources.js +42 -10
  50. package/dist/upgrades/sources/armorsetsources.js.map +1 -1
  51. package/dist/upgrades/sources/cropsources.js +46 -0
  52. package/dist/upgrades/sources/cropsources.js.map +1 -1
  53. package/dist/upgrades/sources/gearsources.js +12 -8
  54. package/dist/upgrades/sources/gearsources.js.map +1 -1
  55. package/dist/upgrades/sources/generalsources.js +131 -1
  56. package/dist/upgrades/sources/generalsources.js.map +1 -1
  57. package/dist/upgrades/sources/toolsources.d.ts +2 -1
  58. package/dist/upgrades/sources/toolsources.js +88 -13
  59. package/dist/upgrades/sources/toolsources.js.map +1 -1
  60. package/dist/upgrades/upgrades.d.ts +11 -1
  61. package/dist/upgrades/upgrades.js +293 -43
  62. package/dist/upgrades/upgrades.js.map +1 -1
  63. package/dist/util/garden.d.ts +9 -0
  64. package/dist/util/garden.js +18 -0
  65. package/dist/util/garden.js.map +1 -1
  66. package/dist/util/gems.d.ts +4 -4
  67. package/dist/util/gems.js +6 -0
  68. package/dist/util/gems.js.map +1 -1
  69. package/dist/util/ratecalc.js +4 -2
  70. package/dist/util/ratecalc.js.map +1 -1
  71. package/package.json +3 -2
@@ -1,7 +1,15 @@
1
1
  import { EnchantTierProcurement, FARMING_ENCHANTS } from '../constants/enchants.js';
2
+ import { REFORGES } from '../constants/reforges.js';
2
3
  import { Stat } from '../constants/stats.js';
3
4
  import { UpgradeAction, UpgradeCategory, UpgradeReason, } from '../constants/upgrades.js';
5
+ import { FarmingAccessory } from '../fortune/farmingaccessory.js';
6
+ import { FarmingArmor } from '../fortune/farmingarmor.js';
7
+ import { FarmingEquipment } from '../fortune/farmingequipment.js';
8
+ import { FarmingTool } from '../fortune/farmingtool.js';
4
9
  import { GemRarity } from '../fortune/item.js';
10
+ import { FARMING_ACCESSORIES_INFO } from '../items/accessories.js';
11
+ import { FARMING_ARMOR_INFO } from '../items/armor.js';
12
+ import { FARMING_EQUIPMENT_INFO } from '../items/equipment.js';
5
13
  import { FARMING_TOOLS } from '../items/tools.js';
6
14
  import { getFortuneFromEnchant } from '../util/enchants.js';
7
15
  import { getGemRarityName, getNextGemRarity, getPeridotFortune, getPeridotGemFortune, getPeridotGems, } from '../util/gems.js';
@@ -10,11 +18,66 @@ export function getFortune(level, source) {
10
18
  return Math.min(Math.max(level ?? 0, 0), source.maxLevel) * source.fortunePerLevel;
11
19
  }
12
20
  export function getItemUpgrades(upgradeable) {
13
- return [
14
- getUpgradeableRarityUpgrade(upgradeable),
15
- ...getUpgradeableEnchants(upgradeable),
16
- ...getUpgradeableGems(upgradeable),
17
- ].filter((u) => u);
21
+ const { deadEnd, upgrade } = getSelfFortuneUpgrade(upgradeable) ?? {};
22
+ if (deadEnd)
23
+ return [upgrade];
24
+ const upgrades = [];
25
+ upgrades.push(upgrade);
26
+ upgrades.push(getUpgradeableRarityUpgrade(upgradeable));
27
+ upgrades.push(...getUpgradeableEnchants(upgradeable));
28
+ upgrades.push(...getUpgradeableGems(upgradeable));
29
+ upgrades.push(...getUpgradeableReforges(upgradeable));
30
+ return upgrades.filter((u) => u);
31
+ }
32
+ export function getSelfFortuneUpgrade(upgradeable) {
33
+ const nextItem = upgradeable.getItemUpgrade();
34
+ const deadEnd = nextItem && nextItem.reason == UpgradeReason.DeadEnd;
35
+ const { info: nextInfo, fake: nextFake } = getUpgradeableInfo(nextItem?.id);
36
+ if (deadEnd && nextInfo) {
37
+ return {
38
+ deadEnd: true,
39
+ upgrade: {
40
+ title: nextInfo.name,
41
+ increase: nextFake?.getFortune() ?? 0,
42
+ wiki: nextInfo.wiki,
43
+ action: UpgradeAction.Purchase,
44
+ purchase: nextInfo.skyblockId,
45
+ category: UpgradeCategory.Item,
46
+ cost: nextItem.cost ?? {
47
+ items: {
48
+ [nextInfo.skyblockId]: 1,
49
+ },
50
+ },
51
+ onto: {
52
+ name: upgradeable.item.name,
53
+ skyblockId: upgradeable.item.skyblockId,
54
+ },
55
+ },
56
+ };
57
+ }
58
+ else if (nextItem && nextInfo && !(nextItem.reason === UpgradeReason.Situational && !nextItem.preferred)) {
59
+ const increase = (nextFake?.getFortune() ?? 0) - upgradeable.fortune;
60
+ return {
61
+ deadEnd: false,
62
+ upgrade: {
63
+ title: nextInfo.name,
64
+ increase: increase < 0 ? 0 : increase,
65
+ wiki: nextInfo.wiki,
66
+ action: nextItem.reason === UpgradeReason.Situational ? UpgradeAction.Purchase : UpgradeAction.Upgrade,
67
+ purchase: nextItem.reason === UpgradeReason.Situational ? nextItem.id : undefined,
68
+ category: UpgradeCategory.Item,
69
+ cost: nextItem.cost ?? {
70
+ items: {
71
+ [nextItem.id]: 1,
72
+ },
73
+ },
74
+ onto: {
75
+ name: upgradeable.item.name,
76
+ skyblockId: upgradeable.item.skyblockId,
77
+ },
78
+ },
79
+ };
80
+ }
18
81
  }
19
82
  export function getLastToolUpgrade(tool) {
20
83
  const upgrade = tool.upgrade;
@@ -24,7 +87,7 @@ export function getLastToolUpgrade(tool) {
24
87
  let item = FARMING_TOOLS[upgrade.id];
25
88
  if (!item)
26
89
  return undefined;
27
- while (item?.upgrade && (item.upgrade.reason !== UpgradeReason.Situational || item.upgrade.preffered)) {
90
+ while (item?.upgrade && (item.upgrade.reason !== UpgradeReason.Situational || item.upgrade.preferred)) {
28
91
  last = item.upgrade;
29
92
  item = FARMING_TOOLS[item.upgrade.id];
30
93
  }
@@ -32,6 +95,28 @@ export function getLastToolUpgrade(tool) {
32
95
  return undefined;
33
96
  return item;
34
97
  }
98
+ export function getUpgradeableInfo(skyblockId) {
99
+ const notFound = { info: undefined, fake: undefined };
100
+ if (!skyblockId)
101
+ return notFound;
102
+ if (FARMING_TOOLS[skyblockId]) {
103
+ const info = FARMING_TOOLS[skyblockId];
104
+ return { info, fake: FarmingTool.fakeItem(info) };
105
+ }
106
+ if (FARMING_ACCESSORIES_INFO[skyblockId]) {
107
+ const info = FARMING_ACCESSORIES_INFO[skyblockId];
108
+ return { info, fake: FarmingAccessory.fakeItem(info) };
109
+ }
110
+ if (FARMING_ARMOR_INFO[skyblockId]) {
111
+ const info = FARMING_ARMOR_INFO[skyblockId];
112
+ return { info, fake: FarmingArmor.fakeItem(info) };
113
+ }
114
+ if (FARMING_EQUIPMENT_INFO[skyblockId]) {
115
+ const info = FARMING_EQUIPMENT_INFO[skyblockId];
116
+ return { info, fake: FarmingEquipment.fakeItem(info) };
117
+ }
118
+ return notFound;
119
+ }
35
120
  export function getNextItemUpgradeableTo(upgradeable, options) {
36
121
  const upgrade = upgradeable.getItemUpgrade();
37
122
  if (!upgrade)
@@ -43,13 +128,13 @@ export function getNextItemUpgradeableTo(upgradeable, options) {
43
128
  }
44
129
  export function getLastItemUpgradeableTo(upgradeable, options) {
45
130
  const upgrade = upgradeable.getItemUpgrade();
46
- if (!upgrade || (upgrade.reason === UpgradeReason.Situational && !upgrade.preffered))
131
+ if (!upgrade || (upgrade.reason === UpgradeReason.Situational && !upgrade.preferred))
47
132
  return undefined;
48
133
  let last = upgrade;
49
134
  let item = options[upgrade.id];
50
135
  if (!item)
51
136
  return undefined;
52
- while (item?.upgrade && (item.upgrade.reason !== UpgradeReason.Situational || item.upgrade.preffered)) {
137
+ while (item?.upgrade && (item.upgrade.reason !== UpgradeReason.Situational || item.upgrade.preferred)) {
53
138
  last = item.upgrade;
54
139
  item = options[item.upgrade.id];
55
140
  }
@@ -99,6 +184,16 @@ export function getSourceProgress(upgradeable, sources, zeroed = false) {
99
184
  if (source.api === false) {
100
185
  progress.api = false;
101
186
  }
187
+ if (source.upgrades) {
188
+ const upgrades = source.upgrades(upgradeable);
189
+ for (const upgrade of upgrades) {
190
+ upgrade.max = upgrade.max ?? max;
191
+ upgrade.wiki = upgrade.wiki ?? progress.wiki;
192
+ }
193
+ if (upgrades.length > 0) {
194
+ progress.upgrades = upgrades;
195
+ }
196
+ }
102
197
  result.push(progress);
103
198
  }
104
199
  return result;
@@ -110,11 +205,20 @@ export function getUpgradeableRarityUpgrade(upgradeable) {
110
205
  const rarity = upgradeable.rarity;
111
206
  const next = nextRarity(upgradeable.rarity);
112
207
  const result = {
113
- title: 'Recombobulator',
208
+ title: 'Recombobulate ' + upgradeable.item.name,
114
209
  increase: 0,
115
210
  action: UpgradeAction.Recombobulate,
116
211
  category: UpgradeCategory.Rarity,
117
212
  improvements: [],
213
+ cost: {
214
+ items: {
215
+ RECOMBOBULATOR_3000: 1,
216
+ },
217
+ },
218
+ onto: {
219
+ name: upgradeable.item.name,
220
+ skyblockId: upgradeable.item.skyblockId,
221
+ },
118
222
  };
119
223
  // Gemstone fortune increases with rarity
120
224
  // Calculate the difference in fortune between the current and next rarity
@@ -130,6 +234,8 @@ export function getUpgradeableRarityUpgrade(upgradeable) {
130
234
  // Reforge fortune increases with rarity
131
235
  // Calculate the difference in fortune between the current and next rarity
132
236
  if (!upgradeable.reforge) {
237
+ if (result.increase <= 0)
238
+ return undefined;
133
239
  return result;
134
240
  }
135
241
  const reforgeTiers = upgradeable.reforge.tiers;
@@ -142,6 +248,8 @@ export function getUpgradeableRarityUpgrade(upgradeable) {
142
248
  fortune: nextFortune - currentFortune,
143
249
  });
144
250
  }
251
+ if (result.increase <= 0)
252
+ return undefined;
145
253
  return result;
146
254
  }
147
255
  export function getUpgradeableEnchants(upgradeable) {
@@ -149,70 +257,212 @@ export function getUpgradeableEnchants(upgradeable) {
149
257
  return [];
150
258
  const result = [];
151
259
  for (const enchantId in FARMING_ENCHANTS) {
152
- const enchant = FARMING_ENCHANTS[enchantId];
153
- // Skip if the enchantment doesn't apply to the item
154
- if (!enchant || !enchant.appliesTo.includes(upgradeable.type))
155
- continue;
156
- // Skip if the enchantment is crop specific and the crop doesn't match
157
- if (upgradeable.crop && enchant.cropSpecific !== upgradeable.crop)
158
- continue;
159
- const applied = upgradeable.item.enchantments?.[enchantId];
160
- // If the enchantment is not applied, add an entry for applying it
161
- if (!applied) {
162
- const procurement = enchant.levels[enchant.minLevel]?.procurement;
163
- result.push({
164
- title: enchant.name + ' 1',
165
- increase: getFortuneFromEnchant(enchant.minLevel, enchant, upgradeable.options, upgradeable.crop),
166
- wiki: enchant.wiki,
167
- action: !procurement || procurement === EnchantTierProcurement.Normal
168
- ? UpgradeAction.Apply
169
- : UpgradeAction.LevelUp,
170
- category: UpgradeCategory.Enchant,
171
- });
260
+ result.push(...getUpgradeableEnchant(upgradeable, enchantId));
261
+ }
262
+ return result;
263
+ }
264
+ export function getUpgradeableEnchant(upgradeable, enchantId) {
265
+ const enchant = FARMING_ENCHANTS[enchantId];
266
+ if (!upgradeable.type || !enchant)
267
+ return [];
268
+ const result = [];
269
+ // Skip if the enchantment doesn't apply to the item
270
+ if (!enchant || !enchant.appliesTo.includes(upgradeable.type))
271
+ return result;
272
+ // Skip if the enchantment is crop specific and the crop doesn't match
273
+ if (enchant.cropSpecific && enchant.cropSpecific !== upgradeable.crop)
274
+ return result;
275
+ const applied = upgradeable.item.enchantments?.[enchantId];
276
+ // If the enchantment is not applied, add an entry for applying it
277
+ if (!applied) {
278
+ const procurement = enchant.levels[enchant.minLevel]?.procurement;
279
+ result.push({
280
+ title: enchant.name + ' 1',
281
+ increase: getFortuneFromEnchant(enchant.minLevel, enchant, upgradeable.options, upgradeable.crop),
282
+ wiki: enchant.wiki,
283
+ action: !procurement || procurement === EnchantTierProcurement.Normal
284
+ ? UpgradeAction.Apply
285
+ : UpgradeAction.LevelUp,
286
+ category: UpgradeCategory.Enchant,
287
+ cost: {
288
+ items: {
289
+ [enchantNameToId(enchant) + '_1']: 1,
290
+ },
291
+ },
292
+ onto: {
293
+ name: upgradeable.item.name,
294
+ skyblockId: upgradeable.item.skyblockId,
295
+ },
296
+ });
297
+ return result;
298
+ }
299
+ // If the enchantment is at max level already, we don't need to do anything
300
+ if (applied >= enchant.maxLevel)
301
+ return result;
302
+ // Add an entry for upgrading the enchantment
303
+ const currentFortune = getFortuneFromEnchant(applied, enchant, upgradeable.options, upgradeable.crop);
304
+ const nextFortune = getFortuneFromEnchant(applied + 1, enchant, upgradeable.options, upgradeable.crop);
305
+ const nextEnchant = enchant.levels[applied + 1];
306
+ if (!nextEnchant)
307
+ return result;
308
+ const normalNext = !nextEnchant.procurement ||
309
+ nextEnchant.procurement === EnchantTierProcurement.Normal ||
310
+ nextEnchant.procurement === EnchantTierProcurement.Loot;
311
+ const items = nextEnchant.cost?.items ?? {};
312
+ switch (nextEnchant.procurement) {
313
+ case undefined:
314
+ case EnchantTierProcurement.Normal: {
315
+ // Get amount of level 1 enchantment items needed to craft the same applied level
316
+ // Ex: 4 level 1 items = 2 level 2 items = 1 level 3 item
317
+ // Count = Math.pow(2, applied - 1)
318
+ const count = Math.pow(2, applied);
319
+ items[enchantNameToId(enchant) + '_1'] = count;
320
+ break;
321
+ }
322
+ case EnchantTierProcurement.Loot:
323
+ // The desired level needs to be applied directly
324
+ items[enchantNameToId(enchant) + '_' + (applied + 1)] = 1;
325
+ break;
326
+ case EnchantTierProcurement.SelfLeveling:
327
+ return result; // Self-leveling enchantments do not have a cost
328
+ default:
329
+ break;
330
+ }
331
+ const cost = {
332
+ ...(nextEnchant.cost ?? {}),
333
+ items: Object.keys(items).length > 0 ? items : undefined,
334
+ };
335
+ result.push({
336
+ title: enchant.name + ' ' + (applied + 1),
337
+ increase: nextFortune - currentFortune,
338
+ action: normalNext ? UpgradeAction.Apply : UpgradeAction.LevelUp,
339
+ category: UpgradeCategory.Enchant,
340
+ cost: cost,
341
+ wiki: enchant.wiki,
342
+ onto: {
343
+ name: upgradeable.item.name,
344
+ skyblockId: upgradeable.item.skyblockId,
345
+ },
346
+ });
347
+ return result;
348
+ }
349
+ function enchantNameToId(enchant) {
350
+ if (enchant.id)
351
+ return enchant.id;
352
+ return 'ENCHANTMENT_' + enchant.name.toLocaleUpperCase().replaceAll(' ', '_').replaceAll('-', '_');
353
+ }
354
+ export function getUpgradeableReforges(upgradeable) {
355
+ const currentFortune = upgradeable.reforgeStats?.stats?.[Stat.FarmingFortune] ?? 0;
356
+ const result = [];
357
+ for (const reforge of Object.values(REFORGES)) {
358
+ // Skip if the reforge doesn't apply to the item or is currently applied
359
+ if (!upgradeable.type ||
360
+ !reforge ||
361
+ !reforge.appliesTo.includes(upgradeable.type) ||
362
+ reforge === upgradeable.reforge) {
172
363
  continue;
173
364
  }
174
- // If the enchantment is at max level already, skip it
175
- if (applied >= enchant.maxLevel)
365
+ const tier = reforge.tiers[upgradeable.rarity];
366
+ if (!tier || !tier.stats?.[Stat.FarmingFortune])
367
+ continue;
368
+ const reforgeFortune = tier.stats[Stat.FarmingFortune];
369
+ // Skip if the reforge doesn't increase farming fortune
370
+ if (reforgeFortune <= currentFortune)
176
371
  continue;
177
- // Add an entry for upgrading the enchantment
178
- const currentFortune = getFortuneFromEnchant(applied, enchant, upgradeable.options, upgradeable.crop);
179
- const nextFortune = getFortuneFromEnchant(applied + 1, enchant, upgradeable.options, upgradeable.crop);
180
372
  result.push({
181
- title: enchant.name + ' ' + (applied + 1),
182
- increase: nextFortune - currentFortune,
373
+ title: 'Reforge to ' + reforge.name,
374
+ increase: reforgeFortune - currentFortune,
183
375
  action: UpgradeAction.Apply,
184
- category: UpgradeCategory.Enchant,
376
+ category: UpgradeCategory.Reforge,
377
+ wiki: reforge.wiki,
378
+ onto: {
379
+ name: upgradeable.item.name,
380
+ skyblockId: upgradeable.item.skyblockId,
381
+ },
382
+ cost: reforge.stone?.id
383
+ ? {
384
+ items: {
385
+ [reforge.stone.id]: 1,
386
+ },
387
+ coins: reforge.stone.npc ?? undefined,
388
+ copper: reforge.stone.copper ?? undefined,
389
+ applyCost: tier.cost
390
+ ? {
391
+ coins: tier.cost,
392
+ }
393
+ : undefined,
394
+ }
395
+ : undefined,
185
396
  });
186
397
  }
187
398
  return result;
188
399
  }
189
400
  export function getUpgradeableGems(upgradeable) {
190
- const peridotSlots = upgradeable.info.gemSlots?.peridot;
191
- if (!peridotSlots)
401
+ const peridotSlots = upgradeable.info.gemSlots?.filter((s) => s.slot_type === 'PERIDOT');
402
+ if (!peridotSlots || peridotSlots.length < 1)
192
403
  return [];
193
- const applied = getPeridotGems(upgradeable.item);
404
+ const unlockedSlots = getPeridotGems(upgradeable.item);
194
405
  const result = [];
195
406
  // Add entries for applying missing gems
196
- for (let i = applied.length; i < peridotSlots; i++) {
407
+ for (let i = 0; i < peridotSlots.length; i++) {
408
+ const slot = peridotSlots[i];
409
+ if (!slot)
410
+ continue;
411
+ const slotId = slot.slot_type + '_' + i;
412
+ // Check that the slot is not unlocked
413
+ if (upgradeable.item?.gems?.[slotId] !== undefined)
414
+ continue;
197
415
  // Intentionally skipping Rough and Flawed gems as they are not really worth applying
198
416
  // A way to configure this would be nice at some point
417
+ const cost = {
418
+ items: {
419
+ FINE_PERIDOT_GEM: 1,
420
+ },
421
+ };
422
+ if (slot.costs) {
423
+ for (const costItem of slot.costs) {
424
+ if (costItem.type === 'ITEM') {
425
+ cost.items ??= {};
426
+ cost.items[costItem.item_id] = costItem.amount + (cost.items[costItem.item_id] ?? 0);
427
+ }
428
+ else if (costItem.type === 'COINS') {
429
+ cost.coins = costItem.coins;
430
+ }
431
+ }
432
+ }
199
433
  result.push({
200
434
  title: 'Fine Peridot Gemstone',
201
435
  increase: getPeridotGemFortune(upgradeable.rarity, GemRarity.Fine),
436
+ cost: cost,
437
+ onto: {
438
+ name: upgradeable.item.name,
439
+ skyblockId: upgradeable.item.skyblockId,
440
+ },
202
441
  action: UpgradeAction.Apply,
203
442
  category: UpgradeCategory.Gem,
204
443
  });
205
444
  }
206
445
  // Add entries for upgrading existing gems
207
- for (const gem of applied) {
446
+ for (const gem of unlockedSlots) {
208
447
  if (gem === GemRarity.Perfect)
209
448
  continue;
210
- const nextGem = getNextGemRarity(gem);
449
+ // Start at Fine if the gem is null (not applied)
450
+ // Flawed and Rough gems are not really worth applying
451
+ const nextGem = gem === null ? GemRarity.Fine : getNextGemRarity(gem);
211
452
  const currentFortune = getPeridotGemFortune(upgradeable.rarity, gem);
212
453
  const nextFortune = getPeridotGemFortune(upgradeable.rarity, nextGem);
213
454
  if (nextFortune > currentFortune) {
214
455
  result.push({
215
456
  title: getGemRarityName(nextGem) + ' Peridot Gemstone',
457
+ cost: {
458
+ items: {
459
+ [`${getGemRarityName(nextGem).toUpperCase()}_PERIDOT_GEM`]: 1,
460
+ },
461
+ },
462
+ onto: {
463
+ name: upgradeable.item.name,
464
+ skyblockId: upgradeable.item.skyblockId,
465
+ },
216
466
  increase: nextFortune - currentFortune,
217
467
  action: UpgradeAction.Apply,
218
468
  category: UpgradeCategory.Gem,
@@ -1 +1 @@
1
- {"version":3,"file":"upgrades.js","sourceRoot":"","sources":["../../src/upgrades/upgrades.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAMN,aAAa,EACb,eAAe,EACf,aAAa,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,MAAM,UAAU,UAAU,CAAC,KAAgC,EAAE,MAAqB;IACjF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAwB;IACvD,OAAO;QACN,2BAA2B,CAAC,WAAW,CAAC;QACxC,GAAG,sBAAsB,CAAC,WAAW,CAAC;QACtC,GAAG,kBAAkB,CAAC,WAAW,CAAC;KAClC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAqB,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,IAAI,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACtG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QACpB,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KACtC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAEhD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,WAAwB,EACxB,OAAiD;IAEjD,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,WAAwB,EACxB,OAAiD;IAEjD,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvG,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACtG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QACpB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAEhD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,WAAc,EACd,OAAkC,EAClC,MAAM,GAAG,KAAK;IAEd,MAAM,MAAM,GAAG,EAA6B,CAAC;IAE7C,wCAAwC;IACxC,IAAI,YAAY,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,UAAU,EAAE;QAChF,WAAW,CAAC,UAAU,EAAE,CAAC;KACzB;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,SAAS;QAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;SACR,CAAC;QAE3B,IAAI,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,CAAC,EAAE;gBACN,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;aACtB;SACD;QAED,IAAI,MAAM,CAAC,IAAI,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnE,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/B,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/B,IAAI,OAAO;gBAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YACxC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC3C;QAED,IAAI,MAAM,CAAC,IAAI,EAAE;YAChB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;SAC/B;QAED,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE;YACzB,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;SACrB;QAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtB;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAwB;IACnE,6CAA6C;IAC7C,IAAI,WAAW,CAAC,cAAc;QAAE,OAAO;IAEvC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG;QACd,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,aAAa,CAAC,aAAa;QACnC,QAAQ,EAAE,eAAe,CAAC,MAAM;QAChC,YAAY,EAAE,EAAiC;KACtB,CAAC;IAE3B,yCAAyC;IACzC,0EAA0E;IAE1E,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAE9D,IAAI,WAAW,GAAG,cAAc,EAAE;QACjC,MAAM,CAAC,QAAQ,IAAI,WAAW,GAAG,cAAc,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,WAAW,GAAG,cAAc;SACrC,CAAC,CAAC;KACH;IAED,wCAAwC;IACxC,0EAA0E;IAE1E,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QACzB,OAAO,MAAM,CAAC;KACd;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAE5E,IAAI,WAAW,GAAG,cAAc,EAAE;QACjC,MAAM,CAAC,QAAQ,IAAI,WAAW,GAAG,cAAc,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,WAAW,GAAG,cAAc;SACrC,CAAC,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAwB;IAC9D,IAAI,CAAC,WAAW,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,EAAsB,CAAC;IAEtC,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE;QACzC,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5C,oDAAoD;QACpD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,SAAS;QACxE,sEAAsE;QACtE,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC,YAAY,KAAK,WAAW,CAAC,IAAI;YAAE,SAAS;QAE5E,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;QAE3D,kEAAkE;QAClE,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;YAElE,MAAM,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI;gBAC1B,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;gBACjG,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EACL,CAAC,WAAW,IAAI,WAAW,KAAK,sBAAsB,CAAC,MAAM;oBAC5D,CAAC,CAAC,aAAa,CAAC,KAAK;oBACrB,CAAC,CAAC,aAAa,CAAC,OAAO;gBACzB,QAAQ,EAAE,eAAe,CAAC,OAAO;aACjC,CAAC,CAAC;YAEH,SAAS;SACT;QAED,sDAAsD;QACtD,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ;YAAE,SAAS;QAE1C,6CAA6C;QAC7C,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACtG,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvG,MAAM,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;YACzC,QAAQ,EAAE,WAAW,GAAG,cAAc;YACtC,MAAM,EAAE,aAAa,CAAC,KAAK;YAC3B,QAAQ,EAAE,eAAe,CAAC,OAAO;SACjC,CAAC,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAwB;IAC1D,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE7B,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,EAAsB,CAAC;IAEtC,wCAAwC;IACxC,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;QACnD,qFAAqF;QACrF,sDAAsD;QACtD,MAAM,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,uBAAuB;YAC9B,QAAQ,EAAE,oBAAoB,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;YAClE,MAAM,EAAE,aAAa,CAAC,KAAK;YAC3B,QAAQ,EAAE,eAAe,CAAC,GAAG;SAC7B,CAAC,CAAC;KACH;IAED,0CAA0C;IAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QAC1B,IAAI,GAAG,KAAK,SAAS,CAAC,OAAO;YAAE,SAAS;QAExC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAI,WAAW,GAAG,cAAc,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,mBAAmB;gBACtD,QAAQ,EAAE,WAAW,GAAG,cAAc;gBACtC,MAAM,EAAE,aAAa,CAAC,KAAK;gBAC3B,QAAQ,EAAE,eAAe,CAAC,GAAG;aAC7B,CAAC,CAAC;SACH;KACD;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"upgrades.js","sourceRoot":"","sources":["../../src/upgrades/upgrades.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAkB,MAAM,0BAA0B,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAU,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAMN,aAAa,EACb,eAAe,EAEf,aAAa,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,wBAAwB,EAAwB,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,MAAM,UAAU,UAAU,CAAC,KAAgC,EAAE,MAAqB;IACjF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAwB;IACvD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACtE,IAAI,OAAO;QAAE,OAAO,CAAC,OAAO,CAAqB,CAAC;IAElD,MAAM,QAAQ,GAAG,EAAoC,CAAC;IAEtD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAqB,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,WAAwB;IAExB,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC;IAErE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAE5E,IAAI,OAAO,IAAI,QAAQ,EAAE;QACxB,OAAO;YACN,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACR,KAAK,EAAE,QAAQ,CAAC,IAAI;gBACpB,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;gBACrC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,aAAa,CAAC,QAAQ;gBAC9B,QAAQ,EAAE,QAAQ,CAAC,UAAU;gBAC7B,QAAQ,EAAE,eAAe,CAAC,IAAI;gBAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI;oBACtB,KAAK,EAAE;wBACN,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;qBACxB;iBACD;gBACD,IAAI,EAAE;oBACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;oBAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;iBACvC;aACwB;SAC1B,CAAC;KACF;SAAM,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC3G,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;QACrE,OAAO;YACN,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACR,KAAK,EAAE,QAAQ,CAAC,IAAI;gBACpB,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;gBACrC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO;gBACtG,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;gBACjF,QAAQ,EAAE,eAAe,CAAC,IAAI;gBAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI;oBACtB,KAAK,EAAE;wBACN,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;qBAChB;iBACD;gBACD,IAAI,EAAE;oBACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;oBAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;iBACvC;aACwB;SAC1B,CAAC;KACF;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,IAAI,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACtG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QACpB,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KACtC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAEhD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAmB;IACrD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAW,CAAC;IAC/D,IAAI,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;QAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAuB,CAAC,EAAE,CAAC;KACrE;IACD,IAAI,wBAAwB,CAAC,UAAU,CAAC,EAAE;QACzC,MAAM,IAAI,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAA4B,CAAC,EAAE,CAAC;KAC/E;IACD,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAwB,CAAC,EAAE,CAAC;KACvE;IACD,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;QACvC,MAAM,IAAI,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAwB,CAAC,EAAE,CAAC;KAC3E;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,WAAwB,EACxB,OAAiD;IAEjD,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,WAAwB,EACxB,OAAiD;IAEjD,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvG,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACtG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QACpB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAEhD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,WAAc,EACd,OAAkC,EAClC,MAAM,GAAG,KAAK;IAEd,MAAM,MAAM,GAAG,EAA6B,CAAC;IAE7C,wCAAwC;IACxC,IAAI,YAAY,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,UAAU,EAAE;QAChF,WAAW,CAAC,UAAU,EAAE,CAAC;KACzB;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,SAAS;QAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;SACR,CAAC;QAE3B,IAAI,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,CAAC,EAAE;gBACN,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;aACtB;SACD;QAED,IAAI,MAAM,CAAC,IAAI,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnE,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/B,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/B,IAAI,OAAO;gBAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YACxC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC3C;QAED,IAAI,MAAM,CAAC,IAAI,EAAE;YAChB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;SAC/B;QAED,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE;YACzB,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;SACrB;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC/B,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;gBACjC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;aAC7C;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC7B;SACD;QAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtB;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAwB;IACnE,6CAA6C;IAC7C,IAAI,WAAW,CAAC,cAAc;QAAE,OAAO;IAEvC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG;QACd,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI;QAC/C,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,aAAa,CAAC,aAAa;QACnC,QAAQ,EAAE,eAAe,CAAC,MAAM;QAChC,YAAY,EAAE,EAAiC;QAC/C,IAAI,EAAE;YACL,KAAK,EAAE;gBACN,mBAAmB,EAAE,CAAC;aACtB;SACD;QACD,IAAI,EAAE;YACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;YAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;SACvC;KACwB,CAAC;IAE3B,yCAAyC;IACzC,0EAA0E;IAE1E,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAE9D,IAAI,WAAW,GAAG,cAAc,EAAE;QACjC,MAAM,CAAC,QAAQ,IAAI,WAAW,GAAG,cAAc,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,WAAW,GAAG,cAAc;SACrC,CAAC,CAAC;KACH;IAED,wCAAwC;IACxC,0EAA0E;IAC1E,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QACzB,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,OAAO,MAAM,CAAC;KACd;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAE5E,IAAI,WAAW,GAAG,cAAc,EAAE;QACjC,MAAM,CAAC,QAAQ,IAAI,WAAW,GAAG,cAAc,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,WAAW,GAAG,cAAc;SACrC,CAAC,CAAC;KACH;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAwB;IAC9D,IAAI,CAAC,WAAW,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,EAAsB,CAAC;IAEtC,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE;QACzC,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;KAC9D;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAwB,EAAE,SAAiB;IAChF,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,EAAsB,CAAC;IAEtC,oDAAoD;IACpD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC7E,sEAAsE;IACtE,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,KAAK,WAAW,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAErF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;IAE3D,kEAAkE;IAClE,IAAI,CAAC,OAAO,EAAE;QACb,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;QAElE,MAAM,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI;YAC1B,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;YACjG,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EACL,CAAC,WAAW,IAAI,WAAW,KAAK,sBAAsB,CAAC,MAAM;gBAC5D,CAAC,CAAC,aAAa,CAAC,KAAK;gBACrB,CAAC,CAAC,aAAa,CAAC,OAAO;YACzB,QAAQ,EAAE,eAAe,CAAC,OAAO;YACjC,IAAI,EAAE;gBACL,KAAK,EAAE;oBACN,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;iBACpC;aACD;YACD,IAAI,EAAE;gBACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;gBAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;aACvC;SACD,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;KACd;IAED,2EAA2E;IAC3E,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAE/C,6CAA6C;IAC7C,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IACtG,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvG,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW;QAAE,OAAO,MAAM,CAAC;IAEhC,MAAM,UAAU,GACf,CAAC,WAAW,CAAC,WAAW;QACxB,WAAW,CAAC,WAAW,KAAK,sBAAsB,CAAC,MAAM;QACzD,WAAW,CAAC,WAAW,KAAK,sBAAsB,CAAC,IAAI,CAAC;IACzD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,IAAK,EAA6B,CAAC;IAExE,QAAQ,WAAW,CAAC,WAAW,EAAE;QAChC,KAAK,SAAS,CAAC;QACf,KAAK,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACnC,iFAAiF;YACjF,yDAAyD;YACzD,mCAAmC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;YAC/C,MAAM;SACN;QACD,KAAK,sBAAsB,CAAC,IAAI;YAC/B,iDAAiD;YACjD,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM;QACP,KAAK,sBAAsB,CAAC,YAAY;YACvC,OAAO,MAAM,CAAC,CAAC,gDAAgD;QAChE;YACC,MAAM;KACP;IAED,MAAM,IAAI,GAAG;QACZ,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KACxD,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;QACzC,QAAQ,EAAE,WAAW,GAAG,cAAc;QACtC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO;QAChE,QAAQ,EAAE,eAAe,CAAC,OAAO;QACjC,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE;YACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;YAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;SACvC;KACD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,OAAuB;IAC/C,IAAI,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,EAAE,CAAC;IAClC,OAAO,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAwB;IAC9D,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QAC9C,wEAAwE;QACxE,IACC,CAAC,WAAW,CAAC,IAAI;YACjB,CAAC,OAAO;YACR,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;YAC7C,OAAO,KAAK,WAAW,CAAC,OAAO,EAC9B;YACD,SAAS;SACT;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,SAAS;QAE1D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,uDAAuD;QACvD,IAAI,cAAc,IAAI,cAAc;YAAE,SAAS;QAE/C,MAAM,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI;YACnC,QAAQ,EAAE,cAAc,GAAG,cAAc;YACzC,MAAM,EAAE,aAAa,CAAC,KAAK;YAC3B,QAAQ,EAAE,eAAe,CAAC,OAAO;YACjC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE;gBACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;gBAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;aACvC;YACD,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;gBACtB,CAAC,CAAC;oBACA,KAAK,EAAE;wBACN,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;qBACrB;oBACD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS;oBACrC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS;oBACzC,SAAS,EAAE,IAAI,CAAC,IAAI;wBACnB,CAAC,CAAC;4BACA,KAAK,EAAE,IAAI,CAAC,IAAI;yBAChB;wBACF,CAAC,CAAC,SAAS;iBACZ;gBACF,CAAC,CAAC,SAAS;SACZ,CAAC,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAwB;IAC1D,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACzF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAExD,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,EAAsB,CAAC;IAEtC,wCAAwC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;QAExC,sCAAsC;QACtC,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS;YAAE,SAAS;QAE7D,qFAAqF;QACrF,sDAAsD;QAEtD,MAAM,IAAI,GAAG;YACZ,KAAK,EAAE;gBACN,gBAAgB,EAAE,CAAC;aACnB;SACc,CAAC;QAEjB,IAAI,IAAI,CAAC,KAAK,EAAE;YACf,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;gBAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;oBAC7B,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;oBAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;iBACrF;qBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;oBACrC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;iBAC5B;aACD;SACD;QAED,MAAM,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,uBAAuB;YAC9B,QAAQ,EAAE,oBAAoB,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;YAClE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;gBAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;aACvC;YACD,MAAM,EAAE,aAAa,CAAC,KAAK;YAC3B,QAAQ,EAAE,eAAe,CAAC,GAAG;SAC7B,CAAC,CAAC;KACH;IAED,0CAA0C;IAC1C,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;QAChC,IAAI,GAAG,KAAK,SAAS,CAAC,OAAO;YAAE,SAAS;QAExC,iDAAiD;QACjD,sDAAsD;QACtD,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAI,WAAW,GAAG,cAAc,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,mBAAmB;gBACtD,IAAI,EAAE;oBACL,KAAK,EAAE;wBACN,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC;qBAC7D;iBACD;gBACD,IAAI,EAAE;oBACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;oBAC3B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;iBACvC;gBACD,QAAQ,EAAE,WAAW,GAAG,cAAc;gBACtC,MAAM,EAAE,aAAa,CAAC,KAAK;gBAC3B,QAAQ,EAAE,eAAe,CAAC,GAAG;aAC7B,CAAC,CAAC;SACH;KACD;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Crop } from '../constants/crops.js';
2
+ import { type PlotType } from '../constants/plots.js';
2
3
  import { Rarity } from '../constants/reforges.js';
3
4
  export interface LevelingStats {
4
5
  level: number;
@@ -33,3 +34,11 @@ export interface GardenVisitorStatsWithName extends GardenVisitorStats {
33
34
  rarity: Rarity;
34
35
  }
35
36
  export declare function groupGardenVisitors(visitors: Record<string, GardenVisitorStats>): Record<Rarity, GardenVisitorStatsWithName[]>;
37
+ export declare function getNextPlotCost(plots: string[]): {
38
+ cost: import("../index.js").UpgradeCost | undefined;
39
+ plot: {
40
+ name: string;
41
+ type: PlotType;
42
+ position: number[];
43
+ } | undefined;
44
+ } | undefined;
@@ -1,4 +1,5 @@
1
1
  import { CROP_MILESTONES, GARDEN_EXP_REQUIRED, GARDEN_VISITORS } from '../constants/garden.js';
2
+ import { GARDEN_PLOTS, GARDEN_PLOT_COSTS } from '../constants/plots.js';
2
3
  import { getCropFromName } from './names.js';
3
4
  /**
4
5
  * Gets user's current level based on experience
@@ -111,4 +112,21 @@ export function groupGardenVisitors(visitors) {
111
112
  }
112
113
  return groups;
113
114
  }
115
+ export function getNextPlotCost(plots) {
116
+ const unlocked = plots.reduce((acc, plot) => {
117
+ const plotData = GARDEN_PLOTS[plot];
118
+ acc[plotData.type] = (acc[plotData.type] ?? 0) + 1;
119
+ return acc;
120
+ }, {});
121
+ for (const [type, count] of Object.entries(GARDEN_PLOT_COSTS)) {
122
+ const plotType = type;
123
+ if (unlocked[plotType] === undefined || (unlocked[plotType] ?? 0) < count.length) {
124
+ const nextPlot = Object.entries(GARDEN_PLOTS)
125
+ .filter(([id, plot]) => plot.type === plotType && !plots.includes(id))
126
+ .sort((a, b) => a[1].name.localeCompare(b[1].name))[0];
127
+ return { cost: count[unlocked?.[plotType] ?? 0], plot: nextPlot ? nextPlot[1] : undefined };
128
+ }
129
+ }
130
+ return undefined;
131
+ }
114
132
  //# sourceMappingURL=garden.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"garden.js","sourceRoot":"","sources":["../../src/util/garden.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"garden.js","sourceRoot":"","sources":["../../src/util/garden.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Rarity } from '../constants/reforges.js';
2
2
  import { EliteItemDto, GemRarity } from '../fortune/item.js';
3
3
  export declare function getPeridotFortune(rarity: Rarity, item: EliteItemDto): number;
4
- export declare function getPeridotGems(item: EliteItemDto): GemRarity[];
5
- export declare function getPeridotGemFortune(rarity: Rarity, gem: GemRarity): number;
6
- export declare function getNextGemRarity(gem: GemRarity): GemRarity.Flawed | GemRarity.Fine | GemRarity.Flawless | GemRarity.Perfect;
7
- export declare function getGemRarityName(rarity: GemRarity): "Rough" | "Flawed" | "Fine" | "Flawless" | "Perfect";
4
+ export declare function getPeridotGems(item: EliteItemDto): (GemRarity | null)[];
5
+ export declare function getPeridotGemFortune(rarity: Rarity, gem: GemRarity | null): number;
6
+ export declare function getNextGemRarity(gem: GemRarity | null): GemRarity;
7
+ export declare function getGemRarityName(rarity: GemRarity | null): string;
package/dist/util/gems.js CHANGED
@@ -20,10 +20,14 @@ export function getPeridotGems(item) {
20
20
  .map(([, rarity]) => rarity);
21
21
  }
22
22
  export function getPeridotGemFortune(rarity, gem) {
23
+ if (!gem)
24
+ return 0;
23
25
  return PERIDOT[rarity]?.[gem] ?? 0;
24
26
  }
25
27
  export function getNextGemRarity(gem) {
26
28
  switch (gem) {
29
+ case null:
30
+ return GemRarity.Rough;
27
31
  case GemRarity.Rough:
28
32
  return GemRarity.Flawed;
29
33
  case GemRarity.Flawed:
@@ -38,6 +42,8 @@ export function getNextGemRarity(gem) {
38
42
  }
39
43
  export function getGemRarityName(rarity) {
40
44
  switch (rarity) {
45
+ case null:
46
+ return 'None';
41
47
  case GemRarity.Rough:
42
48
  return 'Rough';
43
49
  case GemRarity.Flawed:
@@ -1 +1 @@
1
- {"version":3,"file":"gems.js","sourceRoot":"","sources":["../../src/util/gems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAgB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,IAAkB;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC5C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAmB,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAc;IAClE,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAc;IAC9C,QAAQ,GAAG,EAAE;QACZ,KAAK,SAAS,CAAC,KAAK;YACnB,OAAO,SAAS,CAAC,MAAM,CAAC;QACzB,KAAK,SAAS,CAAC,MAAM;YACpB,OAAO,SAAS,CAAC,IAAI,CAAC;QACvB,KAAK,SAAS,CAAC,IAAI;YAClB,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC3B,KAAK,SAAS,CAAC,QAAQ;YACtB,OAAO,SAAS,CAAC,OAAO,CAAC;QAC1B,KAAK,SAAS,CAAC,OAAO;YACrB,OAAO,SAAS,CAAC,OAAO,CAAC;KAC1B;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IACjD,QAAQ,MAAM,EAAE;QACf,KAAK,SAAS,CAAC,KAAK;YACnB,OAAO,OAAO,CAAC;QAChB,KAAK,SAAS,CAAC,MAAM;YACpB,OAAO,QAAQ,CAAC;QACjB,KAAK,SAAS,CAAC,IAAI;YAClB,OAAO,MAAM,CAAC;QACf,KAAK,SAAS,CAAC,QAAQ;YACtB,OAAO,UAAU,CAAC;QACnB,KAAK,SAAS,CAAC,OAAO;YACrB,OAAO,SAAS,CAAC;KAClB;AACF,CAAC"}
1
+ {"version":3,"file":"gems.js","sourceRoot":"","sources":["../../src/util/gems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAgB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,IAAkB;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC5C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAA0B,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAqB;IACzE,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IACnB,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAqB;IACrD,QAAQ,GAAG,EAAE;QACZ,KAAK,IAAI;YACR,OAAO,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,SAAS,CAAC,KAAK;YACnB,OAAO,SAAS,CAAC,MAAM,CAAC;QACzB,KAAK,SAAS,CAAC,MAAM;YACpB,OAAO,SAAS,CAAC,IAAI,CAAC;QACvB,KAAK,SAAS,CAAC,IAAI;YAClB,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC3B,KAAK,SAAS,CAAC,QAAQ;YACtB,OAAO,SAAS,CAAC,OAAO,CAAC;QAC1B,KAAK,SAAS,CAAC,OAAO;YACrB,OAAO,SAAS,CAAC,OAAO,CAAC;KAC1B;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACxD,QAAQ,MAAM,EAAE;QACf,KAAK,IAAI;YACR,OAAO,MAAM,CAAC;QACf,KAAK,SAAS,CAAC,KAAK;YACnB,OAAO,OAAO,CAAC;QAChB,KAAK,SAAS,CAAC,MAAM;YACpB,OAAO,QAAQ,CAAC;QACjB,KAAK,SAAS,CAAC,IAAI;YAClB,OAAO,MAAM,CAAC;QACf,KAAK,SAAS,CAAC,QAAQ;YACtB,OAAO,UAAU,CAAC;QACnB,KAAK,SAAS,CAAC,OAAO;YACrB,OAAO,SAAS,CAAC;KAClB;AACF,CAAC"}
@@ -21,10 +21,11 @@ const crops = [
21
21
  export function calculateAverageDrops(options) {
22
22
  const result = {};
23
23
  for (const crop of crops) {
24
+ const fortune = (options.cropFortune?.[crop] ?? 0) + (options.farmingFortune ?? 0);
24
25
  result[crop] = calculateExpectedDrops({
25
26
  crop: crop,
26
27
  ...options,
27
- farmingFortune: (options.cropFortune?.[crop] ?? 0) + (options.farmingFortune ?? 0),
28
+ farmingFortune: fortune > 0 ? fortune : undefined,
28
29
  });
29
30
  }
30
31
  return result;
@@ -32,10 +33,11 @@ export function calculateAverageDrops(options) {
32
33
  export function calculateDetailedAverageDrops(options) {
33
34
  const result = {};
34
35
  for (const crop of crops) {
36
+ const fortune = (options.cropFortune?.[crop] ?? 0) + (options.farmingFortune ?? 0);
35
37
  result[crop] = calculateDetailedDrops({
36
38
  crop: crop,
37
39
  ...options,
38
- farmingFortune: (options.cropFortune?.[crop] ?? 0) + (options.farmingFortune ?? 0),
40
+ farmingFortune: fortune > 0 ? fortune : undefined,
39
41
  });
40
42
  }
41
43
  const wheat = result[Crop.Wheat];