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
{
}
}
}
}