Core/PacketIO: Implemented UIMap questlines

Port From (https://github.com/TrinityCore/TrinityCore/commit/efa76de54011d40d69412d2af23cb071ed352688)
This commit is contained in:
Hondacrx
2024-10-10 10:08:02 -04:00
parent 6e2fc20fb8
commit 1ceaa24432
5 changed files with 179 additions and 4 deletions
+36
View File
@@ -792,5 +792,41 @@ namespace Game
_player.GetReputationMgr().ModifyReputation(CliDB.FactionStorage.LookupByKey(faction.Id), faction.Quantity);
}
}
[WorldPacketHandler(ClientOpcodes.UiMapQuestLinesRequest)]
void HandleUiMapQuestLinesRequest(UiMapQuestLinesRequest uiMapQuestLinesRequest)
{
var uiMap = CliDB.UiMapStorage.LookupByKey(uiMapQuestLinesRequest.UiMapID);
if (uiMap == null)
return;
UiMapQuestLinesResponse response = new();
response.UiMapID = uiMap.Id;
var questLines = Global.ObjectMgr.GetUiMapQuestLinesList(uiMap.Id);
foreach (uint questLineId in questLines)
{
var questLineQuests = Global.DB2Mgr.GetQuestsForQuestLine(questLineId);
if (questLineQuests.Empty())
continue;
foreach (var questLineQuest in questLineQuests)
{
Quest quest = Global.ObjectMgr.GetQuestTemplate(questLineQuest.QuestID);
if (quest != null && _player.CanTakeQuest(quest, false))
response.QuestLineXQuestIDs.Add(questLineQuest.Id);
}
}
var quests = Global.ObjectMgr.GetUiMapQuestsList(uiMap.Id);
foreach (uint questId in quests)
{
Quest quest = Global.ObjectMgr.GetQuestTemplate(questId);
if (quest != null && _player.CanTakeQuest(quest, false))
response.QuestIDs.Add(questId);
}
SendPacket(response);
}
}
}