/// <summary> /// Un-link a region from an estate region. /// </summary> /// <param name="scene">Scene.</param> /// <param name="cmd">Cmd.</param> void EstateUnLinkRegionCommand(IScene scene, string [] cmd) { IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); IGridService gridService = m_registry.RequestModuleInterface <IGridService> (); string estateName = ""; string regionName = ""; // check for passed estate name estateName = (cmd.Length < 4) ? MainConsole.Instance.Prompt("Estate name", estateName) : cmd [3]; if (estateName == "") { return; } // verify that the estate does exist EstateSettings ES = estateConnector.GetEstateSettings(estateName); if (ES == null) { MainConsole.Instance.ErrorFormat("[EstateService]: The estate '{0}' does not exist!", estateName); return; } // check for passed region to link to if (scene != null) { regionName = scene.RegionInfo.RegionName; } regionName = (cmd.Length < 4) ? MainConsole.Instance.Prompt("Region to remove", regionName) : cmd [4]; if (regionName == "") { return; } // verify that the region does exist var region = gridService.GetRegionByName(null, regionName); if (region == null) { MainConsole.Instance.ErrorFormat("[EstateService]: The requested region '{0}' does not exist!", regionName); return; } regionName = region.RegionName; // verify that the region is actually part of the estate if (!estateConnector.EstateRegionExists((int)ES.EstateID, region.RegionID)) { MainConsole.Instance.ErrorFormat("[EstateService]: The requested region '{0}' is not part of the '{1}' estate!", regionName, ES.EstateName); return; } // have all details.. do it... if (!estateConnector.DelinkRegion(region.RegionID)) { MainConsole.Instance.Warn("Unlinking the region failed. Please try again."); return; } // unlink was successful.. MainConsole.Instance.InfoFormat("Region '{0}' has been removed from estate '{1}'", regionName, estateName); //We really need to attach it to another estate though... ISystemEstateService sysEstateInfo = m_registry.RequestModuleInterface <ISystemEstateService> (); ES = estateConnector.GetEstateSettings(sysEstateInfo.SystemEstateName); if (ES != null) { if (estateConnector.LinkRegion(region.RegionID, (int)ES.EstateID)) { MainConsole.Instance.WarnFormat("'{0}' has been placed in the '{1}' estate until re-assigned", regionName, sysEstateInfo.SystemEstateName); UpdateConsoleRegionEstate(regionName, ES); } } }