farming-weight 0.10.8 → 0.11.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/dist/constants/attributes.d.ts +2 -1
- package/dist/constants/attributes.js +9 -3
- package/dist/constants/attributes.js.map +1 -1
- package/dist/constants/crops.d.ts +4 -1
- package/dist/constants/crops.js +62 -2
- package/dist/constants/crops.js.map +1 -1
- package/dist/constants/garden.js +18 -0
- package/dist/constants/garden.js.map +1 -1
- package/dist/constants/gems.d.ts +14 -1
- package/dist/constants/gems.js +561 -42
- package/dist/constants/gems.js.map +1 -1
- package/dist/constants/personalbests.js +4 -1
- package/dist/constants/personalbests.js.map +1 -1
- package/dist/constants/pests.d.ts +4 -1
- package/dist/constants/pests.js +119 -65
- package/dist/constants/pests.js.map +1 -1
- package/dist/constants/reforges.js +4 -0
- package/dist/constants/reforges.js.map +1 -1
- package/dist/constants/specialcrops.d.ts +15 -1
- package/dist/constants/specialcrops.js +17 -0
- package/dist/constants/specialcrops.js.map +1 -1
- package/dist/constants/specific.d.ts +1 -0
- package/dist/constants/specific.js +10 -0
- package/dist/constants/specific.js.map +1 -1
- package/dist/constants/stats.d.ts +5 -1
- package/dist/constants/stats.js +4 -0
- package/dist/constants/stats.js.map +1 -1
- package/dist/constants/upgrades.d.ts +43 -0
- package/dist/constants/upgrades.js.map +1 -1
- package/dist/constants/weight.js +5 -2
- package/dist/constants/weight.js.map +1 -1
- package/dist/fortune/farmingaccessory.d.ts +3 -1
- package/dist/fortune/farmingaccessory.js +17 -5
- package/dist/fortune/farmingaccessory.js.map +1 -1
- package/dist/fortune/farmingarmor.d.ts +14 -5
- package/dist/fortune/farmingarmor.js +123 -17
- package/dist/fortune/farmingarmor.js.map +1 -1
- package/dist/fortune/farmingequipment.d.ts +4 -2
- package/dist/fortune/farmingequipment.js +27 -5
- package/dist/fortune/farmingequipment.js.map +1 -1
- package/dist/fortune/farmingtool.d.ts +8 -4
- package/dist/fortune/farmingtool.js +53 -14
- package/dist/fortune/farmingtool.js.map +1 -1
- package/dist/fortune/upgradeable.d.ts +7 -2
- package/dist/fortune/upgradeablebase.d.ts +7 -3
- package/dist/fortune/upgradeablebase.js +20 -4
- package/dist/fortune/upgradeablebase.js.map +1 -1
- package/dist/items/accessories.d.ts +3 -14
- package/dist/items/accessories.js +9 -0
- package/dist/items/accessories.js.map +1 -1
- package/dist/items/armor.d.ts +3 -35
- package/dist/items/armor.js +139 -63
- package/dist/items/armor.js.map +1 -1
- package/dist/items/definitions.d.ts +44 -0
- package/dist/items/definitions.js +62 -0
- package/dist/items/definitions.js.map +1 -0
- package/dist/items/equipment.d.ts +2 -2
- package/dist/items/equipment.js +1 -1
- package/dist/items/equipment.js.map +1 -1
- package/dist/items/tools.d.ts +3 -14
- package/dist/items/tools.js +6 -36
- package/dist/items/tools.js.map +1 -1
- package/dist/player/player.d.ts +45 -4
- package/dist/player/player.js +720 -94
- package/dist/player/player.js.map +1 -1
- package/dist/player/playeroptions.d.ts +1 -0
- package/dist/player/playeroptions.js.map +1 -1
- package/dist/upgrades/enchantupgrades.d.ts +3 -2
- package/dist/upgrades/enchantupgrades.js +48 -8
- package/dist/upgrades/enchantupgrades.js.map +1 -1
- package/dist/upgrades/getfortune.d.ts +2 -1
- package/dist/upgrades/getfortune.js +7 -2
- package/dist/upgrades/getfortune.js.map +1 -1
- package/dist/upgrades/getsourceprogress.d.ts +2 -1
- package/dist/upgrades/getsourceprogress.js +53 -3
- package/dist/upgrades/getsourceprogress.js.map +1 -1
- package/dist/upgrades/sources/armorsetsources.js +57 -27
- package/dist/upgrades/sources/armorsetsources.js.map +1 -1
- package/dist/upgrades/sources/cropsources.js +39 -3
- package/dist/upgrades/sources/cropsources.js.map +1 -1
- package/dist/upgrades/sources/dynamicfortunesources.d.ts +10 -2
- package/dist/upgrades/sources/gearsources.js +54 -5
- package/dist/upgrades/sources/gearsources.js.map +1 -1
- package/dist/upgrades/sources/generalsources.js +177 -8
- package/dist/upgrades/sources/generalsources.js.map +1 -1
- package/dist/upgrades/sources/toolsources.js +108 -17
- package/dist/upgrades/sources/toolsources.js.map +1 -1
- package/dist/upgrades/upgrades.d.ts +5 -2
- package/dist/upgrades/upgrades.js +114 -24
- package/dist/upgrades/upgrades.js.map +1 -1
- package/dist/upgrades/upgradeutils.d.ts +6 -0
- package/dist/upgrades/upgradeutils.js +18 -0
- package/dist/upgrades/upgradeutils.js.map +1 -0
- package/dist/util/enchants.d.ts +3 -0
- package/dist/util/enchants.js +18 -12
- package/dist/util/enchants.js.map +1 -1
- package/dist/util/garden.d.ts +1 -0
- package/dist/util/garden.js +8 -2
- package/dist/util/garden.js.map +1 -1
- package/dist/util/gems.d.ts +2 -0
- package/dist/util/gems.js +29 -8
- package/dist/util/gems.js.map +1 -1
- package/dist/util/names.js +23 -0
- package/dist/util/names.js.map +1 -1
- package/package.json +3 -2
|
@@ -23,12 +23,22 @@ export const CROP_FORTUNE_SOURCES = [
|
|
|
23
23
|
const progress = tool?.getProgress();
|
|
24
24
|
return progress?.reduce((acc, p) => acc + p.fortune, 0) ?? 0;
|
|
25
25
|
},
|
|
26
|
-
|
|
26
|
+
maxStat: ({ crop }, stat) => {
|
|
27
|
+
const fake = getFakeItem(CROP_INFO[crop].startingTool);
|
|
28
|
+
const progress = fake?.getProgress(true, [stat]) ?? [];
|
|
29
|
+
return progress.reduce((acc, p) => acc + (p.stats?.[stat]?.max ?? (stat === Stat.FarmingFortune ? p.maxFortune : 0)), 0);
|
|
30
|
+
},
|
|
31
|
+
currentStat: ({ player, crop }, stat) => {
|
|
32
|
+
const tool = player.getSelectedCropTool(crop);
|
|
33
|
+
const progress = tool?.getProgress(false, [stat]) ?? [];
|
|
34
|
+
return progress.reduce((acc, p) => acc + (p.stats?.[stat]?.current ?? (stat === Stat.FarmingFortune ? p.fortune : 0)), 0);
|
|
35
|
+
},
|
|
36
|
+
progress: ({ player, crop }, stats) => {
|
|
27
37
|
const tool = player.getSelectedCropTool(crop);
|
|
28
38
|
if (tool)
|
|
29
|
-
return tool.getProgress();
|
|
39
|
+
return tool.getProgress(false, stats);
|
|
30
40
|
const fake = getFakeItem(CROP_INFO[crop].startingTool);
|
|
31
|
-
return fake?.getProgress(true) ?? [];
|
|
41
|
+
return fake?.getProgress(true, stats) ?? [];
|
|
32
42
|
},
|
|
33
43
|
info: ({ player, crop }) => {
|
|
34
44
|
const tool = player.selectedTool?.crop === crop ? player.selectedTool : player.getSelectedCropTool(crop);
|
|
@@ -57,6 +67,9 @@ export const CROP_FORTUNE_SOURCES = [
|
|
|
57
67
|
{
|
|
58
68
|
title: 'Exportable Crop',
|
|
59
69
|
increase: EXPORTABLE_CROP_FORTUNE,
|
|
70
|
+
stats: {
|
|
71
|
+
[Stat.FarmingFortune]: EXPORTABLE_CROP_FORTUNE,
|
|
72
|
+
},
|
|
60
73
|
action: UpgradeAction.Unlock,
|
|
61
74
|
category: UpgradeCategory.Misc,
|
|
62
75
|
api: false,
|
|
@@ -82,10 +95,18 @@ export const CROP_FORTUNE_SOURCES = [
|
|
|
82
95
|
{
|
|
83
96
|
title: GARDEN_CROP_UPGRADES.name,
|
|
84
97
|
increase: GARDEN_CROP_UPGRADES.fortunePerLevel,
|
|
98
|
+
stats: {
|
|
99
|
+
[Stat.FarmingFortune]: GARDEN_CROP_UPGRADES.fortunePerLevel,
|
|
100
|
+
},
|
|
85
101
|
action: UpgradeAction.Upgrade,
|
|
86
102
|
wiki: GARDEN_CROP_UPGRADES.wiki,
|
|
87
103
|
category: UpgradeCategory.Misc,
|
|
88
104
|
cost: GARDEN_CROP_UPGRADES.upgradeCosts?.[level + 1],
|
|
105
|
+
meta: {
|
|
106
|
+
type: 'crop_upgrade',
|
|
107
|
+
key: crop,
|
|
108
|
+
value: level + 1,
|
|
109
|
+
},
|
|
89
110
|
},
|
|
90
111
|
];
|
|
91
112
|
},
|
|
@@ -106,10 +127,18 @@ export const CROP_FORTUNE_SOURCES = [
|
|
|
106
127
|
{
|
|
107
128
|
title: COCOA_FORTUNE_UPGRADE.name,
|
|
108
129
|
increase: COCOA_FORTUNE_UPGRADE.fortunePerLevel,
|
|
130
|
+
stats: {
|
|
131
|
+
[Stat.FarmingFortune]: COCOA_FORTUNE_UPGRADE.fortunePerLevel,
|
|
132
|
+
},
|
|
109
133
|
action: UpgradeAction.Upgrade,
|
|
110
134
|
repeatable: COCOA_FORTUNE_UPGRADE.maxLevel - level,
|
|
111
135
|
wiki: COCOA_FORTUNE_UPGRADE.wiki,
|
|
112
136
|
category: UpgradeCategory.Misc,
|
|
137
|
+
meta: {
|
|
138
|
+
type: 'setting',
|
|
139
|
+
key: 'cocoaFortuneUpgrade',
|
|
140
|
+
value: level + 1,
|
|
141
|
+
},
|
|
113
142
|
},
|
|
114
143
|
];
|
|
115
144
|
},
|
|
@@ -172,6 +201,9 @@ export const CROP_FORTUNE_SOURCES = [
|
|
|
172
201
|
{
|
|
173
202
|
title: 'Personal Best Fortune',
|
|
174
203
|
increase: increase,
|
|
204
|
+
stats: {
|
|
205
|
+
[Stat.FarmingFortune]: increase,
|
|
206
|
+
},
|
|
175
207
|
action: UpgradeAction.Unlock,
|
|
176
208
|
wiki: 'https://wiki.hypixel.net/Anita#Personal_Bests',
|
|
177
209
|
category: UpgradeCategory.Anita,
|
|
@@ -183,6 +215,10 @@ export const CROP_FORTUNE_SOURCES = [
|
|
|
183
215
|
gold: 2,
|
|
184
216
|
},
|
|
185
217
|
},
|
|
218
|
+
meta: {
|
|
219
|
+
type: 'unlock',
|
|
220
|
+
id: 'personal_best',
|
|
221
|
+
},
|
|
186
222
|
},
|
|
187
223
|
];
|
|
188
224
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cropsources.js","sourceRoot":"","sources":["../../../src/upgrades/sources/cropsources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGhE,MAAM,CAAC,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"cropsources.js","sourceRoot":"","sources":["../../../src/upgrades/sources/cropsources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Crop } from '../../constants/crops.js';
|
|
2
|
+
import type { Stat } from '../../constants/stats.js';
|
|
2
3
|
import type { FortuneSourceProgress, FortuneUpgrade, UpgradeInfo } from '../../constants/upgrades.js';
|
|
3
4
|
import type { EliteItemDto } from '../../fortune/item.js';
|
|
4
5
|
import type { UpgradeableInfo } from '../../fortune/upgradeable.js';
|
|
@@ -14,16 +15,23 @@ export interface DynamicFortuneSource<T> {
|
|
|
14
15
|
reason?: string;
|
|
15
16
|
fortune?: number;
|
|
16
17
|
};
|
|
18
|
+
activeStat?: (source: T, stat: Stat) => {
|
|
19
|
+
active: boolean;
|
|
20
|
+
reason?: string;
|
|
21
|
+
value?: number;
|
|
22
|
+
};
|
|
17
23
|
max: (source: T) => number;
|
|
18
24
|
current: (source: T) => number;
|
|
19
|
-
|
|
25
|
+
maxStat?: (source: T, stat: Stat) => number;
|
|
26
|
+
currentStat?: (source: T, stat: Stat) => number;
|
|
27
|
+
progress?: (source: T, stats?: Stat[]) => FortuneSourceProgress[];
|
|
20
28
|
info?: (source: T) => {
|
|
21
29
|
item?: EliteItemDto;
|
|
22
30
|
info?: UpgradeableInfo;
|
|
23
31
|
nextInfo?: UpgradeableInfo;
|
|
24
32
|
maxInfo?: UpgradeableInfo;
|
|
25
33
|
};
|
|
26
|
-
upgrades?: (source: T) => FortuneUpgrade[];
|
|
34
|
+
upgrades?: (source: T, stats?: Stat[]) => FortuneUpgrade[];
|
|
27
35
|
}
|
|
28
36
|
export interface DynamicUpgradeSource<T, Output = unknown> {
|
|
29
37
|
name: string;
|
|
@@ -3,7 +3,7 @@ import { Rarity, REFORGES, ReforgeTarget } from '../../constants/reforges.js';
|
|
|
3
3
|
import { Skill } from '../../constants/skills.js';
|
|
4
4
|
import { Stat } from '../../constants/stats.js';
|
|
5
5
|
import { GemRarity } from '../../fortune/item.js';
|
|
6
|
-
import {
|
|
6
|
+
import { getMaxStatFromEnchant, getStatFromEnchant } from '../../util/enchants.js';
|
|
7
7
|
import { getPeridotFortune, getPeridotGemFortune } from '../../util/gems.js';
|
|
8
8
|
import { getUpgradeableEnchant } from '../enchantupgrades.js';
|
|
9
9
|
import { getUpgradeableGems, getUpgradeableReforges } from '../upgrades.js';
|
|
@@ -11,7 +11,7 @@ export const GEAR_FORTUNE_SOURCES = [
|
|
|
11
11
|
{
|
|
12
12
|
name: 'Base Stats',
|
|
13
13
|
exists: (gear) => {
|
|
14
|
-
return (gear.getLastItemUpgrade() ?? gear)?.info?.baseStats
|
|
14
|
+
return Object.keys((gear.getLastItemUpgrade() ?? gear)?.info?.baseStats ?? {}).length > 0;
|
|
15
15
|
},
|
|
16
16
|
max: (gear) => {
|
|
17
17
|
return (gear.getLastItemUpgrade() ?? gear)?.info?.baseStats?.[Stat.FarmingFortune] ?? 0;
|
|
@@ -19,6 +19,12 @@ export const GEAR_FORTUNE_SOURCES = [
|
|
|
19
19
|
current: (gear) => {
|
|
20
20
|
return gear.info.baseStats?.[Stat.FarmingFortune] ?? 0;
|
|
21
21
|
},
|
|
22
|
+
maxStat: (gear, stat) => {
|
|
23
|
+
return (gear.getLastItemUpgrade() ?? gear)?.info?.baseStats?.[stat] ?? 0;
|
|
24
|
+
},
|
|
25
|
+
currentStat: (gear, stat) => {
|
|
26
|
+
return gear.info.baseStats?.[stat] ?? 0;
|
|
27
|
+
},
|
|
22
28
|
},
|
|
23
29
|
{
|
|
24
30
|
name: 'Reforge Stats',
|
|
@@ -35,6 +41,26 @@ export const GEAR_FORTUNE_SOURCES = [
|
|
|
35
41
|
current: (gear) => {
|
|
36
42
|
return gear.reforgeStats?.stats?.[Stat.FarmingFortune] ?? 0;
|
|
37
43
|
},
|
|
44
|
+
maxStat: (gear, stat) => {
|
|
45
|
+
const maxRarity = (gear.getLastItemUpgrade()?.info.maxRarity ?? gear.info.maxRarity);
|
|
46
|
+
const current = gear.reforgeStats?.stats?.[stat] ?? 0;
|
|
47
|
+
let best = 0;
|
|
48
|
+
for (const reforge of Object.values(REFORGES)) {
|
|
49
|
+
if (!reforge || !reforge.appliesTo.includes(gear.type))
|
|
50
|
+
continue;
|
|
51
|
+
// Keep "max" aligned with what we can suggest/cost (stone-based).
|
|
52
|
+
if (!reforge.stone?.id)
|
|
53
|
+
continue;
|
|
54
|
+
const tier = reforge.tiers?.[maxRarity];
|
|
55
|
+
const val = tier?.stats?.[stat] ?? 0;
|
|
56
|
+
if (val > best)
|
|
57
|
+
best = val;
|
|
58
|
+
}
|
|
59
|
+
return Math.max(best, current);
|
|
60
|
+
},
|
|
61
|
+
currentStat: (gear, stat) => {
|
|
62
|
+
return gear.reforgeStats?.stats?.[stat] ?? 0;
|
|
63
|
+
},
|
|
38
64
|
upgrades: getUpgradeableReforges,
|
|
39
65
|
},
|
|
40
66
|
{
|
|
@@ -52,6 +78,16 @@ export const GEAR_FORTUNE_SOURCES = [
|
|
|
52
78
|
current: (upgradeable) => {
|
|
53
79
|
return getPeridotFortune(upgradeable.rarity, upgradeable.item);
|
|
54
80
|
},
|
|
81
|
+
maxStat: (upgradeable, stat) => {
|
|
82
|
+
if (stat !== Stat.FarmingFortune)
|
|
83
|
+
return 0;
|
|
84
|
+
const last = (upgradeable.getLastItemUpgrade() ?? upgradeable)?.info;
|
|
85
|
+
return ((last?.gemSlots?.filter((s) => s.slot_type === 'PERIDOT').length ?? 0) *
|
|
86
|
+
getPeridotGemFortune(last?.maxRarity ?? Rarity.Common, GemRarity.Perfect));
|
|
87
|
+
},
|
|
88
|
+
currentStat: (upgradeable, stat) => {
|
|
89
|
+
return stat === Stat.FarmingFortune ? getPeridotFortune(upgradeable.rarity, upgradeable.item) : 0;
|
|
90
|
+
},
|
|
55
91
|
upgrades: getUpgradeableGems,
|
|
56
92
|
},
|
|
57
93
|
{
|
|
@@ -62,6 +98,8 @@ export const GEAR_FORTUNE_SOURCES = [
|
|
|
62
98
|
current: (gear) => {
|
|
63
99
|
return gear.getPieceBonus();
|
|
64
100
|
},
|
|
101
|
+
maxStat: (_gear, stat) => (stat === Stat.FarmingFortune ? 15 : 0),
|
|
102
|
+
currentStat: (gear, stat) => (stat === Stat.FarmingFortune ? gear.getPieceBonus() : 0),
|
|
65
103
|
},
|
|
66
104
|
{
|
|
67
105
|
name: 'Farming Level',
|
|
@@ -76,6 +114,15 @@ export const GEAR_FORTUNE_SOURCES = [
|
|
|
76
114
|
current: (gear) => {
|
|
77
115
|
return (gear.info.perLevelStats?.stats[Stat.FarmingFortune] ?? 0) * (gear.options?.farmingLevel ?? 0);
|
|
78
116
|
},
|
|
117
|
+
maxStat: (gear, stat) => {
|
|
118
|
+
const last = (gear.getLastItemUpgrade() ?? gear)?.info;
|
|
119
|
+
if (!('perLevelStats' in last) || last.perLevelStats?.skill !== Skill.Farming)
|
|
120
|
+
return 0;
|
|
121
|
+
return (last.perLevelStats?.stats?.[stat] ?? 0) * 60;
|
|
122
|
+
},
|
|
123
|
+
currentStat: (gear, stat) => {
|
|
124
|
+
return (gear.info.perLevelStats?.stats?.[stat] ?? 0) * (gear.options?.farmingLevel ?? 0);
|
|
125
|
+
},
|
|
79
126
|
},
|
|
80
127
|
...Object.entries(FARMING_ENCHANTS ?? {})
|
|
81
128
|
.filter(([, enchant]) => enchant.appliesTo.includes(ReforgeTarget.Armor) || enchant.appliesTo.includes(ReforgeTarget.Equipment))
|
|
@@ -83,9 +130,11 @@ export const GEAR_FORTUNE_SOURCES = [
|
|
|
83
130
|
name: enchant.name,
|
|
84
131
|
wiki: () => enchant.wiki,
|
|
85
132
|
exists: (gear) => enchant.appliesTo.includes(gear.type),
|
|
86
|
-
max: (gear) =>
|
|
87
|
-
current: (gear) =>
|
|
88
|
-
|
|
133
|
+
max: (gear) => getMaxStatFromEnchant(enchant, Stat.FarmingFortune, gear.options),
|
|
134
|
+
current: (gear) => getStatFromEnchant(gear.item.enchantments?.[id] ?? 0, enchant, Stat.FarmingFortune, gear.options),
|
|
135
|
+
maxStat: (gear, stat) => getMaxStatFromEnchant(enchant, stat, gear.options),
|
|
136
|
+
currentStat: (gear, stat) => getStatFromEnchant(gear.item.enchantments?.[id] ?? 0, enchant, stat, gear.options),
|
|
137
|
+
upgrades: (gear, stats) => getUpgradeableEnchant(gear, id, stats?.[0] ?? Stat.FarmingFortune),
|
|
89
138
|
})),
|
|
90
139
|
];
|
|
91
140
|
//# sourceMappingURL=gearsources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gearsources.js","sourceRoot":"","sources":["../../../src/upgrades/sources/gearsources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"gearsources.js","sourceRoot":"","sources":["../../../src/upgrades/sources/gearsources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,MAAM,CAAC,MAAM,oBAAoB,GAA4D;IAC5F;QACC,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3F,CAAC;QACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;KACD;IACD;QACC,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;QAClB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;QAC/F,CAAC;QACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAW,CAAC;YAC/F,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS;gBAC3C,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAW,CAAC;YAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtD,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACjE,kEAAkE;gBAClE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;oBAAE,SAAS;gBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,GAAG,GAAG,IAAI;oBAAE,IAAI,GAAG,GAAG,CAAC;YAC5B,CAAC;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YAC3B,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,QAAQ,EAAE,sBAAsB;KAChC;IACD;QACC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,GAAG,EAAE,CAAC,kDAAkD;QAC9D,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,WAAW,CAAC,EAAE,IAAI,CAAC;YACrE,OAAO,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,SAAS,CAAC;QAC7E,CAAC;QACD,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE;YACpB,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,WAAW,CAAC,EAAE,IAAI,CAAC;YACrE,OAAO,CACN,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;gBACtE,oBAAoB,CAAC,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CACzE,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE;YACxB,OAAO,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE;YAC9B,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc;gBAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,WAAW,CAAC,EAAE,IAAI,CAAC;YACrE,OAAO,CACN,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;gBACtE,oBAAoB,CAAC,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CACzE,CAAC;QACH,CAAC;QACD,WAAW,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE;YAClC,OAAO,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,QAAQ,EAAE,kBAAkB;KAC5B;IACD;QACC,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO;QACvF,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;QACb,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,OAAQ,IAAyB,CAAC,aAAa,EAAE,CAAC;QACnD,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,IAAyB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5G;IACD;QACC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,KAAK,CAAC,OAAO;QACvG,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC;YACvD,OAAO,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,KAAK,CAAC,OAAO;gBAC5E,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;gBAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC;YACvD,IAAI,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,KAAK,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACtD,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;QAC1F,CAAC;KACD;IACD,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;SACvC,MAAM,CACN,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CACf,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CACvG;SACA,GAAG,CACH,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CACjB,CAAC;QACA,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI;QACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACvD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;QAChF,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CACjB,kBAAkB,CACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EACjC,OAAO,EACP,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CACZ;QACF,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QAC3E,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC3B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QACnF,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;KAC7F,CAA0D,CAC5D;CACF,CAAC"}
|
|
@@ -1,12 +1,27 @@
|
|
|
1
|
-
import { FARMING_ATTRIBUTE_SHARDS, getShardFortune, getShardLevel, getShardsForNextLevel, } from '../../constants/attributes.js';
|
|
2
|
-
import { ANITA_FORTUNE_UPGRADE, COMMUNITY_CENTER_UPGRADE, FARMING_LEVEL, PEST_BESTIARY_SOURCE, REFINED_TRUFFLE_SOURCE, UNLOCKED_PLOTS, } from '../../constants/specific.js';
|
|
1
|
+
import { FARMING_ATTRIBUTE_SHARDS, getShardFortune, getShardLevel, getShardsForLevel, getShardsForNextLevel, } from '../../constants/attributes.js';
|
|
2
|
+
import { ANITA_FORTUNE_UPGRADE, COMMUNITY_CENTER_UPGRADE, FARMING_LEVEL, PEST_BESTIARY_SOURCE, REFINED_TRUFFLE_SOURCE, UNLOCKED_PLOTS, WRIGGLING_LARVA_SOURCE, } from '../../constants/specific.js';
|
|
3
3
|
import { Stat } from '../../constants/stats.js';
|
|
4
4
|
import { UpgradeAction, UpgradeCategory } from '../../constants/upgrades.js';
|
|
5
5
|
import { FarmingAccessory } from '../../fortune/farmingaccessory.js';
|
|
6
6
|
import { FARMING_ACCESSORIES_INFO } from '../../items/accessories.js';
|
|
7
7
|
import { getNextPlotCost } from '../../util/garden.js';
|
|
8
8
|
import { fortuneFromPestBestiary } from '../../util/pests.js';
|
|
9
|
+
import { getFortune } from '../getfortune.js';
|
|
9
10
|
import { getSourceProgress } from '../getsourceprogress.js';
|
|
11
|
+
function getLevelDeltaStats(currentLevel, nextLevel, source) {
|
|
12
|
+
const result = {};
|
|
13
|
+
// Always include FarmingFortune
|
|
14
|
+
const ff = (source.fortunePerLevel ?? 0) * (nextLevel - currentLevel);
|
|
15
|
+
if (ff !== 0)
|
|
16
|
+
result[Stat.FarmingFortune] = ff;
|
|
17
|
+
for (const [k, per] of Object.entries(source.statsPerLevel ?? {})) {
|
|
18
|
+
const stat = k;
|
|
19
|
+
const diff = (per ?? 0) * (nextLevel - currentLevel);
|
|
20
|
+
if (diff !== 0)
|
|
21
|
+
result[stat] = diff;
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
10
25
|
export const GENERAL_FORTUNE_SOURCES = [
|
|
11
26
|
{
|
|
12
27
|
name: FARMING_LEVEL.name,
|
|
@@ -16,6 +31,8 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
16
31
|
current: (player) => {
|
|
17
32
|
return (player.options.farmingLevel ?? 0) * FARMING_LEVEL.fortunePerLevel;
|
|
18
33
|
},
|
|
34
|
+
maxStat: (_player, stat) => getFortune(FARMING_LEVEL.maxLevel, FARMING_LEVEL, stat),
|
|
35
|
+
currentStat: (player, stat) => getFortune(player.options.farmingLevel, FARMING_LEVEL, stat),
|
|
19
36
|
upgrades: (player) => {
|
|
20
37
|
const current = player.options.farmingLevel ?? 0;
|
|
21
38
|
if (current < 50 || current >= FARMING_LEVEL.maxLevel)
|
|
@@ -23,14 +40,21 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
23
40
|
const nextCost = FARMING_LEVEL.upgradeCosts?.[current + 1];
|
|
24
41
|
if (!nextCost)
|
|
25
42
|
return [];
|
|
43
|
+
const stats = getLevelDeltaStats(current, current + 1, FARMING_LEVEL);
|
|
26
44
|
return [
|
|
27
45
|
{
|
|
28
46
|
title: FARMING_LEVEL.name + ' ' + (current + 1),
|
|
29
|
-
increase:
|
|
47
|
+
increase: stats[Stat.FarmingFortune] ?? 0,
|
|
48
|
+
stats,
|
|
30
49
|
action: UpgradeAction.LevelUp,
|
|
31
50
|
category: UpgradeCategory.Skill,
|
|
32
51
|
wiki: FARMING_LEVEL.wiki,
|
|
33
52
|
cost: nextCost,
|
|
53
|
+
meta: {
|
|
54
|
+
type: 'skill',
|
|
55
|
+
key: 'farmingLevel',
|
|
56
|
+
value: current + 1,
|
|
57
|
+
},
|
|
34
58
|
},
|
|
35
59
|
];
|
|
36
60
|
},
|
|
@@ -55,8 +79,8 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
55
79
|
.flatMap((shard) => shard.upgrades?.(player))
|
|
56
80
|
.filter(Boolean);
|
|
57
81
|
},
|
|
58
|
-
progress: (player) => {
|
|
59
|
-
return getSourceProgress(player, ATTRIBUTE_FORTUNE_SOURCES);
|
|
82
|
+
progress: (player, stats) => {
|
|
83
|
+
return getSourceProgress(player, ATTRIBUTE_FORTUNE_SOURCES, false, stats);
|
|
60
84
|
},
|
|
61
85
|
},
|
|
62
86
|
{
|
|
@@ -76,6 +100,8 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
76
100
|
current: (player) => {
|
|
77
101
|
return (player.options.anitaBonus ?? 0) * ANITA_FORTUNE_UPGRADE.fortunePerLevel;
|
|
78
102
|
},
|
|
103
|
+
maxStat: (_player, stat) => getFortune(ANITA_FORTUNE_UPGRADE.maxLevel, ANITA_FORTUNE_UPGRADE, stat),
|
|
104
|
+
currentStat: (player, stat) => getFortune(player.options.anitaBonus, ANITA_FORTUNE_UPGRADE, stat),
|
|
79
105
|
upgrades: (player) => {
|
|
80
106
|
const current = player.options.anitaBonus ?? 0;
|
|
81
107
|
if (current >= ANITA_FORTUNE_UPGRADE.maxLevel)
|
|
@@ -83,14 +109,21 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
83
109
|
const nextCost = ANITA_FORTUNE_UPGRADE.upgradeCosts?.[current + 1];
|
|
84
110
|
if (!nextCost)
|
|
85
111
|
return [];
|
|
112
|
+
const stats = getLevelDeltaStats(current, current + 1, ANITA_FORTUNE_UPGRADE);
|
|
86
113
|
return [
|
|
87
114
|
{
|
|
88
115
|
title: ANITA_FORTUNE_UPGRADE.name,
|
|
89
|
-
increase:
|
|
116
|
+
increase: stats[Stat.FarmingFortune] ?? 0,
|
|
117
|
+
stats,
|
|
90
118
|
action: UpgradeAction.Upgrade,
|
|
91
119
|
category: UpgradeCategory.Anita,
|
|
92
120
|
wiki: ANITA_FORTUNE_UPGRADE.wiki,
|
|
93
121
|
cost: nextCost,
|
|
122
|
+
meta: {
|
|
123
|
+
type: 'skill',
|
|
124
|
+
key: 'anitaBonus',
|
|
125
|
+
value: current + 1,
|
|
126
|
+
},
|
|
94
127
|
},
|
|
95
128
|
];
|
|
96
129
|
},
|
|
@@ -103,17 +136,27 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
103
136
|
current: (player) => {
|
|
104
137
|
return (player.options.plots?.length ?? player.options.plotsUnlocked ?? 0) * UNLOCKED_PLOTS.fortunePerLevel;
|
|
105
138
|
},
|
|
139
|
+
maxStat: (_player, stat) => getFortune(UNLOCKED_PLOTS.maxLevel, UNLOCKED_PLOTS, stat),
|
|
140
|
+
currentStat: (player, stat) => getFortune(player.options.plots?.length ?? player.options.plotsUnlocked, UNLOCKED_PLOTS, stat),
|
|
106
141
|
upgrades: (player) => {
|
|
107
142
|
const plotUpgrade = getNextPlotCost(player.options.plots ?? []);
|
|
108
143
|
if (!plotUpgrade)
|
|
109
144
|
return [];
|
|
145
|
+
const current = player.options.plots?.length ?? player.options.plotsUnlocked ?? 0;
|
|
146
|
+
const stats = getLevelDeltaStats(current, current + 1, UNLOCKED_PLOTS);
|
|
110
147
|
return [
|
|
111
148
|
{
|
|
112
149
|
title: 'Plot ' + plotUpgrade.plot?.name,
|
|
113
|
-
increase:
|
|
150
|
+
increase: stats[Stat.FarmingFortune] ?? 0,
|
|
151
|
+
stats,
|
|
114
152
|
action: UpgradeAction.Purchase,
|
|
115
153
|
category: UpgradeCategory.Plot,
|
|
116
154
|
cost: plotUpgrade.cost,
|
|
155
|
+
meta: {
|
|
156
|
+
type: 'plot',
|
|
157
|
+
id: plotUpgrade.plotId,
|
|
158
|
+
value: current + 1,
|
|
159
|
+
},
|
|
117
160
|
},
|
|
118
161
|
];
|
|
119
162
|
},
|
|
@@ -127,19 +170,28 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
127
170
|
current: (player) => {
|
|
128
171
|
return (player.options.communityCenter ?? 0) * COMMUNITY_CENTER_UPGRADE.fortunePerLevel;
|
|
129
172
|
},
|
|
173
|
+
maxStat: (_player, stat) => getFortune(COMMUNITY_CENTER_UPGRADE.maxLevel, COMMUNITY_CENTER_UPGRADE, stat),
|
|
174
|
+
currentStat: (player, stat) => getFortune(player.options.communityCenter, COMMUNITY_CENTER_UPGRADE, stat),
|
|
130
175
|
upgrades: (player) => {
|
|
131
176
|
const current = player.options.communityCenter ?? 0;
|
|
132
177
|
if (current >= COMMUNITY_CENTER_UPGRADE.maxLevel)
|
|
133
178
|
return [];
|
|
179
|
+
const stats = getLevelDeltaStats(current, current + 1, COMMUNITY_CENTER_UPGRADE);
|
|
134
180
|
return [
|
|
135
181
|
{
|
|
136
182
|
title: COMMUNITY_CENTER_UPGRADE.name,
|
|
137
|
-
increase:
|
|
183
|
+
increase: stats[Stat.FarmingFortune] ?? 0,
|
|
184
|
+
stats,
|
|
138
185
|
action: UpgradeAction.Upgrade,
|
|
139
186
|
repeatable: COMMUNITY_CENTER_UPGRADE.maxLevel - current,
|
|
140
187
|
api: false,
|
|
141
188
|
category: UpgradeCategory.CommunityCenter,
|
|
142
189
|
wiki: COMMUNITY_CENTER_UPGRADE.wiki,
|
|
190
|
+
meta: {
|
|
191
|
+
type: 'skill',
|
|
192
|
+
key: 'communityCenter',
|
|
193
|
+
value: current + 1,
|
|
194
|
+
},
|
|
143
195
|
},
|
|
144
196
|
];
|
|
145
197
|
},
|
|
@@ -181,6 +233,9 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
181
233
|
{
|
|
182
234
|
title: cropie.name,
|
|
183
235
|
increase: cropie.baseStats?.[Stat.FarmingFortune] ?? 0,
|
|
236
|
+
stats: {
|
|
237
|
+
[Stat.FarmingFortune]: cropie.baseStats?.[Stat.FarmingFortune] ?? 0,
|
|
238
|
+
},
|
|
184
239
|
action: UpgradeAction.Purchase,
|
|
185
240
|
item: 'CROPIE_TALISMAN',
|
|
186
241
|
category: UpgradeCategory.Item,
|
|
@@ -190,6 +245,11 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
190
245
|
CROPIE_TALISMAN: 1,
|
|
191
246
|
},
|
|
192
247
|
},
|
|
248
|
+
meta: {
|
|
249
|
+
type: 'buy_item',
|
|
250
|
+
id: 'CROPIE_TALISMAN',
|
|
251
|
+
},
|
|
252
|
+
conflictKey: 'accessory:CROPIE_TALISMAN',
|
|
193
253
|
},
|
|
194
254
|
];
|
|
195
255
|
}
|
|
@@ -204,6 +264,8 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
204
264
|
current: (player) => {
|
|
205
265
|
return (player.options.refinedTruffles ?? 0) * REFINED_TRUFFLE_SOURCE.fortunePerLevel;
|
|
206
266
|
},
|
|
267
|
+
maxStat: (_player, stat) => getFortune(REFINED_TRUFFLE_SOURCE.maxLevel, REFINED_TRUFFLE_SOURCE, stat),
|
|
268
|
+
currentStat: (player, stat) => getFortune(player.options.refinedTruffles ?? 0, REFINED_TRUFFLE_SOURCE, stat),
|
|
207
269
|
upgrades: (player) => {
|
|
208
270
|
const consumed = player.options.refinedTruffles ?? 0;
|
|
209
271
|
if (consumed >= 5)
|
|
@@ -212,6 +274,9 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
212
274
|
{
|
|
213
275
|
title: 'Refined Dark Cacao Truffle',
|
|
214
276
|
increase: REFINED_TRUFFLE_SOURCE.fortunePerLevel,
|
|
277
|
+
stats: {
|
|
278
|
+
[Stat.FarmingFortune]: REFINED_TRUFFLE_SOURCE.fortunePerLevel,
|
|
279
|
+
},
|
|
215
280
|
action: UpgradeAction.Consume,
|
|
216
281
|
repeatable: 5 - consumed,
|
|
217
282
|
wiki: REFINED_TRUFFLE_SOURCE.wiki,
|
|
@@ -221,6 +286,50 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
221
286
|
REFINED_DARK_CACAO_TRUFFLE: 1,
|
|
222
287
|
},
|
|
223
288
|
},
|
|
289
|
+
meta: {
|
|
290
|
+
type: 'setting',
|
|
291
|
+
key: 'refinedTruffles',
|
|
292
|
+
value: consumed + 1,
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
];
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
name: WRIGGLING_LARVA_SOURCE.name,
|
|
300
|
+
wiki: () => WRIGGLING_LARVA_SOURCE.wiki,
|
|
301
|
+
exists: () => true,
|
|
302
|
+
max: () => 0,
|
|
303
|
+
current: () => 0,
|
|
304
|
+
maxStat: (_player, stat) => getFortune(WRIGGLING_LARVA_SOURCE.maxLevel, WRIGGLING_LARVA_SOURCE, stat),
|
|
305
|
+
currentStat: (player, stat) => getFortune(player.options.wrigglingLarva ?? 0, WRIGGLING_LARVA_SOURCE, stat),
|
|
306
|
+
upgrades: (player, stats) => {
|
|
307
|
+
if (!stats?.includes(Stat.BonusPestChance))
|
|
308
|
+
return [];
|
|
309
|
+
const consumed = player.options.wrigglingLarva ?? 0;
|
|
310
|
+
if (consumed >= 5)
|
|
311
|
+
return [];
|
|
312
|
+
return [
|
|
313
|
+
{
|
|
314
|
+
title: 'Wriggling Larva',
|
|
315
|
+
increase: 0,
|
|
316
|
+
stats: {
|
|
317
|
+
[Stat.BonusPestChance]: WRIGGLING_LARVA_SOURCE.statsPerLevel?.[Stat.BonusPestChance] ?? 0,
|
|
318
|
+
},
|
|
319
|
+
action: UpgradeAction.Consume,
|
|
320
|
+
repeatable: 5 - consumed,
|
|
321
|
+
wiki: WRIGGLING_LARVA_SOURCE.wiki,
|
|
322
|
+
category: UpgradeCategory.Item,
|
|
323
|
+
cost: {
|
|
324
|
+
items: {
|
|
325
|
+
WRIGGLING_LARVA: 1,
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
meta: {
|
|
329
|
+
type: 'setting',
|
|
330
|
+
key: 'wrigglingLarva',
|
|
331
|
+
value: consumed + 1,
|
|
332
|
+
},
|
|
224
333
|
},
|
|
225
334
|
];
|
|
226
335
|
},
|
|
@@ -256,16 +365,68 @@ export const GENERAL_FORTUNE_SOURCES = [
|
|
|
256
365
|
{
|
|
257
366
|
title: 'Relic of Power',
|
|
258
367
|
increase: 0,
|
|
368
|
+
stats: {
|
|
369
|
+
[Stat.FarmingFortune]: 0,
|
|
370
|
+
},
|
|
259
371
|
action: UpgradeAction.Purchase,
|
|
260
372
|
purchase: 'POWER_RELIC',
|
|
261
373
|
category: UpgradeCategory.Item,
|
|
262
374
|
wiki: FARMING_ACCESSORIES_INFO.POWER_RELIC?.wiki,
|
|
263
375
|
cost: FARMING_ACCESSORIES_INFO.POWER_RELIC?.cost,
|
|
376
|
+
meta: {
|
|
377
|
+
type: 'buy_item',
|
|
378
|
+
id: 'POWER_RELIC',
|
|
379
|
+
},
|
|
380
|
+
conflictKey: 'accessory:POWER_RELIC',
|
|
264
381
|
},
|
|
265
382
|
];
|
|
266
383
|
return accessory.getUpgrades();
|
|
267
384
|
},
|
|
268
385
|
},
|
|
386
|
+
{
|
|
387
|
+
name: 'Magic 8 Ball',
|
|
388
|
+
exists: () => true,
|
|
389
|
+
wiki: () => 'https://wiki.hypixel.net/Magic_8_Ball',
|
|
390
|
+
max: () => 25,
|
|
391
|
+
active: () => {
|
|
392
|
+
return {
|
|
393
|
+
active: true,
|
|
394
|
+
reason: 'Magic 8 Ball only has a 20% chance to be active each season.',
|
|
395
|
+
};
|
|
396
|
+
},
|
|
397
|
+
current: (player) => {
|
|
398
|
+
const accessory = player.accessories.find((a) => a.info.skyblockId === 'MAGIC_8_BALL');
|
|
399
|
+
return accessory ? 25 : 0;
|
|
400
|
+
},
|
|
401
|
+
upgrades: (player) => {
|
|
402
|
+
const accessory = player.accessories.find((a) => a.info.skyblockId === 'MAGIC_8_BALL');
|
|
403
|
+
if (!accessory)
|
|
404
|
+
return [
|
|
405
|
+
{
|
|
406
|
+
title: 'Magic 8 Ball',
|
|
407
|
+
increase: 25 * 0.2,
|
|
408
|
+
stats: {
|
|
409
|
+
[Stat.FarmingFortune]: 25 * 0.2,
|
|
410
|
+
},
|
|
411
|
+
action: UpgradeAction.Purchase,
|
|
412
|
+
purchase: 'MAGIC_8_BALL',
|
|
413
|
+
category: UpgradeCategory.Item,
|
|
414
|
+
wiki: 'https://wiki.hypixel.net/Magic_8_Ball',
|
|
415
|
+
cost: {
|
|
416
|
+
items: {
|
|
417
|
+
MAGIC_8_BALL: 1,
|
|
418
|
+
},
|
|
419
|
+
},
|
|
420
|
+
meta: {
|
|
421
|
+
type: 'buy_item',
|
|
422
|
+
id: 'MAGIC_8_BALL',
|
|
423
|
+
},
|
|
424
|
+
conflictKey: 'accessory:MAGIC_8_BALL',
|
|
425
|
+
},
|
|
426
|
+
];
|
|
427
|
+
return [];
|
|
428
|
+
},
|
|
429
|
+
},
|
|
269
430
|
];
|
|
270
431
|
export const ATTRIBUTE_FORTUNE_SOURCES = Object.entries(FARMING_ATTRIBUTE_SHARDS)
|
|
271
432
|
.filter((a) => a[1].effect === 'fortune')
|
|
@@ -311,6 +472,9 @@ function mapShardSource(id, shard) {
|
|
|
311
472
|
title: shard.name.replace('Shard', level.toString()),
|
|
312
473
|
api: false,
|
|
313
474
|
increase: nextFortune - currentFortune,
|
|
475
|
+
stats: {
|
|
476
|
+
[Stat.FarmingFortune]: nextFortune - currentFortune,
|
|
477
|
+
},
|
|
314
478
|
action: UpgradeAction.LevelUp,
|
|
315
479
|
category: UpgradeCategory.Attribute,
|
|
316
480
|
// wiki: shard.wiki, // Wiki page doesn't exist yet
|
|
@@ -319,6 +483,11 @@ function mapShardSource(id, shard) {
|
|
|
319
483
|
[shard.skyblockId]: nextCost,
|
|
320
484
|
},
|
|
321
485
|
},
|
|
486
|
+
meta: {
|
|
487
|
+
type: 'attribute',
|
|
488
|
+
key: id,
|
|
489
|
+
value: getShardsForLevel(shard.rarity, level),
|
|
490
|
+
},
|
|
322
491
|
},
|
|
323
492
|
];
|
|
324
493
|
},
|