diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 20 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 4 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 6 |
6 files changed, 48 insertions, 14 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index eef42a23c06..ba6b064d2f3 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1177,18 +1177,20 @@ void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket& recvData) _player->GetReputationMgr().SetInactive(replistid, inactive != 0); } -void WorldSession::HandleShowingHelmOpcode(WorldPacket& recvData) +void WorldSession::HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet) { - TC_LOG_DEBUG("network", "CMSG_SHOWING_HELM for %s", _player->GetName().c_str()); - recvData.read_skip<uint8>(); // unknown, bool? - _player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); + if (packet.ShowHelm) + _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); + else + _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); } -void WorldSession::HandleShowingCloakOpcode(WorldPacket& recvData) +void WorldSession::HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet) { - TC_LOG_DEBUG("network", "CMSG_SHOWING_CLOAK for %s", _player->GetName().c_str()); - recvData.read_skip<uint8>(); // unknown, bool? - _player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); + if (packet.ShowCloak) + _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); + else + _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); } void WorldSession::HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request) diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index e5a415e6f7f..69ffb8a7502 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -416,3 +416,13 @@ WorldPacket const* WorldPackets::Character::PlayedTime::Write() return &_worldPacket; } + +void WorldPackets::Character::ShowingCloak::Read() +{ + ShowCloak = _worldPacket.ReadBit(); +} + +void WorldPackets::Character::ShowingHelm::Read() +{ + ShowHelm = _worldPacket.ReadBit(); +} diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index d281aa4b7ba..b185fc3301e 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -560,6 +560,26 @@ namespace WorldPackets int32 LevelTime = 0; bool TriggerEvent = false; }; + + class ShowingCloak final : public ClientPacket + { + public: + ShowingCloak(WorldPacket&& packet) : ClientPacket(CMSG_SHOWING_CLOAK, std::move(packet)) { } + + void Read() override; + + bool ShowCloak = false; + }; + + class ShowingHelm final : public ClientPacket + { + public: + ShowingHelm(WorldPacket&& packet) : ClientPacket(CMSG_SHOWING_HELM, std::move(packet)) { } + + void Read() override; + + bool ShowHelm = false; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 41dd7ce4115..93a37d3d628 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -785,8 +785,8 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TRADE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeItemOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_VEHICLE_REC_ID_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_WATCHED_FACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetWatchedFactionOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOWING_CLOAK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingCloakOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOWING_HELM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingHelmOpcode ); + DEFINE_HANDLER(CMSG_SHOWING_CLOAK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::ShowingCloak, &WorldSession::HandleShowingCloakOpcode); + DEFINE_HANDLER(CMSG_SHOWING_HELM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::ShowingHelm, &WorldSession::HandleShowingHelmOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOW_TRADE_SKILL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_SIGN_PETITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Petition::SignPetition, &WorldSession::HandleSignPetition); DEFINE_OPCODE_HANDLER_OLD(CMSG_SILENCE_PARTY_TALKER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index fa99fc08a10..911dea94f8c 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -693,8 +693,8 @@ enum OpcodeClient : uint32 CMSG_SET_TRADE_ITEM = 0xBADD, CMSG_SET_VEHICLE_REC_ID_ACK = 0xBADD, CMSG_SET_WATCHED_FACTION = 0x154B, - CMSG_SHOWING_CLOAK = 0xBADD, - CMSG_SHOWING_HELM = 0xBADD, + CMSG_SHOWING_CLOAK = 0x1199, + CMSG_SHOWING_HELM = 0x05A3, CMSG_SHOW_TRADE_SKILL = 0xBADD, CMSG_SIGN_PETITION = 0xBADD, CMSG_SILENCE_PARTY_TALKER = 0xBADD, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index b3103ce7b14..91dfbebcf6a 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -119,6 +119,8 @@ namespace WorldPackets class LoadingScreenNotify; class SetActionBarToggles; class PlayedTimeClient; + class ShowingCloak; + class ShowingHelm; enum class LoginFailureReason : uint8; } @@ -812,8 +814,8 @@ class WorldSession void HandleMountSpecialAnimOpcode(WorldPacket& recvdata); // character view - void HandleShowingHelmOpcode(WorldPacket& recvData); - void HandleShowingCloakOpcode(WorldPacket& recvData); + void HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet); + void HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet); // repair void HandleRepairItemOpcode(WorldPackets::Item::RepairItem& packet); |