1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/*
* Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LFG_H
#define _LFG_H
#include "Define.h"
#include "ObjectGuid.h"
#include <map>
#include <set>
#include <string>
namespace lfg
{
enum LFGEnum
{
LFG_TANKS_NEEDED = 1,
LFG_HEALERS_NEEDED = 1,
LFG_DPS_NEEDED = 3
};
enum LfgRoles
{
PLAYER_ROLE_NONE = 0x00,
PLAYER_ROLE_LEADER = 0x01,
PLAYER_ROLE_TANK = 0x02,
PLAYER_ROLE_HEALER = 0x04,
PLAYER_ROLE_DAMAGE = 0x08
};
enum LfgUpdateType
{
LFG_UPDATETYPE_DEFAULT = 0, // Internal Use
LFG_UPDATETYPE_LEADER_UNK1 = 1, // FIXME: At group leave
LFG_UPDATETYPE_ROLECHECK_ABORTED = 4,
LFG_UPDATETYPE_JOIN_QUEUE = 6,
LFG_UPDATETYPE_ROLECHECK_FAILED = 7,
LFG_UPDATETYPE_REMOVED_FROM_QUEUE = 8,
LFG_UPDATETYPE_PROPOSAL_FAILED = 9,
LFG_UPDATETYPE_PROPOSAL_DECLINED = 10,
LFG_UPDATETYPE_GROUP_FOUND = 11,
LFG_UPDATETYPE_ADDED_TO_QUEUE = 13,
LFG_UPDATETYPE_SUSPENDED_QUEUE = 14,
LFG_UPDATETYPE_PROPOSAL_BEGIN = 15,
LFG_UPDATETYPE_UPDATE_STATUS = 16,
LFG_UPDATETYPE_GROUP_MEMBER_OFFLINE = 17,
LFG_UPDATETYPE_GROUP_DISBAND_UNK16 = 18, // FIXME: Sometimes at group disband
LFG_UPDATETYPE_JOIN_QUEUE_INITIAL = 25,
LFG_UPDATETYPE_DUNGEON_FINISHED = 26,
LFG_UPDATETYPE_PARTY_ROLE_NOT_AVAILABLE = 46,
LFG_UPDATETYPE_JOIN_LFG_OBJECT_FAILED = 48,
LFG_UPDATETYPE_REMOVED_LEVELUP = 49,
LFG_UPDATETYPE_REMOVED_XP_TOGGLE = 50,
LFG_UPDATETYPE_REMOVED_FACTION_CHANGE = 51
};
enum LfgState : uint8
{
LFG_STATE_NONE, // Not using LFG / LFR
LFG_STATE_ROLECHECK, // Rolecheck active
LFG_STATE_QUEUED, // Queued
LFG_STATE_PROPOSAL, // Proposal active
//LFG_STATE_BOOT, // Vote kick active
LFG_STATE_DUNGEON = 5, // In LFG Group, in a Dungeon
LFG_STATE_FINISHED_DUNGEON, // In LFG Group, in a finished Dungeon
LFG_STATE_RAIDBROWSER // Using Raid finder
};
enum LfgQueueType
{
LFG_QUEUE_DUNGEON = 1,
LFG_QUEUE_LFR = 2,
LFG_QUEUE_SCENARIO = 3,
LFG_QUEUE_FLEX = 4,
LFG_QUEUE_WORLD_PVP = 5
};
/// Instance lock types
enum LfgLockStatusType
{
LFG_LOCKSTATUS_INSUFFICIENT_EXPANSION = 1,
LFG_LOCKSTATUS_TOO_LOW_LEVEL = 2,
LFG_LOCKSTATUS_TOO_HIGH_LEVEL = 3,
LFG_LOCKSTATUS_TOO_LOW_GEAR_SCORE = 4,
LFG_LOCKSTATUS_TOO_HIGH_GEAR_SCORE = 5,
LFG_LOCKSTATUS_RAID_LOCKED = 6,
LFG_LOCKSTATUS_ATTUNEMENT_TOO_LOW_LEVEL = 1001,
LFG_LOCKSTATUS_ATTUNEMENT_TOO_HIGH_LEVEL = 1002,
LFG_LOCKSTATUS_QUEST_NOT_COMPLETED = 1022,
LFG_LOCKSTATUS_MISSING_ITEM = 1025,
LFG_LOCKSTATUS_NOT_IN_SEASON = 1031,
LFG_LOCKSTATUS_MISSING_ACHIEVEMENT = 1034
};
/// Answer state (Also used to check compatibilites)
enum LfgAnswer
{
LFG_ANSWER_PENDING = -1,
LFG_ANSWER_DENY = 0,
LFG_ANSWER_AGREE = 1
};
struct TC_GAME_API LfgLockInfoData
{
LfgLockInfoData(uint32 _lockStatus = 0, uint16 _requiredItemLevel = 0, float _currentItemLevel = 0) :
lockStatus(_lockStatus), requiredItemLevel(_requiredItemLevel), currentItemLevel(_currentItemLevel) { }
uint32 lockStatus;
uint16 requiredItemLevel;
float currentItemLevel;
};
typedef std::set<uint32> LfgDungeonSet;
typedef std::map<uint32, LfgLockInfoData> LfgLockMap;
typedef std::map<ObjectGuid, LfgLockMap> LfgLockPartyMap;
typedef std::map<ObjectGuid, uint8> LfgRolesMap;
typedef std::map<ObjectGuid, ObjectGuid> LfgGroupsMap;
TC_GAME_API std::string ConcatenateDungeons(LfgDungeonSet const& dungeons);
TC_GAME_API std::string GetRolesString(uint8 roles);
TC_GAME_API std::string GetStateString(LfgState state);
} // namespace lfg
#endif
|