diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-07-17 22:03:36 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-07-17 22:03:36 +0300 |
commit | 1ce5e20594dbf44d6311d217cdba3b217491fc0b (patch) | |
tree | 982c0042f9d50c48c9a3bceecbbc2682922af3e6 /src/net | |
parent | eed4e612309c788565eda120fa2ad30de50ca19e (diff) | |
download | mv-1ce5e20594dbf44d6311d217cdba3b217491fc0b.tar.gz mv-1ce5e20594dbf44d6311d217cdba3b217491fc0b.tar.bz2 mv-1ce5e20594dbf44d6311d217cdba3b217491fc0b.tar.xz mv-1ce5e20594dbf44d6311d217cdba3b217491fc0b.zip |
Freeze plater while casting skill.
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/eathena/beingrecv.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/net/eathena/beingrecv.cpp b/src/net/eathena/beingrecv.cpp index 3087824d5..af5edc74d 100644 --- a/src/net/eathena/beingrecv.cpp +++ b/src/net/eathena/beingrecv.cpp @@ -30,6 +30,8 @@ #include "being/mercenaryinfo.h" +#include "const/utils/timer.h" + #include "enums/resources/notifytypes.h" #include "particle/particleengine.h" @@ -961,9 +963,9 @@ void BeingRecv::processSkillCastingContinue(Net::MessageIn &msg, UNIMPLIMENTEDPACKETFIELD(0); return; } - else if (dstId != BeingId_zero) + Being *const srcBeing = actorManager->findBeing(srcId); + if (dstId != BeingId_zero) { // being to being - Being *const srcBeing = actorManager->findBeing(srcId); Being *const dstBeing = actorManager->findBeing(dstId); if (srcBeing) srcBeing->setAction(BeingAction::CAST, skillId); @@ -972,13 +974,14 @@ void BeingRecv::processSkillCastingContinue(Net::MessageIn &msg, } else if (dstX != 0 || dstY != 0) { // being to position - Being *const srcBeing = actorManager->findBeing(srcId); if (srcBeing) srcBeing->setAction(BeingAction::CAST, skillId); skillDialog->playCastingDstTileEffect(skillId, dstX, dstY, castTime); } + if (srcBeing == localPlayer) + localPlayer->freezeMoving(castTime / MILLISECONDS_IN_A_TICK); } void BeingRecv::processBeingStatusChange(Net::MessageIn &msg) |