From b50783ae80bdd6595c8a5f262171fdef5659da2d Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 29 Dec 2021 17:56:11 +0100 Subject: Core/Spells: Implemented target 115 TARGET_UNIT_SRC_AREA_FURTHEST_ENEMY --- src/server/game/Spells/Spell.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 7b057e6b28b..10f2bda5cde 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1288,11 +1288,19 @@ void Spell::SelectImplicitAreaTargets(SpellEffectInfo const& spellEffectInfo, Sp CallScriptObjectAreaTargetSelectHandlers(targets, spellEffectInfo.EffectIndex, targetType); + if (targetType.GetTarget() == TARGET_UNIT_SRC_AREA_FURTHEST_ENEMY) + targets.sort(Trinity::ObjectDistanceOrderPred(referer, false)); + if (!targets.empty()) { // Other special target selection goes here if (uint32 maxTargets = m_spellValue->MaxAffectedTargets) - Trinity::Containers::RandomResize(targets, maxTargets); + { + if (targetType.GetTarget() != TARGET_UNIT_SRC_AREA_FURTHEST_ENEMY) + Trinity::Containers::RandomResize(targets, maxTargets); + else if (targets.size() > maxTargets) + targets.resize(maxTargets); + } for (std::list::iterator itr = targets.begin(); itr != targets.end(); ++itr) { -- cgit v1.2.3