Update Healer Man server
This commit is contained in:
1 parent
9d7e0e2f9e
commit
35dfdaed61
94 files changed
+17034
-418
No files matched your search
@@ -67,6 +67,49 @@ describe("talent runtime modifiers", () => {
|
||||
]));
|
||||
});
|
||||
|
||||
it("scopes Improved Rejuvenation's effect bonus to Rejuvenation healing", () => {
|
||||
const improvedRejuvenation = TALENT_NODES.find((node) => node.id === "talent-830")!;
|
||||
const modifiers = talentModifiersForRanks({ [improvedRejuvenation.id]: 3 }, "druid");
|
||||
|
||||
expect(modifiers).toContainEqual(expect.objectContaining({
|
||||
kind: "healing-percent",
|
||||
amount: 20,
|
||||
sourceTalentId: "talent-830",
|
||||
rank: 3,
|
||||
}));
|
||||
expect(applyTalentModifierValue(100, modifiers, "healing-percent", {
|
||||
abilityName: "Rejuvenation",
|
||||
tags: ["periodic", "healing", "nature"],
|
||||
})).toBe(120);
|
||||
expect(applyTalentModifierValue(100, modifiers, "healing-percent", {
|
||||
abilityName: "Regrowth",
|
||||
tags: ["periodic", "healing", "nature"],
|
||||
})).toBe(100);
|
||||
});
|
||||
|
||||
it("keeps Warrior named-ability damage and cooldown bonuses on their source abilities", () => {
|
||||
const improvedExecute = TALENT_NODES.find((node) => node.name === "Improved Execute")!;
|
||||
const executeModifiers = talentModifiersForRanks({ [improvedExecute.id]: 1 }, "warrior");
|
||||
expect(applyTalentModifierValue(100, executeModifiers, "damage-percent", { abilityName: "Execute" })).toBe(108);
|
||||
expect(applyTalentModifierValue(100, executeModifiers, "damage-percent", { abilityName: "Heroic Strike" })).toBe(100);
|
||||
expect(applyTalentModifierValue(15, executeModifiers, "resource-cost-percent", { abilityName: "Heroic Strike" })).toBe(15);
|
||||
|
||||
const unrelentingAssault = TALENT_NODES.find((node) => node.name === "Unrelenting Assault")!;
|
||||
const assaultModifiers = talentModifiersForRanks({ [unrelentingAssault.id]: 1 }, "warrior");
|
||||
for (const abilityName of ["Overpower", "Revenge"]) {
|
||||
expect(applyTalentModifierValue(100, assaultModifiers, "damage-percent", { abilityName })).toBeCloseTo(110);
|
||||
expect(applyTalentModifierValue(10_000, assaultModifiers, "cooldown-flat-ms", { abilityName })).toBe(9_500);
|
||||
}
|
||||
expect(applyTalentModifierValue(100, assaultModifiers, "damage-percent", { abilityName: "Bloodthirst" })).toBe(100);
|
||||
expect(applyTalentModifierValue(10_000, assaultModifiers, "cooldown-flat-ms", { abilityName: "Bloodthirst" })).toBe(10_000);
|
||||
|
||||
const improvedDisciplines = TALENT_NODES.find((node) => node.name === "Improved Disciplines")!;
|
||||
const disciplineModifiers = talentModifiersForRanks({ [improvedDisciplines.id]: 1 }, "warrior");
|
||||
expect(applyTalentModifierValue(300_000, disciplineModifiers, "cooldown-flat-ms", { abilityName: "Shield Wall" })).toBe(290_000);
|
||||
expect(applyTalentModifierValue(30_000, disciplineModifiers, "cooldown-flat-ms", { abilityName: "Retaliation" })).toBe(20_000);
|
||||
expect(applyTalentModifierValue(10_000, disciplineModifiers, "cooldown-flat-ms", { abilityName: "Mortal Strike" })).toBe(10_000);
|
||||
});
|
||||
|
||||
it("keeps critical damage bonuses out of ordinary hit damage", () => {
|
||||
const modifiers = parseTalentModifiers("Increases the critical damage of your spells by 150%.")
|
||||
.map((modifier) => ({ ...modifier, sourceTalentId: "test", sourceTalentName: "Thunderous", rank: 1, description: "" }));
|
||||
@@ -88,4 +131,39 @@ describe("talent runtime modifiers", () => {
|
||||
tags: ["cast-time", "holy"],
|
||||
})).toBe(20);
|
||||
});
|
||||
|
||||
it("keeps Paladin activation and aura text out of persistent modifiers", () => {
|
||||
for (const name of ["Aura Mastery", "Divine Favor"]) {
|
||||
const talent = TALENT_NODES.find((node) => node.name === name);
|
||||
expect(talent, name).toBeDefined();
|
||||
expect(talentModifiersForRanks({ [talent!.id]: 1 }, "paladin"), name).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");
|
||||
|
||||
expect(applyTalentModifierValue(5, modifiers, "critical-chance-percent", { abilityName: "Flash Heal" })).toBe(20);
|
||||
expect(applyTalentModifierValue(5, modifiers, "critical-chance-percent", { abilityName: "Greater Heal" })).toBe(5);
|
||||
expect(modifiers.filter((modifier) => modifier.kind === "cooldown-flat-ms")).toEqual([]);
|
||||
});
|
||||
|
||||
it("applies Black Ice to either Frost or Shadow damage", () => {
|
||||
const blackIce = TALENT_NODES.find((node) => node.name === "Black Ice")!;
|
||||
const modifiers = talentModifiersForRanks({ [blackIce.id]: blackIce.maxRank }, "death-knight");
|
||||
|
||||
expect(applyTalentModifierValue(100, modifiers, "damage-percent", {
|
||||
abilityName: "Icy Touch",
|
||||
tags: ["damage", "frost"],
|
||||
})).toBeCloseTo(110);
|
||||
expect(applyTalentModifierValue(100, modifiers, "damage-percent", {
|
||||
abilityName: "Death Coil",
|
||||
tags: ["damage", "shadow"],
|
||||
})).toBeCloseTo(110);
|
||||
expect(applyTalentModifierValue(100, modifiers, "damage-percent", {
|
||||
abilityName: "Plague Strike",
|
||||
tags: ["damage", "physical"],
|
||||
})).toBe(100);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user