diff options
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandObject.cs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 6b37dad..4cea7bb 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -694,7 +694,30 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
694 | if (HasGroupAccess(avatar)) | 694 | if (HasGroupAccess(avatar)) |
695 | return false; | 695 | return false; |
696 | 696 | ||
697 | return !IsInLandAccessList(avatar); | 697 | if(IsInLandAccessList(avatar)) |
698 | return false; | ||
699 | |||
700 | // check for a NPC | ||
701 | ScenePresence sp; | ||
702 | if (!m_scene.TryGetScenePresence(avatar, out sp)) | ||
703 | return true; | ||
704 | |||
705 | if(sp==null || !sp.isNPC) | ||
706 | return true; | ||
707 | |||
708 | INPC npccli = (INPC)sp.ControllingClient; | ||
709 | if(npccli== null) | ||
710 | return true; | ||
711 | |||
712 | UUID owner = npccli.Owner; | ||
713 | |||
714 | if(owner == UUID.Zero) | ||
715 | return true; | ||
716 | |||
717 | if (owner == LandData.OwnerID) | ||
718 | return false; | ||
719 | |||
720 | return !IsInLandAccessList(owner); | ||
698 | } | 721 | } |
699 | 722 | ||
700 | public bool IsInLandAccessList(UUID avatar) | 723 | public bool IsInLandAccessList(UUID avatar) |