Add group and raid api to check for lockout

Add Group and Raid method DoesAnyMemberHaveExpeditionLockout

This is required by some expeditions that perform a manual check for
custom dialogue (Ikkinz group expeditions)
This commit is contained in:
hg
2020-09-18 13:42:11 -04:00
parent 40717970ff
commit ea34aa2030
10 changed files with 114 additions and 2 deletions
+27
View File
@@ -20,6 +20,7 @@
#include "client.h"
#include "entity.h"
#include "expedition.h"
#include "groups.h"
#include "mob.h"
#include "raids.h"
@@ -1862,3 +1863,29 @@ std::vector<RaidMember> Raid::GetMembers() const
}
return raid_members;
}
bool Raid::DoesAnyMemberHaveExpeditionLockout(
const std::string& expedition_name, const std::string& event_name, int max_check_count)
{
auto raid_members = GetMembers();
if (max_check_count > 0)
{
// priority is leader, group number, then ungrouped members
std::sort(raid_members.begin(), raid_members.end(),
[&](const RaidMember& lhs, const RaidMember& rhs) {
if (lhs.IsRaidLeader) {
return true;
} else if (rhs.IsRaidLeader) {
return false;
}
return lhs.GroupNumber < rhs.GroupNumber;
});
raid_members.resize(max_check_count);
}
return std::any_of(raid_members.begin(), raid_members.end(), [&](const RaidMember& raid_member) {
return Expedition::HasLockoutByCharacterName(raid_member.membername, expedition_name, event_name);
});
}