summaryrefslogtreecommitdiff
path: root/src/net/eathena/beinghandler.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-05 23:06:16 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-06 01:18:58 +0300
commitc7c2c069010ca30352e25fa8e5010d556192835b (patch)
tree016d93480d2f871e7ee7bcc8e234787314330fe6 /src/net/eathena/beinghandler.cpp
parenta55eae5cf0f031fcbb5be1f2c25226115d302b79 (diff)
downloadmanaverse-c7c2c069010ca30352e25fa8e5010d556192835b.tar.gz
manaverse-c7c2c069010ca30352e25fa8e5010d556192835b.tar.bz2
manaverse-c7c2c069010ca30352e25fa8e5010d556192835b.tar.xz
manaverse-c7c2c069010ca30352e25fa8e5010d556192835b.zip
Move processBeingMove2 from ea namespace into eathena and tmwa.
Diffstat (limited to 'src/net/eathena/beinghandler.cpp')
-rw-r--r--src/net/eathena/beinghandler.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp
index e6e16e0ad..bdfeb813a 100644
--- a/src/net/eathena/beinghandler.cpp
+++ b/src/net/eathena/beinghandler.cpp
@@ -910,4 +910,44 @@ void BeingHandler::processBeingStatusChange(Net::MessageIn &msg) const
BLOCK_END("BeingHandler::processBeingStatusChange")
}
+void BeingHandler::processBeingMove2(Net::MessageIn &msg) const
+{
+ BLOCK_START("BeingHandler::processBeingMove2")
+ if (!actorManager)
+ {
+ BLOCK_END("BeingHandler::processBeingMove2")
+ return;
+ }
+
+ /*
+ * A simplified movement packet, used by the
+ * later versions of eAthena for both mobs and
+ * players
+ */
+ Being *const dstBeing = actorManager->findBeing(msg.readInt32("being id"));
+
+ /*
+ * This packet doesn't have enough info to actually
+ * create a new being, so if the being isn't found,
+ * we'll just pretend the packet didn't happen
+ */
+
+ if (!dstBeing)
+ {
+ BLOCK_END("BeingHandler::processBeingMove2")
+ return;
+ }
+
+ uint16_t srcX, srcY, dstX, dstY;
+ msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path");
+ msg.readInt32("tick");
+
+ dstBeing->setAction(BeingAction::STAND, 0);
+ dstBeing->setTileCoords(srcX, srcY);
+ dstBeing->setDestination(dstX, dstY);
+ if (dstBeing->getType() == ActorType::PLAYER)
+ dstBeing->setMoveTime();
+ BLOCK_END("BeingHandler::processBeingMove2")
+}
+
} // namespace EAthena