diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 43fd4343c..5ab1cc98c 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -778,10 +778,14 @@ namespace MWScript Start of tes3mp addition Send an ID_OBJECT_DELETE packet every time an object is deleted - through a script + through a script, as long as we haven't already communicated + a deletion for it */ - if (mwmp::Main::get().getLocalPlayer()->isLoggedIn()) + if (mwmp::Main::get().getLocalPlayer()->isLoggedIn() && + ptr.getRefData().getLastCommunicatedState() != MWWorld::RefData::StateCommunication::Deleted) { + ptr.getRefData().setLastCommunicatedState(MWWorld::RefData::StateCommunication::Deleted); + mwmp::ObjectList *objectList = mwmp::Main::get().getNetworking()->getObjectList(); objectList->reset(); objectList->packetOrigin = ScriptController::getPacketOriginFromContextType(runtime.getContext().getContextType()); diff --git a/apps/openmw/mwworld/refdata.hpp b/apps/openmw/mwworld/refdata.hpp index f857caf6c..b8fcf09c0 100644 --- a/apps/openmw/mwworld/refdata.hpp +++ b/apps/openmw/mwworld/refdata.hpp @@ -150,7 +150,8 @@ namespace MWWorld { None = 0, Enabled = 1, - Disabled = 2 + Disabled = 2, + Deleted = 3 }; private: