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); }); });