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, // deprecated
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, 0.0f);
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
195{
196 None = 0,
197 Lead = 1,
198 Assist = 2,
199 TankHealer = 3,
200};
201
205{
206 public:
208 {
210 std::string name;
217 };
218 typedef std::list<MemberSlot> MemberSlotList;
219 typedef MemberSlotList::const_iterator member_citerator;
220
222 {
223 public:
224 CountdownInfo() : _startTime(0), _endTime(0) { }
225
226 Seconds GetTimeLeft() const;
227
229 {
230 return Seconds(_endTime - _startTime);
231 }
232
233 void StartCountdown(Seconds duration, Optional<time_t> startTime = { });
234 bool IsRunning() const;
235
236 private:
238 time_t _endTime;
239 };
240
241 protected:
242 typedef MemberSlotList::iterator member_witerator;
243 typedef std::set<Player*> InvitesList;
244
245 public:
246 Group();
247 ~Group();
248
249 void Update(uint32 diff);
250
251 // group manipulation methods
252 bool Create(Player* leader);
253 void LoadGroupFromDB(Field* field);
254 void LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles);
255 bool AddInvite(Player* player);
256 void RemoveInvite(Player* player);
257 void RemoveAllInvites();
258 bool AddLeaderInvite(Player* player);
259 bool AddMember(Player* player);
260 bool RemoveMember(ObjectGuid guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker = ObjectGuid::Empty, const char* reason = nullptr);
261 void ChangeLeader(ObjectGuid guid);
262 void SetLootMethod(LootMethod method);
263 void SetLooterGuid(ObjectGuid guid);
264 void SetMasterLooterGuid(ObjectGuid guid);
265 void UpdateLooterGuid(WorldObject* pLootedObject, bool ifneed = false);
266 void SetLootThreshold(ItemQualities threshold);
267 void Disband(bool hideDestroy = false);
268 void SetLfgRoles(ObjectGuid guid, uint8 roles);
269 uint8 GetLfgRoles(ObjectGuid guid) const;
270 void SetEveryoneIsAssistant(bool apply);
271 RestrictPingsTo GetRestrictPings() const;
272 void SetRestrictPingsTo(RestrictPingsTo restrictTo);
273
274 // Update
275 void UpdateReadyCheck(uint32 diff);
276
277 // Ready check
278 void StartReadyCheck(ObjectGuid starterGuid, Milliseconds duration = Milliseconds(READYCHECK_DURATION));
279 void EndReadyCheck();
280
281 bool IsReadyCheckStarted(void) const { return m_readyCheckStarted; }
282 bool IsReadyCheckCompleted(void) const;
283
284 void SetOfflineMembersReadyChecked(void);
285 void SetMemberReadyCheck(ObjectGuid guid, bool ready);
286 void SetMemberReadyCheck(MemberSlot* slot, bool ready);
287
288 void SetMemberReadyChecked(MemberSlot* slot);
289 void ResetMemberReadyChecked(void);
290
291 // Raid Markers
292 void AddRaidMarker(uint8 markerId, uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty);
293 void DeleteRaidMarker(uint8 markerId);
294 void SendRaidMarkersChanged(WorldSession* session = nullptr) const;
295
296 // properties accessories
297 bool IsFull() const;
298 bool isLFGGroup() const;
299 bool isRaidGroup() const;
300 bool isBGGroup() const;
301 bool isBFGroup() const;
302 bool IsCreated() const;
303 GroupCategory GetGroupCategory() const { return m_groupCategory; }
304 ObjectGuid GetLeaderGUID() const;
305 ObjectGuid GetGUID() const;
306 const char * GetLeaderName() const;
307 LootMethod GetLootMethod() const;
308 ObjectGuid GetLooterGuid() const;
309 ObjectGuid GetMasterLooterGuid() const;
310 ItemQualities GetLootThreshold() const;
311
312 uint32 GetDbStoreId() const { return m_dbStoreId; }
313
314 // member manipulation methods
315 bool IsMember(ObjectGuid guid) const;
316 bool IsLeader(ObjectGuid guid) const;
317 ObjectGuid GetMemberGUID(std::string const& name) const;
318 uint8 GetMemberFlags(ObjectGuid guid) const;
319 bool IsAssistant(ObjectGuid guid) const
320 {
321 return (GetMemberFlags(guid) & MEMBER_FLAG_ASSISTANT) == MEMBER_FLAG_ASSISTANT;
322 }
323
324 Player* GetInvited(ObjectGuid guid) const;
325 Player* GetInvited(const std::string& name) const;
326
327 bool SameSubGroup(ObjectGuid guid1, ObjectGuid guid2) const;
328 bool SameSubGroup(ObjectGuid guid1, MemberSlot const* slot2) const;
329 bool SameSubGroup(Player const* member1, Player const* member2) const;
330 bool HasFreeSlotSubGroup(uint8 subgroup) const;
331
332 MemberSlotList const& GetMemberSlots() const { return m_memberSlots; }
333 GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); }
334 GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); }
335 uint32 GetMembersCount() const { return uint32(m_memberSlots.size()); }
336 uint32 GetInviteeCount() const { return m_invitees.size(); }
337 GroupFlags GetGroupFlags() const { return m_groupFlags; }
338
339 uint8 GetMemberGroup(ObjectGuid guid) const;
340
341 void ConvertToLFG();
342 void ConvertToRaid();
343 void ConvertToGroup();
344
345 void SetBattlegroundGroup(Battleground* bg);
346 void SetBattlefieldGroup(Battlefield* bf);
347 GroupJoinBattlegroundResult CanJoinBattlegroundQueue(BattlegroundTemplate const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot, ObjectGuid& errorGuid) const;
348
349 void ChangeMembersGroup(ObjectGuid guid, uint8 group);
350 void SwapMembersGroups(ObjectGuid firstGuid, ObjectGuid secondGuid);
351 void SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy);
352 void SetGroupMemberFlag(ObjectGuid guid, bool apply, GroupMemberFlags flag);
353 void RemoveUniqueGroupMemberFlag(GroupMemberFlags flag);
354
355 void SetDungeonDifficultyID(Difficulty difficulty);
356 void SetRaidDifficultyID(Difficulty difficulty);
357 void SetLegacyRaidDifficultyID(Difficulty difficulty);
358 Difficulty GetDifficultyID(MapEntry const* mapEntry) const;
359 Difficulty GetDungeonDifficultyID() const { return m_dungeonDifficulty; }
360 Difficulty GetRaidDifficultyID() const { return m_raidDifficulty; }
361 Difficulty GetLegacyRaidDifficultyID() const { return m_legacyRaidDifficulty; }
362 void ResetInstances(InstanceResetMethod method, Player* notifyPlayer);
363
364 // -no description-
365 void SendTargetIconList(WorldSession* session) const;
366 void SendUpdate() const;
367 void SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot const* slot = nullptr) const;
368 void SendUpdateDestroyGroupToPlayer(Player* player) const;
369 void UpdatePlayerOutOfRange(Player const* player) const;
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> m_countdowns;
461
463
464 struct NoopGroupDeleter { void operator()(Group*) const { /*noop - not managed*/ } };
466};
467#endif
Difficulty
Definition: DBCEnums.h:918
#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::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition: Duration.h:24
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition: Duration.h:28
RestrictPingsTo
Definition: Group.h:195
#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:89
InstanceResetMethod
Definition: Map.h:879
InstanceResetResult
Definition: Map.h:886
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:93
time_t _startTime
Definition: Group.h:237
Seconds GetTotalTime() const
Definition: Group.h:228
Definition: Group.h:205
MemberSlotList const & GetMemberSlots() const
Definition: Group.h:332
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:303
RestrictPingsTo m_pingRestriction
Definition: Group.h:462
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:319
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:218
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:243
uint32 m_activeMarkers
Definition: Group.h:458
Trinity::unique_trackable_ptr< Group > m_scriptRef
Definition: Group.h:465
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:335
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:334
Difficulty GetRaidDifficultyID() const
Definition: Group.h:360
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:242
bool IsReadyCheckStarted(void) const
Definition: Group.h:281
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:336
GroupReference * GetFirstMember()
Definition: Group.h:333
LootMethod m_lootMethod
Definition: Group.h:440
Difficulty GetDungeonDifficultyID() const
Definition: Group.h:359
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:219
std::array< std::unique_ptr< CountdownInfo >, 3 > m_countdowns
Definition: Group.h:460
Difficulty m_dungeonDifficulty
Definition: Group.h:434
uint32 GetDbStoreId() const
Definition: Group.h:312
Difficulty GetLegacyRaidDifficultyID() const
Definition: Group.h:361
ItemQualities m_lootThreshold
Definition: Group.h:441
GroupFlags GetGroupFlags() const
Definition: Group.h:337
GroupInstanceRefManager m_ownedInstancesMgr
Definition: Group.h:445
GroupFlags m_groupFlags
Definition: Group.h:432
Definition: Map.h:223
static ObjectGuid const Empty
Definition: ObjectGuid.h:274
uint64 LowType
Definition: ObjectGuid.h:281
Derived * next()
Definition: Reference.h:84
Trinity::unique_trackable_ptr companion class, replicating what std::weak_ptr is to std::shared_ptr.
Definition: Unit.h:631
constexpr void WorldRelocate(WorldLocation const &loc)
Definition: Position.h:201
Player session in the World.
Definition: WorldSession.h:976
void apply(T *val)
Definition: ByteConverter.h:41
std::unique_ptr< VignetteData > Create(VignetteEntry const *vignetteData, WorldObject const *owner)
Definition: Vignette.cpp:81
void Update(VignetteData &vignette, WorldObject const *owner)
Definition: Vignette.cpp:101
ObjectGuid guid
Definition: Group.h:209
uint8 _class
Definition: Group.h:212
std::string name
Definition: Group.h:210
bool readyChecked
Definition: Group.h:216
void operator()(Group *) const
Definition: Group.h:464
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