diff --git a/apps/openmw/mwworld/store.cpp b/apps/openmw/mwworld/store.cpp index ba33703668..9d6e11f141 100644 --- a/apps/openmw/mwworld/store.cpp +++ b/apps/openmw/mwworld/store.cpp @@ -404,12 +404,15 @@ namespace MWWorld land.load(esm, isDeleted); // Same area defined in multiple plugins? -> last plugin wins - auto [it, inserted] = mStatic.insert(std::move(land)); - if (!inserted) { + auto it = mStatic.lower_bound(land); + if (it != mStatic.end() && (std::tie(it->mX, it->mY) == std::tie(land.mX, land.mY))) + { auto nh = mStatic.extract(it); nh.value() = std::move(land); mStatic.insert(std::move(nh)); } + else + mStatic.insert(it, std::move(land)); return RecordId("", isDeleted); }