Core/PacketIO: Fix SMSG_UI_MAP_QUEST_LINES_RESPONSE struct (TWW) (#30219)

This commit is contained in:
Meji
2024-09-14 13:14:05 +02:00
committed by GitHub
parent b3a502ddb9
commit 19a0e885a6
3 changed files with 16 additions and 0 deletions

View File

@@ -844,10 +844,21 @@ void WorldSession::HandleUiMapQuestLinesRequest(WorldPackets::Quest::UiMapQuestL
if (!questLineQuests)
continue;
bool isQuestLineCompleted = true;
for (QuestLineXQuestEntry const* questLineQuest : *questLineQuests)
{
if (Quest const* quest = sObjectMgr->GetQuestTemplate(questLineQuest->QuestID))
{
if (_player->CanTakeQuest(quest, false))
response.QuestLineXQuestIDs.push_back(questLineQuest->ID);
if (isQuestLineCompleted && !_player->GetQuestRewardStatus(questLineQuest->QuestID))
isQuestLineCompleted = false;
}
}
if (!isQuestLineCompleted)
response.QuestLineIDs.push_back(questLineId);
}
}

View File

@@ -865,6 +865,7 @@ WorldPacket const* UiMapQuestLinesResponse::Write()
_worldPacket << int32(UiMapID);
_worldPacket << uint32(QuestLineXQuestIDs.size());
_worldPacket << uint32(QuestIDs.size());
_worldPacket << uint32(QuestLineIDs.size());
for (uint32 const& questLineQuestID : QuestLineXQuestIDs)
_worldPacket << uint32(questLineQuestID);
@@ -872,6 +873,9 @@ WorldPacket const* UiMapQuestLinesResponse::Write()
for (uint32 const& questID : QuestIDs)
_worldPacket << uint32(questID);
for (uint32 const& questLineID : QuestLineIDs)
_worldPacket << uint32(questLineID);
return &_worldPacket;
}

View File

@@ -800,6 +800,7 @@ namespace WorldPackets
int32 UiMapID = 0;
std::vector<uint32> QuestLineXQuestIDs;
std::vector<uint32> QuestIDs;
std::vector<uint32> QuestLineIDs;
};
class UiMapQuestLinesRequest final : public ClientPacket