farming-weight 0.14.2 → 0.15.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/README.md +45 -18
- package/dist/constants/attributes.d.ts +12 -7
- package/dist/constants/attributes.js +17 -39
- package/dist/constants/attributes.js.map +1 -1
- package/dist/constants/chips.d.ts +1 -6
- package/dist/constants/chips.js +11 -15
- package/dist/constants/chips.js.map +1 -1
- package/dist/constants/crops.d.ts +28 -4
- package/dist/constants/crops.js +65 -2
- package/dist/constants/crops.js.map +1 -1
- package/dist/constants/enchants.d.ts +1 -1
- package/dist/constants/enchants.js +117 -68
- package/dist/constants/enchants.js.map +1 -1
- package/dist/constants/garden.js +152 -137
- package/dist/constants/garden.js.map +1 -1
- package/dist/constants/pests.d.ts +3 -2
- package/dist/constants/pests.js +5 -0
- package/dist/constants/pests.js.map +1 -1
- package/dist/constants/reforge-types.d.ts +57 -0
- package/dist/constants/reforge-types.js +40 -0
- package/dist/constants/reforge-types.js.map +1 -0
- package/dist/constants/reforges.d.ts +8 -55
- package/dist/constants/reforges.js +10 -635
- package/dist/constants/reforges.js.map +1 -1
- package/dist/constants/specific.js +11 -11
- package/dist/constants/specific.js.map +1 -1
- package/dist/constants/stats.d.ts +1 -0
- package/dist/constants/stats.js +2 -0
- package/dist/constants/stats.js.map +1 -1
- package/dist/constants/tempfortune.d.ts +5 -0
- package/dist/constants/tempfortune.js +36 -7
- package/dist/constants/tempfortune.js.map +1 -1
- package/dist/constants/upgrades.d.ts +36 -3
- package/dist/constants/upgrades.js +12 -0
- package/dist/constants/upgrades.js.map +1 -1
- package/dist/crops/special.d.ts +1 -1
- package/dist/crops/special.js.map +1 -1
- package/dist/effects/environment.d.ts +12 -0
- package/dist/effects/environment.js +33 -0
- package/dist/effects/environment.js.map +1 -0
- package/dist/effects/index.d.ts +4 -0
- package/dist/effects/index.js +5 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/matcher.d.ts +23 -0
- package/dist/effects/matcher.js +108 -0
- package/dist/effects/matcher.js.map +1 -0
- package/dist/effects/resolver.d.ts +63 -0
- package/dist/effects/resolver.js +239 -0
- package/dist/effects/resolver.js.map +1 -0
- package/dist/effects/summary.d.ts +5 -0
- package/dist/effects/summary.js +21 -0
- package/dist/effects/summary.js.map +1 -0
- package/dist/effects/types.d.ts +147 -0
- package/dist/effects/types.js +9 -0
- package/dist/effects/types.js.map +1 -0
- package/dist/features/composter/upgrades.js +5 -5
- package/dist/features/composter/upgrades.js.map +1 -1
- package/dist/fortune/farmingaccessory.d.ts +9 -1
- package/dist/fortune/farmingaccessory.js +24 -13
- package/dist/fortune/farmingaccessory.js.map +1 -1
- package/dist/fortune/farmingarmor.d.ts +21 -10
- package/dist/fortune/farmingarmor.js +89 -29
- package/dist/fortune/farmingarmor.js.map +1 -1
- package/dist/fortune/farmingequipment.d.ts +10 -1
- package/dist/fortune/farmingequipment.js +44 -11
- package/dist/fortune/farmingequipment.js.map +1 -1
- package/dist/fortune/farmingpet.d.ts +16 -0
- package/dist/fortune/farmingpet.js +207 -0
- package/dist/fortune/farmingpet.js.map +1 -1
- package/dist/fortune/farmingtool.d.ts +13 -6
- package/dist/fortune/farmingtool.js +60 -44
- package/dist/fortune/farmingtool.js.map +1 -1
- package/dist/fortune/lotuspiecebonus.d.ts +6 -0
- package/dist/fortune/lotuspiecebonus.js +20 -0
- package/dist/fortune/lotuspiecebonus.js.map +1 -0
- package/dist/fortune/upgradeable.d.ts +2 -4
- package/dist/fortune/upgradeablebase.d.ts +2 -4
- package/dist/fortune/upgradeablebase.js +4 -10
- package/dist/fortune/upgradeablebase.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/items/accessories/base.d.ts +3 -0
- package/dist/items/accessories/base.js +4 -0
- package/dist/items/accessories/base.js.map +1 -0
- package/dist/items/accessories/fermento-family.d.ts +91 -0
- package/dist/items/accessories/fermento-family.js +125 -0
- package/dist/items/accessories/fermento-family.js.map +1 -0
- package/dist/items/accessories/freshly-baked.d.ts +80 -0
- package/dist/items/accessories/freshly-baked.js +119 -0
- package/dist/items/accessories/freshly-baked.js.map +1 -0
- package/dist/items/accessories/index.d.ts +25 -0
- package/dist/items/accessories/index.js +25 -0
- package/dist/items/accessories/index.js.map +1 -0
- package/dist/items/accessories/power-relic.d.ts +18 -0
- package/dist/items/accessories/power-relic.js +37 -0
- package/dist/items/accessories/power-relic.js.map +1 -0
- package/dist/items/accessories/special.d.ts +24 -0
- package/dist/items/accessories/special.js +41 -0
- package/dist/items/accessories/special.js.map +1 -0
- package/dist/items/accessories.d.ts +2 -3
- package/dist/items/accessories.js +1 -137
- package/dist/items/accessories.js.map +1 -1
- package/dist/items/armor/biohazard.js +4 -4
- package/dist/items/armor/biohazard.js.map +1 -1
- package/dist/items/armor/cropie.d.ts +4 -0
- package/dist/items/armor/cropie.js +10 -4
- package/dist/items/armor/cropie.js.map +1 -1
- package/dist/items/armor/farm.js +4 -4
- package/dist/items/armor/farm.js.map +1 -1
- package/dist/items/armor/fermento.d.ts +4 -0
- package/dist/items/armor/fermento.js +10 -4
- package/dist/items/armor/fermento.js.map +1 -1
- package/dist/items/armor/groups.d.ts +2 -0
- package/dist/items/armor/groups.js +17 -0
- package/dist/items/armor/groups.js.map +1 -0
- package/dist/items/armor/helianthus.js +4 -4
- package/dist/items/armor/helianthus.js.map +1 -1
- package/dist/items/armor/melon.d.ts +4 -0
- package/dist/items/armor/melon.js +10 -4
- package/dist/items/armor/melon.js.map +1 -1
- package/dist/items/armor/mushroom.js +4 -4
- package/dist/items/armor/mushroom.js.map +1 -1
- package/dist/items/armor/rabbit.js +4 -4
- package/dist/items/armor/rabbit.js.map +1 -1
- package/dist/items/armor/special.js +4 -4
- package/dist/items/armor/special.js.map +1 -1
- package/dist/items/armor/squash.d.ts +4 -0
- package/dist/items/armor/squash.js +10 -4
- package/dist/items/armor/squash.js.map +1 -1
- package/dist/items/equipment/blossom.js +4 -4
- package/dist/items/equipment/blossom.js.map +1 -1
- package/dist/items/equipment/lotus.js +4 -4
- package/dist/items/equipment/lotus.js.map +1 -1
- package/dist/items/equipment/pesthunter.js +4 -4
- package/dist/items/equipment/pesthunter.js.map +1 -1
- package/dist/items/equipment/special.js +2 -2
- package/dist/items/equipment/special.js.map +1 -1
- package/dist/items/gems/base.d.ts +19 -0
- package/dist/items/gems/base.js +60 -0
- package/dist/items/gems/base.js.map +1 -0
- package/dist/items/gems/index.d.ts +1 -0
- package/dist/items/gems/index.js +2 -0
- package/dist/items/gems/index.js.map +1 -0
- package/dist/items/pets/bee.d.ts +9 -0
- package/dist/items/pets/bee.js +33 -1
- package/dist/items/pets/bee.js.map +1 -1
- package/dist/items/pets/chicken.js +1 -1
- package/dist/items/pets/chicken.js.map +1 -1
- package/dist/items/pets/elephant.js +1 -1
- package/dist/items/pets/elephant.js.map +1 -1
- package/dist/items/pets/hedgehog.d.ts +5 -0
- package/dist/items/pets/hedgehog.js +6 -1
- package/dist/items/pets/hedgehog.js.map +1 -1
- package/dist/items/pets/mooshroom-cow.js +1 -1
- package/dist/items/pets/mooshroom-cow.js.map +1 -1
- package/dist/items/pets/mosquito.js +1 -1
- package/dist/items/pets/mosquito.js.map +1 -1
- package/dist/items/pets/pig.d.ts +5 -0
- package/dist/items/pets/pig.js +19 -14
- package/dist/items/pets/pig.js.map +1 -1
- package/dist/items/pets/rabbit.js +1 -1
- package/dist/items/pets/rabbit.js.map +1 -1
- package/dist/items/pets/rose-dragon.js +12 -14
- package/dist/items/pets/rose-dragon.js.map +1 -1
- package/dist/items/pets/slug.js +1 -1
- package/dist/items/pets/slug.js.map +1 -1
- package/dist/items/pets.d.ts +1 -1
- package/dist/items/pets.js +18 -4
- package/dist/items/pets.js.map +1 -1
- package/dist/items/reforges/base.d.ts +18 -0
- package/dist/items/reforges/base.js +54 -0
- package/dist/items/reforges/base.js.map +1 -0
- package/dist/items/reforges/blessed.d.ts +7 -0
- package/dist/items/reforges/blessed.js +90 -0
- package/dist/items/reforges/blessed.js.map +1 -0
- package/dist/items/reforges/blooming.d.ts +4 -0
- package/dist/items/reforges/blooming.js +43 -0
- package/dist/items/reforges/blooming.js.map +1 -0
- package/dist/items/reforges/bountiful.d.ts +4 -0
- package/dist/items/reforges/bountiful.js +63 -0
- package/dist/items/reforges/bountiful.js.map +1 -0
- package/dist/items/reforges/bustling.d.ts +4 -0
- package/dist/items/reforges/bustling.js +26 -0
- package/dist/items/reforges/bustling.js.map +1 -0
- package/dist/items/reforges/deep-fried.d.ts +7 -0
- package/dist/items/reforges/deep-fried.js +38 -0
- package/dist/items/reforges/deep-fried.js.map +1 -0
- package/dist/items/reforges/earthy.d.ts +4 -0
- package/dist/items/reforges/earthy.js +26 -0
- package/dist/items/reforges/earthy.js.map +1 -0
- package/dist/items/reforges/green-thumb.d.ts +4 -0
- package/dist/items/reforges/green-thumb.js +43 -0
- package/dist/items/reforges/green-thumb.js.map +1 -0
- package/dist/items/reforges/index.d.ts +16 -0
- package/dist/items/reforges/index.js +43 -0
- package/dist/items/reforges/index.js.map +1 -0
- package/dist/items/reforges/mantid.d.ts +4 -0
- package/dist/items/reforges/mantid.js +43 -0
- package/dist/items/reforges/mantid.js.map +1 -0
- package/dist/items/reforges/mossy.d.ts +4 -0
- package/dist/items/reforges/mossy.js +44 -0
- package/dist/items/reforges/mossy.js.map +1 -0
- package/dist/items/reforges/overpriced.d.ts +4 -0
- package/dist/items/reforges/overpriced.js +43 -0
- package/dist/items/reforges/overpriced.js.map +1 -0
- package/dist/items/reforges/robust.d.ts +4 -0
- package/dist/items/reforges/robust.js +22 -0
- package/dist/items/reforges/robust.js.map +1 -0
- package/dist/items/reforges/rooted.d.ts +4 -0
- package/dist/items/reforges/rooted.js +43 -0
- package/dist/items/reforges/rooted.js.map +1 -0
- package/dist/items/reforges/squeaky.d.ts +4 -0
- package/dist/items/reforges/squeaky.js +47 -0
- package/dist/items/reforges/squeaky.js.map +1 -0
- package/dist/items/sources/attributes.d.ts +119 -0
- package/dist/items/sources/attributes.js +285 -0
- package/dist/items/sources/attributes.js.map +1 -0
- package/dist/items/sources/base.d.ts +33 -0
- package/dist/items/sources/base.js +13 -0
- package/dist/items/sources/base.js.map +1 -0
- package/dist/items/sources/chips.d.ts +54 -0
- package/dist/items/sources/chips.js +100 -0
- package/dist/items/sources/chips.js.map +1 -0
- package/dist/items/sources/effects-util.d.ts +10 -0
- package/dist/items/sources/effects-util.js +35 -0
- package/dist/items/sources/effects-util.js.map +1 -0
- package/dist/items/sources/enchants.d.ts +28 -0
- package/dist/items/sources/enchants.js +87 -0
- package/dist/items/sources/enchants.js.map +1 -0
- package/dist/items/sources/gems.d.ts +9 -0
- package/dist/items/sources/gems.js +35 -0
- package/dist/items/sources/gems.js.map +1 -0
- package/dist/items/sources/index.d.ts +6 -0
- package/dist/items/sources/index.js +7 -0
- package/dist/items/sources/index.js.map +1 -0
- package/dist/items/sources/reforges.d.ts +8 -0
- package/dist/items/sources/reforges.js +10 -0
- package/dist/items/sources/reforges.js.map +1 -0
- package/dist/items/tools/cactus-knife.js +6 -6
- package/dist/items/tools/cactus-knife.js.map +1 -1
- package/dist/items/tools/cocoa-chopper.js +6 -6
- package/dist/items/tools/cocoa-chopper.js.map +1 -1
- package/dist/items/tools/dicers.js +6 -6
- package/dist/items/tools/dicers.js.map +1 -1
- package/dist/items/tools/fungi-cutter.js +6 -6
- package/dist/items/tools/fungi-cutter.js.map +1 -1
- package/dist/items/tools/mathematical-hoes.d.ts +5 -5
- package/dist/items/tools/mathematical-hoes.js +26 -26
- package/dist/items/tools/mathematical-hoes.js.map +1 -1
- package/dist/items/tools/special.js +2 -2
- package/dist/items/tools/special.js.map +1 -1
- package/dist/items/types/pets.d.ts +0 -2
- package/dist/player/player.d.ts +60 -7
- package/dist/player/player.js +318 -128
- package/dist/player/player.js.map +1 -1
- package/dist/player/playeroptions.d.ts +25 -1
- package/dist/player/playeroptions.js.map +1 -1
- package/dist/upgrades/enchantupgrades.js +22 -8
- package/dist/upgrades/enchantupgrades.js.map +1 -1
- package/dist/upgrades/getsourceprogress.js +7 -0
- package/dist/upgrades/getsourceprogress.js.map +1 -1
- package/dist/upgrades/groups.d.ts +3 -0
- package/dist/upgrades/groups.js +86 -0
- package/dist/upgrades/groups.js.map +1 -0
- package/dist/upgrades/itemcatalog.d.ts +3 -0
- package/dist/upgrades/itemcatalog.js +21 -0
- package/dist/upgrades/itemcatalog.js.map +1 -0
- package/dist/upgrades/itemregistry.d.ts +1 -2
- package/dist/upgrades/itemregistry.js +23 -3
- package/dist/upgrades/itemregistry.js.map +1 -1
- package/dist/upgrades/sources/accessorysources.js +1 -1
- package/dist/upgrades/sources/accessorysources.js.map +1 -1
- package/dist/upgrades/sources/armorsetsources.js +16 -16
- package/dist/upgrades/sources/armorsetsources.js.map +1 -1
- package/dist/upgrades/sources/cropsources.js +10 -5
- package/dist/upgrades/sources/cropsources.js.map +1 -1
- package/dist/upgrades/sources/dynamicfortunesources.d.ts +5 -2
- package/dist/upgrades/sources/effectsources.d.ts +4 -0
- package/dist/upgrades/sources/effectsources.js +60 -0
- package/dist/upgrades/sources/effectsources.js.map +1 -0
- package/dist/upgrades/sources/gearsources.js +33 -8
- package/dist/upgrades/sources/gearsources.js.map +1 -1
- package/dist/upgrades/sources/generalsources.d.ts +3 -2
- package/dist/upgrades/sources/generalsources.js +313 -22
- package/dist/upgrades/sources/generalsources.js.map +1 -1
- package/dist/upgrades/sources/toolsources.js +64 -84
- package/dist/upgrades/sources/toolsources.js.map +1 -1
- package/dist/upgrades/upgradekeys.d.ts +2 -0
- package/dist/upgrades/upgradekeys.js +5 -0
- package/dist/upgrades/upgradekeys.js.map +1 -0
- package/dist/upgrades/upgrades.d.ts +5 -7
- package/dist/upgrades/upgrades.js +142 -43
- package/dist/upgrades/upgrades.js.map +1 -1
- package/dist/upgrades/upgradeutils.d.ts +2 -4
- package/dist/upgrades/upgradeutils.js +26 -6
- package/dist/upgrades/upgradeutils.js.map +1 -1
- package/dist/util/bestiary.d.ts +10 -0
- package/dist/util/bestiary.js +41 -0
- package/dist/util/bestiary.js.map +1 -0
- package/dist/util/enchants.d.ts +6 -0
- package/dist/util/enchants.js +20 -5
- package/dist/util/enchants.js.map +1 -1
- package/dist/util/gems.js +4 -30
- package/dist/util/gems.js.map +1 -1
- package/dist/util/itemstats.d.ts +3 -0
- package/dist/util/itemstats.js +20 -2
- package/dist/util/itemstats.js.map +1 -1
- package/dist/util/ratecalc-effects.d.ts +64 -0
- package/dist/util/ratecalc-effects.js +252 -0
- package/dist/util/ratecalc-effects.js.map +1 -0
- package/dist/util/ratecalc.d.ts +0 -33
- package/dist/util/ratecalc.js +0 -187
- package/dist/util/ratecalc.js.map +1 -1
- package/dist/util/skyblocktime.d.ts +1 -0
- package/dist/util/skyblocktime.js +4 -0
- package/dist/util/skyblocktime.js.map +1 -1
- package/package.json +2 -1
package/dist/util/enchants.js
CHANGED
|
@@ -3,16 +3,27 @@ export function getFortuneFromEnchant(level, enchant, options, crop) {
|
|
|
3
3
|
return getStatFromEnchant(level, enchant, Stat.FarmingFortune, options, crop);
|
|
4
4
|
}
|
|
5
5
|
export function getStatFromEnchant(level, enchant, stat, options, crop) {
|
|
6
|
+
return evalStatFromEnchant(level, enchant, stat, options, crop, false);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Like {@link getStatFromEnchant}, but when no crop is provided, evaluates
|
|
10
|
+
* `cropComputed` contributions with `undefined` so non-crop-bound items (e.g.
|
|
11
|
+
* armor with Sunset) can resolve per-level deltas without a representative crop.
|
|
12
|
+
*/
|
|
13
|
+
export function getOptimisticStatFromEnchant(level, enchant, stat, options, crop) {
|
|
14
|
+
return evalStatFromEnchant(level, enchant, stat, options, crop, true);
|
|
15
|
+
}
|
|
16
|
+
function evalStatFromEnchant(level, enchant, stat, options, crop, optimistic) {
|
|
6
17
|
if (level <= 0)
|
|
7
18
|
return 0;
|
|
8
19
|
const tier = enchant.levels?.[level];
|
|
9
20
|
if (!tier)
|
|
10
21
|
return 0;
|
|
11
|
-
let value = getStatFromTier(tier, stat, options, crop, enchant);
|
|
22
|
+
let value = getStatFromTier(tier, stat, options, crop, enchant, optimistic);
|
|
12
23
|
if (enchant.computedLevels && options) {
|
|
13
24
|
const computedTier = enchant.computedLevels(options)?.[level];
|
|
14
25
|
if (computedTier) {
|
|
15
|
-
value += getStatFromTier(computedTier, stat, options, crop, enchant);
|
|
26
|
+
value += getStatFromTier(computedTier, stat, options, crop, enchant, optimistic);
|
|
16
27
|
}
|
|
17
28
|
}
|
|
18
29
|
return value;
|
|
@@ -27,16 +38,17 @@ export function getMaxStatFromEnchant(enchant, stat, options, crop) {
|
|
|
27
38
|
const tier = enchant.levels?.[enchant.maxLevel];
|
|
28
39
|
if (!tier)
|
|
29
40
|
return 0;
|
|
30
|
-
|
|
41
|
+
const optimistic = !crop;
|
|
42
|
+
let value = getStatFromTier(tier, stat, options, crop, enchant, optimistic);
|
|
31
43
|
if (enchant.computedLevels && options) {
|
|
32
44
|
const computedTier = enchant.computedLevels(options)?.[enchant.maxLevel];
|
|
33
45
|
if (computedTier) {
|
|
34
|
-
value += getStatFromTier(computedTier, stat, options, crop, enchant);
|
|
46
|
+
value += getStatFromTier(computedTier, stat, options, crop, enchant, optimistic);
|
|
35
47
|
}
|
|
36
48
|
}
|
|
37
49
|
return value;
|
|
38
50
|
}
|
|
39
|
-
function getStatFromTier(tier, stat, options, crop, enchant) {
|
|
51
|
+
function getStatFromTier(tier, stat, options, crop, enchant, optimistic = false) {
|
|
40
52
|
if (crop && enchant.cropSpecific && enchant.cropSpecific !== crop) {
|
|
41
53
|
return 0;
|
|
42
54
|
}
|
|
@@ -53,6 +65,9 @@ function getStatFromTier(tier, stat, options, crop, enchant) {
|
|
|
53
65
|
if (crop && (!enchant.cropSpecific || enchant.cropSpecific === crop)) {
|
|
54
66
|
value += tier.cropComputed?.[s]?.(crop, options) ?? 0;
|
|
55
67
|
}
|
|
68
|
+
else if (!crop && optimistic && !enchant.cropSpecific) {
|
|
69
|
+
value += tier.cropComputed?.[s]?.(undefined, options) ?? 0;
|
|
70
|
+
}
|
|
56
71
|
return value;
|
|
57
72
|
}
|
|
58
73
|
//# sourceMappingURL=enchants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enchants.js","sourceRoot":"","sources":["../../src/util/enchants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C,MAAM,UAAU,qBAAqB,CACpC,KAAa,EACb,OAAuB,EACvB,OAAuB,EACvB,IAAW;IAEX,OAAO,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,kBAAkB,CACjC,KAAa,EACb,OAAuB,EACvB,IAAU,EACV,OAAuB,EACvB,IAAW;IAEX,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAEzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"enchants.js","sourceRoot":"","sources":["../../src/util/enchants.ts"],"names":[],"mappings":"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"}
|
package/dist/util/gems.js
CHANGED
|
@@ -1,36 +1,12 @@
|
|
|
1
|
-
import { GEMSTONES } from '../constants/gems.js';
|
|
2
1
|
import { Stat } from '../constants/stats.js';
|
|
3
2
|
import { GemRarity } from '../fortune/item.js';
|
|
3
|
+
import { GEMSTONE_SOURCES } from '../items/gems/index.js';
|
|
4
|
+
import { gemStat } from '../items/sources/gems.js';
|
|
4
5
|
export function getPeridotFortune(rarity, item) {
|
|
5
6
|
return getGemStat(item, Stat.FarmingFortune, rarity);
|
|
6
7
|
}
|
|
7
8
|
export function getGemStat(item, stat, rarity) {
|
|
8
|
-
|
|
9
|
-
if (!gems)
|
|
10
|
-
return 0;
|
|
11
|
-
let sum = 0;
|
|
12
|
-
for (const [slot, gemRarity] of Object.entries(gems)) {
|
|
13
|
-
if (!gemRarity)
|
|
14
|
-
continue;
|
|
15
|
-
// Slot format: GEM_TYPE_INDEX (e.g., RUBY_0, PERIDOT_1)
|
|
16
|
-
const parts = slot.split('_');
|
|
17
|
-
const gemType = parts[0];
|
|
18
|
-
if (!gemType)
|
|
19
|
-
continue;
|
|
20
|
-
const gemstoneInfo = GEMSTONES[gemType];
|
|
21
|
-
if (!gemstoneInfo)
|
|
22
|
-
continue;
|
|
23
|
-
if (gemstoneInfo.stat !== stat)
|
|
24
|
-
continue;
|
|
25
|
-
const rarityStats = gemstoneInfo.stats[gemRarity];
|
|
26
|
-
if (!rarityStats)
|
|
27
|
-
continue;
|
|
28
|
-
const value = rarityStats[rarity];
|
|
29
|
-
if (value) {
|
|
30
|
-
sum += value;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return sum;
|
|
9
|
+
return gemStat(item, stat, rarity);
|
|
34
10
|
}
|
|
35
11
|
export function getPeridotGems(item) {
|
|
36
12
|
const gems = item.gems;
|
|
@@ -41,9 +17,7 @@ export function getPeridotGems(item) {
|
|
|
41
17
|
.map(([, rarity]) => rarity);
|
|
42
18
|
}
|
|
43
19
|
export function getPeridotGemFortune(rarity, gem) {
|
|
44
|
-
|
|
45
|
-
return 0;
|
|
46
|
-
return GEMSTONES['PERIDOT']?.stats[gem]?.[rarity] ?? 0;
|
|
20
|
+
return GEMSTONE_SOURCES.PERIDOT?.getStat(rarity, gem) ?? 0;
|
|
47
21
|
}
|
|
48
22
|
export function getNextGemRarity(gem) {
|
|
49
23
|
switch (gem) {
|
package/dist/util/gems.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gems.js","sourceRoot":"","sources":["../../src/util/gems.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gems.js","sourceRoot":"","sources":["../../src/util/gems.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAqB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,IAAkB;IACnE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAkB,EAAE,IAAU,EAAE,MAAc;IACxE,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAA0B,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAqB;IACzE,OAAO,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAqB;IACrD,QAAQ,GAAG,EAAE,CAAC;QACb,KAAK,IAAI;YACR,OAAO,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,SAAS,CAAC,KAAK;YACnB,OAAO,SAAS,CAAC,MAAM,CAAC;QACzB,KAAK,SAAS,CAAC,MAAM;YACpB,OAAO,SAAS,CAAC,IAAI,CAAC;QACvB,KAAK,SAAS,CAAC,IAAI;YAClB,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC3B,KAAK,SAAS,CAAC,QAAQ;YACtB,OAAO,SAAS,CAAC,OAAO,CAAC;QAC1B,KAAK,SAAS,CAAC,OAAO;YACrB,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACxD,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,IAAI;YACR,OAAO,MAAM,CAAC;QACf,KAAK,SAAS,CAAC,KAAK;YACnB,OAAO,OAAO,CAAC;QAChB,KAAK,SAAS,CAAC,MAAM;YACpB,OAAO,QAAQ,CAAC;QACjB,KAAK,SAAS,CAAC,IAAI;YAClB,OAAO,MAAM,CAAC;QACf,KAAK,SAAS,CAAC,QAAQ;YACtB,OAAO,UAAU,CAAC;QACnB,KAAK,SAAS,CAAC,OAAO;YACrB,OAAO,SAAS,CAAC;IACnB,CAAC;AACF,CAAC"}
|
package/dist/util/itemstats.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { Rarity } from '../constants/reforges.js';
|
|
2
|
+
import type { EliteItemDto } from '../fortune/item.js';
|
|
3
|
+
export declare function getRarityFromItem(item: Pick<EliteItemDto, 'attributes' | 'lore'>, fallback?: Rarity): Rarity;
|
|
4
|
+
export declare function getRarityFromAttribute(rarity?: string | null): Rarity | undefined;
|
|
2
5
|
export declare function getRarityFromLore(lore: string[]): Rarity;
|
|
3
6
|
export declare function nextRarity(rarity: Rarity): Rarity;
|
|
4
7
|
export declare function previousRarity(rarity: Rarity): Rarity;
|
package/dist/util/itemstats.js
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import { Rarity } from '../constants/reforges.js';
|
|
2
|
+
const RARITY_BY_ATTRIBUTE = Object.fromEntries(Object.values(Rarity).flatMap((rarity) => [
|
|
3
|
+
[rarity.toUpperCase(), rarity],
|
|
4
|
+
[rarity.toUpperCase().replaceAll(' ', '_'), rarity],
|
|
5
|
+
]));
|
|
6
|
+
export function getRarityFromItem(item, fallback) {
|
|
7
|
+
const attributeRarity = getRarityFromAttribute(item.attributes?.rarity);
|
|
8
|
+
if (attributeRarity)
|
|
9
|
+
return attributeRarity;
|
|
10
|
+
if (item.lore) {
|
|
11
|
+
return getRarityFromLore(item.lore);
|
|
12
|
+
}
|
|
13
|
+
return fallback ?? Rarity.Common;
|
|
14
|
+
}
|
|
15
|
+
export function getRarityFromAttribute(rarity) {
|
|
16
|
+
if (!rarity)
|
|
17
|
+
return undefined;
|
|
18
|
+
return RARITY_BY_ATTRIBUTE[rarity.toUpperCase()] ?? undefined;
|
|
19
|
+
}
|
|
2
20
|
export function getRarityFromLore(lore) {
|
|
3
21
|
const line = lore.at(-1);
|
|
4
22
|
const found = getRarity(line ?? '', null);
|
|
@@ -29,10 +47,10 @@ function getRarity(line, fallback) {
|
|
|
29
47
|
return Rarity.Mythic;
|
|
30
48
|
case line.includes('DIVINE'):
|
|
31
49
|
return Rarity.Divine;
|
|
32
|
-
case line.includes('SPECIAL'):
|
|
33
|
-
return Rarity.Special;
|
|
34
50
|
case line.includes('VERY SPECIAL'):
|
|
35
51
|
return Rarity.VerySpecial;
|
|
52
|
+
case line.includes('SPECIAL'):
|
|
53
|
+
return Rarity.Special;
|
|
36
54
|
case line.includes('ULTIMATE'):
|
|
37
55
|
return Rarity.Ultimate;
|
|
38
56
|
case line.includes('ADMIN'):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itemstats.js","sourceRoot":"","sources":["../../src/util/itemstats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"itemstats.js","sourceRoot":"","sources":["../../src/util/itemstats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Crop } from '../constants/crops.js';
|
|
2
|
+
import type { AppliedEffect, Effect, EffectEnvironment, EffectsBreakdown } from '../effects/types.js';
|
|
3
|
+
import type { FarmingPet } from '../fortune/farmingpet.js';
|
|
4
|
+
/**
|
|
5
|
+
* New effect-driven detailed-drops calculator.
|
|
6
|
+
*
|
|
7
|
+
* Replaces the legacy `ratesModifier` plumbing for shards/chips/reforges and
|
|
8
|
+
* the `overbloom` / `overbloomBreakdown` inputs with declarative `Effect[]`
|
|
9
|
+
* resolution. Built-in crop drops still flow through the same baseline math
|
|
10
|
+
* (drops, NPC coins, special-crop pre-bonus) - the difference is everything
|
|
11
|
+
* scoped: `add-rare-pct` (Overbloom), `mul-rare` (Cropeetle, armor sets),
|
|
12
|
+
* `mul-drop` (Deep Fried), and `add-drop` (Warty Bug Shard) are all resolved
|
|
13
|
+
* through the effect pipeline with proper per-drop scoping.
|
|
14
|
+
*
|
|
15
|
+
* Bountiful and Mooshroom remain bespoke - they're coin-side computations,
|
|
16
|
+
* not scoped multipliers, and the architecture plan keeps them out of v1.
|
|
17
|
+
*/
|
|
18
|
+
export interface CalculateDetailedDropsFromEffectsOptions {
|
|
19
|
+
crop: Crop;
|
|
20
|
+
blocksBroken: number;
|
|
21
|
+
farmingFortune?: number;
|
|
22
|
+
dicerLevel?: 1 | 2 | 3;
|
|
23
|
+
armorPieces?: 0 | 1 | 2 | 3 | 4;
|
|
24
|
+
bountiful?: boolean;
|
|
25
|
+
mooshroom?: boolean;
|
|
26
|
+
maxTool?: boolean;
|
|
27
|
+
pet?: FarmingPet;
|
|
28
|
+
chips?: Record<string, number | null | undefined>;
|
|
29
|
+
toolReforge?: string;
|
|
30
|
+
/** Effects collected via `FarmingPlayer.collectEffects(env)`. */
|
|
31
|
+
effects: readonly Effect[];
|
|
32
|
+
/** Environment for the calc. Built by `buildEffectEnvironment(player, crop)`. */
|
|
33
|
+
env: EffectEnvironment;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Output of {@link calculateDetailedDropsFromEffects}.
|
|
37
|
+
*
|
|
38
|
+
* Compared to the legacy `DetailedDropsResult`, the `rareItemBonus`/
|
|
39
|
+
* `rareItemBonusBreakdown` pair is replaced by:
|
|
40
|
+
* - `appliedEffects`: per-item `AppliedEffect[]` describing every effect that
|
|
41
|
+
* touched the drop (phase, op, source, resolved amount).
|
|
42
|
+
* - `effectsBreakdown`: per-source totals across all drops, surfaced in the
|
|
43
|
+
* UI as the new "Overbloom (and friends)" breakdown.
|
|
44
|
+
*/
|
|
45
|
+
export interface DetailedDropsFromEffectsResult {
|
|
46
|
+
npcPrice: number;
|
|
47
|
+
collection: number;
|
|
48
|
+
npcCoins: number;
|
|
49
|
+
fortune: number;
|
|
50
|
+
blocksBroken: number;
|
|
51
|
+
coinSources: Record<string, number>;
|
|
52
|
+
otherCollection: Record<string, number>;
|
|
53
|
+
items: Record<string, number>;
|
|
54
|
+
currencies: Record<string, number>;
|
|
55
|
+
rngItems?: Record<string, number>;
|
|
56
|
+
specialCropBonus: number;
|
|
57
|
+
specialCropBonusBreakdown: Record<string, number>;
|
|
58
|
+
appliedEffects: Record<string, AppliedEffect[]>;
|
|
59
|
+
effectsBreakdown: EffectsBreakdown;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Run the new effect-driven detailed-drops calculation.
|
|
63
|
+
*/
|
|
64
|
+
export declare function calculateDetailedDropsFromEffects(options: CalculateDetailedDropsFromEffectsOptions): DetailedDropsFromEffectsResult;
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { getChipInputLevel, getChipLevel, getChipRarity, normalizeChipLevels } from '../constants/chips.js';
|
|
2
|
+
import { CROP_INFO, Crop, MAX_CROP_FORTUNE } from '../constants/crops.js';
|
|
3
|
+
import { Rarity, REFORGES } from '../constants/reforges.js';
|
|
4
|
+
import { MATCHING_SPECIAL_CROP, SPECIAL_CROP_INFO } from '../constants/specialcrops.js';
|
|
5
|
+
import { Stat } from '../constants/stats.js';
|
|
6
|
+
import { calculateAverageSpecialCrops } from '../crops/special.js';
|
|
7
|
+
import { produceAddedDrops, resolveDropEffects } from '../effects/resolver.js';
|
|
8
|
+
import { BEST_FARMING_TOOLS } from '../items/tools.js';
|
|
9
|
+
const DEFAULT_RNG_TAGS = ['overbloom', 'rare-crop'];
|
|
10
|
+
function tagSet(tags) {
|
|
11
|
+
return new Set(tags ?? DEFAULT_RNG_TAGS);
|
|
12
|
+
}
|
|
13
|
+
function getEffectiveFortune(opts) {
|
|
14
|
+
const base = opts.farmingFortune ?? MAX_CROP_FORTUNE[opts.crop] ?? 0;
|
|
15
|
+
let fortune = base + 100;
|
|
16
|
+
if (!opts.bountiful && !opts.farmingFortune) {
|
|
17
|
+
const maxRarity = BEST_FARMING_TOOLS[opts.crop]?.maxRarity ?? Rarity.Mythic;
|
|
18
|
+
const bountifulFortune = REFORGES.bountiful?.tiers[maxRarity]?.stats?.[Stat.FarmingFortune] ?? 0;
|
|
19
|
+
const blessedFortune = REFORGES.blessed?.tiers[maxRarity]?.stats?.[Stat.FarmingFortune] ?? 0;
|
|
20
|
+
fortune += blessedFortune - bountifulFortune;
|
|
21
|
+
}
|
|
22
|
+
return fortune;
|
|
23
|
+
}
|
|
24
|
+
function getCropInfo(crop) {
|
|
25
|
+
return CROP_INFO[crop] ?? {};
|
|
26
|
+
}
|
|
27
|
+
function buildBaseRngCandidates(cropInfo, env, blocksBroken) {
|
|
28
|
+
const out = [];
|
|
29
|
+
const inSeason = env.harvestFeast && env.inSeason;
|
|
30
|
+
for (const drop of cropInfo.rng ?? []) {
|
|
31
|
+
if (drop.only === 'harvestFeast' && !inSeason)
|
|
32
|
+
continue;
|
|
33
|
+
const tags = tagSet(drop.tags);
|
|
34
|
+
const kind = drop.dropKind ?? 'rng';
|
|
35
|
+
for (const [item, count] of Object.entries(drop.drops)) {
|
|
36
|
+
out.push({
|
|
37
|
+
itemId: item,
|
|
38
|
+
output: drop.output ?? 'rng',
|
|
39
|
+
baseAmount: drop.chance * blocksBroken * count,
|
|
40
|
+
tags,
|
|
41
|
+
dropKind: kind,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
function appendAddedDropCandidates(candidates, effects, env, blocksBroken) {
|
|
48
|
+
for (const { source, payload } of produceAddedDrops(effects, env)) {
|
|
49
|
+
const baseAmount = payload.baseAmount !== undefined
|
|
50
|
+
? payload.baseAmount * blocksBroken
|
|
51
|
+
: payload.chance !== undefined
|
|
52
|
+
? payload.chance * blocksBroken
|
|
53
|
+
: 0;
|
|
54
|
+
if (baseAmount <= 0)
|
|
55
|
+
continue;
|
|
56
|
+
candidates.push({
|
|
57
|
+
itemId: payload.itemId,
|
|
58
|
+
output: payload.output ?? 'rng',
|
|
59
|
+
baseAmount,
|
|
60
|
+
tags: tagSet(payload.tags),
|
|
61
|
+
dropKind: payload.dropKind ?? 'rare',
|
|
62
|
+
fromAddDrop: true,
|
|
63
|
+
source,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function aggregateEffectsBreakdown(target, applied) {
|
|
68
|
+
for (const entry of applied) {
|
|
69
|
+
// Only `add-rare-pct` contributes additively to the breakdown
|
|
70
|
+
if (entry.op !== 'add-rare-pct')
|
|
71
|
+
continue;
|
|
72
|
+
const prev = target[entry.source] ?? 0;
|
|
73
|
+
if (entry.amount > prev)
|
|
74
|
+
target[entry.source] = entry.amount;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Run the new effect-driven detailed-drops calculation.
|
|
79
|
+
*/
|
|
80
|
+
export function calculateDetailedDropsFromEffects(options) {
|
|
81
|
+
const calcOptions = {
|
|
82
|
+
...options,
|
|
83
|
+
chips: normalizeChipLevels(options.chips ?? {}),
|
|
84
|
+
};
|
|
85
|
+
const { crop, blocksBroken, env, effects } = calcOptions;
|
|
86
|
+
const result = {
|
|
87
|
+
npcPrice: 0,
|
|
88
|
+
collection: 0,
|
|
89
|
+
npcCoins: 0,
|
|
90
|
+
fortune: 0,
|
|
91
|
+
blocksBroken,
|
|
92
|
+
coinSources: {},
|
|
93
|
+
otherCollection: {},
|
|
94
|
+
items: {},
|
|
95
|
+
currencies: {},
|
|
96
|
+
specialCropBonus: 0,
|
|
97
|
+
specialCropBonusBreakdown: {},
|
|
98
|
+
appliedEffects: {},
|
|
99
|
+
effectsBreakdown: {},
|
|
100
|
+
};
|
|
101
|
+
result.fortune = calcOptions.farmingFortune ?? MAX_CROP_FORTUNE[crop] ?? 0;
|
|
102
|
+
const fortune = getEffectiveFortune(calcOptions);
|
|
103
|
+
if (fortune <= 0 || blocksBroken < 0)
|
|
104
|
+
return result;
|
|
105
|
+
const cropInfo = getCropInfo(crop);
|
|
106
|
+
const { drops, npc, breaks = 1, replenish = false } = cropInfo;
|
|
107
|
+
result.npcPrice = npc;
|
|
108
|
+
if (!drops)
|
|
109
|
+
return result;
|
|
110
|
+
const baseDrops = blocksBroken * drops * (fortune * 0.01);
|
|
111
|
+
result.otherCollection['Normal'] = Math.round(baseDrops);
|
|
112
|
+
if (calcOptions.bountiful) {
|
|
113
|
+
result.coinSources['Bountiful'] = Math.round(baseDrops * 0.2);
|
|
114
|
+
}
|
|
115
|
+
if (calcOptions.mooshroom) {
|
|
116
|
+
const mushroomDrops = Math.round(blocksBroken * breaks);
|
|
117
|
+
result.coinSources['Mooshroom'] = mushroomDrops * CROP_INFO[Crop.Mushroom].npc;
|
|
118
|
+
result.otherCollection['Mushroom'] = mushroomDrops;
|
|
119
|
+
result.items[Crop.Mushroom] = mushroomDrops;
|
|
120
|
+
}
|
|
121
|
+
const armorPieces = Math.min(Math.max(calcOptions.armorPieces ?? 4, 0), 4);
|
|
122
|
+
const baseSpecialCrops = calculateAverageSpecialCrops(blocksBroken, crop, armorPieces, 1);
|
|
123
|
+
result.otherCollection[baseSpecialCrops.type] = baseSpecialCrops.amount;
|
|
124
|
+
result.items[baseSpecialCrops.id] = baseSpecialCrops.amount;
|
|
125
|
+
result.coinSources[baseSpecialCrops.type] = baseSpecialCrops.npc;
|
|
126
|
+
if (replenish) {
|
|
127
|
+
result.coinSources['Collection'] = Math.round((baseDrops - blocksBroken * breaks) * npc);
|
|
128
|
+
result.otherCollection['Replenish'] = -Math.round(blocksBroken * breaks);
|
|
129
|
+
result.collection = Math.round(baseDrops);
|
|
130
|
+
result.items[crop] = Math.round(baseDrops - blocksBroken * breaks);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
result.coinSources['Collection'] = Math.round(baseDrops * npc);
|
|
134
|
+
result.collection = Math.round(baseDrops);
|
|
135
|
+
result.items[crop] = Math.round(baseDrops);
|
|
136
|
+
}
|
|
137
|
+
if (crop === Crop.Wheat) {
|
|
138
|
+
const seedsResult = calculateDetailedDropsFromEffects({
|
|
139
|
+
...calcOptions,
|
|
140
|
+
crop: Crop.Seeds,
|
|
141
|
+
maxTool: false,
|
|
142
|
+
mooshroom: false,
|
|
143
|
+
env: { ...env, crop: Crop.Seeds },
|
|
144
|
+
});
|
|
145
|
+
const seedCollection = seedsResult.collection - blocksBroken;
|
|
146
|
+
result.otherCollection['Seeds'] = seedCollection;
|
|
147
|
+
result.items[Crop.Seeds] = seedCollection;
|
|
148
|
+
result.coinSources['Seeds'] = seedCollection * seedsResult.npcPrice;
|
|
149
|
+
if (calcOptions.bountiful) {
|
|
150
|
+
result.coinSources['Bountiful (Seeds)'] = seedsResult.coinSources['Bountiful'] ?? 0;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (calcOptions.maxTool) {
|
|
154
|
+
let multiplier = 1;
|
|
155
|
+
if (calcOptions.chips) {
|
|
156
|
+
const level = getChipLevel(getChipInputLevel(calcOptions.chips, 'mechamind'));
|
|
157
|
+
if (level > 0) {
|
|
158
|
+
const rarity = getChipRarity(level);
|
|
159
|
+
let perLevel = 0.015;
|
|
160
|
+
if (rarity === Rarity.Epic)
|
|
161
|
+
perLevel = 0.02;
|
|
162
|
+
else if (rarity === Rarity.Legendary)
|
|
163
|
+
perLevel = 0.025;
|
|
164
|
+
multiplier = 1 + level * perLevel;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const toolXpFactor = cropInfo.toolXpFactor ?? 1;
|
|
168
|
+
const capsules = Math.floor(((result.collection + (result.otherCollection['Seeds'] ?? 0)) * multiplier) / toolXpFactor / 200_000);
|
|
169
|
+
if (capsules > 0) {
|
|
170
|
+
result.items['TOOL_EXP_CAPSULE'] = capsules;
|
|
171
|
+
result.coinSources['Tool Exp Capsule'] = capsules * 100_000;
|
|
172
|
+
result.otherCollection['Tool Exp Capsule'] = capsules;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Build candidate RNG drops: built-in `rng:` entries + `add-drop` payloads.
|
|
176
|
+
const candidates = buildBaseRngCandidates(cropInfo, env, blocksBroken);
|
|
177
|
+
appendAddedDropCandidates(candidates, effects, env, blocksBroken);
|
|
178
|
+
for (const candidate of candidates) {
|
|
179
|
+
const ctx = {
|
|
180
|
+
env,
|
|
181
|
+
crop,
|
|
182
|
+
dropKind: candidate.dropKind,
|
|
183
|
+
itemId: candidate.itemId,
|
|
184
|
+
tags: candidate.tags,
|
|
185
|
+
fromAddDrop: candidate.fromAddDrop,
|
|
186
|
+
};
|
|
187
|
+
const { addRarePct, mulRare, mulDrop, applied } = resolveDropEffects(effects, ctx);
|
|
188
|
+
const rareMultiplier = (1 + addRarePct / 100) * mulRare * mulDrop;
|
|
189
|
+
const finalAmount = candidate.baseAmount * rareMultiplier;
|
|
190
|
+
if (finalAmount <= 0)
|
|
191
|
+
continue;
|
|
192
|
+
if (candidate.output === 'collection') {
|
|
193
|
+
result.collection += finalAmount;
|
|
194
|
+
result.items[candidate.itemId] = (result.items[candidate.itemId] ?? 0) + finalAmount;
|
|
195
|
+
result.otherCollection[candidate.source ?? candidate.itemId] =
|
|
196
|
+
(result.otherCollection[candidate.source ?? candidate.itemId] ?? 0) + finalAmount;
|
|
197
|
+
const itemNpc = CROP_INFO[candidate.itemId]?.npc ?? 0;
|
|
198
|
+
if (itemNpc > 0) {
|
|
199
|
+
result.coinSources[candidate.source ?? candidate.itemId] =
|
|
200
|
+
(result.coinSources[candidate.source ?? candidate.itemId] ?? 0) + finalAmount * itemNpc;
|
|
201
|
+
}
|
|
202
|
+
if (applied.length > 0) {
|
|
203
|
+
result.appliedEffects[candidate.itemId] = (result.appliedEffects[candidate.itemId] ?? []).concat(applied);
|
|
204
|
+
aggregateEffectsBreakdown(result.effectsBreakdown, applied);
|
|
205
|
+
}
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (candidate.output === 'currency') {
|
|
209
|
+
result.currencies[candidate.itemId] = (result.currencies[candidate.itemId] ?? 0) + finalAmount;
|
|
210
|
+
if (applied.length > 0) {
|
|
211
|
+
result.appliedEffects[candidate.itemId] = (result.appliedEffects[candidate.itemId] ?? []).concat(applied);
|
|
212
|
+
aggregateEffectsBreakdown(result.effectsBreakdown, applied);
|
|
213
|
+
}
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
result.rngItems ??= {};
|
|
217
|
+
result.rngItems[candidate.itemId] = (result.rngItems[candidate.itemId] ?? 0) + finalAmount;
|
|
218
|
+
if (applied.length > 0) {
|
|
219
|
+
result.appliedEffects[candidate.itemId] = (result.appliedEffects[candidate.itemId] ?? []).concat(applied);
|
|
220
|
+
aggregateEffectsBreakdown(result.effectsBreakdown, applied);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Special crops: re-scale by the multiplicative bonus produced by effects whose
|
|
224
|
+
// scope matches a special-crop drop. We pick a representative special crop drop
|
|
225
|
+
// for this `crop` (the matching SpecialCrop tier) and feed it into the resolver.
|
|
226
|
+
const specialCrop = MATCHING_SPECIAL_CROP[crop];
|
|
227
|
+
if (specialCrop) {
|
|
228
|
+
const specialCtx = {
|
|
229
|
+
env,
|
|
230
|
+
crop,
|
|
231
|
+
dropKind: 'special-crop',
|
|
232
|
+
itemId: SPECIAL_CROP_INFO[specialCrop].id,
|
|
233
|
+
specialCropType: specialCrop,
|
|
234
|
+
tags: new Set(['overbloom', 'rare-crop', 'special-crop']),
|
|
235
|
+
};
|
|
236
|
+
const { addRarePct, mulRare, mulDrop, applied } = resolveDropEffects(effects, specialCtx);
|
|
237
|
+
const totalMultiplier = (1 + addRarePct / 100) * mulRare * mulDrop;
|
|
238
|
+
if (totalMultiplier !== 1 && totalMultiplier > 0) {
|
|
239
|
+
const newAmount = calculateAverageSpecialCrops(blocksBroken, crop, armorPieces, totalMultiplier);
|
|
240
|
+
result.otherCollection[specialCrop] = newAmount.amount;
|
|
241
|
+
result.items[SPECIAL_CROP_INFO[specialCrop].id] = newAmount.amount;
|
|
242
|
+
result.coinSources[specialCrop] = newAmount.npc;
|
|
243
|
+
if (applied.length > 0) {
|
|
244
|
+
result.appliedEffects[SPECIAL_CROP_INFO[specialCrop].id] = applied;
|
|
245
|
+
aggregateEffectsBreakdown(result.effectsBreakdown, applied);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
result.npcCoins = Object.values(result.coinSources).reduce((a, b) => a + b, 0);
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=ratecalc-effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ratecalc-effects.js","sourceRoot":"","sources":["../../src/util/ratecalc-effects.ts"],"names":[],"mappings":"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"}
|
package/dist/util/ratecalc.d.ts
CHANGED
|
@@ -1,53 +1,20 @@
|
|
|
1
|
-
import { type FarmingAttributes } from '../constants/attributes.js';
|
|
2
1
|
import { Crop, type CropInfo } from '../constants/crops.js';
|
|
3
|
-
import type { FarmingPet } from '../fortune/farmingpet.js';
|
|
4
2
|
interface CalculateDropsOptions {
|
|
5
3
|
farmingFortune?: number;
|
|
6
4
|
cropFortune?: Record<Crop, number>;
|
|
7
5
|
blocksBroken: number;
|
|
8
6
|
dicerLevel?: 1 | 2 | 3;
|
|
9
7
|
armorPieces?: 1 | 2 | 3 | 4;
|
|
10
|
-
attributes?: FarmingAttributes | Record<string, number>;
|
|
11
|
-
chips?: Record<string, number>;
|
|
12
|
-
pet?: FarmingPet;
|
|
13
8
|
}
|
|
14
9
|
type CropFortuneOption = {
|
|
15
10
|
cropFortune?: Partial<Record<Crop, number>>;
|
|
16
11
|
};
|
|
17
12
|
export declare function calculateAverageDrops(options: CalculateDropsOptions & CropFortuneOption): Record<Crop, number>;
|
|
18
|
-
interface CalculateDetailedDropsOptions extends CalculateDropsOptions {
|
|
19
|
-
bountiful: boolean;
|
|
20
|
-
mooshroom: boolean;
|
|
21
|
-
maxTool?: boolean;
|
|
22
|
-
}
|
|
23
|
-
export interface DetailedDropsResult {
|
|
24
|
-
npcPrice: number;
|
|
25
|
-
collection: number;
|
|
26
|
-
npcCoins: number;
|
|
27
|
-
fortune: number;
|
|
28
|
-
blocksBroken: number;
|
|
29
|
-
coinSources: Record<string, number>;
|
|
30
|
-
otherCollection: Record<string, number>;
|
|
31
|
-
items: Record<string, number>;
|
|
32
|
-
rngItems?: Record<string, number>;
|
|
33
|
-
specialCropBonus: number;
|
|
34
|
-
specialCropBonusBreakdown: Record<string, number>;
|
|
35
|
-
rareItemBonus: number;
|
|
36
|
-
rareItemBonusBreakdown: Record<string, number>;
|
|
37
|
-
pendingRngItems?: Record<string, number>;
|
|
38
|
-
}
|
|
39
|
-
export declare function calculateDetailedAverageDrops(options: CalculateDetailedDropsOptions & CropFortuneOption): Record<Crop, DetailedDropsResult>;
|
|
40
13
|
interface CalculateExpectedDropsOptions extends CalculateDropsOptions {
|
|
41
14
|
blocksBroken: number;
|
|
42
15
|
crop: Crop;
|
|
43
16
|
}
|
|
44
|
-
export interface CalculateCropDetailedDropsOptions extends CalculateDetailedDropsOptions {
|
|
45
|
-
blocksBroken: number;
|
|
46
|
-
crop: Crop;
|
|
47
|
-
infestedPlotProbability?: number;
|
|
48
|
-
}
|
|
49
17
|
export declare function calculateExpectedDrops(options: CalculateExpectedDropsOptions): number;
|
|
50
|
-
export declare function calculateDetailedDrops(options: CalculateCropDetailedDropsOptions): DetailedDropsResult;
|
|
51
18
|
export interface FortuneRequiredCalculatorOptions {
|
|
52
19
|
blocksBroken: number;
|
|
53
20
|
crop: Crop;
|