using System;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using CG.Objects;
using CG.Ship.Hull;
using Gameplay.SpacePlatforms;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;
using VoidManager;
using VoidManager.MPModChecks;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("GrappleShelfItem")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("GrappleShelfItem")]
[assembly: AssemblyTitle("Pull items out of slots using the advanced grappling hook")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.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 GrappleShelfItem
{
[HarmonyPatch(typeof(GrapplingHookProjectile), "ImpactValidTarget")]
internal class GrapplingHookProjectilePatch
{
private static void Prefix(GrapplingHookProjectile __instance, ref Transform impactedTargetTransform, Vector3 impactPoint, Vector3 normal, ref MovingSpacePlatform overridePlatform)
{
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
if (!VoidManagerPlugin.Enabled || !__instance.CanAttractCarryables || (Object)(object)overridePlatform != (Object)null)
{
return;
}
float num = float.PositiveInfinity;
CarryablesSocket val = null;
foreach (CarryablesSocket item in from socket in Object.FindObjectsOfType<CarryablesSocket>()
where (Object)(object)socket.Payload != (Object)null && socket.isOutput
select socket)
{
Vector3 val2 = ((Component)item).transform.position - impactPoint;
float magnitude = ((Vector3)(ref val2)).magnitude;
if (magnitude < num)
{
num = magnitude;
val = item;
}
}
if (!((Object)(object)val == (Object)null) && !((double)num > 0.9))
{
CarryableObject payload = val.Payload;
val.ReleaseCarryable();
__instance.AttachedToCarryable = payload;
impactedTargetTransform = ((Component)payload).transform;
if ((Object)(object)payload.SimulationPlatform != (Object)null)
{
__instance.parentPlatform.TryUnregisterProjectile((SimulatedProjectile)(object)__instance);
}
}
}
}
public class MyPluginInfo
{
public const string PLUGIN_GUID = "id107.grappleshelfitem";
public const string PLUGIN_NAME = "GrappleShelfItem";
public const string USERS_PLUGIN_NAME = "Grapple Shelf Item";
public const string PLUGIN_VERSION = "1.0.0";
public const string PLUGIN_DESCRIPTION = "Pull items out of slots using the advanced grappling hook";
public const string PLUGIN_ORIGINAL_AUTHOR = "18107";
public const string PLUGIN_AUTHORS = "18107";
public const string PLUGIN_THUNDERSTORE_ID = "";
}
[BepInPlugin("id107.grappleshelfitem", "Grapple Shelf Item", "1.0.0")]
[BepInProcess("Void Crew.exe")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class BepinPlugin : BaseUnityPlugin
{
internal static ManualLogSource Log;
private void Awake()
{
Log = ((BaseUnityPlugin)this).Logger;
Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null);
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin id107.grappleshelfitem is loaded!");
}
}
public class VoidManagerPlugin : VoidPlugin
{
public static bool Enabled { get; private set; }
public override MultiplayerType MPType => (MultiplayerType)8;
public override string Author => "18107";
public override string Description => "Pull items out of slots using the advanced grappling hook";
public override string ThunderstoreID => "";
public override SessionChangedReturn OnSessionChange(SessionChangedInput input)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
Enabled = input.IsMod_Session;
SessionChangedReturn result = default(SessionChangedReturn);
result.SetMod_Session = true;
return result;
}
}
}