Decompiled source of MadeInPeakAbyssCurseModbyCanadianBagle v1.1.1

MadeInPeak.dll

Decompiled a week ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using MadeInPeak.Patches;
using Photon.Pun;
using UnityEngine;
using UnityEngine.Networking;
using Zorro.Core;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("MadeInPeak")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("HP")]
[assembly: AssemblyProduct("MadeInPeak")]
[assembly: AssemblyCopyright("Copyright © HP 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("c2ceb383-1971-4913-8df0-0c3f492c91cc")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace MadeInPeak
{
	[BepInPlugin("Poseidon.MadeInPeak", "Made In Peak Mod", "1.0.0.0")]
	public class AbyssCurseModBase : BaseUnityPlugin
	{
		private const string modGUID = "Poseidon.MadeInPeak";

		private const string modName = "Made In Peak Mod";

		private const string modVersion = "1.0.0.0";

		private readonly Harmony harmony = new Harmony("Poseidon.MadeInPeak");

		private static AbyssCurseModBase Instance;

		public static ManualLogSource mls;

		public static float maxHeight = -1f;

		internal static SFX_Instance curseEffectSFX;

		internal static bool cursePlayFlag = false;

		internal static int cursePlayCount = 120;

		internal static bool ghostInvc = false;

		internal static int ghostInvcCool = 200;

		private void Awake()
		{
			if ((Object)(object)Instance == (Object)null)
			{
				Instance = this;
			}
			mls = Logger.CreateLogSource("Poseidon.MadeInPeak");
			mls.LogInfo((object)"The Test Mod Has Been Made In Peak/////////////////////////////////////////////////////////////////////");
			harmony.PatchAll(typeof(AbyssCurseModBase));
			harmony.PatchAll(typeof(CharacterPatch));
			harmony.PatchAll(typeof(CharacterHeightPatch));
			loadCurseSFX();
		}

		private void loadCurseSFX()
		{
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Expected O, but got Unknown
			string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
			List<string> list = Directory.GetFiles(directoryName, "*.wav").Take(10).ToList();
			if (list.Count == 0)
			{
				mls.LogWarning((object)("No .wav files found in " + directoryName));
				return;
			}
			List<AudioClip> list2 = new List<AudioClip>();
			foreach (string item in list)
			{
				try
				{
					AudioClip val = LoadAudioClip(item);
					if ((Object)(object)val != (Object)null)
					{
						list2.Add(val);
						mls.LogInfo((object)("Loaded Curse SoundFX: " + Path.GetFileName(item)));
					}
				}
				catch (Exception ex)
				{
					mls.LogError((object)("Failed to load sound file " + item + ": " + ex.Message));
				}
			}
			if (list2.Count == 0)
			{
				mls.LogError((object)"No curse sound effect audio clips were loaded.");
				return;
			}
			curseEffectSFX = ScriptableObject.CreateInstance<SFX_Instance>();
			curseEffectSFX.clips = list2.ToArray();
			curseEffectSFX.settings = new SFX_Settings
			{
				spatialBlend = 0f
			};
			mls.LogInfo((object)$"Created curseEffectSFX with {list2.Count} clip(s).");
		}

		private AudioClip LoadAudioClip(string filePath)
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Invalid comparison between Unknown and I4
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Invalid comparison between Unknown and I4
			UnityWebRequest audioClip = UnityWebRequestMultimedia.GetAudioClip(new Uri(filePath).AbsoluteUri, (AudioType)20);
			try
			{
				UnityWebRequestAsyncOperation val = audioClip.SendWebRequest();
				while (!((AsyncOperation)val).isDone)
				{
				}
				if ((int)audioClip.result == 2 || (int)audioClip.result == 3)
				{
					mls.LogError((object)("Error loading " + filePath + ": " + audioClip.error));
					return null;
				}
				return DownloadHandlerAudioClip.GetContent(audioClip);
			}
			finally
			{
				((IDisposable)audioClip)?.Dispose();
			}
		}
	}
}
namespace MadeInPeak.Patches
{
	[HarmonyPatch(typeof(Character), "UseStamina")]
	internal class CharacterPatch
	{
		[HarmonyPostfix]
		private static void infiniteSprintPatch(Character __instance)
		{
			if (__instance != Character.localCharacter)
			{
			}
		}
	}
	[HarmonyPatch(typeof(Character), "Update")]
	internal class CharacterHeightPatch
	{
		[HarmonyPostfix]
		private static void heightPatch(Character __instance)
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0260: Unknown result type (might be due to invalid IL or missing references)
			//IL_060d: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)((MonoBehaviourPun)__instance).photonView != (Object)null) || !((MonoBehaviourPun)__instance).photonView.IsMine || !__instance.IsPlayerControlled)
			{
				return;
			}
			float y = __instance.Center.y;
			string a = ((object)Singleton<MapHandler>.Instance.GetCurrentSegment()/*cast due to .constrained prefix*/).ToString();
			string a2 = ((object)Singleton<MapHandler>.Instance.GetCurrentBiome()/*cast due to .constrained prefix*/).ToString();
			if (AbyssCurseModBase.cursePlayFlag)
			{
				AbyssCurseModBase.cursePlayCount--;
				if (AbyssCurseModBase.cursePlayCount == 0)
				{
					AbyssCurseModBase.cursePlayFlag = false;
					AbyssCurseModBase.cursePlayCount = 120;
				}
			}
			if (__instance.IsGhost && !AbyssCurseModBase.ghostInvc)
			{
				AbyssCurseModBase.ghostInvc = true;
				AbyssCurseModBase.ghostInvcCool = 200;
			}
			else if (!__instance.IsGhost && AbyssCurseModBase.ghostInvc)
			{
				AbyssCurseModBase.ghostInvcCool--;
				if (AbyssCurseModBase.ghostInvcCool == 0)
				{
					AbyssCurseModBase.ghostInvc = false;
					AbyssCurseModBase.ghostInvcCool = 200;
					AbyssCurseModBase.maxHeight = y;
				}
			}
			if (AbyssCurseModBase.maxHeight < y)
			{
				AbyssCurseModBase.maxHeight = y;
			}
			else if (y <= 4f)
			{
				AbyssCurseModBase.maxHeight = y;
			}
			else if (AbyssCurseModBase.maxHeight - y >= 10f && y >= 4f && !__instance.IsGhost && !AbyssCurseModBase.ghostInvc)
			{
				AbyssCurseModBase.maxHeight = y;
				if (string.Equals(a, "Beach"))
				{
					__instance.refs.afflictions.AddStatus((STATUSTYPE)1, 0.1f, false, true, true, false);
					__instance.refs.afflictions.AddStatus((STATUSTYPE)5, 0.025f, false, true, true, false);
					__instance.refs.afflictions.AddStatus((STATUSTYPE)4, 0.1f, false, true, true, false);
				}
				else if (string.Equals(a, "Tropics"))
				{
					if (string.Equals(a2, "Tropics"))
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)3, 0.1f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)0, 0.025f, false, true, true, false);
						GameObject val = PhotonNetwork.Instantiate("BugfixOnYou", __instance.Center, Quaternion.identity, (byte)0, (object[])null);
						Bugfix val2 = val.GetComponent<Bugfix>() ?? val.GetComponentInChildren<Bugfix>(true);
						val2.AttachBug(((MonoBehaviourPun)__instance).photonView.ViewID);
						val2.TryFindCharacterAndAttachBug(((MonoBehaviourPun)__instance).photonView.ViewID);
					}
					else
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)10, 0.1f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)0, 0.025f, false, true, true, false);
					}
				}
				else if (string.Equals(a, "Alpine"))
				{
					if (string.Equals(a2, "Alpine"))
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)2, 0.1f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)6, 0.05f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)1, 0.05f, false, true, true, false);
					}
					else
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)8, 0.1f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)3, 0.05f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)1, 0.05f, false, true, true, false);
					}
				}
				else if (string.Equals(a, "Caldera"))
				{
					if (string.Equals(a2, "Volcano"))
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)1, 0.15f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)0, 0.15f, false, true, true, false);
					}
					else
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)6, 0.3f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)2, 0.2f, false, true, true, false);
					}
				}
				else if (string.Equals(a, "TheKiln"))
				{
					if (string.Equals(a2, "Volacno"))
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)13, 0.1f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)5, 0.05f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)4, 0.1f, false, true, true, false);
					}
					else
					{
						__instance.refs.afflictions.AddStatus((STATUSTYPE)13, 0.1f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)5, 0.05f, false, true, true, false);
						__instance.refs.afflictions.AddStatus((STATUSTYPE)4, 0.1f, false, true, true, false);
					}
				}
				else if (string.Equals(a, "Void"))
				{
					__instance.refs.afflictions.AddStatus((STATUSTYPE)5, 0.1f, false, true, true, false);
					__instance.refs.afflictions.AddStatus((STATUSTYPE)13, 0.1f, false, true, true, false);
					__instance.refs.afflictions.AddStatus((STATUSTYPE)4, 0.1f, false, true, true, false);
					__instance.refs.afflictions.AddStatus((STATUSTYPE)1, 0.1f, false, true, true, false);
				}
				else
				{
					AbyssCurseModBase.maxHeight = -1f;
				}
				try
				{
					if ((Object)(object)AbyssCurseModBase.curseEffectSFX == (Object)null || AbyssCurseModBase.curseEffectSFX.clips == null || AbyssCurseModBase.curseEffectSFX.clips.Length == 0)
					{
						return;
					}
					if (!AbyssCurseModBase.cursePlayFlag)
					{
						AbyssCurseModBase.curseEffectSFX.Play(Vector3.zero);
						AbyssCurseModBase.cursePlayFlag = true;
						ManualLogSource mls = AbyssCurseModBase.mls;
						if (mls == null)
						{
						}
					}
				}
				catch (Exception)
				{
					ManualLogSource mls2 = AbyssCurseModBase.mls;
					if (mls2 == null)
					{
					}
				}
			}
			try
			{
				if ((Object)(object)__instance.data.currentItem != (Object)null)
				{
					string text = ((object)__instance.data.currentItem).ToString();
					if (text.Contains("BingBong"))
					{
						__instance.refs.afflictions.SubtractStatus((STATUSTYPE)4, 0.0002f, false, false);
					}
				}
			}
			catch
			{
			}
		}
	}
}