示例#1
0
 void Aggro(Unit* who)
 {
     switch(rand()%4)
     {
         case 0:
             DoYell(THRALL_RANDOM_AGGRO1,LANG_UNIVERSAL,NULL);
             DoPlaySoundToSet(m_creature,SOUND_RANDOM_AGGRO1);
             break;
         case 1:
             DoYell(THRALL_RANDOM_AGGRO2,LANG_UNIVERSAL,NULL);
             DoPlaySoundToSet(m_creature,SOUND_RANDOM_AGGRO2);
             break;
         case 2:
             DoYell(THRALL_RANDOM_AGGRO3,LANG_UNIVERSAL,NULL);
             DoPlaySoundToSet(m_creature,SOUND_RANDOM_AGGRO3);
             break;
         case 3:
             DoYell(THRALL_RANDOM_AGGRO4,LANG_UNIVERSAL,NULL);
             DoPlaySoundToSet(m_creature,SOUND_RANDOM_AGGRO4);
             break;
     }
     if( m_creature->IsMounted() )
     {
         DoUnmount();
         HadMount = true;
     }
 }
示例#2
0
    void Reset()
    {
        LowHp = false;

        if (HadMount)
            DoMount();

        if (!HasEscortState(STATE_ESCORT_ESCORTING))
        {
            DoUnmount();
            HadMount = false;
            SetEquipmentSlots(true);
            m_creature->SetDisplayId(THRALL_MODEL_UNEQUIPPED);
        }

        if (HasEscortState(STATE_ESCORT_ESCORTING))
        {
            switch(urand(0, 2))
            {
            case 0:
                DoScriptText(SAY_TH_LEAVE_COMBAT1, m_creature);
                break;
            case 1:
                DoScriptText(SAY_TH_LEAVE_COMBAT2, m_creature);
                break;
            case 2:
                DoScriptText(SAY_TH_LEAVE_COMBAT3, m_creature);
                break;
            }
        }
    }
示例#3
0
 void EnterCombat(Unit* /*who*/)
 {
     DoScriptText(RAND(SAY_TH_RANDOM_AGGRO1, SAY_TH_RANDOM_AGGRO2, SAY_TH_RANDOM_AGGRO3, SAY_TH_RANDOM_AGGRO4), me);
     if (me->IsMounted())
     {
         DoUnmount();
         HadMount = true;
     }
 }
示例#4
0
 void EnterCombat(Unit* /*who*/)
 {
     Talk(SAY_TH_RANDOM_AGGRO);
     if (me->IsMounted())
     {
         DoUnmount();
         HadMount = true;
     }
 }
示例#5
0
    void Reset()
    {
        DoUnmount();
        HadMount = false;

        me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, 0);
        me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO, 0);
        me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+1, 0);
        me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, 0);
        me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+2, 0);
        me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 0);
        me->SetDisplayId(THRALL_MODEL_UNEQUIPPED);
    }
示例#6
0
    void Reset()
    {
        LowHp = false;
        Event = false;
        
        MountGUID = 0;
        ArmorerGUID = 0;
        ImageGUID = 0;
        EpochGUID = 0;
        TarethaGUID = pInstance->GetData64(DATA_TARETHA);

        Steps = 0;
        StepsTimer = 0;
        EmoteTimer = 0;
        Part = 0;
        StrikeTimer = urand(3000, 7000);
        ShieldBlockTimer = urand(6000, 11000);

        if (HadMount)
            DoMount();

        if (!HasEscortState(STATE_ESCORT_ESCORTING))
        {
            DoUnmount();
            HadMount = false;
        }
        else
            DoScriptText(RAND(SAY_TH_LEAVE_COMBAT1, SAY_TH_LEAVE_COMBAT2, SAY_TH_LEAVE_COMBAT3), me);

        if (pInstance && pInstance->GetData(TYPE_THRALL_PART1) == NOT_STARTED)
        {
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, 0);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO, 0);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+1, 0);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, 0);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+2, 0);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 0);
            me->SetUInt32Value(UNIT_FIELD_DISPLAYID, THRALL_MODEL_UNEQUIPPED);
        }
        else
        {
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, THRALL_WEAPON_MODEL);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO, THRALL_WEAPON_INFO);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+1, 781);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, THRALL_SHIELD_MODEL);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+2, THRALL_SHIELD_INFO);
            me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 1038);
            me->SetUInt32Value(UNIT_FIELD_DISPLAYID, THRALL_MODEL_EQUIPPED);
        }
    }
示例#7
0
 void EnterCombat(Unit* who)
 {
     switch(rand()%4)
     {
     case 0: DoScriptText(SAY_TH_RANDOM_AGGRO1, m_creature); break;
     case 1: DoScriptText(SAY_TH_RANDOM_AGGRO2, m_creature); break;
     case 2: DoScriptText(SAY_TH_RANDOM_AGGRO3, m_creature); break;
     case 3: DoScriptText(SAY_TH_RANDOM_AGGRO4, m_creature); break;
     }
     if (m_creature->IsMounted())
     {
         DoUnmount();
         HadMount = true;
     }
 }
