UNPKG

farming-weight

Version:

Tools for calculating farming weight and fortune in Hypixel Skyblock

62 lines 2.45 kB
import { mergeCost, UpgradeAction, UpgradeCategory } from '../../constants/upgrades.js'; import { getUpgradeSourceProgress } from '../../upgrades/getsourceprogress.js'; import { COMPOSTER_UPGRADES } from './upgrades.js'; export function getComposterStats(upgradeLevels) { const result = {}; return { progress: getUpgradeSourceProgress({ levels: upgradeLevels, stats: result }, COMPOSTER_UPGRADE_SOURCES), stats: result, costToMax: Object.entries(COMPOSTER_UPGRADES).reduce((acc, [key, upgrade]) => { const level = upgradeLevels[key] ?? 0; if (level >= upgrade.levels.length) return acc; acc[key] = mergeCost(...upgrade.levels.slice(level)); return acc; }, {}), }; } export const COMPOSTER_UPGRADE_SOURCES = [ ...Object.entries(COMPOSTER_UPGRADES).map(([k, upgrade]) => { const key = k; const result = { name: upgrade.name, key: key, exists: () => true, wiki: () => upgrade.wiki, max: () => upgrade.current(upgrade.levels.length), current: ({ levels, stats }) => { const result = upgrade.current(levels[key] ?? 0); stats[key] = result; return result; }, progress: ({ levels }) => { const current = levels[key] ?? 0; return { name: upgrade.name, current: current, max: 25, ratio: current > 0 ? current / 25 : 0, perLevel: 1, }; }, upgrades: ({ levels }) => { const nextLevel = (levels[key] ?? 0) + 1; if (nextLevel > upgrade.levels.length) return []; const current = upgrade.current(levels[key] ?? 0); return [ { title: upgrade.name + ' ' + nextLevel, current: current, increase: upgrade.current(nextLevel) - current, action: UpgradeAction.LevelUp, category: UpgradeCategory.Composter, cost: upgrade.levels[nextLevel - 1], }, ]; }, }; return result; }), ]; //# sourceMappingURL=progress.js.map