示例#1
0
        void UpdateAI(uint32 diff)
        {
            if (!UpdateVictim())
                return;

            if (BlessingTimer <= diff)
            {
                if (Unit* unit = SelectCouncilMember())
                {
                    switch (urand(0, 1))
                    {
                        case 0:
                            DoCast(unit, SPELL_BLESS_SPELLWARD);
                            break;

                        case 1:
                            DoCast(unit, SPELL_BLESS_PROTECTION);
                            break;
                    }
                }
                BlessingTimer = 60000;
            } else BlessingTimer -= diff;

            if (ConsecrationTimer <= diff)
            {
                DoCast(me, SPELL_CONSECRATION);
                ConsecrationTimer = 40000;
            } else ConsecrationTimer -= diff;

            if (HammerOfJusticeTimer <= diff)
            {
                if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
                {
                    // is in ~10-40 yd range
                    if (me->IsInRange(target, 10.0f, 40.0f, false))
                    {
                        DoCast(target, SPELL_HAMMER_OF_JUSTICE);
                        HammerOfJusticeTimer = 20000;
                    }
                }
            } else HammerOfJusticeTimer -= diff;

            if (SealTimer <= diff)
            {
                switch (urand(0, 1))
                {
                    case 0: DoCast(me, SPELL_SEAL_OF_COMMAND);  break;
                    case 1: DoCast(me, SPELL_SEAL_OF_BLOOD);    break;
                }
                SealTimer = 40000;
            } else SealTimer -= diff;

            if (AuraTimer <= diff)
            {
                CastAuraOnCouncil();
                AuraTimer = 90000;
            } else AuraTimer -= diff;

            DoMeleeAttackIfReady();
        }
    void UpdateAI(const uint32 diff)
    {
        if (!UpdateVictim())
            return;

        if (BlessingTimer <= diff)
        {
            if (!me->IsNonMeleeSpellCasted(false))
            {
                if (Unit* pUnit = SelectCouncilMember())
                {

                    switch (rand()%2)
                    {
                        case 0: DoCast(pUnit, SPELL_BLESS_SPELLWARD);  break;
                        case 1: DoCast(pUnit, SPELL_BLESS_PROTECTION); break;
                    }
                }
                BlessingTimer = 15000;
            }
        } else BlessingTimer -= diff;

        if (JudgeTimer <= diff)
        {
           if (!me->IsNonMeleeSpellCasted(false))
           {
                if (me->HasAura(SPELL_SEAL_OF_COMMAND,0))
                {
                    if (TryDoCast(me->getVictim(),SPELL_JUDGEMENT_OF_COMMAND))
                    {
                        me->RemoveAurasDueToSpell(SPELL_SEAL_OF_COMMAND);
                        JudgeTimer = 45000;
                    }
                }
                if (me->HasAura(SPELL_SEAL_OF_BLOOD,0))
                {
                    if (TryDoCast(me->getVictim(),SPELL_JUDGEMENT_OF_BLOOD))
                    {
                        me->RemoveAurasDueToSpell(SPELL_SEAL_OF_BLOOD);
                        JudgeTimer = 45000;
                    }
                }
                JudgeTimer = 15000;
           }
        } else JudgeTimer -= diff;

        if (ConsecrationTimer <= diff)
        {
            if (TryDoCast(me, SPELL_CONSECRATION))
                ConsecrationTimer = 30000;
        } else ConsecrationTimer -= diff;

        if (HammerOfJusticeTimer <= diff)
        {
            if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
            {
                // is in ~10-40 yd range
                if (me->GetDistance2d(pTarget) > 10)
                {
                    if (TryDoCast(pTarget, SPELL_HAMMER_OF_JUSTICE))
                        HammerOfJusticeTimer = 20000;
                }
            }
        } else HammerOfJusticeTimer -= diff;

        if (SealTimer <= diff)
        {
            if (!me->IsNonMeleeSpellCasted(false))
            {
                switch (rand()%2)
                {
                    case 0: DoCast(me, SPELL_SEAL_OF_COMMAND);  break;
                    case 1: DoCast(me, SPELL_SEAL_OF_BLOOD);    break;
                }
                SealTimer = 30000;
            }
        } else SealTimer -= diff;

        if (AuraTimer <= diff)
        {
            if (!me->IsNonMeleeSpellCasted(false))
            {
                CastAuraOnCouncil();
                AuraTimer = 60000;
            }
        } else AuraTimer -= diff;

        DoMeleeAttackIfReady();
    }