Decompiled source of CycleForsakenPower v1.0.0

plugins\CycleForsakenPower.dll

Decompiled a week ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Jotunn;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("CycleForsakenPower")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CycleForsakenPower")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
namespace CycleForsakenPower
{
	[BepInPlugin("sephalon.CycleForsakenPower", "CycleForsakenPower", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[HarmonyPatch]
	internal class CycleForsakenPower : BaseUnityPlugin
	{
		public struct BossInfo
		{
			public string m_bossName;

			public string m_bossDefeatedGlobalKey;

			public string m_powerID;
		}

		public const string PluginGUID = "sephalon.CycleForsakenPower";

		public const string PluginName = "CycleForsakenPower";

		public const string PluginVersion = "1.0.0";

		private static KeyboardShortcut cycleShortcut = new KeyboardShortcut((KeyCode)289, Array.Empty<KeyCode>());

		public static List<BossInfo> BossInfoList = new List<BossInfo>();

		public void Awake()
		{
			AddBossInfo("Eikthyr", "GP_Eikthyr", "defeated_eikthyr");
			AddBossInfo("The Elder", "GP_TheElder", "defeated_gdking");
			AddBossInfo("Bonemass", "GP_Bonemass", "defeated_bonemass");
			AddBossInfo("Moder", "GP_Moder", "defeated_dragon");
			AddBossInfo("Yagluth", "GP_Yagluth", "defeated_goblinking");
			AddBossInfo("The Queen", "GP_Queen", "defeated_queen");
			AddBossInfo("Fader", "GP_Fader", "defeated_fader");
			Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "sephalon.CycleForsakenPower");
		}

		public static void AddBossInfo(string name, string powerID, string key)
		{
			BossInfo item = default(BossInfo);
			item.m_bossName = name;
			item.m_bossDefeatedGlobalKey = key;
			item.m_powerID = powerID;
			BossInfoList.Add(item);
		}

		[HarmonyPostfix]
		[HarmonyPatch(typeof(Player), "Update")]
		private static void Update_Postfix_Player(ref Player __instance)
		{
			if (IsLocalPlayer(in __instance) && ((KeyboardShortcut)(ref cycleShortcut)).IsDown() && ((Character)__instance).TakeInput())
			{
				Logger.LogInfo((object)"F8");
				string text = Player.m_localPlayer.GetGuardianPowerName();
				if (text == null)
				{
					text = "none";
				}
				AdvanceFrom(text);
			}
		}

		public static void AdvanceFrom(string currentPowerID)
		{
			bool flag = false;
			foreach (BossInfo bossInfo in BossInfoList)
			{
				if (ZoneSystem.instance.GetGlobalKey(bossInfo.m_bossDefeatedGlobalKey))
				{
					flag = true;
					break;
				}
			}
			if (!flag)
			{
				MessagePlayer("You have not defeated any bosses, so you cannot cycle Forsaken powers");
				return;
			}
			bool flag2 = false;
			if (currentPowerID.Equals("none"))
			{
				flag2 = true;
			}
			foreach (BossInfo bossInfo2 in BossInfoList)
			{
				if (flag2 && ZoneSystem.instance.GetGlobalKey(bossInfo2.m_bossDefeatedGlobalKey))
				{
					Player.m_localPlayer.SetGuardianPower(bossInfo2.m_powerID);
					MessagePlayer(bossInfo2.m_bossName + " power selected");
					return;
				}
				if (bossInfo2.m_powerID.Equals(currentPowerID))
				{
					flag2 = true;
				}
			}
			foreach (BossInfo bossInfo3 in BossInfoList)
			{
				if (ZoneSystem.instance.GetGlobalKey(bossInfo3.m_bossDefeatedGlobalKey))
				{
					Player.m_localPlayer.SetGuardianPower(bossInfo3.m_powerID);
					MessagePlayer(bossInfo3.m_bossName + " power selected");
					return;
				}
			}
			Logger.LogInfo((object)("Cycle Forsaken power didn't work. Current power = " + currentPowerID));
		}

		public static void MessagePlayer(string msg)
		{
			((Character)Player.m_localPlayer).Message((MessageType)2, msg, 0, (Sprite)null);
		}

		public static bool IsLocalPlayer(in Player player)
		{
			if (Object.op_Implicit((Object)(object)Player.m_localPlayer))
			{
				return (Object)(object)player == (Object)(object)Player.m_localPlayer;
			}
			return false;
		}
	}
}
namespace CycleForsakenPower.Properties
{
	[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
	[DebuggerNonUserCode]
	[CompilerGenerated]
	internal class Resources
	{
		private static ResourceManager resourceMan;

		private static CultureInfo resourceCulture;

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static ResourceManager ResourceManager
		{
			get
			{
				if (resourceMan == null)
				{
					resourceMan = new ResourceManager("CycleForsakenPower.Properties.Resources", typeof(Resources).Assembly);
				}
				return resourceMan;
			}
		}

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static CultureInfo Culture
		{
			get
			{
				return resourceCulture;
			}
			set
			{
				resourceCulture = value;
			}
		}

		internal Resources()
		{
		}
	}
}