farming-weight
Version:
Tools for calculating farming weight and fortune in Hypixel Skyblock
89 lines • 3.97 kB
JavaScript
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