diff options
17 files changed, 51 insertions, 21 deletions
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index e4e67f534fe..daa0e086981 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -716,6 +716,8 @@ void WorldSession::HandleSendPingUnit(WorldPackets::Party::SendPingUnit const& p broadcastPingUnit.Type = pingUnit.Type; broadcastPingUnit.PinFrameID = pingUnit.PinFrameID; broadcastPingUnit.PingDuration = pingUnit.PingDuration; + broadcastPingUnit.CreatureID = pingUnit.CreatureID; + broadcastPingUnit.SpellOverrideNameID = pingUnit.SpellOverrideNameID; broadcastPingUnit.Write(); for (GroupReference const* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index a91a069b6fa..09bd20d0287 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -670,7 +670,6 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) price -= CalculatePct(price, priceMod); item.MuID = slot + 1; // client expects counting to start at 1 - item.Durability = itemTemplate->MaxDurability; item.ExtendedCostID = vendorItem->ExtendedCost; item.Type = vendorItem->Type; item.Quantity = leftInStock; diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index 3ede64d39c0..b20637824f3 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -628,18 +628,22 @@ WorldPacket const* AuctionListBucketsResult::Write() WorldPacket const* AuctionListItemsResult::Write() { - _worldPacket << uint32(Items.size()); - _worldPacket << uint32(Unknown830); - _worldPacket << uint32(TotalCount); - _worldPacket << uint32(DesiredDelay); - _worldPacket.WriteBits(AsUnderlyingType(ListType), 2); - _worldPacket.WriteBit(HasMoreResults); - _worldPacket.FlushBits(); + { + _worldPacket << uint32(Items.size()); + _worldPacket << uint32(Unknown830); + _worldPacket << uint32(DesiredDelay); + for (AuctionItem const& item : Items) + _worldPacket << item; + } - _worldPacket << BucketKey; + { + _worldPacket.WriteBits(AsUnderlyingType(ListType), 2); + _worldPacket.WriteBit(HasMoreResults); + _worldPacket.FlushBits(); - for (AuctionItem const& item : Items) - _worldPacket << item; + _worldPacket << BucketKey; + _worldPacket << uint32(TotalCount); + } return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index 23508d9e591..22024120928 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -114,7 +114,7 @@ WorldPacket const* WorldPackets::Channel::UserlistUpdate::Write() _worldPacket << UpdatedUserGUID; _worldPacket << uint8(UserFlags); _worldPacket << uint32(_ChannelFlags); - _worldPacket << uint32(ChannelID); + _worldPacket << int32(ChannelID); _worldPacket.WriteBits(ChannelName.length(), 7); _worldPacket.FlushBits(); _worldPacket.WriteString(ChannelName); diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 3be80ecc4ce..d417f50fa06 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -160,6 +160,8 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogDat data << int32(spellCastLogData.AttackPower); data << int32(spellCastLogData.SpellPower); data << int32(spellCastLogData.Armor); + data << int32(spellCastLogData.Unknown_1105_1); + data << int32(spellCastLogData.Unknown_1105_2); data << BitsSize<9>(spellCastLogData.PowerData); data.FlushBits(); diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index feda3b7afda..62a35edd112 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -43,6 +43,8 @@ namespace WorldPackets int32 AttackPower = 0; int32 SpellPower = 0; int32 Armor = 0; + int32 Unknown_1105_1 = 0; + int32 Unknown_1105_2 = 0; std::vector<SpellLogPowerData> PowerData; void Initialize(Unit const* unit); diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 5dccbe3e1c9..01d6205ae33 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -48,7 +48,7 @@ WorldPacket const* WorldPackets::Item::BuyFailed::Write() { _worldPacket << VendorGUID; _worldPacket << uint32(Muid); - _worldPacket << uint8(Reason); + _worldPacket << int32(Reason); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 25272638ee8..578ac6c4a5f 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -1050,7 +1050,7 @@ WorldPacket const* WorldPackets::Movement::ResumeToken::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompoundState::MoveStateChange const& stateChange) { - data << uint16(stateChange.MessageID); + data << uint32(stateChange.MessageID); data << uint32(stateChange.SequenceIndex); data.WriteBit(stateChange.Speed.has_value()); data.WriteBit(stateChange.SpeedRange.has_value()); diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 48c5c2aab38..4c5a44d361c 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -717,7 +717,7 @@ namespace WorldPackets { MoveStateChange(OpcodeServer messageId, uint32 sequenceIndex) : MessageID(messageId), SequenceIndex(sequenceIndex) { } - uint16 MessageID = 0; + uint32 MessageID = 0; uint32 SequenceIndex = 0; Optional<float> Speed; Optional<MoveSetCompoundState::SpeedRange> SpeedRange; diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 0608a51dbcd..fe1632b74fe 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -141,7 +141,6 @@ ByteBuffer& operator<<(ByteBuffer& data, VendorItem const& item) data << uint64(item.Price); data << uint32(item.MuID); data << int32(item.Type); - data << int32(item.Durability); data << int32(item.StackCount); data << int32(item.Quantity); data << int32(item.ExtendedCostID); @@ -159,7 +158,7 @@ ByteBuffer& operator<<(ByteBuffer& data, VendorItem const& item) WorldPacket const* VendorInventory::Write() { _worldPacket << Vendor; - _worldPacket << uint8(Reason); + _worldPacket << int32(Reason); _worldPacket << uint32(Items.size()); for (VendorItem const& item : Items) _worldPacket << item; diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index 895f44f69eb..2a9eb75a198 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -168,7 +168,6 @@ namespace WorldPackets WorldPackets::Item::ItemInstance Item; int32 Quantity = -1; uint64 Price = 0; - int32 Durability = 0; int32 StackCount = 0; int32 ExtendedCostID = 0; int32 PlayerConditionFailed = 0; @@ -184,7 +183,7 @@ namespace WorldPackets WorldPacket const* Write() override; - uint8 Reason = 0; + int32 Reason = 0; std::vector<VendorItem> Items; ObjectGuid Vendor; }; diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index e8ca4e85ab6..088de54e026 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -750,6 +750,13 @@ void WorldPackets::Party::SendPingUnit::Read() _worldPacket >> As<uint8>(Type); _worldPacket >> PinFrameID; _worldPacket >> PingDuration; + _worldPacket >> OptionalInit(CreatureID); + _worldPacket >> OptionalInit(SpellOverrideNameID); + if (CreatureID) + _worldPacket >> *CreatureID; + + if (SpellOverrideNameID) + _worldPacket >> *SpellOverrideNameID; } WorldPacket const* WorldPackets::Party::ReceivePingUnit::Write() @@ -759,6 +766,15 @@ WorldPacket const* WorldPackets::Party::ReceivePingUnit::Write() _worldPacket << uint8(Type); _worldPacket << uint32(PinFrameID); _worldPacket << PingDuration; + _worldPacket << OptionalInit(CreatureID); + _worldPacket << OptionalInit(SpellOverrideNameID); + _worldPacket.FlushBits(); + + if (CreatureID) + _worldPacket << uint32(*CreatureID); + + if (SpellOverrideNameID) + _worldPacket << uint32(*SpellOverrideNameID); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index fb9663e0fd1..7bf510c1089 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -692,6 +692,8 @@ namespace WorldPackets PingSubjectType Type = PingSubjectType::Max; uint32 PinFrameID = 0; Duration<Milliseconds, int32> PingDuration; + Optional<uint32> CreatureID; + Optional<uint32> SpellOverrideNameID; }; class ReceivePingUnit final : public ServerPacket @@ -706,6 +708,8 @@ namespace WorldPackets PingSubjectType Type = PingSubjectType::Max; uint32 PinFrameID = 0; Duration<Milliseconds, int32> PingDuration; + Optional<uint32> CreatureID; + Optional<uint32> SpellOverrideNameID; }; class SendPingWorldPoint final : public ClientPacket diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp index 32d0d781c94..e5b53bc3670 100644 --- a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp @@ -30,7 +30,8 @@ ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem) data << int32(perksVendorItem.Field_18); data << int32(perksVendorItem.Price); data << perksVendorItem.AvailableUntil; - data.WriteBit(perksVendorItem.Disabled); + data << Bits<1>(perksVendorItem.Disabled); + data << Bits<1>(perksVendorItem.Field_41); data.FlushBits(); return data; diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.h b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h index 7b153218e8b..cd676002bdb 100644 --- a/src/server/game/Server/Packets/PerksProgramPacketsCommon.h +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h @@ -34,6 +34,7 @@ struct PerksVendorItem int32 Price = 0; Timestamp<> AvailableUntil; bool Disabled = false; + bool Field_41 = false; }; ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem); diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index c5efa757a5a..40256e7af16 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -1051,7 +1051,7 @@ namespace WorldPackets ObjectGuid Guid; ObjectGuid CastID; - uint16 MoveMsgID = 0; + uint32 MoveMsgID = 0; int32 SpellID = 0; float Pitch = 0.0f; float Speed = 0.0f; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index c788d15b002..177e3f0fbbb 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1333,6 +1333,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEFENSE_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DELETE_CHAR, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DELETE_EXPIRED_MISSIONS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTROY_ARENA_UNIT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DIFFERENT_INSTANCE_FROM_PARTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |