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