Core/Quest: Allow quests flagged as QUEST_FLAGS_AUTO_COMPLETE to be valid in CMSG_QUESTGIVER_REQUEST_REWARD

Port From (https://github.com/TrinityCore/TrinityCore/commit/a9d459962b221fd2033efa02f059b602c5a546f6)
This commit is contained in:
hondacrx
2023-09-14 04:50:51 -04:00
parent 0bb8152623
commit 3c28432a49
+14 -9
View File
@@ -376,23 +376,28 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.QuestGiverRequestReward, Processing = PacketProcessing.Inplace)]
void HandleQuestgiverRequestReward(QuestGiverRequestReward packet)
{
WorldObject obj = Global.ObjAccessor.GetObjectByTypeMask(GetPlayer(), packet.QuestGiverGUID, TypeMask.Unit | TypeMask.GameObject);
if (obj == null || !obj.HasInvolvedQuest(packet.QuestID))
Quest quest = Global.ObjectMgr.GetQuestTemplate(packet.QuestID);
if (quest == null)
return;
// some kind of WPE protection
if (!GetPlayer().CanInteractWithQuestGiver(obj))
return;
if (!quest.HasFlag(QuestFlags.AutoComplete))
{
WorldObject obj = Global.ObjAccessor.GetObjectByTypeMask(_player, packet.QuestGiverGUID, TypeMask.Unit | TypeMask.GameObject);
if (obj == null || !obj.HasInvolvedQuest(packet.QuestID))
return;
// some kind of WPE protection
if (!_player.CanInteractWithQuestGiver(obj))
return;
}
if (GetPlayer().CanCompleteQuest(packet.QuestID))
GetPlayer().CompleteQuest(packet.QuestID);
if (GetPlayer().GetQuestStatus(packet.QuestID) != QuestStatus.Complete)
return;
Quest quest = Global.ObjectMgr.GetQuestTemplate(packet.QuestID);
if (quest != null)
GetPlayer().PlayerTalkClass.SendQuestGiverOfferReward(quest, packet.QuestGiverGUID, true);
GetPlayer().PlayerTalkClass.SendQuestGiverOfferReward(quest, packet.QuestGiverGUID, true);
}
[WorldPacketHandler(ClientOpcodes.QuestLogRemoveQuest, Processing = PacketProcessing.Inplace)]