Combat Level Calculator
Enter your HighSpell username to load your stats via the hiscores, or input your desired skill levels to calculate your future combat level.
${hints.map(h => `- ${h}
`).join("")}
`;
}
function getStatFromDom(doc, skillName) {
const nameDivs = doc.querySelectorAll('.hs_data__row__name');
for (const nameDiv of nameDivs) {
if (nameDiv.textContent.toLowerCase().includes(skillName.toLowerCase())) {
const levelDiv = nameDiv.parentElement.querySelector('.hs_data__row__level');
if (levelDiv) {
const lvl = parseInt(levelDiv.textContent.trim());
if (!isNaN(lvl)) return lvl;
}
}
}
return 1; // fallback
}
function lookupStats() {
const username = document.getElementById("username").value.trim();
const button = document.getElementById("lookup-button");
if (!username) {
alert("Please enter a username.");
return;
}
// Update button to show loading state
button.disabled = true;
button.textContent = "Searching...";
fetch(`https://highspell.com/hiscores/player/${encodeURIComponent(username)}`)
.then(response => {
if (!response.ok) throw new Error("Failed to fetch hiscores");
return response.text();
})
.then(html => {
const doc = new DOMParser().parseFromString(html, "text/html");
document.getElementById("stat-hp").value = getStatFromDom(doc, "Hitpoints");
document.getElementById("stat-accuracy").value = getStatFromDom(doc, "Accuracy");
document.getElementById("stat-strength").value = getStatFromDom(doc, "Strength");
document.getElementById("stat-defense").value = getStatFromDom(doc, "Defense");
document.getElementById("stat-magic").value = getStatFromDom(doc, "Magic");
document.getElementById("stat-range").value = getStatFromDom(doc, "Range");
calculateCombatLevel();
})
.catch(err => {
alert("Lookup failed. Please check the username or try again later.");
console.error(err);
})
.finally(() => {
button.disabled = false;
button.textContent = "Lookup";
});
}
document.querySelectorAll('#combat-form input').forEach(input => {
input.addEventListener('input', calculateCombatLevel);
});
document.addEventListener('DOMContentLoaded', calculateCombatLevel);
document.getElementById("lookup-form").addEventListener("submit", function(e) {
e.preventDefault();
lookupStats();
});
Special thanks to User:Lol for proposing, developing, and contributing this calculator to the wiki.