farming-weight 0.8.3 → 0.8.4

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 (78) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +101 -101
  3. package/dist/constants/crops.d.ts +11 -0
  4. package/dist/constants/crops.js +132 -0
  5. package/dist/constants/crops.js.map +1 -1
  6. package/dist/util/ratecalc.d.ts +8 -0
  7. package/dist/util/ratecalc.js +27 -0
  8. package/dist/util/ratecalc.js.map +1 -1
  9. package/package.json +2 -2
  10. package/dist/classes/farmingaccessory.d.ts +0 -15
  11. package/dist/classes/farmingaccessory.js +0 -54
  12. package/dist/classes/farmingaccessory.js.map +0 -1
  13. package/dist/classes/farmingarmor.d.ts +0 -53
  14. package/dist/classes/farmingarmor.js +0 -209
  15. package/dist/classes/farmingarmor.js.map +0 -1
  16. package/dist/classes/farmingequipment.d.ts +0 -24
  17. package/dist/classes/farmingequipment.js +0 -112
  18. package/dist/classes/farmingequipment.js.map +0 -1
  19. package/dist/classes/farmingpet.d.ts +0 -22
  20. package/dist/classes/farmingpet.js +0 -101
  21. package/dist/classes/farmingpet.js.map +0 -1
  22. package/dist/classes/farmingtool.d.ts +0 -41
  23. package/dist/classes/farmingtool.js +0 -196
  24. package/dist/classes/farmingtool.js.map +0 -1
  25. package/dist/classes/item.d.ts +0 -22
  26. package/dist/classes/item.js +0 -12
  27. package/dist/classes/item.js.map +0 -1
  28. package/dist/classes/lotusgear.d.ts +0 -23
  29. package/dist/classes/lotusgear.js +0 -107
  30. package/dist/classes/lotusgear.js.map +0 -1
  31. package/dist/classes/player.d.ts +0 -76
  32. package/dist/classes/player.js +0 -222
  33. package/dist/classes/player.js.map +0 -1
  34. package/dist/classes/weightcalc.d.ts +0 -63
  35. package/dist/classes/weightcalc.js +0 -192
  36. package/dist/classes/weightcalc.js.map +0 -1
  37. package/dist/classes/weightcalc.test.d.ts +0 -1
  38. package/dist/classes/weightcalc.test.js +0 -108
  39. package/dist/classes/weightcalc.test.js.map +0 -1
  40. package/dist/constants/accessories.d.ts +0 -13
  41. package/dist/constants/accessories.js +0 -56
  42. package/dist/constants/accessories.js.map +0 -1
  43. package/dist/constants/armor.d.ts +0 -47
  44. package/dist/constants/armor.js +0 -711
  45. package/dist/constants/armor.js.map +0 -1
  46. package/dist/constants/equipment.d.ts +0 -26
  47. package/dist/constants/equipment.js +0 -126
  48. package/dist/constants/equipment.js.map +0 -1
  49. package/dist/constants/items.d.ts +0 -10
  50. package/dist/constants/items.js +0 -15
  51. package/dist/constants/items.js.map +0 -1
  52. package/dist/constants/lotus.d.ts +0 -26
  53. package/dist/constants/lotus.js +0 -113
  54. package/dist/constants/lotus.js.map +0 -1
  55. package/dist/constants/pets.d.ts +0 -58
  56. package/dist/constants/pets.js +0 -266
  57. package/dist/constants/pets.js.map +0 -1
  58. package/dist/constants/tools.d.ts +0 -16
  59. package/dist/constants/tools.js +0 -468
  60. package/dist/constants/tools.js.map +0 -1
  61. package/dist/fortune/upgradable.d.ts +0 -39
  62. package/dist/fortune/upgradable.js +0 -2
  63. package/dist/fortune/upgradable.js.map +0 -1
  64. package/dist/player/index.d.ts +0 -1
  65. package/dist/player/index.js +0 -2
  66. package/dist/player/index.js.map +0 -1
  67. package/dist/player.d.ts +0 -30
  68. package/dist/player.js +0 -30
  69. package/dist/player.js.map +0 -1
  70. package/dist/ratecalc.d.ts +0 -33
  71. package/dist/ratecalc.js +0 -155
  72. package/dist/ratecalc.js.map +0 -1
  73. package/dist/tool.d.ts +0 -1
  74. package/dist/tool.js +0 -18
  75. package/dist/tool.js.map +0 -1
  76. package/dist/util/pests.test.d.ts +0 -1
  77. package/dist/util/pests.test.js +0 -29
  78. package/dist/util/pests.test.js.map +0 -1
