Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
Group.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRESERVER_GROUP_H
7#define SKYFIRESERVER_GROUP_H
8
9#include "DBCEnums.h"
10#include "GroupRefManager.h"
11#include "LootMgr.h"
12#include "QueryResult.h"
13#include "SharedDefines.h"
14
15class Battlefield;
16class Battleground;
17class Creature;
18class GroupReference;
19class InstanceSave;
20class Map;
21class Player;
22class Unit;
23class WorldObject;
24class WorldPacket;
25class WorldSession;
26
27struct MapEntry;
28
29#define MAXGROUPSIZE 5
30#define MAXRAIDSIZE 40
31#define MAX_RAID_SUBGROUPS MAXRAIDSIZE/MAXGROUPSIZE
32#define TARGETICONCOUNT 8
33
35{
37 MEMBER_STATUS_ONLINE = 0x0001, // Lua_UnitIsConnected
38 MEMBER_STATUS_PVP = 0x0002, // Lua_UnitIsPVP
39 MEMBER_STATUS_DEAD = 0x0004, // Lua_UnitIsDead
40 MEMBER_STATUS_GHOST = 0x0008, // Lua_UnitIsGhost
41 MEMBER_STATUS_PVP_FFA = 0x0010, // Lua_UnitIsPVPFreeForAll
42 MEMBER_STATUS_UNK3 = 0x0020, // used in calls from Lua_GetPlayerMapPosition/Lua_GetBattlefieldFlagPosition
43 MEMBER_STATUS_AFK = 0x0040, // Lua_UnitIsAFK
44 MEMBER_STATUS_DND = 0x0080 // Lua_UnitIsDND
45};
46
53
59
61{
69 // 0x10, leave/change group?, I saw this flag when leaving group and after leaving BG while in group
70};
71
73{
74 GROUP_UPDATE_FLAG_NONE = 0x00000000, // nothing
75 GROUP_UPDATE_FLAG_STATUS = 0x00000001, // uint16 (GroupMemberStatusFlag)
76 GROUP_UPDATE_FLAG_UNK = 0x00000002, // uint8 (), uint8 ()
77 GROUP_UPDATE_FLAG_CUR_HP = 0x00000004, // uint32 (HP)
78 GROUP_UPDATE_FLAG_MAX_HP = 0x00000008, // uint32 (HP)
79 GROUP_UPDATE_FLAG_POWER_TYPE = 0x00000010, // uint8 (PowerType)
81 GROUP_UPDATE_FLAG_CUR_POWER = 0x00000040, // int16 (power value)
82 GROUP_UPDATE_FLAG_MAX_POWER = 0x00000080, // int16 (power value)
83 GROUP_UPDATE_FLAG_LEVEL = 0x00000100, // uint16 (level value)
84 GROUP_UPDATE_FLAG_ZONE = 0x00000200, // uint16 (zone id)
85 GROUP_UPDATE_FLAG_UNK400 = 0x00000400, // int16 ()
86 GROUP_UPDATE_FLAG_POSITION = 0x00000800, // uint16 (x), uint16 (y), uint16 (z)
87 GROUP_UPDATE_FLAG_AURAS = 0x00001000, // uint8 (unk), uint64 (mask), uint32 (count), for each bit set: uint32 (spell id) + uint16 (AuraFlags) (if has flags Scalable -> 3x int32 (bps))
88 GROUP_UPDATE_FLAG_PET_GUID = 0x00002000, // uint64 (pet guid)
89 GROUP_UPDATE_FLAG_PET_NAME = 0x00004000, // cstring (name, NULL terminated string)
90 GROUP_UPDATE_FLAG_PET_MODEL_ID = 0x00008000, // uint16 (model id)
91 GROUP_UPDATE_FLAG_PET_CUR_HP = 0x00010000, // uint32 (HP)
92 GROUP_UPDATE_FLAG_PET_MAX_HP = 0x00020000, // uint32 (HP)
93 GROUP_UPDATE_FLAG_PET_POWER_TYPE = 0x00040000, // uint8 (PowerType)
95 GROUP_UPDATE_FLAG_PET_CUR_POWER = 0x00100000, // uint16 (power value)
96 GROUP_UPDATE_FLAG_PET_MAX_POWER = 0x00200000, // uint16 (power value)
97 GROUP_UPDATE_FLAG_PET_AURAS = 0x00400000, // [see GROUP_UPDATE_FLAG_AURAS]
98 GROUP_UPDATE_FLAG_VEHICLE_SEAT = 0x00800000, // int32 (vehicle seat id)
99 GROUP_UPDATE_FLAG_PHASE = 0x01000000, // int32 (unk), uint32 (phase count), for (count) uint16(phaseId)
100
103 GROUP_UPDATE_FLAG_PET_CUR_POWER | GROUP_UPDATE_FLAG_PET_MAX_POWER /*| GROUP_UPDATE_FLAG_PET_AURAS*/, // all pet flags
104
108 /* GROUP_UPDATE_FLAG_AURAS | */GROUP_UPDATE_PET | GROUP_UPDATE_FLAG_PHASE // all known flags, VEHICLE_SEAT
109};
110
111class Roll : public LootValidatorRef
112{
113public:
114 Roll(uint64 _guid, LootItem const& li);
115 ~Roll();
116 void setLoot(Loot* pLoot);
117 Loot* getLoot();
119
125 typedef std::map<uint64, RollType> PlayerVote;
126 PlayerVote playerVote; //vote position correspond with player position (in group)
133};
134
136{
138 bool perm;
139 /* permanent InstanceGroupBinds exist if the leader has a permanent
140 PlayerInstanceBind for the same instance. */
141 InstanceGroupBind() : save(NULL), perm(false) { }
142};
143
146class Group
147{
148public:
159 typedef std::list<MemberSlot> MemberSlotList;
160 typedef MemberSlotList::const_iterator member_citerator;
161
163protected:
164 typedef MemberSlotList::iterator member_witerator;
165 typedef std::set<Player*> InvitesList;
166
167 typedef std::vector<Roll*> Rolls;
168
169public:
170 Group();
171 ~Group();
172
173 // group manipulation methods
174 bool Create(Player* leader);
175 void LoadGroupFromDB(Field* field);
176 void LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles);
177 bool AddInvite(Player* player);
178 void RemoveInvite(Player* player);
179 void RemoveAllInvites();
180 bool AddLeaderInvite(Player* player);
181 bool AddMember(Player* player);
182 bool RemoveMember(uint64 guid, const RemoveMethod& method = GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker = 0, const char* reason = NULL);
183 void ChangeLeader(uint64 guid);
184 void SetLootMethod(LootMethod method);
185 void SetLooterGuid(uint64 guid);
186 void UpdateLooterGuid(WorldObject* pLootedObject, bool ifneed = false);
187 void SetLootThreshold(ItemQualities threshold);
188 void Disband(bool hideDestroy = false);
189 void SetLfgRoles(uint64 guid, const uint8 roles);
190
191 // properties accessories
192 bool IsFull() const;
193 bool isLFGGroup() const;
194 bool isRaidGroup() const;
195 bool isBGGroup() const;
196 bool isBFGroup() const;
197 bool IsCreated() const;
198 uint64 GetLeaderGUID() const;
199 uint64 GetGUID() const;
200 uint32 GetLowGUID() const;
201 const char* GetLeaderName() const;
203 uint64 GetLooterGuid() const;
205
206 uint32 GetDbStoreId() const { return m_dbStoreId; };
207
208 // member manipulation methods
209 bool IsMember(uint64 guid) const;
210 bool IsLeader(uint64 guid) const;
211 uint64 GetMemberGUID(const std::string& name);
212 bool IsAssistant(uint64 guid) const;
214 bool ReadyCheckAllResponded() const;
215
216 Player* GetInvited(uint64 guid) const;
217 Player* GetInvited(const std::string& name) const;
218
219 bool SameSubGroup(uint64 guid1, uint64 guid2) const;
220 bool SameSubGroup(uint64 guid1, MemberSlot const* slot2) const;
221 bool SameSubGroup(Player const* member1, Player const* member2) const;
222 bool HasFreeSlotSubGroup(uint8 subgroup) const;
223
224 MemberSlotList const& GetMemberSlots() const { return m_memberSlots; }
225 GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); }
226 GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); }
227 uint32 GetMembersCount() const { return m_memberSlots.size(); }
228
229 uint8 GetMemberGroup(uint64 guid) const;
230
231 void ChangeFlagEveryoneAssistant(bool apply);
232 void ConvertToLFG();
233 void ConvertToRaid();
234 void ConvertToGroup();
235
238 GroupJoinBattlegroundResult CanJoinBattlegroundQueue(Battleground const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot);
239
240 void ChangeMembersGroup(uint64 guid, uint8 group);
241 void ChangeMembersGroup(Player* player, uint8 group);
242 void SetTargetIcon(uint8 id, ObjectGuid whoGuid, ObjectGuid targetGuid, uint8 Index);
243 void SetGroupMemberFlag(uint64 guid, bool apply, GroupMemberFlags flag);
245
246 void SetMemberRole(uint64 guid, uint32 role);
247 uint32 GetMemberRole(uint64 guid) const;
248 bool RoleCheckAllResponded() const;
249
250 DifficultyID GetDifficulty(MapEntry const* mapEntry) const;
253 void SetDungeonDifficulty(DifficultyID difficulty);
254 void SetRaidDifficulty(DifficultyID difficulty);
255 bool InCombatToInstance(uint32 instanceId);
256 void ResetInstances(InstanceResetMethod method, bool isRaid, Player* SendMsgTo);
257
258 void ReadyCheck(bool state) { _readyCheckInProgress = state; }
261
262 // -no description-
263 //void SendInit(WorldSession* session);
264 void SendTargetIconList(WorldSession* session);
265 void SendUpdate();
266 void SendUpdateToPlayer(uint64 playerGUID, MemberSlot* slot = NULL);
267 void UpdatePlayerOutOfRange(Player* player);
269 // ignore: GUID of player that will be ignored
270 void BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group = -1, uint64 ignore = 0);
271 void BroadcastAddonMessagePacket(WorldPacket* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group = -1, uint64 ignore = 0);
272 void BroadcastReadyCheck(WorldPacket* packet);
273 void OfflineReadyCheck();
274
275 /*********************************************************/
276 /*** LOOT SYSTEM ***/
277 /*********************************************************/
278
279 bool isRollLootActive() const;
280 void SendLootStartRoll(uint32 CountDown, uint32 mapid, const Roll& r);
281 void SendLootStartRollToPlayer(uint32 countDown, uint32 mapId, Player* p, bool canNeed, Roll const& r);
282 void SendLootRoll(uint64 SourceGuid, uint64 TargetGuid, uint8 RollNumber, RollType RollType, const Roll& r);
283 void SendLootRollWon(uint64 SourceGuid, uint64 TargetGuid, uint8 RollNumber, RollType RollType, const Roll& r);
284 void SendLootAllPassed(Roll const& roll);
285 void SendLooter(Creature* creature, Player* pLooter);
286 void GroupLoot(Loot* loot, WorldObject* pLootedObject);
287 void NeedBeforeGreed(Loot* loot, WorldObject* pLootedObject);
288 void MasterLoot(Loot* loot, WorldObject* pLootedObject);
289 Rolls::iterator GetRoll(uint64 Guid);
290 void CountTheRoll(Rolls::iterator roll);
291 void CountRollVote(uint64 playerGUID, uint64 Guid, RollType Choise);
292 void EndRoll(Loot* loot);
293
294 // related to disenchant rolls
296
297 void LinkMember(GroupReference* pRef);
298 void DelinkMember(uint64 guid);
299
300 InstanceGroupBind* BindToInstance(InstanceSave* save, bool permanent, bool load = false);
301 void UnbindInstance(uint32 mapid, uint8 difficulty, bool unload = false);
307
308 // FG: evil hacks
309 void BroadcastGroupUpdate(void);
310
311protected:
312 bool _setMembersGroup(uint64 guid, uint8 group);
313 void _homebindIfInstance(Player* player);
314
318 void SubGroupCounterIncrease(uint8 subgroup);
319 void SubGroupCounterDecrease(uint8 subgroup);
320 void ToggleGroupMemberFlag(member_witerator slot, GroupMemberFlags flag, bool apply);
321
326 std::string m_leaderName;
340 uint32 m_counter; // used only in SMSG_GROUP_LIST
342 uint32 m_dbStoreId; // Represents the ID used in database (Can be reused by other groups if group was disbanded)
344};
345#endif
DifficultyID
Definition DBCEnums.h:330
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
#define TARGETICONCOUNT
Definition Group.h:32
GroupMemberAssignment
Definition Group.h:55
GroupMemberOnlineStatus
Definition Group.h:35
@ MEMBER_STATUS_AFK
Definition Group.h:43
@ MEMBER_STATUS_OFFLINE
Definition Group.h:36
@ MEMBER_STATUS_PVP
Definition Group.h:38
@ MEMBER_STATUS_ONLINE
Definition Group.h:37
@ MEMBER_STATUS_DEAD
Definition Group.h:39
@ MEMBER_STATUS_UNK3
Definition Group.h:42
@ MEMBER_STATUS_GHOST
Definition Group.h:40
@ MEMBER_STATUS_DND
Definition Group.h:44
@ MEMBER_STATUS_PVP_FFA
Definition Group.h:41
GroupType
Definition Group.h:61
@ GROUPTYPE_NORMAL
Definition Group.h:62
@ GROUPTYPE_RAID
Definition Group.h:64
@ GROUPTYPE_UNK1
Definition Group.h:66
@ GROUPTYPE_LFG
Definition Group.h:67
@ GROUPTYPE_EVERYONE_IS_ASSISTANT
Definition Group.h:68
@ GROUPTYPE_BGRAID
Definition Group.h:65
@ GROUPTYPE_BG
Definition Group.h:63
GroupMemberFlags
Definition Group.h:48
@ MEMBER_FLAG_MAINASSIST
Definition Group.h:51
@ MEMBER_FLAG_ASSISTANT
Definition Group.h:49
@ MEMBER_FLAG_MAINTANK
Definition Group.h:50
GroupUpdateFlags
Definition Group.h:73
@ GROUP_UPDATE_FLAG_UNK
Definition Group.h:76
@ GROUP_UPDATE_FLAG_PHASE
Definition Group.h:99
@ GROUP_UPDATE_FLAG_CUR_HP
Definition Group.h:77
@ GROUP_UPDATE_FLAG_PET_CUR_HP
Definition Group.h:91
@ GROUP_UPDATE_FLAG_POWER_TYPE
Definition Group.h:79
@ GROUP_UPDATE_FULL
Definition Group.h:105
@ GROUP_UPDATE_FLAG_PET_CUR_POWER
Definition Group.h:95
@ GROUP_UPDATE_FLAG_PET_MAX_POWER
Definition Group.h:96
@ GROUP_UPDATE_FLAG_PET_UNK2
Definition Group.h:94
@ GROUP_UPDATE_FLAG_MAX_HP
Definition Group.h:78
@ GROUP_UPDATE_FLAG_VEHICLE_SEAT
Definition Group.h:98
@ GROUP_UPDATE_FLAG_STATUS
Definition Group.h:75
@ GROUP_UPDATE_FLAG_PET_POWER_TYPE
Definition Group.h:93
@ GROUP_UPDATE_FLAG_MAX_POWER
Definition Group.h:82
@ GROUP_UPDATE_FLAG_ZONE
Definition Group.h:84
@ GROUP_UPDATE_FLAG_UNK2
Definition Group.h:80
@ GROUP_UPDATE_FLAG_NONE
Definition Group.h:74
@ GROUP_UPDATE_FLAG_POSITION
Definition Group.h:86
@ GROUP_UPDATE_FLAG_PET_MODEL_ID
Definition Group.h:90
@ GROUP_UPDATE_FLAG_PET_NAME
Definition Group.h:89
@ GROUP_UPDATE_FLAG_PET_AURAS
Definition Group.h:97
@ GROUP_UPDATE_FLAG_AURAS
Definition Group.h:87
@ GROUP_UPDATE_FLAG_LEVEL
Definition Group.h:83
@ GROUP_UPDATE_PET
Definition Group.h:101
@ GROUP_UPDATE_FLAG_UNK400
Definition Group.h:85
@ GROUP_UPDATE_FLAG_PET_GUID
Definition Group.h:88
@ GROUP_UPDATE_FLAG_PET_MAX_HP
Definition Group.h:92
@ GROUP_UPDATE_FLAG_CUR_POWER
Definition Group.h:81
RollType
Definition LootMgr.h:21
LootMethod
Definition LootMgr.h:47
InstanceResetMethod
Definition Map.h:627
GroupJoinBattlegroundResult
BattlegroundQueueTypeId
RemoveMethod
@ GROUP_REMOVEMETHOD_DEFAULT
ItemQualities
#define UNORDERED_MAP
Definition Field.h:16
MemberSlotList const & GetMemberSlots() const
Definition Group.h:224
void BroadcastGroupUpdate(void)
Definition Group.cpp:2485
uint32 m_counter
Definition Group.h:340
void NeedBeforeGreed(Loot *loot, WorldObject *pLootedObject)
Definition Group.cpp:1137
bool isLFGGroup() const
Definition Group.cpp:2543
void EndRoll(Loot *loot)
Definition Group.cpp:1378
void ReadyCheckMemberHasResponded(uint64 guid)
Definition Group.cpp:2855
Battlefield * m_bfGroup
Definition Group.h:331
bool AddLeaderInvite(Player *player)
Definition Group.cpp:305
void SetBattlefieldGroup(Battlefield *bf)
Definition Group.cpp:2664
void SendLootAllPassed(Roll const &roll)
Definition Group.cpp:885
InvitesList m_invitees
Definition Group.h:324
uint64 m_targetIcons[TARGETICONCOUNT]
Definition Group.h:332
void SendTargetIconList(WorldSession *session)
Definition Group.cpp:1566
void SetTargetIcon(uint8 id, ObjectGuid whoGuid, ObjectGuid targetGuid, uint8 Index)
Definition Group.cpp:1525
uint32 m_maxEnchantingLevel
Definition Group.h:341
void DelinkMember(uint64 guid)
Definition Group.cpp:2747
bool IsCreated() const
Definition Group.cpp:2563
void SubGroupCounterDecrease(uint8 subgroup)
Definition Group.cpp:2801
void SetLootMethod(LootMethod method)
Definition Group.cpp:2513
DifficultyID m_dungeonDifficulty
Definition Group.h:328
void ChangeFlagEveryoneAssistant(bool apply)
Definition Group.cpp:202
void RemoveAllInvites()
Definition Group.cpp:324
std::string m_leaderName
Definition Group.h:326
void _initRaidSubGroupsCounter()
Definition Group.cpp:2767
void LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles)
Definition Group.cpp:177
bool isRollLootActive() const
Definition Group.cpp:2728
member_citerator _getMemberCSlot(uint64 Guid) const
Definition Group.cpp:2779
void SetLootThreshold(ItemQualities threshold)
Definition Group.cpp:2523
void GroupLoot(Loot *loot, WorldObject *pLootedObject)
Definition Group.cpp:985
void Disband(bool hideDestroy=false)
Definition Group.cpp:700
uint64 m_looterGuid
Definition Group.h:335
InstanceGroupBind * BindToInstance(InstanceSave *save, bool permanent, bool load=false)
Definition Group.cpp:2426
uint64 m_leaderGuid
Definition Group.h:325
void LoadGroupFromDB(Field *field)
Definition Group.cpp:149
std::list< MemberSlot > MemberSlotList
Definition Group.h:159
bool AddMember(Player *player)
Definition Group.cpp:353
Battleground * m_bgGroup
Definition Group.h:330
void SetGroupMemberFlag(uint64 guid, bool apply, GroupMemberFlags flag)
Definition Group.cpp:2669
Rolls::iterator GetRoll(uint64 Guid)
Definition Group.cpp:2733
GroupJoinBattlegroundResult CanJoinBattlegroundQueue(Battleground const *bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot)
Definition Group.cpp:2158
void SendUpdate()
Definition Group.cpp:1594
GroupRefManager m_memberMgr
Definition Group.h:323
void BroadcastPacket(WorldPacket *packet, bool ignorePlayersInBGRaid, int group=-1, uint64 ignore=0)
Definition Group.cpp:1907
Rolls RollId
Definition Group.h:336
std::set< Player * > InvitesList
Definition Group.h:165
member_witerator _getMemberWSlot(uint64 Guid)
Definition Group.cpp:2787
void SendLootStartRoll(uint32 CountDown, uint32 mapid, const Roll &r)
Definition Group.cpp:790
void RemoveInvite(Player *player)
Definition Group.cpp:315
void SetDungeonDifficulty(DifficultyID difficulty)
Definition Group.cpp:2240
uint64 m_guid
Definition Group.h:339
bool isBGGroup() const
Definition Group.cpp:2553
void ConvertToRaid()
Definition Group.cpp:229
ItemQualities GetLootThreshold() const
Definition Group.cpp:2598
MemberSlotList m_memberSlots
Definition Group.h:322
bool ReadyCheckInProgress() const
Definition Group.h:213
uint32 GetMembersCount() const
Definition Group.h:227
std::vector< Roll * > Rolls
Definition Group.h:167
Group()
Definition Group.cpp:43
void SendLootRoll(uint64 SourceGuid, uint64 TargetGuid, uint8 RollNumber, RollType RollType, const Roll &r)
Definition Group.cpp:838
uint64 GetGUID() const
Definition Group.cpp:2573
GroupReference const * GetFirstMember() const
Definition Group.h:226
void ResetMaxEnchantingLevel()
Definition Group.cpp:2501
void _homebindIfInstance(Player *player)
Definition Group.cpp:2479
DifficultyID m_raidDifficulty
Definition Group.h:329
void BroadcastAddonMessagePacket(WorldPacket *packet, const std::string &prefix, bool ignorePlayersInBGRaid, int group=-1, uint64 ignore=0)
Definition Group.cpp:1892
uint32 m_dbStoreId
Definition Group.h:342
BoundInstancesMap m_boundInstances[15]
Definition Group.h:337
uint8 GetMemberGroup(uint64 guid) const
Definition Group.cpp:2651
void ToggleGroupMemberFlag(member_witerator slot, GroupMemberFlags flag, bool apply)
Definition Group.cpp:2814
void SendLootStartRollToPlayer(uint32 countDown, uint32 mapId, Player *p, bool canNeed, Roll const &r)
Definition Group.cpp:815
void SetLooterGuid(uint64 guid)
Definition Group.cpp:2518
bool ReadyCheckAllResponded() const
Definition Group.cpp:2870
const char * GetLeaderName() const
Definition Group.cpp:2583
void SetLfgRoles(uint64 guid, const uint8 roles)
Definition Group.cpp:2528
void BroadcastReadyCheck(WorldPacket *packet)
Definition Group.cpp:1920
void ConvertToLFG()
Definition Group.cpp:212
void SetRaidDifficulty(DifficultyID difficulty)
Definition Group.cpp:2264
MemberSlotList::iterator member_witerator
Definition Group.h:164
bool _readyCheckInProgress
Definition Group.h:343
void SetBattlegroundGroup(Battleground *bg)
Definition Group.cpp:2659
void UpdatePlayerOutOfRange(Player *player)
Definition Group.cpp:1875
LootMethod GetLootMethod() const
Definition Group.cpp:2588
void UpdateLooterGuid(WorldObject *pLootedObject, bool ifneed=false)
Definition Group.cpp:2090
bool IsMember(uint64 guid) const
Definition Group.cpp:2603
Player * GetInvited(uint64 guid) const
Definition Group.cpp:333
bool HasFreeSlotSubGroup(uint8 subgroup) const
Definition Group.cpp:2645
void CountTheRoll(Rolls::iterator roll)
Definition Group.cpp:1392
UNORDERED_MAP< uint32, InstanceGroupBind > BoundInstancesMap
Definition Group.h:162
bool isBFGroup() const
Definition Group.cpp:2558
bool RemoveMember(uint64 guid, const RemoveMethod &method=GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker=0, const char *reason=NULL)
Definition Group.cpp:501
GroupReference * GetFirstMember()
Definition Group.h:225
LootMethod m_lootMethod
Definition Group.h:333
uint32 GetLowGUID() const
Definition Group.cpp:2578
void SetMemberRole(uint64 guid, uint32 role)
Definition Group.cpp:2822
uint64 GetMemberGUID(const std::string &name)
Definition Group.cpp:2613
DifficultyID GetRaidDifficulty() const
Definition Group.h:252
bool AddInvite(Player *player)
Definition Group.cpp:284
void ConvertToGroup()
Definition Group.cpp:253
uint8 * m_subGroupsCounts
Definition Group.h:338
void SendLootRollWon(uint64 SourceGuid, uint64 TargetGuid, uint8 RollNumber, RollType RollType, const Roll &r)
Definition Group.cpp:862
void CountRollVote(uint64 playerGUID, uint64 Guid, RollType Choise)
Definition Group.cpp:1333
uint32 GetMemberRole(uint64 guid) const
Definition Group.cpp:2837
BoundInstancesMap & GetBoundInstances(DifficultyID difficulty)
Definition Group.cpp:2762
MemberSlotList::const_iterator member_citerator
Definition Group.h:160
bool RoleCheckAllResponded() const
Definition Group.cpp:2846
bool _setMembersGroup(uint64 guid, uint8 group)
Definition Group.cpp:1986
DifficultyID GetDifficulty(MapEntry const *mapEntry) const
Definition Group.cpp:2710
void SubGroupCounterIncrease(uint8 subgroup)
Definition Group.cpp:2795
bool Create(Player *leader)
Definition Group.cpp:81
void ReadyCheckResetResponded()
Definition Group.cpp:2864
bool IsFull() const
Definition Group.cpp:2538
bool SameSubGroup(uint64 guid1, uint64 guid2) const
Definition Group.cpp:2629
void UnbindInstance(uint32 mapid, uint8 difficulty, bool unload=false)
Definition Group.cpp:2459
void ReadyCheck(bool state)
Definition Group.h:258
InstanceGroupBind * GetBoundInstance(Player *player)
Definition Group.cpp:2393
bool IsAssistant(uint64 guid) const
Definition Group.cpp:2621
uint32 GetDbStoreId() const
Definition Group.h:206
uint64 GetLeaderGUID() const
Definition Group.cpp:2568
~Group()
Definition Group.cpp:52
bool IsLeader(uint64 guid) const
Definition Group.cpp:2608
void SendReadyCheckCompleted()
Definition Group.cpp:1861
uint64 GetLooterGuid() const
Definition Group.cpp:2593
void LinkMember(GroupReference *pRef)
Definition Group.cpp:2742
ItemQualities m_lootThreshold
Definition Group.h:334
bool isRaidGroup() const
Definition Group.cpp:2548
DifficultyID GetDungeonDifficulty() const
Definition Group.h:251
GroupType m_groupType
Definition Group.h:327
void ResetInstances(InstanceResetMethod method, bool isRaid, Player *SendMsgTo)
Definition Group.cpp:2301
void RemoveUniqueGroupMemberFlag(GroupMemberFlags flag)
Definition Group.cpp:2807
bool InCombatToInstance(uint32 instanceId)
Definition Group.cpp:2288
void MasterLoot(Loot *loot, WorldObject *pLootedObject)
Definition Group.cpp:1281
void SendUpdateToPlayer(uint64 playerGUID, MemberSlot *slot=NULL)
Definition Group.cpp:1600
void ChangeMembersGroup(uint64 guid, uint8 group)
Definition Group.cpp:2021
void OfflineReadyCheck()
Definition Group.cpp:1931
void ChangeLeader(uint64 guid)
Definition Group.cpp:628
void SendLooter(Creature *creature, Player *pLooter)
Definition Group.cpp:906
Definition Map.h:238
Definition Group.h:112
void targetObjectBuildLink()
Definition Group.cpp:2234
void setLoot(Loot *pLoot)
Definition Group.cpp:33
uint64 itemGUID
Definition Group.h:120
int32 itemRandomPropId
Definition Group.h:122
uint8 totalGreed
Definition Group.h:129
uint8 totalPlayersRolling
Definition Group.h:127
uint8 itemSlot
Definition Group.h:131
uint32 itemid
Definition Group.h:121
uint8 itemCount
Definition Group.h:124
~Roll()
Definition Group.cpp:31
uint8 rollVoteMask
Definition Group.h:132
Roll(uint64 _guid, LootItem const &li)
Definition Group.cpp:26
uint32 itemRandomSuffix
Definition Group.h:123
std::map< uint64, RollType > PlayerVote
Definition Group.h:125
uint8 totalNeed
Definition Group.h:128
uint8 totalPass
Definition Group.h:130
Loot * getLoot()
Definition Group.cpp:38
PlayerVote playerVote
Definition Group.h:126
Definition Unit.h:1367
Player session in the World.
bool readyCheckHasResponded
Definition Group.h:157
std::string name
Definition Group.h:153
InstanceSave * save
Definition Group.h:137