diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 9 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 5442360a165..b4a8660708c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16550,12 +16550,12 @@ bool Player::CanShareQuest(uint32 quest_id) const QuestStatusMap::const_iterator itr = m_QuestStatus.find(quest_id); if (itr != m_QuestStatus.end()) { - if (itr->second.Status != QUEST_STATUS_INCOMPLETE) - return false; - // in pool and not currently available (wintergrasp weekly, dalaran weekly) - can't share if (sPoolMgr->IsPartOfAPool<Quest>(quest_id) && !sPoolMgr->IsSpawnedObject<Quest>(quest_id)) + { + SendPushToPartyResponse(this, QUEST_PUSH_NOT_DAILY); return false; + } return true; } @@ -17654,7 +17654,7 @@ void Player::SendQuestConfirmAccept(Quest const* quest, Player* receiver) const receiver->GetSession()->SendPacket(packet.Write()); } -void Player::SendPushToPartyResponse(Player* player, QuestPushReason reason) const +void Player::SendPushToPartyResponse(Player const* player, QuestPushReason reason) const { if (player) { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 9f56b7f91b5..a81afcb8bba 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1418,7 +1418,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SendQuestTimerFailed(uint32 questID) const; void SendCanTakeQuestResponse(QuestFailedReason reason, bool sendErrorMessage = true, std::string reasonText = "") const; void SendQuestConfirmAccept(Quest const* quest, Player* receiver) const; - void SendPushToPartyResponse(Player* player, QuestPushReason reason) const; + void SendPushToPartyResponse(Player const* player, QuestPushReason reason) const; void SendQuestUpdateAddCredit(Quest const* quest, ObjectGuid guid, QuestObjective const& obj, uint16 count) const; void SendQuestUpdateAddCreditSimple(QuestObjective const& obj) const; void SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount) const; diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 3ccee95e9e0..aeafff6d1cc 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -585,7 +585,10 @@ void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& Group* group = sender->GetGroup(); if (!group) + { + sender->SendPushToPartyResponse(sender, QUEST_PUSH_NOT_IN_PARTY); return; + } for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) { @@ -606,6 +609,12 @@ void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& continue; } + if (!receiver->SatisfyQuestDay(quest, false)) + { + sender->SendPushToPartyResponse(receiver, QUEST_PUSH_DIFFERENT_SERVER_DAILY); + continue; + } + if (!receiver->CanTakeQuest(quest, false)) { sender->SendPushToPartyResponse(receiver, QUEST_PUSH_INVALID); |