Update Healer Man server
This commit is contained in:
1 parent
4c768fbec6
commit
b16821e92e
330 files changed
+35406
-1760
No files matched your search
@@ -3,6 +3,7 @@ import { TALENT_NODES, allocateTalentPoint } from "./talentCatalog";
|
||||
import {
|
||||
applyTalentModifierValue,
|
||||
parseTalentModifiers,
|
||||
talentUsesExplicitActivation,
|
||||
talentModifiersForRanks,
|
||||
} from "./talentModifiers";
|
||||
|
||||
@@ -229,6 +230,60 @@ describe("talent runtime modifiers", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps Frost Warding's Ward and armor clauses out of global scalar modifiers", () => {
|
||||
const frostWarding = TALENT_NODES.find((node) => node.id === "talent-70")!;
|
||||
const rankTwoDescription = frostWarding.rankDescriptions[1];
|
||||
const parsed = parseTalentModifiers(rankTwoDescription);
|
||||
expect(parsed).toEqual(expect.arrayContaining([
|
||||
expect.objectContaining({ kind: "armor-percent", amount: 50 }),
|
||||
expect.objectContaining({ kind: "damage-taken-percent", amount: -50 }),
|
||||
]));
|
||||
|
||||
const modifiers = talentModifiersForRanks({ [frostWarding.id]: 2 }, "mage");
|
||||
expect(modifiers).toEqual([]);
|
||||
expect(applyTalentModifierValue(100, modifiers, "armor-percent")).toBe(100);
|
||||
expect(applyTalentModifierValue(100, modifiers, "damage-taken-percent", {
|
||||
tags: ["magic", "fire"],
|
||||
})).toBe(100);
|
||||
});
|
||||
|
||||
it("keeps Paladin Vengeance conditional and keyed separately from Druid Vengeance", () => {
|
||||
const paladinVengeance = TALENT_NODES.find((node) => node.id === "talent-1402")!;
|
||||
const druidVengeance = TALENT_NODES.find((node) => node.name === "Vengeance" && node.id !== paladinVengeance.id)!;
|
||||
expect(talentUsesExplicitActivation(paladinVengeance.name, paladinVengeance.id)).toBe(true);
|
||||
expect(talentUsesExplicitActivation(druidVengeance.name, druidVengeance.id)).toBe(false);
|
||||
expect(talentModifiersForRanks({ [paladinVengeance.id]: 3 }, "paladin")).toEqual([]);
|
||||
expect(talentModifiersForRanks({ [druidVengeance.id]: 1 }, "druid")).not.toContainEqual(
|
||||
expect.objectContaining({ kind: "damage-percent", scope: "bonus to Holy damage" }),
|
||||
);
|
||||
});
|
||||
|
||||
it("keeps Bestial Discipline pet Focus out of player resource scalars and scopes its Mana rider to Intimidation", () => {
|
||||
const bestialDiscipline = TALENT_NODES.find((node) => node.id === "talent-1390")!;
|
||||
expect(parseTalentModifiers(bestialDiscipline.rankDescriptions[0])).toEqual([
|
||||
expect.objectContaining({
|
||||
kind: "resource-cost-percent",
|
||||
amount: -25,
|
||||
scope: "the mana cost of your Intimidation",
|
||||
}),
|
||||
]);
|
||||
|
||||
const modifiers = talentModifiersForRanks({ [bestialDiscipline.id]: 2 }, "hunter");
|
||||
expect(modifiers).toHaveLength(1);
|
||||
expect(modifiers[0]).toMatchObject({ kind: "resource-cost-percent", amount: -50 });
|
||||
expect(applyTalentModifierValue(100, modifiers, "resource-cost-percent", { abilityName: "Intimidation" })).toBe(50);
|
||||
expect(applyTalentModifierValue(100, modifiers, "resource-cost-percent", { abilityName: "Arcane Shot" })).toBe(100);
|
||||
expect(applyTalentModifierValue(5, modifiers, "resource-regeneration-percent")).toBe(5);
|
||||
});
|
||||
|
||||
it("keeps Illumination's Light's Hammer rider with its critical-heal proc helper", () => {
|
||||
const illumination = TALENT_NODES.find((node) => node.id === "talent-1461")!;
|
||||
expect(parseTalentModifiers(illumination.rankDescriptions[0])).toContainEqual(
|
||||
expect.objectContaining({ kind: "cooldown-flat-ms", amount: -5_000 }),
|
||||
);
|
||||
expect(talentModifiersForRanks({ [illumination.id]: 1 }, "paladin")).toEqual([]);
|
||||
});
|
||||
|
||||
it("scopes Improved Flash Heal critical chance and keeps its Inner Focus proc out of static cooldowns", () => {
|
||||
const improvedFlashHeal = TALENT_NODES.find((node) => node.name === "Improved Flash Heal")!;
|
||||
const modifiers = talentModifiersForRanks({ [improvedFlashHeal.id]: 3 }, "priest");
|
||||
|
||||
Reference in new issue
Block a user