farming-weight
Version:
Tools for calculating farming weight and fortune in Hypixel Skyblock
108 lines • 3.38 kB
JavaScript
import { Rarity } from '../constants/reforges.js';
const RARITY_BY_ATTRIBUTE = Object.fromEntries(Object.values(Rarity).flatMap((rarity) => [
[rarity.toUpperCase(), rarity],
[rarity.toUpperCase().replaceAll(' ', '_'), rarity],
]));
export function getRarityFromItem(item, fallback) {
const attributeRarity = getRarityFromAttribute(item.attributes?.rarity);
if (attributeRarity)
return attributeRarity;
if (item.lore) {
return getRarityFromLore(item.lore);
}
return fallback ?? Rarity.Common;
}
export function getRarityFromAttribute(rarity) {
if (!rarity)
return undefined;
return RARITY_BY_ATTRIBUTE[rarity.toUpperCase()] ?? undefined;
}
export function getRarityFromLore(lore) {
const line = lore.at(-1);
const found = getRarity(line ?? '', null);
if (found) {
return found;
}
// Lore gets jumbled up sometimes? So this is a backup
for (const line of lore) {
const found = getRarity(line ?? '', null);
if (found)
return found;
}
return Rarity.Common;
}
function getRarity(line, fallback) {
switch (true) {
case line.includes('COMMON'):
return Rarity.Common;
case line.includes('UNCOMMON'):
return Rarity.Uncommon;
case line.includes('RARE'):
return Rarity.Rare;
case line.includes('EPIC'):
return Rarity.Epic;
case line.includes('LEGENDARY'):
return Rarity.Legendary;
case line.includes('MYTHIC'):
return Rarity.Mythic;
case line.includes('DIVINE'):
return Rarity.Divine;
case line.includes('VERY SPECIAL'):
return Rarity.VerySpecial;
case line.includes('SPECIAL'):
return Rarity.Special;
case line.includes('ULTIMATE'):
return Rarity.Ultimate;
case line.includes('ADMIN'):
return Rarity.Admin;
default:
return fallback === undefined ? Rarity.Common : fallback;
}
}
export function nextRarity(rarity) {
switch (rarity) {
case Rarity.Common:
return Rarity.Uncommon;
case Rarity.Uncommon:
return Rarity.Rare;
case Rarity.Rare:
return Rarity.Epic;
case Rarity.Epic:
return Rarity.Legendary;
case Rarity.Legendary:
return Rarity.Mythic;
case Rarity.Mythic:
return Rarity.Divine;
case Rarity.Divine:
return Rarity.Special;
case Rarity.Special:
return Rarity.VerySpecial;
default:
return rarity;
}
}
export function previousRarity(rarity) {
switch (rarity) {
case Rarity.Common:
return Rarity.Common;
case Rarity.Uncommon:
return Rarity.Common;
case Rarity.Rare:
return Rarity.Uncommon;
case Rarity.Epic:
return Rarity.Rare;
case Rarity.Legendary:
return Rarity.Epic;
case Rarity.Mythic:
return Rarity.Legendary;
case Rarity.Divine:
return Rarity.Mythic;
case Rarity.Special:
return Rarity.Divine;
case Rarity.VerySpecial:
return Rarity.Special;
default:
return rarity;
}
}
//# sourceMappingURL=itemstats.js.map