Decompiled source of OnlyPockettedSpecialAmmo v1.1.0

UMM/Mods/OnlyPockettedSpecialAmmo/OnlyPockettedSpecialAmmo.dll

Decompiled a month ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using HarmonyLib;
using RocketLib.Collections;
using UnityEngine;
using UnityModManagerNet;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("OnlyPockettedSpecialAmmo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OnlyPockettedSpecialAmmo")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("c5c10f8b-5ece-40ed-8ef2-56472c25fb57")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace OnlyPockettedSpecialAmmo;

internal static class Main
{
	public static ModEntry mod;

	public static bool enabled;

	public static Settings settings;

	private static List<PockettedSpecialAmmoType> pockettedList = PockettedSpecial.SpecialAmmo.ToList();

	private static bool Load(ModEntry modEntry)
	{
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Expected O, but got Unknown
		modEntry.OnToggle = OnToggle;
		modEntry.OnGUI = OnGUI;
		modEntry.OnSaveGUI = OnSaveGUI;
		settings = ModSettings.Load<Settings>(modEntry);
		mod = modEntry;
		Harmony val = new Harmony(modEntry.Info.Id);
		try
		{
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			val.PatchAll(executingAssembly);
		}
		catch (Exception ex)
		{
			mod.Logger.Log("Failed to Patch Harmony !\n" + ex.ToString());
		}
		return true;
	}

	private static void OnGUI(ModEntry modEntry)
	{
		settings.infinity = GUILayout.Toggle(settings.infinity, "Infinity mode", (GUILayoutOption[])(object)new GUILayoutOption[0]);
	}

	private static bool OnToggle(ModEntry modEntry, bool value)
	{
		enabled = value;
		return true;
	}

	internal static void Log(object str)
	{
		mod.Logger.Log(str.ToString());
	}

	private static void OnSaveGUI(ModEntry modEntry)
	{
		((ModSettings)settings).Save(modEntry);
	}

	internal static PockettedSpecialAmmoType GetRandomPockettedSpecialAmmo()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		return IEnumerableExtensions.RandomElement<PockettedSpecialAmmoType>((IEnumerable<PockettedSpecialAmmoType>)pockettedList);
	}
}
public class Settings : ModSettings
{
	public bool infinity;

	public override void Save(ModEntry modEntry)
	{
		ModSettings.Save<Settings>(this, modEntry);
	}
}
[HarmonyPatch(typeof(BroBase), "Start")]
internal class SetSpecialAmmo_Patch
{
	private static void Postfix(BroBase __instance)
	{
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		if (!Main.enabled)
		{
			return;
		}
		try
		{
			((TestVanDammeAnim)__instance).SpecialAmmo = 0;
			((TestVanDammeAnim)__instance).originalSpecialAmmo = 0;
			HarmonyExtensions.SetFieldValue<int>((object)__instance, "_specialAmmo", 0);
			((TestVanDammeAnim)__instance).PickupPockettableAmmo(Main.GetRandomPockettedSpecialAmmo());
		}
		catch (Exception ex)
		{
			Main.Log("Failed to assign Pocketted special ammo !\n" + ex);
		}
	}
}
[HarmonyPatch(typeof(TestVanDammeAnim), "ResetSpecialAmmo")]
internal class AddPockettedSpecialOnAmmoCrate_Patch
{
	private static void Postfix(TestVanDammeAnim __instance)
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		if (!Main.enabled)
		{
			return;
		}
		try
		{
			if (Main.settings.infinity)
			{
				__instance.PickupPockettableAmmo(Main.GetRandomPockettedSpecialAmmo());
			}
		}
		catch (Exception ex)
		{
			Main.Log("Failed to add special ammo on reset !\n" + ex);
		}
	}
}
[HarmonyPatch(typeof(TheBrolander), "ResetSpecialAmmo")]
internal class AddPockettedSpecialOnAmmoCrateFor_TheBrolander_Patch
{
	private static void Postfix(TheBrolander __instance)
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		if (!Main.enabled)
		{
			return;
		}
		try
		{
			if (Main.settings.infinity)
			{
				((TestVanDammeAnim)__instance).PickupPockettableAmmo(Main.GetRandomPockettedSpecialAmmo());
			}
		}
		catch (Exception ex)
		{
			Main.Log("Failed to add special ammo on reset for The Brolander !\n" + ex);
		}
	}
}
[HarmonyPatch(typeof(TheBrolander), "Start")]
internal class SetSpecialAmmoFor_TheBrolander_Patch
{
	private static void Postfix(TheBrolander __instance)
	{
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		if (!Main.enabled)
		{
			return;
		}
		try
		{
			__instance.maxSpecialAmmo = 0;
			((TestVanDammeAnim)__instance).SpecialAmmo = 0;
			((TestVanDammeAnim)__instance).originalSpecialAmmo = 0;
			HarmonyExtensions.SetFieldValue<int>((object)__instance, "_specialAmmo", 0);
			((TestVanDammeAnim)__instance).PickupPockettableAmmo(Main.GetRandomPockettedSpecialAmmo());
		}
		catch (Exception ex)
		{
			Main.Log("Failed to assign Pocketted special ammo for The Brolander !\n" + ex);
		}
	}
}