aboutsummaryrefslogtreecommitdiff
path: root/build/cleaners/skyblock
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2021-06-02 16:40:12 -0500
committermat <github@matdoes.dev>2021-06-02 16:40:12 -0500
commitdc2ef9bf01111efaf522e6fdee437d52d9f8c717 (patch)
tree53a28fdad5bc67d9dc442e8a524f99c4e3f33b42 /build/cleaners/skyblock
parentafa451371b7d685c31dac2dc18471fa0cc3af578 (diff)
parent69910faa449ee9d4ff63fc1a764434e7bd974d1b (diff)
downloadskyblock-api-dc2ef9bf01111efaf522e6fdee437d52d9f8c717.tar.gz
skyblock-api-dc2ef9bf01111efaf522e6fdee437d52d9f8c717.tar.bz2
skyblock-api-dc2ef9bf01111efaf522e6fdee437d52d9f8c717.zip
Merge branch 'main' of https://github.com/skyblockstats/skyblock-api into main
Diffstat (limited to 'build/cleaners/skyblock')
-rw-r--r--build/cleaners/skyblock/skills.js107
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