farming-weight 0.13.4 → 0.14.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.
- package/LICENSE +1 -1
- package/dist/constants/attributes.d.ts +5 -2
- package/dist/constants/attributes.js +54 -22
- package/dist/constants/attributes.js.map +1 -1
- package/dist/constants/chips.d.ts +6 -4
- package/dist/constants/chips.js +79 -37
- package/dist/constants/chips.js.map +1 -1
- package/dist/constants/mutations.d.ts +44 -0
- package/dist/constants/mutations.js +2150 -0
- package/dist/constants/mutations.js.map +1 -0
- package/dist/constants/pests.js +1 -1
- package/dist/constants/pests.js.map +1 -1
- package/dist/constants/skills.d.ts +2 -1
- package/dist/constants/skills.js +1 -0
- package/dist/constants/skills.js.map +1 -1
- package/dist/fortune/farmingpet.js +3 -3
- package/dist/fortune/farmingpet.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/player/player.js +10 -16
- package/dist/player/player.js.map +1 -1
- package/dist/player/playeroptions.d.ts +14 -3
- package/dist/player/playeroptions.js.map +1 -1
- package/dist/upgrades/sources/cropsources.js +2 -2
- package/dist/upgrades/sources/cropsources.js.map +1 -1
- package/dist/upgrades/sources/generalsources.js +9 -16
- package/dist/upgrades/sources/generalsources.js.map +1 -1
- package/dist/util/ratecalc.js +22 -17
- package/dist/util/ratecalc.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -3,7 +3,7 @@ import type { DynamicFortuneSource } from '../upgrades/sources/dynamicfortunesou
|
|
|
3
3
|
import type { CalculateCropDetailedDropsOptions, DetailedDropsResult } from '../util/ratecalc.js';
|
|
4
4
|
import { Rarity } from './reforges.js';
|
|
5
5
|
import { Stat, type StatsRecord } from './stats.js';
|
|
6
|
-
type ShardId =
|
|
6
|
+
type ShardId = keyof typeof FARMING_ATTRIBUTE_SHARDS;
|
|
7
7
|
export type FarmingAttributes = Record<ShardId | string, number>;
|
|
8
8
|
export interface FarmingAttributeShard {
|
|
9
9
|
name: string;
|
|
@@ -17,7 +17,10 @@ export interface FarmingAttributeShard {
|
|
|
17
17
|
ratesModifier?: (current: DetailedDropsResult, options: CalculateCropDetailedDropsOptions) => DetailedDropsResult;
|
|
18
18
|
}
|
|
19
19
|
export type FarmingAttributeShardEffect = 'none' | 'rates' | 'fortune' | 'wisdom';
|
|
20
|
-
export declare const FARMING_ATTRIBUTE_SHARDS: Record<
|
|
20
|
+
export declare const FARMING_ATTRIBUTE_SHARDS: Record<string, FarmingAttributeShard>;
|
|
21
|
+
export declare function normalizeAttributeId(id: string): ShardId | undefined;
|
|
22
|
+
export declare function getAttributeAmount(attributes: Record<string, number> | undefined, id: ShardId): number;
|
|
23
|
+
export declare function normalizeAttributes(attributes?: Record<string, number>): Record<string, number> | undefined;
|
|
21
24
|
export declare const ATTRIBUTE_SHARD_LEVELING: Partial<Record<Rarity, number[]>>;
|
|
22
25
|
export declare function getShardLevel(rarity: Rarity, amount?: number | null): number;
|
|
23
26
|
export declare function getShardsForLevel(rarity: Rarity, level: number): number;
|
|
@@ -3,7 +3,7 @@ import { Rarity } from './reforges.js';
|
|
|
3
3
|
import { MATCHING_SPECIAL_CROP } from './specialcrops.js';
|
|
4
4
|
import { getStatValue, Stat } from './stats.js';
|
|
5
5
|
export const FARMING_ATTRIBUTE_SHARDS = {
|
|
6
|
-
|
|
6
|
+
wart_eater: {
|
|
7
7
|
name: 'Warty Bug Shard',
|
|
8
8
|
skyblockId: 'SHARD_WARTYBUG',
|
|
9
9
|
rarity: Rarity.Legendary,
|
|
@@ -12,7 +12,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
12
12
|
ratesModifier: (current, options) => {
|
|
13
13
|
if (options.crop !== Crop.NetherWart)
|
|
14
14
|
return current;
|
|
15
|
-
const level = getShardLevel(Rarity.Legendary, options.attributes
|
|
15
|
+
const level = getShardLevel(Rarity.Legendary, getAttributeAmount(options.attributes, 'wart_eater'));
|
|
16
16
|
if (level <= 0)
|
|
17
17
|
return current;
|
|
18
18
|
const wartyChance = 0.00005 * level;
|
|
@@ -23,7 +23,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
23
23
|
return current;
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
|
-
|
|
26
|
+
garden_wisdom: {
|
|
27
27
|
name: 'Dragonfly Shard',
|
|
28
28
|
skyblockId: 'SHARD_DRAGONFLY',
|
|
29
29
|
rarity: Rarity.Epic,
|
|
@@ -35,16 +35,15 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
37
|
},
|
|
38
|
-
|
|
38
|
+
solar_power: {
|
|
39
39
|
name: 'Firefly Shard',
|
|
40
40
|
skyblockId: 'SHARD_FIREFLY',
|
|
41
41
|
rarity: Rarity.Epic,
|
|
42
42
|
effect: 'fortune',
|
|
43
43
|
wiki: 'https://wiki.hypixel.net/Firefly',
|
|
44
44
|
active: (options) => {
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const lunarMoth = a.SHARD_LUNAR_MOTH ?? 0;
|
|
45
|
+
const firefly = getAttributeAmount(options.attributes, 'solar_power');
|
|
46
|
+
const lunarMoth = getAttributeAmount(options.attributes, 'lunar_power');
|
|
48
47
|
const forceFirefly = 'options' in options && options.options.selectedCrop === Crop.Sunflower;
|
|
49
48
|
const forceLunarMoth = 'options' in options && options.options.selectedCrop === Crop.Moonflower;
|
|
50
49
|
if (forceFirefly) {
|
|
@@ -78,16 +77,15 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
78
77
|
},
|
|
79
78
|
},
|
|
80
79
|
},
|
|
81
|
-
|
|
80
|
+
lunar_power: {
|
|
82
81
|
name: 'Lunar Moth Shard',
|
|
83
82
|
skyblockId: 'SHARD_LUNAR_MOTH',
|
|
84
83
|
rarity: Rarity.Epic,
|
|
85
84
|
effect: 'fortune',
|
|
86
85
|
wiki: 'https://wiki.hypixel.net/Lunar_Moth',
|
|
87
86
|
active: (options) => {
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
const lunarMoth = a.SHARD_LUNAR_MOTH ?? 0;
|
|
87
|
+
const firefly = getAttributeAmount(options.attributes, 'solar_power');
|
|
88
|
+
const lunarMoth = getAttributeAmount(options.attributes, 'lunar_power');
|
|
91
89
|
const forceFirefly = 'options' in options && options.options.selectedCrop === Crop.Sunflower;
|
|
92
90
|
const forceLunarMoth = 'options' in options && options.options.selectedCrop === Crop.Moonflower;
|
|
93
91
|
if (forceLunarMoth) {
|
|
@@ -121,7 +119,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
121
119
|
},
|
|
122
120
|
},
|
|
123
121
|
},
|
|
124
|
-
|
|
122
|
+
pretty_clothes: {
|
|
125
123
|
// 1% more copper from visitors per level
|
|
126
124
|
name: 'Ladybug Shard',
|
|
127
125
|
skyblockId: 'SHARD_LADYBUG',
|
|
@@ -129,14 +127,14 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
129
127
|
effect: 'none',
|
|
130
128
|
wiki: 'https://wiki.hypixel.net/Ladybug',
|
|
131
129
|
},
|
|
132
|
-
|
|
130
|
+
crop_bug: {
|
|
133
131
|
name: 'Cropeetle Shard',
|
|
134
132
|
skyblockId: 'SHARD_CROPEETLE',
|
|
135
133
|
rarity: Rarity.Rare,
|
|
136
134
|
effect: 'rates',
|
|
137
135
|
wiki: 'https://wiki.hypixel.net/Cropeetle',
|
|
138
136
|
ratesModifier: (current, options) => {
|
|
139
|
-
const level = getShardLevel(Rarity.Rare, options.attributes
|
|
137
|
+
const level = getShardLevel(Rarity.Rare, getAttributeAmount(options.attributes, 'crop_bug'));
|
|
140
138
|
if (level <= 0)
|
|
141
139
|
return current;
|
|
142
140
|
const specialCrop = MATCHING_SPECIAL_CROP[options.crop];
|
|
@@ -148,7 +146,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
148
146
|
return current;
|
|
149
147
|
},
|
|
150
148
|
},
|
|
151
|
-
|
|
149
|
+
fancy_visit: {
|
|
152
150
|
// 1% chance for rare or higher visitor per level
|
|
153
151
|
name: 'Invisibug Shard',
|
|
154
152
|
skyblockId: 'SHARD_INVISIBUG',
|
|
@@ -156,7 +154,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
156
154
|
effect: 'none',
|
|
157
155
|
wiki: 'https://wiki.hypixel.net/Invisibug',
|
|
158
156
|
},
|
|
159
|
-
|
|
157
|
+
infiltration: {
|
|
160
158
|
name: 'Termite Shard',
|
|
161
159
|
skyblockId: 'SHARD_TERMITE',
|
|
162
160
|
rarity: Rarity.Uncommon,
|
|
@@ -168,7 +166,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
168
166
|
return {
|
|
169
167
|
active: false,
|
|
170
168
|
reason: 'Termite shard is only active on infested plots.',
|
|
171
|
-
fortune: 3 * getShardLevel(Rarity.Uncommon, options.attributes
|
|
169
|
+
fortune: 3 * getShardLevel(Rarity.Uncommon, getAttributeAmount(options.attributes, 'infiltration')),
|
|
172
170
|
};
|
|
173
171
|
}
|
|
174
172
|
return {
|
|
@@ -182,7 +180,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
182
180
|
},
|
|
183
181
|
},
|
|
184
182
|
},
|
|
185
|
-
|
|
183
|
+
insect_power: {
|
|
186
184
|
// 5% vacuum damage per level
|
|
187
185
|
name: 'Praying Mantis Shard',
|
|
188
186
|
skyblockId: 'SHARD_PRAYING_MANTIS',
|
|
@@ -190,7 +188,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
190
188
|
effect: 'none',
|
|
191
189
|
wiki: 'https://wiki.hypixel.net/Praying_Mantis',
|
|
192
190
|
},
|
|
193
|
-
|
|
191
|
+
pest_luck: {
|
|
194
192
|
// 2% chance for rare pest drops per level
|
|
195
193
|
name: 'Pest Shard',
|
|
196
194
|
skyblockId: 'SHARD_PEST',
|
|
@@ -198,7 +196,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
198
196
|
effect: 'none',
|
|
199
197
|
wiki: 'https://wiki.hypixel.net/Pest',
|
|
200
198
|
},
|
|
201
|
-
|
|
199
|
+
visitor_bait: {
|
|
202
200
|
// Garden visitors 1% faster per level
|
|
203
201
|
name: 'Mudworm Shard',
|
|
204
202
|
skyblockId: 'SHARD_MUDWORM',
|
|
@@ -206,7 +204,7 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
206
204
|
effect: 'none',
|
|
207
205
|
wiki: 'https://wiki.hypixel.net/Mudworm',
|
|
208
206
|
},
|
|
209
|
-
|
|
207
|
+
ultimate_dna: {
|
|
210
208
|
// 1 farming fortune per level
|
|
211
209
|
name: 'Galaxy Fish Shard',
|
|
212
210
|
skyblockId: 'SHARD_GALAXY_FISH',
|
|
@@ -226,6 +224,36 @@ export const FARMING_ATTRIBUTE_SHARDS = {
|
|
|
226
224
|
},
|
|
227
225
|
},
|
|
228
226
|
};
|
|
227
|
+
const ATTRIBUTE_SHARD_ID_BY_SKYBLOCK_ID = Object.fromEntries(Object.entries(FARMING_ATTRIBUTE_SHARDS).map(([id, shard]) => [shard.skyblockId.toUpperCase(), id]));
|
|
228
|
+
export function normalizeAttributeId(id) {
|
|
229
|
+
const normalized = id.trim().toLowerCase();
|
|
230
|
+
if (normalized in FARMING_ATTRIBUTE_SHARDS) {
|
|
231
|
+
return normalized;
|
|
232
|
+
}
|
|
233
|
+
return ATTRIBUTE_SHARD_ID_BY_SKYBLOCK_ID[id.trim().toUpperCase()];
|
|
234
|
+
}
|
|
235
|
+
export function getAttributeAmount(attributes, id) {
|
|
236
|
+
if (!attributes)
|
|
237
|
+
return 0;
|
|
238
|
+
const direct = attributes[id];
|
|
239
|
+
if (direct !== undefined && direct !== null)
|
|
240
|
+
return direct;
|
|
241
|
+
const legacyId = FARMING_ATTRIBUTE_SHARDS[id]?.skyblockId;
|
|
242
|
+
if (!legacyId)
|
|
243
|
+
return 0;
|
|
244
|
+
const legacy = attributes[legacyId];
|
|
245
|
+
return legacy ?? 0;
|
|
246
|
+
}
|
|
247
|
+
export function normalizeAttributes(attributes) {
|
|
248
|
+
if (!attributes)
|
|
249
|
+
return undefined;
|
|
250
|
+
const normalized = {};
|
|
251
|
+
for (const [id, amount] of Object.entries(attributes)) {
|
|
252
|
+
const shardId = normalizeAttributeId(id) ?? id;
|
|
253
|
+
normalized[shardId] = amount;
|
|
254
|
+
}
|
|
255
|
+
return normalized;
|
|
256
|
+
}
|
|
229
257
|
export const ATTRIBUTE_SHARD_LEVELING = {
|
|
230
258
|
[Rarity.Common]: [1, 3, 5, 6, 7, 8, 10, 14, 18, 24],
|
|
231
259
|
[Rarity.Uncommon]: [1, 2, 3, 4, 5, 6, 7, 8, 12, 16],
|
|
@@ -271,7 +299,11 @@ export function getShardFortune(shard, player, level) {
|
|
|
271
299
|
return getShardStat(shard, player, Stat.FarmingFortune, level);
|
|
272
300
|
}
|
|
273
301
|
export function getShardStat(shard, player, stat, level) {
|
|
274
|
-
|
|
302
|
+
const shardId = normalizeAttributeId(shard.skyblockId);
|
|
303
|
+
const amount = shardId !== undefined
|
|
304
|
+
? getAttributeAmount(player.attributes, shardId)
|
|
305
|
+
: (player.attributes?.[shard.skyblockId] ?? 0);
|
|
306
|
+
level ??= getShardLevel(shard.rarity, amount);
|
|
275
307
|
if (level <= 0)
|
|
276
308
|
return 0;
|
|
277
309
|
const active = shard.active?.(player);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../src/constants/attributes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAoB,MAAM,YAAY,CAAC;AAoBlE,MAAM,CAAC,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../src/constants/attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ import { Rarity, type RarityRecord } from './reforges.js';
|
|
|
3
3
|
import { Stat } from './stats.js';
|
|
4
4
|
export declare const GARDEN_CHIP_MAX_LEVEL: 20;
|
|
5
5
|
export declare const GARDEN_CHIP_WIKI: "https://wiki.hypixel.net/Garden_Chip";
|
|
6
|
-
export type GardenChipId = '
|
|
6
|
+
export type GardenChipId = 'cropshot' | 'vermin_vaporizer' | 'synthesis' | 'sowledge' | 'mechamind' | 'hypercharge' | 'evergreen' | 'overdrive' | 'quickdraw' | 'rarefinder';
|
|
7
7
|
export interface GardenChipInfo {
|
|
8
|
-
skyblockId:
|
|
8
|
+
skyblockId: string;
|
|
9
9
|
name: string;
|
|
10
10
|
wiki: string;
|
|
11
11
|
/**
|
|
@@ -29,10 +29,12 @@ export declare function getChipStats(chipId: GardenChipId, level?: number | null
|
|
|
29
29
|
/** Returns the per-level multiplier for temporary fortune sources for a chip, based on level-derived rarity. */
|
|
30
30
|
export declare function getChipTempMultiplierPerLevel(chipId: GardenChipId, level?: number | null): number;
|
|
31
31
|
/**
|
|
32
|
-
* Normalizes
|
|
33
|
-
* Accepts
|
|
32
|
+
* Normalizes chip identifiers to the canonical GardenChipId format.
|
|
33
|
+
* Accepts canonical IDs, full SkyBlock IDs, and short names.
|
|
34
34
|
*/
|
|
35
35
|
export declare function normalizeChipId(id: string): GardenChipId | undefined;
|
|
36
|
+
export declare function normalizeChipLevels(chips?: Record<string, number | null | undefined>): Partial<Record<GardenChipId, number>> | undefined;
|
|
37
|
+
export declare function getChipInputLevel(chips: Record<string, number | null | undefined> | undefined, chipId: GardenChipId): number;
|
|
36
38
|
/**
|
|
37
39
|
* Type that accepts either the full chip ID or the short name.
|
|
38
40
|
* E.g., both 'CROPSHOT_GARDEN_CHIP' and 'CROPSHOT' are valid.
|
package/dist/constants/chips.js
CHANGED
|
@@ -3,23 +3,7 @@ import { Stat } from './stats.js';
|
|
|
3
3
|
export const GARDEN_CHIP_MAX_LEVEL = 20;
|
|
4
4
|
export const GARDEN_CHIP_WIKI = 'https://wiki.hypixel.net/Garden_Chip';
|
|
5
5
|
export const GARDEN_CHIPS = {
|
|
6
|
-
|
|
7
|
-
skyblockId: 'CROPSHOT_GARDEN_CHIP',
|
|
8
|
-
name: 'Cropshot Chip',
|
|
9
|
-
wiki: GARDEN_CHIP_WIKI,
|
|
10
|
-
statsPerRarity: {
|
|
11
|
-
[Rarity.Rare]: {
|
|
12
|
-
[Stat.FarmingFortune]: 3,
|
|
13
|
-
},
|
|
14
|
-
[Rarity.Epic]: {
|
|
15
|
-
[Stat.FarmingFortune]: 4,
|
|
16
|
-
},
|
|
17
|
-
[Rarity.Legendary]: {
|
|
18
|
-
[Stat.FarmingFortune]: 5,
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
VERMIN_VAPORIZER_GARDEN_CHIP: {
|
|
6
|
+
vermin_vaporizer: {
|
|
23
7
|
skyblockId: 'VERMIN_VAPORIZER_GARDEN_CHIP',
|
|
24
8
|
name: 'Vermin Vaporizer Chip',
|
|
25
9
|
wiki: GARDEN_CHIP_WIKI,
|
|
@@ -35,12 +19,12 @@ export const GARDEN_CHIPS = {
|
|
|
35
19
|
},
|
|
36
20
|
},
|
|
37
21
|
},
|
|
38
|
-
|
|
22
|
+
synthesis: {
|
|
39
23
|
skyblockId: 'SYNTHESIS_GARDEN_CHIP',
|
|
40
24
|
name: 'Synthesis Chip',
|
|
41
25
|
wiki: GARDEN_CHIP_WIKI,
|
|
42
26
|
},
|
|
43
|
-
|
|
27
|
+
sowledge: {
|
|
44
28
|
skyblockId: 'SOWLEDGE_GARDEN_CHIP',
|
|
45
29
|
name: 'Sowledge Chip',
|
|
46
30
|
wiki: GARDEN_CHIP_WIKI,
|
|
@@ -56,12 +40,12 @@ export const GARDEN_CHIPS = {
|
|
|
56
40
|
},
|
|
57
41
|
},
|
|
58
42
|
},
|
|
59
|
-
|
|
43
|
+
mechamind: {
|
|
60
44
|
skyblockId: 'MECHAMIND_GARDEN_CHIP',
|
|
61
45
|
name: 'Mechamind Chip',
|
|
62
46
|
wiki: GARDEN_CHIP_WIKI,
|
|
63
47
|
},
|
|
64
|
-
|
|
48
|
+
hypercharge: {
|
|
65
49
|
skyblockId: 'HYPERCHARGE_GARDEN_CHIP',
|
|
66
50
|
name: 'Hypercharge Chip',
|
|
67
51
|
wiki: GARDEN_CHIP_WIKI,
|
|
@@ -71,27 +55,43 @@ export const GARDEN_CHIPS = {
|
|
|
71
55
|
[Rarity.Legendary]: 0.05,
|
|
72
56
|
},
|
|
73
57
|
},
|
|
74
|
-
|
|
58
|
+
evergreen: {
|
|
75
59
|
skyblockId: 'EVERGREEN_GARDEN_CHIP',
|
|
76
60
|
name: 'Evergreen Chip',
|
|
77
61
|
wiki: GARDEN_CHIP_WIKI,
|
|
78
62
|
},
|
|
79
|
-
|
|
63
|
+
cropshot: {
|
|
64
|
+
skyblockId: 'CROPSHOT_GARDEN_CHIP',
|
|
65
|
+
name: 'Cropshot Chip',
|
|
66
|
+
wiki: GARDEN_CHIP_WIKI,
|
|
67
|
+
statsPerRarity: {
|
|
68
|
+
[Rarity.Rare]: {
|
|
69
|
+
[Stat.FarmingFortune]: 3,
|
|
70
|
+
},
|
|
71
|
+
[Rarity.Epic]: {
|
|
72
|
+
[Stat.FarmingFortune]: 4,
|
|
73
|
+
},
|
|
74
|
+
[Rarity.Legendary]: {
|
|
75
|
+
[Stat.FarmingFortune]: 5,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
overdrive: {
|
|
80
80
|
skyblockId: 'OVERDRIVE_GARDEN_CHIP',
|
|
81
81
|
name: 'Overdrive Chip',
|
|
82
82
|
wiki: GARDEN_CHIP_WIKI,
|
|
83
83
|
},
|
|
84
|
-
|
|
84
|
+
quickdraw: {
|
|
85
85
|
skyblockId: 'QUICKDRAW_GARDEN_CHIP',
|
|
86
86
|
name: 'Quickdraw Chip',
|
|
87
87
|
wiki: GARDEN_CHIP_WIKI,
|
|
88
88
|
},
|
|
89
|
-
|
|
89
|
+
rarefinder: {
|
|
90
90
|
skyblockId: 'RAREFINDER_GARDEN_CHIP',
|
|
91
91
|
name: 'Rarefinder Chip',
|
|
92
92
|
wiki: GARDEN_CHIP_WIKI,
|
|
93
93
|
ratesModifier: (current, options) => {
|
|
94
|
-
const level = getChipLevel(options.chips
|
|
94
|
+
const level = getChipLevel(getChipInputLevel(options.chips, 'rarefinder'));
|
|
95
95
|
if (level <= 0)
|
|
96
96
|
return current;
|
|
97
97
|
const rarity = getChipRarity(level);
|
|
@@ -107,6 +107,24 @@ export const GARDEN_CHIPS = {
|
|
|
107
107
|
},
|
|
108
108
|
},
|
|
109
109
|
};
|
|
110
|
+
const CHIP_ID_LOOKUP = Object.entries(GARDEN_CHIPS).reduce((acc, [chipId, chip]) => {
|
|
111
|
+
const id = chipId;
|
|
112
|
+
const canonical = chipId.toLowerCase();
|
|
113
|
+
const skyblock = chip.skyblockId.toLowerCase();
|
|
114
|
+
const shortFromSkyblock = skyblock.replace(/_garden_chip$/, '');
|
|
115
|
+
const aliases = [
|
|
116
|
+
canonical,
|
|
117
|
+
canonical.replace(/_/g, ''),
|
|
118
|
+
skyblock,
|
|
119
|
+
skyblock.replace(/_/g, ''),
|
|
120
|
+
shortFromSkyblock,
|
|
121
|
+
shortFromSkyblock.replace(/_/g, ''),
|
|
122
|
+
];
|
|
123
|
+
for (const alias of aliases) {
|
|
124
|
+
acc[alias] = id;
|
|
125
|
+
}
|
|
126
|
+
return acc;
|
|
127
|
+
}, {});
|
|
110
128
|
export function getChipLevel(level) {
|
|
111
129
|
if (!level || level <= 0)
|
|
112
130
|
return 0;
|
|
@@ -136,20 +154,44 @@ export function getChipTempMultiplierPerLevel(chipId, level) {
|
|
|
136
154
|
return chipInfo.tempMultiplierPerLevel[rarity] ?? 0;
|
|
137
155
|
}
|
|
138
156
|
/**
|
|
139
|
-
* Normalizes
|
|
140
|
-
* Accepts
|
|
157
|
+
* Normalizes chip identifiers to the canonical GardenChipId format.
|
|
158
|
+
* Accepts canonical IDs, full SkyBlock IDs, and short names.
|
|
141
159
|
*/
|
|
142
160
|
export function normalizeChipId(id) {
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
161
|
+
const normalized = id
|
|
162
|
+
.trim()
|
|
163
|
+
.toLowerCase()
|
|
164
|
+
.replace(/[\s-]+/g, '_');
|
|
165
|
+
return CHIP_ID_LOOKUP[normalized] ?? CHIP_ID_LOOKUP[normalized.replace(/_/g, '')];
|
|
166
|
+
}
|
|
167
|
+
export function normalizeChipLevels(chips) {
|
|
168
|
+
if (!chips)
|
|
169
|
+
return undefined;
|
|
170
|
+
const normalized = {};
|
|
171
|
+
for (const [id, level] of Object.entries(chips)) {
|
|
172
|
+
const chipId = normalizeChipId(id);
|
|
173
|
+
if (!chipId || level === undefined || level === null)
|
|
174
|
+
continue;
|
|
175
|
+
normalized[chipId] = level;
|
|
147
176
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
177
|
+
return normalized;
|
|
178
|
+
}
|
|
179
|
+
export function getChipInputLevel(chips, chipId) {
|
|
180
|
+
if (!chips)
|
|
181
|
+
return 0;
|
|
182
|
+
const direct = chips[chipId];
|
|
183
|
+
if (direct !== undefined && direct !== null)
|
|
184
|
+
return direct;
|
|
185
|
+
const legacyId = GARDEN_CHIPS[chipId].skyblockId;
|
|
186
|
+
const legacy = chips[legacyId];
|
|
187
|
+
if (legacy !== undefined && legacy !== null)
|
|
188
|
+
return legacy;
|
|
189
|
+
for (const [id, level] of Object.entries(chips)) {
|
|
190
|
+
if (level === undefined || level === null)
|
|
191
|
+
continue;
|
|
192
|
+
if (normalizeChipId(id) === chipId)
|
|
193
|
+
return level;
|
|
152
194
|
}
|
|
153
|
-
return
|
|
195
|
+
return 0;
|
|
154
196
|
}
|
|
155
197
|
//# sourceMappingURL=chips.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chips.js","sourceRoot":"","sources":["../../src/constants/chips.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAW,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sCAA+C,CAAC;AAiChF,MAAM,CAAC,MAAM,YAAY,GAAyC;IACjE,
|
|
1
|
+
{"version":3,"file":"chips.js","sourceRoot":"","sources":["../../src/constants/chips.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Rarity } from './reforges.js';
|
|
2
|
+
export interface GreenhouseMutationRenderMapping {
|
|
3
|
+
itemId?: string;
|
|
4
|
+
surface?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const GREENHOUSE_MUTATION_RENDER_MAPPINGS: Record<string, GreenhouseMutationRenderMapping>;
|
|
7
|
+
declare const GREENHOUSE_MUTATIONS_BASE: Record<string, Omit<GreenhouseMutation, "rarity">>;
|
|
8
|
+
export declare const GREENHOUSE_MUTATIONS: { [K in keyof typeof GREENHOUSE_MUTATIONS_BASE]: GreenhouseMutation; };
|
|
9
|
+
export declare function getGreenhouseMutationRenderItemId(id: string): string;
|
|
10
|
+
export declare function getGreenhouseMutationRenderSurface(id: string, fallbackSurface: string): string;
|
|
11
|
+
export interface GreenhouseMutation {
|
|
12
|
+
id: string;
|
|
13
|
+
type: 'MUTATION';
|
|
14
|
+
rarity: Rarity;
|
|
15
|
+
display: {
|
|
16
|
+
name: string;
|
|
17
|
+
minecraftId: string;
|
|
18
|
+
};
|
|
19
|
+
growth: {
|
|
20
|
+
size: [number, number];
|
|
21
|
+
surface: string;
|
|
22
|
+
stages: number;
|
|
23
|
+
requiresWater: boolean;
|
|
24
|
+
};
|
|
25
|
+
spreadingConditions?: {
|
|
26
|
+
type: string;
|
|
27
|
+
crop?: string;
|
|
28
|
+
count?: number;
|
|
29
|
+
range?: string;
|
|
30
|
+
requirement?: string;
|
|
31
|
+
}[];
|
|
32
|
+
drops?: {
|
|
33
|
+
item: string;
|
|
34
|
+
amount: number;
|
|
35
|
+
}[];
|
|
36
|
+
effects?: Record<string, {
|
|
37
|
+
value?: number;
|
|
38
|
+
}>;
|
|
39
|
+
analysis: {
|
|
40
|
+
baseCost: number;
|
|
41
|
+
copper: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export {};
|