Fix rubberbanding on ladders
This commit is contained in:
@@ -2,16 +2,12 @@
|
|||||||
local utils = require "Cyka.utils"
|
local utils = require "Cyka.utils"
|
||||||
local dump = require "Cyka.dump"
|
local dump = require "Cyka.dump"
|
||||||
|
|
||||||
Hook.Add("Character_CanInteractWith_Item_Postfix", "YourModName.AllowRemoteInteraction", function()
|
local machines = "fabricator,deconstructor,medicalfabricator"
|
||||||
return true
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Then patch the CanInteractWith method
|
|
||||||
Hook.Patch("Cyka", "Barotrauma.Character", "CanInteractWith",
|
Hook.Patch("Cyka", "Barotrauma.Character", "CanInteractWith",
|
||||||
{ "Barotrauma.Item", "System.Single&", "System.Boolean" },
|
{ "Barotrauma.Item", "System.Single&", "System.Boolean" },
|
||||||
function(_, ptable)
|
function(_, ptable)
|
||||||
local result = Hook.Call("Character_CanInteractWith_Item_Postfix")
|
local item = ptable["item"]
|
||||||
if result == true then
|
if machines:find(tostring(item.Prefab.Identifier.Value)) then
|
||||||
ptable.ReturnValue = true
|
ptable.ReturnValue = true
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
@@ -22,6 +18,12 @@ local cachedFabricator = nil
|
|||||||
local cachedDeconstructor = nil
|
local cachedDeconstructor = nil
|
||||||
local cachedMedicalFabricator = 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 prefabIdentifier string
|
||||||
---@param componentName string
|
---@param componentName string
|
||||||
---@return Barotrauma.Item, Barotrauma.Items.Components
|
---@return Barotrauma.Item, Barotrauma.Items.Components
|
||||||
@@ -68,16 +70,8 @@ local function tryAccessFabricator(force)
|
|||||||
cachedFabricator = fabricator
|
cachedFabricator = fabricator
|
||||||
end
|
end
|
||||||
|
|
||||||
local me = Character.Controlled
|
|
||||||
if not me then
|
|
||||||
MyModGlobal.debugPrint("No controlled character found")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
MyModGlobal.debugPrint("Selecting fabricator")
|
MyModGlobal.debugPrint("Selecting fabricator")
|
||||||
-- fabricatorComponent.Select(me)
|
select(fabricator)
|
||||||
fabricator.Prefab.GrabWhenSelected = false
|
|
||||||
me.SelectedItem = fabricator
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param force boolean
|
---@param force boolean
|
||||||
@@ -92,16 +86,8 @@ local function tryAccessDeconstructor(force)
|
|||||||
cachedDeconstructor = deconstructor
|
cachedDeconstructor = deconstructor
|
||||||
end
|
end
|
||||||
|
|
||||||
local me = Character.Controlled
|
|
||||||
if not me then
|
|
||||||
MyModGlobal.debugPrint("No controlled character found")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
MyModGlobal.debugPrint("Selecting deconstructor")
|
MyModGlobal.debugPrint("Selecting deconstructor")
|
||||||
-- deconstructorComponent.Select(me)
|
select(deconstructor)
|
||||||
deconstructor.Prefab.GrabWhenSelected = false
|
|
||||||
me.SelectedItem = deconstructor
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param force boolean
|
---@param force boolean
|
||||||
@@ -116,16 +102,8 @@ local function tryAccessMedicalFabricator(force)
|
|||||||
cachedMedicalFabricator = medicalFabricator
|
cachedMedicalFabricator = medicalFabricator
|
||||||
end
|
end
|
||||||
|
|
||||||
local me = Character.Controlled
|
|
||||||
if not me then
|
|
||||||
MyModGlobal.debugPrint("No controlled character found")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
MyModGlobal.debugPrint("Selecting medical fabricator")
|
MyModGlobal.debugPrint("Selecting medical fabricator")
|
||||||
-- medicalFabricatorComponent.Select(me)
|
select(medicalFabricator)
|
||||||
medicalFabricator.Prefab.GrabWhenSelected = false
|
|
||||||
me.SelectedItem = medicalFabricator
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Reference in New Issue
Block a user