UNPKG

farming-weight

Version:

Tools for calculating farming weight and fortune in Hypixel Skyblock

503 lines 15.2 kB
import { getCropFromName } from '../util/names.js'; import { getCropInfo } from '../util/ratecalc.js'; import { Crop } from './crops.js'; import { GARDEN_VISITORS } from './garden.js'; import { ReforgeTarget } from './reforges.js'; import { Stat } from './stats.js'; export var EnchantTierProcurement; (function (EnchantTierProcurement) { EnchantTierProcurement["Normal"] = "normal"; EnchantTierProcurement["Loot"] = "loot"; EnchantTierProcurement["SelfLeveling"] = "selfleveling"; EnchantTierProcurement["UpgradeItem"] = "upgradeitem"; })(EnchantTierProcurement || (EnchantTierProcurement = {})); const createTurboEnchant = (stat) => ({ appliesTo: [ReforgeTarget.FarmingTool], minLevel: 1, maxLevel: 7, levels: { 1: { stats: { [stat]: 5, }, }, 2: { stats: { [stat]: 10, }, }, 3: { stats: { [stat]: 15, }, }, 4: { stats: { [stat]: 20, }, }, 5: { stats: { [stat]: 25, }, }, 6: { stats: { [stat]: 30, }, procurement: EnchantTierProcurement.UpgradeItem, cost: { items: { TURBO_GOURD: 1, }, }, }, 7: { stats: { [stat]: 35, }, procurement: EnchantTierProcurement.UpgradeItem, cost: { items: { ENCHANTED_TURBO_GOURD: 1, }, }, }, }, }); const dedicationEnchantmentComputedStats = (multiplier, options) => { return Object.entries(options.milestones ?? {}).reduce((sum, [crop, level]) => { const cropEnum = getCropFromName(crop); if (!cropEnum) return sum; const info = getCropInfo(cropEnum); if (!info?.fortuneType) return sum; sum[info.fortuneType] = level * multiplier; return sum; }, {}); }; export const FARMING_ENCHANTS = { harvesting: { name: 'Harvesting', appliesTo: [ReforgeTarget.FarmingTool], wiki: 'https://w.elitesb.gg/Enchantments#Harvesting', levelRequirement: 2, minLevel: 1, maxLevel: 6, levels: { 1: { stats: { [Stat.FarmingFortune]: 12.5, }, }, 2: { stats: { [Stat.FarmingFortune]: 25, }, }, 3: { stats: { [Stat.FarmingFortune]: 37.5, }, }, 4: { stats: { [Stat.FarmingFortune]: 50, }, }, 5: { stats: { [Stat.FarmingFortune]: 62.5, }, }, 6: { stats: { [Stat.FarmingFortune]: 75, }, procurement: EnchantTierProcurement.Loot, }, }, }, cultivating: { name: 'Cultivating', appliesTo: [ReforgeTarget.FarmingTool], wiki: 'https://w.elitesb.gg/Enchantments#Cultivating', minLevel: 1, maxLevel: 10, levels: { 1: { stats: { [Stat.FarmingWisdom]: 1, [Stat.FarmingFortune]: 2, }, cost: { bits: 4000, }, }, 2: { stats: { [Stat.FarmingWisdom]: 2, [Stat.FarmingFortune]: 4, }, procurement: EnchantTierProcurement.SelfLeveling, }, 3: { stats: { [Stat.FarmingWisdom]: 3, [Stat.FarmingFortune]: 6, }, procurement: EnchantTierProcurement.SelfLeveling, }, 4: { stats: { [Stat.FarmingWisdom]: 4, [Stat.FarmingFortune]: 8, }, procurement: EnchantTierProcurement.SelfLeveling, }, 5: { stats: { [Stat.FarmingWisdom]: 5, [Stat.FarmingFortune]: 10, }, procurement: EnchantTierProcurement.SelfLeveling, }, 6: { stats: { [Stat.FarmingWisdom]: 6, [Stat.FarmingFortune]: 12, }, procurement: EnchantTierProcurement.SelfLeveling, }, 7: { stats: { [Stat.FarmingWisdom]: 7, [Stat.FarmingFortune]: 14, }, procurement: EnchantTierProcurement.SelfLeveling, }, 8: { stats: { [Stat.FarmingWisdom]: 8, [Stat.FarmingFortune]: 16, }, procurement: EnchantTierProcurement.SelfLeveling, }, 9: { stats: { [Stat.FarmingWisdom]: 9, [Stat.FarmingFortune]: 18, }, procurement: EnchantTierProcurement.SelfLeveling, }, 10: { stats: { [Stat.FarmingWisdom]: 10, [Stat.FarmingFortune]: 20, }, procurement: EnchantTierProcurement.SelfLeveling, }, }, }, dedication: { name: 'Dedication', appliesTo: [ReforgeTarget.FarmingTool], wiki: 'https://w.elitesb.gg/Enchantments#Dedication', minLevel: 1, maxLevel: 4, levels: { 1: { cost: { copper: 250, }, computedStats: (player) => dedicationEnchantmentComputedStats(0.5, player), }, 2: { computedStats: (player) => dedicationEnchantmentComputedStats(0.75, player), }, 3: { computedStats: (player) => dedicationEnchantmentComputedStats(1, player), }, 4: { computedStats: (player) => dedicationEnchantmentComputedStats(2, player), procurement: EnchantTierProcurement.Loot, }, }, maxStats: { [Stat.CactusFortune]: 92, [Stat.CarrotFortune]: 92, [Stat.CocoaBeanFortune]: 92, [Stat.MelonFortune]: 92, [Stat.MushroomFortune]: 92, [Stat.NetherWartFortune]: 92, [Stat.PotatoFortune]: 92, [Stat.PumpkinFortune]: 92, [Stat.SugarCaneFortune]: 92, [Stat.WheatFortune]: 92, [Stat.SunflowerFortune]: 92, [Stat.MoonflowerFortune]: 92, [Stat.WildRoseFortune]: 92, }, }, pesterminator: { name: 'Pesterminator', appliesTo: [ReforgeTarget.Armor], wiki: 'https://w.elitesb.gg/Pesterminator', levelRequirement: 10, minLevel: 1, maxLevel: 6, levels: { 1: { stats: { [Stat.BonusPestChance]: 1, [Stat.FarmingFortune]: 2, }, }, 2: { stats: { [Stat.BonusPestChance]: 2, [Stat.FarmingFortune]: 4, }, }, 3: { stats: { [Stat.BonusPestChance]: 3, [Stat.FarmingFortune]: 6, }, }, 4: { stats: { [Stat.BonusPestChance]: 4, [Stat.FarmingFortune]: 8, }, }, 5: { stats: { [Stat.BonusPestChance]: 5, [Stat.FarmingFortune]: 10, }, }, 6: { stats: { [Stat.BonusPestChance]: 6, [Stat.FarmingFortune]: 12, }, procurement: EnchantTierProcurement.UpgradeItem, cost: { items: { PESTHUNTING_GUIDE: 1, }, }, }, }, }, ultimate_sunset: { name: 'Sunset', id: 'ENCHANTMENT_ULTIMATE_SUNSET', appliesTo: [ReforgeTarget.Armor], wiki: 'https://w.elitesb.gg/Sunset', minLevel: 1, maxLevel: 5, levels: { 1: { cropComputed: { [Stat.Overbloom]: (crop) => (crop === Crop.Moonflower ? 0 : 1), }, }, 2: { cropComputed: { [Stat.Overbloom]: (crop) => (crop === Crop.Moonflower ? 0 : 2), }, }, 3: { cropComputed: { [Stat.Overbloom]: (crop) => (crop === Crop.Moonflower ? 0 : 3), }, }, 4: { cropComputed: { [Stat.Overbloom]: (crop) => (crop === Crop.Moonflower ? 0 : 4), }, }, 5: { cropComputed: { [Stat.Overbloom]: (crop) => (crop === Crop.Moonflower ? 0 : 5), }, }, }, }, green_thumb: { name: 'Green Thumb', appliesTo: [ReforgeTarget.Equipment], wiki: 'https://w.elitesb.gg/Enchantments#Green_Thumb', levelRequirement: 24, minLevel: 1, maxLevel: 5, levels: { 1: { computed: { [Stat.FarmingFortune]: (opt) => 0.05 * (opt.uniqueVisitors ?? 0), }, cost: { copper: 1500, }, }, 2: { computed: { [Stat.FarmingFortune]: (opt) => 0.1 * (opt.uniqueVisitors ?? 0), }, }, 3: { computed: { [Stat.FarmingFortune]: (opt) => 0.15 * (opt.uniqueVisitors ?? 0), }, }, 4: { computed: { [Stat.FarmingFortune]: (opt) => 0.2 * (opt.uniqueVisitors ?? 0), }, }, 5: { computed: { [Stat.FarmingFortune]: (opt) => 0.25 * (opt.uniqueVisitors ?? 0), }, }, }, maxStats: { [Stat.FarmingFortune]: 0.25 * Object.keys(GARDEN_VISITORS).length, }, }, turbo_cactus: { name: 'Turbo-Cacti', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Cactus, ...createTurboEnchant(Stat.CactusFortune), }, turbo_cane: { name: 'Turbo-Cane', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.SugarCane, ...createTurboEnchant(Stat.SugarCaneFortune), }, turbo_carrot: { name: 'Turbo-Carrot', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Carrot, ...createTurboEnchant(Stat.CarrotFortune), }, turbo_coco: { name: 'Turbo-Cocoa', id: 'ENCHANTMENT_TURBO_COCO', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.CocoaBeans, ...createTurboEnchant(Stat.CocoaBeanFortune), }, turbo_melon: { name: 'Turbo-Melon', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Melon, ...createTurboEnchant(Stat.MelonFortune), }, turbo_mushrooms: { name: 'Turbo-Mushrooms', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Mushroom, ...createTurboEnchant(Stat.MushroomFortune), }, turbo_potato: { name: 'Turbo-Potato', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Potato, ...createTurboEnchant(Stat.PotatoFortune), }, turbo_pumpkin: { name: 'Turbo-Pumpkin', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Pumpkin, ...createTurboEnchant(Stat.PumpkinFortune), }, turbo_warts: { name: 'Turbo-Warts', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.NetherWart, ...createTurboEnchant(Stat.NetherWartFortune), }, turbo_wheat: { name: 'Turbo-Wheat', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Wheat, ...createTurboEnchant(Stat.WheatFortune), }, turbo_rose: { name: 'Turbo-Rose', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.WildRose, ...createTurboEnchant(Stat.WildRoseFortune), }, turbo_moonflower: { name: 'Turbo-Moonflower', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Moonflower, ...createTurboEnchant(Stat.MoonflowerFortune), }, turbo_sunflower: { name: 'Turbo-Sunflower', wiki: 'https://w.elitesb.gg/Enchantments#Turbo-Crop', cropSpecific: Crop.Sunflower, ...createTurboEnchant(Stat.SunflowerFortune), }, feast: { name: 'Feast', id: 'ENCHANTMENT_FEAST', appliesTo: [ReforgeTarget.FarmingTool], wiki: 'https://w.elitesb.gg/Feast', minLevel: 1, maxLevel: 5, levels: { 1: { stats: { [Stat.Overbloom]: 2, }, }, 2: { stats: { [Stat.Overbloom]: 4, }, }, 3: { stats: { [Stat.Overbloom]: 6, }, }, 4: { stats: { [Stat.Overbloom]: 8, }, }, 5: { stats: { [Stat.Overbloom]: 10, }, }, }, }, ultimate_crop_fever: { name: 'Crop Fever', id: 'ENCHANTMENT_ULTIMATE_CROP_FEVER', alwaysInclude: true, appliesTo: [ReforgeTarget.FarmingTool], wiki: 'https://w.elitesb.gg/Crop_Fever', minLevel: 1, maxLevel: 5, levels: { 1: {}, 2: {}, 3: {}, 4: {}, 5: {}, }, }, }; export const depthStriderLevels = [1, 2, 3]; //# sourceMappingURL=enchants.js.map