diff --git a/apps/openmw/mwmp/Cell.cpp b/apps/openmw/mwmp/Cell.cpp index 9fdef9915..ddb3a0dad 100644 --- a/apps/openmw/mwmp/Cell.cpp +++ b/apps/openmw/mwmp/Cell.cpp @@ -82,8 +82,10 @@ void Cell::updateLocal(bool forceUpdate) } else { + // Forcibly update this local actor if its data has never been sent before; + // otherwise, use the current forceUpdate value if (actor->getPtr().getRefData().isEnabled()) - actor->update(forceUpdate); + actor->update(actor->hasSentData ? forceUpdate : true); ++it; } diff --git a/apps/openmw/mwmp/LocalActor.cpp b/apps/openmw/mwmp/LocalActor.cpp index 5fbc129a8..27c4f6088 100644 --- a/apps/openmw/mwmp/LocalActor.cpp +++ b/apps/openmw/mwmp/LocalActor.cpp @@ -22,6 +22,7 @@ using namespace std; LocalActor::LocalActor() { + hasSentData = false; posWasChanged = false; equipmentChanged = false; @@ -61,6 +62,8 @@ void LocalActor::update(bool forceUpdate) updateSpeech(); updateAttack(); } + + hasSentData = true; } void LocalActor::updateCell() diff --git a/apps/openmw/mwmp/LocalActor.hpp b/apps/openmw/mwmp/LocalActor.hpp index 35ba5f407..2994d4ca5 100644 --- a/apps/openmw/mwmp/LocalActor.hpp +++ b/apps/openmw/mwmp/LocalActor.hpp @@ -28,6 +28,7 @@ namespace mwmp MWWorld::Ptr getPtr(); void setPtr(const MWWorld::Ptr& newPtr); + bool hasSentData; bool wasDead; private: