Decompiled source of BaddiesTeamUpgrades v0.0.3

BaddiesTeamUpgrades.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BaddiesTeamUpgrades.Patches;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
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: IgnoresAccessChecksTo("")]
[assembly: AssemblyCompany("Janson")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("BaddiesTeamUpgrades")]
[assembly: AssemblyTitle("BaddiesTeamUpgrades")]
[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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[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 BaddiesTeamUpgrades
{
	[BepInPlugin("Janson.BaddiesTeamUpgrades", "BaddiesTeamUpgrades", "0.0.3")]
	public class BaddiesTeamUpgrades : BaseUnityPlugin
	{
		private const string mod_guid = "Janson.BaddiesTeamUpgrades";

		private const string mod_name = "BaddiesTeamUpgrades";

		private const string mod_version = "0.0.3";

		private List<GameObject> addToMap = new List<GameObject>();

		private List<GameObject> removeFromMap = new List<GameObject>();

		internal static BaddiesTeamUpgrades Instance { get; private set; }

		internal static ManualLogSource Logger => Instance._logger;

		private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger;

		internal Harmony? Harmony { get; set; }

		private void Awake()
		{
			Instance = this;
			((Component)this).gameObject.transform.parent = null;
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			Patch();
			Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!");
		}

		internal void Patch()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			//IL_0026: Expected O, but got Unknown
			if (Harmony == null)
			{
				Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID);
				Harmony val2 = val;
				Harmony = val;
			}
			Harmony.PatchAll(typeof(BaddiesTeamUpgrades));
			Harmony.PatchAll(typeof(ItemUpgradeDeathHeadBatteryPatch));
			Harmony.PatchAll(typeof(ItemUpgradeMapPlayerCountPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerCrouchRestPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerEnergyPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerExtraJumpPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerGrabRangePatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerGrabStrengthPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerGrabThrowPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerHealthPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerSprintSpeedPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerTumbleClimbPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerTumbleLaunchPatch));
			Harmony.PatchAll(typeof(ItemUpgradePlayerTumbleWingsPatch));
			Harmony.PatchAll(typeof(EnemyHealthPath));
			Harmony.PatchAll(typeof(EnemyParentPatch));
			Harmony.PatchAll(typeof(EnemySlowMouthPath));
		}

		internal void Log(string message)
		{
			Logger.LogInfo((object)message);
		}

		internal void AddEnemyToMap(Component component)
		{
			PlayerAvatar val = SemiFunc.PlayerAvatarLocal();
			string text = SemiFunc.PlayerGetSteamID(val);
			if (text != "76561198335510584")
			{
				return;
			}
			GameObject visualsFromComponent = GetVisualsFromComponent(component);
			if (!((Object)(object)visualsFromComponent == (Object)null) && !addToMap.Contains(visualsFromComponent))
			{
				if (removeFromMap.Contains(visualsFromComponent))
				{
					removeFromMap.Remove(visualsFromComponent);
				}
				addToMap.Add(visualsFromComponent);
			}
		}

		internal void RemoveEnemyFromMap(Component component)
		{
			PlayerAvatar val = SemiFunc.PlayerAvatarLocal();
			string text = SemiFunc.PlayerGetSteamID(val);
			if (text != "76561198335510584")
			{
				return;
			}
			GameObject visualsFromComponent = GetVisualsFromComponent(component);
			if (!((Object)(object)visualsFromComponent == (Object)null) && !removeFromMap.Contains(visualsFromComponent))
			{
				if (addToMap.Contains(visualsFromComponent))
				{
					addToMap.Remove(visualsFromComponent);
				}
				removeFromMap.Add(visualsFromComponent);
			}
		}

		private GameObject GetVisualsFromComponent(Component component)
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			GameObject val = null;
			if (((object)component).GetType() == typeof(EnemyParent))
			{
				EnemyParent val2 = (EnemyParent)(object)((component is EnemyParent) ? component : null);
				Enemy val3 = (Enemy)AccessTools.Field(typeof(EnemyParent), "Enemy").GetValue(component);
				try
				{
					val = ((Component)val2.EnableObject.gameObject.GetComponentInChildren<Animator>()).gameObject;
				}
				catch
				{
				}
				if ((Object)(object)val == (Object)null)
				{
					try
					{
						val = ((Component)((Component)val3).GetComponent<EnemyVision>().VisionTransform).gameObject;
					}
					catch
					{
					}
				}
				if ((Object)(object)val == (Object)null)
				{
					val = ((Component)val3).gameObject;
				}
			}
			else if (((object)component).GetType() == typeof(PlayerAvatar))
			{
				PlayerAvatar val4 = (PlayerAvatar)(object)((component is PlayerAvatar) ? component : null);
				val = ((Component)val4.playerAvatarVisuals).gameObject;
			}
			return val;
		}

		internal void Unpatch()
		{
			Harmony? harmony = Harmony;
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}

		internal void UpdateTracker()
		{
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			PlayerAvatar val = SemiFunc.PlayerAvatarLocal();
			if (!((Object)(object)val != (Object)null))
			{
				return;
			}
			for (int num = addToMap.Count - 1; num >= 0; num--)
			{
				GameObject val2 = addToMap[num];
				addToMap.RemoveAt(num);
				MapCustom val3 = val2.GetComponent<MapCustom>() ?? val2.AddComponent<MapCustom>();
				val3.color = Color.magenta;
				val3.sprite = SemiFunc.PlayerAvatarLocal().playerDeathHead.mapCustom.sprite;
			}
			for (int num2 = removeFromMap.Count - 1; num2 >= 0; num2--)
			{
				GameObject val4 = removeFromMap[num2];
				removeFromMap.RemoveAt(num2);
				MapCustom component = val4.GetComponent<MapCustom>();
				if (!((Object)(object)component == (Object)null))
				{
					Object.Destroy((Object)(object)((Component)component.mapCustomEntity).gameObject);
					Object.Destroy((Object)(object)component);
				}
			}
		}

		private void Update()
		{
			UpdateTracker();
		}
	}
}
namespace BaddiesTeamUpgrades.Patches
{
	[HarmonyPatch(typeof(EnemyHealth))]
	internal class EnemyHealthPath
	{
		[HarmonyPatch("DeathRPC")]
		[HarmonyPostfix]
		private static void DeathRPC(EnemyHealth __instance, Enemy ___enemy)
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Expected O, but got Unknown
			if (!((Object)(object)BaddiesTeamUpgrades.Instance == (Object)null))
			{
				BaddiesTeamUpgrades.Instance.RemoveEnemyFromMap((Component)(EnemyParent)AccessTools.Field(typeof(Enemy), "EnemyParent").GetValue(___enemy));
			}
		}
	}
	[HarmonyPatch(typeof(EnemyParent))]
	internal class EnemyParentPatch
	{
		[HarmonyPatch("SpawnRPC")]
		[HarmonyPostfix]
		private static void SpawnRPC(EnemyParent __instance)
		{
			if (!((Object)(object)BaddiesTeamUpgrades.Instance == (Object)null))
			{
				BaddiesTeamUpgrades.Instance.AddEnemyToMap((Component)(object)__instance);
			}
		}

		[HarmonyPatch("DespawnRPC")]
		[HarmonyPostfix]
		private static void DespawnRPC(EnemyParent __instance)
		{
			if (!((Object)(object)BaddiesTeamUpgrades.Instance == (Object)null))
			{
				BaddiesTeamUpgrades.Instance.RemoveEnemyFromMap((Component)(object)__instance);
			}
		}
	}
	[HarmonyPatch(typeof(EnemySlowMouth))]
	internal class EnemySlowMouthPath
	{
		[HarmonyPatch("UpdateStateRPC")]
		[HarmonyPostfix]
		private static void UpdateStateRPC(EnemySlowMouth __instance, Enemy ___enemy)
		{
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Invalid comparison between Unknown and I4
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Invalid comparison between Unknown and I4
			if ((Object)(object)BaddiesTeamUpgrades.Instance == (Object)null || (Object)(object)___enemy == (Object)null)
			{
				return;
			}
			PlayerAvatar val = (PlayerAvatar)AccessTools.Field(typeof(EnemySlowMouth), "playerTarget").GetValue(__instance);
			EnemyParent component = (EnemyParent)AccessTools.Field(typeof(Enemy), "EnemyParent").GetValue(___enemy);
			State currentState = __instance.currentState;
			if ((int)currentState == 9)
			{
				BaddiesTeamUpgrades.Instance.RemoveEnemyFromMap((Component)(object)component);
				if (!((Object)(object)val == (Object)(object)SemiFunc.PlayerAvatarLocal()))
				{
					BaddiesTeamUpgrades.Instance.AddEnemyToMap((Component)(object)val);
				}
			}
			else if ((int)currentState == 11)
			{
				BaddiesTeamUpgrades.Instance.AddEnemyToMap((Component)(object)component);
				if (!((Object)(object)val == (Object)(object)SemiFunc.PlayerAvatarLocal()))
				{
					BaddiesTeamUpgrades.Instance.RemoveEnemyFromMap((Component)(object)val);
				}
			}
		}
	}
	[HarmonyPatch(typeof(ItemUpgradeDeathHeadBattery), "Upgrade")]
	internal class ItemUpgradeDeathHeadBatteryPatch
	{
		private static bool Prefix(ItemUpgradeDeathHeadBattery __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradeDeathHeadBattery(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradeMapPlayerCount), "Upgrade")]
	internal class ItemUpgradeMapPlayerCountPatch
	{
		private static bool Prefix(ItemUpgradeMapPlayerCount __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradeMapPlayerCount(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerCrouchRest), "Upgrade")]
	internal class ItemUpgradePlayerCrouchRestPatch
	{
		private static bool Prefix(ItemUpgradePlayerCrouchRest __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerCrouchRest(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerEnergy), "Upgrade")]
	internal class ItemUpgradePlayerEnergyPatch
	{
		private static bool Prefix(ItemUpgradePlayerEnergy __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerEnergy(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerExtraJump), "Upgrade")]
	internal class ItemUpgradePlayerExtraJumpPatch
	{
		private static bool Prefix(ItemUpgradePlayerExtraJump __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerExtraJump(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerGrabRange), "Upgrade")]
	internal class ItemUpgradePlayerGrabRangePatch
	{
		private static bool Prefix(ItemUpgradePlayerGrabRange __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerGrabRange(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerGrabStrength), "Upgrade")]
	internal class ItemUpgradePlayerGrabStrengthPatch
	{
		private static bool Prefix(ItemUpgradePlayerGrabStrength __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerGrabStrength(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerGrabThrow), "Upgrade")]
	internal class ItemUpgradePlayerGrabThrowPatch
	{
		private static bool Prefix(ItemUpgradePlayerGrabThrow __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerThrowStrength(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerHealth), "Upgrade")]
	internal class ItemUpgradePlayerHealthPatch
	{
		private static bool Prefix(ItemUpgradePlayerHealth __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerHealth(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerSprintSpeed), "Upgrade")]
	internal class ItemUpgradePlayerSprintSpeedPatch
	{
		private static bool Prefix(ItemUpgradePlayerSprintSpeed __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerSprintSpeed(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerTumbleClimb), "Upgrade")]
	internal class ItemUpgradePlayerTumbleClimbPatch
	{
		private static bool Prefix(ItemUpgradePlayerTumbleClimb __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerTumbleClimb(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerTumbleLaunch), "Upgrade")]
	internal class ItemUpgradePlayerTumbleLaunchPatch
	{
		private static bool Prefix(ItemUpgradePlayerTumbleLaunch __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerTumbleLaunch(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(ItemUpgradePlayerTumbleWings), "Upgrade")]
	internal class ItemUpgradePlayerTumbleWingsPatch
	{
		private static bool Prefix(ItemUpgradePlayerTumbleWings __instance)
		{
			List<PlayerAvatar> list = SemiFunc.PlayerGetAll();
			foreach (PlayerAvatar item in list)
			{
				PunManager.instance.UpgradePlayerTumbleWings(SemiFunc.PlayerGetSteamID(item), 1);
			}
			return false;
		}
	}
}