farming-weight 0.1.3 → 0.2.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 (77) hide show
  1. package/README.md +23 -2
  2. package/dist/classes/farmingarmor.d.ts +2 -0
  3. package/dist/classes/farmingarmor.js +7 -0
  4. package/dist/classes/farmingarmor.js.map +1 -0
  5. package/dist/classes/farmingtool.d.ts +27 -0
  6. package/dist/classes/farmingtool.js +101 -0
  7. package/dist/classes/farmingtool.js.map +1 -0
  8. package/dist/classes/item.d.ts +14 -0
  9. package/dist/classes/item.js +3 -0
  10. package/dist/classes/item.js.map +1 -0
  11. package/dist/classes/player.d.ts +30 -0
  12. package/{lib → dist/classes}/player.js +1 -0
  13. package/dist/classes/player.js.map +1 -0
  14. package/dist/classes/weightcalc.d.ts +50 -0
  15. package/{lib/weight → dist/classes}/weightcalc.js +5 -0
  16. package/dist/classes/weightcalc.js.map +1 -0
  17. package/dist/constants/armor.d.ts +27 -0
  18. package/dist/constants/armor.js +403 -0
  19. package/dist/constants/armor.js.map +1 -0
  20. package/{lib → dist}/constants/crops.d.ts +1 -0
  21. package/{lib → dist}/constants/crops.js +6 -0
  22. package/dist/constants/crops.js.map +1 -0
  23. package/{lib → dist}/constants/items.js +1 -0
  24. package/dist/constants/items.js.map +1 -0
  25. package/dist/constants/reforges.d.ts +59 -0
  26. package/dist/constants/reforges.js +449 -0
  27. package/dist/constants/reforges.js.map +1 -0
  28. package/dist/constants/skills.d.ts +13 -0
  29. package/dist/constants/skills.js +18 -0
  30. package/dist/constants/skills.js.map +1 -0
  31. package/{lib → dist}/constants/specialcrops.js +1 -0
  32. package/dist/constants/specialcrops.js.map +1 -0
  33. package/dist/constants/tools.d.ts +19 -0
  34. package/dist/constants/tools.js +263 -0
  35. package/dist/constants/tools.js.map +1 -0
  36. package/{lib → dist}/constants/weight.js +1 -0
  37. package/dist/constants/weight.js.map +1 -0
  38. package/{lib → dist}/crops/melon.js +1 -0
  39. package/dist/crops/melon.js.map +1 -0
  40. package/{lib → dist}/crops/pumpkin.js +1 -0
  41. package/dist/crops/pumpkin.js.map +1 -0
  42. package/{lib → dist}/crops/special.js +3 -1
  43. package/dist/crops/special.js.map +1 -0
  44. package/dist/index.d.ts +16 -0
  45. package/dist/index.js +33 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/player.js +30 -0
  48. package/dist/player.js.map +1 -0
  49. package/{lib → dist}/ratecalc.js +14 -16
  50. package/dist/ratecalc.js.map +1 -0
  51. package/dist/tool.d.ts +1 -0
  52. package/{lib → dist}/tool.js +2 -0
  53. package/dist/tool.js.map +1 -0
  54. package/dist/util/itemstats.d.ts +4 -0
  55. package/dist/util/itemstats.js +73 -0
  56. package/dist/util/itemstats.js.map +1 -0
  57. package/{lib → dist}/util/jacob.js +1 -0
  58. package/dist/util/jacob.js.map +1 -0
  59. package/{lib → dist}/util/names.js +1 -0
  60. package/dist/util/names.js.map +1 -0
  61. package/{lib → dist}/weight/weightcalc.d.ts +1 -0
  62. package/dist/weight/weightcalc.js +168 -0
  63. package/dist/weight/weightcalc.js.map +1 -0
  64. package/package.json +4 -4
  65. package/lib/index.d.ts +0 -6
  66. package/lib/index.js +0 -20
  67. package/lib/tool.d.ts +0 -0
  68. /package/{lib → dist}/constants/items.d.ts +0 -0
  69. /package/{lib → dist}/constants/specialcrops.d.ts +0 -0
  70. /package/{lib → dist}/constants/weight.d.ts +0 -0
  71. /package/{lib → dist}/crops/melon.d.ts +0 -0
  72. /package/{lib → dist}/crops/pumpkin.d.ts +0 -0
  73. /package/{lib → dist}/crops/special.d.ts +0 -0
  74. /package/{lib → dist}/player.d.ts +0 -0
  75. /package/{lib → dist}/ratecalc.d.ts +0 -0
  76. /package/{lib → dist}/util/jacob.d.ts +0 -0
  77. /package/{lib → dist}/util/names.d.ts +0 -0
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Tools
2
- NPM package for Farming Weight and fortune calculations
2
+ NPM package for Farming Weight and fortune calculations in Hypixel SkyBlock.
3
+
4
+ Created specifically for the [EliteWebsite](https://github.com/EliteFarmers/Website) and [EliteBot](https://github.com/EliteFarmers/Bot) projects, but can be used for any project, as long as some credit is given per the license.
3
5
 
4
6
  ## Installation
5
7
  ```bash
@@ -7,5 +9,24 @@ npm install farming-weight
7
9
  ```
8
10
 
9
11
  ## Usage
12
+
13
+ **This is a new package that's changing rapidly, there aren't any comprehensive docs at this time**
14
+
10
15
  ```js
11
- import { getWeight, getFortune } = ('farming-weight');
16
+ import { CreateFarmingWeightCalculator } from 'farming-weight';
17
+
18
+ const member = // Get SkyBlock member from elsewhere
19
+
20
+ const calculator = CreateFarmingWeightCalculator({
21
+ collection: member.collection,
22
+ farmingXp: member.experience_skill_farming,
23
+ levelCapUpgrade: member.jacob2?.perks?.farming_level_cap,
24
+ anitaBonusFarmingFortuneLevel?: member.jacob2?.perks?.anita_bonus_farming_fortune_level,
25
+ minions: member.crafted_generators, // You should also include minions crafted from other members on the same profile
26
+ contests: member.jacob2?.contests,
27
+ }).setEarnedGoldMedals(earnedGoldMedals) // Can pass in some values instead of calculating them (you can exclude contests if you do this)
28
+
29
+ const weight = calculator.getWeightInfo();
30
+
31
+ console.log(weight.totalWeight); // 10000.53 (or whatever the total weight is)
32
+ ```
@@ -0,0 +1,2 @@
1
+ export declare class FarmingArmor {
2
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FarmingArmor = void 0;
4
+ class FarmingArmor {
5
+ }
6
+ exports.FarmingArmor = FarmingArmor;
7
+ //# sourceMappingURL=farmingarmor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"farmingarmor.js","sourceRoot":"","sources":["../../src/classes/farmingarmor.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;CAAG;AAA5B,oCAA4B"}
@@ -0,0 +1,27 @@
1
+ import { Crop } from '../constants/crops';
2
+ import { Rarity, Reforge, ReforgeTier } from '../constants/reforges';
3
+ import { FarmingToolInfo } from '../constants/tools';
4
+ import { Item } from './item';
5
+ export declare class FarmingTool {
6
+ readonly item: Item;
7
+ readonly crop: Crop;
8
+ readonly tool: FarmingToolInfo;
9
+ readonly rarity: Rarity;
10
+ readonly counter: number | undefined;
11
+ readonly cultivating: number;
12
+ readonly reforge: Reforge | undefined;
13
+ readonly reforgeStats: ReforgeTier | undefined;
14
+ readonly farmingForDummies: number;
15
+ readonly recombobulated: boolean;
16
+ fortune: number;
17
+ fortuneBreakdown: Record<string, number>;
18
+ constructor(item: Item);
19
+ private sumFortune;
20
+ private getCounter;
21
+ private getCultivating;
22
+ getCultivatingLevel(): number;
23
+ get farmed(): number;
24
+ private getFarmingAbilityFortune;
25
+ static isValid(item: Item): boolean;
26
+ }
27
+ export declare function IsValidFarmingTool(item: Item): boolean;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsValidFarmingTool = exports.FarmingTool = void 0;
4
+ const reforges_1 = require("../constants/reforges");
5
+ const tools_1 = require("../constants/tools");
6
+ const itemstats_1 = require("../util/itemstats");
7
+ class FarmingTool {
8
+ constructor(item) {
9
+ this.item = item;
10
+ const tool = tools_1.FARMING_TOOLS[item.skyblockId];
11
+ if (!tool) {
12
+ throw new Error(`Unknown farming tool: ${item.name} (${item.skyblockId})`);
13
+ }
14
+ this.tool = tool;
15
+ this.crop = tool.crop;
16
+ if (item.lore) {
17
+ this.rarity = (0, itemstats_1.GetRarityFromLore)(item.lore);
18
+ }
19
+ this.counter = this.getCounter();
20
+ this.cultivating = this.getCultivating() ?? 0;
21
+ this.reforge = reforges_1.REFORGES[item.attributes?.modifier ?? ''] ?? undefined;
22
+ this.reforgeStats = this.reforge?.tiers?.[this.rarity];
23
+ this.farmingForDummies = +(this.item.attributes?.farming_for_dummies_count ?? 0);
24
+ this.recombobulated = this.item.attributes?.rarity_upgrades === '1';
25
+ this.fortune = this.sumFortune();
26
+ }
27
+ sumFortune() {
28
+ this.fortuneBreakdown = {};
29
+ let sum = 0;
30
+ // Base fortune
31
+ const base = this.tool.baseStats?.[reforges_1.Stat.FarmingFortune] ?? 0;
32
+ if (base > 0) {
33
+ this.fortuneBreakdown['Tool Bonus'] = base;
34
+ sum += base;
35
+ }
36
+ // Tool rarity stats
37
+ const baseRarity = this.recombobulated ? (0, itemstats_1.PreviousRarity)(this.rarity) : this.rarity;
38
+ const rarityStats = this.tool.stats?.[baseRarity]?.[reforges_1.Stat.FarmingFortune] ?? 0;
39
+ if (rarityStats > 0) {
40
+ this.fortuneBreakdown['Tool Stats'] = rarityStats;
41
+ sum += rarityStats;
42
+ }
43
+ // Reforge stats
44
+ const reforge = this.reforgeStats?.stats?.[reforges_1.Stat.FarmingFortune] ?? 0;
45
+ if (reforge > 0) {
46
+ this.fortuneBreakdown[this.reforge?.name ?? 'Reforge'] = reforge;
47
+ sum += reforge;
48
+ }
49
+ // Farming for Dummies
50
+ if (this.farmingForDummies > 0) {
51
+ this.fortuneBreakdown['Farming for Dummies'] = this.farmingForDummies;
52
+ sum += this.farmingForDummies;
53
+ }
54
+ // Collection analysis and digit bonuses
55
+ if (this.tool.type === tools_1.FarmingToolType.MathematicalHoe) {
56
+ const ability = this.getFarmingAbilityFortune(this);
57
+ if (ability > 0) {
58
+ this.fortuneBreakdown['Tool Ability'] = ability;
59
+ sum += ability;
60
+ }
61
+ }
62
+ return sum;
63
+ }
64
+ getCounter() {
65
+ const counter = +(this.item?.attributes?.mined_crops ?? 0);
66
+ return counter && !isNaN(counter) ? counter : undefined;
67
+ }
68
+ getCultivating() {
69
+ const cultivating = +(this.item?.attributes?.farmed_cultivating ?? 0);
70
+ return cultivating && !isNaN(cultivating) ? cultivating : undefined;
71
+ }
72
+ getCultivatingLevel() {
73
+ return this.item.enchantments?.cultivating ?? 0;
74
+ }
75
+ get farmed() {
76
+ return this.counter ?? this.cultivating ?? 0;
77
+ }
78
+ getFarmingAbilityFortune(tool) {
79
+ let fortune = 0;
80
+ const regex = /§7You have §6\+(\d+)☘ Farming Fortune/g;
81
+ for (const line of tool.item.lore ?? []) {
82
+ const match = regex.exec(line);
83
+ if (!match?.length || !match[1])
84
+ continue;
85
+ const found = +match[1];
86
+ if (isNaN(found))
87
+ continue;
88
+ fortune += found;
89
+ }
90
+ return fortune;
91
+ }
92
+ static isValid(item) {
93
+ return IsValidFarmingTool(item);
94
+ }
95
+ }
96
+ exports.FarmingTool = FarmingTool;
97
+ function IsValidFarmingTool(item) {
98
+ return tools_1.FARMING_TOOLS[item.skyblockId] !== undefined;
99
+ }
100
+ exports.IsValidFarmingTool = IsValidFarmingTool;
101
+ //# sourceMappingURL=farmingtool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"farmingtool.js","sourceRoot":"","sources":["../../src/classes/farmingtool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface Item {
2
+ id?: number | null;
3
+ count?: number | null;
4
+ skyblockId?: string | null;
5
+ uuid?: string | null;
6
+ name?: string | null;
7
+ lore?: string[] | null;
8
+ enchantments?: {
9
+ [key: string]: number | null;
10
+ } | null;
11
+ attributes?: {
12
+ [key: string]: string | null;
13
+ } | null;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/classes/item.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { Crop } from '../constants/crops';
2
+ interface PlayerOptions {
3
+ collection?: Record<string, number>;
4
+ fortuneSources?: Record<string, number>;
5
+ cropSpecificFortune?: Record<Crop, number>;
6
+ farmingXp?: number;
7
+ farmingLevel?: number;
8
+ }
9
+ export declare function CreatePlayer(options: PlayerOptions): Player;
10
+ declare class Player {
11
+ collection: Partial<Record<Crop, number>>;
12
+ fortuneSources: Record<string, number>;
13
+ cropSpecificFortune: Partial<Record<Crop, number>>;
14
+ farmingXp: number;
15
+ farmingLevel: number;
16
+ constructor(options: PlayerOptions);
17
+ addFortune(name: string, amount: number): this;
18
+ addCropFortune(crop: Crop, amount: number): this;
19
+ setLotusGear(): void;
20
+ getFortune(): number;
21
+ }
22
+ export interface JacobFarmingContest {
23
+ crop: Crop;
24
+ timestamp: number;
25
+ collected: number;
26
+ position?: number;
27
+ participants?: number;
28
+ medal?: number;
29
+ }
30
+ export {};
@@ -27,3 +27,4 @@ class Player {
27
27
  return general;
28
28
  }
29
29
  }
30
+ //# sourceMappingURL=player.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player.js","sourceRoot":"","sources":["../../src/classes/player.ts"],"names":[],"mappings":";;;AAUA,SAAgB,YAAY,CAAC,OAAsB;IAClD,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAFD,oCAEC;AAED,MAAM,MAAM;IAOX,YAAY,OAAsB;QACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,MAAc;QACtC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,cAAc,CAAC,IAAU,EAAE,MAAc;QACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACxC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,YAAY,KAAI,CAAC;IAEjB,UAAU;QACT,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,OAAO,CAAC;IAChB,CAAC;CACD"}
@@ -0,0 +1,50 @@
1
+ import { Crop } from '../constants/crops';
2
+ export declare function CreateFarmingWeightCalculator(info?: FarmingWeightInfo): FarmingWeight;
3
+ export interface FarmingWeightInfo {
4
+ collection?: Record<string, number>;
5
+ farmingXp?: number;
6
+ levelCapUpgrade?: number;
7
+ anitaBonusFarmingFortuneLevel?: number;
8
+ minions?: string[];
9
+ contests?: {
10
+ collected: number;
11
+ claimed_position?: number;
12
+ claimed_participants?: number;
13
+ claimed_medal?: 'bronze' | 'silver' | 'gold';
14
+ }[];
15
+ }
16
+ declare class FarmingWeight {
17
+ collection: Record<Crop, number>;
18
+ levelCapUpgrade: number;
19
+ farmingXp: number;
20
+ anitaBonusFarmingFortuneLevel: number;
21
+ tier12MinionCount: number;
22
+ earnedGoldMedals: number;
23
+ cropWeights: Record<Crop, number>;
24
+ bonusSources: Record<string, number>;
25
+ constructor(info?: FarmingWeightInfo);
26
+ /**
27
+ * Expectes a dictionary of collections and amounts with the default Hypixel SkyBlock IDs
28
+ * @param {Record<string, number>} collections
29
+ * @returns {FarmingWeight}
30
+ */
31
+ setCropsFromCollections(collections: Record<string, number>): FarmingWeight;
32
+ setCrop: (crop: Crop, collection: number) => this;
33
+ setLevelCap: (levelCap: number) => this;
34
+ setFarmingXp: (farmingXp: number) => this;
35
+ setAnitaBonusLevel: (anitaBonusFarmingFortuneLevel: number) => this;
36
+ addMinions: (minions: string[]) => this;
37
+ setEarnedGoldMedals: (count: number) => this;
38
+ setTier12MinionCount: (count: number) => this;
39
+ setContests: (contests: FarmingWeightInfo['contests']) => this;
40
+ getWeightInfo: () => {
41
+ totalWeight: number;
42
+ bonusWeight: number;
43
+ cropWeight: number;
44
+ bonusSources: Record<string, number>;
45
+ };
46
+ getBonusWeights: () => Record<string, number>;
47
+ getCropWeights: () => Record<Crop, number>;
48
+ getCropWeight: (crop: Crop) => void;
49
+ }
50
+ export {};
@@ -69,6 +69,10 @@ class FarmingWeight {
69
69
  }
70
70
  return this;
71
71
  };
