Decompiled source of GavintinoVirtue v1.0.2

Gavirtue.dll

Decompiled 3 days ago
using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
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 = "")]
[assembly: AssemblyCompany("Gavirtue")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Replaces the Virtue from ULTRAKILL with tim")]
[assembly: AssemblyFileVersion("0.0.1.0")]
[assembly: AssemblyInformationalVersion("0.0.1")]
[assembly: AssemblyProduct("Gavirtue")]
[assembly: AssemblyTitle("Gavirtue")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.1.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.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace Gavirtue
{
	[BepInPlugin("Gavirtue", "Gavirtue", "0.0.1")]
	public class Plugin : BaseUnityPlugin
	{
		public static Texture2D wingTex;

		public static Texture2D wingEnragedTex;

		public static Texture2D altTimTex;

		public static AudioClip[] audioClips;

		public static string assetsFolderPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "");

		public static GameObject timFab;

		public static AssetBundle timBundle { get; private set; }

		public static AssetBundle audioBundle { get; private set; }

		public static Texture2D LoadTextureFromFile(string filePath)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Expected O, but got Unknown
			byte[] array = File.ReadAllBytes(filePath);
			Texture2D val = new Texture2D(2, 2);
			ImageConversion.LoadImage(val, array);
			return val;
		}

		private void Awake()
		{
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Gavirtue is loaded!");
			timBundle = AssetBundle.LoadFromFile(Path.Combine(assetsFolderPath, "tim"));
			audioBundle = AssetBundle.LoadFromFile(Path.Combine(assetsFolderPath, "audio"));
			timFab = timBundle.LoadAsset<GameObject>("Tim");
			audioClips = audioBundle.LoadAllAssets<AudioClip>();
			wingTex = LoadTextureFromFile(Path.Combine(assetsFolderPath, "Divine_Orthos_Wings.png"));
			wingEnragedTex = LoadTextureFromFile(Path.Combine(assetsFolderPath, "Divine_Orthos_WingsEnraged.png"));
			altTimTex = LoadTextureFromFile(Path.Combine(assetsFolderPath, "AltTim.png"));
			Console.WriteLine(Object.op_Implicit((Object)(object)audioClips[0]));
			Harmony val = new Harmony("gavirtue.patch");
			Console.WriteLine("Setting up harmony");
			val.PatchAll();
		}
	}
	[HarmonyPatch]
	public static class Patches
	{
		[HarmonyPrefix]
		[HarmonyPatch(typeof(EnemyIdentifier), "ProcessDeath", new Type[] { typeof(bool) })]
		public static void DeathEvent(EnemyIdentifier __instance, bool fromExplosion)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Invalid comparison between Unknown and I4
			if ((int)__instance.enemyType == 9)
			{
				AudioSource component = ((Component)__instance).gameObject.GetComponent<AudioSource>();
				component.PlayOneShot(Plugin.audioClips[1], 3f);
			}
		}

		[HarmonyPostfix]
		[HarmonyPatch(typeof(Drone), "Enrage")]
		public static void EnrageEvent(EnemyIdentifier __instance)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Invalid comparison between Unknown and I4
			if ((int)((Component)__instance).gameObject.GetComponent<EnemyIdentifier>().enemyType == 9)
			{
				AudioSource component = ((Component)__instance).gameObject.GetComponent<AudioSource>();
				component.PlayOneShot(Plugin.audioClips[Random.Range(2, 4)], 3f);
				Console.WriteLine("setwings");
				((MonoBehaviour)__instance).StartCoroutine(SetWingNextFrame(__instance));
				Console.WriteLine(Object.op_Implicit((Object)(object)((Renderer)((Component)((Component)__instance).transform.GetChild(0).GetChild(2)).gameObject.GetComponent<SkinnedMeshRenderer>()).material.mainTexture));
				Console.WriteLine(Object.op_Implicit((Object)(object)Plugin.wingEnragedTex));
			}
			static IEnumerator SetWingNextFrame(EnemyIdentifier eid)
			{
				yield return null;
				SkinnedMeshRenderer r = ((Component)((Component)eid).transform.GetChild(0).GetChild(2)).GetComponent<SkinnedMeshRenderer>();
				((Renderer)r).material.mainTexture = (Texture)(object)Plugin.wingEnragedTex;
			}
		}

		[HarmonyPostfix]
		[HarmonyPatch(typeof(EnemyIdentifier), "Start")]
		public static void StartEvent(EnemyIdentifier __instance)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Invalid comparison between Unknown and I4
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_019e: 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)
			if ((int)__instance.enemyType == 9)
			{
				AudioSource component = ((Component)__instance).gameObject.GetComponent<AudioSource>();
				component.PlayOneShot(Plugin.audioClips[0], 3f);
				((Renderer)((Component)((Component)__instance).transform.GetChild(0).GetChild(2)).gameObject.GetComponent<SkinnedMeshRenderer>()).material.mainTexture = (Texture)(object)Plugin.wingEnragedTex;
				Transform child = ((Component)__instance).transform.GetChild(0);
				Light component2 = ((Component)((Component)__instance).transform.GetChild(1).GetChild(2)).gameObject.GetComponent<Light>();
				Transform child2 = child.GetChild(1);
				Material material = ((Renderer)((Component)child.GetChild(2)).gameObject.GetComponent<SkinnedMeshRenderer>()).material;
				GameObject val = Object.Instantiate<GameObject>(Plugin.timFab, ((Component)__instance).transform.position, child.rotation * Quaternion.Euler(0f, 180f, 0f));
				val.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
				val.transform.parent = ((Component)__instance).transform;
				Material material2 = ((Renderer)((Component)val.transform.GetChild(0).GetChild(0)).gameObject.GetComponent<MeshRenderer>()).material;
				material2.mainTexture = (Texture)(object)Plugin.altTimTex;
				material2.shader = ((Renderer)((Component)((Component)__instance).transform.GetChild(0).GetChild(1).GetChild(0)).gameObject.GetComponent<MeshRenderer>()).material.shader;
				((Component)val.transform.GetChild(0)).transform.localPosition = new Vector3(0f, -41f, 0f);
				((Component)child2).gameObject.SetActive(false);
				component2.color = new Color(1f, 0f, 0f, 0.25f);
				material.mainTexture = (Texture)(object)Plugin.wingTex;
			}
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "Gavirtue";

		public const string PLUGIN_NAME = "Gavirtue";

		public const string PLUGIN_VERSION = "0.0.1";
	}
}