void UpdateAI(const uint32 uiDiff) { if (!m_uiPlayerGUID || !m_bEventStarted) return; if (!m_uiMobCount && m_uiWaveCount < 4) { if (!m_bWaveAnnounced && m_uiAnnounceTimer < uiDiff) { DoScriptText(WavesInfo[m_uiWaveCount].iTextId, m_creature); m_bWaveAnnounced = true; } else m_uiAnnounceTimer -= uiDiff; if (m_uiWaveTimer < uiDiff) SummonWave(); else m_uiWaveTimer -= uiDiff; } if (m_uiCheckTimer < uiDiff) { CheckEventFail(); m_uiCheckTimer = 2000; } else m_uiCheckTimer -= uiDiff; if (m_bEventFailed) Reset(); }
void UpdateAI(const uint32 uiDiff) { if (uiWaveTimer <= uiDiff) { if(uiWaveCounter<=4) { SummonWave(); uiWaveTimer = 15000; uiWaveCounter++; } else me->DespawnOrUnsummon(); } else uiWaveTimer -= uiDiff; }
void UpdateAI(const uint32 diff) { events.Update(diff); switch(events.ExecuteEvent()) { case 1: // spawn all creatures if (Creature* pThalorien = me->SummonCreature(37205, 11797.0f, -7074.06f, 26.379f, 0.242908f, TEMPSUMMON_CORPSE_DESPAWN, 0)) { pThalorien->SetPhaseMask(2,true); uiThalorien = pThalorien->GetGUID(); } if (Creature* pGuard = me->SummonCreature(37211, 11807.0f, -7070.37f, 25.372f, 3.218f, TEMPSUMMON_TIMED_DESPAWN, 30000)) pGuard->SetPhaseMask(2,true); if (Creature* pGuard = me->SummonCreature(37211, 11805.7f, -7073.64f, 25.5694f, 3.218f, TEMPSUMMON_TIMED_DESPAWN, 30000)) pGuard->SetPhaseMask(2,true); if (Creature* pGuard = me->SummonCreature(37211, 11805.6f, -7077.0f, 25.9643f, 3.218f, TEMPSUMMON_TIMED_DESPAWN, 30000)) pGuard->SetPhaseMask(2,true); if (Creature* pGuard = me->SummonCreature(37211, 11806.0f, -7079.71f, 26.2067f, 3.218f, TEMPSUMMON_TIMED_DESPAWN, 30000)) pGuard->SetPhaseMask(2,true); if (Creature* pMorlen = me->SummonCreature(37542, 11776.8f, -7050.72f, 25.2394f, 5.13752f, TEMPSUMMON_CORPSE_DESPAWN, 0)) { pMorlen->Mount(25678); pMorlen->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); pMorlen->SetPhaseMask(2,true); pMorlen->SetReactState(REACT_PASSIVE); uiMorlen = pMorlen->GetGUID(); } events.ScheduleEvent(2,100); break; case 2: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_1, pThalorien); events.ScheduleEvent(3,5000); break; case 3: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_2, pThalorien); events.ScheduleEvent(4,5000); break; case 4: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_3, pThalorien); events.ScheduleEvent(5,10000); break; case 5: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_4, pThalorien); events.ScheduleEvent(6,6000); break; case 6: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) pThalorien->GetMotionMaster()->MovePoint(0, 11787.3f, -7064.11f, 25.8395f); events.ScheduleEvent(7,6000); break; case 7: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_5, pThalorien); events.ScheduleEvent(8,9000); break; case 8: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_6, pThalorien); if (Creature* pMorlen = me->GetCreature(*me, uiMorlen)) pMorlen->CastSpell(pMorlen, 50689, true); events.ScheduleEvent(9,9000); break; // Intro terminada, comienzan las oleadas. case 9: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) pThalorien->SetHomePosition(pThalorien->GetPositionX(), pThalorien->GetPositionY(), pThalorien->GetPositionZ(), pThalorien->GetOrientation()); SummonWave(37538); events.ScheduleEvent(10, 30000); break; case 10: SummonWave(37539); events.ScheduleEvent(11, 30000); break; case 11: SummonWave(37541); events.ScheduleEvent(12, 30000); break; case 12: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) { if (Creature* pMorlen = me->GetCreature(*me, uiMorlen)) { pMorlen->SetReactState(REACT_AGGRESSIVE); pMorlen->AddThreat(pThalorien, 100); pMorlen->AI()->AttackStart(pThalorien); } } break; // Outro case 13: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_7, pThalorien); events.ScheduleEvent(14, 3500); break; case 14: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_8, pThalorien); events.ScheduleEvent(15, 3500); break; case 15: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_9, pThalorien); events.ScheduleEvent(16, 3000); break; case 16: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) DoScriptText(SAY_THALORIEN_10, pThalorien); events.ScheduleEvent(17, 12000); break; case 17: if (Creature* pThalorien = me->GetCreature(*me, uiThalorien)) pThalorien->DisappearAndDie(); if (Player* player = me->GetPlayer(*me, uiPlayer)) player->KilledMonsterCredit(37601, player->GetGUID()); Reset(); break; } }