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(); }