示例#1
0
            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;
                    }
                }
            }
示例#2
0
文件: pet_dk.cpp 项目: Keader/Sunwell
 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();
         }
     }
 }