示例#1
0
    void UpdateAI(const uint32 uiDiff)
    {
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim() || m_creature->HasAura(SPELL_RIFT_SHIELD))
             return;

        // Create additional Chaotic Rift at 50% HP
        if (!m_bChaoticRift && m_creature->GetHealthPercent() < 50.0f)
        {
            DoScriptText(EMOTE_SHIELD, m_creature);
            m_uiChaoticRiftGUID = CreateRiftAtRandomPoint();

            DoScriptText(SAY_SHIELD, m_creature);
            DoCastSpellIfCan(m_creature, SPELL_RIFT_SHIELD);
            m_bChaoticRift = true;
            return;
        }

        if (m_uiCreateRiftTimer < uiDiff)
        {
            CreateRiftAtRandomPoint();
            m_uiCreateRiftTimer = 25000;
        }
        else
            m_uiCreateRiftTimer -= uiDiff;

        if (m_uiSparkTimer < uiDiff)
        {
            if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
                DoCastSpellIfCan(pTarget, m_bIsRegularMode ? SPELL_SPARK : SPELL_SPARK_H);

            m_uiSparkTimer = 5000;
        }
        else
            m_uiSparkTimer -= uiDiff;

        DoMeleeAttackIfReady();
    }
示例#2
0
    void UpdateAI(const uint32 uiDiff)
    {
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim() || m_creature->HasAura(SPELL_RIFT_SHIELD))
             return;

        // Create additional Chaotic Rift at 75%, 50% and 25% HP
        if (m_creature->GetHealth()*4 < m_creature->GetMaxHealth()*m_uiShieldCount)
        {
            DoScriptText(EMOTE_SHIELD, m_creature);
            m_uiChaoticRiftGUID = CreateRiftAtRandomPoint();

            DoScriptText(SAY_SHIELD, m_creature);
            DoCast(m_creature, SPELL_RIFT_SHIELD);
            --m_uiShieldCount;
            return;
        }

        if (m_uiCreateRiftTimer < uiDiff)
        {
            CreateRiftAtRandomPoint();
            m_uiCreateRiftTimer = 25000;
        }
        else
            m_uiCreateRiftTimer -= uiDiff;

        if (m_uiSparkTimer < uiDiff)
        {
            if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
                DoCast(pTarget, m_bIsHeroicMode?SPELL_SPARK_H:SPELL_SPARK);

            m_uiSparkTimer = 5000;
        }
        else
            m_uiSparkTimer -= uiDiff;

        DoMeleeAttackIfReady();
    }