Decompiled source of More Scarabs v1.4.0

BepInEx/plugins/com.binbin.morescarabs.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BattleMatch;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using Cards;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using MoreScarabs;
using Obeliskial_Essentials;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("com.binbin.morescarabs")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.4.0.0")]
[assembly: AssemblyInformationalVersion("1.4.0+07621f805475aa98570a068863a638b427860e4f")]
[assembly: AssemblyProduct("More Scarabs")]
[assembly: AssemblyTitle("com.binbin.morescarabs")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.4.0.0")]
[module: UnverifiableCode]
[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;
		}
	}
}
public static class EssentialsCompatibility
{
	private static bool? _enabled;

	public static bool Enabled
	{
		get
		{
			bool valueOrDefault = _enabled == true;
			if (!_enabled.HasValue)
			{
				valueOrDefault = Chainloader.PluginInfos.ContainsKey("com.stiffmeds.obeliskialessentials");
				_enabled = valueOrDefault;
			}
			return _enabled.Value;
		}
	}

	[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
	public static void EssentialsRegister()
	{
		Essentials.RegisterMod(Plugin.PluginName, "binbin", "More Scarabs", Plugin.PluginVersion, Plugin.ModDate, "https://github.com/binbinmods/MoreScarabs", (string[])null, "", 100, (string[])null, "", true);
		Plugin.LogInfo(Plugin.PluginGUID + " " + Plugin.PluginVersion + " has loaded with Essentials!");
	}
}
namespace MoreScarabs
{
	[HarmonyPatch]
	public class MoreScarabPatches
	{
		public static int i = 1;

