aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie Thielker2010-07-20 14:45:46 +0200
committerMelanie Thielker2010-07-20 14:45:46 +0200
commitfd66ee57f3b091e6e4b6c619645595b300c94fbb (patch)
tree8f8fb6f3537e495401f3a9fa6d8a02c401c8453f /OpenSim/Region
parentRemove the null checks altogether (diff)
downloadopensim-SC-fd66ee57f3b091e6e4b6c619645595b300c94fbb.zip
opensim-SC-fd66ee57f3b091e6e4b6c619645595b300c94fbb.tar.gz
opensim-SC-fd66ee57f3b091e6e4b6c619645595b300c94fbb.tar.bz2
opensim-SC-fd66ee57f3b091e6e4b6c619645595b300c94fbb.tar.xz
When a god uses mass permission setting, the V bit is cleared from next
perms, rendering the item unmoveable for the next owenr. Make god mods conform to the rules, too.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs11
1 files changed, 7 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 989ec37..59731f7 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1383,6 +1383,9 @@ namespace OpenSim.Region.Framework.Scenes
1383 remoteClient.SendAgentAlertMessage("Item saved", false); 1383 remoteClient.SendAgentAlertMessage("Item saved", false);
1384 } 1384 }
1385 1385
1386 // Base ALWAYS has move
1387 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1388
1386 // Check if we're allowed to mess with permissions 1389 // Check if we're allowed to mess with permissions
1387 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god 1390 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god
1388 { 1391 {
@@ -1399,18 +1402,18 @@ namespace OpenSim.Region.Framework.Scenes
1399 { 1402 {
1400 // Owner can't change base, and can change other 1403 // Owner can't change base, and can change other
1401 // only up to base 1404 // only up to base
1402 // Base ALWAYS has move
1403 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1404 itemInfo.BasePermissions = currentItem.BasePermissions; 1405 itemInfo.BasePermissions = currentItem.BasePermissions;
1405 itemInfo.EveryonePermissions &= currentItem.BasePermissions; 1406 itemInfo.EveryonePermissions &= currentItem.BasePermissions;
1406 itemInfo.GroupPermissions &= currentItem.BasePermissions; 1407 itemInfo.GroupPermissions &= currentItem.BasePermissions;
1407 itemInfo.CurrentPermissions &= currentItem.BasePermissions; 1408 itemInfo.CurrentPermissions &= currentItem.BasePermissions;
1408 itemInfo.NextPermissions &= currentItem.BasePermissions; 1409 itemInfo.NextPermissions &= currentItem.BasePermissions;
1409 // Next ALWAYS has move
1410 itemInfo.NextPermissions |= (uint)PermissionMask.Move;
1411 } 1410 }
1412 1411
1413 } 1412 }
1413
1414 // Next ALWAYS has move
1415 itemInfo.NextPermissions |= (uint)PermissionMask.Move;
1416
1414 if (part.Inventory.UpdateInventoryItem(itemInfo)) 1417 if (part.Inventory.UpdateInventoryItem(itemInfo))
1415 { 1418 {
1416 part.GetProperties(remoteClient); 1419 part.GetProperties(remoteClient);