From 1c2293e1aa043708c9f0a51d31ee910da1a3c10c Mon Sep 17 00:00:00 2001 From: nytmyr <53322305+nytmyr@users.noreply.github.com> Date: Mon, 20 Jan 2025 14:33:01 -0600 Subject: [PATCH] Consolidate GatherSpellTargets --- zone/mob.cpp | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/zone/mob.cpp b/zone/mob.cpp index 134e51e45..0cf06fbbc 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -8693,43 +8693,28 @@ void Mob::CheckScanCloseMobsMovingTimer() std::vector Mob::GatherSpellTargets(bool entire_raid, Mob* target, bool no_clients, bool no_bots, bool no_pets) { std::vector valid_spell_targets; - if (IsRaidGrouped()) { - Raid* raid = nullptr; + auto is_valid_target = [no_clients, no_bots](Mob* member) { + return member && + ((member->IsClient() && !no_clients) || (member->IsBot() && !no_bots)); + }; - if (IsBot()) { - raid = CastToBot()->GetStoredRaid(); - } - else { - raid = GetRaid(); - } + if (IsRaidGrouped()) { + Raid* raid = IsBot() ? CastToBot()->GetStoredRaid() : GetRaid(); if (raid) { if (entire_raid) { 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); } } } else { - std::vector raid_group; - - if (target) { - raid_group = raid->GetRaidGroupMembers(raid->GetGroup(target->GetName())); - } - else { - raid_group = raid->GetRaidGroupMembers(raid->GetGroup(GetName())); - } + auto group_name = target ? raid->GetGroup(target->GetName()) : raid->GetGroup(GetName()); + auto raid_group = raid->GetRaidGroupMembers(group_name); for (const auto& m : raid_group) { - 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); } } @@ -8741,7 +8726,7 @@ std::vector Mob::GatherSpellTargets(bool entire_raid, Mob* target, bool no if (group) { 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); } }