forked from phenom/healer-man
Release Healer Man 0.1.5
This commit is contained in:
1 parent
f4c9cf356c
commit
55cfd43d66
62 files changed
+3030
-153
No files matched your search
@@ -75,6 +75,20 @@ describe("party combat runtime", () => {
|
||||
expect(usePartyStore.getState().members.map((member) => member.nextActionAt)).toEqual(actionRevisions);
|
||||
});
|
||||
|
||||
it("keeps living companions in the fight while the player waits for resurrection", () => {
|
||||
registerEngagedMob();
|
||||
for (const member of usePartyStore.getState().members) {
|
||||
registerPartyRuntimePosition(member.id, [0, 0, 0]);
|
||||
}
|
||||
useCombatStore.getState().damagePlayer(useCombatStore.getState().maxHealth * 10);
|
||||
const beforeMobHealth = useCombatStore.getState().mobs["pack:a"].health;
|
||||
|
||||
advanceDungeonPartyCombat(1_000);
|
||||
|
||||
expect(useCombatStore.getState().health).toBe(0);
|
||||
expect(useCombatStore.getState().mobs["pack:a"].health).toBeLessThan(beforeMobHealth);
|
||||
});
|
||||
|
||||
it("assigns the tank to a loose mob attacking the healer before one attacking DPS", () => {
|
||||
const party = usePartyStore.getState();
|
||||
const tank = party.members.find((member) => member.role === "tank")!;
|
||||
@@ -177,6 +191,31 @@ describe("party combat runtime", () => {
|
||||
expect(coolingDown.targetId).toBeNull();
|
||||
});
|
||||
|
||||
it("uses an unlocked party resurrection instead of treating a defeated player as a heal target", () => {
|
||||
usePartyStore.getState().initializeParty("resurrection-runtime", 80, 100, "damage");
|
||||
const support = applyHealerSupport(usePartyStore.getState().members, 0, 100, 1_000);
|
||||
|
||||
expect(support).toMatchObject({
|
||||
action: "resurrection",
|
||||
targetId: "__player__",
|
||||
playerHealing: 0,
|
||||
});
|
||||
expect(support.playerResurrectionPercent).toBeGreaterThan(0);
|
||||
expect(support.presentation?.name.toLowerCase()).toMatch(/rebirth|redemption|resurrect|ancestral|revive/);
|
||||
});
|
||||
|
||||
it("lets the party raise the player in place while combat remains active", () => {
|
||||
useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 });
|
||||
usePartyStore.getState().initializeParty("resurrection-runtime", 80, useCombatStore.getState().health, "damage");
|
||||
useCombatStore.getState().damagePlayer(useCombatStore.getState().maxHealth * 10);
|
||||
expect(useCombatStore.getState().health).toBe(0);
|
||||
|
||||
advanceDungeonPartyCombat(1_000);
|
||||
|
||||
expect(useCombatStore.getState().health).toBeGreaterThan(0);
|
||||
expect(useCombatStore.getState().feedback?.message).toContain("Resurrected");
|
||||
});
|
||||
|
||||
it("classifies ranged classes and elemental shaman into a stand-off range band", () => {
|
||||
const ranged = [
|
||||
{ classId: "hunter", specialization: "Marksmanship", role: "damage" },
|
||||
|
||||
Reference in new issue
Block a user