diff options
author | Snapper <snapperryen@gmail.com> | 2016-06-02 17:13:55 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-01-12 23:52:56 +0100 |
commit | f8ca5fd40e91a7a50e9f2877dd0a8b4ab0e921f4 (patch) | |
tree | 672a8426a2e3d3b78bfd2e7859bee15372035c75 /src/server/game/Handlers/QuestHandler.cpp | |
parent | b8757aa8e4c6769e30f35189aa5f154148e748f0 (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.cpp | 27 |
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*/) |