add everything

This commit is contained in:
Koolant
2026-04-17 12:29:41 -04:00
commit 4c1cfe6847
437 changed files with 11939 additions and 0 deletions

82
js/score.js Normal file
View File

@@ -0,0 +1,82 @@
/**
* Numbers of decimal digits to round to
*/
const scale = 0;
/**
* Calculate the score awarded when having a certain percentage on a list level
* @param {Number} rank Position on the list
* @param {Number} percent Percentage of completion
* @param {Number} minPercent Minimum percentage required
* @returns {Number}
*/
export function score(rank, percent, minPercent) {
if (rank > 150) {
return 0;
}
if (rank > 75 && percent < 100) {
return 0;
}
if (rank == null) {
return 0;
}
// Old formula
/*
let score = (100 / Math.sqrt((rank - 1) / 50 + 0.444444) - 50) *
((percent - (minPercent - 1)) / (100 - (minPercent - 1)));
*/
// New formula
/*let score = Math.round((-49.9975*Math.pow(rank-1, 0.4) + 350) * ((percent - (minPercent - 1)) / (100 - (minPercent - 1))));
score = Math.max(0, score);*/
// peter griffin formula
let score = Math.round((-59.9975*Math.pow(rank-1, 0.345) + 350));
score = Math.max(0, score);
if (percent != 100) {
return round(score * 0.1);
}
return Math.max(round(score), 0);
}
export function packScore(levels) {
if (!levels || !levels.length) return 0;
let total = 0;
for (const level of levels) {
total += score(level.listRank, 100, level.percentToQualify ?? 0);
}
// pack bonus multiplier
let multiplier = 1;
if (levels.length >= 7) multiplier = 1.4;
else if (levels.length >= 5) multiplier = 1.3;
else if (levels.length >= 3) multiplier = 1.2;
else if (levels.length >= 2) multiplier = 1.1;
return round((total * multiplier)/levels.length);
}
export function round(num) {
if (!('' + num).includes('e')) {
return +(Math.round(num + 'e+' + scale) + 'e-' + scale);
} else {
var arr = ('' + num).split('e');
var sig = '';
if (+arr[1] + scale > 0) {
sig = '+';
}
return +(
Math.round(+arr[0] + 'e' + sig + (+arr[1] + scale)) +
'e-' +
scale
);
}
}