diff options
Diffstat (limited to 'build')
-rw-r--r-- | build/cleaners/skyblock/skills.js | 107 |
1 files changed, 104 insertions, 3 deletions
diff --git a/build/cleaners/skyblock/skills.js b/build/cleaners/skyblock/skills.js index cd59593..f47b152 100644 --- a/build/cleaners/skyblock/skills.js +++ b/build/cleaners/skyblock/skills.js @@ -4,7 +4,6 @@ exports.cleanSkills = exports.levelForSkillXp = void 0; const constants_1 = require("../../constants"); // the highest level you can have in each skill // numbers taken from https://hypixel-skyblock.fandom.com/wiki/Skills -// maybe these should be moved to skyblock-constants? const skillsMaxLevel = { farming: 60, mining: 60, @@ -19,6 +18,108 @@ const skillsMaxLevel = { runecrafting: 25, social: 25 }; +const skillXpTable = [ + 50, + 175, + 375, + 675, + 1175, + 1925, + 2925, + 4425, + 6425, + 9925, + 14925, + 22425, + 32425, + 47425, + 67425, + 97425, + 147425, + 222425, + 322425, + 522425, + 822425, + 1222425, + 1722425, + 2322425, + 3022425, + 3822425, + 4722425, + 5722425, + 6822425, + 8022425, + 9322425, + 10722425, + 12222425, + 13822425, + 15522425, + 17322425, + 19222425, + 21222425, + 23322425, + 25522425, + 27822425, + 30222425, + 32722425, + 35322425, + 38072425, + 40972425, + 44072425, + 47472425, + 51172425, + 55172425, + 59472425, + 64072425, + 68972425, + 74172425, + 79672425, + 85472425, + 91572425, + 97972425, + 104672425, + 111672425 // 60 +]; +const skillXpTableEasier = [ + 50, + 150, + 275, + 435, + 635, + 885, + 1200, + 1600, + 2100, + 2725, + 3510, + 4510, + 5760, + 7325, + 9325, + 11825, + 14950, + 18950, + 23950, + 30200, + 38050, + 47850, + 60100, + 75400, + 94450 // 25 +]; +// for skills that aren't in maxSkills, default to this +const skillsDefaultMaxLevel = 50; +/** + * Get the skill level for the amount of total xp + * @param xp The xp we're finding the level for + * @param easierLevel Whether it should use the alternate leveling xp table (used for cosmetic skills and dungeoneering) + */ +function levelForSkillXp(xp, maxLevel) { + const xpTable = maxLevel <= 25 ? skillXpTableEasier : skillXpTable; + const skillLevel = [...xpTable].reverse().findIndex(levelXp => xp >= levelXp); + return skillLevel === -1 ? 0 : xpTable.length - skillLevel; +} +exports.levelForSkillXp = levelForSkillXp; // for skills that aren't in maxSkills, default to this const skillsDefaultMaxLevel = 50; /** @@ -41,9 +142,9 @@ async function cleanSkills(data) { // the amount of total xp you have in this skill const skillXp = data[item]; const skillMaxLevel = (_a = skillsMaxLevel[skillName]) !== null && _a !== void 0 ? _a : skillsDefaultMaxLevel; - const xpTable = skillMaxLevel <= 25 ? await constants_1.fetchSkillXpEasier() : await constants_1.fetchSkillXp(); + const xpTable = skillMaxLevel <= 25 ? skillXpTableEasier : skillXpTable; // the level you're at for this skill - const skillLevel = await levelForSkillXp(skillXp, skillMaxLevel); + const skillLevel = levelForSkillXp(skillXp, skillMaxLevel); // the total xp required for the previous level const previousLevelXp = skillLevel >= 1 ? xpTable[skillLevel - 1] : 0; // the extra xp left over |