From 1ce5e20594dbf44d6311d217cdba3b217491fc0b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 17 Jul 2016 22:03:36 +0300 Subject: Freeze plater while casting skill. --- src/net/eathena/beingrecv.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/net/eathena/beingrecv.cpp') 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) -- cgit v1.2.3-70-g09d2