Update Healer Man server
This commit is contained in:
1 parent
35dfdaed61
commit
4fb7a0b9c8
161 files changed
+24618
-529
No files matched your search
@@ -0,0 +1,51 @@
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
import { useCombatStore } from "./combatStore";
|
||||
import { ROM_ALL_ABILITIES } from "./romAbilityCatalog";
|
||||
import { ROM_PRIEST_CHAMPION_REGENERATE_PROC_AURA_ID, ROM_PRIEST_CHAMPION_REGENERATE_PROC_CHANCE } from "./romPriestChampionOverrides";
|
||||
|
||||
describe("RoM Priest/Champion Protection Rune Seal", () => {
|
||||
beforeEach(() => {
|
||||
useCombatStore.getState().initializeCharacter({
|
||||
classId: "rom-priest", secondaryClassId: "rom-champion", raceId: "rom-human", level: 30, role: "healer",
|
||||
});
|
||||
});
|
||||
|
||||
it("resets Heart Rune Energy on an 8% Regenerate tick proc", () => {
|
||||
const regenerate = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 490269)!;
|
||||
const heartRuneEnergy = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 498612)!;
|
||||
const initial = useCombatStore.getState();
|
||||
useCombatStore.setState({ cooldowns: { ...initial.cooldowns, [heartRuneEnergy.id]: 60_000 } });
|
||||
|
||||
expect(useCombatStore.getState().castAbility(regenerate.id, undefined, 1_000)).toMatchObject({ ok: true });
|
||||
const activeProcAura = useCombatStore.getState().auras.find((aura) => (
|
||||
aura.definition.id === ROM_PRIEST_CHAMPION_REGENERATE_PROC_AURA_ID
|
||||
));
|
||||
expect(activeProcAura?.definition.procs?.[0]).toMatchObject({
|
||||
chance: ROM_PRIEST_CHAMPION_REGENERATE_PROC_CHANCE,
|
||||
abilityIds: [regenerate.id],
|
||||
triggers: "periodic",
|
||||
});
|
||||
|
||||
// The deterministic 8% roll succeeds on Regenerate's first periodic tick.
|
||||
useCombatStore.getState().tick(0, 3_000);
|
||||
expect(useCombatStore.getState().cooldowns[heartRuneEnergy.id]).toBe(0);
|
||||
|
||||
// Include the final 20-second HoT tick when the exact expiry time is processed.
|
||||
useCombatStore.setState((state) => ({
|
||||
cooldowns: { ...state.cooldowns, [heartRuneEnergy.id]: 60_000 },
|
||||
}));
|
||||
useCombatStore.getState().tick(0, 21_000);
|
||||
expect(useCombatStore.getState().cooldowns[heartRuneEnergy.id]).toBe(0);
|
||||
});
|
||||
|
||||
it("does not activate the reset proc when Protection Rune Seal is not unlocked", () => {
|
||||
useCombatStore.getState().initializeCharacter({
|
||||
classId: "rom-priest", secondaryClassId: "rom-champion", raceId: "rom-human", level: 24, role: "healer",
|
||||
});
|
||||
const regenerate = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 490269)!;
|
||||
expect(useCombatStore.getState().castAbility(regenerate.id, undefined, 1_000)).toMatchObject({ ok: true });
|
||||
expect(useCombatStore.getState().auras.some((aura) => (
|
||||
aura.definition.id === ROM_PRIEST_CHAMPION_REGENERATE_PROC_AURA_ID
|
||||
))).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user