diff options
author | ariel- <ariel-@users.noreply.github.com> | 2017-04-24 16:33:51 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2017-04-24 16:34:50 -0300 |
commit | 157e9311c41a8d33f7a2e3d5381ffc09d4585c42 (patch) | |
tree | 7a28c7d3617a5dfb979d987f969d58a8018f066c /src/server/game/Handlers/QuestHandler.cpp | |
parent | 4c09b8a02f983e54bdd8049af130f7ca0bde218d (diff) |
Core/Quests: implemented MSG_QUEST_PUSH_RESULT notifications
- Allow to share already completed (but not rewarded) quests, restriction was unblizzlike
thanks Cannix for the heads up
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index c549a49adf3..85254d068b7 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -555,7 +555,10 @@ void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket) Group* group = sender->GetGroup(); if (!group) + { + sender->SendPushToPartyResponse(sender, QUEST_PARTY_MSG_NOT_IN_PARTY); return; + } for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) { @@ -576,6 +579,12 @@ void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket) continue; } + if (!receiver->SatisfyQuestDay(quest, false)) + { + sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_NOT_ELIGIBLE_TODAY); + continue; + } + if (!receiver->CanTakeQuest(quest, false)) { sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_CANT_TAKE_QUEST); @@ -618,21 +627,17 @@ void WorldSession::HandleQuestPushResult(WorldPacket& recvPacket) TC_LOG_DEBUG("network", "WORLD: Received MSG_QUEST_PUSH_RESULT"); - if (_player->GetDivider()) + if (!_player->GetDivider()) + return; + + if (_player->GetDivider() == guid) { - if (_player->GetDivider() == guid) - { - Player* player = ObjectAccessor::FindPlayer(_player->GetDivider()); - if (player) - { - WorldPacket data(MSG_QUEST_PUSH_RESULT, 8 + 4 + 1); - data << uint64(_player->GetGUID()); - data << uint8(msg); // valid values: 0-8 - player->SendDirectMessage(&data); - } - } - _player->SetDivider(ObjectGuid::Empty); + Player* player = ObjectAccessor::FindPlayer(guid); + if (player) + player->SendPushToPartyResponse(_player, msg); } + + _player->SetDivider(ObjectGuid::Empty); } void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket*/) |