aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QuestHandler.cpp
diff options
context:
space:
mode:
authorSnapper <snapperryen@gmail.com>2016-06-02 17:13:55 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-01-12 23:52:56 +0100
commitf8ca5fd40e91a7a50e9f2877dd0a8b4ab0e921f4 (patch)
tree672a8426a2e3d3b78bfd2e7859bee15372035c75 /src/server/game/Handlers/QuestHandler.cpp
parentb8757aa8e4c6769e30f35189aa5f154148e748f0 (diff)
Core/Quest: send SMSG_QUESTGIVER_STATUS_MULTIPLE after a quest is rewarded.
This updates the status of nearby questgivers and prevents them from being stuck in a state that's no longer valid (for example, stuck with yellow question mark until area update). (cherry picked from commit 114f4c9715dd703f37440ef59fcf864fb8e6612f)
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp27
1 files changed, 1 insertions, 26 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 44214139bc1..cd6b3eb135a 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -653,32 +653,7 @@ void WorldSession::HandleQuestPushResult(WorldPackets::Quest::QuestPushResult& p
void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& /*packet*/)
{
- WorldPackets::Quest::QuestGiverStatusMultiple response;
-
- for (auto itr = _player->m_clientGUIDs.begin(); itr != _player->m_clientGUIDs.end(); ++itr)
- {
- if (itr->IsAnyTypeCreature())
- {
- // need also pet quests case support
- Creature* questgiver = ObjectAccessor::GetCreatureOrPetOrVehicle(*GetPlayer(), *itr);
- if (!questgiver || questgiver->IsHostileTo(_player))
- continue;
- if (!questgiver->HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
- continue;
-
- response.QuestGiver.emplace_back(questgiver->GetGUID(), _player->GetQuestDialogStatus(questgiver));
- }
- else if (itr->IsGameObject())
- {
- GameObject* questgiver = GetPlayer()->GetMap()->GetGameObject(*itr);
- if (!questgiver || questgiver->GetGoType() != GAMEOBJECT_TYPE_QUESTGIVER)
- continue;
-
- response.QuestGiver.emplace_back(questgiver->GetGUID(), _player->GetQuestDialogStatus(questgiver));
- }
- }
-
- SendPacket(response.Write());
+ _player->SendQuestGiverStatusMultiple();
}
void WorldSession::HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& /*packet*/)