From 65c673197469cce8c0068c2ed18e568ac16de1ec Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 18 May 2020 22:46:04 -0400 Subject: [PATCH] Core/Quest: always send the specified RewardNextQuest regardless of eventual scripts Port From (https://github.com/TrinityCore/TrinityCore/commit/2bd7c9aa40cefcfc401b81cfacd7dd832a3a736b) --- Source/Game/Handlers/QuestHandler.cs | 62 ++++++++++++++-------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/Source/Game/Handlers/QuestHandler.cs b/Source/Game/Handlers/QuestHandler.cs index aa6bedad2..1cff7410f 100644 --- a/Source/Game/Handlers/QuestHandler.cs +++ b/Source/Game/Handlers/QuestHandler.cs @@ -334,48 +334,46 @@ namespace Game { //For AutoSubmition was added plr case there as it almost same exclute AI script cases. Creature creatureQGiver = obj.ToCreature(); - if (!creatureQGiver || !Global.ScriptMgr.OnQuestReward(GetPlayer(), creatureQGiver, quest, packet.ItemChoiceID)) - { - // Send next quest - Quest nextQuest = GetPlayer().GetNextQuest(packet.QuestGiverGUID, quest); - if (nextQuest != null) - { - // Only send the quest to the player if the conditions are met - if (GetPlayer().CanTakeQuest(nextQuest, false)) - { - if (nextQuest.IsAutoAccept() && GetPlayer().CanAddQuest(nextQuest, true)) - GetPlayer().AddQuestAndCheckCompletion(nextQuest, obj); - - GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false); - } - } - - if (creatureQGiver) - creatureQGiver.GetAI().QuestReward(GetPlayer(), quest, packet.ItemChoiceID); - } - break; - } - case TypeId.GameObject: - GameObject questGiver = obj.ToGameObject(); - if (!Global.ScriptMgr.OnQuestReward(GetPlayer(), questGiver, quest, packet.ItemChoiceID)) - { // Send next quest - Quest nextQuest = GetPlayer().GetNextQuest(packet.QuestGiverGUID, quest); + Quest nextQuest = _player.GetNextQuest(packet.QuestGiverGUID, quest); if (nextQuest != null) { // Only send the quest to the player if the conditions are met - if (GetPlayer().CanTakeQuest(nextQuest, false)) + if (_player.CanTakeQuest(nextQuest, false)) { - if (nextQuest.IsAutoAccept() && GetPlayer().CanAddQuest(nextQuest, true)) - GetPlayer().AddQuestAndCheckCompletion(nextQuest, obj); + if (nextQuest.IsAutoAccept() && _player.CanAddQuest(nextQuest, true)) + _player.AddQuestAndCheckCompletion(nextQuest, obj); - GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false); + _player.PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false); } } - questGiver.GetAI().QuestReward(GetPlayer(), quest, packet.ItemChoiceID); + if (creatureQGiver && !Global.ScriptMgr.OnQuestReward(_player, creatureQGiver, quest, packet.ItemChoiceID)) + creatureQGiver.GetAI().QuestReward(_player, quest, packet.ItemChoiceID); + break; + } + case TypeId.GameObject: + { + GameObject questGiver = obj.ToGameObject(); + // Send next quest + Quest nextQuest = _player.GetNextQuest(packet.QuestGiverGUID, quest); + if (nextQuest != null) + { + // Only send the quest to the player if the conditions are met + if (_player.CanTakeQuest(nextQuest, false)) + { + if (nextQuest.IsAutoAccept() && _player.CanAddQuest(nextQuest, true)) + _player.AddQuestAndCheckCompletion(nextQuest, obj); + + _player.PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false); + } + } + + if (!Global.ScriptMgr.OnQuestReward(_player, questGiver, quest, packet.ItemChoiceID)) + questGiver.GetAI().QuestReward(_player, quest, packet.ItemChoiceID); + + break; } - break; default: break; }