diff --git a/apps/openmw/mwclass/creature.cpp b/apps/openmw/mwclass/creature.cpp index 4c50634e07..fd89ef4a34 100644 --- a/apps/openmw/mwclass/creature.cpp +++ b/apps/openmw/mwclass/creature.cpp @@ -27,6 +27,7 @@ #include "../mwworld/containerstore.hpp" #include "../mwphysics/physicssystem.hpp" #include "../mwworld/cellstore.hpp" +#include "../mwworld/localscripts.hpp" #include "../mwrender/renderinginterface.hpp" #include "../mwrender/objects.hpp" @@ -844,7 +845,12 @@ namespace MWClass if (ptr.getCellRef().hasContentFile()) { if (ptr.getRefData().getCount() == 0) + { ptr.getRefData().setCount(1); + const std::string& script = getScript(ptr); + if(!script.empty()) + MWBase::Environment::get().getWorld()->getLocalScripts().add(script, ptr); + } MWBase::Environment::get().getWorld()->removeContainerScripts(ptr); ptr.getRefData().setCustomData(nullptr); diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index f22ac06b9d..02f06c1df9 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -1,4 +1,4 @@ -#include "npc.hpp" +#include "npc.hpp" #include @@ -37,6 +37,7 @@ #include "../mwworld/customdata.hpp" #include "../mwphysics/physicssystem.hpp" #include "../mwworld/cellstore.hpp" +#include "../mwworld/localscripts.hpp" #include "../mwrender/objects.hpp" #include "../mwrender/renderinginterface.hpp" @@ -1376,7 +1377,12 @@ namespace MWClass if (ptr.getCellRef().hasContentFile()) { if (ptr.getRefData().getCount() == 0) + { ptr.getRefData().setCount(1); + const std::string& script = getScript(ptr); + if (!script.empty()) + MWBase::Environment::get().getWorld()->getLocalScripts().add(script, ptr); + } MWBase::Environment::get().getWorld()->removeContainerScripts(ptr); ptr.getRefData().setCustomData(nullptr);