forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
4c768fbec6
commit
b16821e92e
330 files changed
+35406
-1760
No files matched your search
@@ -0,0 +1,61 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { abilityById } from "./abilityCatalog";
|
||||
import { applyAura, resolveDamageValue } from "./combatAuras";
|
||||
|
||||
describe("RoM Mage Fire Ward catalog behavior", () => {
|
||||
it("retains RuneWaker's +10 Fire resistance and applies current CoA's all-magic reduction", () => {
|
||||
const fireWard = abilityById("rom-mage-general-5");
|
||||
expect(fireWard).toMatchObject({
|
||||
dbcSpellId: 490_248,
|
||||
target: "self",
|
||||
castMode: "instant",
|
||||
castTimeMs: 0,
|
||||
cooldownMs: 0,
|
||||
range: { min: 0, max: 15 },
|
||||
radius: 10,
|
||||
targeting: { shape: "circle", radius: 10 },
|
||||
costs: [{ resource: "mana", amount: 120 }],
|
||||
description: expect.stringContaining("+230 Fire resistance at skill level 105"),
|
||||
});
|
||||
expect(fireWard?.description).toContain("Fire resistance by 10 points");
|
||||
expect(fireWard?.description).toContain("11.5%");
|
||||
|
||||
const auraEffect = fireWard?.effects.find((effect) => effect.kind === "apply-aura");
|
||||
expect(auraEffect).toMatchObject({
|
||||
kind: "apply-aura",
|
||||
scope: "party",
|
||||
radius: 10,
|
||||
aura: { name: "Fire Ward: fire-resistance" },
|
||||
});
|
||||
if (!auraEffect || auraEffect.kind !== "apply-aura") throw new Error("Fire Ward aura missing");
|
||||
|
||||
expect(auraEffect.aura.durationMs).toBe(600_000);
|
||||
expect(auraEffect.aura.modifiers).toContainEqual(expect.objectContaining({
|
||||
kind: "stat",
|
||||
stat: "resistance:fire",
|
||||
operation: "flat",
|
||||
value: 10,
|
||||
}));
|
||||
expect(auraEffect.aura.description).toContain("CoA lists +230 at skill level 105");
|
||||
|
||||
const auras = applyAura([], {
|
||||
definition: auraEffect.aura,
|
||||
sourceId: "fire-ward-mage",
|
||||
targetId: "fire-ward-recipient",
|
||||
now: 1_000,
|
||||
}).auras;
|
||||
const magicalSchools = ["arcane", "fire", "frost", "holy", "nature", "shadow"] as const;
|
||||
for (const school of magicalSchools) {
|
||||
expect(resolveDamageValue(100, auras, {
|
||||
direction: "taken",
|
||||
school,
|
||||
attackKind: "spell",
|
||||
})).toBeCloseTo(88.5);
|
||||
}
|
||||
expect(resolveDamageValue(100, auras, {
|
||||
direction: "taken",
|
||||
school: "physical",
|
||||
attackKind: "melee",
|
||||
})).toBe(100);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user