aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QuestHandler.cpp
diff options
context:
space:
mode:
authorCannix <connex-castle@gmx.de>2017-06-15 01:27:37 +0200
committerCarbenium <carbenium@outlook.com>2020-07-16 22:00:29 +0200
commitc12ee97f122acfd77bd81cf178a77d5054c312b6 (patch)
treedef96b7214e6b67d99faa4ea1071de069ffd1f10 /src/server/game/Handlers/QuestHandler.cpp
parent23a113756e65a953e80a3b03d72e3d11bd373a43 (diff)
Core/Player: Keep shared quests through map changes instead of getting stuck in busy state (#19821)
(cherry picked from commit c14b448d6334e3a74f2ea44c2d9ae15ac8cbc3da)
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 1819e5bea1d..dc6b482e9d8 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -108,29 +108,29 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
else
object = ObjectAccessor::FindPlayer(packet.QuestGiverGUID);
-#define CLOSE_GOSSIP_CLEAR_DIVIDER() \
+#define CLOSE_GOSSIP_CLEAR_SHARING_INFO() \
do { \
_player->PlayerTalkClass->SendCloseGossip(); \
- _player->SetDivider(ObjectGuid::Empty); \
+ _player->ClearQuestSharingInfo(); \
} while (0)
// no or incorrect quest giver
if (!object)
{
- CLOSE_GOSSIP_CLEAR_DIVIDER();
+ CLOSE_GOSSIP_CLEAR_SHARING_INFO();
return;
}
if (Player* playerQuestObject = object->ToPlayer())
{
- if ((_player->GetDivider().IsEmpty() && _player->GetDivider() != packet.QuestGiverGUID) || !playerQuestObject->CanShareQuest(packet.QuestID))
+ if ((_player->GetPlayerSharingQuest().IsEmpty() && _player->GetPlayerSharingQuest() != packet.QuestGiverGUID) || !playerQuestObject->CanShareQuest(packet.QuestID))
{
- CLOSE_GOSSIP_CLEAR_DIVIDER();
+ CLOSE_GOSSIP_CLEAR_SHARING_INFO();
return;
}
if (!_player->IsInSameRaidWith(playerQuestObject))
{
- CLOSE_GOSSIP_CLEAR_DIVIDER();
+ CLOSE_GOSSIP_CLEAR_SHARING_INFO();
return;
}
}
@@ -138,7 +138,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
{
if (!object->hasQuest(packet.QuestID))
{
- CLOSE_GOSSIP_CLEAR_DIVIDER();
+ CLOSE_GOSSIP_CLEAR_SHARING_INFO();
return;
}
}
@@ -146,7 +146,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
// some kind of WPE protection
if (!_player->CanInteractWithQuestGiver(object))
{
- CLOSE_GOSSIP_CLEAR_DIVIDER();
+ CLOSE_GOSSIP_CLEAR_SHARING_INFO();
return;
}
@@ -155,17 +155,17 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
// prevent cheating
if (!GetPlayer()->CanTakeQuest(quest, true))
{
- CLOSE_GOSSIP_CLEAR_DIVIDER();
+ CLOSE_GOSSIP_CLEAR_SHARING_INFO();
return;
}
- if (!_player->GetDivider().IsEmpty())
+ if (!_player->GetPlayerSharingQuest().IsEmpty())
{
- Player* player = ObjectAccessor::FindPlayer(_player->GetDivider());
+ Player* player = ObjectAccessor::FindPlayer(_player->GetPlayerSharingQuest());
if (player)
{
player->SendPushToPartyResponse(_player, QUEST_PUSH_ACCEPTED);
- _player->SetDivider(ObjectGuid::Empty);
+ _player->ClearQuestSharingInfo();
}
}
@@ -186,7 +186,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
if (player->CanTakeQuest(quest, true))
{
- player->SetDivider(_player->GetGUID());
+ player->SetQuestSharingInfo(_player->GetGUID(), quest->GetQuestId());
// need confirmation that any gossip window will close
player->PlayerTalkClass->SendCloseGossip();
@@ -203,9 +203,9 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
}
}
- CLOSE_GOSSIP_CLEAR_DIVIDER();
+ CLOSE_GOSSIP_CLEAR_SHARING_INFO();
-#undef CLOSE_GOSSIP_CLEAR_DIVIDER
+#undef CLOSE_GOSSIP_CLEAR_SHARING_INFO
}
void WorldSession::HandleQuestgiverQueryQuestOpcode(WorldPackets::Quest::QuestGiverQueryQuest& packet)
@@ -482,7 +482,7 @@ void WorldSession::HandleQuestConfirmAccept(WorldPackets::Quest::QuestConfirmAcc
if (!quest->HasFlag(QUEST_FLAGS_PARTY_ACCEPT))
return;
- Player* originalPlayer = ObjectAccessor::FindPlayer(_player->GetDivider());
+ Player* originalPlayer = ObjectAccessor::FindPlayer(_player->GetPlayerSharingQuest());
if (!originalPlayer)
return;
@@ -504,7 +504,7 @@ void WorldSession::HandleQuestConfirmAccept(WorldPackets::Quest::QuestConfirmAcc
}
}
- _player->SetDivider(ObjectGuid::Empty);
+ _player->ClearQuestSharingInfo();
}
void WorldSession::HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiverCompleteQuest& packet)
@@ -626,7 +626,7 @@ void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty&
continue;
}
- if (!receiver->GetDivider().IsEmpty())
+ if (!receiver->GetPlayerSharingQuest().IsEmpty())
{
sender->SendPushToPartyResponse(receiver, QUEST_PUSH_BUSY);
continue;
@@ -641,7 +641,7 @@ void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty&
receiver->PlayerTalkClass->SendQuestGiverRequestItems(quest, sender->GetGUID(), receiver->CanCompleteRepeatableQuest(quest), true);
else
{
- receiver->SetDivider(sender->GetGUID());
+ receiver->SetQuestSharingInfo(sender->GetGUID(), quest->GetQuestId());
receiver->PlayerTalkClass->SendQuestGiverQuestDetails(quest, receiver->GetGUID(), true, false);
}
}
@@ -649,13 +649,13 @@ void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty&
void WorldSession::HandleQuestPushResult(WorldPackets::Quest::QuestPushResult& packet)
{
- if (!_player->GetDivider().IsEmpty())
+ if (!_player->GetPlayerSharingQuest().IsEmpty())
{
- if (_player->GetDivider() == packet.SenderGUID)
- if (Player* player = ObjectAccessor::FindPlayer(_player->GetDivider()))
+ if (_player->GetPlayerSharingQuest() == packet.SenderGUID)
+ if (Player* player = ObjectAccessor::FindPlayer(_player->GetPlayerSharingQuest()))
player->SendPushToPartyResponse(_player, static_cast<QuestPushReason>(packet.Result));
- _player->SetDivider(ObjectGuid::Empty);
+ _player->ClearQuestSharingInfo();
}
}