aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index b886e2c03a0..eca57bca216 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -569,15 +569,32 @@ void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket)
if (!receiver || receiver == sender)
continue;
- if (!receiver->SatisfyQuestStatus(quest, false))
+ if (!receiver->GetPlayerSharingQuest().IsEmpty())
{
- sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_HAVE_QUEST);
+ sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_BUSY);
continue;
}
- if (receiver->GetQuestStatus(questId) == QUEST_STATUS_COMPLETE)
+ switch (receiver->GetQuestStatus(questId))
{
- sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_FINISH_QUEST);
+ case QUEST_STATUS_REWARDED:
+ {
+ sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_FINISH_QUEST);
+ continue;
+ }
+ case QUEST_STATUS_INCOMPLETE:
+ case QUEST_STATUS_COMPLETE:
+ {
+ sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_HAVE_QUEST);
+ continue;
+ }
+ default:
+ break;
+ }
+
+ if (!receiver->SatisfyQuestLog(false))
+ {
+ sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_LOG_FULL);
continue;
}
@@ -593,18 +610,6 @@ void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket)
continue;
}
- if (!receiver->SatisfyQuestLog(false))
- {
- sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_LOG_FULL);
- continue;
- }
-
- if (receiver->GetPlayerSharingQuest())
- {
- sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_BUSY);
- continue;
- }
-
sender->SendPushToPartyResponse(receiver, QUEST_PARTY_MSG_SHARING_QUEST);
if ((quest->IsAutoComplete() && quest->IsRepeatable() && !quest->IsDailyOrWeekly()) || quest->HasFlag(QUEST_FLAGS_AUTOCOMPLETE))