示例#8
0
    void Reset()
    {
        m_bIsLowHp = false;

        if (m_bHadMount)
            DoMount();

        if (!HasEscortState(STATE_ESCORT_ESCORTING))
        {
            DoUnmount();
            m_bHadMount = false;
            SetEquipmentSlots(true);
            m_creature->SetDisplayId(MODEL_THRALL_UNEQUIPPED);
        }
    }
示例#9
0
    void Aggro(Unit* pWho)
    {
        switch(urand(0, 3))
        {
            case 0: DoScriptText(SAY_TH_RANDOM_AGGRO1, m_creature); break;
            case 1: DoScriptText(SAY_TH_RANDOM_AGGRO2, m_creature); break;
            case 2: DoScriptText(SAY_TH_RANDOM_AGGRO3, m_creature); break;
            case 3: DoScriptText(SAY_TH_RANDOM_AGGRO4, m_creature); break;
        }

        if (m_creature->IsMounted())
        {
            DoUnmount();
            m_bHadMount = true;
        }
    }
示例#10
0
    void EnterCombat(Unit* who)
    {
        switch (rand()%10)
        {
            case 1: DoScriptText(SAY_TH_RANDOM_AGGRO1, me); break;
            case 2: DoScriptText(SAY_TH_RANDOM_AGGRO2, me); break;
            case 3: DoScriptText(SAY_TH_RANDOM_AGGRO3, me); break;
            case 4: DoScriptText(SAY_TH_RANDOM_AGGRO4, me); break;
            default:
                break;
        }

        if (me->IsMounted())
        {
            DoUnmount();
            HadMount = true;
        }
    }
示例#11
0
        void Reset() {
            LowHp = false;

            if (HadMount)
                DoMount();

            if (!HasEscortState(STATE_ESCORT_ESCORTING)) {
                DoUnmount();
                HadMount = false;
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0);
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, 0);
                me->SetDisplayId(THRALL_MODEL_UNEQUIPPED);
            }
            if (HasEscortState(STATE_ESCORT_ESCORTING)) {
                DoScriptText(
                        RAND(SAY_TH_LEAVE_COMBAT1, SAY_TH_LEAVE_COMBAT2,
                                SAY_TH_LEAVE_COMBAT3), me);
            }
        }
示例#12
0
        void Reset() override
        {
            Initialize();

            if (HadMount)
                DoMount();

            if (!HasEscortState(STATE_ESCORT_ESCORTING))
            {
                DoUnmount();
                HadMount = false;
                me->SetVirtualItem(0, 0);
                me->SetVirtualItem(1, 0);
                me->SetDisplayId(THRALL_MODEL_UNEQUIPPED);
            }
            if (HasEscortState(STATE_ESCORT_ESCORTING))
            {
                Talk(SAY_TH_LEAVE_COMBAT);
            }
        }
        void Reset() override
        {
            LowHp = false;

            if (HadMount)
                DoMount();

            if (!HasEscortState(STATE_ESCORT_ESCORTING))
            {
                DoUnmount();
                HadMount = false;
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0);
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
                me->SetDisplayId(THRALL_MODEL_UNEQUIPPED);
            }
            if (HasEscortState(STATE_ESCORT_ESCORTING))
            {
                Talk(SAY_TH_LEAVE_COMBAT);
            }
        }
示例#14
0
    void JustRespawned()
    {
        if (!m_pInstance)
            return;

        Reset();

        if (m_pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS)
        {
            SetEscortPaused(true);

            m_bHadMount = false;
            DoUnmount();

            m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);

            // check current states before fail and set spesific for the part
            if (m_pInstance->GetData(TYPE_THRALL_PART1) == IN_PROGRESS)
            {
                SetCurrentWaypoint(1);                      // basement

                SetEquipmentSlots(true);
                m_creature->SetDisplayId(MODEL_THRALL_UNEQUIPPED);

                m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
            }
            else if (m_pInstance->GetData(TYPE_THRALL_PART2) == IN_PROGRESS)
            {
                SetCurrentWaypoint(61);                     // barn
                m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
            }
            else if (m_pInstance->GetData(TYPE_THRALL_PART3) == IN_PROGRESS || m_pInstance->GetData(TYPE_THRALL_PART4) == IN_PROGRESS)
                SetCurrentWaypoint(96);                     // inn

            // fail, and relocation handled in instance script
            m_pInstance->SetData(TYPE_THRALL_EVENT, FAIL);
        }
    }
