Fix rubberbanding on ladders

This commit is contained in:
2025-03-31 12:26:47 +02:00
parent d7ceb9a4d6
commit 4dc465aa46

View File

@@ -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 {