void UpdateAI(const uint32 diff)
        {
            if (me->isInCombat())
            {
                //Supposed to be cast on nearest target
                if (FixateTimer <= diff)
                {
                    CastFixate();
                    FixateTimer = 5000;
                    if (!(rand()%16))
                    {
                        DoScriptText(SUFF_SAY_AGGRO, me);
                    }
                } else FixateTimer -= diff;
            }

            //Return since we have no target
            if (!UpdateVictim())
                return;

            if (EnrageTimer <= diff)
            {
                DoCast(me, SPELL_ENRAGE);
                EnrageTimer = 60000;
                DoScriptText(SUFF_EMOTE_ENRAGE, me);
            } else EnrageTimer -= diff;

            if (SoulDrainTimer <= diff)
            {
                DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_SOUL_DRAIN);
                SoulDrainTimer = 60000;
            } else SoulDrainTimer -= diff;

            DoMeleeAttackIfReady();
        }
    void UpdateAI(const uint32 diff)
    {
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
            return;

        if (m_creature->GetHealthPercent() <= 10.0f)
        {
            if (StatAuraGUID)
            {
                Unit* pUnit = NULL;
                pUnit = Unit::GetUnit((*m_creature), StatAuraGUID);
                if (pUnit)
                    pUnit->RemoveAurasDueToSpell(AURA_OF_SUFFERING_ARMOR);
            }
        }

        if (m_creature->GetHealthPercent() <= 10.0f)
        {
            if (m_creature->getVictim())
                m_creature->DeleteThreatList();             // Delete our threatlist if below 10% as we should no longer attack.
            return;
        }

        // Prevent overlapping yells
        if (AggroYellTimer)
        {
            if (AggroYellTimer <= diff)
            {
                DoScriptText(SUFF_SAY_AGGRO, m_creature);
                AggroYellTimer = 0;
            }else AggroYellTimer -= diff;
        }

        //Supposed to be cast on nearest target
        if (FixateTimer < diff)
        {
            CastFixate();
            FixateTimer = 5000;
        }else FixateTimer -= diff;

        if (EnrageTimer < diff)
        {
            DoCastSpellIfCan(m_creature, SPELL_ENRAGE);
            DoScriptText(SUFF_EMOTE_ENRAGE, m_creature);
            EnrageTimer = 60000;
        }else EnrageTimer -= diff;

        if (SoulDrainTimer < diff)
        {
            if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
                DoCastSpellIfCan(target, SPELL_SOUL_DRAIN);
            SoulDrainTimer = 60000;
        }else SoulDrainTimer -= diff;

        DoMeleeAttackIfReady();
    }