aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/DungeonFinding/LFGMgr.cpp
diff options
context:
space:
mode:
authorWyrserth <43747507+Wyrserth@users.noreply.github.com>2019-06-16 19:46:00 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-11 14:12:54 +0100
commit01be9f44af0687f03c34f0221dc285ec22803969 (patch)
treeba6d83249a488b076dd969b75261a61ae57839a1 /src/server/game/DungeonFinding/LFGMgr.cpp
parent3278f87789b8357ce888ab61026c0ca6daa8e6cb (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.cpp14
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)