aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation
diff options
context:
space:
mode:
authorTBG Renfold2012-08-09 18:03:26 +0100
committerJustin Clark-Casey (justincc)2012-08-24 00:13:14 +0100
commit4f3fabae5bec8a71f9953ef9f4c247e086e4757f (patch)
treee274526ce8e1653175f8da04000d8b07f10507b3 /OpenSim/Region/ScriptEngine/Shared/Api/Implementation
parentIf a script state save fails for some reason on shutdown/region removal, get ... (diff)
downloadopensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.zip
opensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.tar.gz
opensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.tar.bz2
opensim-SC-4f3fabae5bec8a71f9953ef9f4c247e086e4757f.tar.xz
Adds osGetHealth.
Returns the amount of health (in an integer) that an avatar has left in the scene. If an avatar is not found or safe is enabled on a region, -1 is returned. Example usage: default { touch_end(integer _t) { key agentID = llDetectedKey(0); osCauseDamage(agentID, 50); llSay(0, llKey2Name(agentID) + " has " + (string)osGetHealth(agentID) + "% health left."); } }
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs21
1 files changed, 21 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 1e8b51b..3d233d7 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2895,6 +2895,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2895 } 2895 }
2896 }); 2896 });
2897 } 2897 }
2898
2899 public LSL_Float osGetHealth(string avatar)
2900 {
2901 CheckThreatLevel(ThreatLevel.None, "osGetHealth");
2902 m_host.AddScriptLPS(1);
2903
2904 UUID avatarId = new UUID(avatar);
2905 Vector3 pos = m_host.GetWorldPosition();
2906
2907 LSL_Float health = new LSL_Float(-1);
2908 ScenePresence presence = World.GetScenePresence(avatarId);
2909 if (presence != null)
2910 {
2911 LandData land = World.GetLandData((float)pos.X, (float)pos.Y);
2912 if ((land.Flags & (uint)ParcelFlags.AllowDamage) == (uint)ParcelFlags.AllowDamage)
2913 {
2914 health = presence.Health;
2915 }
2916 }
2917 return health;
2918 }
2898 2919
2899 public void osCauseDamage(string avatar, double damage) 2920 public void osCauseDamage(string avatar, double damage)
2900 { 2921 {