MediaWiki:ClassMasteryData.js: Difference between revisions

From EQOA Sandstorm Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 55: Line 55:
     if (lines.length < 2) return;
     if (lines.length < 2) return;


     var headers = lines[0].split("\t").map(function (h) {
     var headers = lines[0].split(/\t/).map(function (h) {
         return h.trim();
         return h.trim();
     });
     });

Revision as of 18:11, 14 May 2026

window.EQOA_CM_DATA = {
    classes: {
        WAR: "Warrior",
        PAL: "Paladin",
        SK: "Shadowknight",
        RGE: "Rogue",
        BRD: "Bard",
        RAN: "Ranger",
        MNK: "Monk",
        CL: "Cleric",
        DRD: "Druid",
        SHA: "Shaman",
        NEC: "Necromancer",
        MAG: "Magician",
        ENC: "Enchanter",
        WIZ: "Wizard",
        ALC: "Alchemist"
    },

    raceClasses: {
        Human: ["WAR", "PAL", "RGE", "BRD", "RAN", "MNK", "CL", "DRD", "NEC", "MAG", "ENC", "WIZ", "ALC"],
        Elf: ["WAR", "PAL", "RGE", "BRD", "RAN", "CL", "DRD", "MAG", "ENC", "WIZ"],
        DarkElf: ["WAR", "SK", "RGE", "CL", "NEC", "MAG", "ENC", "WIZ", "ALC"],
        Gnome: ["WAR", "RGE", "CL", "NEC", "MAG", "ENC", "WIZ", "ALC"],
        Dwarf: ["WAR", "PAL", "RGE", "CL"],
        Halfling: ["WAR", "RGE", "RAN", "DRD"],
        Troll: ["WAR", "SK", "RGE", "SHA"],
        Ogre: ["WAR", "SK", "SHA", "ALC"],
        Erudite: ["PAL", "CL", "NEC", "MAG", "ENC", "WIZ", "ALC"],
        Barbarian: ["WAR", "RGE", "RAN", "SHA", "ALC"]
    },

    raceCodes: {
        Human: "HUM",
        Elf: "ELF",
        DarkElf: "DELF",
        Gnome: "GNO",
        Dwarf: "DWF",
        Halfling: "HLF",
        Troll: "TRL",
        Ogre: "OGR",
        Erudite: "ERU",
        Barbarian: "BAR"
    },

    maxLevel: 60,
    cmPerLevel: 25,
    masteries: []
};

(function () {
    if (!window.EQOA_CM_RAW) return;

    var lines = window.EQOA_CM_RAW.trim().split(/\r?\n/);
    if (lines.length < 2) return;

    var headers = lines[0].split(/\t/).map(function (h) {
        return h.trim();
    });

    function get(row, name) {
        var index = headers.indexOf(name);
        return index === -1 ? "" : (row[index] || "").trim();
    }

    function splitCodes(value) {
        if (!value) return [];
        return value.split(/\s+/).filter(Boolean);
    }

    window.EQOA_CM_DATA.masteries = lines.slice(1).map(function (line) {
        var row = line.split("\t");

        return {
            name: get(row, "Mastery"),
            description: get(row, "Description"),
            classification: get(row, "Classification"),
            subCategory: get(row, "Sub-Category"),
            races: splitCodes(get(row, "Race")),
            archetype: get(row, "Archetype"),
            classes: splitCodes(get(row, "Class")),
            level: parseInt(get(row, "Level"), 10) || 0,
            points: parseInt(get(row, "Points"), 10) || 0,
            cmSpentReq: parseInt(get(row, "CM Spent Req"), 10) || 0,
            req1: get(row, "CM Req 1"),
            req2: get(row, "CM Req 2"),
            req3: get(row, "CM Req 3"),
            req4: get(row, "CM Req 4")
        };
    }).filter(function (cm) {
        return cm.name;
    });
})();