using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using FishNet.Object; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SteadyCast { [BepInPlugin("welffi.howtofish.steadycast", "SteadyCast", "1.0.1")] public class Plugin : BaseUnityPlugin { public const string Guid = "welffi.howtofish.steadycast"; public const string Name = "SteadyCast"; public const string Version = "1.0.1"; internal static ManualLogSource Log; private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Log = ((BaseUnityPlugin)this).Logger; new Harmony("welffi.howtofish.steadycast").PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"SteadyCast 1.0.1 loaded - casts now start from a fixed position."); } } internal static class BaitSteadier { private static readonly FieldInfo BaitField = AccessTools.Field(typeof(FishingRod), "_bait"); private static readonly FieldInfo IsPullingBackField = AccessTools.Field(typeof(FishingRod), "_isPullingBack"); private static readonly FieldInfo CurLineLengthMultiField = AccessTools.Field(typeof(FishingRod), "_curLineLengthMulti"); internal static void SteadyBait(FishingRod rod) { //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)rod) || !(bool)IsPullingBackField.GetValue(rod)) { return; } Player holder = ((Item)rod).Holder; if (!Object.op_Implicit((Object)(object)holder) || !((NetworkBehaviour)holder).Owner.IsLocalClient || !Object.op_Implicit((Object)(object)Player.LocalPlayer) || (int)CurLineLengthMultiField.GetValue(rod) != 0) { return; } object? value = BaitField.GetValue(rod); Bait val = (Bait)((value is Bait) ? value : null); if (!Object.op_Implicit((Object)(object)val) || !((Component)val).gameObject.activeInHierarchy || Object.op_Implicit((Object)(object)val.ItemOnBait)) { return; } Transform camObject = Player.LocalPlayer.CamObject; if (Object.op_Implicit((Object)(object)camObject)) { RaycastHit val2 = default(RaycastHit); Vector3 position = (Physics.Raycast(camObject.position, camObject.forward, ref val2, 2.5f, LayerMask.op_Implicit(GameInfo.LevelLayer)) ? Vector3.Lerp(camObject.position, ((RaycastHit)(ref val2)).point, 0.9f) : (camObject.position + camObject.forward * 2f)); ((Component)val).transform.position = position; ((Component)val).transform.up = Vector3.up; Rigidbody rig = val.Rig; if (Object.op_Implicit((Object)(object)rig) && !rig.isKinematic) { rig.linearVelocity = Vector3.zero; rig.angularVelocity = Vector3.zero; } } } } [HarmonyPatch(typeof(FishingRod), "ReelOutInput")] internal static class FishingRod_ReelOutInput_SteadyCast { private static void Postfix(FishingRod __instance) { try { BaitSteadier.SteadyBait(__instance); } catch (Exception arg) { Plugin.Log.LogError((object)$"SteadyCast: SteadyBait threw - {arg}"); } } } }