Update Healer Man server

This commit is contained in:
phenom committed 2026-09-23 16:14:19 -04:00
1 parent f90ba7d989
commit 189b94d6b7
51 files changed
+3448 -154

No files matched your search

+31
View File
@@ -320,6 +320,37 @@ test("creates online groups through invitations and transfers leadership when th
assert.deepEqual(transferred.group.members.map((member) => member.username), ["GroupHealer"]);
}));
test("keeps RoM and WoW characters in separate online groups", () => withDatabase(async (database) => {
const leaderAuth = await database.register("SourceLeader", "group-pass");
const memberAuth = await database.register("SourceMember", "member-pass");
const leader = database.authenticate(leaderAuth.token);
const member = database.authenticate(memberAuth.token);
database.inviteOnlineGroupMember(leader, member.username);
const invite = database.onlineGroupState(member.id).invitations[0];
database.respondToOnlineGroupInvite(member.id, invite.id, true);
const wowCharacter = { id: "wow-priest", name: "Wow Priest", classId: "priest", categoryId: "wow", level: 20 };
const romCharacter = { id: "rom-priest", name: "RoM Priest", classId: "rom-priest", categoryId: "rom", level: 20 };
database.updateOnlineGroupMember(leader.id, wowCharacter, "healer");
assert.throws(() => database.updateOnlineGroupMember(member.id, romCharacter, "healer"),
(error) => error instanceof GameDatabaseError && error.code === "mixed_group_sources");
assert.equal(database.onlineGroupState(member.id).group.members[1].character, null);
database.updateOnlineGroupMember(leader.id, romCharacter, "healer");
assert.throws(() => database.updateOnlineGroupMember(member.id, wowCharacter, "healer"),
(error) => error instanceof GameDatabaseError && error.code === "mixed_group_sources");
database.updateOnlineGroupMember(member.id, { ...romCharacter, id: "rom-mage", name: "RoM Mage", classId: "rom-mage" }, "damage");
assert.throws(() => database.startOnlineGroupActivity(leader.id, {
type: "dungeon", contentId: "randomized-bite-sized-stormwind-stockade", fillWithAi: true, partySize: 5,
}), (error) => error instanceof GameDatabaseError && error.code === "group_source_incompatible");
const started = database.startOnlineGroupActivity(leader.id, {
type: "dungeon", contentId: "wailing-caverns", fillWithAi: true, partySize: 5,
});
assert.equal(started.group.activity.partySize, 2);
assert.equal(started.group.activity.fillWithAi, false);
assert.deepEqual(started.group.activity.companionSpecializationIds, []);
}));
test("launches players-only and AI-filled group activities only when every member is ready", () => withDatabase(async (database) => {
const leaderAuth = await database.register("ReadyLeader", "group-pass");
const memberAuth = await database.register("ReadyMember", "member-pass");