TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Group.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
3  * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License as published by the
7  * Free Software Foundation; either version 2 of the License, or (at your
8  * option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef TRINITYCORE_GROUP_H
20 #define TRINITYCORE_GROUP_H
21 
22 #include "DBCEnums.h"
23 #include "GroupRefManager.h"
24 #include "LootMgr.h"
25 #include "QueryResult.h"
26 #include "SharedDefines.h"
27 #include "Object.h"
28 
29 class Battlefield;
30 class Battleground;
31 class Creature;
32 class InstanceSave;
33 class Map;
34 class Player;
35 class Unit;
36 class WorldObject;
37 class WorldPacket;
38 class WorldSession;
39 
40 struct MapEntry;
41 
42 #define MAX_GROUP_SIZE 5
43 #define MAX_RAID_SIZE 40
44 #define MAX_RAID_SUBGROUPS MAX_RAID_SIZE / MAX_GROUP_SIZE
45 
46 #define TARGET_ICONS_COUNT 8
47 #define RAID_MARKERS_COUNT 8
48 
49 #define READYCHECK_DURATION 35000
50 
52 {
53  PASS = 0,
54  NEED = 1,
55  GREED = 2,
59 };
60 
62 {
64  MEMBER_STATUS_ONLINE = 0x0001, // Lua_UnitIsConnected
65  MEMBER_STATUS_PVP = 0x0002, // Lua_UnitIsPVP
66  MEMBER_STATUS_DEAD = 0x0004, // Lua_UnitIsDead
67  MEMBER_STATUS_GHOST = 0x0008, // Lua_UnitIsGhost
68  MEMBER_STATUS_PVP_FFA = 0x0010, // Lua_UnitIsPVPFreeForAll
69  MEMBER_STATUS_UNK3 = 0x0020, // used in calls from Lua_GetPlayerMapPosition/Lua_GetBattlefieldFlagPosition
70  MEMBER_STATUS_AFK = 0x0040, // Lua_UnitIsAFK
71  MEMBER_STATUS_DND = 0x0080 // Lua_UnitIsDND
72 };
73 
75 {
79 };
80 
82 {
85 };
86 
88 {
90  GROUPTYPE_BG = 0x01,
93  GROUPTYPE_LFG_RESTRICTED = 0x04, // Script_HasLFGRestrictions()
94  GROUPTYPE_LFG = 0x08,
95  GROUPTYPE_EVERYONE_ASSISTANT = 0x40, // Script_IsEveryoneAssistant() (4.x)
96  // 0x10, leave/change group?, I saw this flag when leaving group and after leaving BG while in group
97  // GROUPTYPE_ONE_PERSON_PARTY = 0x20, 4.x Script_IsOnePersonParty()
98 };
99 
101 {
102  GROUP_UPDATE_FLAG_NONE = 0x00000000, // nothing
103  GROUP_UPDATE_FLAG_UNK704 = 0x00000001, // uint8[2] (unk)
104  GROUP_UPDATE_FLAG_STATUS = 0x00000002, // uint16 (GroupMemberStatusFlag)
105  GROUP_UPDATE_FLAG_POWER_TYPE = 0x00000004, // uint8 (PowerType)
106  GROUP_UPDATE_FLAG_UNK322 = 0x00000008, // uint16 (unk)
107  GROUP_UPDATE_FLAG_CUR_HP = 0x00000010, // uint32 (HP)
108  GROUP_UPDATE_FLAG_MAX_HP = 0x00000020, // uint32 (max HP)
109  GROUP_UPDATE_FLAG_CUR_POWER = 0x00000040, // int16 (power value)
110  GROUP_UPDATE_FLAG_MAX_POWER = 0x00000080, // int16 (max power value)
111  GROUP_UPDATE_FLAG_LEVEL = 0x00000100, // uint16 (level value)
112  GROUP_UPDATE_FLAG_UNK200000 = 0x00000200, // int16 (unk)
113  GROUP_UPDATE_FLAG_ZONE = 0x00000400, // uint16 (zone id)
114  GROUP_UPDATE_FLAG_UNK2000000 = 0x00000800, // int16 (unk)
115  GROUP_UPDATE_FLAG_UNK4000000 = 0x00001000, // int32 (unk)
116  GROUP_UPDATE_FLAG_POSITION = 0x00002000, // uint16 (x), uint16 (y), uint16 (z)
117  GROUP_UPDATE_FLAG_VEHICLE_SEAT = 0x00104000, // int32 (vehicle seat id)
118  GROUP_UPDATE_FLAG_AURAS = 0x00008000, // uint8 (unk), uint64 (mask), uint32 (count), for each bit set: uint32 (spell id) + uint16 (AuraFlags) (if has flags Scalable -> 3x int32 (bps))
119  GROUP_UPDATE_FLAG_PET = 0x00010000, // complex (pet)
120  GROUP_UPDATE_FLAG_PHASE = 0x00020000, // int32 (unk), uint32 (phase count), for (count) uint16(phaseId)
121 
128 };
129 
131 {
132  GROUP_UPDATE_FLAG_PET_NONE = 0x00000000, // nothing
133  GROUP_UPDATE_FLAG_PET_GUID = 0x00000001, // ObjectGuid (pet guid)
134  GROUP_UPDATE_FLAG_PET_NAME = 0x00000002, // cstring (name, NULL terminated string)
135  GROUP_UPDATE_FLAG_PET_MODEL_ID = 0x00000004, // uint16 (model id)
136  GROUP_UPDATE_FLAG_PET_CUR_HP = 0x00000008, // uint32 (HP)
137  GROUP_UPDATE_FLAG_PET_MAX_HP = 0x00000010, // uint32 (max HP)
138  GROUP_UPDATE_FLAG_PET_AURAS = 0x00000020, // [see GROUP_UPDATE_FLAG_AURAS]
139 
142 };
143 
144 class Roll : public LootValidatorRef
145 {
146  public:
147  Roll(ObjectGuid _guid, LootItem const& li);
148  ~Roll();
149  void setLoot(Loot* pLoot);
150  Loot* getLoot();
151  void targetObjectBuildLink() override;
152 
158  typedef std::map<ObjectGuid, RollVote> PlayerVote;
159  PlayerVote playerVote; //vote position correspond with player position (in group)
166 };
167 
169 {
171  bool perm;
172  /* permanent InstanceGroupBinds exist if the leader has a permanent
173  PlayerInstanceBind for the same instance. */
174  InstanceGroupBind() : save(NULL), perm(false) { }
175 };
176 
178 {
181 
182  RaidMarker(uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty)
183  {
184  Location.WorldRelocate(mapId, positionX, positionY, positionZ);
185  TransportGUID = transportGuid;
186  }
187 };
188 
190 class TC_GAME_API Group
192 {
193  public:
194  struct MemberSlot
195  {
197  std::string name;
203  };
204  typedef std::list<MemberSlot> MemberSlotList;
205  typedef MemberSlotList::const_iterator member_citerator;
206 
207  typedef std::unordered_map< uint32 /*mapId*/, InstanceGroupBind> BoundInstancesMap;
208  protected:
209  typedef MemberSlotList::iterator member_witerator;
210  typedef std::set<Player*> InvitesList;
211 
212  typedef std::vector<Roll*> Rolls;
213 
214  public:
215  Group();
216  ~Group();
217 
218  // group manipulation methods
219  bool Create(Player* leader);
220  void LoadGroupFromDB(Field* field);
221  void LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles);
222  bool AddInvite(Player* player);
223  void RemoveInvite(Player* player);
224  void RemoveAllInvites();
225  bool AddLeaderInvite(Player* player);
226  bool AddMember(Player* player);
227  bool RemoveMember(ObjectGuid guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker = ObjectGuid::Empty, const char* reason = NULL);
228  void ChangeLeader(ObjectGuid guid, int8 partyIndex = 0);
229  static void ConvertLeaderInstancesToGroup(Player* player, Group* group, bool switchLeader);
230  void SetLootMethod(LootMethod method);
231  void SetLooterGuid(ObjectGuid guid);
232  void SetMasterLooterGuid(ObjectGuid guid);
233  void UpdateLooterGuid(WorldObject* pLootedObject, bool ifneed = false);
234  void SetLootThreshold(ItemQualities threshold);
235  void Disband(bool hideDestroy = false);
236  void SetLfgRoles(ObjectGuid guid, uint8 roles);
237  uint8 GetLfgRoles(ObjectGuid guid);
238  void SetEveryoneIsAssistant(bool apply);
239 
240  // Update
241  void Update(uint32 diff);
242  void UpdateReadyCheck(uint32 diff);
243 
244  // Ready check
245  void StartReadyCheck(ObjectGuid starterGuid, int8 partyIndex, uint32 duration = READYCHECK_DURATION);
246  void EndReadyCheck();
247 
248  bool IsReadyCheckStarted(void) const { return m_readyCheckStarted; }
249  bool IsReadyCheckCompleted(void) const;
250 
251  void SetOfflineMembersReadyChecked(void);
252  void SetMemberReadyCheck(ObjectGuid guid, bool ready);
253  void SetMemberReadyCheck(MemberSlot* slot, bool ready);
254 
255  void SetMemberReadyChecked(MemberSlot* slot);
256  void ResetMemberReadyChecked(void);
257 
258  // Raid Markers
259  void AddRaidMarker(uint8 markerId, uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty);
260  void DeleteRaidMarker(uint8 markerId);
261  void SendRaidMarkersChanged(WorldSession* session = nullptr, int8 partyIndex = 0);
262 
263  // properties accessories
264  bool IsFull() const;
265  bool isLFGGroup() const;
266  bool isRaidGroup() const;
267  bool isBGGroup() const;
268  bool isBFGroup() const;
269  bool IsCreated() const;
270  ObjectGuid GetLeaderGUID() const;
271  ObjectGuid GetGUID() const;
272  const char * GetLeaderName() const;
273  LootMethod GetLootMethod() const;
274  ObjectGuid GetLooterGuid() const;
275  ObjectGuid GetMasterLooterGuid() const;
276  ItemQualities GetLootThreshold() const;
277 
278  uint32 GetDbStoreId() const { return m_dbStoreId; }
279 
280  // member manipulation methods
281  bool IsMember(ObjectGuid guid) const;
282  bool IsLeader(ObjectGuid guid) const;
283  ObjectGuid GetMemberGUID(const std::string& name);
284  bool IsAssistant(ObjectGuid guid) const;
285 
286  Player* GetInvited(ObjectGuid guid) const;
287  Player* GetInvited(const std::string& name) const;
288 
289  bool SameSubGroup(ObjectGuid guid1, ObjectGuid guid2) const;
290  bool SameSubGroup(ObjectGuid guid1, MemberSlot const* slot2) const;
291  bool SameSubGroup(Player const* member1, Player const* member2) const;
292  bool HasFreeSlotSubGroup(uint8 subgroup) const;
293 
294  MemberSlotList const& GetMemberSlots() const { return m_memberSlots; }
295  GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); }
296  GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); }
297  uint32 GetMembersCount() const { return uint32(m_memberSlots.size()); }
298  GroupType GetGroupType() const { return m_groupType; }
299 
300  uint8 GetMemberGroup(ObjectGuid guid) const;
301 
302  void ConvertToLFG();
303  void ConvertToRaid();
304  void ConvertToGroup();
305 
306  void SetBattlegroundGroup(Battleground* bg);
307  void SetBattlefieldGroup(Battlefield* bf);
308  GroupJoinBattlegroundResult CanJoinBattlegroundQueue(Battleground const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot, ObjectGuid& errorGuid);
309 
310  void ChangeMembersGroup(ObjectGuid guid, uint8 group);
311  void SwapMembersGroups(ObjectGuid firstGuid, ObjectGuid secondGuid);
312  void SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy, uint8 partyIndex);
313  void SetGroupMemberFlag(ObjectGuid guid, bool apply, GroupMemberFlags flag);
314  void RemoveUniqueGroupMemberFlag(GroupMemberFlags flag);
315 
316  void SetDungeonDifficultyID(Difficulty difficulty);
317  void SetRaidDifficultyID(Difficulty difficulty);
318  void SetLegacyRaidDifficultyID(Difficulty difficulty);
319  Difficulty GetDifficultyID(MapEntry const* mapEntry) const;
320  Difficulty GetDungeonDifficultyID() const { return m_dungeonDifficulty; }
321  Difficulty GetRaidDifficultyID() const { return m_raidDifficulty; }
322  Difficulty GetLegacyRaidDifficultyID() const { return m_legacyRaidDifficulty; }
323  void ResetInstances(uint8 method, bool isRaid, bool isLegacy, Player* SendMsgTo);
324 
325  // -no description-
326  //void SendInit(WorldSession* session);
327  void SendTargetIconList(WorldSession* session, int8 partyIndex = 0);
328  void SendUpdate();
329  void SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot = NULL);
330  void UpdatePlayerOutOfRange(Player* player);
331 
332  template<class Worker>
333  void BroadcastWorker(Worker& worker)
334  {
335  for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
336  worker(itr->GetSource());
337  }
338 
339  template<class Worker>
340  void BroadcastWorker(Worker const& worker) const
341  {
342  for (GroupReference const* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
343  worker(itr->GetSource());
344  }
345 
346  void BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignoredPlayer = ObjectGuid::Empty);
347  void BroadcastAddonMessagePacket(WorldPacket const* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignore = ObjectGuid::Empty);
348 
349  /*********************************************************/
350  /*** LOOT SYSTEM ***/
351  /*********************************************************/
352 
353  bool isRollLootActive() const { return !RollId.empty(); }
354  void SendLootStartRoll(uint32 CountDown, uint32 mapid, const Roll &r);
355  void SendLootStartRollToPlayer(uint32 countDown, uint32 mapId, Player* p, bool canNeed, Roll const& r);
356  void SendLootRoll(ObjectGuid SourceGuid, ObjectGuid TargetGuid, uint8 RollNumber, uint8 RollType, const Roll &r);
357  void SendLootRollWon(ObjectGuid SourceGuid, ObjectGuid TargetGuid, uint8 RollNumber, uint8 RollType, const Roll &r);
358  void SendLootAllPassed(Roll const& roll);
359  void SendLooter(Creature* creature, Player* pLooter);
360  void GroupLoot(Loot* loot, WorldObject* pLootedObject);
361  void NeedBeforeGreed(Loot* loot, WorldObject* pLootedObject);
362  void MasterLoot(Loot* loot, WorldObject* pLootedObject);
363  Rolls::iterator GetRoll(ObjectGuid Guid);
364  void CountTheRoll(Rolls::iterator roll);
365  void CountRollVote(ObjectGuid playerGUID, ObjectGuid Guid, uint8 Choise);
366  void EndRoll(Loot* loot);
367 
368  // related to disenchant rolls
369  void ResetMaxEnchantingLevel();
370 
371  void LinkMember(GroupReference* pRef);
372  void DelinkMember(ObjectGuid guid);
373 
374  InstanceGroupBind* BindToInstance(InstanceSave* save, bool permanent, bool load = false);
375  void UnbindInstance(uint32 mapid, uint8 difficulty, bool unload = false);
376  InstanceGroupBind* GetBoundInstance(Player* player);
377  InstanceGroupBind* GetBoundInstance(Map* aMap);
378  InstanceGroupBind* GetBoundInstance(MapEntry const* mapEntry);
379  InstanceGroupBind* GetBoundInstance(Difficulty difficulty, uint32 mapId);
380  BoundInstancesMap& GetBoundInstances(Difficulty difficulty);
381 
382  // FG: evil hacks
383  void BroadcastGroupUpdate(void);
384 
385  protected:
386  bool _setMembersGroup(ObjectGuid guid, uint8 group);
387  void _homebindIfInstance(Player* player);
388 
389  void _initRaidSubGroupsCounter();
390  member_citerator _getMemberCSlot(ObjectGuid Guid) const;
391  member_witerator _getMemberWSlot(ObjectGuid Guid);
392  void SubGroupCounterIncrease(uint8 subgroup);
393  void SubGroupCounterDecrease(uint8 subgroup);
394  void ToggleGroupMemberFlag(member_witerator slot, uint8 flag, bool apply);
395 
396  MemberSlotList m_memberSlots;
398  InvitesList m_invitees;
400  std::string m_leaderName;
412  Rolls RollId;
413  BoundInstancesMap m_boundInstances[MAX_DIFFICULTY];
416  uint32 m_counter; // used only in SMSG_GROUP_LIST
418  uint32 m_dbStoreId; // Represents the ID used in database (Can be reused by other groups if group was disbanded)
419 
420  // Ready Check
423 
424  // Raid markers
425  std::array<std::unique_ptr<RaidMarker>, RAID_MARKERS_COUNT> m_markers;
427 };
428 #endif
uint8 roles
Definition: Group.h:201
GroupUpdatePetFlags
Definition: Group.h:130
RollType
Definition: LootMgr.h:40
Roll(ObjectGuid _guid, LootItem const &li)
Definition: Group.cpp:41
Definition: Group.h:134
InstanceSave * save
Definition: Group.h:170
#define TARGET_ICONS_COUNT
Definition: Group.h:46
RaidMarker(uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid=ObjectGuid::Empty)
Definition: Group.h:182
Difficulty
Definition: DBCEnums.h:402
Definition: Position.h:228
Definition: Group.h:76
uint32 m_dbStoreId
Definition: Group.h:418
Definition: Group.h:63
static ObjectGuid const Empty
Definition: ObjectGuid.h:196
int8_t int8
Definition: Define.h:148
MemberSlotList::iterator member_witerator
Definition: Group.h:209
Definition: LootMgr.h:288
std::set< Player * > InvitesList
Definition: Group.h:210
MemberSlotList::const_iterator member_citerator
Definition: Group.h:205
GroupMemberOnlineStatus
Definition: Group.h:61
Definition: Group.h:106
Definition: Group.h:92
Rolls RollId
Definition: Group.h:412
uint8 _class
Definition: Group.h:198
GroupType GetGroupType() const
Definition: Group.h:298
Difficulty m_dungeonDifficulty
Definition: Group.h:402
uint8 totalPlayersRolling
Definition: Group.h:160
Definition: Group.h:168
std::unordered_map< uint32, InstanceGroupBind > BoundInstancesMap
Definition: Group.h:207
Loot * getLoot()
Definition: Group.cpp:53
uint32 itemRandomSuffix
Definition: Group.h:156
InvitesList m_invitees
Definition: Group.h:398
GroupMemberFlags
Definition: Group.h:74
uint8 group
Definition: Group.h:199
PlayerVote playerVote
Definition: Group.h:159
uint32 m_activeMarkers
Definition: Group.h:426
uint32 m_counter
Definition: Group.h:416
Class used to access individual fields of database query result.
Definition: Field.h:56
InstanceGroupBind()
Definition: Group.h:174
Definition: Group.h:115
uint8 * m_subGroupsCounts
Definition: Group.h:414
std::list< MemberSlot > MemberSlotList
Definition: Group.h:204
Definition: DBCEnums.h:426
Definition: Group.h:53
Definition: DBCStructure.h:830
uint8 rollVoteMask
Definition: Group.h:165
Definition: Group.h:107
LootMethod m_lootMethod
Definition: Group.h:408
arena_t NULL
Definition: jemalloc_internal.h:624
#define false
Definition: CascPort.h:18
uint32 itemid
Definition: Group.h:154
Definition: Group.h:71
ObjectGuid m_guid
Definition: Group.h:415
bool m_readyCheckStarted
Definition: Group.h:421
Definition: Group.h:135
Definition: Object.h:423
Definition: Creature.h:467
Battlefield * m_bfGroup
Definition: Group.h:406
ObjectGuid guid
Definition: Group.h:196
int32 itemRandomPropId
Definition: Group.h:155
uint64 LowType
Definition: ObjectGuid.h:199
void apply(T *val)
Definition: ByteConverter.h:41
Definition: Group.h:68
Definition: Group.h:116
Definition: GroupRefManager.h:28
Definition: Group.h:144
RemoveMethod
Definition: SharedDefines.h:4685
Battleground * m_bgGroup
Definition: Group.h:405
Definition: Group.h:119
ObjectGuid itemGUID
Definition: Group.h:153
ObjectGuid TransportGUID
Definition: Group.h:180
Definition: Group.h:111
Definition: Group.h:93
uint8 totalNeed
Definition: Group.h:161
Difficulty GetLegacyRaidDifficultyID() const
Definition: Group.h:322
GroupType
Definition: Group.h:87
int32 m_readyCheckTimer
Definition: Group.h:422
Definition: Group.h:108
MemberSlotList m_memberSlots
Definition: Group.h:396
Definition: Group.h:194
Definition: Group.h:140
void targetObjectBuildLink() override
Definition: Group.cpp:2002
Definition: Group.h:110
Definition: Group.h:54
uint32 m_maxEnchantingLevel
Definition: Group.h:417
std::array< std::unique_ptr< RaidMarker >, RAID_MARKERS_COUNT > m_markers
Definition: Group.h:425
Definition: Group.h:91
Definition: Group.h:137
Definition: Group.h:56
Definition: LootMgr.h:314
~Roll()
Definition: Group.cpp:46
GroupRefManager m_memberMgr
Definition: Group.h:397
Definition: Group.h:67
Definition: Group.h:104
Definition: Group.h:77
ObjectGuid m_leaderGuid
Definition: Group.h:399
int32_t int32
Definition: Define.h:146
ObjectGuid m_looterGuid
Definition: Group.h:410
uint32_t uint32
Definition: Define.h:150
Definition: Group.h:120
Definition: Group.h:102
Definition: Battlefield.h:196
static Summons Group[]
Definition: boss_urom.cpp:77
Definition: Group.h:66
uint8 itemCount
Definition: Group.h:157
uint8 flags
Definition: Group.h:200
Definition: Group.h:69
bool IsReadyCheckStarted(void) const
Definition: Group.h:248
Definition: Group.h:55
Definition: Group.h:57
GroupReference * GetFirstMember()
Definition: Group.h:295
std::string name
Definition: Group.h:197
#define READYCHECK_DURATION
Definition: Group.h:49
#define RAID_MARKERS_COUNT
Definition: Group.h:47
ObjectGuid m_masterLooterGuid
Definition: Group.h:411
uint32 GetDbStoreId() const
Definition: Group.h:278
Definition: Map.h:259
void setLoot(Loot *pLoot)
Definition: Group.cpp:48
Definition: InstanceSaveMgr.h:44
Difficulty GetRaidDifficultyID() const
Definition: Group.h:321
Definition: Group.h:89
Difficulty GetDungeonDifficultyID() const
Definition: Group.h:320
GroupReference * next()
Definition: GroupReference.h:37
std::map< ObjectGuid, RollVote > PlayerVote
Definition: Group.h:158
Definition: Group.h:113
GroupType m_groupType
Definition: Group.h:401
MemberSlotList const & GetMemberSlots() const
Definition: Group.h:294
Definition: Group.h:132
Definition: LootMgr.h:157
ItemQualities
Definition: SharedDefines.h:318
BattlegroundQueueTypeId
Definition: SharedDefines.h:4732
Definition: Group.h:83
Definition: Group.h:109
GroupReference const * GetFirstMember() const
Definition: Group.h:296
bool readyChecked
Definition: Group.h:202
bool isRollLootActive() const
Definition: Group.h:353
uint32 GetMembersCount() const
Definition: Group.h:297
#define TC_GAME_API
Definition: Define.h:134
Definition: Group.h:136
GroupUpdateFlags
Definition: Group.h:100
Definition: Group.h:122
LootMethod
Definition: LootMgr.h:65
Definition: SharedDefines.h:4687
Definition: Group.h:103
Definition: Group.h:114
ItemQualities m_lootThreshold
Definition: Group.h:409
uint8_t uint8
Definition: Define.h:152
Definition: Group.h:58
Definition: Group.h:78
Definition: Battleground.h:235
Difficulty m_legacyRaidDifficulty
Definition: Group.h:404
Definition: Group.h:90
WorldLocation Location
Definition: Group.h:179
Player session in the World.
Definition: WorldSession.h:882
Definition: ObjectGuid.h:189
Definition: Group.h:105
uint32_t uint32
Definition: g3dmath.h:168
Definition: Group.h:138
GroupJoinBattlegroundResult
Definition: SharedDefines.h:4750
Definition: Group.h:118
Definition: Group.h:94
Definition: Group.h:117
Definition: Unit.h:1305
void BroadcastWorker(Worker &worker)
Definition: Group.h:333
std::string m_leaderName
Definition: Group.h:400
uint8 itemSlot
Definition: Group.h:164
Definition: Group.h:84
std::vector< Roll * > Rolls
Definition: Group.h:212
bool perm
Definition: Group.h:171
Definition: Group.h:133
Definition: WorldPacket.h:26
void WorldRelocate(WorldLocation const &loc)
Definition: Position.h:237
Difficulty m_raidDifficulty
Definition: Group.h:403
uint8 totalPass
Definition: Group.h:163
Definition: Group.h:177
Definition: Group.h:65
void Update(uint32 diff)
Definition: WeatherMgr.cpp:150
Definition: Group.h:64
Definition: Group.h:191
Definition: GroupReference.h:27
GroupMemberAssignment
Definition: Group.h:81
RollVote
Definition: Group.h:51
void BroadcastWorker(Worker const &worker) const
Definition: Group.h:340
Definition: Group.h:112
Definition: Group.h:95
Definition: Group.h:70
uint8 totalGreed
Definition: Group.h:162