diff --git a/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp b/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp index 8e801159..9eaf0211 100755 --- a/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp +++ b/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp @@ -13392,11 +13392,18 @@ void CreatureObject::setGroupMissionCriticalObjects(GroupMissionCriticalObjectSe DEBUG_FATAL(!isAuthoritative(), ("CreatureObject::setGroupMissionCriticalObjects: called on non-authoritative object %s", getDebugInformation(true).c_str())); if (isAuthoritative()) { - m_groupMissionCriticalObjectSet.clear(); //-- Anything that is not in our set, we need to add { for (GroupMissionCriticalObjectSet::const_iterator iter = groupMissionCriticalObjectSet.begin(); iter != groupMissionCriticalObjectSet.end(); ++iter) - m_groupMissionCriticalObjectSet.insert(*iter); + if (!m_groupMissionCriticalObjectSet.contains(*iter)) + m_groupMissionCriticalObjectSet.insert(*iter); + } + + //-- Anything that is not in the original set, we need to remove + { + for (GroupMissionCriticalObjectSet::const_iterator iter(m_groupMissionCriticalObjectSet.begin()); iter != m_groupMissionCriticalObjectSet.end(); ++iter) + if (groupMissionCriticalObjectSet.find(*iter) == groupMissionCriticalObjectSet.end()) + m_groupMissionCriticalObjectSet.erase(*iter); } } }