diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-04-02 19:34:24 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-04-02 19:34:51 +0300 |
commit | 9a3120e7c3d89c3d35d5032114b387e49d462154 (patch) | |
tree | d5e516b5f5b3e23071e10c957ee228d470d890a2 /src/net/tmwa/beingrecv.cpp | |
parent | 568c267f26da3e4b183c0190dd048102f4d933c9 (diff) | |
download | manaplus-9a3120e7c3d89c3d35d5032114b387e49d462154.tar.gz manaplus-9a3120e7c3d89c3d35d5032114b387e49d462154.tar.bz2 manaplus-9a3120e7c3d89c3d35d5032114b387e49d462154.tar.xz manaplus-9a3120e7c3d89c3d35d5032114b387e49d462154.zip |
Sort more packets. Add version checks inside packets.
Diffstat (limited to 'src/net/tmwa/beingrecv.cpp')
-rw-r--r-- | src/net/tmwa/beingrecv.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/net/tmwa/beingrecv.cpp b/src/net/tmwa/beingrecv.cpp index d02e18393..f627616f6 100644 --- a/src/net/tmwa/beingrecv.cpp +++ b/src/net/tmwa/beingrecv.cpp @@ -1364,6 +1364,34 @@ void BeingRecv::applyPlayerAction(Net::MessageIn &msg, } } +void BeingRecv::processSkillDamage(Net::MessageIn &msg) +{ + BLOCK_START("BeingRecv::processSkillDamage") + if (!actorManager) + { + BLOCK_END("BeingRecv::processSkillDamage") + return; + } + + const int id = msg.readInt16("skill id"); + Being *const srcBeing = actorManager->findBeing( + msg.readBeingId("src being id")); + Being *const dstBeing = actorManager->findBeing( + msg.readBeingId("dst being id")); + msg.readInt32("tick"); + msg.readInt32("src speed"); + msg.readInt32("dst speed"); + const int param1 = msg.readInt32("damage"); + const int level = msg.readInt16("skill level"); + msg.readInt16("div"); + msg.readUInt8("skill hit/type?"); + if (srcBeing) + srcBeing->handleSkill(dstBeing, param1, id, level); + if (dstBeing) + dstBeing->takeDamage(srcBeing, param1, AttackType::SKILL, id, level); + BLOCK_END("BeingRecv::processSkillDamage") +} + void BeingRecv::setServerGender(Being *const being, const uint8_t gender) { |