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);
}