updating buff and debuff icons. separated COA classes from WoW classes on the character creation screen

This commit is contained in:
phenom committed 2026-08-16 11:16:51 -04:00
1 parent b5c9bce1aa
commit c00f3211ea
39 files changed
+2037 -208

No files matched your search

+27 -12
View File
@@ -8,12 +8,14 @@ import {
classIconUrl,
classesForRace,
clampAppearance,
contentCategoryForClass,
normalizeCharacterName,
randomAppearance,
supportedGenders,
totalRaceClassCombinations,
validateCharacterName,
} from "./characterCatalog";
import { CONTENT_CATEGORIES } from "./contentCategories";
describe("wow335a character catalog", () => {
it("limits normal play to the live-verified race roster", () => {
@@ -34,9 +36,13 @@ describe("wow335a character catalog", () => {
it("matches the extracted Ascension playable catalog", () => {
const wowRaces = RACES.filter((race) => race.categoryId !== "rom");
const wowClasses = CLASSES.filter((characterClass) => characterClass.categoryId !== "rom");
const azerothClasses = CLASSES.filter((characterClass) => characterClass.categoryId !== "rom");
const wowClasses = CLASSES.filter((characterClass) => contentCategoryForClass(characterClass.id) === "wow");
const coaClasses = CLASSES.filter((characterClass) => contentCategoryForClass(characterClass.id) === "coa");
expect(wowRaces).toHaveLength(27);
expect(wowClasses).toHaveLength(31);
expect(azerothClasses).toHaveLength(31);
expect(wowClasses).toHaveLength(10);
expect(coaClasses).toHaveLength(21);
expect(COA_CLASS_IDS).toHaveLength(21);
expect(wowRaces.reduce((total, race) => total + classesForRace(race.id).length, 0)).toBe(740);
expect(totalRaceClassCombinations()).toBe(758);
@@ -48,7 +54,7 @@ describe("wow335a character catalog", () => {
"Forest Troll", "Taunka", "Northrend Skeleton", "Ice Troll", "Earthen",
"Human Cultist",
]);
expect(COA_CLASS_IDS.map((id) => wowClasses.find((entry) => entry.id === id)?.name)).toEqual([
expect(COA_CLASS_IDS.map((id) => coaClasses.find((entry) => entry.id === id)?.name)).toEqual([
"Barbarian", "Witch Doctor", "Felsworn", "Witch Hunter", "Stormbringer",
"Knight of Xoroth", "Guardian", "Templar", "Bloodmage", "Ranger",
"Chronomancer", "Necromancer", "Pyromancer", "Cultist", "Starcaller",
@@ -56,16 +62,25 @@ describe("wow335a character catalog", () => {
]);
});
it("separates default WoW, custom CoA, and RoM character creation categories", () => {
expect(CONTENT_CATEGORIES.map((category) => category.id)).toEqual(["wow", "rom", "coa"]);
expect(classesForRace("human", "wow").map((entry) => entry.id)).toContain("priest");
expect(classesForRace("human", "wow").map((entry) => entry.id)).not.toContain("barbarian");
expect(classesForRace("human", "coa").map((entry) => entry.id)).toContain("barbarian");
expect(classesForRace("human", "coa").map((entry) => entry.id)).not.toContain("priest");
expect(classesForRace("rom-human", "rom").map((entry) => entry.id)).toContain("rom-priest");
});
it("applies the race eligibility rows from CharBaseInfo.dbc", () => {
const wowClassCount = CLASSES.filter((characterClass) => characterClass.categoryId !== "rom").length;
expect(classesForRace("human").map((entry) => entry.id)).toContain("barbarian");
expect(classesForRace("human").map((entry) => entry.id)).not.toContain("felsworn");
expect(classesForRace("draenei").map((entry) => entry.id)).toContain("felsworn");
expect(classesForRace("draenei").map((entry) => entry.id)).toContain("knight-of-xoroth");
expect(classesForRace("troll").map((entry) => entry.id)).toContain("venomancer");
expect(classesForRace("troll").map((entry) => entry.id)).not.toContain("knight-of-xoroth");
expect(classesForRace("goblin")).toHaveLength(wowClassCount);
expect(classesForRace("human-cultist")).toHaveLength(wowClassCount);
expect(classesForRace("human", "coa").map((entry) => entry.id)).toContain("barbarian");
expect(classesForRace("human", "coa").map((entry) => entry.id)).not.toContain("felsworn");
expect(classesForRace("draenei", "coa").map((entry) => entry.id)).toContain("felsworn");
expect(classesForRace("draenei", "coa").map((entry) => entry.id)).toContain("knight-of-xoroth");
expect(classesForRace("troll", "coa").map((entry) => entry.id)).toContain("venomancer");
expect(classesForRace("troll", "coa").map((entry) => entry.id)).not.toContain("knight-of-xoroth");
expect(classesForRace("goblin", "wow")).toHaveLength(10);
expect(classesForRace("goblin", "coa")).toHaveLength(21);
expect(classesForRace("human-cultist")).toHaveLength(31);
expect(supportedGenders("vrykul")).toEqual(["male"]);
expect(supportedGenders("earthen")).toEqual(["male", "female"]);
});