aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs19
1 files changed, 13 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index c108129..5440e6c 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -948,16 +948,23 @@ namespace OpenSim.Region.Framework.Scenes
948 pos.Y = crossedBorder.BorderLine.Z - 1; 948 pos.Y = crossedBorder.BorderLine.Z - 1;
949 } 949 }
950 950
951 //If they're TP'ing in or logging in, we haven't had time to add any known child regions yet.
952 //This has the unfortunate consequence that if somebody is TP'ing who is already a child agent,
953 //they'll bypass the landing point. But I can't think of any decent way of fixing this.
954 ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); 951 ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y);
955 if (land != null) 952 if (land != null)
956 { 953 {
957 if (KnownChildRegionHandles.Count == 0) 954 // If we come in via login, landmark or map, we want to
955 // honor landing points. If we come in via Lure, we want
956 // to ignore them.
957 if ((m_teleportFlags & (TeleportFlags.ViaLogin |
958 TeleportFlags.ViaLandmark |
959 TeleportFlags.ViaLocation)) != 0)
958 { 960 {
959 //Don't restrict gods, estate managers, or land owners to the TP point. This behaviour mimics agni. 961 // Don't restrict gods, estate managers, or land owners to
960 if (land.LandData.LandingType == (byte)1 && land.LandData.UserLocation != Vector3.Zero && UserLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid) && land.LandData.OwnerID != m_uuid) 962 // the TP point. This behaviour mimics agni.
963 if (land.LandData.LandingType == (byte)LandingType.LandingPoint &&
964 land.LandData.UserLocation != Vector3.Zero &&
965 land.LandData.OwnerID != m_uuid &&
966 (!m_scene.Permissions.IsGod(m_uuid)) &&
967 (!m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid)))
961 { 968 {
962 pos = land.LandData.UserLocation; 969 pos = land.LandData.UserLocation;
963 } 970 }