@zikeji/hypixel
Version:
With IntelliSense support & test coverage, this is an unopinionated async/await API wrapper for Hypixel's Public API. It is developed in TypeScript complete with documentation, typed interfaces for all API responses, built-in rate-limit handling, flexible
48 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSkyBlockProfileMemberSkills = getSkyBlockProfileMemberSkills;
/**
* This helper takes a profile member and converts raw skill EXP to skill levels using the skills resources. Returns false is none of the profile member does not have their skills API enabled.
* @param profileMember The SkyBlock profile member object you want to check.
* @param skills The skills resource object.
* @category Helper
*/
function getSkyBlockProfileMemberSkills(profileMember, skills) {
var _a;
if (!((_a = profileMember.player_data) === null || _a === void 0 ? void 0 : _a.experience)) {
return false;
}
const result = {};
for (let i = 0; i < Object.keys(skills).length; i += 1) {
const skillName = Object.keys(skills)[i];
const skillKey = `SKILL_${skillName}`;
const skill = skills[skillName];
let exp = 0;
if (skillKey in profileMember.player_data.experience) {
exp = profileMember.player_data.experience[skillKey];
}
let level = 0;
let totalExpToLevel = 0;
let expToNextLevel = 0;
for (let ii = 0; ii < skill.levels.length; ii += 1) {
const levelInfo = skill.levels[ii];
if (levelInfo.totalExpRequired > exp) {
expToNextLevel = levelInfo.totalExpRequired - exp;
break;
}
level = levelInfo.level;
totalExpToLevel = levelInfo.totalExpRequired;
}
result[skillName] = {
name: skill.name,
description: skill.description,
level,
exp,
totalExpToLevel,
expToNextLevel,
maxLevel: skill.maxLevel,
};
}
return result;
}
//# sourceMappingURL=SkyBlockSkills.js.map