From 307c81c3bd2eaf8d67d1ac38dce4414cae0cacb6 Mon Sep 17 00:00:00 2001 From: EvilFactory Date: Fri, 6 Sep 2024 18:58:08 -0300 Subject: [PATCH] Fixed lag caused by character.damageLimb --- Barotrauma/BarotraumaShared/Lua/DefaultHook.lua | 11 +---------- .../SharedSource/Characters/Character.cs | 6 ++++++ luacs-docs/lua/lua/Hooks.lua | 3 +++ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultHook.lua b/Barotrauma/BarotraumaShared/Lua/DefaultHook.lua index 821904eff..520e884ff 100644 --- a/Barotrauma/BarotraumaShared/Lua/DefaultHook.lua +++ b/Barotrauma/BarotraumaShared/Lua/DefaultHook.lua @@ -65,13 +65,4 @@ function(instance, p) p.PreventExecution = true return false end -end, Hook.HookMethodType.Before) - -Hook.Patch("Barotrauma.Character", "DamageLimb", function(instance, p) - local result = Hook.Call("character.damageLimb", instance, p["afflictions"], p["attacker"], p["hitLimb"], p["worldPosition"], p["stun"], p["attackImpulse"], p["damageMultiplier"], p["allowStacking"], p["penetration"], p["shouldImplode"], p["playSound"]) - - if result == true then - p.PreventExecution = true - return false - end -end, Hook.HookMethodType.Before) +end, Hook.HookMethodType.Before) \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs index c26522357..0910d0e73 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs @@ -4468,6 +4468,12 @@ namespace Barotrauma { if (Removed) { return new AttackResult(); } + AttackResult? retAttackResult = GameMain.LuaCs.Hook.Call("character.damageLimb", this, worldPosition, hitLimb, afflictions, stun, playSound, attackImpulse, attacker, damageMultiplier, allowStacking, penetration, shouldImplode); + if (retAttackResult != null) + { + return retAttackResult.Value; + } + //character inside the sub received damage from a monster outside the sub //can happen during normal gameplay if someone for example fires a ranged weapon from outside, //the intention of this error message is to diagnose an issue with monsters being able to damage characters from outside diff --git a/luacs-docs/lua/lua/Hooks.lua b/luacs-docs/lua/lua/Hooks.lua index 463076c83..683ec5560 100644 --- a/luacs-docs/lua/lua/Hooks.lua +++ b/luacs-docs/lua/lua/Hooks.lua @@ -185,6 +185,9 @@ function character.applyAffliction(character, limbHealth, newAffliction, allowSt -- @realm shared function character.applyDamage(characterHealth, attackResult, hitLimb, allowStacking) end +--- Gets gets called every time a limb gets damaged by an attack. +-- @realm shared +function character.damageLimb(character, worldPosition, hitLimb, afflictions, stun, playSound, attackImpulse, attacker, damageMultiplier, allowStacking, penetration, shouldImplode) end --- Gets called every time an affliction updates. -- @realm shared