@@ -1,54 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.FarmingAccessory = void 0;
4
- const ACCESSORIES_1 = require('../constants/accessories');
5
- const REFORGES_1 = require('../constants/reforges');
6
- const GEMS_1 = require('../util/gems');
7
- const ITEMSTATS_1 = require('../util/itemstats');
8
- class FarmingAccessory {
9
- item;
10
- info;
11
- constructor(item) {
12
- this.item = item;
13
- const INFO = ACCESSORIES_1.FARMING_ACCESSORIES_INFO[item.skyblockId];
14
- if (!INFO) {
15
- throw new Error(`Unknown lotus gear: ${item.name} (${item.skyblockId})`);
16
- }
17
- this.info = INFO;
18
- if (item.lore) {
19
- this.rarity = (0, ITEMSTATS_1.getRarityFromLore)(item.lore);
20
- }
21
- this.recombobulated = this.item.attributes?.rarity_upgrades === '1';
22
- this.sumFortune();
23
- }
24
- sumFortune() {
25
- this.fortuneBreakdown = {};
26
- let SUM = 0;
27
- // Base fortune
28
- const BASE = this.info.stats?.[REFORGES_1.Stat.FarmingFortune] ?? 0;
29
- if (BASE > 0) {
30
- this.fortuneBreakdown['Base Stats'] = BASE;
31
- SUM += BASE;
32
- }
33
- // Gems
34
- let PERIDOT = (0, GEMS_1.getPeridotFortune)(this.rarity, this.item);
35
- if (PERIDOT > 0) {
36
- PERIDOT = +(PERIDOT / 2).toFixed(2); // Only half the fortune is applied on accessories
37
- this.fortuneBreakdown['Peridot Gems'] = PERIDOT;
38
- SUM += PERIDOT;
39
- }
40
- this.fortune = SUM;
41
- return SUM;
42
- }
43
- static isValid(item) {
44
- return ACCESSORIES_1.FARMING_ACCESSORIES_INFO[item.skyblockId] !== undefined;
45
- }
46
- static fromArray(items) {
47
- return items
48
- .filter((item) => FarmingAccessory.isValid(item))
49
- .map((item) => new FarmingAccessory(item))
50
- .sort((a, b) => b.fortune - a.fortune);
51
- }
52
- }
53
- exports.FarmingAccessory = FarmingAccessory;
54
- //# sourceMappingURL=farmingaccessory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"farmingaccessory.js","sourceRoot":"","sources":["../../src/classes/farmingaccessory.ts"],"names":[],"mappings":";;;AAAA,0DAA0F;AAC1F,oDAAqD;AACrD,uCAAiD;AACjD,iDAAsD;AAGtD,MAAa,gBAAgB;IACZ,IAAI,CAAe;IACnB,IAAI,CAAuB;IAQ3C,YAAY,IAAkB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,IAAI,GAAG,sCAAwB,CAAC,IAAI,CAAC,UAAmD,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACzE;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAA,6BAAiB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,KAAK,GAAG,CAAC;QAEpE,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEO,UAAU;QACjB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,eAAe;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,eAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;YAC3C,GAAG,IAAI,IAAI,CAAC;SACZ;QAED,OAAO;QACP,IAAI,OAAO,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,CAAC,EAAE;YAChB,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,kDAAkD;YAEvF,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC;YAChD,GAAG,IAAI,OAAO,CAAC;SACf;QAED,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAkB;QAChC,OAAO,sCAAwB,CAAC,IAAI,CAAC,UAAmD,CAAC,KAAK,SAAS,CAAC;IACzG,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAqB;QACrC,OAAO,KAAK;aACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAChD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;CACD;AA9DD,4CA8DC"}
@@ -1,53 +0,0 @@
1
- import { ArmorSetBonus, FarmingArmorInfo, GearSlot } from '../constants/armor';
2
- import { Crop } from '../constants/crops';
3
- import { Rarity, Reforge, ReforgeTier } from '../constants/reforges';
4
- import { SpecialCrop } from '../constants/specialcrops';
5
- import { EliteItemDto } from './item';
6
- import { PlayerOptions } from './player';
7
- export interface ActiveArmorSetBonus {
8
- count: number;
9
- from: GearSlot[];
10
- bonus: ArmorSetBonus;
11
- special?: SpecialCrop[];
12
- }
13
- export declare class ArmorSet {
14
- helmet?: FarmingArmor;
15
- chestplate?: FarmingArmor;
16
- leggings?: FarmingArmor;
17
- boots?: FarmingArmor;
18
- get armor(): (FarmingArmor | null)[];
19
- pieces: FarmingArmor[];
20
- fortune: number;
21
- setBonuses: ActiveArmorSetBonus[];
22
- constructor(armor: FarmingArmor[]);
23
- getPiece(slot: GearSlot): FarmingArmor | undefined;
24
- setPiece(armor: FarmingArmor): void;
25
- private recalculateFamilies;
26
- getFortuneBreakdown(reloadFamilies?: boolean): Record<string, number>;
27
- specialDropsCalc(
28
- blocksBroken: number,
29
- crop: Crop
30
- ): {
31
- type: SpecialCrop;
32
- amount: number;
33
- npc: number;
34
- } | null;
35
- }
36
- export declare class FarmingArmor {
37
- readonly item: EliteItemDto;
38
- readonly armor: FarmingArmorInfo;
39
- get slot(): GearSlot;
40
- readonly rarity: Rarity;
41
- readonly reforge: Reforge | undefined;
42
- readonly reforgeStats: ReforgeTier | undefined;
43
- readonly recombobulated: boolean;
44
- get potential(): number;
45
- fortune: number;
46
- fortuneBreakdown: Record<string, number>;
47
- private options?;
48
- constructor(item: EliteItemDto, options?: PlayerOptions);
49
- setOptions(options: PlayerOptions): void;
50
- private sumFortune;
51
- static isValid(item: EliteItemDto): boolean;
52
- static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingArmor[];
53
- }
@@ -1,209 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.FarmingArmor = exports.ArmorSet = void 0;
4
- const ARMOR_1 = require('../constants/armor');
5
- const ENCHANTS_1 = require('../constants/enchants');
6
- const REFORGES_1 = require('../constants/reforges');
7
- const SKILLS_1 = require('../constants/skills');
8
- const SPECIALCROPS_1 = require('../constants/specialcrops');
9
- const SPECIAL_1 = require('../crops/special');
10
- const GEMS_1 = require('../util/gems');
11
- const ITEMSTATS_1 = require('../util/itemstats');
12
- class ArmorSet {
13
- get armor() {
14
- return [this.helmet ?? null, this.chestplate ?? null, this.leggings ?? null, this.boots ?? null];
15
- }
16
- constructor(armor) {
17
- armor.sort((a, b) => b.potential - a.potential);
18
- this.pieces = armor;
19
- this.helmet = armor.find((a) => a.slot === ARMOR_1.GearSlot.Helmet);
20
- this.chestplate = armor.find((a) => a.slot === ARMOR_1.GearSlot.Chestplate);
21
- this.leggings = armor.find((a) => a.slot === ARMOR_1.GearSlot.Leggings);
22
- this.boots = armor.find((a) => a.slot === ARMOR_1.GearSlot.Boots);
23
- this.recalculateFamilies();
24
- }
25
- getPiece(slot) {
26
- switch (slot) {
27
- case ARMOR_1.GearSlot.Helmet:
28
- return this.helmet;
29
- case ARMOR_1.GearSlot.Chestplate:
30
- return this.chestplate;
31
- case ARMOR_1.GearSlot.Leggings:
32
- return this.leggings;
33
- case ARMOR_1.GearSlot.Boots:
34
- return this.boots;
35
- default:
36
- return undefined;
37
- }
38
- }
39
- setPiece(armor) {
40
- switch (armor.slot) {
41
- case ARMOR_1.GearSlot.Helmet:
42
- this.helmet = armor;
43
- break;
44
- case ARMOR_1.GearSlot.Chestplate:
45
- this.chestplate = armor;
46
- break;
47
- case ARMOR_1.GearSlot.Leggings:
48
- this.leggings = armor;
49
- break;
50
- case ARMOR_1.GearSlot.Boots:
51
- this.boots = armor;
52
- break;
53
- default:
54
- return;
55
- }
56
- this.recalculateFamilies();
57
- }
58
- recalculateFamilies() {
59
- const FAMILIES = new Map();
60
- const ARMOR = this.armor.filter((a) => a);
61
- this.setBonuses = [];
62
- for (const PIECE of ARMOR) {
63
- if (!PIECE.armor.family) continue;
64
- FAMILIES.set(PIECE.armor.family, (FAMILIES.get(PIECE.armor.family) ?? 0) + 1);
65
- }
66
- for (const [FAMILY, COUNT] of FAMILIES.entries()) {
67
- if (COUNT < 2) continue;
68
- const BONUS = ARMOR_1.ARMOR_SET_BONUS[FAMILY];
69
- if (!BONUS) continue;
70
- this.setBonuses.push({
71
- count: COUNT,
72
- from: ARMOR.filter((a) => a.armor.family === FAMILY).map((a) => a.slot),
73
- bonus: BONUS,
74
- special: BONUS.special,
75
- });
76
- }
77
- this.getFortuneBreakdown();
78
- }
79
- getFortuneBreakdown(reloadFamilies = false) {
80
- if (reloadFamilies) {
81
- this.recalculateFamilies();
82
- }
83
- let SUM = 0;
84
- const BREAKDOWN = {};
85
- for (const PIECE of this.armor) {
86
- if (!PIECE) continue;
87
- const FORTUNE = PIECE.fortune;
88
- if (FORTUNE > 0) {
89
- BREAKDOWN[PIECE.item.name ?? ''] = FORTUNE;
90
- SUM += FORTUNE;
91
- }
92
- }
93
- for (const { bonus, count } of this.setBonuses) {
94
- if (count < 2 || count > 4) continue;
95
- const FORTUNE = bonus.stats?.[count]?.[REFORGES_1.Stat.FarmingFortune] ?? 0;
96
- if (FORTUNE > 0) {
97
- BREAKDOWN[bonus.name] = FORTUNE;
98
- SUM += FORTUNE;
99
- }
100
- }
101
- this.fortune = SUM;
102
- return BREAKDOWN;
103
- }
104
- specialDropsCalc(blocksBroken, crop) {
105
- const SPECIAL = SPECIALCROPS_1.MATCHING_SPECIAL_CROP[crop];
106
- const APPLICABLE_BONUSES = this.setBonuses.filter((b) => b.special?.includes(SPECIAL));
107
- if (APPLICABLE_BONUSES.length === 0) return null;
108
- // Armor set counts need to be combined for special crops
109
- // There will only be 2 applicable bonuses at most when Fermento armor plus
110
- // a lower tier armor is used. Hypixel appeats to count these as the same
111
- // set bonus instead of rolling them separately.
112
- let COUNT = 0;
113
- for (const BONUS of APPLICABLE_BONUSES) {
114
- COUNT += BONUS.count;
115
- }
116
- return (0, SPECIAL_1.calculateAverageSpecialCrops)(blocksBroken, crop, COUNT);
117
- }
118
- }
119
- exports.ArmorSet = ArmorSet;
120
- class FarmingArmor {
121
- get slot() {
122
- return this.armor.slot;
123
- }
124
- get potential() {
125
- if (!this.armor.family) {
126
- return this.fortune;
127
- }
128
- // Add the set bonus potential to the fortune
129
- return (
130
- this.fortune +
131
- (ARMOR_1.ARMOR_SET_BONUS[this.armor.family]?.piecePotential?.[REFORGES_1.Stat.FarmingFortune] ?? 0)
132
- );
133
- }
134
- constructor(item, options) {
135
- this.options = options;
136
- this.item = item;
137
- const ARMOR = ARMOR_1.ARMOR_INFO[item.skyblockId];
138
- if (!ARMOR) {
139
- throw new Error(`Unknown farming armor: ${item.name} (${item.skyblockId})`);
140
- }
141
- this.armor = ARMOR;
142
- if (item.lore) {
143
- this.rarity = (0, ITEMSTATS_1.getRarityFromLore)(item.lore);
144
- }
145
- this.reforge = REFORGES_1.REFORGES[item.attributes?.modifier ?? ''] ?? undefined;
146
- this.reforgeStats = this.reforge?.tiers?.[this.rarity];
147
- this.recombobulated = this.item.attributes?.rarity_upgrades === '1';
148
- this.sumFortune();
149
- }
150
- setOptions(options) {
151
- this.options = options;
152
- this.fortune = this.sumFortune();
153
- }
154
- sumFortune() {
155
- this.fortuneBreakdown = {};
156
- let SUM = 0;
157
- // Base fortune
158
- const BASE = this.armor.stats?.[REFORGES_1.Stat.FarmingFortune] ?? 0;
159
- if (BASE > 0) {
160
- this.fortuneBreakdown['Base Stats'] = BASE;
161
- SUM += BASE;
162
- }
163
- // Per farming level stats like Rancher's Boots
164
- if (this.armor.perLevelStats?.skill === SKILLS_1.Skill.Farming && this.options?.farmingLevel) {
165
- const PER_LEVEL = this.armor.perLevelStats?.stats[REFORGES_1.Stat.FarmingFortune] ?? 0;
166
- if (PER_LEVEL > 0) {
167
- this.fortuneBreakdown['Farming Level'] = PER_LEVEL * this.options.farmingLevel;
168
- SUM += PER_LEVEL * this.options.farmingLevel;
169
- }
170
- }
171
- // Reforge stats
172
- const REFORGE = this.reforgeStats?.stats?.[REFORGES_1.Stat.FarmingFortune] ?? 0;
173
- if (REFORGE > 0) {
174
- this.fortuneBreakdown[this.reforge?.name ?? 'Reforge'] = REFORGE;
175
- SUM += REFORGE;
176
- }
177
- // Gems
178
- const PERIDOT = (0, GEMS_1.getPeridotFortune)(this.rarity, this.item);
179
- if (PERIDOT > 0) {
180
- this.fortuneBreakdown['Peridot Gems'] = PERIDOT;
181
- SUM += PERIDOT;
182
- }
183
- // Enchantments
184
- const ENCHANTMENTS = Object.entries(this.item.enchantments ?? {});
185
- for (const [ENCHANT, LEVEL] of ENCHANTMENTS) {
186
- if (!LEVEL) continue;
187
- const ENCHANTMENT = ENCHANTS_1.FARMING_ARMOR_ENCHANTS[ENCHANT];
188
- if (!ENCHANTMENT || !LEVEL) continue;
189
- const FORTUNE = ENCHANTMENT.levels?.[LEVEL]?.[REFORGES_1.Stat.FarmingFortune] ?? 0;
190
- if (FORTUNE > 0) {
191
- this.fortuneBreakdown[ENCHANTMENT.name] = FORTUNE;
192
- SUM += FORTUNE;
193
- }
194
- }
195
- this.fortune = SUM;
196
- return SUM;
197
- }
198
- static isValid(item) {
199
- return ARMOR_1.ARMOR_INFO[item.skyblockId] !== undefined;
200
- }
201
- static fromArray(items, options) {
202
- return items
203
- .filter((item) => FarmingArmor.isValid(item))
204
- .map((item) => new FarmingArmor(item, options))
205
- .sort((a, b) => b.fortune - a.fortune);
206
- }
207
- }
208
- exports.FarmingArmor = FarmingArmor;
209
- //# sourceMappingURL=farmingarmor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"farmingarmor.js","sourceRoot":"","sources":["../../src/classes/farmingarmor.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { FarmingArmorInfo } from '../constants/armor';
2
- import { Rarity, Reforge, ReforgeTier } from '../constants/reforges';
3
- import { EliteItemDto } from './item';
4
- import { PlayerOptions } from './player';
5
- export declare class FarmingEquipment {
6
- readonly item: EliteItemDto;
7
- readonly info: FarmingArmorInfo;
8
- get slot(): import('../constants/armor').GearSlot;
9
- readonly rarity: Rarity;
10
- readonly reforge: Reforge | undefined;
11
- readonly reforgeStats: ReforgeTier | undefined;
12
- readonly recombobulated: boolean;
13
- fortune: number;
14
- fortuneBreakdown: Record<string, number>;
15
- private options?;
16
- constructor(item: EliteItemDto, options?: PlayerOptions);
17
- setOptions(options: PlayerOptions): void;
18
- getFortune(): number;
19
- private getFortuneFromVisitors;
20
- private getPieceBonus;
21
- static isValid(item: EliteItemDto): boolean;
22
- static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingEquipment[];
23
- }
24
- export declare const LotusGear: typeof FarmingEquipment;
@@ -1,112 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.LotusGear = exports.FarmingEquipment = void 0;
4
- const LOTUS_1 = require('../constants/lotus');
5
- const REFORGES_1 = require('../constants/reforges');
6
- const ITEMSTATS_1 = require('../util/itemstats');
7
- const LORE_1 = require('../util/lore');
8
- class FarmingEquipment {
9
- item;
10
- info;
11
- get slot() {
12
- return this.info.slot;
13
- }
14
- constructor(item, options) {
15
- this.options = options;
16
- this.item = item;
17
- const INFO = LOTUS_1.EQUIPMENT_INFO[item.skyblockId];
18
- if (!INFO) {
19
- throw new Error(`Unknown equipment: ${item.name} (${item.skyblockId})`);
20
- }
21
- this.info = INFO;
22
- if (item.lore) {
23
- this.rarity = (0, ITEMSTATS_1.getRarityFromLore)(item.lore);
24
- }
25
- this.reforge = REFORGES_1.REFORGES[item.attributes?.modifier ?? ''] ?? undefined;
26
- this.reforgeStats = this.reforge?.tiers?.[this.rarity];
27
- this.recombobulated = this.item.attributes?.rarity_upgrades === '1';
28
- this.getFortune();
29
- }
30
- setOptions(options) {
31
- this.options = options;
32
- this.getFortune();
33
- }
34
- getFortune() {
35
- this.fortuneBreakdown = {};
36
- let SUM = 0;
37
- // Base fortune
38
- const BASE = this.info.stats?.[REFORGES_1.Stat.FarmingFortune] ?? 0;
39
- if (BASE > 0) {
40
- this.fortuneBreakdown['Base Stats'] = BASE;
41
- SUM += BASE;
42
- }
43
- // Reforge
44
- const REFORGE = this.reforgeStats?.stats?.[REFORGES_1.Stat.FarmingFortune] ?? 0;
45
- if (REFORGE > 0) {
46
- this.fortuneBreakdown['Reforge'] = REFORGE;
47
- SUM += REFORGE;
48
- }
49
- // Green Thumb Visitors
50
- const VISITORS = this.getFortuneFromVisitors(BASE, REFORGE);
51
- if (VISITORS > 0) {
52
- this.fortuneBreakdown['Green Thumb'] = VISITORS;
53
- SUM += VISITORS;
54
- }
55
- // Lotus Piece bonus
56
- if (this.info.family === 'LOTUS') {
57
- const PIECE_BONUS = this.getPieceBonus();
58
- if (PIECE_BONUS > 0) {
59
- this.fortuneBreakdown['Salesperson'] = PIECE_BONUS;
60
- SUM += PIECE_BONUS;
61
- }
62
- }
63
- this.fortune = SUM;
64
- return SUM;
65
- }
66
- getFortuneFromVisitors(base, reforge) {
67
- if (!this.item.enchantments?.green_thumb) return 0;
68
- const REGEX = /§7Farming Fortune: §a\+(\d+.?\d+)/g;
69
- let FOUND = 0;
70
- for (const LINE of this.item.lore ?? []) {
71
- const NUMBER = (0, LORE_1.extractNumberFromLine)(LINE, REGEX) ?? 0;
72
- if (!NUMBER) continue;
73
- FOUND = +NUMBER;
74
- break;
75
- }
76
- if (FOUND === 0) return 0;
77
- return Math.max(0, FOUND - base - reforge);
78
- }
79
- getPieceBonus() {
80
- const REGEX = /§7Piece Bonus: §6\+(\d+)☘/g;
81
- let FOUND = 0;
82
- for (const LINE of (this.item.lore ?? []).reverse()) {
83
- const NUMBER = (0, LORE_1.extractNumberFromLine)(LINE, REGEX) ?? 0;
84
- if (!NUMBER) continue;
85
- FOUND = NUMBER;
86
- break;
87
- }
88
- return FOUND;
89
- }
90
- static isValid(item) {
91
- return LOTUS_1.EQUIPMENT_INFO[item.skyblockId] !== undefined;
92
- }
93
- static fromArray(items, options) {
94
- const GEAR = items
95
- .filter((item) => FarmingEquipment.isValid(item))
96
- .map((item) => new FarmingEquipment(item, options))
97
- .sort((a, b) => b.fortune - a.fortune);
98
- // Get only the best piece of each slot
99
- const BEST = {};
100
- for (const PIECE of GEAR) {
101
- if (!BEST[PIECE.slot] || PIECE.fortune > (BEST[PIECE.slot]?.fortune ?? 0)) {
102
- BEST[PIECE.slot] = PIECE;
103
- }
104
- }
105
- return Object.values(BEST);
106
- }
107
- }
108
- exports.FarmingEquipment = FarmingEquipment;
109
- // For backwards compatibility
110
- // eslint-disable-next-line @typescript-eslint/naming-convention
111
- exports.LotusGear = FarmingEquipment;
112
- //# sourceMappingURL=farmingequipment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"farmingequipment.js","sourceRoot":"","sources":["../../src/classes/farmingequipment.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { FarmingPetInfo, FarmingPetItemInfo, FarmingPetType, FarmingPets } from '../constants/pets';
2
- import { Rarity } from '../constants/reforges';
3
- import { EliteItemDto } from './item';
4
- import { PlayerOptions } from './player';
5
- export declare function createFarmingPet(pet: FarmingPetType): FarmingPet;
6
- export declare class FarmingPet {
7
- readonly pet: FarmingPetType;
8
- readonly type: FarmingPets;
9
- readonly info: FarmingPetInfo;
10
- readonly rarity: Rarity;
11
- readonly level: number;
12
- readonly item: FarmingPetItemInfo | undefined;
13
- fortune: number;
14
- breakdown: Record<string, number>;
15
- private options?;
16
- constructor(pet: FarmingPetType, options?: PlayerOptions);
17
- setOptions(options: PlayerOptions): void;
18
- getFortune(): number;
19
- static isValid(pet: FarmingPetType): boolean | '' | undefined;
20
- static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingPet[];
21
- }
22
- export declare function getPetLevel(pet: FarmingPetType, max?: number): number;
@@ -1,101 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.getPetLevel = exports.FarmingPet = exports.createFarmingPet = void 0;
4
- const PETS_1 = require('../constants/pets');
5
- const REFORGES_1 = require('../constants/reforges');
6
- const SKILLS_1 = require('../constants/skills');
7
- const ITEMSTATS_1 = require('../util/itemstats');
8
- function createFarmingPet(pet) {
9
- return new FarmingPet(pet);
10
- }
11
- exports.createFarmingPet = createFarmingPet;
12
- class FarmingPet {
13
- constructor(pet, options) {
14
- this.options = options;
15
- this.pet = pet;
16
- this.info = PETS_1.FARMING_PETS[pet.type];
17
- if (!this.info) {
18
- throw new Error(`Invalid farming pet type: ${pet.type}`);
19
- }
20
- this.type = pet.type;
21
- this.rarity = (0, ITEMSTATS_1.getRarityFromLore)([pet.tier ?? '']) ?? REFORGES_1.Rarity.Common;
22
- this.level = getPetLevel(pet);
23
- this.item = pet.heldItem ? PETS_1.FARMING_PET_ITEMS[pet.heldItem] : undefined;
24
- this.fortune = this.getFortune();
25
- }
26
- setOptions(options) {
27
- this.options = options;
28
- this.fortune = this.getFortune();
29
- }
30
- getFortune() {
31
- let FORTUNE = 0;
32
- const BREAKDOWN = {};
33
- // Base stats
34
- const STATS = this.info.stats?.[REFORGES_1.Stat.FarmingFortune];
35
- if (STATS) {
36
- FORTUNE += STATS;
37
- BREAKDOWN['Base Stats'] = STATS;
38
- }
39
- // Per level/ability stats
40
- const PER_LEVEL_STATS = this.info.perLevelStats?.[REFORGES_1.Stat.FarmingFortune];
41
- if (PER_LEVEL_STATS) {
42
- const AMOUNT = PER_LEVEL_STATS.multiplier * this.level;
43
- FORTUNE += AMOUNT;
44
- BREAKDOWN[PER_LEVEL_STATS.name] = AMOUNT;
45
- }
46
- // Per rarity fortune stats
47
- const PER_RARITY_STATS = this.info.perRarityLevelStats?.[this.rarity]?.[REFORGES_1.Stat.FarmingFortune];
48
- if (PER_RARITY_STATS) {
49
- const AMOUNT = PER_RARITY_STATS.multiplier * this.level;
50
- FORTUNE += AMOUNT;
51
- BREAKDOWN[PER_RARITY_STATS.name] = AMOUNT;
52
- }
53
- // Mooshroom Cow Perk
54
- if (this.type === PETS_1.FarmingPets.MooshroomCow && this.options?.strength) {
55
- const STRENGTH_PER = 40 - this.level * 0.2;
56
- const STRENGTH = this.options.strength;
57
- const AMOUNT = Math.floor((STRENGTH / STRENGTH_PER) * 0.7);
58
- FORTUNE += AMOUNT;
59
- BREAKDOWN['Farming Strength'] = AMOUNT;
60
- }
61
- // Pet item stats
62
- if (this.item) {
63
- const stats = this.item.stats?.[REFORGES_1.Stat.FarmingFortune];
64
- const perLevelStats = this.item.perLevelStats;
65
- if (stats) {
66
- FORTUNE += stats;
67
- BREAKDOWN[this.item.name + ' Stats'] = stats;
68
- }
69
- if (perLevelStats && perLevelStats.skill === SKILLS_1.Skill.Garden) {
70
- const AMOUNT =
71
- (perLevelStats?.stats?.[REFORGES_1.Stat.FarmingFortune] ?? 0) * (this.options?.gardenLevel ?? 0);
72
- FORTUNE += AMOUNT;
73
- BREAKDOWN[this.item.name] = AMOUNT;
74
- }
75
- }
76
- this.breakdown = BREAKDOWN;
77
- this.fortune = FORTUNE;
78
- return FORTUNE;
79
- }
80
- static isValid(pet) {
81
- return pet.type && pet.type in PETS_1.FARMING_PETS;
82
- }
83
- static fromArray(items, options) {
84
- return items
85
- .filter((item) => FarmingPet.isValid(item))
86
- .map((item) => new FarmingPet(item, options))
87
- .sort((a, b) => b.fortune - a.fortune);
88
- }
89
- }
90
- exports.FarmingPet = FarmingPet;
91
- function getPetLevel(pet, max = 100) {
92
- const LEVELS = PETS_1.PET_LEVELS;
93
- const XP = pet.exp ?? 0;
94
- const LEVEL_INDEX = LEVELS.findIndex((level) => level > XP);
95
- if (LEVEL_INDEX === -1 || LEVEL_INDEX >= max) {
96
- return max;
97
- }
98
- return LEVEL_INDEX + 1;
99
- }
100
- exports.getPetLevel = getPetLevel;
101
- //# sourceMappingURL=farmingpet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"farmingpet.js","sourceRoot":"","sources":["../../src/classes/farmingpet.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import { Crop } from '../constants/crops';
2
- import { Rarity, Reforge, ReforgeTier } from '../constants/reforges';
3
- import { FarmingToolInfo } from '../constants/tools';
4
- import { EliteItemDto } from './item';
5
- import { PlayerOptions } from './player';
6
- export declare class FarmingTool {
7
- item: EliteItemDto;
8
- crop: Crop;
9
- tool: FarmingToolInfo;
10
- itemname: string;
11
- private colorPrefix;
12
- get name(): string;
13
- rarity: Rarity;
14
- counter: number | undefined;
15
- cultivating: number;
16
- reforge: Reforge | undefined;
17
- reforgeStats: ReforgeTier | undefined;
18
- logCounter: number;
19
- collAnalysis: number;
20
- farmingForDummies: number;
21
- recombobulated: boolean;
22
- fortune: number;
23
- fortuneBreakdown: Record<string, number>;
24
- private options?;
25
- constructor(item: EliteItemDto, options?: PlayerOptions);
26
- setOptions(options: PlayerOptions): void;
27
- rebuildTool(item: EliteItemDto, options?: PlayerOptions): void;
28
- private setReforge;
29
- changeReforgeTo(reforgeId: string): void;
30
- changeFarmedCropsTo(crops: number): void;
31
- getFortune(): number;
32
- private getCounter;
33
- private getCultivating;
34
- getCultivatingLevel(): number;
35
- get farmed(): number;
36
- isUsed(): boolean;
37
- isMissingDedication(): boolean | 0 | null | undefined;
38
- private getFarmingAbilityFortune;
39
- static isValid(item: EliteItemDto | FarmingTool): boolean;
40
- static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingTool[];
41
- }