From a9a706328732d9eb310b7c2b4937be4e9a4521d1 Mon Sep 17 00:00:00 2001 From: ZioPao Date: Tue, 30 Sep 2025 00:58:37 +0200 Subject: [PATCH] fix: override for both hands interaction for b42 and cheat prevention --- .../Controllers/LimitActionsController.lua | 6 ++++ .../client/TOC/Handlers/CachedDataHandler.lua | 30 ++++++++++++------- .../client/TOC/Handlers/ProsthesisHandler.lua | 2 +- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/common/media/lua/client/TOC/Controllers/LimitActionsController.lua b/common/media/lua/client/TOC/Controllers/LimitActionsController.lua index df1b8e2..d118140 100644 --- a/common/media/lua/client/TOC/Controllers/LimitActionsController.lua +++ b/common/media/lua/client/TOC/Controllers/LimitActionsController.lua @@ -36,6 +36,12 @@ end +-- We need to override when the player changes key binds manually to be sure that TOC changes are re-applied +local og_MainOptions_apply = MainOptions.apply +function MainOptions:apply() + og_MainOptions_apply(self) + CachedDataHandler.OverrideBothHandsFeasibility() +end diff --git a/common/media/lua/client/TOC/Handlers/CachedDataHandler.lua b/common/media/lua/client/TOC/Handlers/CachedDataHandler.lua index c8a5b0d..60998e0 100644 --- a/common/media/lua/client/TOC/Handlers/CachedDataHandler.lua +++ b/common/media/lua/client/TOC/Handlers/CachedDataHandler.lua @@ -23,7 +23,7 @@ end function CachedDataHandler.CalculateCacheableValues(username) CachedDataHandler.CalculateHighestAmputatedLimbs(username) if getPlayer():getUsername() == username then - CachedDataHandler.CalculateBothHandsFeasibility() + CachedDataHandler.OverrideBothHandsFeasibility() end end @@ -130,14 +130,13 @@ function CachedDataHandler.GetHandFeasibility(side) -- FIX horrendous workaround, but with a forced init we run the caching too early and it breaks this, setting it to nil. if CachedDataHandler.handFeasibility[side] == nil then - CachedDataHandler.CalculateBothHandsFeasibility() + CachedDataHandler.OverrideBothHandsFeasibility() end return CachedDataHandler.handFeasibility[side] end - -function CachedDataHandler.CalculateBothHandsFeasibility() +function CachedDataHandler.OverrideBothHandsFeasibility() CachedDataHandler.CalculateHandFeasibility("Hand_L") CachedDataHandler.CalculateHandFeasibility("Hand_R") local interactStr = "Interact" @@ -151,12 +150,22 @@ function CachedDataHandler.CalculateBothHandsFeasibility() if not CachedDataHandler.GetBothHandsFeasibility() then TOC_DEBUG.print("Disabling interact key") TOC_DEBUG.print("Cached current key for interact: " .. tostring(CachedDataHandler.interactKey)) - getCore():addKeyBinding(interactStr, Keyboard.KEY_NONE) - else - TOC_DEBUG.print("Re-enabling interact key") - TOC_DEBUG.print("Cached current key for interact: " .. tostring(CachedDataHandler.interactKey)) - getCore():addKeyBinding(interactStr, CachedDataHandler.interactKey) + if StaticData.COMPAT_42 then + getCore():addKeyBinding(interactStr, Keyboard.KEY_NONE, 0, false, false, false) + else + getCore():addKeyBinding(interactStr, Keyboard.KEY_NONE) + + end + else + --TOC_DEBUG.print("Re-enabling interact key") + --TOC_DEBUG.print("Cached current key for interact: " .. tostring(CachedDataHandler.interactKey)) + + if StaticData.COMPAT_42 then + getCore():addKeyBinding(interactStr, CachedDataHandler.interactKey, 0, false, false, false) + else + getCore():addKeyBinding(interactStr, CachedDataHandler.interactKey) + end end end @@ -164,4 +173,5 @@ function CachedDataHandler.GetBothHandsFeasibility() return CachedDataHandler.handFeasibility["L"] or CachedDataHandler.handFeasibility["R"] end -return CachedDataHandler \ No newline at end of file +return CachedDataHandler + diff --git a/common/media/lua/client/TOC/Handlers/ProsthesisHandler.lua b/common/media/lua/client/TOC/Handlers/ProsthesisHandler.lua index 145b764..9fecca5 100644 --- a/common/media/lua/client/TOC/Handlers/ProsthesisHandler.lua +++ b/common/media/lua/client/TOC/Handlers/ProsthesisHandler.lua @@ -86,7 +86,7 @@ function ProsthesisHandler.SearchAndSetupProsthesis(item, isEquipping) dcInst:apply() -- Calculates hands feasibility once again - CachedDataHandler.CalculateBothHandsFeasibility() + CachedDataHandler.OverrideBothHandsFeasibility() return true end