VisionTorchItem.DropItem

This commit is contained in:
JohnCorby 2022-03-23 21:54:43 -07:00
parent 2d64c7c079
commit d7f29af5dc

View File

@ -10,15 +10,15 @@ internal class ItemRemotePatches : QSBPatch
{ {
public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect;
#region item #region OWItem
[HarmonyReversePatch] [HarmonyReversePatch]
[HarmonyPatch(typeof(OWItem), nameof(OWItem.PickUpItem))] [HarmonyPatch(typeof(OWItem), nameof(OWItem.PickUpItem))]
private static void OWItem_PickUpItem(OWItem instance, Transform holdTranform) { } private static void base_PickUpItem(OWItem instance, Transform holdTranform) { }
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(DreamLanternItem), nameof(DreamLanternItem.PickUpItem))] [HarmonyPatch(typeof(DreamLanternItem), nameof(DreamLanternItem.PickUpItem))]
private static bool DreamLanternItem_PickUpItem(DreamLanternItem __instance, private static bool PickUpItem(DreamLanternItem __instance,
Transform holdTranform) Transform holdTranform)
{ {
if (!Remote) if (!Remote)
@ -26,7 +26,7 @@ internal class ItemRemotePatches : QSBPatch
return true; return true;
} }
OWItem_PickUpItem(__instance, holdTranform); base_PickUpItem(__instance, holdTranform);
if (__instance._lanternType == DreamLanternType.Functioning) if (__instance._lanternType == DreamLanternType.Functioning)
{ {
__instance.enabled = true; __instance.enabled = true;
@ -44,7 +44,7 @@ internal class ItemRemotePatches : QSBPatch
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(SimpleLanternItem), nameof(SimpleLanternItem.PickUpItem))] [HarmonyPatch(typeof(SimpleLanternItem), nameof(SimpleLanternItem.PickUpItem))]
private static bool SimpleLanternItem_PickUpItem(SimpleLanternItem __instance, private static bool PickUpItem(SimpleLanternItem __instance,
Transform holdTranform) Transform holdTranform)
{ {
if (!Remote) if (!Remote)
@ -59,13 +59,13 @@ internal class ItemRemotePatches : QSBPatch
__instance._lightSourceShape.radius = __instance._origLightSourceShapeRadius / holdTranform.localScale.x; __instance._lightSourceShape.radius = __instance._origLightSourceShapeRadius / holdTranform.localScale.x;
} }
OWItem_PickUpItem(__instance, holdTranform); base_PickUpItem(__instance, holdTranform);
return false; return false;
} }
[HarmonyReversePatch] [HarmonyReversePatch]
[HarmonyPatch(typeof(OWItem), nameof(OWItem.DropItem))] [HarmonyPatch(typeof(OWItem), nameof(OWItem.DropItem))]
private static void OWItem_DropItem(OWItem instance, private static void base_DropItem(OWItem instance,
Vector3 position, Vector3 position,
Vector3 normal, Vector3 normal,
Transform parent, Transform parent,
@ -74,7 +74,7 @@ internal class ItemRemotePatches : QSBPatch
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(DreamLanternItem), nameof(DreamLanternItem.DropItem))] [HarmonyPatch(typeof(DreamLanternItem), nameof(DreamLanternItem.DropItem))]
private static bool DreamLanternItem_DropItem(DreamLanternItem __instance, private static bool DropItem(DreamLanternItem __instance,
Vector3 position, Vector3 position,
Vector3 normal, Vector3 normal,
Transform parent, Transform parent,
@ -86,7 +86,7 @@ internal class ItemRemotePatches : QSBPatch
return true; return true;
} }
OWItem_DropItem(__instance, position, normal, parent, sector, customDropTarget); base_DropItem(__instance, position, normal, parent, sector, customDropTarget);
__instance.enabled = false; __instance.enabled = false;
if (__instance._lanternController != null) if (__instance._lanternController != null)
{ {
@ -98,9 +98,43 @@ internal class ItemRemotePatches : QSBPatch
return false; return false;
} }
[HarmonyPrefix]
[HarmonyPatch(typeof(VisionTorchItem), nameof(VisionTorchItem.DropItem))]
private static bool DropItem(VisionTorchItem __instance,
Vector3 position,
Vector3 normal,
Transform parent,
Sector sector,
IItemDropTarget customDropTarget)
{
if (!Remote)
{
return true;
}
base_DropItem(__instance, position, normal, parent, sector, customDropTarget);
if (__instance._visionBeam != null)
{
__instance._visionBeam.localScale = Vector3.one;
}
foreach (var renderer in __instance._worldModelRenderers)
{
renderer.SetActivation(true);
}
foreach (var renderer in __instance._viewModelRenderers)
{
renderer.SetActivation(false);
}
__instance.enabled = false;
return false;
}
[HarmonyReversePatch] [HarmonyReversePatch]
[HarmonyPatch(typeof(OWItem), nameof(OWItem.SocketItem))] [HarmonyPatch(typeof(OWItem), nameof(OWItem.SocketItem))]
private static void OWItem_SocketItem(OWItem instance, Transform socketTransform, Sector sector) { } private static void base_SocketItem(OWItem instance, Transform socketTransform, Sector sector) { }
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(DreamLanternItem), nameof(DreamLanternItem.SocketItem))] [HarmonyPatch(typeof(DreamLanternItem), nameof(DreamLanternItem.SocketItem))]
@ -127,15 +161,15 @@ internal class ItemRemotePatches : QSBPatch
#endregion #endregion
#region item socket #region OWItemSocket
[HarmonyReversePatch] [HarmonyReversePatch]
[HarmonyPatch(typeof(OWItemSocket), nameof(OWItemSocket.PlaceIntoSocket))] [HarmonyPatch(typeof(OWItemSocket), nameof(OWItemSocket.PlaceIntoSocket))]
private static bool OWItemSocket_PlaceIntoSocket(OWItemSocket instance, OWItem item) => default; private static bool base_PlaceIntoSocket(OWItemSocket instance, OWItem item) => default;
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(DreamLanternSocket), nameof(DreamLanternSocket.PlaceIntoSocket))] [HarmonyPatch(typeof(DreamLanternSocket), nameof(DreamLanternSocket.PlaceIntoSocket))]
private static bool DreamLanternSocket_PlaceIntoSocket(DreamLanternSocket __instance, ref bool __result, private static bool PlaceIntoSocket(DreamLanternSocket __instance, ref bool __result,
OWItem item) OWItem item)
{ {
if (!Remote) if (!Remote)
@ -143,7 +177,7 @@ internal class ItemRemotePatches : QSBPatch
return true; return true;
} }
if (OWItemSocket_PlaceIntoSocket(__instance, item)) if (base_PlaceIntoSocket(__instance, item))
{ {
__result = true; __result = true;
return false; return false;
@ -155,18 +189,18 @@ internal class ItemRemotePatches : QSBPatch
[HarmonyReversePatch] [HarmonyReversePatch]
[HarmonyPatch(typeof(OWItemSocket), nameof(OWItemSocket.RemoveFromSocket))] [HarmonyPatch(typeof(OWItemSocket), nameof(OWItemSocket.RemoveFromSocket))]
private static OWItem OWItemSocket_RemoveFromSocket(OWItemSocket instance) => default; private static OWItem base_RemoveFromSocket(OWItemSocket instance) => default;
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(DreamLanternSocket), nameof(DreamLanternSocket.RemoveFromSocket))] [HarmonyPatch(typeof(DreamLanternSocket), nameof(DreamLanternSocket.RemoveFromSocket))]
private static bool DreamLanternSocket_RemoveFromSocket(DreamLanternSocket __instance, ref OWItem __result) private static bool RemoveFromSocket(DreamLanternSocket __instance, ref OWItem __result)
{ {
if (!Remote) if (!Remote)
{ {
return true; return true;
} }
var owitem = OWItemSocket_RemoveFromSocket(__instance); var owitem = base_RemoveFromSocket(__instance);
if (owitem != null) { } if (owitem != null) { }
__result = owitem; __result = owitem;
@ -175,7 +209,7 @@ internal class ItemRemotePatches : QSBPatch
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(SlideReelSocket), nameof(SlideReelSocket.RemoveFromSocket))] [HarmonyPatch(typeof(SlideReelSocket), nameof(SlideReelSocket.RemoveFromSocket))]
private static bool SlideReelSocket_RemoveFromSocket(SlideReelSocket __instance, ref OWItem __result) private static bool RemoveFromSocket(SlideReelSocket __instance, ref OWItem __result)
{ {
if (!Remote) if (!Remote)
{ {
@ -185,7 +219,7 @@ internal class ItemRemotePatches : QSBPatch
var socketedItem = (SlideReelItem)__instance._socketedItem; var socketedItem = (SlideReelItem)__instance._socketedItem;
var player = QSBPlayerManager.PlayerList.First(x => x.HeldItem.AttachedObject == socketedItem); var player = QSBPlayerManager.PlayerList.First(x => x.HeldItem.AttachedObject == socketedItem);
socketedItem.SetSocketLocalDir(__instance.CalcCorrectUnsocketDir(player.Camera.transform)); socketedItem.SetSocketLocalDir(__instance.CalcCorrectUnsocketDir(player.Camera.transform));
__result = OWItemSocket_RemoveFromSocket(__instance); __result = base_RemoveFromSocket(__instance);
return false; return false;
} }