UNPKG

farming-weight

Version:

Tools for calculating farming weight and fortune in Hypixel Skyblock

89 lines 3.97 kB
import { ReforgeTarget } from '../../constants/reforges.js'; import { Stat } from '../../constants/stats.js'; import { FarmingArmor } from '../../fortune/farmingarmor.js'; import { FarmingEquipment } from '../../fortune/farmingequipment.js'; import { ARMOR_INFO, ARMOR_SET_BONUS, GEAR_SLOTS } from '../../items/armor.js'; import { EQUIPMENT_INFO } from '../../items/equipment.js'; export const ARMOR_SET_FORTUNE_SOURCES = [ ...Object.entries(GEAR_SLOTS) .filter(([, info]) => info.target === ReforgeTarget.Armor) .map(gearslot), { name: 'Armor Set Bonus', exists: () => true, wiki: () => 'https://wiki.hypixel.net/Fermento_Armor#Four_Pieces_', max: () => ARMOR_SET_BONUS.FERMENTO?.stats[4]?.[Stat.FarmingFortune] ?? 0, current: (set) => set.setBonuses.reduce((acc, bonus) => { return acc + (bonus.bonus.stats[bonus.count]?.[Stat.FarmingFortune] ?? 0); }, 0), }, ...Object.entries(GEAR_SLOTS) .filter(([, info]) => info.target === ReforgeTarget.Equipment) .map(gearslot), { name: 'Equipment Set Bonus', exists: (set) => set.equipmentSetBonuses.length > 0, wiki: () => 'https://wiki.hypixel.net/Pesthunter%27s_Gloves', max: () => ARMOR_SET_BONUS.PESTHUNTERS?.stats[4]?.[Stat.FarmingFortune] ?? 0, current: (set) => set.equipmentSetBonuses.reduce((acc, bonus) => { return acc + (bonus.bonus.stats[bonus.count]?.[Stat.FarmingFortune] ?? 0); }, 0), }, ]; function gearslot([slot, info]) { return { name: slot, exists: () => true, wiki: (set) => { const current = set.getPiece(slot); return (current?.info.wiki ?? (info.target === ReforgeTarget.Armor ? ARMOR_INFO[info.startingItem]?.wiki : EQUIPMENT_INFO[info.startingItem]?.wiki)); }, max: (set) => { const item = info.target === ReforgeTarget.Armor ? FarmingArmor.fakeItem(ARMOR_INFO[info.startingItem]) : FarmingEquipment.fakeItem(EQUIPMENT_INFO[info.startingItem]); const progress = item?.getProgress(); const maxed = progress?.reduce((acc, p) => acc + p.maxFortune, 0) ?? 0; const currentItem = set.getPiece(slot); if (currentItem) { const currentProgress = currentItem.getProgress(); const currentMaxed = currentProgress?.reduce((acc, p) => acc + p.maxFortune, 0) ?? 0; if (currentMaxed > maxed) return currentMaxed; } return maxed; }, current: (set) => { const item = set.getPiece(slot); const progress = item?.getProgress(); return progress?.reduce((acc, p) => acc + p.fortune, 0) ?? 0; }, progress: (set) => { const item = set.getPiece(slot); if (item) return item.getProgress(); const fake = info.target === ReforgeTarget.Armor ? FarmingArmor.fakeItem(ARMOR_INFO[info.startingItem]) : FarmingEquipment.fakeItem(EQUIPMENT_INFO[info.startingItem]); return fake?.getProgress(true) ?? []; }, info: (set) => { const piece = set.getPiece(slot); const fake = !piece ? info.target === ReforgeTarget.Armor ? FarmingArmor.fakeItem(ARMOR_INFO[info.startingItem]) : FarmingEquipment.fakeItem(EQUIPMENT_INFO[info.startingItem]) : undefined; return { item: piece?.item, info: piece?.info, nextInfo: fake ? fake.info : piece?.getNextItemUpgrade()?.info, maxInfo: (fake ? fake : piece)?.getLastItemUpgrade()?.info, }; }, }; } //# sourceMappingURL=armorsetsources.js.map