From 97686dc28720d0d6b5ce1513add0fb004ac486af Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Wed, 24 Feb 2021 21:07:07 +0100 Subject: [PATCH] Core/Packets: corrected more field sending based on sniff research and backported a logic change from pre-conversion --- .../game/Server/Packets/PartyPackets.cpp | 28 +++++++++---------- src/server/game/Server/Packets/PartyPackets.h | 2 ++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 22f4125df30..36c8c644e37 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -109,13 +109,15 @@ void WorldPackets::Party::PartyMemberState::Initialize(Player const* player) MemberStats.VehicleSeat = player->GetVehicle()->GetVehicleInfo()->SeatID[player->m_movementInfo.transport.seat]; // Auras - uint64 auraMask = 0; + MemberStats.AuraMask = player->GetAuraUpdateMaskForRaid(); + MemberStats.AuraCount = player->GetAppliedAuras().size(); for (uint8 i = 0; i < MAX_AURAS; ++i) { + if (!(MemberStats.AuraMask & (uint64(1) << i))) + continue; + if (AuraApplication const* aurApp = player->GetVisibleAura(i)) { - auraMask |= (uint64(1) << i); - WorldPackets::Party::PartyMemberAuraStates aura; aura.SpellID = aurApp->GetBase()->GetId(); aura.Flags = aurApp->GetFlags(); @@ -133,8 +135,6 @@ void WorldPackets::Party::PartyMemberState::Initialize(Player const* player) MemberStats.Auras.push_back(aura); } - - MemberStats.AuraMask = auraMask; } // Phases @@ -154,17 +154,19 @@ void WorldPackets::Party::PartyMemberState::Initialize(Player const* player) MemberStats.PetStats->CurrentHealth = pet->GetHealth(); MemberStats.PetStats->MaxHealth = pet->GetMaxHealth(); MemberStats.PetStats->PowerType = pet->GetPowerType(); - MemberStats.PetStats->CurrentPower = player->GetPower(player->GetPowerType()); - MemberStats.PetStats->MaxPower = player->GetMaxPower(player->GetPowerType()); + MemberStats.PetStats->CurrentPower = pet->GetPower(pet->GetPowerType()); + MemberStats.PetStats->MaxPower = pet->GetMaxPower(pet->GetPowerType()); // Auras - auraMask = 0; + MemberStats.PetStats->AuraMask = pet->GetAuraUpdateMaskForRaid(); + MemberStats.PetStats->AuraCount = pet->GetAppliedAuras().size(); for (uint8 i = 0; i < MAX_AURAS; ++i) { + if (!(MemberStats.PetStats->AuraMask & (uint64(1) << i))) + continue; + if (AuraApplication const* aurApp = pet->GetVisibleAura(i)) { - auraMask |= (uint64(1) << i); - WorldPackets::Party::PartyMemberAuraStates aura; aura.SpellID = aurApp->GetBase()->GetId(); aura.Flags = aurApp->GetFlags(); @@ -183,8 +185,6 @@ void WorldPackets::Party::PartyMemberState::Initialize(Player const* player) MemberStats.PetStats->Auras.push_back(aura); } } - - MemberStats.PetStats->AuraMask = auraMask; } } @@ -255,7 +255,7 @@ WorldPacket const* WorldPackets::Party::PartyMemberState::Write() { _worldPacket << uint8(_worldPacket.GetOpcode() == SMSG_PARTY_MEMBER_FULL_STATE); _worldPacket << uint64(MemberStats.AuraMask); - _worldPacket << uint32(MemberStats.Auras.size()); + _worldPacket << uint32(MemberStats.AuraCount); for (WorldPackets::Party::PartyMemberAuraStates const& aura : MemberStats.Auras) _worldPacket << aura; } @@ -292,7 +292,7 @@ WorldPacket const* WorldPackets::Party::PartyMemberState::Write() { _worldPacket << uint8(_worldPacket.GetOpcode() == SMSG_PARTY_MEMBER_FULL_STATE); _worldPacket << uint64(MemberStats.PetStats.has_value() ? MemberStats.PetStats->AuraMask : 0); - _worldPacket << uint32(MemberStats.PetStats.has_value() ? MemberStats.PetStats->Auras.size() : 0); + _worldPacket << uint32(MemberStats.PetStats.has_value() ? MemberStats.PetStats->AuraCount : 0); if (MemberStats.PetStats.has_value()) for (WorldPackets::Party::PartyMemberAuraStates const& aura : MemberStats.PetStats->Auras) diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index ba839b739de..912b5a6954f 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -52,6 +52,7 @@ namespace WorldPackets uint16 CurrentPower = 0; uint16 MaxPower = 0; uint64 AuraMask = 0; + uint32 AuraCount = 0; std::vector Auras; }; @@ -71,6 +72,7 @@ namespace WorldPackets int16 PositionZ = 0; int32 VehicleSeat = 0; uint64 AuraMask = 0; + uint32 AuraCount = 0; PartyMemberPhaseStates Phases; std::vector Auras;