aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkvolk2git <78740198+kvolk2git@users.noreply.github.com>2022-04-17 18:27:00 +0300
committerGitHub <noreply@github.com>2022-04-17 17:27:00 +0200
commitc65ccefe16bf462b082fd7a6fce9f87e03a32cb0 (patch)
treea14391a32f75779b4b82ed12699c7445e462ecfa
parent5384fc194f9061bbac314abb66a9bac88aaaf760 (diff)
Core/Quest - fix incorrect answer when sharing (#27529)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
-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))