Consolidate GatherSpellTargets

This commit is contained in:
nytmyr
2025-01-20 14:33:01 -06:00
parent f296ff5a50
commit 1c2293e1aa
+11 -26
View File
@@ -8693,43 +8693,28 @@ void Mob::CheckScanCloseMobsMovingTimer()
std::vector<Mob*> Mob::GatherSpellTargets(bool entire_raid, Mob* target, bool no_clients, bool no_bots, bool no_pets) { std::vector<Mob*> Mob::GatherSpellTargets(bool entire_raid, Mob* target, bool no_clients, bool no_bots, bool no_pets) {
std::vector<Mob*> valid_spell_targets; std::vector<Mob*> valid_spell_targets;
if (IsRaidGrouped()) { auto is_valid_target = [no_clients, no_bots](Mob* member) {
Raid* raid = nullptr; return member &&
((member->IsClient() && !no_clients) || (member->IsBot() && !no_bots));
};
if (IsBot()) { if (IsRaidGrouped()) {
raid = CastToBot()->GetStoredRaid(); Raid* raid = IsBot() ? CastToBot()->GetStoredRaid() : GetRaid();
}
else {
raid = GetRaid();
}
if (raid) { if (raid) {
if (entire_raid) { if (entire_raid) {
for (const auto& m : raid->members) { for (const auto& m : raid->members) {
if (m.member && m.group_number != RAID_GROUPLESS && ((m.member->IsClient() && !no_clients) || (m.member->IsBot() && !no_bots))) { if (is_valid_target(m.member) && m.group_number != RAID_GROUPLESS) {
valid_spell_targets.emplace_back(m.member); valid_spell_targets.emplace_back(m.member);
} }
} }
} }
else { else {
std::vector<RaidMember> raid_group; auto group_name = target ? raid->GetGroup(target->GetName()) : raid->GetGroup(GetName());
auto raid_group = raid->GetRaidGroupMembers(group_name);
if (target) {
raid_group = raid->GetRaidGroupMembers(raid->GetGroup(target->GetName()));
}
else {
raid_group = raid->GetRaidGroupMembers(raid->GetGroup(GetName()));
}
for (const auto& m : raid_group) { for (const auto& m : raid_group) {
if ( if (is_valid_target(m.member) && m.group_number != RAID_GROUPLESS) {
m.member &&
m.group_number != RAID_GROUPLESS &&
(
(m.member->IsClient() && !no_clients) ||
(m.member->IsBot() && !no_bots)
)
) {
valid_spell_targets.emplace_back(m.member); valid_spell_targets.emplace_back(m.member);
} }
} }
@@ -8741,7 +8726,7 @@ std::vector<Mob*> Mob::GatherSpellTargets(bool entire_raid, Mob* target, bool no
if (group) { if (group) {
for (const auto& m : group->members) { for (const auto& m : group->members) {
if (m && ((m->IsClient() && !no_clients) || (m->IsBot() && !no_bots))) { if (is_valid_target(m)) {
valid_spell_targets.emplace_back(m); valid_spell_targets.emplace_back(m);
} }
} }