diff options
Diffstat (limited to 'src/net/eathena/beinghandler.cpp')
-rw-r--r-- | src/net/eathena/beinghandler.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp index 958cd1391..c68be6f24 100644 --- a/src/net/eathena/beinghandler.cpp +++ b/src/net/eathena/beinghandler.cpp @@ -1110,4 +1110,31 @@ void BeingHandler::processRanksList(Net::MessageIn &msg) const msg.readInt32("my points"); } +void BeingHandler::processBeingChangeDirection(Net::MessageIn &msg) const +{ + BLOCK_START("BeingHandler::processBeingChangeDirection") + if (!actorManager) + { + BLOCK_END("BeingHandler::processBeingChangeDirection") + return; + } + + Being *const dstBeing = actorManager->findBeing(msg.readInt32("being id")); + + if (!dstBeing) + { + BLOCK_END("BeingHandler::processBeingChangeDirection") + return; + } + + msg.readInt16("unused"); + + const uint8_t dir = static_cast<uint8_t>( + msg.readUInt8("direction") & 0x0FU); + dstBeing->setDirection(dir); + if (localPlayer) + localPlayer->imitateDirection(dstBeing, dir); + BLOCK_END("BeingHandler::processBeingChangeDirection") +} + } // namespace EAthena |