コード例 #1
0
    void UpdateEscortAI(const uint32 uiDiff)
    {
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
        {
            if (HasEscortState(STATE_ESCORT_PAUSED))
            {
                if (m_uiEventTimer < uiDiff)
                {
                    m_uiEventTimer = 7000;

                    switch(m_uiEventCount)
                    {
                        case 0:
                            DoScriptText(SAY_LE_ALMOST, m_creature);
                            break;
                        case 1:
                            DoScriptText(SAY_LE_DRUM, m_creature);
                            break;
                        case 2:
                            if (Creature* pResearcher = GetAvailableResearcher(0))
                                DoScriptText(SAY_LE_DRUM_REPLY, pResearcher);
                            break;
                        case 3:
                            DoScriptText(SAY_LE_DISCOVERY, m_creature);
                            break;
                        case 4:
                            if (Creature* pResearcher = GetAvailableResearcher(0))
                                DoScriptText(SAY_LE_DISCOVERY_REPLY, pResearcher);
                            break;
                        case 5:
                            DoScriptText(SAY_LE_NO_LEAVE, m_creature);
                            break;
                        case 6:
                            if (Creature* pResearcher = GetAvailableResearcher(1))
                                DoScriptText(SAY_LE_NO_LEAVE_REPLY1, pResearcher);
                            break;
                        case 7:
                            if (Creature* pResearcher = GetAvailableResearcher(2))
                                DoScriptText(SAY_LE_NO_LEAVE_REPLY2, pResearcher);
                            break;
                        case 8:
                            if (Creature* pResearcher = GetAvailableResearcher(3))
                                DoScriptText(SAY_LE_NO_LEAVE_REPLY3, pResearcher);
                            break;
                        case 9:
                            if (Creature* pResearcher = GetAvailableResearcher(4))
                                DoScriptText(SAY_LE_NO_LEAVE_REPLY4, pResearcher);
                            break;
                        case 10:
                            DoScriptText(SAY_LE_SHUT, m_creature);
                            break;
                        case 11:
                            if (Creature* pResearcher = GetAvailableResearcher(0))
                                DoScriptText(SAY_LE_REPLY_HEAR, pResearcher);
                            break;
                        case 12:
                            DoScriptText(SAY_LE_IN_YOUR_FACE, m_creature);
                            m_creature->SummonCreature(NPC_BONE_SIFTER, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
                            break;
                        case 13:
                            DoScriptText(EMOTE_LE_PICK_UP, m_creature);

                            if (Player* pPlayer = GetPlayerForEscort())
                            {
                                DoScriptText(SAY_LE_THANKS, m_creature, pPlayer);
                                pPlayer->GroupEventHappens(QUEST_DIGGING_BONES, m_creature);
                            }

                            SetEscortPaused(false);
                            break;
                    }

                    ++m_uiEventCount;
                }
                else
                    m_uiEventTimer -= uiDiff;
            }

            return;
        }

        DoMeleeAttackIfReady();
    }
コード例 #2
0
        void UpdateEscortAI(const uint32 uiDiff)
        {
            if (!UpdateVictim())
            {
                if (HasEscortState(STATE_ESCORT_PAUSED))
                {
                    if (m_uiEventTimer < uiDiff)
                    {
                        m_uiEventTimer = 7000;

                        switch(m_uiEventCount)
                        {
                            case 0:
                                DoScriptText(SAY_LE_ALMOST, me);
                                break;
                            case 1:
                                DoScriptText(SAY_LE_DRUM, me);
                                break;
                            case 2:
                                if (Creature* pResearcher = GetAvailableResearcher(0))
                                    DoScriptText(SAY_LE_DRUM_REPLY, pResearcher);
                                break;
                            case 3:
                                DoScriptText(SAY_LE_DISCOVERY, me);
                                break;
                            case 4:
                                if (Creature* pResearcher = GetAvailableResearcher(0))
                                    DoScriptText(SAY_LE_DISCOVERY_REPLY, pResearcher);
                                break;
                            case 5:
                                DoScriptText(SAY_LE_NO_LEAVE, me);
                                break;
                            case 6:
                                if (Creature* pResearcher = GetAvailableResearcher(1))
                                    DoScriptText(SAY_LE_NO_LEAVE_REPLY1, pResearcher);
                                break;
                            case 7:
                                if (Creature* pResearcher = GetAvailableResearcher(2))
                                    DoScriptText(SAY_LE_NO_LEAVE_REPLY2, pResearcher);
                                break;
                            case 8:
                                if (Creature* pResearcher = GetAvailableResearcher(3))
                                    DoScriptText(SAY_LE_NO_LEAVE_REPLY3, pResearcher);
                                break;
                            case 9:
                                if (Creature* pResearcher = GetAvailableResearcher(4))
                                    DoScriptText(SAY_LE_NO_LEAVE_REPLY4, pResearcher);
                                break;
                            case 10:
                                DoScriptText(SAY_LE_SHUT, me);
                                break;
                            case 11:
                                if (Creature* pResearcher = GetAvailableResearcher(0))
                                    DoScriptText(SAY_LE_REPLY_HEAR, pResearcher);
                                break;
                            case 12:
                                DoScriptText(SAY_LE_IN_YOUR_FACE, me);
                                me->SummonCreature(NPC_BONE_SIFTER, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
                                break;
                            case 13:
                                SetEscortPaused(false);
                                break;
                        }

                        ++m_uiEventCount;
                    }
                    else
                        m_uiEventTimer -= uiDiff;
                }

                return;
            }

            DoMeleeAttackIfReady();
        }