From 4dc465aa4671e60620f7b7ba4c8450bd9f20265b Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Mon, 31 Mar 2025 12:26:47 +0200 Subject: [PATCH] Fix rubberbanding on ladders --- QuickStackToBag/Lua/Cyka/quickaccess.lua | 46 +++++++----------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/QuickStackToBag/Lua/Cyka/quickaccess.lua b/QuickStackToBag/Lua/Cyka/quickaccess.lua index f8a31e1..22b26da 100644 --- a/QuickStackToBag/Lua/Cyka/quickaccess.lua +++ b/QuickStackToBag/Lua/Cyka/quickaccess.lua @@ -2,16 +2,12 @@ local utils = require "Cyka.utils" local dump = require "Cyka.dump" -Hook.Add("Character_CanInteractWith_Item_Postfix", "YourModName.AllowRemoteInteraction", function() - return true -end) - --- Then patch the CanInteractWith method +local machines = "fabricator,deconstructor,medicalfabricator" Hook.Patch("Cyka", "Barotrauma.Character", "CanInteractWith", { "Barotrauma.Item", "System.Single&", "System.Boolean" }, function(_, ptable) - local result = Hook.Call("Character_CanInteractWith_Item_Postfix") - if result == true then + local item = ptable["item"] + if machines:find(tostring(item.Prefab.Identifier.Value)) then ptable.ReturnValue = true end end, @@ -22,6 +18,12 @@ local cachedFabricator = nil local cachedDeconstructor = nil local cachedMedicalFabricator = nil +local function select(item) + MyModGlobal.debugPrint("Selecting " .. tostring(item)) + item.Prefab.GrabWhenSelected = false + Character.Controlled.SelectedItem = item +end + ---@param prefabIdentifier string ---@param componentName string ---@return Barotrauma.Item, Barotrauma.Items.Components @@ -68,16 +70,8 @@ local function tryAccessFabricator(force) cachedFabricator = fabricator end - local me = Character.Controlled - if not me then - MyModGlobal.debugPrint("No controlled character found") - return - end - MyModGlobal.debugPrint("Selecting fabricator") - -- fabricatorComponent.Select(me) - fabricator.Prefab.GrabWhenSelected = false - me.SelectedItem = fabricator + select(fabricator) end ---@param force boolean @@ -92,16 +86,8 @@ local function tryAccessDeconstructor(force) cachedDeconstructor = deconstructor end - local me = Character.Controlled - if not me then - MyModGlobal.debugPrint("No controlled character found") - return - end - MyModGlobal.debugPrint("Selecting deconstructor") - -- deconstructorComponent.Select(me) - deconstructor.Prefab.GrabWhenSelected = false - me.SelectedItem = deconstructor + select(deconstructor) end ---@param force boolean @@ -116,16 +102,8 @@ local function tryAccessMedicalFabricator(force) cachedMedicalFabricator = medicalFabricator end - local me = Character.Controlled - if not me then - MyModGlobal.debugPrint("No controlled character found") - return - end - MyModGlobal.debugPrint("Selecting medical fabricator") - -- medicalFabricatorComponent.Select(me) - medicalFabricator.Prefab.GrabWhenSelected = false - me.SelectedItem = medicalFabricator + select(medicalFabricator) end return {