Release Healer Man 0.1.58

This commit is contained in:
phenom committed 2026-09-20 16:46:17 -04:00
1 parent 14e105642c
commit 246b4832b0
38 files changed
+952 -93

No files matched your search

+36
View File
@@ -86,6 +86,42 @@ describe("dungeon party composition", () => {
.toEqual(["hunter:marksmanship", "rogue:assassination"]);
});
it("fills only missing roles around every real player in an online five-player party", () => {
const options = {
occupiedHumanRoles: ["healer", "damage"] as const,
excludedPlayerSpecializationIds: ["priest:discipline", "mage:fire"],
allowedCompanionSpecializationIds: [
"warrior:protection",
"priest:discipline",
"hunter:marksmanship",
"mage:fire",
"rogue:assassination",
],
};
const leaderParty = createDungeonParty("shared-activity", 20, "healer", 4, "wow", options);
const memberParty = createDungeonParty("shared-activity", 20, "damage", 4, "wow", options);
expect(memberParty).toEqual(leaderParty);
expect(leaderParty).toHaveLength(3);
expect(leaderParty.map((member) => member.role).sort()).toEqual(["damage", "damage", "tank"]);
expect(leaderParty.every((member) => options.allowedCompanionSpecializationIds.includes(member.specializationId!))).toBe(true);
});
it("uses two damage NPCs when three real players already cover tank, healer, and damage", () => {
const party = createDungeonParty("three-player-activity", 20, "tank", 3, "wow", {
occupiedHumanRoles: ["tank", "healer", "damage"],
allowedCompanionSpecializationIds: [
"warrior:protection",
"priest:discipline",
"hunter:marksmanship",
"mage:fire",
"rogue:assassination",
],
});
expect(party).toHaveLength(2);
expect(party.every((member) => member.role === "damage")).toBe(true);
});
it("keeps RoM generation unchanged when WoW readiness is restrictive", () => {
const baseline = createDungeonParty("rom-readiness", 40, "damage", 5, "rom");
const filtered = createDungeonParty("rom-readiness", 40, "damage", 5, "rom", {