The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of PEAK Blow Darts v1.0.1
tony.and.Snoszs-PEAK Blow Darts.dll
Decompiled a month agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Text; using BepInEx; using BepInEx.Configuration; using ExitGames.Client.Photon; using HarmonyLib; using Microsoft.CodeAnalysis; using Peak.Afflictions; using Photon.Pun; using Photon.Realtime; using PhotonCustomPropsUtils; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("PEAK Blow Darts")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("PEAK Blow Darts")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("1bf01cad-9d92-4c56-aa0d-03fd3b28b670")] [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 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; } } } namespace PEAK_Blow_Darts { public enum BlowDartType { Unmodified, Injury, Poison, Cold, Hunger, Drowsy, Curse, Hot, Crab, InfiniteStamina, ExtraStamina, FasterBoi, AfflictionClearer, Chaos, Invincibility } public static class BlowDartDataEntryKey { public static readonly DataEntryKey DartType; } [BepInPlugin("tony4twentys.PEAK_Blow_Darts", "Peak Blow Darts", "1.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class PEAKBlowDartsPlugin : BaseUnityPlugin { [HarmonyPatch(typeof(Item), "Start")] private static class Item_Start_Patch { private static void Postfix(Item __instance) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) if (!IsBlowDart(__instance) || !Instance.allowBlowDartModification) { return; } if (__instance.HasData(BlowDartDataEntryKey.DartType)) { IntItemData data = __instance.GetData<IntItemData>(BlowDartDataEntryKey.DartType); BlowDartType value = (BlowDartType)data.Value; if (value != 0) { ModifyToDartType(__instance, value); } } else { BlowDartType randomDartType = GetRandomDartType(); if (randomDartType == BlowDartType.Unmodified) { IntItemData data2 = __instance.GetData<IntItemData>(BlowDartDataEntryKey.DartType); data2.Value = 0; } else { ModifyToDartType(__instance, randomDartType); } } } } [HarmonyPatch(typeof(Item), "GetItemName")] private static class Item_GetItemName_Patch { private static void Postfix(Item __instance, ItemInstanceData data, ref string __result) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) IntItemData val = default(IntItemData); if (IsBlowDart(__instance) && data != null && data.HasData(BlowDartDataEntryKey.DartType) && data.TryGetDataEntry<IntItemData>(BlowDartDataEntryKey.DartType, ref val)) { BlowDartType value = (BlowDartType)val.Value; if (value != 0) { __result = GetDartName(value); } } } } private static Harmony _harmony; internal static PEAKBlowDartsPlugin Instance; private PhotonScopedManager photonManager; public bool IsHost = false; public bool allowBlowDartModification = false; private static ConfigEntry<bool> CFG_EnableInjury; private static ConfigEntry<bool> CFG_EnablePoison; private static ConfigEntry<bool> CFG_EnableCold; private static ConfigEntry<bool> CFG_EnableHunger; private static ConfigEntry<bool> CFG_EnableDrowsy; private static ConfigEntry<bool> CFG_EnableCurse; private static ConfigEntry<bool> CFG_EnableHot; private static ConfigEntry<bool> CFG_EnableCrab; private static ConfigEntry<bool> CFG_EnableInfiniteStamina; private static ConfigEntry<bool> CFG_EnableExtraStamina; private static ConfigEntry<bool> CFG_EnableFasterBoi; private static ConfigEntry<bool> CFG_EnableAfflictionClearer; private static ConfigEntry<bool> CFG_EnablePandoras; private static ConfigEntry<bool> CFG_EnableInvincibility; private static ConfigEntry<float> CFG_InjuryChance; private static ConfigEntry<float> CFG_PoisonChance; private static ConfigEntry<float> CFG_ColdChance; private static ConfigEntry<float> CFG_HungerChance; private static ConfigEntry<float> CFG_DrowsyChance; private static ConfigEntry<float> CFG_CurseChance; private static ConfigEntry<float> CFG_HotChance; private static ConfigEntry<float> CFG_CrabChance; private static ConfigEntry<float> CFG_InfiniteStaminaChance; private static ConfigEntry<float> CFG_ExtraStaminaChance; private static ConfigEntry<float> CFG_FasterBoiChance; private static ConfigEntry<float> CFG_AfflictionClearerChance; private static ConfigEntry<float> CFG_PandorasChance; private static ConfigEntry<float> CFG_InvincibilityChance; private static ConfigEntry<float> CFG_UnmodifiedChance; private static ConfigEntry<float> CFG_InjuryAmount; private static ConfigEntry<float> CFG_PoisonAmount; private static ConfigEntry<float> CFG_PoisonDuration; private static ConfigEntry<float> CFG_ColdAmount; private static ConfigEntry<float> CFG_ColdDuration; private static ConfigEntry<float> CFG_HungerAmount; private static ConfigEntry<float> CFG_DrowsyAmount; private static ConfigEntry<float> CFG_CurseAmount; private static ConfigEntry<float> CFG_HotAmount; private static ConfigEntry<float> CFG_CrabAmount; private static ConfigEntry<float> CFG_InfiniteStaminaDuration; private static ConfigEntry<float> CFG_ExtraStaminaAmount; private static ConfigEntry<float> CFG_InvincibilityDuration; private static ConfigEntry<float> CFG_FasterBoiDuration; private static ConfigEntry<float> CFG_FasterBoiMoveSpeed; private static ConfigEntry<float> CFG_FasterBoiClimbSpeed; private void Awake() { //IL_0628: Unknown result type (might be due to invalid IL or missing references) //IL_0632: Expected O, but got Unknown Instance = this; CFG_EnableInjury = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableInjury", false, "Enable Injury Blow Gun"); CFG_EnablePoison = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnablePoison", false, "Enable Poison Blow Gun"); CFG_EnableCold = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableCold", false, "Enable Cold Blow Gun"); CFG_EnableHunger = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableHunger", false, "Enable Hunger Blow Gun"); CFG_EnableDrowsy = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableDrowsy", false, "Enable Drowsy Blow Gun"); CFG_EnableCurse = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableCurse", false, "Enable Curse Blow Gun"); CFG_EnableHot = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableHot", false, "Enable Hot Blow Gun"); CFG_EnableCrab = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableCrab", false, "Enable Crab Blow Gun"); CFG_EnableInfiniteStamina = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableInfiniteStamina", true, "Enable Infinite Stamina Blow Gun"); CFG_EnableExtraStamina = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableExtraStamina", true, "Enable Extra Stamina Blow Gun"); CFG_EnableFasterBoi = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableFasterBoi", true, "Enable Faster Boi Blow Gun"); CFG_EnableAfflictionClearer = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableAfflictionClearer", true, "Enable Affliction Clearer Blow Gun"); CFG_EnablePandoras = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnablePandoras", true, "Enable Pandoras Blow Gun"); CFG_EnableInvincibility = ((BaseUnityPlugin)this).Config.Bind<bool>("DartTypes", "EnableInvincibility", true, "Enable Invincibility Blow Gun"); CFG_InjuryChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "InjuryChance", 0f, "Chance for Injury Blow Gun (0.0-1.0)"); CFG_PoisonChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "PoisonChance", 0f, "Chance for Poison Blow Gun (0.0-1.0)"); CFG_ColdChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "ColdChance", 0f, "Chance for Cold Blow Gun (0.0-1.0)"); CFG_HungerChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "HungerChance", 0f, "Chance for Hunger Blow Gun (0.0-1.0)"); CFG_DrowsyChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "DrowsyChance", 0f, "Chance for Drowsy Blow Gun (0.0-1.0)"); CFG_CurseChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "CurseChance", 0f, "Chance for Curse Blow Gun (0.0-1.0)"); CFG_HotChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "HotChance", 0f, "Chance for Hot Blow Gun (0.0-1.0)"); CFG_CrabChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "CrabChance", 0f, "Chance for Crab Blow Gun (0.0-1.0)"); CFG_InfiniteStaminaChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "InfiniteStaminaChance", 0.1f, "Chance for Infinite Stamina Blow Gun (0.0-1.0)"); CFG_ExtraStaminaChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "ExtraStaminaChance", 0.1f, "Chance for Extra Stamina Blow Gun (0.0-1.0)"); CFG_FasterBoiChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "FasterBoiChance", 0.1f, "Chance for Faster Boi Blow Gun (0.0-1.0)"); CFG_AfflictionClearerChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "AfflictionClearerChance", 0.1f, "Chance for Affliction Clearer Blow Gun (0.0-1.0)"); CFG_PandorasChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "PandorasChance", 0.1f, "Chance for Pandoras Blow Gun (0.0-1.0)"); CFG_InvincibilityChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "InvincibilityChance", 0.01f, "Chance for Invincibility Blow Gun (0.0-1.0)"); CFG_UnmodifiedChance = ((BaseUnityPlugin)this).Config.Bind<float>("Chances", "UnmodifiedChance", 0.5f, "Chance to get the classic blow gun (0.0-1.0)"); CFG_InjuryAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "InjuryAmount", 0.25f, "Injury amount"); CFG_PoisonAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "PoisonAmount", 0.25f, "Poison amount (instant)"); CFG_PoisonDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "PoisonDuration", 0.001f, "Poison duration in seconds (instant)"); CFG_ColdAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "ColdAmount", -0.25f, "Cold amount (instant)"); CFG_ColdDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "ColdDuration", 0.001f, "Cold duration in seconds (instant)"); CFG_HungerAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "HungerAmount", 0.25f, "Hunger amount"); CFG_DrowsyAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "DrowsyAmount", 0.25f, "Drowsy amount"); CFG_CurseAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "CurseAmount", 0.25f, "Curse amount"); CFG_HotAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "HotAmount", 0.25f, "Hot amount"); CFG_CrabAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "CrabAmount", 0.25f, "Crab amount"); CFG_InfiniteStaminaDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "InfiniteStaminaDuration", 30f, "Infinite stamina duration in seconds"); CFG_ExtraStaminaAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "ExtraStaminaAmount", 50f, "Extra stamina amount"); CFG_InvincibilityDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "InvincibilityDuration", 30f, "Invincibility duration in seconds"); CFG_FasterBoiDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "FasterBoiDuration", 20f, "Faster Boi duration in seconds"); CFG_FasterBoiMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "FasterBoiMoveSpeed", 1.5f, "Faster Boi movement speed multiplier"); CFG_FasterBoiClimbSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Parameters", "FasterBoiClimbSpeed", 1.3f, "Faster Boi climb speed multiplier"); _harmony = new Harmony("tony4twentys.PEAK_Blow_Darts"); _harmony.PatchAll(); InitializePhotonManager(); PhotonNetwork.AddCallbackTarget((object)this); } private void OnDestroy() { if (_harmony != null) { _harmony.UnpatchSelf(); } PhotonNetwork.RemoveCallbackTarget((object)this); } private void InitializePhotonManager() { if (PhotonCustomPropsUtilsPlugin.IsReady) { SetupPhotonManager(); } else { PhotonCustomPropsUtilsPlugin.OnReady += SetupPhotonManager; } } private void SetupPhotonManager() { photonManager = PhotonCustomPropsUtilsPlugin.GetManager("tony4twentys.PEAK_Blow_Darts"); photonManager.RegisterOnJoinedRoom((Action<Player>)delegate { CheckHostStatus(); }); photonManager.RegisterRoomProperty<string>("blowDartConfig", (RoomEventType)2, (Action<string>)delegate(string configData) { if (!PhotonNetwork.IsMasterClient && !string.IsNullOrEmpty(configData)) { UnpackConfigData(configData); allowBlowDartModification = true; } }); } private void CheckHostStatus() { if (PhotonNetwork.InRoom) { if (PhotonNetwork.IsMasterClient) { IsHost = true; allowBlowDartModification = true; PublishHostConfig(); } else { IsHost = false; allowBlowDartModification = false; } } } private void PublishHostConfig() { if (PhotonNetwork.IsMasterClient && photonManager != null) { string text = PackConfigData(); photonManager.SetRoomProperty("blowDartConfig", (object)text); } } private string PackConfigData() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine($"ENABLE_Injury={CFG_EnableInjury.Value}"); stringBuilder.AppendLine($"ENABLE_Poison={CFG_EnablePoison.Value}"); stringBuilder.AppendLine($"ENABLE_Cold={CFG_EnableCold.Value}"); stringBuilder.AppendLine($"ENABLE_Hunger={CFG_EnableHunger.Value}"); stringBuilder.AppendLine($"ENABLE_Drowsy={CFG_EnableDrowsy.Value}"); stringBuilder.AppendLine($"ENABLE_Curse={CFG_EnableCurse.Value}"); stringBuilder.AppendLine($"ENABLE_Hot={CFG_EnableHot.Value}"); stringBuilder.AppendLine($"ENABLE_Crab={CFG_EnableCrab.Value}"); stringBuilder.AppendLine($"ENABLE_InfiniteStamina={CFG_EnableInfiniteStamina.Value}"); stringBuilder.AppendLine($"ENABLE_ExtraStamina={CFG_EnableExtraStamina.Value}"); stringBuilder.AppendLine($"ENABLE_FasterBoi={CFG_EnableFasterBoi.Value}"); stringBuilder.AppendLine($"ENABLE_AfflictionClearer={CFG_EnableAfflictionClearer.Value}"); stringBuilder.AppendLine($"ENABLE_Pandoras={CFG_EnablePandoras.Value}"); stringBuilder.AppendLine($"ENABLE_Invincibility={CFG_EnableInvincibility.Value}"); stringBuilder.AppendLine($"CHANCE_Injury={CFG_InjuryChance.Value}"); stringBuilder.AppendLine($"CHANCE_Poison={CFG_PoisonChance.Value}"); stringBuilder.AppendLine($"CHANCE_Cold={CFG_ColdChance.Value}"); stringBuilder.AppendLine($"CHANCE_Hunger={CFG_HungerChance.Value}"); stringBuilder.AppendLine($"CHANCE_Drowsy={CFG_DrowsyChance.Value}"); stringBuilder.AppendLine($"CHANCE_Curse={CFG_CurseChance.Value}"); stringBuilder.AppendLine($"CHANCE_Hot={CFG_HotChance.Value}"); stringBuilder.AppendLine($"CHANCE_Crab={CFG_CrabChance.Value}"); stringBuilder.AppendLine($"CHANCE_InfiniteStamina={CFG_InfiniteStaminaChance.Value}"); stringBuilder.AppendLine($"CHANCE_ExtraStamina={CFG_ExtraStaminaChance.Value}"); stringBuilder.AppendLine($"CHANCE_FasterBoi={CFG_FasterBoiChance.Value}"); stringBuilder.AppendLine($"CHANCE_AfflictionClearer={CFG_AfflictionClearerChance.Value}"); stringBuilder.AppendLine($"CHANCE_Pandoras={CFG_PandorasChance.Value}"); stringBuilder.AppendLine($"CHANCE_Invincibility={CFG_InvincibilityChance.Value}"); stringBuilder.AppendLine($"CHANCE_Unmodified={CFG_UnmodifiedChance.Value}"); stringBuilder.AppendLine($"AMOUNT_Injury={CFG_InjuryAmount.Value}"); stringBuilder.AppendLine($"AMOUNT_Poison={CFG_PoisonAmount.Value}"); stringBuilder.AppendLine($"DURATION_Poison={CFG_PoisonDuration.Value}"); stringBuilder.AppendLine($"AMOUNT_Cold={CFG_ColdAmount.Value}"); stringBuilder.AppendLine($"DURATION_Cold={CFG_ColdDuration.Value}"); stringBuilder.AppendLine($"AMOUNT_Hunger={CFG_HungerAmount.Value}"); stringBuilder.AppendLine($"AMOUNT_Drowsy={CFG_DrowsyAmount.Value}"); stringBuilder.AppendLine($"AMOUNT_Curse={CFG_CurseAmount.Value}"); stringBuilder.AppendLine($"AMOUNT_Hot={CFG_HotAmount.Value}"); stringBuilder.AppendLine($"AMOUNT_Crab={CFG_CrabAmount.Value}"); stringBuilder.AppendLine($"AMOUNT_ExtraStamina={CFG_ExtraStaminaAmount.Value}"); stringBuilder.AppendLine($"DURATION_FasterBoi={CFG_FasterBoiDuration.Value}"); stringBuilder.AppendLine($"DURATION_InfiniteStamina={CFG_InfiniteStaminaDuration.Value}"); stringBuilder.AppendLine($"DURATION_Invincibility={CFG_InvincibilityDuration.Value}"); stringBuilder.AppendLine($"MOVESPEED_FasterBoi={CFG_FasterBoiMoveSpeed.Value}"); stringBuilder.AppendLine($"CLIMBSPEED_FasterBoi={CFG_FasterBoiClimbSpeed.Value}"); return Convert.ToBase64String(Encoding.UTF8.GetBytes(stringBuilder.ToString())); } private void UnpackConfigData(string configData) { try { string @string = Encoding.UTF8.GetString(Convert.FromBase64String(configData)); string[] array = @string.Split(new char[1] { '\n' }); string[] array2 = array; foreach (string text in array2) { if (string.IsNullOrWhiteSpace(text)) { continue; } string[] array3 = text.Split(new char[1] { '=' }, 2); if (array3.Length != 2) { continue; } string text2 = array3[0]; string text3 = array3[1]; float result6; if (text2.StartsWith("ENABLE_")) { string text4 = text2.Substring(7); if (bool.TryParse(text3, out var result)) { switch (text4) { case "Injury": CFG_EnableInjury.Value = result; break; case "Poison": CFG_EnablePoison.Value = result; break; case "Cold": CFG_EnableCold.Value = result; break; case "Hunger": CFG_EnableHunger.Value = result; break; case "Drowsy": CFG_EnableDrowsy.Value = result; break; case "Curse": CFG_EnableCurse.Value = result; break; case "Hot": CFG_EnableHot.Value = result; break; case "Crab": CFG_EnableCrab.Value = result; break; case "InfiniteStamina": CFG_EnableInfiniteStamina.Value = result; break; case "ExtraStamina": CFG_EnableExtraStamina.Value = result; break; case "FasterBoi": CFG_EnableFasterBoi.Value = result; break; case "AfflictionClearer": CFG_EnableAfflictionClearer.Value = result; break; case "Pandoras": CFG_EnablePandoras.Value = result; break; case "Invincibility": CFG_EnableInvincibility.Value = result; break; } } } else if (text2.StartsWith("CHANCE_")) { string text5 = text2.Substring(7); if (float.TryParse(text3, out var result2)) { switch (text5) { case "Injury": CFG_InjuryChance.Value = result2; break; case "Poison": CFG_PoisonChance.Value = result2; break; case "Cold": CFG_ColdChance.Value = result2; break; case "Hunger": CFG_HungerChance.Value = result2; break; case "Drowsy": CFG_DrowsyChance.Value = result2; break; case "Curse": CFG_CurseChance.Value = result2; break; case "Hot": CFG_HotChance.Value = result2; break; case "Crab": CFG_CrabChance.Value = result2; break; case "InfiniteStamina": CFG_InfiniteStaminaChance.Value = result2; break; case "ExtraStamina": CFG_ExtraStaminaChance.Value = result2; break; case "FasterBoi": CFG_FasterBoiChance.Value = result2; break; case "AfflictionClearer": CFG_AfflictionClearerChance.Value = result2; break; case "Pandoras": CFG_PandorasChance.Value = result2; break; case "Invincibility": CFG_InvincibilityChance.Value = result2; break; case "Unmodified": CFG_UnmodifiedChance.Value = result2; break; } } } else if (text2.StartsWith("AMOUNT_")) { string text6 = text2.Substring(7); if (float.TryParse(text3, out var result3)) { switch (text6) { case "Injury": CFG_InjuryAmount.Value = result3; break; case "Poison": CFG_PoisonAmount.Value = result3; break; case "Cold": CFG_ColdAmount.Value = result3; break; case "Hunger": CFG_HungerAmount.Value = result3; break; case "Drowsy": CFG_DrowsyAmount.Value = result3; break; case "Curse": CFG_CurseAmount.Value = result3; break; case "Hot": CFG_HotAmount.Value = result3; break; case "Crab": CFG_CrabAmount.Value = result3; break; case "ExtraStamina": CFG_ExtraStaminaAmount.Value = result3; break; } } } else if (text2.StartsWith("DURATION_")) { string text7 = text2.Substring(9); if (float.TryParse(text3, out var result4)) { switch (text7) { case "Poison": CFG_PoisonDuration.Value = result4; break; case "Cold": CFG_ColdDuration.Value = result4; break; case "FasterBoi": CFG_FasterBoiDuration.Value = result4; break; case "InfiniteStamina": CFG_InfiniteStaminaDuration.Value = result4; break; case "Invincibility": CFG_InvincibilityDuration.Value = result4; break; } } } else if (text2.StartsWith("MOVESPEED_")) { if (float.TryParse(text3, out var result5)) { CFG_FasterBoiMoveSpeed.Value = result5; } } else if (text2.StartsWith("CLIMBSPEED_") && float.TryParse(text3, out result6)) { CFG_FasterBoiClimbSpeed.Value = result6; } } } catch (Exception) { } } private static bool IsBlowDart(Item item) { if (!Object.op_Implicit((Object)(object)item)) { return false; } return (Object)(object)((Component)item).GetComponent<Action_RaycastDart>() != (Object)null; } private static void SetItemUIName(Item item, string name) { if (!Object.op_Implicit((Object)(object)item)) { return; } try { Type type = AccessTools.Inner(typeof(Item), "ItemUIData"); if (type == null) { return; } FieldInfo fieldInfo = null; foreach (FieldInfo declaredField in AccessTools.GetDeclaredFields(typeof(Item))) { if (declaredField.FieldType == type) { fieldInfo = declaredField; break; } } if (fieldInfo == null) { return; } object obj = fieldInfo.GetValue(item); if (obj == null) { obj = Activator.CreateInstance(type); } FieldInfo fieldInfo2 = AccessTools.Field(type, "itemName"); if (!(fieldInfo2 == null)) { if (type.IsValueType) { object obj2 = obj; fieldInfo2.SetValue(obj2, name); fieldInfo.SetValue(item, obj2); } else { fieldInfo2.SetValue(obj, name); fieldInfo.SetValue(item, obj); } } } catch (Exception) { } } private static string GetDartName(BlowDartType dartType) { return dartType switch { BlowDartType.Injury => "Injury Blow Gun", BlowDartType.Poison => "Poison Blow Gun", BlowDartType.Cold => "Frosting Blow Gun", BlowDartType.Hunger => "Hunger Blow Gun", BlowDartType.Drowsy => "Drowsy Blow Gun", BlowDartType.Curse => "Curse Blow Gun", BlowDartType.Hot => "Burning Blow Gun", BlowDartType.Crab => "Crabby Blow Gun", BlowDartType.InfiniteStamina => "Infinite Stamina Blow Gun", BlowDartType.ExtraStamina => "Extra Stamina Blow Gun", BlowDartType.FasterBoi => "Energy Blow Gun", BlowDartType.AfflictionClearer => "Affliction Clearer Blow Gun", BlowDartType.Chaos => "Pandoras Blow Gun", BlowDartType.Invincibility => "Invincibility Blow Gun", _ => "Modified Blow Gun", }; } private static Affliction CreateAffliction(BlowDartType dartType) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Expected O, but got Unknown //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Expected O, but got Unknown //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Expected O, but got Unknown //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Expected O, but got Unknown //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Expected O, but got Unknown //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Expected O, but got Unknown //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Expected O, but got Unknown //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Expected O, but got Unknown //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Expected O, but got Unknown //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Expected O, but got Unknown switch (dartType) { case BlowDartType.Injury: return (Affliction)new Affliction_AdjustStatus((STATUSTYPE)0, CFG_InjuryAmount.Value, 0f); case BlowDartType.Poison: return (Affliction)new Affliction_PoisonOverTime(1f, 0f, 0.5f); case BlowDartType.Cold: return (Affliction)new Affliction_AdjustColdOverTime(0.5f, 1f); case BlowDartType.Hunger: return (Affliction)new Affliction_AdjustStatus((STATUSTYPE)1, CFG_HungerAmount.Value, 0f); case BlowDartType.Drowsy: return (Affliction)new Affliction_AdjustStatus((STATUSTYPE)6, CFG_DrowsyAmount.Value, 0f); case BlowDartType.Curse: return (Affliction)new Affliction_AdjustStatus((STATUSTYPE)5, CFG_CurseAmount.Value, 0f); case BlowDartType.Hot: return (Affliction)new Affliction_AdjustStatus((STATUSTYPE)8, CFG_HotAmount.Value, 0f); case BlowDartType.Crab: return (Affliction)new Affliction_AdjustStatus((STATUSTYPE)4, CFG_CrabAmount.Value, 0f); case BlowDartType.InfiniteStamina: return (Affliction)new Affliction_InfiniteStamina(CFG_InfiniteStaminaDuration.Value); case BlowDartType.ExtraStamina: return (Affliction)new Affliction_AddBonusStamina(CFG_ExtraStaminaAmount.Value, 0f); case BlowDartType.FasterBoi: { Affliction_FasterBoi val = new Affliction_FasterBoi(); ((Affliction)val).totalTime = CFG_FasterBoiDuration.Value; val.moveSpeedMod = CFG_FasterBoiMoveSpeed.Value; val.climbSpeedMod = CFG_FasterBoiClimbSpeed.Value; val.drowsyOnEnd = 0f; val.climbDelay = 0f; return (Affliction)(object)val; } case BlowDartType.AfflictionClearer: return (Affliction)new Affliction_ClearAllStatus(false, 0f); case BlowDartType.Chaos: return (Affliction)new Affliction_Chaos(0.5f, 0.2f, 0.3f, 0.1f); case BlowDartType.Invincibility: return (Affliction)new Affliction_BingBongShield { totalTime = CFG_InvincibilityDuration.Value }; default: return (Affliction)new Affliction_AdjustStatus((STATUSTYPE)0, CFG_InjuryAmount.Value, 0f); } } private static BlowDartType GetRandomDartType() { if (Random.Range(0f, 1f) < CFG_UnmodifiedChance.Value) { return BlowDartType.Unmodified; } List<(BlowDartType, float)> list = new List<(BlowDartType, float)>(); if (CFG_EnableInjury.Value) { list.Add((BlowDartType.Injury, CFG_InjuryChance.Value)); } if (CFG_EnablePoison.Value) { list.Add((BlowDartType.Poison, CFG_PoisonChance.Value)); } if (CFG_EnableCold.Value) { list.Add((BlowDartType.Cold, CFG_ColdChance.Value)); } if (CFG_EnableHunger.Value) { list.Add((BlowDartType.Hunger, CFG_HungerChance.Value)); } if (CFG_EnableDrowsy.Value) { list.Add((BlowDartType.Drowsy, CFG_DrowsyChance.Value)); } if (CFG_EnableCurse.Value) { list.Add((BlowDartType.Curse, CFG_CurseChance.Value)); } if (CFG_EnableHot.Value) { list.Add((BlowDartType.Hot, CFG_HotChance.Value)); } if (CFG_EnableCrab.Value) { list.Add((BlowDartType.Crab, CFG_CrabChance.Value)); } if (CFG_EnableInfiniteStamina.Value) { list.Add((BlowDartType.InfiniteStamina, CFG_InfiniteStaminaChance.Value)); } if (CFG_EnableExtraStamina.Value) { list.Add((BlowDartType.ExtraStamina, CFG_ExtraStaminaChance.Value)); } if (CFG_EnableFasterBoi.Value) { list.Add((BlowDartType.FasterBoi, CFG_FasterBoiChance.Value)); } if (CFG_EnableAfflictionClearer.Value) { list.Add((BlowDartType.AfflictionClearer, CFG_AfflictionClearerChance.Value)); } if (CFG_EnablePandoras.Value) { list.Add((BlowDartType.Chaos, CFG_PandorasChance.Value)); } if (CFG_EnableInvincibility.Value) { list.Add((BlowDartType.Invincibility, CFG_InvincibilityChance.Value)); } if (list.Count == 0) { return BlowDartType.Unmodified; } float num = 0f; foreach (var item in list) { num += item.Item2; } if (num <= 0f) { return BlowDartType.Unmodified; } float num2 = Random.Range(0f, num); float num3 = 0f; foreach (var item2 in list) { num3 += item2.Item2; if (num2 <= num3) { return item2.Item1; } } return list[0].Item1; } private static void ModifyToDartType(Item dartItem, BlowDartType dartType) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) try { Action_RaycastDart component = ((Component)dartItem).GetComponent<Action_RaycastDart>(); if (!((Object)(object)component == (Object)null)) { Affliction val = CreateAffliction(dartType); component.afflictionsOnHit = (Affliction[])(object)new Affliction[1] { val }; string dartName = GetDartName(dartType); SetItemUIName(dartItem, dartName); IntItemData data = dartItem.GetData<IntItemData>(BlowDartDataEntryKey.DartType); data.Value = (int)dartType; } } catch (Exception) { } } public void OnJoinedRoom() { CheckHostStatus(); } public void OnLeftRoom() { IsHost = false; allowBlowDartModification = false; } public void OnMasterClientSwitched(Player _) { CheckHostStatus(); } public void OnPlayerEnteredRoom(Player _) { if (PhotonNetwork.IsMasterClient && photonManager != null) { PublishHostConfig(); } } public void OnPlayerLeftRoom(Player _) { } public void OnRoomPropertiesUpdate(Hashtable _) { } public void OnPlayerPropertiesUpdate(Player _, Hashtable _1) { } public void OnConnected() { } public void OnConnectedToMaster() { } public void OnDisconnected(DisconnectCause _) { } public void OnRegionListReceived(RegionHandler _) { } public void OnCustomAuthenticationResponse(Dictionary<string, object> _) { } public void OnCustomAuthenticationFailed(string _) { } public void OnFriendListUpdate(List<FriendInfo> _) { } public void OnCreatedRoom() { } public void OnCreateRoomFailed(short _, string _1) { } public void OnJoinRoomFailed(short _, string _1) { } public void OnJoinRandomFailed(short _, string _1) { } } }