Core/LFG: Add convenience function to get which random dungeon was selected by queued player
Port From (https://github.com/TrinityCore/TrinityCore/commit/84a0b5569552a9f5a6074d102135933b9a4a52f4)
This commit is contained in:
@@ -1486,6 +1486,22 @@ namespace Game.DungeonFinding
|
||||
return PlayersStore[guid].GetSelectedDungeons();
|
||||
}
|
||||
|
||||
public uint GetSelectedRandomDungeon(ObjectGuid guid)
|
||||
{
|
||||
if (GetState(guid) != LfgState.None)
|
||||
{
|
||||
var dungeons = GetSelectedDungeons(guid);
|
||||
if (!dungeons.Empty())
|
||||
{
|
||||
LFGDungeonData dungeon = GetLFGDungeon(dungeons.First());
|
||||
if (dungeon != null && dungeon.type == LfgType.Raid)
|
||||
return dungeons.First();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public Dictionary<uint, LfgLockInfoData> GetLockedDungeons(ObjectGuid guid)
|
||||
{
|
||||
Dictionary<uint, LfgLockInfoData> lockDic = new Dictionary<uint, LfgLockInfoData>();
|
||||
|
||||
@@ -1426,23 +1426,20 @@ namespace Game.Groups
|
||||
partyUpdate.LfgInfos.Value.Aborted = false;
|
||||
|
||||
partyUpdate.LfgInfos.Value.MyFlags = (byte)(Global.LFGMgr.GetState(m_guid) == LfgState.FinishedDungeon ? 2 : 0);
|
||||
|
||||
uint randomSlot = 0;
|
||||
var selectedDungeons = Global.LFGMgr.GetSelectedDungeons(player.GetGUID());
|
||||
if (selectedDungeons.Count == 1)
|
||||
{
|
||||
LFGDungeonsRecord dungeon = CliDB.LFGDungeonsStorage.LookupByKey(selectedDungeons.First());
|
||||
if (dungeon != null)
|
||||
if (dungeon.TypeID == LfgType.RandomDungeon)
|
||||
randomSlot= dungeon.Id;
|
||||
}
|
||||
|
||||
partyUpdate.LfgInfos.Value.MyRandomSlot = randomSlot;
|
||||
partyUpdate.LfgInfos.Value.MyRandomSlot = Global.LFGMgr.GetSelectedRandomDungeon(player.GetGUID());
|
||||
|
||||
partyUpdate.LfgInfos.Value.MyPartialClear = 0;
|
||||
partyUpdate.LfgInfos.Value.MyGearDiff = 0.0f;
|
||||
partyUpdate.LfgInfos.Value.MyFirstReward = false;
|
||||
|
||||
DungeonFinding.LfgReward reward = Global.LFGMgr.GetRandomDungeonReward(partyUpdate.LfgInfos.Value.MyRandomSlot, player.GetLevel());
|
||||
if (reward != null)
|
||||
{
|
||||
Quest quest = Global.ObjectMgr.GetQuestTemplate(reward.firstQuest);
|
||||
if (quest != null)
|
||||
partyUpdate.LfgInfos.Value.MyFirstReward = player.CanRewardQuest(quest, false);
|
||||
}
|
||||
|
||||
partyUpdate.LfgInfos.Value.MyStrangerCount = 0;
|
||||
partyUpdate.LfgInfos.Value.MyKickVoteCount = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user