Complete RoM pair elite mechanics and creature family rules

This commit is contained in:
phenom committed 2026-09-23 19:38:13 -04:00
1 parent c8b3a3d95a
commit 0206fda9e2
21 files changed
+1082 -134

No files matched your search

+9 -6
View File
@@ -40,23 +40,26 @@ describe("generated RuneWaker player catalog", () => {
expect(audit.hashes.interfaceFdb).toMatch(/^[a-f0-9]{64}$/);
});
it("resolves every ordered pair to all ten executable elite milestones", () => {
expect(ROM_ELITE_ABILITIES).toHaveLength(660);
it("resolves every ordered pair to all ten elite milestones and the source-backed Devotion Halo", () => {
expect(ROM_ELITE_ABILITIES).toHaveLength(661);
const pairGroups = new Map<string, typeof ROM_ELITE_ABILITIES[number][]>();
for (const ability of ROM_ELITE_ABILITIES) {
const key = `${ability.classId}:${ability.secondaryClassId}`;
pairGroups.set(key, [...(pairGroups.get(key) ?? []), ability]);
}
expect(pairGroups.size).toBe(66);
for (const elites of pairGroups.values()) {
expect(elites.map((ability) => ability.unlockLevel)).toEqual(ELITE_LEVELS);
for (const [pair, elites] of pairGroups) {
expect(elites.map((ability) => ability.unlockLevel)).toEqual(pair === "rom-priest:rom-knight"
? [...ELITE_LEVELS, 70] : ELITE_LEVELS);
expect(elites.every((ability) => ability.source === "runewaker" && ability.effects.length > 0)).toBe(true);
}
expect(ROM_ALL_ABILITIES).toHaveLength(929);
expect(ROM_ALL_ABILITIES.every((ability) => (
expect(ROM_ALL_ABILITIES).toHaveLength(930);
expect(ROM_ALL_ABILITIES.filter((ability) => ability.id !== "rom-priest-rom-knight-elite-70-devotion-halo").every((ability) => (
/^\/assets\/ui\/rom-spells\/\d+\.png$/.test(ability.icon)
&& ability.icon === generated.skills.find((skill) => skill.id === ability.id)?.icon
))).toBe(true);
expect(ROM_ALL_ABILITIES.find((ability) => ability.id === "rom-priest-rom-knight-elite-70-devotion-halo")?.icon)
.toBe(generated.skills.find((skill) => skill.sourceSkillId === 499957)?.icon);
expect(generated.skills.every((ability) => (
ability.iconResolution === "native-interface-fdb"
&& /^\/assets\/ui\/rom-spells\/\d+\.png$/.test(ability.icon)