aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs37
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs7
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs5
3 files changed, 49 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 9742119..8ecbaba 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -1874,6 +1874,43 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1874 "dataserver", resobj, new DetectParams[0])); 1874 "dataserver", resobj, new DetectParams[0]));
1875 } 1875 }
1876 1876
1877
1878 /// <summary>
1879 /// Similar to llDie but given an object UUID
1880 /// </summary>
1881 /// <param name="objectUUID"></param>
1882
1883 public void osDie(LSL_Key objectUUID)
1884 {
1885 CheckThreatLevel(ThreatLevel.VeryHigh, "osDie");
1886 m_host.AddScriptLPS(1);
1887
1888 UUID objUUID;
1889 if (!UUID.TryParse(objectUUID, out objUUID)) // prior to patching, a thrown exception regarding invalid GUID format would be shouted instead.
1890 {
1891 OSSLShoutError("osDie() cannot delete objects with invalid UUIDs");
1892 return;
1893 }
1894
1895 DeleteObject(objUUID);
1896 }
1897
1898 private void DeleteObject(UUID objUUID)
1899 {
1900 SceneObjectGroup sceneOG = World.GetSceneObjectGroup(objUUID);
1901
1902 if (sceneOG == null) // prior to patching, PostObjectEvent() would cause a throw exception to be shouted instead.
1903 {
1904 OSSLShoutError("osDie() cannot delete " + objUUID.ToString() + ", object was not found in scene.");
1905 return;
1906 }
1907
1908 if (sceneOG.OwnerID != m_host.OwnerID)
1909 return;
1910
1911 World.DeleteSceneObject(sceneOG, false);
1912 }
1913
1877 /// <summary> 1914 /// <summary>
1878 /// Write a notecard directly to the prim's inventory. 1915 /// Write a notecard directly to the prim's inventory.
1879 /// </summary> 1916 /// </summary>
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index cf3e6df..7415fea 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -317,6 +317,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
317 void osForceBreakAllLinks(); 317 void osForceBreakAllLinks();
318 318
319 /// <summary> 319 /// <summary>
320 /// Similar to llDie but given an object UUID
321 /// </summary>
322 /// <param name="objectUUID"></param>
323
324 void osDie(LSL_Key objectUUID);
325
326 /// <summary>
320 /// Check if the given key is an npc 327 /// Check if the given key is an npc
321 /// </summary> 328 /// </summary>
322 /// <param name="npc"></param> 329 /// <param name="npc"></param>
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 2e8a76c..c34ccd0 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -577,6 +577,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
577 m_OSSL_Functions.osForceBreakAllLinks(); 577 m_OSSL_Functions.osForceBreakAllLinks();
578 } 578 }
579 579
580 public void osDie(LSL_Key objectUUID)
581 {
582 m_OSSL_Functions.osDie(objectUUID);
583 }
584
580 public LSL_Integer osIsNpc(LSL_Key npc) 585 public LSL_Integer osIsNpc(LSL_Key npc)
581 { 586 {
582 return m_OSSL_Functions.osIsNpc(npc); 587 return m_OSSL_Functions.osIsNpc(npc);