TrinityCore
LFGMgr.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef _LFGMGR_H
19#define _LFGMGR_H
20
21#include "Common.h"
22#include "DatabaseEnvFwd.h"
23#include "LFG.h"
24#include "LFGQueue.h"
25#include "LFGGroupData.h"
26#include "LFGPlayerData.h"
27#include <unordered_map>
28
29class Group;
30class Player;
31class Quest;
32class Map;
33struct LFGDungeonsEntry;
34enum Difficulty : uint8;
35
36namespace WorldPackets
37{
38 namespace LFG
39 {
40 struct RideTicket;
41 }
42}
43
44namespace lfg
45{
46
48{
51};
52
54{
63};
64
66{
70 LFG_FLAG_UNK3 = 0x8
71};
72
75{
83};
84
87{
91};
92
95{
96 // 7 = "You can't do that right now" | 5 = No client reaction
97 LFG_TELEPORT_RESULT_NONE = 0, // Internal use
103 LFG_TELEPORT_RESULT_IMMUNE_TO_SUMMONS = 8 // FIXME - It can be 7 or 8 (Need proper data)
104
105 // unknown values
106 //LFG_TELEPORT_RESULT_NOT_IN_DUNGEON,
107 //LFG_TELEPORT_RESULT_NOT_ALLOWED,
108 //LFG_TELEPORT_RESULT_ALREADY_IN_DUNGEON
110
113{
114 // 3 = No client reaction | 18 = "Rolecheck failed"
115 LFG_JOIN_OK = 0x00, // Joined (no client msg)
116 LFG_JOIN_GROUP_FULL = 0x1F, // Your group is already full.
117 LFG_JOIN_NO_LFG_OBJECT = 0x21, // Internal LFG Error.
118 LFG_JOIN_NO_SLOTS = 0x22, // You do not meet the requirements for the chosen dungeons.
119 LFG_JOIN_MISMATCHED_SLOTS = 0x23, // You cannot mix dungeons, raids, and random when picking dungeons.
120 LFG_JOIN_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 0x24, // The dungeon you chose does not support players from multiple realms.
121 LFG_JOIN_MEMBERS_NOT_PRESENT = 0x25, // One or more group members are pending invites or disconnected.
122 LFG_JOIN_GET_INFO_TIMEOUT = 0x26, // Could not retrieve information about some party members.
123 LFG_JOIN_INVALID_SLOT = 0x27, // One or more dungeons was not valid.
124 LFG_JOIN_DESERTER_PLAYER = 0x28, // You can not queue for dungeons until your deserter debuff wears off.
125 LFG_JOIN_DESERTER_PARTY = 0x29, // One or more party members has a deserter debuff.
126 LFG_JOIN_RANDOM_COOLDOWN_PLAYER = 0x2A, // You can not queue for random dungeons while on random dungeon cooldown.
127 LFG_JOIN_RANDOM_COOLDOWN_PARTY = 0x2B, // One or more party members are on random dungeon cooldown.
128 LFG_JOIN_TOO_MANY_MEMBERS = 0x2C, // You have too many group members to queue for that.
129 LFG_JOIN_CANT_USE_DUNGEONS = 0x2D, // You cannot queue for a dungeon or raid while using battlegrounds or arenas.
130 LFG_JOIN_ROLE_CHECK_FAILED = 0x2E, // The Role Check has failed.
131 LFG_JOIN_TOO_FEW_MEMBERS = 0x34, // You do not have enough group members to queue for that.
132 LFG_JOIN_REASON_TOO_MANY_LFG = 0x35, // You are queued for too many instances.
133 LFG_JOIN_MISMATCHED_SLOTS_LOCAL_XREALM = 0x37, // You cannot mix realm-only and x-realm entries when listing your name in other raids.
134 LFG_JOIN_ALREADY_USING_LFG_LIST = 0x3F, // You can't do that while using Premade Groups.
135 LFG_JOIN_NOT_LEADER = 0x45, // You are not the party leader.
137
138 LFG_JOIN_PARTY_NOT_MEET_REQS = 6, // One or more party members do not meet the requirements for the chosen dungeons (FIXME)
139};
140
143{
144 LFG_ROLECHECK_DEFAULT = 0, // Internal use = Not initialized.
145 LFG_ROLECHECK_FINISHED = 1, // Role check finished
146 LFG_ROLECHECK_INITIALITING = 2, // Role check begins
147 LFG_ROLECHECK_MISSING_ROLE = 3, // Someone didn't selected a role after 2 mins
148 LFG_ROLECHECK_WRONG_ROLES = 4, // Can't form a group with that role selection
149 LFG_ROLECHECK_ABORTED = 5, // Someone leave the group
150 LFG_ROLECHECK_NO_ROLE = 6 // Someone selected no role
152
153// Forward declaration (just to have all typedef together)
154struct LFGDungeonData;
155struct LfgReward;
156struct LfgQueueInfo;
157struct LfgRoleCheck;
158struct LfgProposal;
159struct LfgProposalPlayer;
160struct LfgPlayerBoot;
161
162typedef std::map<uint8, LFGQueue> LfgQueueContainer;
163typedef std::multimap<uint32, LfgReward const*> LfgRewardContainer;
164typedef std::pair<LfgRewardContainer::const_iterator, LfgRewardContainer::const_iterator> LfgRewardContainerBounds;
165typedef std::map<uint8, LfgDungeonSet> LfgCachedDungeonContainer;
166typedef std::map<ObjectGuid, LfgAnswer> LfgAnswerContainer;
167typedef std::map<ObjectGuid, LfgRoleCheck> LfgRoleCheckContainer;
168typedef std::map<uint32, LfgProposal> LfgProposalContainer;
169typedef std::map<ObjectGuid, LfgProposalPlayer> LfgProposalPlayerContainer;
170typedef std::map<ObjectGuid, LfgPlayerBoot> LfgPlayerBootContainer;
171typedef std::map<ObjectGuid, LfgGroupData> LfgGroupDataContainer;
172typedef std::map<ObjectGuid, LfgPlayerData> LfgPlayerDataContainer;
173typedef std::unordered_map<uint32, LFGDungeonData> LFGDungeonContainer;
174
175// Data needed by SMSG_LFG_JOIN_RESULT
177{
179 result(_result), state(_state) { }
183 std::vector<std::string const*> playersMissingRequirement;
184};
185
186// Data needed by SMSG_LFG_UPDATE_STATUS
188{
190 LfgUpdateData(LfgUpdateType _type, LfgDungeonSet const& _dungeons):
191 updateType(_type), state(LFG_STATE_NONE), dungeons(_dungeons) { }
192 LfgUpdateData(LfgUpdateType _type, LfgState _state, LfgDungeonSet const& _dungeons):
193 updateType(_type), state(_state), dungeons(_dungeons) { }
194
198 std::string comment;
199};
200
201// Data needed by SMSG_LFG_QUEUE_STATUS
203{
204 LfgQueueStatusData(uint8 _queueId = 0, uint32 _dungeonId = 0, int32 _waitTime = -1, int32 _waitTimeAvg = -1, int32 _waitTimeTank = -1, int32 _waitTimeHealer = -1,
205 int32 _waitTimeDps = -1, uint32 _queuedTime = 0, uint8 _tanks = 0, uint8 _healers = 0, uint8 _dps = 0) :
206 queueId(_queueId), dungeonId(_dungeonId), waitTime(_waitTime), waitTimeAvg(_waitTimeAvg), waitTimeTank(_waitTimeTank),
207 waitTimeHealer(_waitTimeHealer), waitTimeDps(_waitTimeDps), queuedTime(_queuedTime), tanks(_tanks), healers(_healers), dps(_dps) { }
208
220};
221
223{
224 LfgPlayerRewardData(uint32 random, uint32 current, bool _done, Quest const* _quest):
225 rdungeonEntry(random), sdungeonEntry(current), done(_done), quest(_quest) { }
228 bool done;
229 Quest const* quest;
230};
231
234{
235 LfgReward(uint32 _maxLevel = 0, uint32 _firstQuest = 0, uint32 _otherQuest = 0):
236 maxLevel(_maxLevel), firstQuest(_firstQuest), otherQuest(_otherQuest) { }
237
241};
242
245{
250};
251
254{
256 group(), leader(), cancelTime(0), encounters(0), isNew(true)
257 { }
258
264 time_t cancelTime;
266 bool isNew;
270};
271
274{
275 time_t cancelTime;
281};
282
285{
286 time_t cancelTime;
290 std::string reason;
291};
292
294{
297
299 std::string name;
307 float x, y, z, o;
310
311 // Helpers
312 uint32 Entry() const { return id + (type << 24); }
313};
314
316{
317 private:
318 LFGMgr();
319 ~LFGMgr();
320
321 public:
322 LFGMgr(LFGMgr const& right) = delete;
323 LFGMgr(LFGMgr&& right) = delete;
324 LFGMgr& operator=(LFGMgr const& right) = delete;
325 LFGMgr& operator=(LFGMgr&& right) = delete;
326
327 static LFGMgr* instance();
328
329 // Functions used outside lfg namespace
330 void Update(uint32 diff);
331
332 // World.cpp
334 void OnDungeonEncounterDone(ObjectGuid gguid, std::array<uint32, 4> const& dungeonEncounterId, Map const* currMap);
336 void FinishDungeon(ObjectGuid gguid, uint32 dungeonId, Map const* currMap);
338 void LoadRewards();
340 void LoadLFGDungeons(bool reload = false);
341
342 // Multiple files
344 bool selectedRandomLfgDungeon(ObjectGuid guid);
346 bool inLfgDungeonMap(ObjectGuid guid, uint32 map, Difficulty difficulty);
348 LfgDungeonSet const& GetSelectedDungeons(ObjectGuid guid);
350 uint32 GetSelectedRandomDungeon(ObjectGuid guid);
352 LfgState GetState(ObjectGuid guid);
354 bool IsVoteKickActive(ObjectGuid gguid);
356 uint32 GetDungeon(ObjectGuid guid, bool asId = true);
358 uint32 GetDungeonMapId(ObjectGuid guid);
360 uint8 GetKicksLeft(ObjectGuid gguid);
362 void _LoadFromDB(Field* fields, ObjectGuid guid);
364 void SetupGroupMember(ObjectGuid guid, ObjectGuid gguid);
366 uint32 GetLFGDungeonEntry(uint32 id);
367
368 // cs_lfg
370 uint8 GetRoles(ObjectGuid guid);
372 uint32 GetOptions();
374 void SetOptions(uint32 options);
376 bool isOptionEnabled(uint32 option);
378 void Clean();
380 std::string DumpQueueInfo(bool full = false);
381
382 // LFGScripts
384 ObjectGuid GetLeader(ObjectGuid guid);
386 void SetTeam(ObjectGuid guid, uint8 team);
388 void SetGroup(ObjectGuid guid, ObjectGuid group);
390 ObjectGuid GetGroup(ObjectGuid guid);
392 void SetLeader(ObjectGuid gguid, ObjectGuid leader);
394 void RemoveGroupData(ObjectGuid guid);
396 uint8 RemovePlayerFromGroup(ObjectGuid gguid, ObjectGuid guid);
398 void AddPlayerToGroup(ObjectGuid gguid, ObjectGuid guid);
399
400 // LFGHandler
402 LfgLockMap GetLockedDungeons(ObjectGuid guid);
404 LfgUpdateData GetLfgStatus(ObjectGuid guid);
406 bool IsSeasonActive(uint32 dungeonId);
408 LfgReward const* GetRandomDungeonReward(uint32 dungeon, uint8 level);
410 LfgDungeonSet GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, uint32 contentTuningReplacementConditionMask);
412 void TeleportPlayer(Player* player, bool out, bool fromOpcode = false);
414 void InitBoot(ObjectGuid gguid, ObjectGuid kguid, ObjectGuid vguid, std::string const& reason);
416 void UpdateBoot(ObjectGuid guid, bool accept);
418 void UpdateProposal(uint32 proposalId, ObjectGuid guid, bool accept);
420 void UpdateRoleCheck(ObjectGuid gguid, ObjectGuid guid = ObjectGuid::Empty, uint8 roles = PLAYER_ROLE_NONE);
422 void SetRoles(ObjectGuid guid, uint8 roles);
424 void JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons);
426 void LeaveLfg(ObjectGuid guid, bool disconnected = false);
428 WorldPackets::LFG::RideTicket const* GetTicket(ObjectGuid guid) const;
429
430 // LfgQueue
432 LfgState GetOldState(ObjectGuid guid);
434 bool IsLfgGroup(ObjectGuid guid);
436 uint8 GetPlayerCount(ObjectGuid guid);
438 uint32 AddProposal(LfgProposal& proposal);
440 uint8 GetQueueId(ObjectGuid guid);
442 bool AllQueued(GuidList const& check);
444 time_t GetQueueJoinTime(ObjectGuid guid);
446 static bool CheckGroupRoles(LfgRolesMap &groles);
448 static bool HasIgnore(ObjectGuid guid1, ObjectGuid guid2);
450 static void SendLfgQueueStatus(ObjectGuid guid, LfgQueueStatusData const& data);
451
452 private:
453 uint8 GetTeam(ObjectGuid guid);
454 uint8 FilterClassRoles(Player* player, uint8 roles);
455 void RestoreState(ObjectGuid guid, char const* debugMsg);
456 void ClearState(ObjectGuid guid, char const* debugMsg);
457 void SetDungeon(ObjectGuid guid, uint32 dungeon);
458 void SetSelectedDungeons(ObjectGuid guid, LfgDungeonSet const& dungeons);
459 void DecreaseKicksLeft(ObjectGuid guid);
460 void SetTicket(ObjectGuid guid, WorldPackets::LFG::RideTicket const& ticket);
461 void SetState(ObjectGuid guid, LfgState state);
462 void SetVoteKick(ObjectGuid gguid, bool active);
463 void RemovePlayerData(ObjectGuid guid);
464 void GetCompatibleDungeons(LfgDungeonSet* dungeons, GuidSet const& players, LfgLockPartyMap* lockMap, std::vector<std::string const*>* playersMissingRequirement, bool isContinue);
465 void _SaveToDB(ObjectGuid guid, uint32 db_guid);
466 LFGDungeonData const* GetLFGDungeon(uint32 id);
467
468 // Proposals
469 void RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdateType type);
470 void MakeNewGroup(LfgProposal const& proposal);
471
472 // Generic
473 LFGQueue& GetQueue(ObjectGuid guid);
474
475 LfgDungeonSet const& GetDungeonsByRandom(uint32 randomdungeon);
476 LfgType GetDungeonType(uint32 dungeon);
477
478 void SendLfgBootProposalUpdate(ObjectGuid guid, LfgPlayerBoot const& boot);
479 void SendLfgJoinResult(ObjectGuid guid, LfgJoinResultData const& data);
480 void SendLfgRoleChosen(ObjectGuid guid, ObjectGuid pguid, uint8 roles);
481 void SendLfgRoleCheckUpdate(ObjectGuid guid, LfgRoleCheck const& roleCheck);
482 void SendLfgUpdateStatus(ObjectGuid guid, LfgUpdateData const& data, bool party);
483 void SendLfgUpdateProposal(ObjectGuid guid, LfgProposal const& proposal);
484
485 GuidSet const& GetPlayers(ObjectGuid guid);
486
487 // General variables
491
494 // Reward System
497 // Rolecheck - Proposal - Vote Kicks
503};
504
505} // namespace lfg
506
507#define sLFGMgr lfg::LFGMgr::instance()
508#endif
@ IN_MILLISECONDS
Definition: Common.h:35
Difficulty
Definition: DBCEnums.h:873
#define TC_GAME_API
Definition: Define.h:123
uint8_t uint8
Definition: Define.h:144
int32_t int32
Definition: Define.h:138
uint16_t uint16
Definition: Define.h:143
uint32_t uint32
Definition: Define.h:142
std::list< ObjectGuid > GuidList
Definition: ObjectGuid.h:394
std::set< ObjectGuid > GuidSet
Definition: ObjectGuid.h:393
Class used to access individual fields of database query result.
Definition: Field.h:90
Definition: Group.h:197
Definition: Map.h:189
static ObjectGuid const Empty
Definition: ObjectGuid.h:274
LFGMgr & operator=(LFGMgr &&right)=delete
LfgProposalContainer ProposalsStore
Current Role checks.
Definition: LFGMgr.h:499
LFGDungeonContainer LfgDungeonStore
Stores rewards for random dungeons.
Definition: LFGMgr.h:496
LfgPlayerBootContainer BootsStore
Current Proposals.
Definition: LFGMgr.h:500
LFGMgr & operator=(LFGMgr const &right)=delete
LfgCachedDungeonContainer CachedDungeonMapStore
Queues.
Definition: LFGMgr.h:493
LfgRoleCheckContainer RoleChecksStore
Definition: LFGMgr.h:498
uint32 m_lfgProposalId
used to check interval of update
Definition: LFGMgr.h:489
void ClearState(ObjectGuid guid, char const *debugMsg)
LfgRewardContainer RewardMapStore
Stores all dungeons by groupType.
Definition: LFGMgr.h:495
LfgGroupDataContainer GroupsStore
Player data.
Definition: LFGMgr.h:502
uint32 m_options
used as internal counter for proposals
Definition: LFGMgr.h:490
LFGMgr(LFGMgr &&right)=delete
LfgPlayerDataContainer PlayersStore
Current player kicks.
Definition: LFGMgr.h:501
LfgQueueContainer QueuesStore
Stores config options.
Definition: LFGMgr.h:492
LFGMgr(LFGMgr const &right)=delete
uint32 m_QueueTimer
Definition: LFGMgr.h:488
TC_GAME_API HashMapHolder< Player >::MapType const & GetPlayers()
void Update(VignetteData &vignette, WorldObject const *owner)
Definition: Vignette.cpp:90
Definition: LFG.cpp:24
LfgOptions
Definition: LFGMgr.h:48
@ LFG_OPTION_ENABLE_DUNGEON_FINDER
Definition: LFGMgr.h:49
@ LFG_OPTION_ENABLE_RAID_BROWSER
Definition: LFGMgr.h:50
std::map< ObjectGuid, LfgGroupData > LfgGroupDataContainer
Definition: LFGMgr.h:171
std::map< ObjectGuid, uint8 > LfgRolesMap
Definition: LFG.h:135
std::unordered_map< uint32, LFGDungeonData > LFGDungeonContainer
Definition: LFGMgr.h:173
std::map< ObjectGuid, LfgAnswer > LfgAnswerContainer
Definition: LFGMgr.h:166
LfgUpdateType
Definition: LFG.h:48
@ LFG_UPDATETYPE_DEFAULT
Definition: LFG.h:49
LFGMgrEnum
Definition: LFGMgr.h:54
@ LFG_SPELL_DUNGEON_COOLDOWN
Definition: LFGMgr.h:59
@ LFG_TIME_BOOT
Definition: LFGMgr.h:56
@ LFG_TIME_PROPOSAL
Definition: LFGMgr.h:57
@ LFG_GROUP_KICK_VOTES_NEEDED
Definition: LFGMgr.h:62
@ LFG_TIME_ROLECHECK
Definition: LFGMgr.h:55
@ LFG_SPELL_LUCK_OF_THE_DRAW
Definition: LFGMgr.h:61
@ LFG_QUEUEUPDATE_INTERVAL
Definition: LFGMgr.h:58
@ LFG_SPELL_DUNGEON_DESERTER
Definition: LFGMgr.h:60
LfgType
Determines the type of instance.
Definition: LFGMgr.h:75
@ LFG_TYPE_NONE
Definition: LFGMgr.h:76
@ LFG_TYPE_QUEST
Definition: LFGMgr.h:79
@ LFG_TYPE_ZONE
Definition: LFGMgr.h:80
@ LFG_TYPE_RANDOM
Definition: LFGMgr.h:82
@ LFG_TYPE_RAID
Definition: LFGMgr.h:78
@ LFG_TYPE_DUNGEON
Definition: LFGMgr.h:77
@ LFG_TYPE_HEROIC
Definition: LFGMgr.h:81
LfgAnswer
Answer state (Also used to check compatibilites)
Definition: LFG.h:116
@ LFG_ANSWER_PENDING
Definition: LFG.h:117
std::map< ObjectGuid, LfgPlayerData > LfgPlayerDataContainer
Definition: LFGMgr.h:172
std::map< uint8, LfgDungeonSet > LfgCachedDungeonContainer
Definition: LFGMgr.h:165
std::map< uint8, LFGQueue > LfgQueueContainer
Definition: LFGMgr.h:162
LfgTeleportResult
Teleport errors.
Definition: LFGMgr.h:95
@ LFG_TELEPORT_RESULT_EXHAUSTION
Definition: LFGMgr.h:101
@ LFG_TELEPORT_RESULT_FALLING
Definition: LFGMgr.h:99
@ LFG_TELEPORT_RESULT_NO_RETURN_LOCATION
Definition: LFGMgr.h:102
@ LFG_TELEPORT_RESULT_ON_TRANSPORT
Definition: LFGMgr.h:100
@ LFG_TELEPORT_RESULT_IMMUNE_TO_SUMMONS
Definition: LFGMgr.h:103
@ LFG_TELEPORT_RESULT_NONE
Definition: LFGMgr.h:97
@ LFG_TELEPORT_RESULT_DEAD
Definition: LFGMgr.h:98
std::set< uint32 > LfgDungeonSet
Definition: LFG.h:132
std::map< ObjectGuid, LfgPlayerBoot > LfgPlayerBootContainer
Definition: LFGMgr.h:170
LfgRoleCheckState
Role check states.
Definition: LFGMgr.h:143
@ LFG_ROLECHECK_WRONG_ROLES
Definition: LFGMgr.h:148
@ LFG_ROLECHECK_MISSING_ROLE
Definition: LFGMgr.h:147
@ LFG_ROLECHECK_ABORTED
Definition: LFGMgr.h:149
@ LFG_ROLECHECK_DEFAULT
Definition: LFGMgr.h:144
@ LFG_ROLECHECK_FINISHED
Definition: LFGMgr.h:145
@ LFG_ROLECHECK_NO_ROLE
Definition: LFGMgr.h:150
@ LFG_ROLECHECK_INITIALITING
Definition: LFGMgr.h:146
LfgFlags
Definition: LFGMgr.h:66
@ LFG_FLAG_SEASONAL
Definition: LFGMgr.h:69
@ LFG_FLAG_UNK3
Definition: LFGMgr.h:70
@ LFG_FLAG_UNK2
Definition: LFGMgr.h:68
@ LFG_FLAG_UNK1
Definition: LFGMgr.h:67
std::pair< LfgRewardContainer::const_iterator, LfgRewardContainer::const_iterator > LfgRewardContainerBounds
Definition: LFGMgr.h:164
std::map< uint32, LfgProposal > LfgProposalContainer
Definition: LFGMgr.h:168
std::map< ObjectGuid, LfgRoleCheck > LfgRoleCheckContainer
Definition: LFGMgr.h:167
@ PLAYER_ROLE_NONE
Definition: LFG.h:39
std::map< ObjectGuid, LfgLockMap > LfgLockPartyMap
Definition: LFG.h:134
LfgState
Definition: LFG.h:74
@ LFG_STATE_NONE
Definition: LFG.h:75
std::multimap< uint32, LfgReward const * > LfgRewardContainer
Definition: LFGMgr.h:163
std::map< uint32, LfgLockInfoData > LfgLockMap
Definition: LFG.h:133
LfgProposalState
Proposal states.
Definition: LFGMgr.h:87
@ LFG_PROPOSAL_SUCCESS
Definition: LFGMgr.h:90
@ LFG_PROPOSAL_FAILED
Definition: LFGMgr.h:89
@ LFG_PROPOSAL_INITIATING
Definition: LFGMgr.h:88
LfgJoinResult
Queue join results.
Definition: LFGMgr.h:113
@ LFG_JOIN_RANDOM_COOLDOWN_PLAYER
Definition: LFGMgr.h:126
@ LFG_JOIN_NO_SLOTS
Definition: LFGMgr.h:118
@ LFG_JOIN_GET_INFO_TIMEOUT
Definition: LFGMgr.h:122
@ LFG_JOIN_MEMBERS_NOT_PRESENT
Definition: LFGMgr.h:121
@ LFG_JOIN_ROLE_CHECK_FAILED
Definition: LFGMgr.h:130
@ LFG_JOIN_ALREADY_USING_LFG_LIST
Definition: LFGMgr.h:134
@ LFG_JOIN_REASON_TOO_MANY_LFG
Definition: LFGMgr.h:132
@ LFG_JOIN_TOO_FEW_MEMBERS
Definition: LFGMgr.h:131
@ LFG_JOIN_PARTY_NOT_MEET_REQS
Definition: LFGMgr.h:138
@ LFG_JOIN_RANDOM_COOLDOWN_PARTY
Definition: LFGMgr.h:127
@ LFG_JOIN_NOT_LEADER
Definition: LFGMgr.h:135
@ LFG_JOIN_TOO_MANY_MEMBERS
Definition: LFGMgr.h:128
@ LFG_JOIN_CANT_USE_DUNGEONS
Definition: LFGMgr.h:129
@ LFG_JOIN_OK
Definition: LFGMgr.h:115
@ LFG_JOIN_MISMATCHED_SLOTS
Definition: LFGMgr.h:119
@ LFG_JOIN_DEAD
Definition: LFGMgr.h:136
@ LFG_JOIN_GROUP_FULL
Definition: LFGMgr.h:116
@ LFG_JOIN_NO_LFG_OBJECT
Definition: LFGMgr.h:117
@ LFG_JOIN_DESERTER_PLAYER
Definition: LFGMgr.h:124
@ LFG_JOIN_PARTY_PLAYERS_FROM_DIFFERENT_REALMS
Definition: LFGMgr.h:120
@ LFG_JOIN_INVALID_SLOT
Definition: LFGMgr.h:123
@ LFG_JOIN_DESERTER_PARTY
Definition: LFGMgr.h:125
@ LFG_JOIN_MISMATCHED_SLOTS_LOCAL_XREALM
Definition: LFGMgr.h:133
std::map< ObjectGuid, LfgProposalPlayer > LfgProposalPlayerContainer
Definition: LFGMgr.h:169
uint32 contentTuningId
Definition: LFGMgr.h:304
Difficulty difficulty
Definition: LFGMgr.h:305
uint32 finalDungeonEncounterId
Definition: LFGMgr.h:309
uint16 requiredItemLevel
Definition: LFGMgr.h:308
std::string name
Definition: LFGMgr.h:299
uint32 Entry() const
Definition: LFGMgr.h:312
LfgJoinResultData(LfgJoinResult _result=LFG_JOIN_OK, LfgRoleCheckState _state=LFG_ROLECHECK_DEFAULT)
Definition: LFGMgr.h:178
std::vector< std::string const * > playersMissingRequirement
Definition: LFGMgr.h:183
LfgRoleCheckState state
Definition: LFGMgr.h:181
LfgJoinResult result
Definition: LFGMgr.h:180
LfgLockPartyMap lockmap
Definition: LFGMgr.h:182
Stores information of a current vote to kick someone from a group.
Definition: LFGMgr.h:285
std::string reason
Player guid to be kicked (can't vote)
Definition: LFGMgr.h:290
time_t cancelTime
Definition: LFGMgr.h:286
LfgAnswerContainer votes
Vote in progress.
Definition: LFGMgr.h:288
bool inProgress
Time left to vote.
Definition: LFGMgr.h:287
ObjectGuid victim
Player votes (-1 not answer | 0 Not agree | 1 agree)
Definition: LFGMgr.h:289
Quest const * quest
Definition: LFGMgr.h:229
LfgPlayerRewardData(uint32 random, uint32 current, bool _done, Quest const *_quest)
Definition: LFGMgr.h:224
Stores player data related to proposal to join.
Definition: LFGMgr.h:245
ObjectGuid group
Accept status (-1 not answer | 0 Not agree | 1 agree)
Definition: LFGMgr.h:249
LfgAnswer accept
Proposed role.
Definition: LFGMgr.h:248
Stores group data related to proposal to join.
Definition: LFGMgr.h:254
ObjectGuid leader
Proposal group (0 if new)
Definition: LFGMgr.h:263
uint32 dungeonId
Proposal Id.
Definition: LFGMgr.h:260
GuidList showorder
Queue Ids to remove/readd.
Definition: LFGMgr.h:268
uint32 encounters
Time when we will cancel this proposal.
Definition: LFGMgr.h:265
GuidList queues
Determines if it's new group or not.
Definition: LFGMgr.h:267
LfgProposalPlayerContainer players
Show order in update window.
Definition: LFGMgr.h:269
bool isNew
Dungeon Encounters.
Definition: LFGMgr.h:266
LfgProposalState state
Dungeon to join.
Definition: LFGMgr.h:261
ObjectGuid group
State of the proposal.
Definition: LFGMgr.h:262
LfgProposal(uint32 dungeon=0)
Definition: LFGMgr.h:255
time_t cancelTime
Leader guid.
Definition: LFGMgr.h:264
LfgQueueStatusData(uint8 _queueId=0, uint32 _dungeonId=0, int32 _waitTime=-1, int32 _waitTimeAvg=-1, int32 _waitTimeTank=-1, int32 _waitTimeHealer=-1, int32 _waitTimeDps=-1, uint32 _queuedTime=0, uint8 _tanks=0, uint8 _healers=0, uint8 _dps=0)
Definition: LFGMgr.h:204
Reward info.
Definition: LFGMgr.h:234
uint32 firstQuest
Definition: LFGMgr.h:239
uint32 otherQuest
Definition: LFGMgr.h:240
uint32 maxLevel
Definition: LFGMgr.h:238
LfgReward(uint32 _maxLevel=0, uint32 _firstQuest=0, uint32 _otherQuest=0)
Definition: LFGMgr.h:235
Stores all rolecheck info of a group that wants to join.
Definition: LFGMgr.h:274
LfgDungeonSet dungeons
State of the rolecheck.
Definition: LFGMgr.h:278
LfgRolesMap roles
Time when the rolecheck will fail.
Definition: LFGMgr.h:276
LfgRoleCheckState state
Player selected roles.
Definition: LFGMgr.h:277
time_t cancelTime
Definition: LFGMgr.h:275
ObjectGuid leader
Random Dungeon Id.
Definition: LFGMgr.h:280
uint32 rDungeonId
Dungeons group is applying for (expanded random dungeons)
Definition: LFGMgr.h:279
LfgUpdateData(LfgUpdateType _type=LFG_UPDATETYPE_DEFAULT)
Definition: LFGMgr.h:189
LfgDungeonSet dungeons
Definition: LFGMgr.h:197
LfgUpdateType updateType
Definition: LFGMgr.h:195
std::string comment
Definition: LFGMgr.h:198
LfgUpdateData(LfgUpdateType _type, LfgDungeonSet const &_dungeons)
Definition: LFGMgr.h:190
LfgUpdateData(LfgUpdateType _type, LfgState _state, LfgDungeonSet const &_dungeons)
Definition: LFGMgr.h:192
LfgState state
Definition: LFGMgr.h:196