Decompiled source of AdjustableZeroGravityOrb v1.0.2

AdjustableZeroGravityOrb.dll

Decompiled 2 weeks ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("AdjustableZeroGravityOrb")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("HP")]
[assembly: AssemblyProduct("AdjustableZeroGravityOrb")]
[assembly: AssemblyCopyright("Copyright © HP 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("f8049082-a42b-485d-95e1-5f1a1c825b3a")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace AdjustableZeroGravityOrb;

[BepInPlugin("TechedCrayon413.AdjustableOrbRadius", "Adjustable Orb Radius", "1.0.0")]
public class AdjustableZeroGravityPlugin : BaseUnityPlugin
{
	public static ConfigEntry<float> OrbRadius;

	public static ConfigEntry<bool> Enabled;

	private static FieldInfo _orbRadiusField;

	private static FieldInfo _orbRadiusOriginalField;

	private static FieldInfo _orbRadiusMultiplierField;

	public static ConfigEntry<bool> TargetValuables;

	public static ConfigEntry<bool> TargetPlayers;

	public static ConfigEntry<bool> TargetEnemies;

	public static ConfigEntry<bool> TargetNonValuables;

	private static FieldInfo _targetValuablesField;

	private static FieldInfo _targetPlayersField;

	private static FieldInfo _targetEnemiesField;

	private static FieldInfo _targetNonValuablesField;

	private void Awake()
	{
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Expected O, but got Unknown
		((BaseUnityPlugin)this).Logger.LogMessage((object)"                                                    Hello from TechedCrayon413");
		Enabled = ((BaseUnityPlugin)this).Config.Bind<bool>("On/Off Switch", "Radius Adjuster On/Off", true, "Enable mod");
		OrbRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Orb Radius Adjuster", "Orb Radius", 4f, "Orb radius");
		TargetValuables = ((BaseUnityPlugin)this).Config.Bind<bool>("Orb Effect Options", "Orb Effect Valuables", true, "Should the orb effect valuables?");
		TargetPlayers = ((BaseUnityPlugin)this).Config.Bind<bool>("Orb Effect Options", "Orb Effect Players", true, "Should the orb effect players?");
		TargetEnemies = ((BaseUnityPlugin)this).Config.Bind<bool>("Orb Effect Options", "Orb Effect Enemies", true, "Should the orb effect enemies?");
		TargetNonValuables = ((BaseUnityPlugin)this).Config.Bind<bool>("Orb Effect Options", "Orb Effect Non-Valuables", true, "Should the orb effect non-valuables?");
		Harmony harmony = new Harmony("adjustable.orb.radius");
		PatchOrb(harmony);
		((BaseUnityPlugin)this).Logger.LogInfo((object)"Adjustable Orb Radius loaded");
	}

	private void PatchOrb(Harmony harmony)
	{
		//IL_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Expected O, but got Unknown
		try
		{
			Type type = AccessTools.TypeByName("ItemOrb");
			if (type == null)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Orb class not found: ItemOrb");
				return;
			}
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Found orb class: " + type.FullName));
			_orbRadiusField = type.GetField("orbRadius", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			_orbRadiusOriginalField = type.GetField("orbRadiusOriginal", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			_orbRadiusMultiplierField = type.GetField("orbRadiusMultiplier", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			_targetValuablesField = type.GetField("targetValuables", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			_targetPlayersField = type.GetField("targetPlayers", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			_targetEnemiesField = type.GetField("targetEnemies", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			_targetNonValuablesField = type.GetField("targetNonValuables", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			MethodInfo methodInfo = AccessTools.Method(type, "Update", (Type[])null, (Type[])null);
			if (methodInfo == null)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Update method not found on ItemOrb.");
				return;
			}
			MethodInfo method = typeof(AdjustableZeroGravityPlugin).GetMethod("UpdatePostfix", BindingFlags.Static | BindingFlags.Public);
			harmony.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(method), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}
		catch (Exception ex)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)("Patch failed: " + ex));
		}
	}

	public static void UpdatePostfix(object __instance)
	{
		try
		{
			if (Enabled.Value && __instance != null)
			{
				float value = OrbRadius.Value;
				FieldInfo orbRadiusField = _orbRadiusField;
				if (orbRadiusField != null)
				{
					orbRadiusField.SetValue(__instance, value);
				}
				FieldInfo orbRadiusOriginalField = _orbRadiusOriginalField;
				if (orbRadiusOriginalField != null)
				{
					orbRadiusOriginalField.SetValue(__instance, value);
				}
				FieldInfo orbRadiusMultiplierField = _orbRadiusMultiplierField;
				if (orbRadiusMultiplierField != null)
				{
					orbRadiusMultiplierField.SetValue(__instance, 1f);
				}
				FieldInfo targetValuablesField = _targetValuablesField;
				if (targetValuablesField != null)
				{
					targetValuablesField.SetValue(__instance, TargetValuables.Value);
				}
				FieldInfo targetPlayersField = _targetPlayersField;
				if (targetPlayersField != null)
				{
					targetPlayersField.SetValue(__instance, TargetPlayers.Value);
				}
				FieldInfo targetEnemiesField = _targetEnemiesField;
				if (targetEnemiesField != null)
				{
					targetEnemiesField.SetValue(__instance, TargetEnemies.Value);
				}
				FieldInfo targetNonValuablesField = _targetNonValuablesField;
				if (targetNonValuablesField != null)
				{
					targetNonValuablesField.SetValue(__instance, TargetNonValuables.Value);
				}
			}
		}
		catch
		{
		}
	}
}
public class Class1
{
}