JSFiddle - React, Tailwind, and code Playground
by Daedalus
JavaScript
var brackets = [{
"max_xp": "1000",
"type": "percent",
"mod": 1.5
}, {
"max_xp": "1500",
"type": "percent",
"mod": 1.25
}, {
"max_xp": "2000",
"type": "percent",
"mod": 1.05
}, {
"max_xp": "2500",
"type": "percent",
"mod": 1.0
}, {
"max_xp": "2500+",
"type": "flat",
"mod": 5
}];
var chars = [255, 999, 1000, 1499, 1500, 2000, 2499, 2500, 2600];
// 0 1 2 3 4 5 6 7 8
var exp = 100;
for (var char_i = 0; char_i < chars.length; char_i++) {
var xp;
for (var bracket_i = 0; bracket_i < brackets.length; bracket_i++) {
var bracket = brackets[bracket_i].max_xp,
prev_bracket;
if (bracket_i > 0) {
prev_bracket = brackets[(bracket_i - 1)].max_xp;
} else {
prev_bracket = 0;
}
if (bracket.indexOf("+") >= 0) {
bracket = chars[char_i];
} else {
bracket = parseInt(bracket);
}
if (chars[char_i] > prev_bracket && chars[char_i] <= bracket) {
if (brackets[bracket_i].type == "percent") {
xp = exp * brackets[bracket_i].mod;
} else if (brackets[bracket_i].type == "flat") {
xp = brackets[bracket_i].mod;
}
}
}
console.log(xp, char_i);
}