diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index ecc618014b..204ba39296 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -1515,6 +1515,12 @@ namespace OpenSim.Region.Environment.Scenes permissionToTake = ExternalChecks.ExternalChecksCanTakeCopyObject(((SceneObjectGroup)selectedEnt).UUID, remoteClient.AgentId); permissionToDelete = false; //Just taking copy! + } + else if (DeRezPacket.AgentBlock.Destination == 5) //God take copy + { + permissionToTake = ExternalChecks.ExternalChecksCanBeGodLike(remoteClient.AgentId); + permissionToDelete = false; //Just taking copy! + } else if (DeRezPacket.AgentBlock.Destination == 4) //Take { diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs index 5b57e73259..34e5305baf 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs @@ -733,6 +733,15 @@ namespace OpenSim.Region.Environment.Scenes TriggerScriptChangedEvent(Changed.OWNER); } + public void ApplyGodPermissions(uint perms) + { + foreach (TaskInventoryItem item in m_taskInventory.Values) + { + item.CurrentPermissions = perms; + item.BasePermissions = perms; + } + } + public bool ContainsScripts() { foreach (TaskInventoryItem item in m_taskInventory.Values) diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 91249f9093..f4ada1a553 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -3037,6 +3037,14 @@ namespace OpenSim.Region.Environment.Scenes { switch (field) { + case 1: + if (god) + { + _baseMask = ApplyMask(_baseMask, set, mask); + ApplyGodPermissions(_baseMask); + } + + break; case 2: _ownerMask = ApplyMask(_ownerMask, set, mask) & baseMask;