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; } }
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; } } }
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; } }
void EnterCombat(Unit* /*who*/) { Talk(SAY_TH_RANDOM_AGGRO); if (me->IsMounted()) { DoUnmount(); HadMount = true; } }
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); }
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); } }
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; } }
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); } }
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; } }
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; } }
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); } }
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); } }
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); } }
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; } }
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; } }
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; } }
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; } }