diff options
author | Shauren <shauren.trinity@gmail.com> | 2016-01-12 19:41:27 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-03-22 22:10:12 +0100 |
commit | f6b60d461e293d30d4ac90ddc814c1df63deeeca (patch) | |
tree | 566da63668ff4af6ff1d96be38b27aba0d1442df /src | |
parent | a254bdff591a6be8f63c84a949c88f4e5504ceda (diff) |
Core/Quests: Fixed party accept quests
(cherry picked from commit 48940e292fdde1042f096cac507c2b1b54e8146b)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index a0a7bdde84b..cb56a81e5d9 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -124,7 +124,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG CLOSE_GOSSIP_CLEAR_DIVIDER(); return; } - if (_player->GetGroup() != playerQuestObject->GetGroup() || (_player != playerQuestObject && !playerQuestObject->GetGroup())) + if (!_player->IsInSameRaidWith(playerQuestObject)) { CLOSE_GOSSIP_CLEAR_DIVIDER(); return; @@ -474,17 +474,22 @@ void WorldSession::HandleQuestConfirmAccept(WorldPackets::Quest::QuestConfirmAcc if (!_player->IsInSameRaidWith(originalPlayer)) return; - if (!originalPlayer->CanShareQuest(packet.QuestID)) + if (!originalPlayer->IsActiveQuest(packet.QuestID)) return; if (!_player->CanTakeQuest(quest, true)) return; if (_player->CanAddQuest(quest, true)) + { _player->AddQuestAndCheckCompletion(quest, NULL); // NULL, this prevent DB script from duplicate running - _player->SetDivider(ObjectGuid::Empty); + if (quest->GetSrcSpell() > 0) + _player->CastSpell(_player, quest->GetSrcSpell(), true); + } } + + _player->SetDivider(ObjectGuid::Empty); } void WorldSession::HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiverCompleteQuest& packet) |