示例#15
0
        void WaypointReached(uint32 i)
        {
            if (!pInstance)
                return;

            switch (i)
            {
                case 8:
                    SetRun(false);
                    me->SummonCreature(18764, 2181.87f, 112.46f, 89.45f, 0.26f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    break;
                case 9:
                    DoScriptText(SAY_TH_ARMORY, me);
                    me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, THRALL_WEAPON_MODEL);
                    //me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO, THRALL_WEAPON_INFO);
                    //me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+1, 781);
                    me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, THRALL_SHIELD_MODEL);
                    //me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+2, THRALL_SHIELD_INFO);
                    //me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 1038);
                    break;
                case 10:
                    me->SetDisplayId(THRALL_MODEL_EQUIPPED);
                    break;
                case 11:
                    SetRun();
                    break;
                case 15:
                    me->SummonCreature(MOB_ENTRY_RIFLE, 2200.28f, 137.37f, 87.93f, 5.07f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_WARDEN, 2197.44f, 131.83f, 87.93f, 0.78f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_VETERAN, 2203.62f, 135.40f, 87.93f, 3.70f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_VETERAN, 2200.75f, 130.13f, 87.93f, 1.48f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    break;
                case 21:
                    me->SummonCreature(MOB_ENTRY_RIFLE, 2135.80f, 154.01f, 67.45f, 4.98f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_WARDEN, 2144.36f, 151.87f, 67.74f, 4.46f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_VETERAN, 2142.12f, 154.41f, 67.12f, 4.56f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_VETERAN, 2138.08f, 155.38f, 67.24f, 4.60f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    break;
                case 25:
                    me->SummonCreature(MOB_ENTRY_RIFLE, 2102.98f, 192.17f, 65.24f, 6.02f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_WARDEN, 2108.48f, 198.75f, 65.18f, 5.15f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_VETERAN, 2106.11f, 197.29f, 65.18f, 5.63f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_VETERAN, 2104.18f, 194.82f, 65.18f, 5.75f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    break;
                case 29:
                    DoScriptText(SAY_TH_SKARLOC_MEET, me);
                    me->SummonCreature(ENTRY_SCARLOC, 2036.48f, 271.22f, 63.43f, 5.27f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
                    //temporary, skarloc should rather be triggered to walk up to thrall
                    break;
                case 30:
                    SetEscortPaused(true);
                    me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                    SetRun(false);
                    break;
                case 31:
                    DoScriptText(SAY_TH_MOUNTS_UP, me);
                    DoMount();
                    SetRun();
                    break;
                case 37:
                    //possibly regular patrollers? If so, remove this and let database handle them
                    me->SummonCreature(MOB_ENTRY_WATCHMAN, 2124.26f, 522.16f, 56.87f, 3.99f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_WATCHMAN, 2121.69f, 525.37f, 57.11f, 4.01f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_SENTRY, 2124.65f, 524.55f, 56.63f, 3.98f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    break;
                case 59:
                    me->SummonCreature(SKARLOC_MOUNT, 2488.64f, 625.77f, 58.26f, 4.71f, TEMPSUMMON_TIMED_DESPAWN, 10000);
                    DoUnmount();
                    HadMount = false;
                    SetRun(false);
                    break;
                case 60:
                    me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
                    //make horsie run off
                    SetEscortPaused(true);
                    me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                    pInstance->SetData(TYPE_THRALL_PART2, DONE);
                    SetRun();
                    break;
                case 64:
                    SetRun(false);
                    break;
                case 68:
                    me->SummonCreature(MOB_ENTRY_BARN_PROTECTOR, 2500.22f, 692.60f, 55.50f, 2.84f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_BARN_LOOKOUT, 2500.13f, 696.55f, 55.51f, 3.38f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_BARN_GUARDSMAN, 2500.55f, 693.64f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_BARN_GUARDSMAN, 2500.94f, 695.81f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    break;
                case 71:
                    SetRun();
                    break;
                case 81:
                    SetRun(false);
                    break;
                case 83:
                    me->SummonCreature(MOB_ENTRY_CHURCH_PROTECTOR, 2627.33f, 646.82f, 56.03f, 4.28f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                    me->SummonCreature(MOB_ENTRY_CHURCH_LOOKOUT, 2624.14f, 648.03f, 56.03f, 4.50f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                    me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2625.32f, 649.60f, 56.03f, 4.38f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                    me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2627.22f, 649.00f, 56.03f, 4.34f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                    break;
                case 84:
                    DoScriptText(SAY_TH_CHURCH_END, me);
                    SetRun();
                    break;
                case 91:
                    me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
                    SetRun(false);
                    break;
                case 93:
                    me->SummonCreature(MOB_ENTRY_INN_PROTECTOR, 2652.71f, 660.31f, 61.93f, 1.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_INN_LOOKOUT, 2648.96f, 662.59f, 61.93f, 0.79f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_INN_GUARDSMAN, 2657.36f, 662.34f, 61.93f, 2.68f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    me->SummonCreature(MOB_ENTRY_INN_GUARDSMAN, 2656.39f, 659.77f, 61.93f, 2.61f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                    break;
                case 94:
                    if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA))
                    {
                        if (Unit* Taretha = Unit::GetUnit((*me), TarethaGUID))
                            DoScriptText(SAY_TA_ESCAPED, Taretha, me);
                    }
                    break;
                case 95:
                    DoScriptText(SAY_TH_MEET_TARETHA, me);
                    pInstance->SetData(TYPE_THRALL_PART3, DONE);
                    SetEscortPaused(true);
                    break;
                case 96:
                    DoScriptText(SAY_TH_EPOCH_WONDER, me);
                    break;
                case 97:
                    DoScriptText(SAY_TH_EPOCH_KILL_TARETHA, me);
                    SetRun();
                    break;
                case 98:
                    //trigger epoch Yell("Thrall! Come outside and face your fate! ....")
                    //from here, thrall should not never be allowed to move to point 106 which he currently does.
                    break;

                case 106:
                    {
                        //trigger taretha to run down outside
                        if (Creature* Taretha = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TARETHA)))
                        {
                            if (Player* player = GetPlayerForEscort())
                                CAST_AI(npc_escortAI, (Taretha->AI()))->Start(false, true, player->GetGUID());
                        }

                        //kill credit Creature for quest
                        Map* pMap = me->GetMap();
                        Map::PlayerList const& players = pMap->GetPlayers();
                        if (!players.isEmpty() && pMap->IsDungeon())
                        {
                            for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                            {
                                if (Player* player = itr->getSource())
                                    player->KilledMonsterCredit(20156, 0);
                            }
                        }

                        //alot will happen here, thrall and taretha talk, erozion appear at spot to explain
                        me->SummonCreature(EROZION_ENTRY, 2646.47f, 680.416f, 55.38f, 4.16f, TEMPSUMMON_TIMED_DESPAWN, 120000);
                    }
                    break;
                case 108:
                    //last waypoint, just set Thrall invisible, respawn is turned off
                    me->SetVisible(false);
                    break;
            }
        }
示例#16
0
 void WaypointReached(uint32 i)
 {
     switch (Part)
     {
         case 1:
             switch (i)
             {
                 case 0:
                     if (GameObject* door = FindGameObject(GO_PRISON_DOOR, INTERACTION_DISTANCE, me))
                         door->UseDoorOrButton(6);
                     break;
                 case 7:
                     if (Creature* Armorer = me->SummonCreature(NPC_ARMORER, 2180.95f, 119.19f, 89.456f, 5.692f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 35000))
                         DoScriptText(SAY_ARMORER_CALL_GUARDS, Armorer);
                     break;
                 case 8:
                     SetRun(false);
                     break;
                 case 9:
                     DoScriptText(SAY_TH_KILL_ARMORER, me);
                     DoCast(me, SPELL_KNOCKOUT_ARMORER);
                     if (Creature* Armorer = me->GetMap()->GetCreature(ArmorerGUID))
                         Armorer->setDeathState(JUST_DIED);
                     break;
                 case 10:
                     DoScriptText(SAY_TH_ARMORY, me);
                     me->SetStandState(UNIT_STAND_STATE_KNEEL);
                     break;
                 case 11:
                     me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, THRALL_WEAPON_MODEL);
                     me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO, THRALL_WEAPON_INFO);
                     me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+1, 781);
                     me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, THRALL_SHIELD_MODEL);
                     me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+2, THRALL_SHIELD_INFO);
                     me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 1038);
                     me->SetUInt32Value(UNIT_FIELD_DISPLAYID, THRALL_MODEL_EQUIPPED);
                     me->SetStandState(UNIT_STAND_STATE_STAND);
                     SetRun();
                     break;
                 case 12:
                     if (Player* player = GetPlayerForEscort())
                         me->SetFacingToObject(player);
                     DoScriptText(SAY_TH_ARMORY_2, me);
                     break;
                 case 17:
                     me->SummonCreature(NPC_MAGE, 2186.909f, 139.8108f, 88.21628f, 5.75f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_WARDEN, 2187.943f, 141.6124f, 88.21628f, 5.73f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_VETERAN, 2190.508f, 140.4597f, 88.21628f, 6.04f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_VETERAN, 2189.543f, 139.0996f, 88.23965f, 0.21f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     break;
                 case 20:
                     me->SummonCreature(NPC_MAGE, 2149.463f, 104.9756f, 73.63239f, 1.71f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_SENTRY, 2147.642f, 105.0251f, 73.99422f, 1.52f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_VETERAN, 2149.212f, 107.2005f, 74.15676f, 1.71f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_WARDEN, 2147.328f, 106.7235f, 74.34447f, 1.69f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     break;
                 case 23:
                     me->SummonCreature(NPC_MAGE, 2142.363f, 172.4260f, 66.30494f, 2.54f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_SENTRY, 2138.177f, 168.6046f, 66.30494f, 2.47f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_SENTRY, 2142.372f, 174.2907f, 66.30494f, 2.56f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_VETERAN, 2140.146f, 169.2364f, 66.30494f, 2.49f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     break;
                 case 25:
                     me->SummonCreature(NPC_MAGE, 2107.938f, 192.0753f, 66.30494f, 2.54f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_MAGE, 2109.852f, 195.1403f, 66.30493f, 2.42f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_VETERAN, 2108.486f, 189.9346f, 66.30494f, 2.68f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_VETERAN, 2112.387f, 195.4947f, 66.30494f, 2.39f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     break;
                 case 31:
                     me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_POINT);
                     EmoteTimer = 2000;
                     me->SetFacingTo(2.18f);
                     me->SummonCreature(NPC_SKARLOC, 2000.201f, 277.9190f, 66.4911f, 6.11f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
                     DoScriptText(SAY_TH_SKARLOC_MEET, me);
                     break;
                 case 33:
                     me->SetFacingTo(2.18f);
                     DoScriptText(SAY_THRALL_END_P1, me);
                     me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                     break;
             }
             break;
         case 2:
             switch (i)
             {
                 case 1:
                     DoScriptText(SAY_TH_MOUNTS_UP, me);
                     DoMount();
                     if (Creature* mount = me->GetCreature(me->GetMap()->GetCreatureGUID(NPC_SKARLOC_MOUNT)))
                         mount->ForcedDespawn();
                     SetRun();
                     break;
                 case 29:
                     me->SummonCreature(NPC_SKARLOC_MOUNT, 2488.64f, 625.77f, 58.26, 4.71f,TEMPSUMMON_TIMED_DESPAWN,10000);
                     DoUnmount();
                     HadMount = false;
                     SetRun(false);
                     break;
                 case 30:
                     if (Creature* mount = me->GetMap()->GetCreature(MountGUID))
                         me->SetFacingToObject(mount);
                     DoScriptText(EMOTE_TH_STARTLE_HORSE, me);
                     me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_EXCLAMATION);
                     EmoteTimer = 2000;
                     break;
                 case 31:
                     if (Creature* mount = me->GetMap()->GetCreature(MountGUID))
                     {
                         mount->SetWalk(false);
                         mount->GetMotionMaster()->MovePoint(0, 2517.504f, 506.253f, 42.329f);
                     }
                     me->SetFacingTo(4.66f);
                     me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                     pInstance->SetData(TYPE_THRALL_PART2, DONE);
                     break;
             }
             break;
         case 3:
             switch (i)
             {
                 case 3:
                     SetRun(false);
                     break;
                 case 6:
                     DoScriptText(EMOTE_TH_CALM_HORSE, me);
                     break;
                 case 9:
                     me->SummonCreature(NPC_TARREN_MILL_PROTECTOR, 2510.16f, 693.98f, 55.50f, 2.84f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
                     me->SummonCreature(NPC_TARREN_MILL_LOOKOUT, 2510.02f, 697.72f, 55.51f, 3.38f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
                     me->SummonCreature(NPC_TARREN_MILL_GUARDSMAN, 2507.83f, 693.76f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
                     me->SummonCreature(NPC_TARREN_MILL_GUARDSMAN, 2508.22f, 698.00f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
                     break;
                 case 13:
                     DoScriptText(SAY_TH_HEAD_TOWN, me);
                     SetRun();
                     break;
                 case 24:
                     if (Player* player = GetPlayerForEscort())
                         me->SetFacingToObject(player);
                     DoScriptText(SAY_TH_CHURCH_ENTER, me);
                     break;
                 case 25:
                     me->SummonCreature(NPC_CHURCH_PROTECTOR, 2627.88f, 657.63f, 55.98f, 4.28f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_CHURCH_LOOKOUT, 2627.27f, 655.17f, 56.03f, 4.50f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_CHURCH_LOOKOUT, 2629.21f, 654.81f, 56.04f, 4.38f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_CHURCH_GUARDSMAN, 2629.98f, 656.96f, 55.96f, 4.34f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     break;
                 case 27:
                     DoScriptText(SAY_TH_CHURCH_END, me);
                     break;
                 case 35:
                     me->SummonCreature(NPC_INN_PROTECTOR, 2652.71f, 660.31f, 61.93f, 1.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_INN_LOOKOUT, 2648.96f, 662.59f, 61.93f, 0.79f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_INN_LOOKOUT, 2657.36f, 662.34f, 61.93f, 2.68f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     me->SummonCreature(NPC_INN_GUARDSMAN, 2656.39f, 659.77f, 61.93f, 2.61f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                     break;
                 case 36:
                     SetRun(false);
                     break;
                 case 37:
                     if (Creature* Taretha = me->GetMap()->GetCreature(TarethaGUID))
                         DoScriptText(SAY_TA_ESCAPED, Taretha, me);
                     break;
                 case 38:
                     pInstance->SetData(TYPE_THRALL_PART3,DONE);
                     DoScriptText(SAY_TH_MEET_TARETHA, me);
                     me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                     break;
             }
             break;
         case 4:
             switch (i)
             {
                 case 0:
                    if (Creature* Epoch = me->SummonCreature(NPC_EPOCH,2639.13,698.55,65.43,4.59,TEMPSUMMON_DEAD_DESPAWN,120000))
                        DoScriptText(SAY_EPOCH_ENTER1, Epoch);
                     me->SetFacingTo(2.63f);
                     DoScriptText(SAY_TH_EPOCH_WONDER, me);
                     break;
                 case 1:
                     me->SetFacingTo(5.79f);
                     DoScriptText(SAY_TH_EPOCH_KILL_TARETHA, me);
                     if (Creature* Epoch = me->GetMap()->GetCreature(EpochGUID))
                         DoScriptText(SAY_EPOCH_ENTER2, Epoch);
                     if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA))
                     {
                         Creature* Taretha = (Unit::GetCreature(*me, TarethaGUID));
                         Taretha->CastSpell(Taretha, SPELL_SHADOW_SPIKE, true);
                         Taretha->SetStandState(UNIT_STAND_STATE_DEAD);
                     }
                     break;
                 case 9:
                     if (Creature* Epoch = me->GetMap()->GetCreature(EpochGUID))
                     {
                         DoScriptText(SAY_EPOCH_ENTER3, Epoch);
                         me->SetFacingToObject(Epoch);
                     }
                     SetEscortPaused(true);
                     break;
                 case 11:
                     if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA))
                     {
                         Creature* Taretha = (Unit::GetCreature(*me, TarethaGUID));
                         if (Player* pPlayer = GetPlayerForEscort())
                             CAST_AI(npc_escortAI, (Taretha->AI()))->Start(false, true, pPlayer->GetGUID());
                     }
                     Event = true;
                     me->SetFacingTo(5.79f);
                     SetEscortPaused(true);
                     break;
                 case 13:
                     Event = false;
                     pInstance->SetData(TYPE_THRALL_EVENT, DONE);
                     break;
             }
             break;
     }
 }
示例#17
0
    void WaypointReached(uint32 i)
    {
        if (!pInstance)
            return;

        switch (i)
        {
            case 0:
                DoScriptText(SAY_TH_START_EVENT_PART1, me);
                break;
            case 9:
                SetRun(false);
                me->HandleEmoteCommand(EMOTE_ONESHOT_ATTACKUNARMED);
                if (Creature* armorer = me->FindNearestCreature(ENTRY_ARMORER, 2.0f))
                {
                    me->Kill(armorer, false);
                    me->Say("That's enough out of him.", 0, 0);
                }
                break;
            case 10:
                me->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);
                DoScriptText(SAY_TH_ARMORY, me);
                break;
            case 11:
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, THRALL_WEAPON_MODEL);
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO, THRALL_WEAPON_INFO);
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+1, 781);
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, THRALL_SHIELD_MODEL);
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+2, THRALL_SHIELD_INFO);
                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 1038);
                me->SetDisplayId(THRALL_MODEL_EQUIPPED);
                me->Say("Let's go.", 0, 0);
                break;
            case 12:
                SetRun();
                break;
            case 16:
                me->SummonCreature(MOB_ENTRY_RIFLE, 2200.28f, 137.37f, 87.93f, 5.07f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_WARDEN, 2197.44f, 131.83f, 87.93f, 0.78f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_VETERAN, 2203.62f, 135.40f, 87.93f, 3.70f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_VETERAN, 2200.75f, 130.13f, 87.93f, 1.48f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 22:
                me->SummonCreature(MOB_ENTRY_RIFLE, 2135.80f, 154.01f, 67.45f, 4.98f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_WARDEN, 2144.36f, 151.87f, 67.74f, 4.46f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_VETERAN, 2142.12f, 154.41f, 67.12f, 4.56f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_VETERAN, 2138.08f, 155.38f, 67.24f, 4.60f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 26:
                me->SummonCreature(MOB_ENTRY_RIFLE, 2102.98f, 192.17f, 65.24f, 6.02f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_WARDEN, 2108.48f, 198.75f, 65.18f, 5.15f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_VETERAN, 2106.11f, 197.29f, 65.18f, 5.63f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_VETERAN, 2104.18f, 194.82f, 65.18f, 5.75f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 30:
                DoScriptText(SAY_TH_SKARLOC_MEET, me);
                if (Creature* Skarloc = me->SummonCreature(ENTRY_SCARLOC, 2036.48f, 271.22f, 63.43f, 5.27f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000))
                    Skarloc->GetMotionMaster()->MovePoint(0, 2067.84f, 224.376f, 64.8022f);
                me->HandleEmoteCommand(EMOTE_ONESHOT_POINT);
                break;
            case 31:
                SetEscortPaused(true);
                me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                SetRun(false);
                break;
            case 32:
                DoScriptText(SAY_TH_MOUNTS_UP, me);
                DoMount();
                SetRun();
                break;
            case 60:
                me->SummonCreature(SKARLOC_MOUNT, 2490.08f, 627.695f, 58.539f, 1.161f, TEMPSUMMON_TIMED_DESPAWN, 9000);
                DoUnmount();
                HadMount = false;
                SetRun(false);
                break;
            case 61:
                me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
                //make horsie run off
                if (Creature* horse = me->FindNearestCreature(SKARLOC_MOUNT, 2.0f))
                    horse->GetMotionMaster()->MovePoint(0, 2498.437f, 576.647f, 55.8595f);
                SetEscortPaused(true);
                me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                pInstance->SetData(TYPE_THRALL_PART2, DONE);
                SetRun();
                break;
            case 65:
                SetRun(false);
                break;
            case 69:
                me->SummonCreature(MOB_ENTRY_CHURCH_PROTECTOR, 2500.22f, 692.60f, 55.50f, 2.84f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000);
                me->SummonCreature(MOB_ENTRY_CHURCH_LOOKOUT, 2500.13f, 696.55f, 55.51f, 3.38f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000);
                me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2500.55f, 693.64f, 55.50f, 3.14f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000);
                me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2500.94f, 695.81f, 55.50f, 3.14f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000);
                break;
            case 70:
                me->Say("Taretha isn't here. Let's head into town.", 0, 0);
                break;
            case 72:
                SetRun();
                break;
            case 82:
                SetRun(false);
                break;
            case 84:
                me->SummonCreature(MOB_ENTRY_CHURCH_PROTECTOR, 2627.33f, 646.82f, 56.03f, 4.28f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                me->SummonCreature(MOB_ENTRY_CHURCH_LOOKOUT, 2624.14f, 648.03f, 56.03f, 4.50f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2625.32f, 649.60f, 56.03f, 4.38f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2627.22f, 649.00f, 56.03f, 4.34f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                break;
            case 85:
                DoScriptText(SAY_TH_CHURCH_END, me);
                SetRun();
                break;
            case 92:
                me->AddUnitMovementFlag(MOVEFLAG_WALK_MODE);
                SetRun(false);
                break;
            case 94:
                me->SummonCreature(MOB_ENTRY_INN_PROTECTOR, 2652.71f, 660.31f, 61.93f, 1.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_INN_LOOKOUT, 2648.96f, 662.59f, 61.93f, 0.79f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_INN_GUARDSMAN, 2657.36f, 662.34f, 61.93f, 2.68f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                me->SummonCreature(MOB_ENTRY_INN_GUARDSMAN, 2656.39f, 659.77f, 61.93f, 2.61f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 95:
                if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA))
                {
                    if (Unit* Taretha = Unit::GetUnit((*me), TarethaGUID))
                        DoScriptText(SAY_TA_ESCAPED, Taretha, me);
                }
                break;
            case 96:
                DoScriptText(SAY_TH_MEET_TARETHA, me);
                pInstance->SetData(TYPE_THRALL_PART3, DONE);
                SetEscortPaused(true);
                break;
            case 97:
                DoScriptText(SAY_TH_EPOCH_WONDER, me);
                break;
            case 98:
                DoScriptText(SAY_TH_EPOCH_KILL_TARETHA, me);
                SetRun();
                break;
            case 99:
                if (Creature* Epoch = me->FindNearestCreature(ENTRY_EPOCH, 50.0f, true))
                {
                    Epoch->SendPlaySound(10419, false);
                    Epoch->Yell("Taretha's life hangs in the balance. Surely you care for her. Surely you wish to save her...", 0, 0);
                }
                //trigger epoch Yell("Thrall! Come outside and face your fate! ....")
                //from here, thrall should not never be allowed to move to point 107 which he currently does.
                break;

            case 107:
                {
                    //trigger taretha to run down outside
                    if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA))
                    {
                        if (Creature* Taretha = (Unit::GetCreature(*me, TarethaGUID)))
                        {
                            if (Player* player = GetPlayerForEscort())
                                CAST_AI(npc_escortAI, (Taretha->AI()))->Start(false, true, player->GetGUID());
                        }
                    }

                    //kill credit Creature for quest
                    Map* pMap = me->GetMap();
                    Map::PlayerList const& players = pMap->GetPlayers();
                    if (!players.isEmpty() && pMap->IsDungeon())
                    {
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        {
                            if (Player* player = itr->getSource())
                                player->KilledMonsterCredit(20156, me->GetGUID());
                        }
                    }

                    //alot will happen here, thrall and taretha talk, erozion appear at spot to explain
                    me->SummonCreature(EROZION_ENTRY, 2646.47f, 680.416f, 55.38f, 4.16f, TEMPSUMMON_TIMED_DESPAWN, 120000);
                }
                break;
            case 109:
                //last waypoint, just set Thrall invisible, respawn is turned off
                me->SetVisibility(VISIBILITY_OFF);
                break;
        }
    }
