diff options
| author | Rat <gmstreetrat@gmail.com> | 2014-11-29 14:52:53 +0100 |
|---|---|---|
| committer | Rat <gmstreetrat@gmail.com> | 2014-11-29 14:52:53 +0100 |
| commit | eda9094226983fc719378af5c1eca1a7ce93428e (patch) | |
| tree | 2461148a06096691d40255452538d52e4bc8698f /src/server/game/Handlers/QuestHandler.cpp | |
| parent | 8c4761e820d1185afb3d6384c47e0a53dce42fbc (diff) | |
| parent | 96f9451b850994fe2e92db43b4bc6327ae7e1734 (diff) | |
Merge branch '6.x' of https://github.com/TrinityCore/TrinityCore into Spells
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 26451751b5d..f591a5fa988 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -31,17 +31,16 @@ #include "Battleground.h" #include "ScriptMgr.h" #include "GameObjectAI.h" +#include "QuestPackets.h" -void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket& recvData) +void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet) { - ObjectGuid guid; - recvData >> guid; uint32 questStatus = DIALOG_STATUS_NONE; - Object* questGiver = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT); + Object* questGiver = ObjectAccessor::GetObjectByTypeMask(*_player, packet.QuestGiverGUID, TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT); if (!questGiver) { - TC_LOG_INFO("network", "Error in CMSG_QUESTGIVER_STATUS_QUERY, called for non-existing questgiver (%s)", guid.ToString().c_str()); + TC_LOG_INFO("network", "Error in CMSG_QUESTGIVER_STATUS_QUERY, called for non-existing questgiver (%s)", packet.QuestGiverGUID.ToString().c_str()); return; } @@ -66,7 +65,7 @@ void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket& recvData) } //inform client about status of quest - _player->PlayerTalkClass->SendQuestGiverStatus(questStatus, guid); + _player->PlayerTalkClass->SendQuestGiverStatus(questStatus, packet.QuestGiverGUID); } void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket& recvData) @@ -639,19 +638,14 @@ void WorldSession::HandleQuestPushResult(WorldPacket& recvPacket) } } -void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket*/) +void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& /*packet*/) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY"); - uint32 count = 0; - - WorldPacket data(SMSG_QUESTGIVER_STATUS_MULTIPLE, 4 + 8 + 4); - data << uint32(count); // placeholder + WorldPackets::Quest::QuestGiverStatusMultiple response; for (GuidSet::const_iterator itr = _player->m_clientGUIDs.begin(); itr != _player->m_clientGUIDs.end(); ++itr) { - uint32 questStatus = DIALOG_STATUS_NONE; - if (itr->IsAnyTypeCreature()) { // need also pet quests case support @@ -661,11 +655,7 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket if (!questgiver->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER)) continue; - questStatus = _player->GetQuestDialogStatus(questgiver); - - data << questgiver->GetGUID(); - data << uint32(questStatus); - ++count; + response.QuestGiver.emplace_back(questgiver->GetGUID(), _player->GetQuestDialogStatus(questgiver)); } else if (itr->IsGameObject()) { @@ -673,16 +663,11 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket if (!questgiver || questgiver->GetGoType() != GAMEOBJECT_TYPE_QUESTGIVER) continue; - questStatus = _player->GetQuestDialogStatus(questgiver); - - data << questgiver->GetGUID(); - data << uint32(questStatus); - ++count; + response.QuestGiver.emplace_back(questgiver->GetGUID(), _player->GetQuestDialogStatus(questgiver)); } } - data.put<uint32>(0, count); // write real count - SendPacket(&data); + SendPacket(response.Write()); } void WorldSession::HandleQueryQuestsCompleted(WorldPacket& /*recvData*/) |
