Beispiel #1
0
 void UpdateAI(const uint32 diff)
 {
     switch(phase)
     {
     case 0: // circle around the platform
         return;
         break;
     case 1: // go to the middle and begin the fight
         if (check <= diff)
         {
             if (!me->IsWithinDist3d(VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],5))
             {
                 me->GetMotionMaster()->Clear();
                 me->GetMotionMaster()->MovePoint(0,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2]);
                 check = 1000;
             }
             else
             {
                 SummonAdds();
                 phase = 2;
                 return;
             }
         }
         else
             check -= diff;
         break;
     default: // adds do the job now
         if (check <= diff)
         {
             Creature *Nazan = Unit::GetCreature(*me, NazanGUID);
             Creature *Vazruden = Unit::GetCreature(*me, VazrudenGUID);
             if ((Nazan && Nazan->isAlive()) || (Vazruden && Vazruden->isAlive()))
             {
                 if ((Nazan && Nazan->getVictim()) || (Vazruden && Vazruden->getVictim()))
                     return;
                 else
                 {
                     UnsummonAdds();
                     EnterEvadeMode();
                     return;
                 }
             }
             else if (!lootSpawned)
             {
                 me->SummonGameObject(DUNGEON_MODE(ENTRY_REINFORCED_FEL_IRON_CHEST, ENTRY_REINFORCED_FEL_IRON_CHEST_H),VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,0,0,0,0,0);
                 me->SetLootRecipient(NULL); // don't think this is necessary..
                 //me->Kill(me);
                 lootSpawned = true;
             }
             check = 2000;
         }
         else
             check -= diff;
         break;
     }
 }
 void UpdateAI(uint32 diff) override
 {
     switch (phase)
     {
     case 0: // circle around the platform
         return;
         break;
     case 1: // go to the middle and begin the fight
         if (check <= diff)
         {
             if (!me->IsWithinDist3d(VazrudenMiddle[0], VazrudenMiddle[1], VazrudenMiddle[2], 5))
             {
                 me->GetMotionMaster()->Clear();
                 me->GetMotionMaster()->MovePoint(0, VazrudenMiddle[0], VazrudenMiddle[1], VazrudenMiddle[2]);
                 check = 1000;
             }
             else
             {
                 SummonAdds();
                 phase = 2;
                 return;
             }
         }
         else
             check -= diff;
         break;
     default: // adds do the job now
         if (check <= diff)
         {
             Creature* Nazan = ObjectAccessor::GetCreature(*me, NazanGUID);
             Creature* Vazruden = ObjectAccessor::GetCreature(*me, VazrudenGUID);
             if ((Nazan && Nazan->IsAlive()) || (Vazruden && Vazruden->IsAlive()))
             {
                 if ((Nazan && Nazan->GetVictim()) || (Vazruden && Vazruden->GetVictim()))
                     return;
                 else
                 {
                     UnsummonAdds();
                     EnterEvadeMode();
                     return;
                 }
             }
             check = 2000;
         }
         else
             check -= diff;
         break;
     }
 }
    void Reset()
    {
        me->GetCreatureListWithEntryInGrid(orcs, 17517, 70.0f);
        OrcGUID.clear();
        for (std::list<Creature*>::iterator itr = orcs.begin(); itr != orcs.end(); itr++)
            OrcGUID.push_back((*itr)->GetGUID());

        phase = 0;
        waypoint = 0;
        check = 0;
        UnsummonAdds();
        me->GetMotionMaster()->MovePath(PATH_ENTRY, true);

        if (instance)
            instance->SetData(DATA_VAZRUDEN, NOT_STARTED);
    }
 void Reset() override
 {
     Initialize();
     UnsummonAdds();
 }