diff options
| author | Cannix <connex-castle@gmx.de> | 2017-06-15 01:27:37 +0200 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2017-06-15 01:27:37 +0200 |
| commit | c14b448d6334e3a74f2ea44c2d9ae15ac8cbc3da (patch) | |
| tree | 889edf6f407e192f2668374b63ee3005fee348da /src/server/game/Entities | |
| parent | 23f2646adf3987b349196f2765e89a6061c17a29 (diff) | |
Core/Player: Keep shared quests through map changes instead of getting stuck in busy state (#19821)
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 9 |
3 files changed, 15 insertions, 4 deletions
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 5e055583d22..0c395eb8cad 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -403,7 +403,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU WorldPacket data(SMSG_QUESTGIVER_QUEST_DETAILS, 100); // guess size data << uint64(npcGUID); - data << uint64(_session->GetPlayer()->GetDivider()); + data << uint64(_session->GetPlayer()->GetPlayerSharingQuest()); data << uint32(quest->GetQuestId()); data << questTitle; data << questDetails; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d689ca86b68..c2094cf85b9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22643,6 +22643,14 @@ void Player::SendInitialPacketsAfterAddToMap() } else if (GetRaidDifficulty() != GetStoredRaidDifficulty()) SendRaidDifficulty(GetGroup() != NULL); + + if (GetPlayerSharingQuest()) + { + if (Quest const* quest = sObjectMgr->GetQuestTemplate(GetSharedQuestID())) + PlayerTalkClass->SendQuestGiverQuestDetails(quest, GetGUID(), true); + else + ClearQuestSharingInfo(); + } } void Player::SendUpdateToOutOfRangeGroupMembers() diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index eb11aae59d5..f1a68827bbf 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1432,8 +1432,10 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SendQuestUpdateAddPlayer(Quest const* quest, uint16 oldCount, uint16 addCount); void SendQuestGiverStatusMultiple(); - ObjectGuid GetDivider() const { return m_divider; } - void SetDivider(ObjectGuid guid) { m_divider = guid; } + uint32 GetSharedQuestID() const { return m_sharedQuestId; } + ObjectGuid GetPlayerSharingQuest() const { return m_playerSharingQuest; } + void SetQuestSharingInfo(ObjectGuid guid, uint32 id) { m_playerSharingQuest = guid; m_sharedQuestId = id; } + void ClearQuestSharingInfo() { m_playerSharingQuest = ObjectGuid::Empty; m_sharedQuestId = 0; } uint32 GetInGameTime() const { return m_ingametime; } void SetInGameTime(uint32 time) { m_ingametime = time; } @@ -2337,7 +2339,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> QuestSet m_monthlyquests; SeasonalEventQuestMap m_seasonalquests; - ObjectGuid m_divider; + ObjectGuid m_playerSharingQuest; + uint32 m_sharedQuestId; uint32 m_ingametime; /*********************************************************/ |
