Files
healer-man/src/game/coaCombatRuntime.test.ts
T
2026-08-20 14:05:50 -04:00

56 lines
2.8 KiB
TypeScript

import { beforeEach, describe, expect, it } from "vitest";
import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry";
import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry";
import { useCombatStore } from "./combatStore";
import { usePartyStore } from "./partyStore";
describe("Ascension Conquest combat runtime", () => {
beforeEach(() => {
clearMobRuntimeRegistry();
clearPartyRuntimeRegistry();
});
it("heals a selected ally with an enemy-or-ally spell", () => {
useCombatStore.getState().initializeCharacter({ classId: "cultist", raceId: "human", level: 20 });
usePartyStore.getState().initializeParty("coa-any-friendly", 20, useCombatStore.getState().health, "healer", 2, "coa");
const member = usePartyStore.getState().members[0]!;
usePartyStore.getState().damageMember(member.id, 500);
registerPartyRuntimePosition(member.id, [3, 0, 0]);
usePartyStore.getState().selectMember(member.id);
const injuredHealth = usePartyStore.getState().members[0]!.health;
expect(useCombatStore.getState().castAbility("cultist-gaze-of-cthun", undefined, 1_000)).toMatchObject({ ok: true });
expect(usePartyStore.getState().members[0]!.health).toBeGreaterThan(injuredHealth);
});
it("damages a selected enemy with the same enemy-or-ally spell", () => {
useCombatStore.getState().initializeCharacter({ classId: "cultist", raceId: "human", level: 20 });
usePartyStore.getState().clearSelection();
useCombatStore.getState().registerMob("gaze-dummy", { name: "Gaze Dummy", maxHealth: 5_000 });
setMobPosition("gaze-dummy", [3, 0, 0]);
useCombatStore.getState().selectMob("gaze-dummy");
expect(useCombatStore.getState().castAbility("cultist-gaze-of-cthun", undefined, 1_000)).toMatchObject({ ok: true });
expect(useCombatStore.getState().mobs["gaze-dummy"]!.health).toBeLessThan(5_000);
});
it("executes a hidden DBC payload when a passive proc fires", () => {
useCombatStore.getState().initializeCharacter({ classId: "pyromancer", raceId: "human", level: 20 });
usePartyStore.getState().initializeParty("coa-hidden-proc", 20, useCombatStore.getState().health, "healer", 2, "coa");
const member = usePartyStore.getState().members[0]!;
usePartyStore.getState().damageMember(member.id, 500);
registerPartyRuntimePosition(member.id, [3, 0, 0]);
usePartyStore.getState().selectMember(member.id);
expect(useCombatStore.getState().auras.some((aura) => aura.definition.name.includes("Phoenix Handler"))).toBe(true);
expect(useCombatStore.getState().castAbility("coa-24-cinderheart-476-502044", undefined, 1_000)).toMatchObject({ ok: true });
useCombatStore.getState().tick(0.1, 4_100);
expect(useCombatStore.getState().auras.some((aura) => (
aura.definition.id === "coa:704865:effect:0:aura:23"
))).toBe(true);
});
});