46 bool hasPartyIndex = _worldPacket.ReadBit();
48 _worldPacket.ResetBitPos();
49 uint32 targetNameLen = _worldPacket.ReadBits(9);
50 uint32 targetRealmLen = _worldPacket.ReadBits(9);
52 _worldPacket >> ProposedRoles;
53 _worldPacket >> TargetGUID;
55 TargetName = _worldPacket.ReadString(targetNameLen);
56 TargetRealm = _worldPacket.ReadString(targetRealmLen);
58 _worldPacket >> PartyIndex.emplace();
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);
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);
80 _worldPacket.WriteString(InviterName);
82 for (
uint32 LfgSlot : LfgSlots)
83 _worldPacket << LfgSlot;
90 CanAccept = canAccept;
92 InviterName = inviter->
GetName();
93 InviterGUID = inviter->
GetGUID();
96 ProposedRoles = proposedRoles;
99 InviterRealm =
Auth::VirtualRealmInfo(realm->Id.GetAddress(),
true,
false, realm->Name, realm->NormalizedName);
104 bool hasPartyIndex = _worldPacket.ReadBit();
105 Accept = _worldPacket.ReadBit();
106 bool hasRolesDesired = _worldPacket.ReadBit();
109 _worldPacket >> PartyIndex.emplace();
112 _worldPacket >> RolesDesired.emplace();
117 bool hasPartyIndex = _worldPacket.ReadBit();
118 uint32 reasonLen = _worldPacket.ReadBits(8);
120 _worldPacket >> TargetGUID;
122 _worldPacket >> PartyIndex.emplace();
124 Reason = _worldPacket.ReadString(reasonLen);
130 _worldPacket.FlushBits();
131 _worldPacket.WriteString(
Name);
133 return &_worldPacket;
138 _worldPacket <<
uint8(Reason);
140 return &_worldPacket;
145 bool hasPartyIndex = _worldPacket.ReadBit();
146 _worldPacket >> TargetGUID;
148 _worldPacket >> PartyIndex.emplace();
177 for (
float points : aura.
Points)
178 data << float(points);
194 data << petStats.
GUID;
211 for (
uint32 i = 0; i < 2; i++)
231 data << memberStats.
Phases;
242 if (memberStats.
PetStats.has_value())
252 _worldPacket << MemberStats;
253 _worldPacket << MemberGuid;
255 return &_worldPacket;
260 bool hasPartyIndex = _worldPacket.ReadBit();
261 _worldPacket >> TargetGUID;
263 _worldPacket >> PartyIndex.emplace();
268 bool hasPartyIndex = _worldPacket.ReadBit();
269 Set = _worldPacket.ReadBit();
270 _worldPacket >> Assignment;
271 _worldPacket >> Target;
273 _worldPacket >> PartyIndex.emplace();
278 bool hasPartyIndex = _worldPacket.ReadBit();
279 _worldPacket >> TargetGUID;
280 _worldPacket >> Role;
282 _worldPacket >> PartyIndex.emplace();
287 _worldPacket <<
uint8(PartyIndex);
288 _worldPacket << From;
289 _worldPacket << ChangedUnit;
290 _worldPacket <<
uint8(OldRole);
291 _worldPacket <<
uint8(NewRole);
293 return &_worldPacket;
298 if (_worldPacket.ReadBit())
299 _worldPacket >> PartyIndex.emplace();
304 bool hasPartyIndex = _worldPacket.ReadBit();
306 _worldPacket >> LootMasterGUID;
307 _worldPacket >> LootThreshold;
309 _worldPacket >> PartyIndex.emplace();
314 bool hasPartyIndex = _worldPacket.ReadBit();
315 _worldPacket >> PositionX;
316 _worldPacket >> PositionY;
318 _worldPacket >> PartyIndex.emplace();
323 _worldPacket << Sender;
324 _worldPacket << PositionX;
325 _worldPacket << PositionY;
327 return &_worldPacket;
332 bool hasPartyIndex = _worldPacket.ReadBit();
333 _worldPacket >> Target;
334 _worldPacket >> Symbol;
336 _worldPacket >> PartyIndex.emplace();
341 _worldPacket << PartyIndex;
342 _worldPacket << Symbol;
343 _worldPacket << Target;
344 _worldPacket << ChangedBy;
346 return &_worldPacket;
351 _worldPacket <<
uint8(PartyIndex);
352 _worldPacket <<
uint32(TargetIcons.size());
354 for (
auto itr = TargetIcons.begin(); itr != TargetIcons.end(); ++itr)
356 _worldPacket << itr->second;
357 _worldPacket <<
uint8(itr->first);
360 return &_worldPacket;
365 Raid = _worldPacket.ReadBit();
370 if (_worldPacket.ReadBit())
371 _worldPacket >> PartyIndex.emplace();
376 bool hasPartyIndex = _worldPacket.ReadBit();
377 Apply = _worldPacket.ReadBit();
378 _worldPacket >> Target;
380 _worldPacket >> PartyIndex.emplace();
385 if (_worldPacket.ReadBit())
386 _worldPacket >> PartyIndex.emplace();
391 _worldPacket << PartyIndex;
392 _worldPacket << PartyGUID;
393 _worldPacket << InitiatorGUID;
396 return &_worldPacket;
401 IsReady = _worldPacket.ReadBit();
402 if (_worldPacket.ReadBit())
403 _worldPacket >> PartyIndex.emplace();
408 _worldPacket << PartyGUID;
411 _worldPacket.WriteBit(IsReady);
413 _worldPacket.FlushBits();
415 return &_worldPacket;
420 _worldPacket << PartyIndex;
421 _worldPacket << PartyGUID;
423 return &_worldPacket;
428 PassOnLoot = _worldPacket.ReadBit();
433 if (_worldPacket.ReadBit())
434 _worldPacket >> PartyIndex.emplace();
439 _worldPacket << PartyIndex;
440 _worldPacket << From;
442 return &_worldPacket;
447 _worldPacket << PartyIndex;
449 _worldPacket.WriteString(
Name);
451 return &_worldPacket;
461 data << playerInfo.
GUID;
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();
527 _worldPacket << playerInfos;
529 if (LootSettings.has_value())
530 _worldPacket << *LootSettings;
532 if (DifficultySettings.has_value())
533 _worldPacket << *DifficultySettings;
535 if (LfgInfos.has_value())
536 _worldPacket << *LfgInfos;
538 return &_worldPacket;
543 bool hasPartyIndex = _worldPacket.ReadBit();
544 EveryoneIsAssistant = _worldPacket.ReadBit();
546 _worldPacket >> PartyIndex.emplace();
551 _worldPacket >> TargetGUID;
552 _worldPacket >> NewSubGroup;
553 if (_worldPacket.ReadBit())
554 _worldPacket >> PartyIndex.emplace();
559 bool hasPartyIndex = _worldPacket.ReadBit();
560 _worldPacket >> FirstTarget;
561 _worldPacket >> SecondTarget;
563 _worldPacket >> PartyIndex.emplace();
568 _worldPacket >> MarkerId;
573 _worldPacket <<
uint8(PartyIndex);
574 _worldPacket <<
uint32(ActiveMarkers);
576 _worldPacket.WriteBits(RaidMarkers.size(), 4);
577 _worldPacket.FlushBits();
579 for (
RaidMarker const* raidMarker : RaidMarkers)
581 _worldPacket << raidMarker->TransportGUID;
582 _worldPacket << raidMarker->Location.GetMapId();
583 _worldPacket << raidMarker->Location.PositionXYZStream();
586 return &_worldPacket;
593 MemberGuid = player->
GetGUID();
622 MemberStats.Level = player->
GetLevel();
625 MemberStats.CurrentHealth = player->
GetHealth();
630 MemberStats.PowerDisplayID = 0;
635 MemberStats.ZoneID = player->
GetZoneId();
641 MemberStats.PartyType[0] = player->
m_playerData->PartyType[0];
642 MemberStats.PartyType[1] = player->
m_playerData->PartyType[1];
646 MemberStats.WmoGroupID = wmoLocation->GroupId;
647 MemberStats.WmoDoodadPlacementID = wmoLocation->UniqueId;
652 if (
VehicleSeatEntry const* vehicleSeat = vehicle->GetSeatForPassenger(player))
653 MemberStats.VehicleSeat = vehicleSeat->ID;
660 aura.
SpellID = aurApp->GetBase()->GetId();
662 aura.
Flags = aurApp->GetFlags();
666 if (aurApp->HasEffect(aurEff->GetEffIndex()))
667 aura.
Points.push_back(
float(aurEff->GetAmount()));
678 MemberStats.PetStats.emplace();
680 MemberStats.PetStats->GUID = pet->
GetGUID();
681 MemberStats.PetStats->Name = pet->
GetName();
684 MemberStats.PetStats->CurrentHealth = pet->
GetHealth();
691 aura.
SpellID = aurApp->GetBase()->GetId();
693 aura.
Flags = aurApp->GetFlags();
697 if (aurApp->HasEffect(aurEff->GetEffIndex()))
698 aura.
Points.push_back(
float(aurEff->GetAmount()));
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;
710 _worldPacket << Victim;
712 return &_worldPacket;
717 _worldPacket << Target;
719 return &_worldPacket;
724 _worldPacket << Target;
726 _worldPacket.FlushBits();
728 return &_worldPacket;
734 _worldPacket >> As<int32>(RestrictTo);
736 _worldPacket >> PartyIndex.emplace();
741 _worldPacket >> SenderGUID;
742 _worldPacket >> TargetGUID;
743 _worldPacket >> As<uint8>(
Type);
744 _worldPacket >> PinFrameID;
745 _worldPacket >> PingDuration;
749 _worldPacket >> *CreatureID;
751 if (SpellOverrideNameID)
752 _worldPacket >> *SpellOverrideNameID;
757 _worldPacket << SenderGUID;
758 _worldPacket << TargetGUID;
760 _worldPacket <<
uint32(PinFrameID);
761 _worldPacket << PingDuration;
764 _worldPacket.FlushBits();
767 _worldPacket <<
uint32(*CreatureID);
769 if (SpellOverrideNameID)
770 _worldPacket <<
uint32(*SpellOverrideNameID);
772 return &_worldPacket;
777 _worldPacket >> SenderGUID;
778 _worldPacket >> MapID;
779 _worldPacket >> Point;
780 _worldPacket >> As<int32>(
Type);
781 _worldPacket >> PinFrameID;
783 _worldPacket >> PingDuration;
788 _worldPacket << SenderGUID;
789 _worldPacket << MapID;
790 _worldPacket << Point;
792 _worldPacket <<
uint32(PinFrameID);
794 _worldPacket << PingDuration;
796 return &_worldPacket;
801 _worldPacket << SenderGUID;
802 _worldPacket << PinFrameID;
804 return &_worldPacket;
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
Trinity::IteratorPair< DBStorageIterator< AuraEffect * > > GetAuraEffects()
void WriteString(std::string const &str)
void WriteBits(uint64 value, int32 bits)
static ObjectGuid GetGUID(Object const *o)
static void FillPartyMemberPhase(WorldPackets::Party::PartyMemberPhaseStates *partyMemberPhases, PhaseShift const &phaseShift)
ChrSpecialization GetPrimarySpecialization() const
UF::UpdateField< UF::PlayerData, int32(WowCS::EntityFragment::CGObject), TYPEID_PLAYER > m_playerData
WorldSession * GetSession() const
bool HasPlayerFlag(PlayerFlags flags) const
Vehicle * GetVehicle() const
Powers GetPowerType() const
int32 GetMaxPower(Powers power) const
uint32 GetDisplayId() const
uint64 GetMaxHealth() const
int32 GetPower(Powers power) const
VisibleAuraContainer const & GetVisibleAuras() const
PhaseShift & GetPhaseShift()
WmoLocation const * GetCurrentWmo() const
std::string const & GetName() const
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
ObjectGuid GetAccountGUID() const
OptionalInitWriter< T > OptionalInit(Optional< T > const &value)
ByteBuffer & operator<<(ByteBuffer &data, Movement::MonsterSplineFilterKey const &monsterSplineFilterKey)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetPositionZ() const
uint32 ChromieTimeExpansionMask
uint32 LegacyRaidDifficultyID
uint32 DungeonDifficultyID
std::vector< float > Points
std::vector< PartyMemberAuraStates > Auras
std::vector< PartyMemberPhase > List
Optional< PartyMemberPetStats > PetStats
uint32 WmoDoodadPlacementID
std::vector< PartyMemberAuraStates > Auras
PartyMemberPhaseStates Phases
MythicPlus::DungeonScoreSummary DungeonScore