/* Code used from the slothpixel project https://github.com/slothpixel/core */ const BASE = 10000; const GROWTH = 2500; const HALF_GROWTH = 0.5 * GROWTH; const REVERSE_PQ_PREFIX = -(BASE - 0.5 * GROWTH) / GROWTH; const REVERSE_CONST = REVERSE_PQ_PREFIX * REVERSE_PQ_PREFIX; const GROWTH_DIVIDES_2 = 2 / GROWTH; function getLevel(exp) { return exp <= 1 ? 1 : Math.floor(1 + REVERSE_PQ_PREFIX + Math.sqrt(REVERSE_CONST + GROWTH_DIVIDES_2 * exp)); } function hypixelLevel(exp) { return getLevel(exp) + getPercentageToNextLevel(exp); } function getTotalExpToLevel(level) { const lv = Math.floor(level); const x0 = getTotalExpToFullLevel(lv); if (level === lv) return x0; return (getTotalExpToFullLevel(lv + 1) - x0) * (level % 1) + x0; } function getTotalExpToFullLevel(level) { return (HALF_GROWTH * (level - 2) + BASE) * (level - 1); } function getPercentageToNextLevel(exp) { const lv = getLevel(exp); const x0 = getTotalExpToLevel(lv); return (exp - x0) / (getTotalExpToLevel(lv + 1) - x0); } module.exports = { hypixelLevel }