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 list = Directory.GetFiles(directoryName, "*.wav").Take(10).ToList(); if (list.Count == 0) { mls.LogWarning((object)("No .wav files found in " + directoryName)); return; } List list2 = new List(); 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(); 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.Instance.GetCurrentSegment()/*cast due to .constrained prefix*/).ToString(); string a2 = ((object)Singleton.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() ?? val.GetComponentInChildren(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 { } } } }