MediaWiki:ClassMasteryData.js

From EQOA Sandstorm Wiki
Revision as of 18:20, 14 May 2026 by RenodorDev (talk | contribs)
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
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,
            requirements: []
        };
    }).filter(function (cm) {
        return cm.name;
    });
})();