diff options
author | Wyrserth <43747507+Wyrserth@users.noreply.github.com> | 2019-06-16 19:46:00 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-11 14:12:54 +0100 |
commit | 01be9f44af0687f03c34f0221dc285ec22803969 (patch) | |
tree | ba6d83249a488b076dd969b75261a61ae57839a1 /src/server/game/DungeonFinding/LFGMgr.cpp | |
parent | 3278f87789b8357ce888ab61026c0ca6daa8e6cb (diff) |
Core/RDF: fix counting issue with the achievement Looking for More (and similar) (#23418)
* Core/RDF: allow the achievement Looking for More (and similar) to increase the counter based on how many random players were picked.
* Use getter/setter instead.
(cherry picked from commit 14c2bdc5dac81f5f2b76d78b09c1224dbebcd8bc)
Diffstat (limited to 'src/server/game/DungeonFinding/LFGMgr.cpp')
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 16277601b74..0d25ca0a569 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1107,6 +1107,11 @@ void LFGMgr::UpdateProposal(uint32 proposalId, ObjectGuid guid, bool accept) break; } + // Store the number of players that were present in group when joining RFD, used for achievement purposes + if (Player* player = ObjectAccessor::FindConnectedPlayer(pguid)) + if (Group* group = player->GetGroup()) + PlayersStore[pguid].SetNumberOfPartyMembersAtJoin(group->GetMembersCount()); + SetState(pguid, LFG_STATE_DUNGEON); } @@ -1476,7 +1481,14 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId, Map const* // Update achievements if (dungeon->difficulty == DIFFICULTY_HEROIC) - player->UpdateCriteria(CriteriaType::CompletedLFGDungeonWithStrangers, 1); + { + uint8 lfdRandomPlayers = 0; + if (uint8 numParty = PlayersStore[guid].GetNumberOfPartyMembersAtJoin()) + lfdRandomPlayers = 5 - numParty; + else + lfdRandomPlayers = 4; + player->UpdateCriteria(CriteriaType::CompletedLFGDungeonWithStrangers, lfdRandomPlayers); + } LfgReward const* reward = GetRandomDungeonReward(rDungeonId, player->getLevel()); if (!reward) |