void EnterCombat(Unit* pWho)
        {
            if (Unit* champ = vehicle->GetPassenger(SEAT_ID_0))
                champ->ToCreature()->SetInCombatWithZone();

            DoCastSpellShield();
        }
    void EnterCombat(Unit* /*who*/)
    {
        DoCastSpellShield();
        /*
        // Set Defend to 3 charges at start
        for (uint8 i = 0; i < 3; ++i)
            DoCast(me, SPELL_SHIELD, true);

        if (instance->GetData(MINION_ENCOUNTER) != IN_PROGRESS)
            instance->SetData(MINION_ENCOUNTER, IN_PROGRESS);
        */
    }
        void UpdateAI(const uint32 uiDiff)
        {
            npc_escortAI::UpdateAI(uiDiff);

            if (!UpdateVictim())
                return;

            if (uiBuffTimer <= uiDiff)
            {
                    DoCastSpellShield();
                uiBuffTimer = urand(30000,45000);
            }else uiBuffTimer -= uiDiff;

            //dosen't work at all
            if (uiShieldBreakerTimer <= uiDiff)
            {
//                Vehicle *pVehicle = me->GetVehicleKit();
//                if (!pVehicle)
//                    return;


                if (Unit* pPassenger = pVehicle->GetPassenger(SEAT_ID_0))
                {
                    Map::PlayerList const& players = me->GetMap()->GetPlayers();
                    if (me->GetMap()->IsDungeon() && !players.isEmpty())
                    {
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        {
                            Player* pPlayer = itr->getSource();
                            if (pPlayer && !pPlayer->isGameMaster() && me->IsInRange(pPlayer,10.0f,30.0f,false))
                            {
                                pPassenger->CastSpell(pPlayer,SPELL_SHIELD_BREAKER,true);
                                break;
                            }
                        }
                    }
                }
                uiShieldBreakerTimer = 7000;
            }else uiShieldBreakerTimer -= uiDiff;

            DoMeleeAttackIfReady();
        }
Exemplo n.º 4
0
 void EnterCombat(Unit* /*who*/)
 {
     DoCastSpellShield();
 }
        void UpdateAI(const uint32 uiDiff)
        {
            npc_escortAI::UpdateAI(uiDiff);

            if (!UpdateVictim())
                return;

            if (uiBuffTimer <= uiDiff)
            {
                if (!me->HasAura(SPELL_SHIELD))
                    DoCastSpellShield();

                uiBuffTimer = urand(30000,45000);
            }else uiBuffTimer -= uiDiff;

            if (uiChargeTimer <= uiDiff)
            {
                Map::PlayerList const& players = me->GetMap()->GetPlayers();
                if (me->GetMap()->IsDungeon() && !players.isEmpty())
                {
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                    {
                        Player* pPlayer = itr->getSource();
                        if (pPlayer && !pPlayer->isGameMaster() && me->IsInRange(pPlayer,8.0f,25.0f,false) && pPlayer->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
                        {
                            Creature* pVehicle = pPlayer->GetVehicleBase()->ToCreature();
                            if (pVehicle)
                        {
                            DoResetThreat();
                                me->AddThreat(pVehicle,1.0f);
                                DoCast(pVehicle, SPELL_CHARGE);
                            }
                            break;
                        }
                    }
                }
                uiChargeTimer = 5000;
            }else uiChargeTimer -= uiDiff;

            //dosen't work at all
            if (uiShieldBreakerTimer <= uiDiff)
            {
                    Map::PlayerList const& players = me->GetMap()->GetPlayers();
                    if (me->GetMap()->IsDungeon() && !players.isEmpty())
                    {
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        {
                            Player* pPlayer = itr->getSource();
                        if (pPlayer && !pPlayer->isGameMaster() && me->IsInRange(pPlayer,10.0f,30.0f,false) && pPlayer->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
                            {
                            Creature* pVehicle = pPlayer->GetVehicleBase()->ToCreature();
                            if (pVehicle)
                            {
                                DoResetThreat();
                                me->AddThreat(pVehicle,1.0f);
                                DoCast(pVehicle,SPELL_SHIELD_BREAKER);
                            }
                            break;
                        }
                    }
                }
                uiShieldBreakerTimer = 7000;
            }else uiShieldBreakerTimer -= uiDiff;

            DoMeleeAttackIfReady();
        }
Exemplo n.º 6
0
 void EnterCombat(Unit* pWho)
 {
     DoCastSpellShield();
 }
Exemplo n.º 7
0
        void UpdateAI(const uint32 diff)
        {
            npc_escortAI::UpdateAI(diff);

            if(!UpdateVictim())
                return;

            if(uiBuffTimer <= diff)
            {
                if(!me->HasAura(SPELL_SHIELD))
                    DoCastSpellShield();

                uiBuffTimer = urand(30000, 45000);
            } else uiBuffTimer -= diff;

            if(uiChargeTimer <= diff)
            {
                Map::PlayerList const& players = me->GetMap()->GetPlayers();
                if(me->GetMap()->IsDungeon() && !players.isEmpty())
                {
                    for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                    {
                        Player* pPlayer = itr->getSource();
                        if(pPlayer && me->IsInRange(pPlayer, 8.0f, 25.0f,false) && pPlayer->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
                        {
                            Creature* pVehicle = pPlayer->GetVehicleBase()->ToCreature();
                            if(pVehicle)
                            {
                                DoResetThreat();
                                me->AddThreat(pVehicle, 1.0f);
                                DoCast(pVehicle, SPELL_CHARGE);
                            }
                            break;
                        }
                    }
                }
                uiChargeTimer = 5000;
            } else uiChargeTimer -= diff;

            /*if(uiShieldBreakerTimer <= diff)
            {
                Map::PlayerList const& players = me->GetMap()->GetPlayers();
                if(me->GetMap()->IsDungeon() && !players.isEmpty())
                {
                    for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                    {
                        Player* pPlayer = itr->getSource();
                        if(pPlayer && me->IsInRange(pPlayer, 10.0f, 30.0f,false) && pPlayer->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
                        {
                            Creature* pVehicle = pPlayer->GetVehicleBase()->ToCreature();
                            if(pVehicle)
                            {
                                DoResetThreat();
                                me->AddThreat(pVehicle, 1.0f);
                                //DoCast(pVehicle,SPELL_SHIELD_BREAKER);
                                if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30.0f, true))
                                    me->CastSpell(target, SPELL_SHIELD_BREAKER, true);
                            }
                            break;
                        }
                    }
                 }
                 uiShieldBreakerTimer = 7000;
            } else uiShieldBreakerTimer -= diff;
            */
            if(uiShieldBreakerTimer <= diff)
            {
                if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
                {
                    switch(urand(1, 3)) {
                        case 1:
                        case 2:
                            break;
                        case 3:
                            me->CastSpell(target, SPELL_SHIELD_BREAKER, true);
                            break;
                    }
                }
                uiShieldBreakerTimer = 7000;
            } else uiShieldBreakerTimer -= diff;
            /*
            if(uiChargeTimer <= diff)
            {
                if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
                    me->CastSpell(target, SPELL_CHARGE, true);
                uiChargeTimer = 3000;
            } else uiChargeTimer -= diff;
            */
            DoMeleeAttackIfReady();
        }
Exemplo n.º 8
0
 void EnterCombat(Unit* /*who*/) override
 {
     DoCastSpellShield();
 }