Core/Quest: Fix SMSG_QUESTGIVER_STATUS_MULTIPLE

By Davide
This commit is contained in:
Aokromes committed 2017-02-01 00:22:45 +01:00
1 parent 1289e66d44
commit c5f17620df
2 files changed
+9 -42

No files matched your search

+1 -40
View File
@@ -672,46 +672,7 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket
{
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
for (auto 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
Creature* questgiver = ObjectAccessor::GetCreatureOrPetOrVehicle(*GetPlayer(), *itr);
if (!questgiver || questgiver->IsHostileTo(_player))
continue;
if (!questgiver->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
continue;
questStatus = _player->GetQuestDialogStatus(questgiver);
data << uint64(questgiver->GetGUID());
data << uint32(questStatus);
++count;
}
else if (itr->IsGameObject())
{
GameObject* questgiver = GetPlayer()->GetMap()->GetGameObject(*itr);
if (!questgiver || questgiver->GetGoType() != GAMEOBJECT_TYPE_QUESTGIVER)
continue;
questStatus = _player->GetQuestDialogStatus(questgiver);
data << uint64(questgiver->GetGUID());
data << uint32(questStatus);
++count;
}
}
data.put<uint32>(0, count); // write real count
SendPacket(&data);
_player->SendQuestGiverStatusMultiple();
}
void WorldSession::HandleQueryQuestsCompleted(WorldPacket& /*recvData*/)