From 7c87ac80ee6962a5c4b27fa6391e23a2b5d6004b Mon Sep 17 00:00:00 2001 From: David Cernat Date: Sat, 27 May 2017 04:19:28 +0300 Subject: [PATCH] [Client] Ensure correct drawState when receiving an ActorAttack packet --- apps/openmw/mwmp/Cell.cpp | 14 ++++++++++++++ apps/openmw/mwmp/MechanicsHelper.cpp | 3 +-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwmp/Cell.cpp b/apps/openmw/mwmp/Cell.cpp index 01c86bf28..f8c93f5a8 100644 --- a/apps/openmw/mwmp/Cell.cpp +++ b/apps/openmw/mwmp/Cell.cpp @@ -251,6 +251,20 @@ void Cell::readAttack(ActorList& actorList) { DedicatedActor *actor = dedicatedActors[mapIndex]; actor->attack = baseActor.attack; + + // Set the correct drawState here if we've somehow we've missed a previous + // AnimFlags packet + if (actor->attack.type == mwmp::Attack::MELEE && actor->drawState != 1) + { + actor->drawState = 1; + actor->setAnimFlags(); + } + else if (actor->attack.type == mwmp::Attack::MAGIC && actor->drawState != 2) + { + actor->drawState = 2; + actor->setAnimFlags(); + } + mwmp::Main::get().getMechanicsHelper()->processAttack(actor->attack, actor->getPtr()); } } diff --git a/apps/openmw/mwmp/MechanicsHelper.cpp b/apps/openmw/mwmp/MechanicsHelper.cpp index 4e98d4c7e..3269d7b3d 100644 --- a/apps/openmw/mwmp/MechanicsHelper.cpp +++ b/apps/openmw/mwmp/MechanicsHelper.cpp @@ -173,9 +173,8 @@ void MechanicsHelper::processAttack(Attack attack, const MWWorld::Ptr& attacker) } } - // Get the weapon used (if hand-to-hand, weapon = inv.end()) - if (attackerStats.getDrawState() == MWMechanics::DrawState_Weapon) + if (attack.type == attack.MELEE) { MWWorld::Ptr weapon;