aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectPart.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs19
1 files changed, 14 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 80c4259..91249f9 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -3026,23 +3026,32 @@ namespace OpenSim.Region.Environment.Scenes
3026 public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF) 3026 public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF)
3027 { 3027 {
3028 bool set = addRemTF == 1; 3028 bool set = addRemTF == 1;
3029 bool god = m_parentGroup.Scene.ExternalChecks.ExternalChecksCanBeGodLike(AgentID);
3030
3031 uint baseMask = _baseMask;
3032 if (god)
3033 baseMask = 0x7ffffff0;
3029 3034
3030 // Are we the owner? 3035 // Are we the owner?
3031 if (AgentID == _ownerID) 3036 if ((AgentID == _ownerID) || god)
3032 { 3037 {
3033 switch (field) 3038 switch (field)
3034 { 3039 {
3035 case 2: 3040 case 2:
3036 _ownerMask = ApplyMask(_ownerMask, set, mask); 3041 _ownerMask = ApplyMask(_ownerMask, set, mask) &
3042 baseMask;
3037 break; 3043 break;
3038 case 4: 3044 case 4:
3039 _groupMask = ApplyMask(_groupMask, set, mask); 3045 _groupMask = ApplyMask(_groupMask, set, mask) &
3046 baseMask;
3040 break; 3047 break;
3041 case 8: 3048 case 8:
3042 _everyoneMask = ApplyMask(_everyoneMask, set, mask); 3049 _everyoneMask = ApplyMask(_everyoneMask, set, mask) &
3050 baseMask;
3043 break; 3051 break;
3044 case 16: 3052 case 16:
3045 _nextOwnerMask = ApplyMask(_nextOwnerMask, set, mask); 3053 _nextOwnerMask = ApplyMask(_nextOwnerMask, set, mask) &
3054 baseMask;
3046 break; 3055 break;
3047 } 3056 }
3048 SendFullUpdateToAllClients(); 3057 SendFullUpdateToAllClients();