diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 | ||||
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/BattlePetPackets.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Server/Packets/BlackMarketPackets.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Server/Packets/EquipmentSetPackets.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Server/Packets/EquipmentSetPackets.h | 1 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ItemPackets.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.cpp | 30 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.h | 20 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TicketPackets.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TicketPackets.h | 5 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
13 files changed, 78 insertions, 22 deletions
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 28772041422..697b76ca157 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -838,6 +838,7 @@ struct EquipmentSetInfo uint64 Guid = 0; ///< Set Identifier uint32 SetID = 0; ///< Index uint32 IgnoreMask = 0; ///< Mask of EquipmentSlot + int32 AssignedSpecIndex = -1; ///< Index of character specialization that this set is automatically equipped for std::string SetName; std::string SetIcon; std::array<ObjectGuid, EQUIPMENT_SLOT_END> Pieces; diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 0487122011c..e06ef0f97a1 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -522,7 +522,7 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveM TC_LOG_DEBUG("network", "HandleSetActiveMoverOpcode: incorrect mover guid: mover is %s and should be %s" , packet.ActiveMover.ToString().c_str(), _player->m_unitMovedByMe->GetGUID().ToString().c_str()); } -void WorldSession::HandleMoveKnockBackAck(WorldPackets::Movement::MovementAckMessage& movementAck) +void WorldSession::HandleMoveKnockBackAck(WorldPackets::Movement::MoveKnockBackAck& movementAck) { GetPlayer()->ValidateMovementInfo(&movementAck.Ack.movementInfo); diff --git a/src/server/game/Server/Packets/BattlePetPackets.cpp b/src/server/game/Server/Packets/BattlePetPackets.cpp index 5ad974c0325..8b7141b3a22 100644 --- a/src/server/game/Server/Packets/BattlePetPackets.cpp +++ b/src/server/game/Server/Packets/BattlePetPackets.cpp @@ -115,7 +115,6 @@ void WorldPackets::BattlePet::BattlePetModifyName::Read() _worldPacket >> PetGuid; uint32 nameLength = _worldPacket.ReadBits(7); bool hasDeclinedNames = _worldPacket.ReadBit(); - Name = _worldPacket.ReadString(nameLength); if (hasDeclinedNames) { @@ -127,6 +126,8 @@ void WorldPackets::BattlePet::BattlePetModifyName::Read() for (uint8 i = 0; i < 5; ++i) Declined.name[i] = _worldPacket.ReadString(declinedNameLengths[i]); } + + Name = _worldPacket.ReadString(nameLength); } void WorldPackets::BattlePet::BattlePetDeletePet::Read() diff --git a/src/server/game/Server/Packets/BlackMarketPackets.cpp b/src/server/game/Server/Packets/BlackMarketPackets.cpp index 932bb1e960b..9f95582b4ae 100644 --- a/src/server/game/Server/Packets/BlackMarketPackets.cpp +++ b/src/server/game/Server/Packets/BlackMarketPackets.cpp @@ -114,8 +114,8 @@ void WorldPackets::BlackMarket::BlackMarketBidOnItem::Read() { _worldPacket >> Guid; _worldPacket >> MarketID; - _worldPacket >> Item; _worldPacket >> BidAmount; + _worldPacket >> Item; } WorldPacket const* WorldPackets::BlackMarket::BlackMarketBidOnItemResult::Write() diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index a026b3c71c1..6cc86a8a013 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -24,7 +24,7 @@ void WorldPackets::Chat::ChatMessage::Read() { _worldPacket >> Language; - uint32 len = _worldPacket.ReadBits(8); + uint32 len = _worldPacket.ReadBits(9); Text = _worldPacket.ReadString(len); } @@ -32,7 +32,7 @@ void WorldPackets::Chat::ChatMessageWhisper::Read() { _worldPacket >> Language; uint32 targetLen = _worldPacket.ReadBits(9); - uint32 textLen = _worldPacket.ReadBits(8); + uint32 textLen = _worldPacket.ReadBits(9); Target = _worldPacket.ReadString(targetLen); Text = _worldPacket.ReadString(textLen); } @@ -41,7 +41,7 @@ void WorldPackets::Chat::ChatMessageChannel::Read() { _worldPacket >> Language; uint32 targetLen = _worldPacket.ReadBits(9); - uint32 textLen = _worldPacket.ReadBits(8); + uint32 textLen = _worldPacket.ReadBits(9); Target = _worldPacket.ReadString(targetLen); Text = _worldPacket.ReadString(textLen); } @@ -49,7 +49,7 @@ void WorldPackets::Chat::ChatMessageChannel::Read() void WorldPackets::Chat::ChatAddonMessage::Read() { uint32 prefixLen = _worldPacket.ReadBits(5); - uint32 textLen = _worldPacket.ReadBits(8); + uint32 textLen = _worldPacket.ReadBits(9); Prefix = _worldPacket.ReadString(prefixLen); Text = _worldPacket.ReadString(textLen); } @@ -58,7 +58,7 @@ void WorldPackets::Chat::ChatAddonMessageWhisper::Read() { uint32 targetLen = _worldPacket.ReadBits(9); uint32 prefixLen = _worldPacket.ReadBits(5); - uint32 textLen = _worldPacket.ReadBits(8); + uint32 textLen = _worldPacket.ReadBits(9); Target = _worldPacket.ReadString(targetLen); Prefix = _worldPacket.ReadString(prefixLen); Text = _worldPacket.ReadString(textLen); @@ -68,7 +68,7 @@ void WorldPackets::Chat::ChatAddonMessageChannel::Read() { uint32 targetLen = _worldPacket.ReadBits(9); uint32 prefixLen = _worldPacket.ReadBits(5); - uint32 textLen = _worldPacket.ReadBits(8); + uint32 textLen = _worldPacket.ReadBits(9); Target = _worldPacket.ReadString(targetLen); Prefix = _worldPacket.ReadString(prefixLen); Text = _worldPacket.ReadString(textLen); @@ -76,19 +76,19 @@ void WorldPackets::Chat::ChatAddonMessageChannel::Read() void WorldPackets::Chat::ChatMessageDND::Read() { - uint32 len = _worldPacket.ReadBits(8); + uint32 len = _worldPacket.ReadBits(9); Text = _worldPacket.ReadString(len); } void WorldPackets::Chat::ChatMessageAFK::Read() { - uint32 len = _worldPacket.ReadBits(8); + uint32 len = _worldPacket.ReadBits(9); Text = _worldPacket.ReadString(len); } void WorldPackets::Chat::ChatMessageEmote::Read() { - uint32 len = _worldPacket.ReadBits(8); + uint32 len = _worldPacket.ReadBits(9); Text = _worldPacket.ReadString(len); } diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp index c86851b479c..2e0b7e6dc09 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp +++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp @@ -45,10 +45,14 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write() _worldPacket.append(equipSet->Enchants.data(), equipSet->Enchants.size()); + _worldPacket.WriteBit(equipSet->AssignedSpecIndex != -1); _worldPacket.WriteBits(equipSet->SetName.length(), 8); _worldPacket.WriteBits(equipSet->SetIcon.length(), 9); _worldPacket.FlushBits(); + if (equipSet->AssignedSpecIndex != -1) + _worldPacket << int32(equipSet->AssignedSpecIndex); + _worldPacket.WriteString(equipSet->SetName); _worldPacket.WriteString(equipSet->SetIcon); } @@ -72,9 +76,14 @@ void WorldPackets::EquipmentSet::SaveEquipmentSet::Read() _worldPacket >> Set.Enchants[0]; _worldPacket >> Set.Enchants[1]; + bool hasSpecIndex = _worldPacket.ReadBit(); + uint32 setNameLength = _worldPacket.ReadBits(8); uint32 setIconLength = _worldPacket.ReadBits(9); + if (hasSpecIndex) + _worldPacket >> Set.AssignedSpecIndex; + Set.SetName = _worldPacket.ReadString(setNameLength); Set.SetIcon = _worldPacket.ReadString(setIconLength); } @@ -94,6 +103,8 @@ void WorldPackets::EquipmentSet::UseEquipmentSet::Read() _worldPacket >> Items[i].ContainerSlot; _worldPacket >> Items[i].Slot; } + + _worldPacket >> GUID; } WorldPacket const* WorldPackets::EquipmentSet::UseEquipmentSetResult::Write() diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h index 31d689475fd..432b470a4fc 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.h +++ b/src/server/game/Server/Packets/EquipmentSetPackets.h @@ -83,6 +83,7 @@ namespace WorldPackets WorldPackets::Item::InvUpdate Inv; EquipmentSetItem Items[EQUIPMENT_SLOT_END]; + uint64 GUID = 0; ///< Set Identifier }; class UseEquipmentSetResult final : public ServerPacket diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index d251a26b8ba..fc16de424d7 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -39,10 +39,10 @@ void WorldPackets::Item::BuyItem::Read() { _worldPacket >> VendorGUID; _worldPacket >> ContainerGUID; - _worldPacket >> Item; _worldPacket >> Quantity; _worldPacket >> Muid; _worldPacket >> Slot; + _worldPacket >> Item; ItemType = static_cast<ItemVendorType>(_worldPacket.ReadBits(2)); } diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 5ca682148ca..e1a73d5378b 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -641,13 +641,28 @@ WorldPacket const* WorldPackets::Movement::MoveSetActiveMover::Write() return &_worldPacket; } +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveKnockBackSpeeds const& speeds) +{ + data << float(speeds.HorzSpeed); + data << float(speeds.VertSpeed); + + return data; +} + +ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Movement::MoveKnockBackSpeeds const& speeds) +{ + data >> speeds.HorzSpeed; + data >> speeds.VertSpeed; + + return data; +} + WorldPacket const* WorldPackets::Movement::MoveKnockBack::Write() { _worldPacket << MoverGUID; _worldPacket << uint32(SequenceIndex); _worldPacket << Direction; - _worldPacket << float(HorzSpeed); - _worldPacket << float(VertSpeed); + _worldPacket << Speeds; return &_worldPacket; } @@ -659,6 +674,17 @@ WorldPacket const* WorldPackets::Movement::MoveUpdateKnockBack::Write() return &_worldPacket; } +void WorldPackets::Movement::MoveKnockBackAck::Read() +{ + _worldPacket >> Ack; + bool hasSpeeds = _worldPacket.ReadBit(); + if (hasSpeeds) + { + Speeds = boost::in_place(); + _worldPacket >> *Speeds; + } +} + WorldPacket const* WorldPackets::Movement::MoveSetCollisionHeight::Write() { _worldPacket << MoverGUID; diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index a86f392c0ed..2695db47e4b 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -369,6 +369,12 @@ namespace WorldPackets ObjectGuid MoverGUID; }; + struct MoveKnockBackSpeeds + { + float HorzSpeed = 0.0f; + float VertSpeed = 0.0f; + }; + class MoveKnockBack final : public ServerPacket { public: @@ -378,9 +384,8 @@ namespace WorldPackets ObjectGuid MoverGUID; G3D::Vector2 Direction; - float HorzSpeed = 0.0f; + MoveKnockBackSpeeds Speeds; uint32 SequenceIndex = 0; - float VertSpeed = 0.0f; }; class MoveUpdateKnockBack final : public ServerPacket @@ -393,6 +398,17 @@ namespace WorldPackets MovementInfo* movementInfo = nullptr; }; + class MoveKnockBackAck final : public ClientPacket + { + public: + MoveKnockBackAck(WorldPacket&& packet) : ClientPacket(CMSG_MOVE_KNOCK_BACK_ACK, std::move(packet)) { } + + void Read() override; + + MovementAck Ack; + Optional<MoveKnockBackSpeeds> Speeds; + }; + enum UpdateCollisionHeightReason : uint8 { UPDATE_COLLISION_HEIGHT_SCALE = 0, diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 9f76498905a..9f1197b97df 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -191,8 +191,8 @@ ByteBuffer& operator>>(ByteBuffer& data, Optional<WorldPackets::Ticket::SupportT void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read() { _worldPacket >> Header; - _worldPacket >> ChatLog; _worldPacket >> TargetCharacterGUID; + _worldPacket >> ChatLog; ComplaintType = _worldPacket.ReadBits(5); uint32 noteLength = _worldPacket.ReadBits(10); diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index 73655bb756d..7d4771d2625 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -218,9 +218,8 @@ namespace WorldPackets ComplaintOffender Offender; uint32 MailID = 0; ComplaintChat Chat; - ObjectGuid EventGuid; - ObjectGuid InviteGuid; - + uint64 EventGuid; + uint64 InviteGuid; }; class ComplaintResult final : public ServerPacket diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3e61af5c8bd..ed91e8ca38e 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -453,6 +453,7 @@ namespace WorldPackets class MoveTeleportAck; class MovementAckMessage; class MovementSpeedAck; + class MoveKnockBackAck; class SetActiveMover; class MoveSetCollisionHeightAck; class MoveTimeSkipped; @@ -1184,7 +1185,7 @@ class TC_GAME_API WorldSession void HandleRepairItemOpcode(WorldPackets::Item::RepairItem& packet); // Knockback - void HandleMoveKnockBackAck(WorldPackets::Movement::MovementAckMessage& movementAck); + void HandleMoveKnockBackAck(WorldPackets::Movement::MoveKnockBackAck& movementAck); void HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck& packet); void HandleForceSpeedChangeAck(WorldPackets::Movement::MovementSpeedAck& packet); |