diff options
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 18 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
6 files changed, 35 insertions, 11 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index ea6792c3a5e..8a7e3235b8b 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1154,3 +1154,10 @@ void WorldSession::HandleSetAdvancedCombatLogging(WorldPackets::ClientConfig::Se { _player->SetAdvancedCombatLogging(setAdvancedCombatLogging.Enable); } + +void WorldSession::HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial& /*mountSpecial*/) +{ + WorldPackets::Misc::SpecialMountAnim specialMountAnim; + specialMountAnim.UnitGUID = _player->GetGUID(); + GetPlayer()->SendMessageToSet(specialMountAnim.Write(), false); +} diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index dad3d2f8a54..196404ac5f5 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -483,14 +483,6 @@ 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_mover->GetGUID().ToString().c_str()); } -void WorldSession::HandleMountSpecialAnimOpcode(WorldPacket& /*recvData*/) -{ - WorldPacket data(SMSG_SPECIAL_MOUNT_ANIM, 8); - data << GetPlayer()->GetGUID(); - - GetPlayer()->SendMessageToSet(&data, false); -} - void WorldSession::HandleMoveKnockBackAck(WorldPackets::Movement::MovementAckMessage& movementAck) { GetPlayer()->ValidateMovementInfo(&movementAck.Ack.movementInfo); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 142530464f3..fadc97da090 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -589,3 +589,9 @@ WorldPacket const* WorldPackets::Misc::AccountHeirloomUpdate::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Misc::SpecialMountAnim::Write() +{ + _worldPacket << UnitGUID; + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index b3c8955dba9..6d8b3f45ce6 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -760,6 +760,24 @@ namespace WorldPackets HeirloomContainer const* Heirlooms = nullptr; int32 Unk = 0; }; + + class MountSpecial final : public ClientPacket + { + public: + MountSpecial(WorldPacket&& packet) : ClientPacket(CMSG_MOUNT_SPECIAL_ANIM, std::move(packet)) { } + + void Read() override { } + }; + + class SpecialMountAnim final : public ServerPacket + { + public: + SpecialMountAnim() : ServerPacket(SMSG_SPECIAL_MOUNT_ANIM, 16) { } + + WorldPacket const* Write() override; + + ObjectGuid UnitGUID; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 35e47fa2eaa..a59fd8279d1 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -474,7 +474,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_MINIMAP_PING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::MinimapPingClient, &WorldSession::HandleMinimapPingOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateProjectilePosition ); DEFINE_HANDLER(CMSG_MOUNT_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); - DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNT_SPECIAL_ANIM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode ); + DEFINE_HANDLER(CMSG_MOUNT_SPECIAL_ANIM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::MountSpecial, &WorldSession::HandleMountSpecialAnimOpcode); DEFINE_HANDLER(CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_CHANGE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Movement::ClientPlayerMovement, &WorldSession::HandleMovementOpcodes); DEFINE_HANDLER(CMSG_MOVE_CHANGE_VEHICLE_SEATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::MoveChangeVehicleSeats, &WorldSession::HandleMoveChangeVehicleSeats); @@ -1595,7 +1595,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_TRADE_SKILL_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOR_START_EXPERIENCE_INCOMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECIAL_MOUNT_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECIAL_MOUNT_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ABSORB_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_CHANNEL_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_CHANNEL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 4a0eb3a7257..0905bc661a2 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -408,6 +408,7 @@ namespace WorldPackets class TogglePvP; class SetPvP; class WorldTeleport; + class MountSpecial; } namespace Movement @@ -1091,7 +1092,7 @@ class WorldSession void HandleInspectPVP(WorldPackets::Inspect::InspectPVPRequest& request); void HandleQueryInspectAchievements(WorldPackets::Inspect::QueryInspectAchievements& inspect); - void HandleMountSpecialAnimOpcode(WorldPacket& recvdata); + void HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial& mountSpecial); // character view void HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet); |