TrinityCore
Group.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 TRINITYCORE_GROUP_H
19#define TRINITYCORE_GROUP_H
20
21#include "DBCEnums.h"
22#include "DatabaseEnvFwd.h"
24#include "GroupRefManager.h"
25#include "Object.h"
26#include "RaceMask.h"
27#include "SharedDefines.h"
28#include "Timer.h"
29#include "UniqueTrackablePtr.h"
30#include <map>
31
32class Battlefield;
33class Battleground;
34class Creature;
35class Map;
36class Player;
37class Unit;
38class WorldObject;
39class WorldPacket;
40class WorldSession;
41
44struct MapEntry;
45
46enum class InstanceResetMethod : uint8;
47enum class InstanceResetResult : uint8;
48enum LootMethod : uint8;
49
50#define MAX_GROUP_SIZE 5
51#define MAX_RAID_SIZE 40
52#define MAX_RAID_SUBGROUPS MAX_RAID_SIZE / MAX_GROUP_SIZE
53
54#define TARGET_ICONS_COUNT 8
55#define RAID_MARKERS_COUNT 8
56
57#define READYCHECK_DURATION 35000
58
60{
62 MEMBER_STATUS_ONLINE = 0x0001, // Lua_UnitIsConnected
63 MEMBER_STATUS_PVP = 0x0002, // Lua_UnitIsPVP
64 MEMBER_STATUS_DEAD = 0x0004, // Lua_UnitIsDead
65 MEMBER_STATUS_GHOST = 0x0008, // Lua_UnitIsGhost
66 MEMBER_STATUS_PVP_FFA = 0x0010, // Lua_UnitIsPVPFreeForAll
67 MEMBER_STATUS_UNK3 = 0x0020, // used in calls from Lua_GetPlayerMapPosition/Lua_GetBattlefieldFlagPosition
68 MEMBER_STATUS_AFK = 0x0040, // Lua_UnitIsAFK
69 MEMBER_STATUS_DND = 0x0080, // Lua_UnitIsDND
71 MEMBER_STATUS_VEHICLE = 0x0200, // Lua_UnitInVehicle
72};
73
75{
79};
80
82{
85};
86
88{
92};
93
95{
99 GROUP_FLAG_LFG_RESTRICTED = 0x004, // Script_HasLFGRestrictions()
102 GROUP_FLAG_ONE_PERSON_PARTY = 0x020, // Script_IsOnePersonParty()
103 GROUP_FLAG_EVERYONE_ASSISTANT = 0x040, // Script_IsEveryoneAssistant()
106 GROUP_FLAG_RESTRICT_PINGS = 0x400, // C_PartyInfo::Script_GetRestrictPings()
107
109};
110
112{
115
118
120{
121 GROUP_UPDATE_FLAG_NONE = 0x00000000, // nothing
122 GROUP_UPDATE_FLAG_UNK704 = 0x00000001, // uint8[2] (unk)
123 GROUP_UPDATE_FLAG_STATUS = 0x00000002, // uint16 (GroupMemberStatusFlag)
124 GROUP_UPDATE_FLAG_POWER_TYPE = 0x00000004, // uint8 (PowerType)
125 GROUP_UPDATE_FLAG_UNK322 = 0x00000008, // uint16 (unk)
126 GROUP_UPDATE_FLAG_CUR_HP = 0x00000010, // uint32 (HP)
127 GROUP_UPDATE_FLAG_MAX_HP = 0x00000020, // uint32 (max HP)
128 GROUP_UPDATE_FLAG_CUR_POWER = 0x00000040, // int16 (power value)
129 GROUP_UPDATE_FLAG_MAX_POWER = 0x00000080, // int16 (max power value)
130 GROUP_UPDATE_FLAG_LEVEL = 0x00000100, // uint16 (level value)
131 GROUP_UPDATE_FLAG_UNK200000 = 0x00000200, // int16 (unk)
132 GROUP_UPDATE_FLAG_ZONE = 0x00000400, // uint16 (zone id)
133 GROUP_UPDATE_FLAG_UNK2000000 = 0x00000800, // int16 (unk)
134 GROUP_UPDATE_FLAG_UNK4000000 = 0x00001000, // int32 (unk)
135 GROUP_UPDATE_FLAG_POSITION = 0x00002000, // uint16 (x), uint16 (y), uint16 (z)
136 GROUP_UPDATE_FLAG_VEHICLE_SEAT = 0x00104000, // int32 (vehicle seat id)
137 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))
138 GROUP_UPDATE_FLAG_PET = 0x00010000, // complex (pet)
139 GROUP_UPDATE_FLAG_PHASE = 0x00020000, // int32 (unk), uint32 (phase count), for (count) uint16(phaseId)
140
148
150{
151 GROUP_UPDATE_FLAG_PET_NONE = 0x00000000, // nothing
152 GROUP_UPDATE_FLAG_PET_GUID = 0x00000001, // ObjectGuid (pet guid)
153 GROUP_UPDATE_FLAG_PET_NAME = 0x00000002, // cstring (name, NULL terminated string)
154 GROUP_UPDATE_FLAG_PET_MODEL_ID = 0x00000004, // uint16 (model id)
155 GROUP_UPDATE_FLAG_PET_CUR_HP = 0x00000008, // uint32 (HP)
156 GROUP_UPDATE_FLAG_PET_MAX_HP = 0x00000010, // uint32 (max HP)
157 GROUP_UPDATE_FLAG_PET_AURAS = 0x00000020, // [see GROUP_UPDATE_FLAG_AURAS]
158
162
164{
167
168 RaidMarker(uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty)
169 {
170 Location.WorldRelocate(mapId, positionX, positionY, positionZ);
171 TransportGUID = transportGuid;
172 }
173};
174
176{
177 Pvp = 0,
178 ChallengeMode = 1,
180};
181
183{
184 Attack = 0,
185 Warning = 1,
186 Assist = 2,
187 OnMyWay = 3,
188 AlertThreat = 4,
189 AlertNotThreat = 5,
190
191 Max
192};
193
197{
198 public:
200 {
202 std::string name;
209 };
210 typedef std::list<MemberSlot> MemberSlotList;
211 typedef MemberSlotList::const_iterator member_citerator;
212
214 {
215 public:
216 CountdownInfo() : _startTime(0), _endTime(0) { }
217
218 Seconds GetTimeLeft() const;
219
221 {
222 return Seconds(_endTime - _startTime);
223 }
224
225 void StartCountdown(Seconds duration, Optional<time_t> startTime = { });
226 bool IsRunning() const;
227
228 private:
230 time_t _endTime;
231 };
232
233 protected:
234 typedef MemberSlotList::iterator member_witerator;
235 typedef std::set<Player*> InvitesList;
236
237 public:
238 Group();
239 ~Group();
240
241 void Update(uint32 diff);
242
243 // group manipulation methods
244 bool Create(Player* leader);
245 void LoadGroupFromDB(Field* field);
246 void LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles);
247 bool AddInvite(Player* player);
248 void RemoveInvite(Player* player);
249 void RemoveAllInvites();
250 bool AddLeaderInvite(Player* player);
251 bool AddMember(Player* player);
252 bool RemoveMember(ObjectGuid guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker = ObjectGuid::Empty, const char* reason = nullptr);
253 void ChangeLeader(ObjectGuid guid);
254 void SetLootMethod(LootMethod method);
255 void SetLooterGuid(ObjectGuid guid);
256 void SetMasterLooterGuid(ObjectGuid guid);
257 void UpdateLooterGuid(WorldObject* pLootedObject, bool ifneed = false);
258 void SetLootThreshold(ItemQualities threshold);
259 void Disband(bool hideDestroy = false);
260 void SetLfgRoles(ObjectGuid guid, uint8 roles);
261 uint8 GetLfgRoles(ObjectGuid guid);
262 void SetEveryoneIsAssistant(bool apply);
263 bool IsRestrictPingsToAssistants() const;
264 void SetRestrictPingsToAssistants(bool restrictPingsToAssistants);
265
266 // Update
267 void UpdateReadyCheck(uint32 diff);
268
269 // Ready check
270 void StartReadyCheck(ObjectGuid starterGuid, Milliseconds duration = Milliseconds(READYCHECK_DURATION));
271 void EndReadyCheck();
272
273 bool IsReadyCheckStarted(void) const { return m_readyCheckStarted; }
274 bool IsReadyCheckCompleted(void) const;
275
276 void SetOfflineMembersReadyChecked(void);
277 void SetMemberReadyCheck(ObjectGuid guid, bool ready);
278 void SetMemberReadyCheck(MemberSlot* slot, bool ready);
279
280 void SetMemberReadyChecked(MemberSlot* slot);
281 void ResetMemberReadyChecked(void);
282
283 // Raid Markers
284 void AddRaidMarker(uint8 markerId, uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty);
285 void DeleteRaidMarker(uint8 markerId);
286 void SendRaidMarkersChanged(WorldSession* session = nullptr);
287
288 // properties accessories
289 bool IsFull() const;
290 bool isLFGGroup() const;
291 bool isRaidGroup() const;
292 bool isBGGroup() const;
293 bool isBFGroup() const;
294 bool IsCreated() const;
295 GroupCategory GetGroupCategory() const { return m_groupCategory; }
296 ObjectGuid GetLeaderGUID() const;
297 ObjectGuid GetGUID() const;
298 const char * GetLeaderName() const;
299 LootMethod GetLootMethod() const;
300 ObjectGuid GetLooterGuid() const;
301 ObjectGuid GetMasterLooterGuid() const;
302 ItemQualities GetLootThreshold() const;
303
304 uint32 GetDbStoreId() const { return m_dbStoreId; }
305
306 // member manipulation methods
307 bool IsMember(ObjectGuid guid) const;
308 bool IsLeader(ObjectGuid guid) const;
309 ObjectGuid GetMemberGUID(const std::string& name);
310 uint8 GetMemberFlags(ObjectGuid guid) const;
311 bool IsAssistant(ObjectGuid guid) const
312 {
313 return (GetMemberFlags(guid) & MEMBER_FLAG_ASSISTANT) == MEMBER_FLAG_ASSISTANT;
314 }
315
316 Player* GetInvited(ObjectGuid guid) const;
317 Player* GetInvited(const std::string& name) const;
318
319 bool SameSubGroup(ObjectGuid guid1, ObjectGuid guid2) const;
320 bool SameSubGroup(ObjectGuid guid1, MemberSlot const* slot2) const;
321 bool SameSubGroup(Player const* member1, Player const* member2) const;
322 bool HasFreeSlotSubGroup(uint8 subgroup) const;
323
324 MemberSlotList const& GetMemberSlots() const { return m_memberSlots; }
325 GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); }
326 GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); }
327 uint32 GetMembersCount() const { return uint32(m_memberSlots.size()); }
328 uint32 GetInviteeCount() const { return m_invitees.size(); }
329 GroupFlags GetGroupFlags() const { return m_groupFlags; }
330
331 uint8 GetMemberGroup(ObjectGuid guid) const;
332
333 void ConvertToLFG();
334 void ConvertToRaid();
335 void ConvertToGroup();
336
337 void SetBattlegroundGroup(Battleground* bg);
338 void SetBattlefieldGroup(Battlefield* bf);
339 GroupJoinBattlegroundResult CanJoinBattlegroundQueue(BattlegroundTemplate const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot, ObjectGuid& errorGuid) const;
340
341 void ChangeMembersGroup(ObjectGuid guid, uint8 group);
342 void SwapMembersGroups(ObjectGuid firstGuid, ObjectGuid secondGuid);
343 void SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy);
344 void SetGroupMemberFlag(ObjectGuid guid, bool apply, GroupMemberFlags flag);
345 void RemoveUniqueGroupMemberFlag(GroupMemberFlags flag);
346
347 void SetDungeonDifficultyID(Difficulty difficulty);
348 void SetRaidDifficultyID(Difficulty difficulty);
349 void SetLegacyRaidDifficultyID(Difficulty difficulty);
350 Difficulty GetDifficultyID(MapEntry const* mapEntry) const;
351 Difficulty GetDungeonDifficultyID() const { return m_dungeonDifficulty; }
352 Difficulty GetRaidDifficultyID() const { return m_raidDifficulty; }
353 Difficulty GetLegacyRaidDifficultyID() const { return m_legacyRaidDifficulty; }
354 void ResetInstances(InstanceResetMethod method, Player* notifyPlayer);
355
356 // -no description-
357 //void SendInit(WorldSession* session);
358 void SendTargetIconList(WorldSession* session);
359 void SendUpdate();
360 void SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot = nullptr);
361 void SendUpdateDestroyGroupToPlayer(Player* player) const;
362 void UpdatePlayerOutOfRange(Player* player);
363
364 template<class Worker>
365 void BroadcastWorker(Worker& worker)
366 {
367 for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
368 worker(itr->GetSource());
369 }
370
371 template<class Worker>
372 void BroadcastWorker(Worker const& worker) const
373 {
374 for (GroupReference const* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
375 worker(itr->GetSource());
376 }
377
378 void BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignoredPlayer = ObjectGuid::Empty) const;
379 void BroadcastAddonMessagePacket(WorldPacket const* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignore = ObjectGuid::Empty) const;
380
381 void LinkMember(GroupReference* pRef);
382 void DelinkMember(ObjectGuid guid);
383
385 {
386 auto itr = m_recentInstances.find(mapId);
387 return itr != m_recentInstances.end() ? itr->second.first : m_leaderGuid;
388 }
389
391 {
392 auto itr = m_recentInstances.find(mapId);
393 return itr != m_recentInstances.end() ? itr->second.second : 0;
394 }
395
396 void SetRecentInstance(uint32 mapId, ObjectGuid instanceOwner, uint32 instanceId)
397 {
398 m_recentInstances[mapId] = { instanceOwner, instanceId };
399 }
400
401 void LinkOwnedInstance(GroupInstanceReference* ref);
402
403 void StartLeaderOfflineTimer();
404 void StopLeaderOfflineTimer();
405 void SelectNewPartyOrRaidLeader();
406
407 // FG: evil hacks
408 void BroadcastGroupUpdate(void);
409
410 void StartCountdown(CountdownTimerType timerType, Seconds duration, Optional<time_t> startTime = { });
411 CountdownInfo const* GetCountdownInfo(CountdownTimerType timerType) const;
412
413 Trinity::unique_weak_ptr<Group> GetWeakPtr() const { return m_scriptRef; }
414
415 protected:
416 bool _setMembersGroup(ObjectGuid guid, uint8 group);
417 void _homebindIfInstance(Player* player);
418
419 void _initRaidSubGroupsCounter();
420 member_citerator _getMemberCSlot(ObjectGuid Guid) const;
421 member_witerator _getMemberWSlot(ObjectGuid Guid);
422 void SubGroupCounterIncrease(uint8 subgroup);
423 void SubGroupCounterDecrease(uint8 subgroup);
424 void ToggleGroupMemberFlag(member_witerator slot, uint8 flag, bool apply);
425
431 std::string m_leaderName;
444 std::unordered_map<uint32 /*mapId*/, std::pair<ObjectGuid /*instanceOwner*/, uint32 /*instanceId*/>> m_recentInstances;
448 uint32 m_dbStoreId; // Represents the ID used in database (Can be reused by other groups if group was disbanded)
451
452 // Ready Check
455
456 // Raid markers
457 std::array<std::unique_ptr<RaidMarker>, RAID_MARKERS_COUNT> m_markers;
459
460 std::array<std::unique_ptr<CountdownInfo>, 3> _countdowns;
461
462 struct NoopGroupDeleter { void operator()(Group*) const { /*noop - not managed*/ } };
464};
465#endif
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::chrono::seconds Seconds
Seconds shorthand typedef.
Definition: Duration.h:32
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition: Duration.h:29
#define READYCHECK_DURATION
Definition: Group.h:57
GroupMemberAssignment
Definition: Group.h:82
@ GROUP_ASSIGN_MAINASSIST
Definition: Group.h:84
@ GROUP_ASSIGN_MAINTANK
Definition: Group.h:83
GroupMemberOnlineStatus
Definition: Group.h:60
@ MEMBER_STATUS_AFK
Definition: Group.h:68
@ MEMBER_STATUS_OFFLINE
Definition: Group.h:61
@ MEMBER_STATUS_VEHICLE
Definition: Group.h:71
@ MEMBER_STATUS_PVP
Definition: Group.h:63
@ MEMBER_STATUS_ONLINE
Definition: Group.h:62
@ MEMBER_STATUS_DEAD
Definition: Group.h:64
@ MEMBER_STATUS_UNK3
Definition: Group.h:67
@ MEMBER_STATUS_GHOST
Definition: Group.h:65
@ MEMBER_STATUS_DND
Definition: Group.h:69
@ MEMBER_STATUS_RAF
Definition: Group.h:70
@ MEMBER_STATUS_PVP_FFA
Definition: Group.h:66
PingSubjectType
Definition: Group.h:183
GroupType
Definition: Group.h:88
@ GROUP_TYPE_NORMAL
Definition: Group.h:90
@ GROUP_TYPE_WORLD_PVP
Definition: Group.h:91
@ GROUP_TYPE_NONE
Definition: Group.h:89
#define RAID_MARKERS_COUNT
Definition: Group.h:55
GroupFlags
Definition: Group.h:95
@ GROUP_FLAG_GUILD_GROUP
Definition: Group.h:104
@ GROUP_FLAG_LFG_RESTRICTED
Definition: Group.h:99
@ GROUP_FLAG_RAID
Definition: Group.h:98
@ GROUP_FLAG_FAKE_RAID
Definition: Group.h:97
@ GROUP_FLAG_RESTRICT_PINGS
Definition: Group.h:106
@ GROUP_FLAG_CROSS_FACTION
Definition: Group.h:105
@ GROUP_MASK_BGRAID
Definition: Group.h:108
@ GROUP_FLAG_NONE
Definition: Group.h:96
@ GROUP_FLAG_ONE_PERSON_PARTY
Definition: Group.h:102
@ GROUP_FLAG_EVERYONE_ASSISTANT
Definition: Group.h:103
@ GROUP_FLAG_LFG
Definition: Group.h:100
@ GROUP_FLAG_DESTROYED
Definition: Group.h:101
GroupMemberFlags
Definition: Group.h:75
@ MEMBER_FLAG_ASSISTANT
Definition: Group.h:76
@ MEMBER_FLAG_MAINASSIST
Definition: Group.h:78
@ MEMBER_FLAG_MAINTANK
Definition: Group.h:77
GroupUpdateFlags
Definition: Group.h:120
@ GROUP_UPDATE_FLAG_PHASE
Definition: Group.h:139
@ GROUP_UPDATE_FLAG_CUR_HP
Definition: Group.h:126
@ GROUP_UPDATE_FLAG_PET
Definition: Group.h:138
@ GROUP_UPDATE_FLAG_UNK322
Definition: Group.h:125
@ GROUP_UPDATE_FLAG_UNK4000000
Definition: Group.h:134
@ GROUP_UPDATE_FLAG_POWER_TYPE
Definition: Group.h:124
@ GROUP_UPDATE_FULL
Definition: Group.h:141
@ GROUP_UPDATE_FLAG_MAX_HP
Definition: Group.h:127
@ GROUP_UPDATE_FLAG_UNK2000000
Definition: Group.h:133
@ GROUP_UPDATE_FLAG_VEHICLE_SEAT
Definition: Group.h:136
@ GROUP_UPDATE_FLAG_STATUS
Definition: Group.h:123
@ GROUP_UPDATE_FLAG_MAX_POWER
Definition: Group.h:129
@ GROUP_UPDATE_FLAG_ZONE
Definition: Group.h:132
@ GROUP_UPDATE_FLAG_NONE
Definition: Group.h:121
@ GROUP_UPDATE_FLAG_UNK200000
Definition: Group.h:131
@ GROUP_UPDATE_FLAG_POSITION
Definition: Group.h:135
@ GROUP_UPDATE_FLAG_AURAS
Definition: Group.h:137
@ GROUP_UPDATE_FLAG_LEVEL
Definition: Group.h:130
@ GROUP_UPDATE_FLAG_UNK704
Definition: Group.h:122
@ GROUP_UPDATE_FLAG_CUR_POWER
Definition: Group.h:128
#define TARGET_ICONS_COUNT
Definition: Group.h:54
CountdownTimerType
Definition: Group.h:176
GroupUpdatePetFlags
Definition: Group.h:150
@ GROUP_UPDATE_FLAG_PET_CUR_HP
Definition: Group.h:155
@ GROUP_UPDATE_PET_FULL
Definition: Group.h:159
@ GROUP_UPDATE_FLAG_PET_MODEL_ID
Definition: Group.h:154
@ GROUP_UPDATE_FLAG_PET_NAME
Definition: Group.h:153
@ GROUP_UPDATE_FLAG_PET_AURAS
Definition: Group.h:157
@ GROUP_UPDATE_FLAG_PET_GUID
Definition: Group.h:152
@ GROUP_UPDATE_FLAG_PET_NONE
Definition: Group.h:151
@ GROUP_UPDATE_FLAG_PET_MAX_HP
Definition: Group.h:156
GroupCategory
Definition: Group.h:112
@ GROUP_CATEGORY_HOME
Definition: Group.h:113
@ MAX_GROUP_CATEGORY
Definition: Group.h:116
@ GROUP_CATEGORY_INSTANCE
Definition: Group.h:114
LootMethod
Definition: Loot.h:88
InstanceResetMethod
Definition: Map.h:845
InstanceResetResult
Definition: Map.h:852
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:25
Races
Definition: RaceMask.h:26
GroupJoinBattlegroundResult
ItemQualities
RemoveMethod
@ GROUP_REMOVEMETHOD_DEFAULT
static Summons Group[]
Definition: boss_urom.cpp:83
Class used to access individual fields of database query result.
Definition: Field.h:90
GroupReference * next()
time_t _startTime
Definition: Group.h:229
Seconds GetTotalTime() const
Definition: Group.h:220
Definition: Group.h:197
MemberSlotList const & GetMemberSlots() const
Definition: Group.h:324
std::array< std::unique_ptr< CountdownInfo >, 3 > _countdowns
Definition: Group.h:460
bool m_isLeaderOffline
Definition: Group.h:449
Battlefield * m_bfGroup
Definition: Group.h:438
uint8 m_leaderFactionGroup
Definition: Group.h:430
InvitesList m_invitees
Definition: Group.h:428
GroupCategory GetGroupCategory() const
Definition: Group.h:295
Difficulty m_legacyRaidDifficulty
Definition: Group.h:436
GroupCategory m_groupCategory
Definition: Group.h:433
ObjectGuid m_leaderGuid
Definition: Group.h:429
std::string m_leaderName
Definition: Group.h:431
bool IsAssistant(ObjectGuid guid) const
Definition: Group.h:311
ObjectGuid m_looterGuid
Definition: Group.h:442
std::array< std::unique_ptr< RaidMarker >, RAID_MARKERS_COUNT > m_markers
Definition: Group.h:457
std::list< MemberSlot > MemberSlotList
Definition: Group.h:210
Battleground * m_bgGroup
Definition: Group.h:437
Difficulty m_raidDifficulty
Definition: Group.h:435
GroupRefManager m_memberMgr
Definition: Group.h:427
std::set< Player * > InvitesList
Definition: Group.h:235
uint32 m_activeMarkers
Definition: Group.h:458
Trinity::unique_trackable_ptr< Group > m_scriptRef
Definition: Group.h:463
std::unordered_map< uint32, std::pair< ObjectGuid, uint32 > > m_recentInstances
Definition: Group.h:444
MemberSlotList m_memberSlots
Definition: Group.h:426
uint32 GetMembersCount() const
Definition: Group.h:327
Trinity::unique_weak_ptr< Group > GetWeakPtr() const
Definition: Group.h:413
void BroadcastWorker(Worker const &worker) const
Definition: Group.h:372
GroupReference const * GetFirstMember() const
Definition: Group.h:326
Difficulty GetRaidDifficultyID() const
Definition: Group.h:352
TimeTracker m_leaderOfflineTimer
Definition: Group.h:450
Milliseconds m_readyCheckTimer
Definition: Group.h:454
uint32 m_dbStoreId
Definition: Group.h:448
ObjectGuid m_masterLooterGuid
Definition: Group.h:443
MemberSlotList::iterator member_witerator
Definition: Group.h:234
bool IsReadyCheckStarted(void) const
Definition: Group.h:273
uint32 GetRecentInstanceId(uint32 mapId) const
Definition: Group.h:390
bool m_readyCheckStarted
Definition: Group.h:453
void SetRecentInstance(uint32 mapId, ObjectGuid instanceOwner, uint32 instanceId)
Definition: Group.h:396
uint32 GetInviteeCount() const
Definition: Group.h:328
GroupReference * GetFirstMember()
Definition: Group.h:325
LootMethod m_lootMethod
Definition: Group.h:440
Difficulty GetDungeonDifficultyID() const
Definition: Group.h:351
ObjectGuid GetRecentInstanceOwner(uint32 mapId) const
Definition: Group.h:384
ObjectGuid m_guid
Definition: Group.h:447
uint8 * m_subGroupsCounts
Definition: Group.h:446
MemberSlotList::const_iterator member_citerator
Definition: Group.h:211
Difficulty m_dungeonDifficulty
Definition: Group.h:434
void BroadcastWorker(Worker &worker)
Definition: Group.h:365
uint32 GetDbStoreId() const
Definition: Group.h:304
Difficulty GetLegacyRaidDifficultyID() const
Definition: Group.h:353
ItemQualities m_lootThreshold
Definition: Group.h:441
GroupFlags GetGroupFlags() const
Definition: Group.h:329
GroupInstanceRefManager m_ownedInstancesMgr
Definition: Group.h:445
GroupFlags m_groupFlags
Definition: Group.h:432
Definition: Map.h:189
static ObjectGuid const Empty
Definition: ObjectGuid.h:274
uint64 LowType
Definition: ObjectGuid.h:278
Trinity::unique_trackable_ptr companion class, replicating what std::weak_ptr is to std::shared_ptr.
Definition: Unit.h:627
constexpr void WorldRelocate(WorldLocation const &loc)
Definition: Position.h:187
Player session in the World.
Definition: WorldSession.h:963
void apply(T *val)
Definition: ByteConverter.h:41
std::unique_ptr< VignetteData > Create(VignetteEntry const *vignetteData, WorldObject const *owner)
Definition: Vignette.cpp:72
void Update(VignetteData &vignette, WorldObject const *owner)
Definition: Vignette.cpp:90
ObjectGuid guid
Definition: Group.h:201
uint8 _class
Definition: Group.h:204
std::string name
Definition: Group.h:202
bool readyChecked
Definition: Group.h:208
void operator()(Group *) const
Definition: Group.h:462
ObjectGuid TransportGUID
Definition: Group.h:166
RaidMarker(uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid=ObjectGuid::Empty)
Definition: Group.h:168
WorldLocation Location
Definition: Group.h:165