void MySelectNextTarget() { Unit* owner = me->GetOwner(); if (owner && owner->GetTypeId() == TYPEID_PLAYER) { Unit* ghoulTarget = ObjectAccessor::GetUnit(*me, GetGhoulTargetGUID()); Unit* dkTarget = owner->ToPlayer()->GetSelectedUnit(); if (ghoulTarget && ghoulTarget != me->GetVictim() && me->IsValidAttackTarget(ghoulTarget)) { me->GetMotionMaster()->Clear(false); SwitchTargetAndAttack(ghoulTarget); return; } if (dkTarget && dkTarget != me->GetVictim() && me->IsValidAttackTarget(dkTarget)) { me->GetMotionMaster()->Clear(false); SwitchTargetAndAttack(dkTarget); return; } if (!me->GetVictim() || !owner->CanSeeOrDetect(me->GetVictim())) { me->CombatStop(true); me->GetMotionMaster()->Clear(false); me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, 0.0f); RemoveTargetAura(); return; } } }
void MySelectNextTarget() { Unit* owner = me->GetOwner(); if (owner && owner->GetTypeId() == TYPEID_PLAYER && (!me->GetVictim() || me->GetVictim()->IsImmunedToSpell(sSpellMgr->GetSpellInfo(51963)) || !me->IsValidAttackTarget(me->GetVictim()) || !owner->CanSeeOrDetect(me->GetVictim()))) { Unit* selection = owner->ToPlayer()->GetSelectedUnit(); if (selection && selection != me->GetVictim() && me->IsValidAttackTarget(selection)) { me->GetMotionMaster()->Clear(false); SetGazeOn(selection); } else if (!me->GetVictim() || !owner->CanSeeOrDetect(me->GetVictim())) { me->CombatStop(true); me->GetMotionMaster()->Clear(false); me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, 0.0f); RemoveTargetAura(); } } }