diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e9ea0ac368..161cf4ba84 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -5271,6 +5271,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_host.ParentGroup.Damage = (float)damage; } + public LSL_Float llGetHealth(LSL_String key) + { + if (UUID.TryParse(key, out UUID agent)) + { + ScenePresence user = World.GetScenePresence(agent); + if (user is not null) + return user.Health; + } + return new LSL_Float(-1.0); + } + public void llTeleportAgentHome(string agent) { if (UUID.TryParse(agent, out UUID agentId) && agentId.IsNotZero()) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index 23b09f61aa..1e85a905f6 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs @@ -373,6 +373,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces void llSetColor(LSL_Vector color, int face); void llSetContentType(LSL_Key id, LSL_Integer type); void llSetDamage(double damage); + LSL_Float llGetHealth(LSL_String key); void llSetForce(LSL_Vector force, int local); void llSetForceAndTorque(LSL_Vector force, LSL_Vector torque, int local); void llSetVelocity(LSL_Vector vel, int local); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index e723679f05..7453c5d653 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs @@ -1940,6 +1940,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase m_LSL_Functions.llSetDamage(damage); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public LSL_Float llGetHealth(LSL_String key) + { + return m_LSL_Functions.llGetHealth(key); + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void llSetForce(LSL_Vector force, int local) {