diff --git a/QSB/AssetBundles/network b/QSB/AssetBundles/network index 9f90caea..d2ca0924 100644 Binary files a/QSB/AssetBundles/network and b/QSB/AssetBundles/network differ diff --git a/QSB/ItemSync/Messages/MoveToCarryMessage.cs b/QSB/ItemSync/Messages/MoveToCarryMessage.cs index 5b0d6d3a..998ef981 100644 --- a/QSB/ItemSync/Messages/MoveToCarryMessage.cs +++ b/QSB/ItemSync/Messages/MoveToCarryMessage.cs @@ -1,6 +1,7 @@ using QSB.ItemSync.WorldObjects.Items; using QSB.Messaging; using QSB.Player; +using QSB.Utility; namespace QSB.ItemSync.Messages; @@ -25,6 +26,7 @@ internal class MoveToCarryMessage : QSBWorldObjectMessage ItemType.VisionTorch => player.VisionTorchSocket, _ => player.ItemSocket }; + WorldObject.PickUpItem(itemSocket); switch (itemType) @@ -53,10 +55,9 @@ internal class MoveToCarryMessage : QSBWorldObjectMessage player.AnimationSync.VisibleAnimator.SetTrigger("HoldLantern"); break; case ItemType.SlideReel: - break; case ItemType.DreamLantern: - break; case ItemType.VisionTorch: + DebugLog.ToConsole($"Warning - {itemType} has no implemented holding pose.", OWML.Common.MessageType.Warning); break; } } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 6c4141da..7314d563 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -132,15 +132,35 @@ public class PlayerInfo return _handPivot; } } - public Transform ItemSocket => HandPivot.Find("REMOTE_ItemSocket"); - public Transform ScrollSocket => HandPivot.Find("REMOTE_ScrollSocket"); - public Transform SharedStoneSocket => HandPivot.Find("REMOTE_SharedStoneSocket"); - public Transform WarpCoreSocket => HandPivot.Find("REMOTE_WarpCoreSocket"); - public Transform VesselCoreSocket => HandPivot.Find("REMOTE_VesselCoreSocket"); - public Transform SimpleLanternSocket => HandPivot.Find("REMOTE_SimpleLanternSocket"); - public Transform DreamLanternSocket => HandPivot.Find("REMOTE_DreamLanternSocket"); - public Transform SlideReelSocket => HandPivot.Find("REMOTE_SlideReelSocket"); - public Transform VisionTorchSocket => HandPivot.Find("REMOTE_VisionTorchSocket"); + public Transform ItemSocket => GetSocket("REMOTE_ItemSocket"); + public Transform ScrollSocket => GetSocket("REMOTE_ScrollSocket"); + public Transform SharedStoneSocket => GetSocket("REMOTE_SharedStoneSocket"); + public Transform WarpCoreSocket => GetSocket("REMOTE_WarpCoreSocket"); + public Transform VesselCoreSocket => GetSocket("REMOTE_VesselCoreSocket"); + public Transform SimpleLanternSocket => GetSocket("REMOTE_SimpleLanternSocket"); + public Transform DreamLanternSocket => GetSocket("REMOTE_DreamLanternSocket"); + public Transform SlideReelSocket => GetSocket("REMOTE_SlideReelSocket"); + public Transform VisionTorchSocket => GetSocket("REMOTE_VisionTorchSocket"); + + private Transform GetSocket(string name) + { + var handSocket = HandPivot.Find(name); + if (handSocket != null) + { + return handSocket; + } + + var cameraSocket = CameraBody.transform.Find("REMOTE_ItemCarryTool").Find(name); + if (cameraSocket != null) + { + DebugLog.ToConsole($"Warning - Could not find hand socket for socket name {name}, defaulting to camera socket.", MessageType.Warning); + return cameraSocket; + } + + DebugLog.ToConsole($"Error - Could not find hand socket or camera socket for socket name {name}.", MessageType.Error); + return null; + } + public QSBMarshmallow Marshmallow { get; set; } public QSBCampfire Campfire { get; set; } public IQSBItem HeldItem { get; set; }