mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Core/Dungeon Finder: Fix exploit that allowed players to get random reward after finish a dungeon they did not queue for. Note: lfg_dungeon_encounters MUST contain the correct dungeonId, no the random ones.
This commit is contained in:
@@ -1794,10 +1794,10 @@ void LFGMgr::TeleportPlayer(Player* plr, bool out, bool fromOpcode /*= false*/)
|
||||
/**
|
||||
Give completion reward to player
|
||||
|
||||
@param[in] dungeonId Dungeonid (Obsolete)
|
||||
@param[in] dungeonId Id of the dungeon finished
|
||||
@param[in] plr Player to reward
|
||||
*/
|
||||
void LFGMgr::RewardDungeonDoneFor(const uint32 /*dungeonId*/, Player* player)
|
||||
void LFGMgr::RewardDungeonDoneFor(const uint32 dungeonId, Player* player)
|
||||
{
|
||||
Group* group = player->GetGroup();
|
||||
if (!group || !group->isLFGGroup())
|
||||
@@ -1808,6 +1808,12 @@ void LFGMgr::RewardDungeonDoneFor(const uint32 /*dungeonId*/, Player* player)
|
||||
|
||||
uint64 guid = player->GetGUID();
|
||||
uint64 gguid = player->GetGroup()->GetGUID();
|
||||
uint32 gDungeonId = GetDungeon(gguid);
|
||||
if (gDungeonId != dungeonId)
|
||||
{
|
||||
sLog->outDebug("LFGMgr::RewardDungeonDoneFor: [" UI64FMTD "] Finished dungeon %u but group queued for %u. Ignoring", guid, dungeonId, gDungeonId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetState(guid) == LFG_STATE_FINISHED_DUNGEON)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user