Update Healer Man server

This commit is contained in:
phenom committed 2026-09-30 09:57:13 -04:00
1 parent 35dfdaed61
commit 4fb7a0b9c8
161 files changed
+24618 -529

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
import { describe, expect, it } from "vitest";
import { ROM_ELITE_ABILITIES } from "./romAbilityCatalog";
import { romEffectsForCast } from "./romCombatMechanics";
const grandDispel = ROM_ELITE_ABILITIES.find((ability) => ability.dbcSpellId === 492928)!;
const purify = ROM_ELITE_ABILITIES.find((ability) => ability.dbcSpellId === 491588)!;
const grandDispelTag = "rom-priest-mage-grand-dispel";
const mechanics = {
sealStacks: 0,
bleedCount: 0,
charged: false,
mainHandDagger: false,
casterMaxHealth: 1_000,
targetHealthPercent: 1,
};
function cleanseCategories(effects: ReturnType<typeof romEffectsForCast>): readonly string[] | undefined {
const dispel = effects.find((effect) => effect.kind === "dispel");
return dispel?.kind === "dispel" ? dispel.categories : undefined;
}
describe("RoM Mage/Priest Grand Dispel", () => {
it("exposes its source passive marker and keeps Purify curse-only without it", () => {
expect(grandDispel.effects).toEqual(expect.arrayContaining([
expect.objectContaining({
kind: "apply-aura",
aura: expect.objectContaining({ utilityTags: [grandDispelTag] }),
}),
]));
expect(purify).toMatchObject({ classId: "rom-mage", secondaryClassId: "rom-priest" });
expect(cleanseCategories(romEffectsForCast(purify, mechanics))).toEqual(["curse"]);
});
it("adds only modeled harmful cleanse categories for the matching pair with Grand Dispel", () => {
const withPassive = romEffectsForCast(purify, {
...mechanics,
passiveTags: [grandDispelTag],
});
expect(withPassive).toContainEqual(expect.objectContaining({
kind: "dispel",
mode: "cleanse",
relationship: "friendly",
categories: ["magic", "curse", "poison", "disease"],
maxCount: 1,
}));
const wrongPair = romEffectsForCast({ ...purify, secondaryClassId: "rom-knight" }, {
...mechanics,
passiveTags: [grandDispelTag],
});
expect(cleanseCategories(wrongPair)).toEqual(["curse"]);
});
});