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(); }
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(); }
void EnterCombat(Unit* pWho) { DoCastSpellShield(); }
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(); }
void EnterCombat(Unit* /*who*/) override { DoCastSpellShield(); }