summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-10-01 20:35:59 +0300
committerAndrei Karas <akaras@inbox.ru>2014-10-01 20:35:59 +0300
commitcd8b69ef3edafde047ad4db6f7b81afb53bb23f0 (patch)
treee3249a59e7121eb85633d5e247e03130f78e6e05
parenta88beff0cb22094bd5d4558fcc6937f94480c150 (diff)
downloadmv-cd8b69ef3edafde047ad4db6f7b81afb53bb23f0.tar.gz
mv-cd8b69ef3edafde047ad4db6f7b81afb53bb23f0.tar.bz2
mv-cd8b69ef3edafde047ad4db6f7b81afb53bb23f0.tar.xz
mv-cd8b69ef3edafde047ad4db6f7b81afb53bb23f0.zip
eathena: add packet SMSG_BEING_STAT_UPDATE_1 0x01ab.
-rw-r--r--src/net/eathena/beinghandler.cpp25
-rw-r--r--src/net/eathena/beinghandler.h2
-rw-r--r--src/net/eathena/protocol.h1
3 files changed, 28 insertions, 0 deletions
diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp
index c92de3651..f96fdd332 100644
--- a/src/net/eathena/beinghandler.cpp
+++ b/src/net/eathena/beinghandler.cpp
@@ -38,6 +38,8 @@
#include "gui/windows/outfitwindow.h"
+#include "net/ea/eaprotocol.h"
+
#include "net/eathena/messageout.h"
#include "net/eathena/protocol.h"
#include "net/eathena/sprite.h"
@@ -106,6 +108,7 @@ BeingHandler::BeingHandler(const bool enableSync) :
SMSG_SKILL_AUTO_CAST,
SMSG_RANKS_LIST,
SMSG_BEING_FAKE_NAME,
+ SMSG_BEING_STAT_UPDATE_1,
0
};
handledMessages = _messages;
@@ -287,6 +290,10 @@ void BeingHandler::handleMessage(Net::MessageIn &msg)
processBeingFakeName(msg);
break;
+ case SMSG_BEING_STAT_UPDATE_1:
+ processBeingStatUpdate1(msg);
+ break;
+
default:
break;
}
@@ -1883,4 +1890,22 @@ void BeingHandler::processBeingFakeName(Net::MessageIn &msg) const
dstBeing->setDirection(dir);
}
+void BeingHandler::processBeingStatUpdate1(Net::MessageIn &msg) const
+{
+ const int id = msg.readInt32("account id");
+ const int type = msg.readInt16("type");
+ const int value = msg.readInt32("value");
+
+ Being *const dstBeing = actorManager->findBeing(id);
+ if (!dstBeing)
+ return;
+
+ if (type != Ea::MANNER)
+ {
+ logger->log("Error: unknown being stat type: %d", type);
+ return;
+ }
+ dstBeing->setManner(value);
+}
+
} // namespace EAthena
diff --git a/src/net/eathena/beinghandler.h b/src/net/eathena/beinghandler.h
index dab13a57e..6a7599c11 100644
--- a/src/net/eathena/beinghandler.h
+++ b/src/net/eathena/beinghandler.h
@@ -117,6 +117,8 @@ class BeingHandler final : public MessageHandler, public Ea::BeingHandler
void processBeingRemoveSkil(Net::MessageIn &msg) const;
void processBeingFakeName(Net::MessageIn &msg) const;
+
+ void processBeingStatUpdate1(Net::MessageIn &msg) const;
};
} // namespace EAthena
diff --git a/src/net/eathena/protocol.h b/src/net/eathena/protocol.h
index 005d1c863..ebeb16eba 100644
--- a/src/net/eathena/protocol.h
+++ b/src/net/eathena/protocol.h
@@ -114,6 +114,7 @@
#define SMSG_BEING_NAME_RESPONSE2 0x0220 /**< Has to be requested */
#define SMSG_BEING_CHANGE_DIRECTION 0x009c
#define SMSG_BEING_RESURRECT 0x0148
+#define SMSG_BEING_STAT_UPDATE_1 0x01ab
#define SMSG_PLAYER_STATUS_CHANGE 0x0229
#define SMSG_PLAYER_STATUS_CHANGE_NO_TICK 0x0196