TrinityCore
PartyPackets.cpp
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#include "PartyPackets.h"
19#include "Pet.h"
20#include "PhasingHandler.h"
21#include "Player.h"
22#include "RealmList.h"
23#include "SpellAuraEffects.h"
24#include "SpellAuras.h"
25#include "Vehicle.h"
26#include "WorldSession.h"
27
29{
30 _worldPacket.WriteBits(Name.size(), 9);
31
34
38
40
41 return &_worldPacket;
42}
43
45{
46 bool hasPartyIndex = _worldPacket.ReadBit();
47
48 _worldPacket.ResetBitPos();
49 uint32 targetNameLen = _worldPacket.ReadBits(9);
50 uint32 targetRealmLen = _worldPacket.ReadBits(9);
51
52 _worldPacket >> ProposedRoles;
53 _worldPacket >> TargetGUID;
54
55 TargetName = _worldPacket.ReadString(targetNameLen);
56 TargetRealm = _worldPacket.ReadString(targetRealmLen);
57 if (hasPartyIndex)
58 _worldPacket >> PartyIndex.emplace();
59}
60
62{
63 _worldPacket << Bits<1>(CanAccept);
64 _worldPacket << Bits<1>(IsXRealm);
65 _worldPacket << Bits<1>(IsXNativeRealm);
66 _worldPacket << Bits<1>(ShouldSquelch);
67 _worldPacket << Bits<1>(AllowMultipleRoles);
68 _worldPacket << Bits<1>(QuestSessionActive);
69 _worldPacket << BitsSize<6>(InviterName);
70 _worldPacket << Bits<1>(IsCrossFaction);
71
72 _worldPacket << InviterRealm;
73 _worldPacket << InviterGUID;
74 _worldPacket << InviterBNetAccountId;
75 _worldPacket << uint16(InviterCfgRealmID);
76 _worldPacket << uint8(ProposedRoles);
77 _worldPacket << uint32(LfgSlots.size());
78 _worldPacket << uint32(LfgCompletedMask);
79
80 _worldPacket.WriteString(InviterName);
81
82 for (uint32 LfgSlot : LfgSlots)
83 _worldPacket << LfgSlot;
84
85 return &_worldPacket;
86}
87
88void WorldPackets::Party::PartyInvite::Initialize(Player const* inviter, int32 proposedRoles, bool canAccept)
89{
90 CanAccept = canAccept;
91
92 InviterName = inviter->GetName();
93 InviterGUID = inviter->GetGUID();
94 InviterBNetAccountId = inviter->GetSession()->GetAccountGUID();
95
96 ProposedRoles = proposedRoles;
97
98 if (std::shared_ptr<Realm const> realm = sRealmList->GetRealm(*inviter->m_playerData->VirtualPlayerRealm))
99 InviterRealm = Auth::VirtualRealmInfo(realm->Id.GetAddress(), true, false, realm->Name, realm->NormalizedName);
100}
101
103{
104 bool hasPartyIndex = _worldPacket.ReadBit();
105 Accept = _worldPacket.ReadBit();
106 bool hasRolesDesired = _worldPacket.ReadBit();
107
108 if (hasPartyIndex)
109 _worldPacket >> PartyIndex.emplace();
110
111 if (hasRolesDesired)
112 _worldPacket >> RolesDesired.emplace();
113}
114
116{
117 bool hasPartyIndex = _worldPacket.ReadBit();
118 uint32 reasonLen = _worldPacket.ReadBits(8);
119
120 _worldPacket >> TargetGUID;
121 if (hasPartyIndex)
122 _worldPacket >> PartyIndex.emplace();
123
124 Reason = _worldPacket.ReadString(reasonLen);
125}
126
128{
129 _worldPacket.WriteBits(Name.length(), 9);
130 _worldPacket.FlushBits();
131 _worldPacket.WriteString(Name);
132
133 return &_worldPacket;
134}
135
137{
138 _worldPacket << uint8(Reason);
139
140 return &_worldPacket;
141}
142
144{
145 bool hasPartyIndex = _worldPacket.ReadBit();
146 _worldPacket >> TargetGUID;
147 if (hasPartyIndex)
148 _worldPacket >> PartyIndex.emplace();
149}
150
152{
153 data << uint32(phase.Flags);
154 data << uint16(phase.Id);
155
156 return data;
157}
158
160{
161 data << uint32(phases.PhaseShiftFlags);
162 data << uint32(phases.List.size());
163 data << phases.PersonalGUID;
164
165 for (WorldPackets::Party::PartyMemberPhase const& phase : phases.List)
166 data << phase;
167
168 return data;
169}
170
172{
173 data << int32(aura.SpellID);
174 data << uint16(aura.Flags);
175 data << uint32(aura.ActiveFlags);
176 data << int32(aura.Points.size());
177 for (float points : aura.Points)
178 data << float(points);
179
180 return data;
181}
182
184{
185 data << uint32(ctrOptions.ConditionalFlags);
186 data << int8(ctrOptions.FactionGroup);
187 data << uint32(ctrOptions.ChromieTimeExpansionMask);
188
189 return data;
190}
191
193{
194 data << petStats.GUID;
195 data << int32(petStats.ModelId);
196 data << int32(petStats.CurrentHealth);
197 data << int32(petStats.MaxHealth);
198 data << uint32(petStats.Auras.size());
199 for (WorldPackets::Party::PartyMemberAuraStates const& aura : petStats.Auras)
200 data << aura;
201
202 data.WriteBits(petStats.Name.size(), 8);
203 data.FlushBits();
204 data.WriteString(petStats.Name);
205
206 return data;
207}
208
210{
211 for (uint32 i = 0; i < 2; i++)
212 data << uint8(memberStats.PartyType[i]);
213
214 data << uint16(memberStats.Status);
215 data << uint8(memberStats.PowerType);
216 data << uint16(memberStats.PowerDisplayID);
217 data << int32(memberStats.CurrentHealth);
218 data << int32(memberStats.MaxHealth);
219 data << uint16(memberStats.CurrentPower);
220 data << uint16(memberStats.MaxPower);
221 data << uint16(memberStats.Level);
222 data << uint16(memberStats.SpecID);
223 data << uint16(memberStats.ZoneID);
224 data << uint16(memberStats.WmoGroupID);
225 data << uint32(memberStats.WmoDoodadPlacementID);
226 data << int16(memberStats.PositionX);
227 data << int16(memberStats.PositionY);
228 data << int16(memberStats.PositionZ);
229 data << int32(memberStats.VehicleSeat);
230 data << uint32(memberStats.Auras.size());
231 data << memberStats.Phases;
232 data << memberStats.ChromieTime;
233
234 for (WorldPackets::Party::PartyMemberAuraStates const& aura : memberStats.Auras)
235 data << aura;
236
237 data.WriteBit(memberStats.PetStats.has_value());
238 data.FlushBits();
239
240 data << memberStats.DungeonScore;
241
242 if (memberStats.PetStats.has_value())
243 data << *memberStats.PetStats;
244
245 return data;
246}
247
249{
250 _worldPacket.WriteBit(ForEnemy);
251
252 _worldPacket << MemberStats;
253 _worldPacket << MemberGuid;
254
255 return &_worldPacket;
256}
257
259{
260 bool hasPartyIndex = _worldPacket.ReadBit();
261 _worldPacket >> TargetGUID;
262 if (hasPartyIndex)
263 _worldPacket >> PartyIndex.emplace();
264}
265
267{
268 bool hasPartyIndex = _worldPacket.ReadBit();
269 Set = _worldPacket.ReadBit();
270 _worldPacket >> Assignment;
271 _worldPacket >> Target;
272 if (hasPartyIndex)
273 _worldPacket >> PartyIndex.emplace();
274}
275
277{
278 bool hasPartyIndex = _worldPacket.ReadBit();
279 _worldPacket >> TargetGUID;
280 _worldPacket >> Role;
281 if (hasPartyIndex)
282 _worldPacket >> PartyIndex.emplace();
283}
284
286{
287 _worldPacket << uint8(PartyIndex);
288 _worldPacket << From;
289 _worldPacket << ChangedUnit;
290 _worldPacket << uint8(OldRole);
291 _worldPacket << uint8(NewRole);
292
293 return &_worldPacket;
294}
295
297{
298 if (_worldPacket.ReadBit())
299 _worldPacket >> PartyIndex.emplace();
300}
301
303{
304 bool hasPartyIndex = _worldPacket.ReadBit();
305 _worldPacket >> LootMethod;
306 _worldPacket >> LootMasterGUID;
307 _worldPacket >> LootThreshold;
308 if (hasPartyIndex)
309 _worldPacket >> PartyIndex.emplace();
310}
311
313{
314 bool hasPartyIndex = _worldPacket.ReadBit();
315 _worldPacket >> PositionX;
316 _worldPacket >> PositionY;
317 if (hasPartyIndex)
318 _worldPacket >> PartyIndex.emplace();
319}
320
322{
323 _worldPacket << Sender;
324 _worldPacket << PositionX;
325 _worldPacket << PositionY;
326
327 return &_worldPacket;
328}
329
331{
332 bool hasPartyIndex = _worldPacket.ReadBit();
333 _worldPacket >> Target;
334 _worldPacket >> Symbol;
335 if (hasPartyIndex)
336 _worldPacket >> PartyIndex.emplace();
337}
338
340{
341 _worldPacket << PartyIndex;
342 _worldPacket << Symbol;
343 _worldPacket << Target;
344 _worldPacket << ChangedBy;
345
346 return &_worldPacket;
347}
348
350{
351 _worldPacket << uint8(PartyIndex);
352 _worldPacket << uint32(TargetIcons.size());
353
354 for (auto itr = TargetIcons.begin(); itr != TargetIcons.end(); ++itr)
355 {
356 _worldPacket << itr->second;
357 _worldPacket << uint8(itr->first);
358 }
359
360 return &_worldPacket;
361}
362
364{
365 Raid = _worldPacket.ReadBit();
366}
367
369{
370 if (_worldPacket.ReadBit())
371 _worldPacket >> PartyIndex.emplace();
372}
373
375{
376 bool hasPartyIndex = _worldPacket.ReadBit();
377 Apply = _worldPacket.ReadBit();
378 _worldPacket >> Target;
379 if (hasPartyIndex)
380 _worldPacket >> PartyIndex.emplace();
381}
382
384{
385 if (_worldPacket.ReadBit())
386 _worldPacket >> PartyIndex.emplace();
387}
388
390{
391 _worldPacket << PartyIndex;
392 _worldPacket << PartyGUID;
393 _worldPacket << InitiatorGUID;
394 _worldPacket << Duration;
395
396 return &_worldPacket;
397}
398
400{
401 IsReady = _worldPacket.ReadBit();
402 if (_worldPacket.ReadBit())
403 _worldPacket >> PartyIndex.emplace();
404}
405
407{
408 _worldPacket << PartyGUID;
409 _worldPacket << Player;
410
411 _worldPacket.WriteBit(IsReady);
412
413 _worldPacket.FlushBits();
414
415 return &_worldPacket;
416}
417
419{
420 _worldPacket << PartyIndex;
421 _worldPacket << PartyGUID;
422
423 return &_worldPacket;
424}
425
427{
428 PassOnLoot = _worldPacket.ReadBit();
429}
430
432{
433 if (_worldPacket.ReadBit())
434 _worldPacket >> PartyIndex.emplace();
435}
436
438{
439 _worldPacket << PartyIndex;
440 _worldPacket << From;
441
442 return &_worldPacket;
443}
444
446{
447 _worldPacket << PartyIndex;
448 _worldPacket.WriteBits(Name.size(), 9);
449 _worldPacket.WriteString(Name);
450
451 return &_worldPacket;
452}
453
455{
456 data.WriteBits(playerInfo.Name.size(), 6);
457 data.WriteBits(playerInfo.VoiceStateID.size() + 1, 6);
458 data.WriteBit(playerInfo.Connected);
459 data.WriteBit(playerInfo.VoiceChatSilenced);
460 data.WriteBit(playerInfo.FromSocialQueue);
461 data << playerInfo.GUID;
462 data << uint8(playerInfo.Subgroup);
463 data << uint8(playerInfo.Flags);
464 data << uint8(playerInfo.RolesAssigned);
465 data << uint8(playerInfo.Class);
466 data << uint8(playerInfo.FactionGroup);
467 data.WriteString(playerInfo.Name);
468 if (!playerInfo.VoiceStateID.empty())
469 data << playerInfo.VoiceStateID;
470
471 return data;
472}
473
475{
476 data << uint8(lfgInfos.MyFlags);
477 data << uint32(lfgInfos.Slot);
478 data << uint32(lfgInfos.MyRandomSlot);
479 data << uint8(lfgInfos.MyPartialClear);
480 data << float(lfgInfos.MyGearDiff);
481 data << uint8(lfgInfos.MyStrangerCount);
482 data << uint8(lfgInfos.MyKickVoteCount);
483 data << uint8(lfgInfos.BootCount);
484 data.WriteBit(lfgInfos.Aborted);
485 data.WriteBit(lfgInfos.MyFirstReward);
486 data.FlushBits();
487
488 return data;
489}
490
492{
493 data << uint8(lootSettings.Method);
494 data << lootSettings.LootMaster;
495 data << uint8(lootSettings.Threshold);
496
497 return data;
498}
499
501{
502 data << uint32(difficultySettings.DungeonDifficultyID);
503 data << uint32(difficultySettings.RaidDifficultyID);
504 data << uint32(difficultySettings.LegacyRaidDifficultyID);
505
506 return data;
507}
508
510{
511 _worldPacket << uint16(PartyFlags);
512 _worldPacket << uint8(PartyIndex);
513 _worldPacket << uint8(PartyType);
514 _worldPacket << int32(MyIndex);
515 _worldPacket << PartyGUID;
516 _worldPacket << uint32(SequenceNum);
517 _worldPacket << LeaderGUID;
518 _worldPacket << uint8(LeaderFactionGroup);
519 _worldPacket << int32(PingRestriction);
520 _worldPacket << uint32(PlayerList.size());
521 _worldPacket.WriteBit(LfgInfos.has_value());
522 _worldPacket.WriteBit(LootSettings.has_value());
523 _worldPacket.WriteBit(DifficultySettings.has_value());
524 _worldPacket.FlushBits();
525
526 for (WorldPackets::Party::PartyPlayerInfo const& playerInfos : PlayerList)
527 _worldPacket << playerInfos;
528
529 if (LootSettings.has_value())
530 _worldPacket << *LootSettings;
531
532 if (DifficultySettings.has_value())
533 _worldPacket << *DifficultySettings;
534
535 if (LfgInfos.has_value())
536 _worldPacket << *LfgInfos;
537
538 return &_worldPacket;
539}
540
542{
543 bool hasPartyIndex = _worldPacket.ReadBit();
544 EveryoneIsAssistant = _worldPacket.ReadBit();
545 if (hasPartyIndex)
546 _worldPacket >> PartyIndex.emplace();
547}
548
550{
551 _worldPacket >> TargetGUID;
552 _worldPacket >> NewSubGroup;
553 if (_worldPacket.ReadBit())
554 _worldPacket >> PartyIndex.emplace();
555}
556
558{
559 bool hasPartyIndex = _worldPacket.ReadBit();
560 _worldPacket >> FirstTarget;
561 _worldPacket >> SecondTarget;
562 if (hasPartyIndex)
563 _worldPacket >> PartyIndex.emplace();
564}
565
567{
568 _worldPacket >> MarkerId;
569}
570
572{
573 _worldPacket << uint8(PartyIndex);
574 _worldPacket << uint32(ActiveMarkers);
575
576 _worldPacket.WriteBits(RaidMarkers.size(), 4);
577 _worldPacket.FlushBits();
578
579 for (RaidMarker const* raidMarker : RaidMarkers)
580 {
581 _worldPacket << raidMarker->TransportGUID;
582 _worldPacket << raidMarker->Location.GetMapId();
583 _worldPacket << raidMarker->Location.PositionXYZStream();
584 }
585
586 return &_worldPacket;
587}
588
590{
591 ForEnemy = false;
592
593 MemberGuid = player->GetGUID();
594
595 // Status
596 MemberStats.Status = MEMBER_STATUS_ONLINE;
597
598 if (player->IsPvP())
599 MemberStats.Status |= MEMBER_STATUS_PVP;
600
601 if (!player->IsAlive())
602 {
604 MemberStats.Status |= MEMBER_STATUS_GHOST;
605 else
606 MemberStats.Status |= MEMBER_STATUS_DEAD;
607 }
608
609 if (player->IsFFAPvP())
610 MemberStats.Status |= MEMBER_STATUS_PVP_FFA;
611
612 if (player->isAFK())
613 MemberStats.Status |= MEMBER_STATUS_AFK;
614
615 if (player->isDND())
616 MemberStats.Status |= MEMBER_STATUS_DND;
617
618 if (player->GetVehicle())
619 MemberStats.Status |= MEMBER_STATUS_VEHICLE;
620
621 // Level
622 MemberStats.Level = player->GetLevel();
623
624 // Health
625 MemberStats.CurrentHealth = player->GetHealth();
626 MemberStats.MaxHealth = player->GetMaxHealth();
627
628 // Power
629 MemberStats.PowerType = player->GetPowerType();
630 MemberStats.PowerDisplayID = 0;
631 MemberStats.CurrentPower = player->GetPower(player->GetPowerType());
632 MemberStats.MaxPower = player->GetMaxPower(player->GetPowerType());
633
634 // Position
635 MemberStats.ZoneID = player->GetZoneId();
636 MemberStats.PositionX = int16(player->GetPositionX());
637 MemberStats.PositionY = int16(player->GetPositionY());
638 MemberStats.PositionZ = int16(player->GetPositionZ());
639
640 MemberStats.SpecID = AsUnderlyingType(player->GetPrimarySpecialization());
641 MemberStats.PartyType[0] = player->m_playerData->PartyType[0];
642 MemberStats.PartyType[1] = player->m_playerData->PartyType[1];
643
644 if (WmoLocation const* wmoLocation = player->GetCurrentWmo())
645 {
646 MemberStats.WmoGroupID = wmoLocation->GroupId;
647 MemberStats.WmoDoodadPlacementID = wmoLocation->UniqueId;
648 }
649
650 // Vehicle
651 if (::Vehicle const* vehicle = player->GetVehicle())
652 if (VehicleSeatEntry const* vehicleSeat = vehicle->GetSeatForPassenger(player))
653 MemberStats.VehicleSeat = vehicleSeat->ID;
654
655 // Auras
656 for (AuraApplication const* aurApp : player->GetVisibleAuras())
657 {
658 PartyMemberAuraStates& aura = MemberStats.Auras.emplace_back();
659
660 aura.SpellID = aurApp->GetBase()->GetId();
661 aura.ActiveFlags = aurApp->GetEffectMask();
662 aura.Flags = aurApp->GetFlags();
663
664 if (aurApp->GetFlags() & AFLAG_SCALABLE)
665 for (AuraEffect const* aurEff : aurApp->GetBase()->GetAuraEffects())
666 if (aurApp->HasEffect(aurEff->GetEffIndex()))
667 aura.Points.push_back(float(aurEff->GetAmount()));
668 }
669
670 // Phases
671 PhasingHandler::FillPartyMemberPhase(&MemberStats.Phases, player->GetPhaseShift());
672
673 // Pet
674 if (player->GetPet())
675 {
676 ::Pet* pet = player->GetPet();
677
678 MemberStats.PetStats.emplace();
679
680 MemberStats.PetStats->GUID = pet->GetGUID();
681 MemberStats.PetStats->Name = pet->GetName();
682 MemberStats.PetStats->ModelId = pet->GetDisplayId();
683
684 MemberStats.PetStats->CurrentHealth = pet->GetHealth();
685 MemberStats.PetStats->MaxHealth = pet->GetMaxHealth();
686
687 for (AuraApplication const* aurApp : pet->GetVisibleAuras())
688 {
689 PartyMemberAuraStates& aura = MemberStats.PetStats->Auras.emplace_back();
690
691 aura.SpellID = aurApp->GetBase()->GetId();
692 aura.ActiveFlags = aurApp->GetEffectMask();
693 aura.Flags = aurApp->GetFlags();
694
695 if (aurApp->GetFlags() & AFLAG_SCALABLE)
696 for (AuraEffect const* aurEff : aurApp->GetBase()->GetAuraEffects())
697 if (aurApp->HasEffect(aurEff->GetEffIndex()))
698 aura.Points.push_back(float(aurEff->GetAmount()));
699 }
700 }
701
702 MemberStats.ChromieTime.ConditionalFlags = player->m_playerData->CtrOptions->ConditionalFlags;
703 MemberStats.ChromieTime.FactionGroup = player->m_playerData->CtrOptions->FactionGroup;
704 MemberStats.ChromieTime.ChromieTimeExpansionMask = player->m_playerData->CtrOptions->ChromieTimeExpansionMask;
705}
706
708{
709 _worldPacket << Player;
710 _worldPacket << Victim;
711
712 return &_worldPacket;
713}
714
716{
717 _worldPacket << Target;
718
719 return &_worldPacket;
720}
721
723{
724 _worldPacket << Target;
725 _worldPacket.WriteBit(Accepted);
726 _worldPacket.FlushBits();
727
728 return &_worldPacket;
729}
730
732{
733 _worldPacket >> OptionalInit(PartyIndex);
734 _worldPacket >> As<int32>(RestrictTo);
735 if (PartyIndex)
736 _worldPacket >> PartyIndex.emplace();
737}
738
740{
741 _worldPacket >> SenderGUID;
742 _worldPacket >> TargetGUID;
743 _worldPacket >> As<uint8>(Type);
744 _worldPacket >> PinFrameID;
745 _worldPacket >> PingDuration;
746 _worldPacket >> OptionalInit(CreatureID);
747 _worldPacket >> OptionalInit(SpellOverrideNameID);
748 if (CreatureID)
749 _worldPacket >> *CreatureID;
750
751 if (SpellOverrideNameID)
752 _worldPacket >> *SpellOverrideNameID;
753}
754
756{
757 _worldPacket << SenderGUID;
758 _worldPacket << TargetGUID;
759 _worldPacket << uint8(Type);
760 _worldPacket << uint32(PinFrameID);
761 _worldPacket << PingDuration;
762 _worldPacket << OptionalInit(CreatureID);
763 _worldPacket << OptionalInit(SpellOverrideNameID);
764 _worldPacket.FlushBits();
765
766 if (CreatureID)
767 _worldPacket << uint32(*CreatureID);
768
769 if (SpellOverrideNameID)
770 _worldPacket << uint32(*SpellOverrideNameID);
771
772 return &_worldPacket;
773}
774
776{
777 _worldPacket >> SenderGUID;
778 _worldPacket >> MapID;
779 _worldPacket >> Point;
780 _worldPacket >> As<int32>(Type);
781 _worldPacket >> PinFrameID;
782 _worldPacket >> Transport;
783 _worldPacket >> PingDuration;
784}
785
787{
788 _worldPacket << SenderGUID;
789 _worldPacket << MapID;
790 _worldPacket << Point;
791 _worldPacket << uint8(Type);
792 _worldPacket << uint32(PinFrameID);
793 _worldPacket << Transport;
794 _worldPacket << PingDuration;
795
796 return &_worldPacket;
797}
798
800{
801 _worldPacket << SenderGUID;
802 _worldPacket << PinFrameID;
803
804 return &_worldPacket;
805}
uint8_t uint8
Definition: Define.h:144
int16_t int16
Definition: Define.h:139
int8_t int8
Definition: Define.h:140
int32_t int32
Definition: Define.h:138
uint16_t uint16
Definition: Define.h:143
uint32_t uint32
Definition: Define.h:142
@ MEMBER_STATUS_AFK
Definition: Group.h:68
@ 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_GHOST
Definition: Group.h:65
@ MEMBER_STATUS_DND
Definition: Group.h:69
@ MEMBER_STATUS_PVP_FFA
Definition: Group.h:66
LootMethod
Definition: Loot.h:89
@ PLAYER_FLAGS_GHOST
Definition: Player.h:455
#define sRealmList
Definition: RealmList.h:93
@ AFLAG_SCALABLE
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
Definition: Util.h:528
Aura * GetBase() const
Trinity::IteratorPair< DBStorageIterator< AuraEffect * > > GetAuraEffects()
Definition: SpellAuras.h:316
void WriteString(std::string const &str)
Definition: ByteBuffer.h:530
bool WriteBit(bool bit)
Definition: ByteBuffer.h:169
void FlushBits()
Definition: ByteBuffer.h:149
void WriteBits(uint64 value, int32 bits)
Definition: ByteBuffer.h:197
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:195
Definition: Pet.h:40
static void FillPartyMemberPhase(WorldPackets::Party::PartyMemberPhaseStates *partyMemberPhases, PhaseShift const &phaseShift)
ChrSpecialization GetPrimarySpecialization() const
Definition: Player.h:1932
UF::UpdateField< UF::PlayerData, int32(WowCS::EntityFragment::CGObject), TYPEID_PLAYER > m_playerData
Definition: Player.h:2967
Pet * GetPet() const
Definition: Player.cpp:21839
WorldSession * GetSession() const
Definition: Player.h:2195
bool isDND() const
Definition: Player.h:1222
bool HasPlayerFlag(PlayerFlags flags) const
Definition: Player.h:2839
bool isAFK() const
Definition: Player.h:1221
Vehicle * GetVehicle() const
Definition: Unit.h:1756
bool IsPvP() const
Definition: Unit.h:882
Powers GetPowerType() const
Definition: Unit.h:807
bool IsAlive() const
Definition: Unit.h:1176
int32 GetMaxPower(Powers power) const
Definition: Unit.cpp:9791
uint32 GetDisplayId() const
Definition: Unit.h:1600
uint64 GetMaxHealth() const
Definition: Unit.h:785
uint64 GetHealth() const
Definition: Unit.h:784
bool IsFFAPvP() const
Definition: Unit.h:883
int32 GetPower(Powers power) const
Definition: Unit.cpp:9782
VisibleAuraContainer const & GetVisibleAuras() const
Definition: Unit.h:1582
uint8 GetLevel() const
Definition: Unit.h:753
PhaseShift & GetPhaseShift()
Definition: Object.h:661
WmoLocation const * GetCurrentWmo() const
Definition: Object.h:689
std::string const & GetName() const
Definition: Object.h:693
uint32 GetZoneId() const
Definition: Object.h:683
WorldPacket _worldPacket
Definition: Packet.h:43
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
void Initialize(Player const *inviter, int32 proposedRoles, bool canAccept)
WorldPacket const * Write() override
WorldPacket const * Write() override
void Initialize(Player const *player)
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
ObjectGuid GetAccountGUID() const
OptionalInitWriter< T > OptionalInit(Optional< T > const &value)
ByteBuffer & operator<<(ByteBuffer &data, Movement::MonsterSplineFilterKey const &monsterSplineFilterKey)
constexpr float GetPositionX() const
Definition: Position.h:86
constexpr float GetPositionY() const
Definition: Position.h:87
constexpr float GetPositionZ() const
Definition: Position.h:88
std::vector< PartyMemberAuraStates > Auras
Definition: PartyPackets.h:178
std::vector< PartyMemberPhase > List
Definition: PartyPackets.h:158
Optional< PartyMemberPetStats > PetStats
Definition: PartyPackets.h:209
std::vector< PartyMemberAuraStates > Auras
Definition: PartyPackets.h:208
MythicPlus::DungeonScoreSummary DungeonScore
Definition: PartyPackets.h:219