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:
@@ -376,23 +376,28 @@ namespace Game
|
|||||||
[WorldPacketHandler(ClientOpcodes.QuestGiverRequestReward, Processing = PacketProcessing.Inplace)]
|
[WorldPacketHandler(ClientOpcodes.QuestGiverRequestReward, Processing = PacketProcessing.Inplace)]
|
||||||
void HandleQuestgiverRequestReward(QuestGiverRequestReward packet)
|
void HandleQuestgiverRequestReward(QuestGiverRequestReward packet)
|
||||||
{
|
{
|
||||||
WorldObject obj = Global.ObjAccessor.GetObjectByTypeMask(GetPlayer(), packet.QuestGiverGUID, TypeMask.Unit | TypeMask.GameObject);
|
Quest quest = Global.ObjectMgr.GetQuestTemplate(packet.QuestID);
|
||||||
if (obj == null || !obj.HasInvolvedQuest(packet.QuestID))
|
if (quest == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// some kind of WPE protection
|
if (!quest.HasFlag(QuestFlags.AutoComplete))
|
||||||
if (!GetPlayer().CanInteractWithQuestGiver(obj))
|
{
|
||||||
return;
|
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))
|
if (GetPlayer().CanCompleteQuest(packet.QuestID))
|
||||||
GetPlayer().CompleteQuest(packet.QuestID);
|
GetPlayer().CompleteQuest(packet.QuestID);
|
||||||
|
|
||||||
if (GetPlayer().GetQuestStatus(packet.QuestID) != QuestStatus.Complete)
|
if (GetPlayer().GetQuestStatus(packet.QuestID) != QuestStatus.Complete)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Quest quest = Global.ObjectMgr.GetQuestTemplate(packet.QuestID);
|
GetPlayer().PlayerTalkClass.SendQuestGiverOfferReward(quest, packet.QuestGiverGUID, true);
|
||||||
if (quest != null)
|
|
||||||
GetPlayer().PlayerTalkClass.SendQuestGiverOfferReward(quest, packet.QuestGiverGUID, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[WorldPacketHandler(ClientOpcodes.QuestLogRemoveQuest, Processing = PacketProcessing.Inplace)]
|
[WorldPacketHandler(ClientOpcodes.QuestLogRemoveQuest, Processing = PacketProcessing.Inplace)]
|
||||||
|
|||||||
Reference in New Issue
Block a user