diff --git a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs index e82d37dab..d65fd456b 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs @@ -123,6 +123,7 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); + UserData.RegisterType(); lua = new Script(CoreModules.Preset_SoftSandbox | CoreModules.LoadMethods); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs index ad2d820c5..25c2385ef 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs @@ -6,12 +6,13 @@ using System.Xml.Linq; using Barotrauma.Networking; using Barotrauma.Extensions; using System.Globalization; +using MoonSharp.Interpreter; namespace Barotrauma { partial class CharacterHealth { - class LimbHealth + public class LimbHealth { public Sprite IndicatorSprite; public Sprite HighlightSprite; @@ -408,19 +409,47 @@ namespace Barotrauma { if (targetLimb == null) { +#if SERVER + var should = GameMain.Lua.hook.Call("afflictionApplied", new DynValue[] { UserData.Create(this), UserData.Create(affliction) }); + + if (should != null && should.CastToBool()) + { + return; + } +#endif + //if a limb-specific affliction is applied to no specific limb, apply to all limbs foreach (LimbHealth limbHealth in limbHealths) { AddLimbAffliction(limbHealth, affliction); } + } else { +#if SERVER + var should = GameMain.Lua.hook.Call("afflictionApplied", new DynValue[] { UserData.Create(this), UserData.Create(affliction), UserData.Create(targetLimb) }); + + if (should != null && should.CastToBool()) + { + return; + } +#endif + AddLimbAffliction(targetLimb, affliction); } } else { +#if SERVER + var should = GameMain.Lua.hook.Call("afflictionApplied", new DynValue[] { UserData.Create(this), UserData.Create(affliction)}); + + if (should != null && should.CastToBool()) + { + return; + } +#endif + AddAffliction(affliction); } }