mirror of
https://github.com/EQEmu/Server.git
synced 2026-08-28 20:07:56 +00:00
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:
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user