		[HarmonyPrefix]
		[HarmonyPatch(typeof(Scarab), "NextturnContinue")]
		public static void NextTurnContinuePrefix(MatchManager __instance)
		{
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Expected I4, but got Unknown
			//IL_0362: Unknown result type (might be due to invalid IL or missing references)
			//IL_0368: Invalid comparison between Unknown and I4
			//IL_0340: Unknown result type (might be due to invalid IL or missing references)
			//IL_0346: Invalid comparison between Unknown and I4
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: Invalid comparison between Unknown and I4
			//IL_0349: Unknown result type (might be due to invalid IL or missing references)
			//IL_034f: Invalid comparison between Unknown and I4
			//IL_0468: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_053d: Unknown result type (might be due to invalid IL or missing references)
			//IL_051a: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0688: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_0663: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0606: Unknown result type (might be due to invalid IL or missing references)
			//IL_059f: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c0: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)__instance == (Object)null || __instance.MatchIsOver || Traverse.Create((object)__instance).Field("gameStatus").GetValue<string>() == "EndTurn")
			{
				return;
			}
			string value = Traverse.Create((object)__instance).Field("scarabSpawned").GetValue<string>();
			CombatData value2 = Traverse.Create((object)__instance).Field("combatData").GetValue<CombatData>();
			int value3 = Traverse.Create((object)__instance).Field("currentRound").GetValue<int>();
			NPC[] value4 = Traverse.Create((object)__instance).Field("TeamNPC").GetValue<NPC[]>();
			if (value3 == 0 || value != "" || (Object)(object)value2 == (Object)null || (Object)(object)Globals.Instance.GetNodeData(AtOManager.Instance.currentMapNode) == (Object)null)
			{
				if ((Object)(object)value2 == (Object)null)
				{
					Plugin.LogDebug("null combat", "NextTurnContinuePrefix");
				}
				if ((Object)(object)Globals.Instance.GetNodeData(AtOManager.Instance.currentMapNode) == (Object)null)
				{
					Plugin.LogDebug("null mapNode", "NextTurnContinuePrefix");
				}
				return;
			}
			bool value5 = Plugin.GuaranteedSpawn.Value;
			bool value6 = Plugin.OnlySpawnJades.Value;
			int value7 = Plugin.PercentChanceToSpawn.Value;
			int num = (value5 ? 101 : value7);
			int num2 = (value6 ? 2 : MatchManager.Instance.Random.GetRandomIntRange(0, 4, "default", ""));
			value = num2 switch
			{
				0 => "crystalscarab", 
				1 => "goldenscarab", 
				2 => "jadescarab", 
				_ => "scourgescarab", 
			};
			bool flag = false;
			CombatTier nodeCombatTier = Globals.Instance.GetNodeData(AtOManager.Instance.currentMapNode).NodeCombatTier;
			CombatTier val = nodeCombatTier;
			switch (val - 2)
			{
			case 0:
				if (GameManager.Instance.IsObeliskChallenge())
				{
					flag = true;
				}
				break;
			case 1:
				flag = true;
				break;
			case 2:
				flag = true;
				break;
			case 3:
				flag = true;
				break;
			case 4:
				if (GameManager.Instance.IsObeliskChallenge())
				{
					flag = true;
				}
				break;
			case 5:
				if (GameManager.Instance.IsObeliskChallenge())
				{
					flag = true;
				}
				break;
			}
			Plugin.LogDebug("Is it a valid combat to summon a scarab: " + flag, "NextTurnContinuePrefix");
			if (!flag)
			{
				return;
			}
			int nPCAvailablePosition = MatchManager.Instance.TeamManager.GetNPCAvailablePosition(1);
			if (nPCAvailablePosition <= -1)
			{
				return;
			}
			int randomIntRange = MatchManager.Instance.Random.GetRandomIntRange(0, 100, "default", "");
			if (randomIntRange >= num)
			{
				return;
			}
			string text = "";
			if (!GameManager.Instance.IsObeliskChallenge())
			{
				if (AtOManager.Instance.GetTownTier() == 2)
				{
					text = ((AtOManager.Instance.GetNgPlus(false) <= 0) ? "_b" : "_plus_b");
				}
				else if (AtOManager.Instance.GetNgPlus(false) > 0)
				{
					text = "_plus";
				}
			}
			else if (AtOManager.Instance.GetObeliskMadness() > 8)
			{
				text = (((int)value2.CombatTier == 6 || (int)value2.CombatTier == 7) ? "_plus_b" : "_plus");
			}
			else if ((int)value2.CombatTier == 6 || (int)value2.CombatTier == 7)
			{
				text = "_b";
			}
			NPCData nPC = Globals.Instance.GetNPC(value + text);
			if ((Object)(object)nPC == (Object)null)
			{
				Plugin.LogDebug("scarabData Null for scarab => " + value + text, "NextTurnContinuePrefix");
				return;
			}
			Plugin.LogDebug("scarabData found for scarab => " + value + text + " spawning scarab", "NextTurnContinuePrefix");
			MatchManager.Instance.TeamManager.CreateNPC(nPC, "", nPCAvailablePosition, false, "", (CardRealtimeData)null, "", 0f, false, false);
			Globals.Instance.WaitForSeconds(0.5f);
			if (num2 != 3)
			{
				((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("luckyscarab"), 1, false, (CardClass)11, true, true);
			}
			((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("sight"), 3, false, (CardClass)11, true, true);
			switch (num2)
			{
			case 1:
				if (AtOManager.Instance.GetNgPlus(false) == 0)
				{
					if (AtOManager.Instance.GetTownTier() == 1)
					{
						((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 5, false, (CardClass)11, true, true);
					}
					else
					{
						((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 7, false, (CardClass)11, true, true);
					}
				}
				else if (AtOManager.Instance.GetTownTier() == 1)
				{
					((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 6, false, (CardClass)11, true, true);
				}
				else
				{
					((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("zeal"), 7, false, (CardClass)11, true, true);
				}
				break;
			case 2:
				if (AtOManager.Instance.GetNgPlus(false) == 0)
				{
					if (AtOManager.Instance.GetTownTier() == 1)
					{
						((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 5, false, (CardClass)11, true, true);
						((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 5, false, (CardClass)11, true, true);
					}
					else
					{
						((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 7, false, (CardClass)11, true, true);
						((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 7, false, (CardClass)11, true, true);
					}
				}
				else if (AtOManager.Instance.GetTownTier() == 1)
				{
					((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 6, false, (CardClass)11, true, true);
					((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 6, false, (CardClass)11, true, true);
				}
				else
				{
					((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("evasion"), 7, false, (CardClass)11, true, true);
					((Character)value4[nPCAvailablePosition]).SetAuraCurse((Character)null, Globals.Instance.GetAuraCurseData("buffer"), 7, false, (CardClass)11, true, true);
				}
				break;
			}
			GameManager.Instance.PlayLibraryAudio("glitter", 0.25f);
			Globals.Instance.WaitForSeconds(0.5f);
			Plugin.LogDebug("Attempting to set traverses for scarab spawn", "NextTurnContinuePrefix");
			Traverse.Create((object)__instance).Field("scarabSpawned").SetValue((object)value);
			Traverse.Create((object)__instance).Field("combatData").SetValue((object)value2);
			Traverse.Create((object)__instance).Field("teamNPC").SetValue((object)value4);
		}
	}
	[BepInPlugin("com.binbin.morescarabs", "More Scarabs", "1.4.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("AcrossTheObelisk.exe")]
	public class Plugin : BaseUnityPlugin
	{
		internal static int ModDate = 20241024;

		private readonly Harmony harmony = new Harmony("com.binbin.morescarabs");

		internal static ManualLogSource Log;

		internal static bool EssentialsInstalled = false;

		internal static string debugBase = "MoreScarabs - ";

		public static string PluginName;

		public static string PluginVersion;

		public static string PluginGUID;

		public static ConfigEntry<bool> EnableDebugging { get; set; }

		public static ConfigEntry<bool> GuaranteedSpawn { get; set; }

		public static ConfigEntry<bool> OnlySpawnJades { get; set; }

		public static ConfigEntry<int> PercentChanceToSpawn { get; set; }

		private void Awake()
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_0047: Expected O, but got Unknown
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			//IL_0078: Expected O, but got Unknown
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Expected O, but got Unknown
			//IL_00a9: Expected O, but got Unknown
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Expected O, but got Unknown
			//IL_00da: Expected O, but got Unknown
			Log = ((BaseUnityPlugin)this).Logger;
			Log.LogInfo((object)"com.binbin.morescarabs 1.4.0 has loaded!");
			EnableDebugging = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Debug", "Enable Debugging"), true, new ConfigDescription("If true, will enable debugging messages.", (AcceptableValueBase)null, Array.Empty<object>()));
			GuaranteedSpawn = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Debug", "Guaranteed Spawn"), true, new ConfigDescription("It true, will guarantee 1 Scarab to spawn at the start of round 2.", (AcceptableValueBase)null, Array.Empty<object>()));
			OnlySpawnJades = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Debug", "Only Spawn Jades"), true, new ConfigDescription("If true, will force all scarabs spawned to be Jade", (AcceptableValueBase)null, Array.Empty<object>()));
			PercentChanceToSpawn = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Debug", "Percent Chance to Spawn"), 7, new ConfigDescription("Set the percent chance for a scarab to spawn, overwritten by Guaranteed Spawn)", (AcceptableValueBase)null, Array.Empty<object>()));
			PluginName = "More Scarabs";
			PluginVersion = "1.4.0";
			PluginGUID = "com.binbin.morescarabs";
			if (EssentialsCompatibility.Enabled)
			{
				EssentialsCompatibility.EssentialsRegister();
			}
			else
			{
				LogDebug("Essentials is not installed. Mod will load normally, but Essentials features are unavaiable.", "Awake");
			}
			harmony.PatchAll();
		}

		internal static void LogDebug(string msg, [CallerMemberName] string caller = "")
		{
			if (EnableDebugging.Value)
			{
				Log.LogDebug((object)(debugBase + "- " + caller + " - " + msg));
			}
		}

		internal static void LogInfo(string msg)
		{
			Log.LogInfo((object)(debugBase + msg));
		}

		internal static void LogError(string msg, [CallerMemberName] string caller = "")
		{
			Log.LogError((object)(debugBase + "- " + caller + " - " + msg));
		}

		public static IEnumerator RunAfter(IEnumerator original, Action action)
		{
			while (original.MoveNext())
			{
				yield return original.Current;
			}
			action();
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "com.binbin.morescarabs";

		public const string PLUGIN_NAME = "More Scarabs";

		public const string PLUGIN_VERSION = "1.4.0";
	}
}