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