From 98fd600696b01b121b2e848340fc8f2d2add2a02 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Tue, 17 Aug 2021 17:04:25 -0300 Subject: [PATCH] falldamage and invslotype --- .../BarotraumaServer/ServerSource/Lua/LuaSetup.cs | 5 +++++ .../SharedSource/Characters/Animation/Ragdoll.cs | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs index 93aa0e782..649a4cf98 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs @@ -149,6 +149,9 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); lua = new Script(CoreModules.Preset_SoftSandbox | CoreModules.LoadMethods); @@ -187,6 +190,8 @@ namespace Barotrauma lua.Globals["CreateVector3"] = (Func)CreateVector3; lua.Globals["CreateVector4"] = (Func)CreateVector4; lua.Globals["ChatMessage"] = UserData.CreateStatic(); + lua.Globals["Hull"] = UserData.CreateStatic(); + lua.Globals["InvSlotType"] = UserData.CreateStatic(); foreach (string d in Directory.GetDirectories("Mods")) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/Ragdoll.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/Ragdoll.cs index 43d9dc327..ce3ba073b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/Ragdoll.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/Ragdoll.cs @@ -11,6 +11,7 @@ using System.Xml.Linq; using Barotrauma.Extensions; using LimbParams = Barotrauma.RagdollParams.LimbParams; using JointParams = Barotrauma.RagdollParams.JointParams; +using MoonSharp.Interpreter; namespace Barotrauma { @@ -711,6 +712,16 @@ namespace Barotrauma float impactDamage = Math.Min((impact - ImpactTolerance) * ImpactDamageMultiplayer, character.MaxVitality * MaxImpactDamage); +#if SERVER + + var should = GameMain.Lua.hook.Call("changeFallDamage", new DynValue[] { DynValue.NewNumber(impactDamage), LuaSetup.CreateUserDataSafe(character), LuaSetup.CreateUserDataSafe(impactPos), LuaSetup.CreateUserDataSafe(velocity) }); + + if (should != null) + { + impactDamage = (float)should.CastToNumber(); + } +#endif + character.LastDamageSource = null; character.AddDamage(impactPos, AfflictionPrefab.ImpactDamage.Instantiate(impactDamage).ToEnumerable(), 0.0f, true); strongestImpact = Math.Max(strongestImpact, impact - ImpactTolerance);