From b60589fa9f6af11519d90f873e2e75c3c95af527 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 25 Mar 2018 20:40:03 +0200 Subject: [PATCH] Core/Players: merged a fix for frozen emotes in specific circumstances --- src/server/game/Handlers/ChatHandler.cpp | 6 ++++-- src/server/game/Scripting/ScriptMgr.cpp | 4 ++-- src/server/game/Scripting/ScriptMgr.h | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index c0296a79118..fe6f36d7d13 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -700,8 +700,10 @@ void WorldSession::HandleEmoteOpcode(WorldPacket& recvData) uint32 emote; recvData >> emote; - sScriptMgr->OnPlayerEmote(GetPlayer(), emote); - GetPlayer()->HandleEmoteCommand(emote); + sScriptMgr->OnPlayerClearEmote(GetPlayer()); + + if (_player->GetUInt32Value(UNIT_NPC_EMOTESTATE)) + _player->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0); } namespace Trinity diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 80d4a12d4e9..60015cde352 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1904,9 +1904,9 @@ void ScriptMgr::OnPlayerChat(Player* player, uint32 type, uint32 lang, std::stri FOREACH_SCRIPT(PlayerScript)->OnChat(player, type, lang, msg, channel); } -void ScriptMgr::OnPlayerEmote(Player* player, uint32 emote) +void ScriptMgr::OnPlayerClearEmote(Player* player) { - FOREACH_SCRIPT(PlayerScript)->OnEmote(player, emote); + FOREACH_SCRIPT(PlayerScript)->OnClearEmote(player); } void ScriptMgr::OnPlayerTextEmote(Player* player, uint32 textEmote, uint32 emoteNum, ObjectGuid guid) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index a725b9bb21c..14f84473867 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -662,7 +662,7 @@ class TC_GAME_API PlayerScript : public UnitScript virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string& /*msg*/, Channel* /*channel*/) { } // Both of the below are called on emote opcodes. - virtual void OnEmote(Player* /*player*/, uint32 /*emote*/) { } + virtual void OnClearEmote(Player* /*player*/) { } virtual void OnTextEmote(Player* /*player*/, uint32 /*textEmote*/, uint32 /*emoteNum*/, ObjectGuid /*guid*/) { } @@ -998,7 +998,7 @@ class TC_GAME_API ScriptMgr void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Group* group); void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Guild* guild); void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Channel* channel); - void OnPlayerEmote(Player* player, uint32 emote); + void OnPlayerClearEmote(Player* player); void OnPlayerTextEmote(Player* player, uint32 textEmote, uint32 emoteNum, ObjectGuid guid); void OnPlayerSpellCast(Player* player, Spell* spell, bool skipCheck); void OnPlayerLogin(Player* player, bool firstLogin);