72
+ setEarnedGoldMedals = (count) => {
73
+ this.earnedGoldMedals = count;
74
+ return this;
75
+ };
72
76
  setTier12MinionCount = (count) => {
73
77
  this.tier12MinionCount = count;
74
78
  return this;
@@ -161,3 +165,4 @@ class FarmingWeight {
161
165
  weight_1.CROP_WEIGHT[crop];
162
166
  };
163
167
  }
168
+ //# sourceMappingURL=weightcalc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weightcalc.js","sourceRoot":"","sources":["../../src/classes/weightcalc.ts"],"names":[],"mappings":";;;AAAA,8CAA0C;AAC1C,gDAAiF;AAEjF,SAAgB,6BAA6B,CAAC,IAAwB;IACrE,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,sEAEC;AAED,MAAM,KAAK,GAAG;IACb,YAAI,CAAC,MAAM;IACX,YAAI,CAAC,MAAM;IACX,YAAI,CAAC,UAAU;IACf,YAAI,CAAC,KAAK;IACV,YAAI,CAAC,QAAQ;IACb,YAAI,CAAC,UAAU;IACf,YAAI,CAAC,MAAM;IACX,YAAI,CAAC,OAAO;IACZ,YAAI,CAAC,SAAS;IACd,YAAI,CAAC,KAAK;CACV,CAAC;AAgBF,MAAM,aAAa;IAUlB,YAAY,IAAwB;QACnC,IAAI,CAAC,UAAU,GAAG,EAA0B,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,EAAE,eAAe,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,6BAA6B,GAAG,IAAI,EAAE,6BAA6B,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAE3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,uBAAuB,CAAC,WAAmC;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,GAAG,CAAC,IAAU,EAAE,UAAkB,EAAE,EAAE;QAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QACnC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;QAClC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,kBAAkB,GAAG,CAAC,6BAAqC,EAAE,EAAE;QAC9D,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;QACnE,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,UAAU,GAAG,CAAC,OAAiB,EAAE,EAAE;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACtC,IAAI,CAAC,wBAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAEhD,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE;QACvC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,oBAAoB,GAAG,CAAC,KAAa,EAAE,EAAE;QACxC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,WAAW,GAAG,CAAC,QAAuC,EAAE,EAAE;QACzD,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QAEnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC/B,IAAI,OAAO,CAAC,aAAa,KAAK,MAAM,EAAE;gBACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,SAAS;aACT;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAElD,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;YAEnE,IAAI,QAAQ,IAAI,YAAY,GAAG,IAAI,GAAG,CAAC,EAAE;gBACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACxB;SACD;QAED,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,aAAa,GAAG,GAAG,EAAE;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEpC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAElE,OAAO;YACN,WAAW,EAAE,UAAU,GAAG,SAAS;YACnC,WAAW,EAAE,UAAU;YACvB,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,KAAK;SACnB,CAAC;IACH,CAAC,CAAC;IAEF,eAAe,GAAG,GAAG,EAAE;QACtB,IAAI,IAAI,CAAC,SAAS,IAAI,WAAW,IAAI,IAAI,CAAC,eAAe,IAAI,EAAE,EAAE;YAChE,mBAAmB;YACnB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,qBAAY,CAAC,cAAc,CAAC;SAC9D;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,EAAE;YACxC,mBAAmB;YACnB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,qBAAY,CAAC,cAAc,CAAC;SAC9D;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,qBAAY,CAAC,kBAAkB,CAAC;SAChG;QAED,cAAc;QACd,IAAI,IAAI,CAAC,6BAA6B,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gBAC/B,IAAI,CAAC,6BAA6B,GAAG,qBAAY,CAAC,wBAAwB,CAAC;SAC5E;QAED,IAAI,IAAI,CAAC,gBAAgB,GAAG,qBAAY,CAAC,gBAAgB,EAAE;YAC1D,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAC5C,qBAAY,CAAC,kBAAkB,GAAG,qBAAY,CAAC,gBAAgB,CAC/D,CAAC;SACF;aAAM;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAClE,IAAI,WAAW,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAY,CAAC,kBAAkB,GAAG,WAAW,CAAC,CAAC;aAC7F;SACD;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC,CAAC;IAEF,cAAc,GAAG,GAAG,EAAE;QACrB,MAAM,UAAU,GAAG,EAA0B,CAAC;QAC9C,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,SAAS,GAAG,oBAAW,CAAC,IAAI,CAAC,CAAC;YAE7C,WAAW,IAAI,MAAM,CAAC;YAEtB,IAAI,IAAI,KAAK,YAAI,CAAC,MAAM,IAAI,IAAI,KAAK,YAAI,CAAC,SAAS,EAAE;gBACpD,iBAAiB,IAAI,MAAM,CAAC;aAC5B;YAED,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;SAC1B;QAED,iFAAiF;QACjF,gFAAgF;QAChF,qEAAqE;QACrE,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,oBAAoB,GAAG,oBAAW,CAAC,YAAI,CAAC,QAAQ,CAAC,CAAC;QAExD,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,CAAC;QACzD,MAAM,eAAe,GAAG,CAAC,WAAW,GAAG,iBAAiB,CAAC,GAAG,WAAW,CAAC;QAExE,MAAM,cAAc,GACnB,gBAAgB,GAAG,CAAC,kBAAkB,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;YACpE,eAAe,GAAG,CAAC,kBAAkB,GAAG,oBAAoB,CAAC,CAAC;QAE/D,UAAU,CAAC,YAAI,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;QAE3C,OAAO,UAAU,CAAC;IACnB,CAAC,CAAC;IAEF,aAAa,GAAG,CAAC,IAAU,EAAE,EAAE;QAC9B,oBAAW,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { Rarity, ReforgeTarget, Stat } from './reforges';
2
+ import { Skill } from './skills';
3
+ import { SpecialCrop } from './specialcrops';
4
+ export declare enum GearSlot {
5
+ Boots = "Boots",
6
+ Leggings = "Leggings",
7
+ Chestplate = "Chestplate",
8
+ Helmet = "Helmet"
9
+ }
10
+ interface ArmorInfo {
11
+ special?: SpecialCrop[];
12
+ slot: GearSlot;
13
+ family?: string;
14
+ name: string;
15
+ maxRarity: Rarity;
16
+ upgrade?: string;
17
+ wiki: string;
18
+ stats?: Partial<Record<Stat, number>>;
19
+ perLevelStats?: {
20
+ skill: Skill;
21
+ appliesTo?: ReforgeTarget[];
22
+ stats: Partial<Record<Stat, number>>;
23
+ };
24
+ skillReq?: Partial<Record<Skill, number>>;
25
+ }
26
+ export declare const ARMOR_INFO: Record<string, ArmorInfo>;
27
+ export {};