Update Healer Man server

This commit is contained in:
phenom committed 2026-10-02 10:38:12 -04:00
1 parent 4c768fbec6
commit b16821e92e
330 files changed
+35406 -1760

No files matched your search

+72
View File
@@ -0,0 +1,72 @@
import { describe, expect, it } from "vitest";
import { abilitiesForCharacter, learnedAbilityForBuild } from "./abilityCatalog";
import { romRogueChaosDaggerDamage } from "./romRogueChaosDagger";
import { ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG } from "./romRogueChaosDagger";
const baseInput = {
classId: "rom-rogue",
secondaryClassId: "rom-mage",
passiveLearned: true,
isAutoAttack: true,
attackLanded: true,
weaponHand: "main-hand" as const,
weaponDps: 100,
};
describe("current CoA Rogue/Mage Chaos Dagger", () => {
it("replaces the same-ID RuneWaker skill with the learned CoA passive and tooltip", () => {
const abilities = abilitiesForCharacter("rom-rogue", "rom-mage");
const chaosDagger = abilities.find((ability) => ability.dbcSpellId === 491178);
expect(chaosDagger).toMatchObject({
name: "Chaos Dagger",
passive: true,
target: "self",
castTimeMs: 0,
cooldownMs: 0,
cost: { resource: "mana", amount: 0 },
costs: [],
});
expect(chaosDagger?.description).toContain("169.4% of the attacking hand's weapon DPS");
expect(chaosDagger?.description).toContain("amount or duration");
expect(chaosDagger?.effects).toContainEqual(expect.objectContaining({
kind: "apply-aura",
aura: expect.objectContaining({
name: "Chaos Dagger",
utilityTags: [ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG],
}),
}));
expect(learnedAbilityForBuild(chaosDagger!, 14, {})).toBeNull();
expect(learnedAbilityForBuild(chaosDagger!, 15, {})).not.toBeNull();
expect(abilitiesForCharacter("rom-rogue", "rom-priest")
.some((ability) => ability.dbcSpellId === 491178)).toBe(false);
});
it("uses 169.4% of the weapon DPS for the hand that made the landed normal attack", () => {
expect(romRogueChaosDaggerDamage(baseInput)).toEqual({
amount: 169.4,
school: "fire",
weaponHand: "main-hand",
});
expect(romRogueChaosDaggerDamage({
...baseInput,
weaponHand: "off-hand",
weaponDps: 64.25,
})).toEqual({
amount: 108.8395,
school: "fire",
weaponHand: "off-hand",
});
});
it.each([
["wrong primary class", { classId: "rom-scout" }],
["wrong secondary class", { secondaryClassId: "rom-priest" }],
["passive not learned", { passiveLearned: false }],
["not an autoattack", { isAutoAttack: false }],
["attack missed", { attackLanded: false }],
["zero weapon DPS", { weaponDps: 0 }],
["invalid weapon DPS", { weaponDps: Number.NaN }],
] as const)("does not add a packet for %s", (_label, override) => {
expect(romRogueChaosDaggerDamage({ ...baseInput, ...override })).toBeNull();
});
});