Exemplo n.º 1
0
    void UpdateAI(const uint32 uiDiff)
    {
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
            return;

        if (m_bCanMoveToRandom)
        {
            if (m_uiReturnTimer < uiDiff)
            {
                DoMoveToRandom();
                m_uiReturnTimer = 800;
            }else m_uiReturnTimer -= uiDiff;
        }

        if (!m_bCanCast)
            return;

        if (m_uiEagleSwoopTimer < uiDiff)
        {
            if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM,0))
            {
                DoCastSpellIfCan(pTarget,SPELL_EAGLE_SWOOP);

                m_bCanMoveToRandom = true;
                m_bCanCast = false;
            }

            m_uiEagleSwoopTimer = urand(4000, 6000);
        }else m_uiEagleSwoopTimer -= uiDiff;
    }
Exemplo n.º 2
0
    void UpdateAI(const uint32 uiDiff) override
    {
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
            return;

        if (m_uiReturnTimer)
        {
            if (m_uiReturnTimer <= uiDiff)
            {
                DoMoveToRandom();
                m_uiReturnTimer = 0;
            }
            else
                m_uiReturnTimer -= uiDiff;
        }

        if (m_uiEagleSwoopTimer)
        {
            if (m_uiEagleSwoopTimer <= uiDiff)
            {
                if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0, nullptr, SELECT_FLAG_PLAYER))
                {
                    if (DoCastSpellIfCan(pTarget, SPELL_EAGLE_SWOOP) == CAST_OK)
                    {
                        m_uiEagleSwoopTimer = 0;
                        m_uiReturnTimer     = 1000;
                    }
                }
            }
            else
                m_uiEagleSwoopTimer -= uiDiff;
        }
    }