diff --git a/CHANGELOG.md b/CHANGELOG.md index 84bd44bd18f..fab893258f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Bug #4127: Weapon animation looks choppy Bug #4204: Dead slaughterfish doesn't float to water surface after loading saved game Bug #4207: RestoreHealth/Fatigue spells have a huge priority even if a success chance is near 0 + Bug #4289: Script compilation fails if an NPC deleted in a content file is disabled Bug #4382: Sound output device does not change when it should Bug #4508: Can't stack enchantment buffs from different instances of the same self-cast generic magic apparel Bug #4610: Casting a Bound Weapon spell cancels the casting animation by equipping the weapon prematurely diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 72faf0afa9d..ed2ef756e6f 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -254,7 +254,26 @@ namespace MWScript public: void execute(Interpreter::Runtime& runtime) override { - MWWorld::Ptr ptr = R()(runtime); + MWWorld::Ptr ptr; + if (!R::implicit) + { + ESM::RefId name = ESM::RefId::stringRefId(runtime.getStringLiteral(runtime[0].mInteger)); + runtime.pop(); + + ptr = MWBase::Environment::get().getWorld()->searchPtr(name, false); + // We don't normally want to let this go, but some mods insist on trying this + if (ptr.isEmpty()) + { + const std::string error = "Failed to find an instance of object " + name.toDebugString(); + runtime.getContext().report(error); + Log(Debug::Error) << error; + return; + } + } + else + { + ptr = R()(runtime); + } MWBase::Environment::get().getWorld()->disable(ptr); } };