コード例 #1
0
    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();
    }
コード例 #2
0
 void UpdateAI(const uint32 uiDiff)
 {
     if (uiWaveTimer <= uiDiff)
     {
         if(uiWaveCounter<=4)
         {
             SummonWave();
             uiWaveTimer = 15000;
             uiWaveCounter++;
         }
         else me->DespawnOrUnsummon();
     } else uiWaveTimer -= uiDiff;
 }
コード例 #3
0
ファイル: isle_of_queldanas.cpp プロジェクト: mynew4/ReanEmu
        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;
            }
        }