

+ if (Unit* owner = caster->GetCharmerOrOwner()) + if (!IsPositive() & !owner->_IsValidAttackTarget(unitTarget, this)) + return unitTarget->GetTypeId() = TYPEID_PLAYER ? (unitTarget->ToPlayer()->IsGameMaster() ? SPELL_FAILED_BM_OR_INVISGOD : SPELL_FAILED_BAD_TARGETS) : SPELL_FAILED_BAD_TARGETS + a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp -1532,6 +1532,10 SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta Src/server/game/Spells/SpellInfo.cpp | 14 ++++-ġ file changed, 4 insertions(+), 10 deletions(-)ĭiff -git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp + Unit* owner = me->GetOwner() + if (owner & victim & !owner->IsValidAttackTarget(victim)) + return Me->VisitNearbyObject(max_range, checker) Trinity::NearestAttackableUnitInObjectRangeCheck u_check(me, me, -77,6 +75,10 void TotemAI::UpdateAI(uint32 /*diff*/) if (!victim || - !victim->isTargetableForAttack() || !me->IsWithinDistInMap(victim, max_range) || - me->IsFriendlyTo(victim) || !me->CanSeeOrDetect(victim)) + if (!victim || !me->IsValidAttackTarget(victim) || !me->IsWithinDistInMap(victim, max_range)) Search victim if no, not attackable, or out of range, or friendly (possible in case duel end)

Unit* victim = i_victimGuid ? ObjectAccessor::GetUnit(*me, i_victimGuid) : NULL a/src/server/game/AI/CoreAI/TotemAI.cpp +++ b/src/server/game/AI/CoreAI/TotemAI.cpp -67,9 +67,7 void TotemAI::UpdateAI(uint32 /*diff*/) Src/server/game/AI/CoreAI/TotemAI.cpp | 8 +++++-ġ file changed, 5 insertions(+), 3 deletions(-)ĭiff -git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp
