diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index b3ae3b23d5..6e328e51f0 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -202,7 +202,7 @@ public: for (size_t i = 0; i < numObjects; i++) { const ObjectRepositoryItem* item = &_objectRepository.GetObjects()[i]; - if (item->LoadedObject != nullptr && item->LoadedObject->GetLegacyData() != nullptr && IsObjectCustom(item)) + if (item->LoadedObject != nullptr && IsObjectCustom(item) && item->LoadedObject->GetLegacyData() != nullptr) { objects.push_back(item); } diff --git a/src/openrct2/object/ObjectRepository.cpp b/src/openrct2/object/ObjectRepository.cpp index 57c8425242..38b2eab13e 100644 --- a/src/openrct2/object/ObjectRepository.cpp +++ b/src/openrct2/object/ObjectRepository.cpp @@ -627,6 +627,14 @@ bool IsObjectCustom(const ObjectRepositoryItem* object) { Guard::ArgumentNotNull(object); + // Do not count our new object types as custom yet, otherwise the game + // will try to pack them into saved games. + auto type = object_entry_get_type(&object->ObjectEntry); + if (type > OBJECT_TYPE_SCENARIO_TEXT) + { + return false; + } + // Validate the object is not one from base game or expansion pack return !(object->ObjectEntry.flags & 0xF0); }