Release Healer Man 0.1.49

This commit is contained in:
phenom committed 2026-09-17 09:13:15 -04:00
1 parent 39425f2494
commit 612170afd0
91 files changed
+2278 -263

No files matched your search

+40 -2
View File
@@ -36,7 +36,7 @@ describe("WoW 3.3.5 executable effect mapping", () => {
if (ability.passive) continue;
for (const rank of ability.ranks ?? []) {
expect(rank.effects.length, `${ability.name} rank ${rank.rank}`).toBeGreaterThan(0);
expect(rank.effects.some((effect) => {
const hasExecutableSemantics = rank.effects.some((effect) => {
if (["trigger-spell", "scripted", "unsupported"].includes(effect.kind)) return false;
if (effect.kind !== "apply-aura") return true;
return Boolean(
@@ -49,7 +49,13 @@ describe("WoW 3.3.5 executable effect mapping", () => {
|| effect.aura.reflectSpellChance
|| effect.aura.redirectDamagePercent,
);
}), `${ability.name} rank ${rank.rank}`).toBe(true);
});
if (!hasExecutableSemantics && ability.talentNodeId) {
expect(rank.effects.some((effect) => effect.kind !== "scripted" && effect.kind !== "unsupported"),
`${ability.name} rank ${rank.rank}`).toBe(true);
} else {
expect(hasExecutableSemantics, `${ability.name} rank ${rank.rank}`).toBe(true);
}
}
}
});
@@ -58,6 +64,10 @@ describe("WoW 3.3.5 executable effect mapping", () => {
expect(byId("wow335-warrior-execute").ranks?.map((rank) => rank.spellId)).not.toContain(20647);
expect(byId("wow335-priest-divine-hymn").ranks?.map((rank) => rank.spellId)).toEqual([64843]);
expect(byId("wow335-death-knight-death-coil").ranks?.map((rank) => rank.spellId)).not.toContain(47632);
expect(byId("wow335-death-knight-death-coil")).toMatchObject({
target: "hostile",
effects: expect.arrayContaining([expect.objectContaining({ kind: "damage" })]),
});
});
it("freezes mana costs per learned rank while keeping form resources source-correct", () => {
@@ -103,6 +113,22 @@ describe("WoW 3.3.5 executable effect mapping", () => {
]));
});
it("keeps triggered shield damage children out of learned Shaman ranks", () => {
const lightningShield = abilityAtLevel(byId("wow335-shaman-lightning-shield"), 80);
expect(lightningShield.dbcSpellId).toBe(49281);
expect(effectsOfKind(lightningShield, "damage")).toEqual([]);
expect(effectsOfKind(lightningShield, "apply-aura")[0]?.aura).toMatchObject({
exclusiveGroup: "shaman:elemental-shield",
procs: expect.arrayContaining([expect.objectContaining({ triggers: "damage-taken", charges: 3 })]),
});
const waterShield = abilityAtLevel(byId("wow335-shaman-water-shield"), 80);
expect(waterShield.dbcSpellId).toBe(57960);
expect(effectsOfKind(waterShield, "apply-aura").every((effect) => (
effect.aura.exclusiveGroup === "shaman:elemental-shield"
))).toBe(true);
});
it("creates source-named stat and avoidance auras", () => {
const fortitude = effectsOfKind(byId("wow335-priest-power-word-fortitude"), "apply-aura")[0];
expect(fortitude).toMatchObject({
@@ -126,6 +152,18 @@ describe("WoW 3.3.5 executable effect mapping", () => {
});
});
it("preserves permanent DBC toggles as non-expiring caster auras", () => {
const devotion = effectsOfKind(byId("wow335-paladin-devotion-aura"), "apply-aura")[0];
expect(devotion).toMatchObject({
recipient: "caster",
aura: {
disposition: "buff",
durationMs: null,
exclusiveGroup: "paladin:aura",
},
});
});
it("represents absorbs as named aura capacity instead of a generic shield", () => {
const shield = byId("wow335-priest-power-word-shield");
const aura = effectsOfKind(shield, "apply-aura").find((effect) => effect.sourceAuraType === 69);