farming-weight
Version:
Tools for calculating farming weight and fortune in Hypixel Skyblock
86 lines • 3.83 kB
JavaScript
import { FARMING_ENCHANTS } from '../../constants/enchants.js';
import { REFORGES, Rarity, ReforgeTarget } from '../../constants/reforges.js';
import { Skill } from '../../constants/skills.js';
import { Stat } from '../../constants/stats.js';
import { GemRarity } from '../../fortune/item.js';
import { getFortuneFromEnchant, getMaxFortuneFromEnchant } from '../../util/enchants.js';
import { getPeridotFortune, getPeridotGemFortune } from '../../util/gems.js';
export const GEAR_FORTUNE_SOURCES = [
{
name: 'Base Stats',
exists: (gear) => {
return (gear.getLastItemUpgrade() ?? gear)?.info?.baseStats?.[Stat.FarmingFortune] !== undefined;
},
max: (gear) => {
return (gear.getLastItemUpgrade() ?? gear)?.info?.baseStats?.[Stat.FarmingFortune] ?? 0;
},
current: (gear) => {
return gear.info.baseStats?.[Stat.FarmingFortune] ?? 0;
},
},
{
name: 'Reforge Stats',
exists: () => true,
wiki: (gear) => {
return gear.type === ReforgeTarget.Equipment ? REFORGES?.rooted?.wiki : REFORGES?.mossy?.wiki;
},
max: (gear) => {
const maxRarity = (gear.getLastItemUpgrade()?.info.maxRarity ?? gear.info.maxRarity);
return gear.type === ReforgeTarget.Equipment
? (REFORGES.rooted?.tiers[maxRarity]?.stats[Stat.FarmingFortune] ?? 0)
: (REFORGES.mossy?.tiers[maxRarity]?.stats[Stat.FarmingFortune] ?? 0);
},
current: (gear) => {
return gear.reforgeStats?.stats?.[Stat.FarmingFortune] ?? 0;
},
},
{
name: 'Gemstone Slots',
wiki: () => 'https://wiki.hypixel.net/Gemstone#Gemstone_Slots',
exists: (gear) => {
const last = (gear.getLastItemUpgrade() ?? gear)?.info;
return last?.gemSlots?.peridot !== undefined;
},
max: (gear) => {
const last = (gear.getLastItemUpgrade() ?? gear)?.info;
return ((last?.gemSlots?.peridot ?? 0) *
getPeridotGemFortune(last?.maxRarity ?? Rarity.Common, GemRarity.Perfect));
},
current: (gear) => {
return getPeridotFortune(gear.rarity, gear.item);
},
},
{
name: 'Salesperson Ability',
wiki: (gear) => gear.info.wiki,
exists: (gear) => gear.type === ReforgeTarget.Equipment && gear.info.family === 'LOTUS',
max: () => 15,
current: (gear) => {
return gear.getPieceBonus();
},
},
{
name: 'Farming Level',
wiki: (gear) => gear.info.wiki,
exists: (gear) => gear.type === ReforgeTarget.Armor && gear.info.perLevelStats?.skill === Skill.Farming,
max: (gear) => {
const last = (gear.getLastItemUpgrade() ?? gear)?.info;
return 'perLevelStats' in last && last.perLevelStats?.skill === Skill.Farming
? (last?.perLevelStats?.stats[Stat.FarmingFortune] ?? 0) * 60
: (gear.info?.perLevelStats?.stats[Stat.FarmingFortune] ?? 0) * 60;
},
current: (gear) => {
return (gear.info.perLevelStats?.stats[Stat.FarmingFortune] ?? 0) * (gear.options?.farmingLevel ?? 0);
},
},
...Object.entries(FARMING_ENCHANTS)
.filter(([, enchant]) => enchant.appliesTo.includes(ReforgeTarget.Armor) || enchant.appliesTo.includes(ReforgeTarget.Equipment))
.map(([id, enchant]) => ({
name: enchant.name,
wiki: () => enchant.wiki,
exists: (gear) => enchant.appliesTo.includes(gear.type),
max: (gear) => getMaxFortuneFromEnchant(enchant, gear.options),
current: (gear) => getFortuneFromEnchant(gear.item.enchantments?.[id] ?? 0, enchant, gear.options),
})),
];
//# sourceMappingURL=gearsources.js.map