示例#18
0
    void WaypointReached(uint32 uiPoint)
    {
        if (!m_pInstance)
            return;

        switch(uiPoint)
        {
            case 8:
                SetRun(false);
                m_creature->SummonCreature(NPC_ARMORER, 2181.87f, 112.46f, 89.45f, 0.26f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);
                break;
            case 9:
                DoScriptText(SAY_TH_ARMORY, m_creature);
                SetEquipmentSlots(false, EQUIP_ID_WEAPON, EQUIP_ID_SHIELD, EQUIP_NO_CHANGE);
                break;
            case 10:
                m_creature->SetDisplayId(MODEL_THRALL_EQUIPPED);
                break;
            case 11:
                SetRun();
                break;
            case 15:
                m_creature->SummonCreature(NPC_RIFLE, 2200.28f, 137.37f, 87.93f, 5.07f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_WARDEN, 2197.44f, 131.83f, 87.93f, 0.78f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_VETERAN, 2203.62f, 135.40f, 87.93f, 3.70f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_VETERAN, 2200.75f, 130.13f, 87.93f, 1.48f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 21:
                m_creature->SummonCreature(NPC_RIFLE, 2135.80f, 154.01f, 67.45f, 4.98f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_WARDEN, 2144.36f, 151.87f, 67.74f, 4.46f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_VETERAN, 2142.12f, 154.41f, 67.12f, 4.56f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_VETERAN, 2138.08f, 155.38f, 67.24f, 4.60f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 25:
                m_creature->SummonCreature(NPC_RIFLE, 2102.98f, 192.17f, 65.24f, 6.02f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_WARDEN, 2108.48f, 198.75f, 65.18f, 5.15f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_VETERAN, 2106.11f, 197.29f, 65.18f, 5.63f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_VETERAN, 2104.18f, 194.82f, 65.18f, 5.75f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 29:
                DoScriptText(SAY_TH_SKARLOC_MEET, m_creature);
                m_creature->SummonCreature(NPC_SCARLOC, 2036.48f, 271.22f, 63.43f, 5.27f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
                break;
            case 30:
                SetEscortPaused(true);
                m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                SetRun(false);
                break;
            case 31:
                DoScriptText(SAY_TH_MOUNTS_UP, m_creature);
                DoMount();
                SetRun();
                break;
            case 37:
                // possibly regular patrollers? If so, remove this and let database handle them
                m_creature->SummonCreature(NPC_WATCHMAN, 2124.26f, 522.16f, 56.87f, 3.99f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_WATCHMAN, 2121.69f, 525.37f, 57.11f, 4.01f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_SENTRY, 2124.65f, 524.55f, 56.63f, 3.98f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 59:
                m_creature->SummonCreature(NPC_SKARLOC_MOUNT, 2488.64f, 625.77f, 58.26f, 4.71f, TEMPSUMMON_TIMED_DESPAWN, 10000);
                DoUnmount();
                m_bHadMount = false;
                SetRun(false);
                break;
            case 60:
                m_creature->HandleEmote(EMOTE_ONESHOT_EXCLAMATION);
                // make horsie run off
                SetEscortPaused(true);
                m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                m_pInstance->SetData(TYPE_THRALL_PART2, DONE);
                SetRun();
                break;
            case 64:
                SetRun(false);
                break;
            case 68:
                m_creature->SummonCreature(NPC_BARN_PROTECTOR, 2500.22f, 692.60f, 55.50f, 2.84f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_BARN_LOOKOUT, 2500.13f, 696.55f, 55.51f, 3.38f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_BARN_GUARDSMAN, 2500.55f, 693.64f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_BARN_GUARDSMAN, 2500.94f, 695.81f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 71:
                SetRun();
                break;
            case 81:
                SetRun(false);
                break;
            case 83:
                m_creature->SummonCreature(NPC_CHURCH_PROTECTOR, 2627.33f, 646.82f, 56.03f, 4.28f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                m_creature->SummonCreature(NPC_CHURCH_LOOKOUT, 2624.14f, 648.03f, 56.03f, 4.50f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                m_creature->SummonCreature(NPC_CHURCH_GUARDSMAN, 2625.32f, 649.60f, 56.03f, 4.38f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                m_creature->SummonCreature(NPC_CHURCH_GUARDSMAN, 2627.22f, 649.00f, 56.03f, 4.34f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);
                break;
            case 84:
                DoScriptText(SAY_TH_CHURCH_END, m_creature);
                SetRun();
                break;
            case 91:
                SetRun(false);
                break;
            case 93:
                m_creature->SummonCreature(NPC_INN_PROTECTOR, 2652.71f, 660.31f, 61.93f, 1.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_INN_LOOKOUT, 2648.96f, 662.59f, 61.93f, 0.79f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_INN_GUARDSMAN, 2657.36f, 662.34f, 61.93f, 2.68f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                m_creature->SummonCreature(NPC_INN_GUARDSMAN, 2656.39f, 659.77f, 61.93f, 2.61f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
                break;
            case 94:
                if (Creature* pTaretha = m_pInstance->GetTaretha())
                    DoScriptText(SAY_TA_ESCAPED, pTaretha, m_creature);

                break;
            case 95:
                DoScriptText(SAY_TH_MEET_TARETHA, m_creature);
                m_pInstance->SetData(TYPE_THRALL_PART3, DONE);
                SetEscortPaused(true);
                break;
            case 96:
                DoScriptText(SAY_TH_EPOCH_WONDER, m_creature);
                break;
            case 97:
                DoScriptText(SAY_TH_EPOCH_KILL_TARETHA, m_creature);
                SetRun();
                break;
            case 104:
                if (Creature* pEpoch = m_pInstance->GetEpoch())
                    DoScriptText(SAY_EPOCH_ENTER3, pEpoch);

                break;
            case 105:                                       // outside inn, meeting the dragon
                SetEscortPaused(true);

                if (Creature* pEpoch = m_pInstance->GetEpoch())
                    m_creature->SetFacingToObject(pEpoch);

                break;
            case 106:                                       // epoch is dead, proceeding with cheering
            {
                // trigger taretha to run down outside
                if (Creature* pTaretha = m_pInstance->GetTaretha())
                {
                    if (npc_tarethaAI* pTarethaAI = dynamic_cast<npc_tarethaAI*>(pTaretha->AI()))
                        pTarethaAI->Start(true, GetPlayerForEscort());
                }

                // kill credit creature for quest
                Map::PlayerList const& lPlayerList = m_pInstance->instance->GetPlayers();

                if (!lPlayerList.isEmpty())
                {
                    for(Map::PlayerList::const_iterator itr = lPlayerList.begin(); itr != lPlayerList.end(); ++itr)
                    {
                        if (Player* pPlayer = itr->getSource())
                            pPlayer->KilledMonsterCredit(NPC_THRALL_QUEST_TRIGGER, m_creature->GetObjectGuid());
                    }
                }

                // a lot will happen here, thrall and taretha talk, erozion appear at spot to explain
                // handled by taretha script
                SetEscortPaused(true);
                break;
            }
            case 107:
                m_creature->SetActiveObjectState(false);
                break;
        }
    }