diff --git a/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp b/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp index 8e801159..123aae58 100755 --- a/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp +++ b/engine/server/library/serverGame/src/shared/object/CreatureObject.cpp @@ -13348,11 +13348,21 @@ void CreatureObject::removeMissionCriticalObject(NetworkId const & networkId) { if (isAuthoritative()) { - MissionCriticalObjectSet::const_iterator iter = m_missionCriticalObjectSet.find(networkId); - if (iter != m_missionCriticalObjectSet.end()) + m_groupMissionCriticalObjectSet.clear(); + + //-- Anything that is not in our set, we need to add { - m_missionCriticalObjectSet.erase(iter); - GroupMissionCriticalObjectsBuilder::updateGroupMissionCriticalObjects(*this, true); + for (GroupMissionCriticalObjectSet::const_iterator iter = groupMissionCriticalObjectSet.begin(); iter != groupMissionCriticalObjectSet.end(); ++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); + m_groupMissionCriticalObjectSet.insert(*iter); } } }