MediaWiki:ClassMasteryData.js: Difference between revisions
From EQOA Sandstorm Wiki
Jump to navigationJump to search
RenodorDev (talk | contribs) No edit summary |
RenodorDev (talk | contribs) No edit summary |
||
| Line 89: | Line 89: | ||
}); | }); | ||
})(); | })(); | ||
var masteryNames = {}; | |||
window.EQOA_CM_DATA.masteries.forEach(function (cm) { | |||
masteryNames[cm.name] = true; | |||
}); | |||
window.EQOA_CM_DATA.masteries.forEach(function (cm) { | |||
var sourceLine = lines.find(function (line) { | |||
return line.indexOf(cm.name + "\t") === 0; | |||
}); | |||
if (!sourceLine) return; | |||
var cells = sourceLine.split("\t"); | |||
cm.requirements = cells.filter(function (cell) { | |||
cell = String(cell || "").trim(); | |||
return ( | |||
cell && | |||
cell !== cm.name && | |||
masteryNames[cell] | |||
); | |||
}); | |||
}); | |||
Revision as of 18:20, 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,
requirements: []
};
}).filter(function (cm) {
return cm.name;
});
})();
var masteryNames = {};
window.EQOA_CM_DATA.masteries.forEach(function (cm) {
masteryNames[cm.name] = true;
});
window.EQOA_CM_DATA.masteries.forEach(function (cm) {
var sourceLine = lines.find(function (line) {
return line.indexOf(cm.name + "\t") === 0;
});
if (!sourceLine) return;
var cells = sourceLine.split("\t");
cm.requirements = cells.filter(function (cell) {
cell = String(cell || "").trim();
return (
cell &&
cell !== cm.name &&
masteryNames[cell]
);
});
});