Decompiled source of Emergency Dice Updated KR v0.0.1
DicePoltergeistCompat.dll
Decompiled 3 days agousing System; 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 BepInEx.Bootstrap; using BepInEx.Configuration; using DicePoltergeistCompat.NetcodePatcher; using GameNetcodeStuff; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using MysteryDice; using MysteryDice.Dice; using Poltergeist; using Poltergeist.GhostInteractibles; using Unity.Netcode; 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 = ".NET Standard 2.1")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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 DicePoltergeistCompat { internal class DiceGhostInteractible : NetworkedInteractible { private DieBehaviour dice; protected override void DoSetup() { dice = ((Component)this).GetComponentInParent<DieBehaviour>(); } public override float GetCost() { return Plugin.energyUsage.Value; } public override float Interact(Transform playerTransform) { if ((Object)(object)StartOfRound.Instance == (Object)null) { return 0f; } if (SpectatorCamController.instance.Power < ((NetworkedInteractible)this).GetCost()) { return 0f; } if ((Object)(object)dice == (Object)null || dice.isRolling || !((GrabbableObject)dice).grabbable || StartOfRound.Instance.inShipPhase || !StartOfRound.Instance.shipHasLanded || (Object)(object)((GrabbableObject)dice).playerHeldBy != (Object)null) { return 0f; } RollDiceServerRpc(((NetworkBehaviour)dice).NetworkObject.NetworkObjectId, Array.IndexOf(StartOfRound.Instance.allPlayerScripts, SpectatorCamController.instance.ClientPlayer)); return ((NetworkedInteractible)this).GetCost(); } [ServerRpc(RequireOwnership = true)] private void RollDiceServerRpc(ulong diceId, int playerID) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Invalid comparison between Unknown and I4 //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3295779142u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, diceId); BytePacker.WriteValueBitPacked(val2, playerID); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3295779142u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(diceId, out var value)) { DieBehaviour component = ((Component)value).GetComponent<DieBehaviour>(); if (!((Object)(object)component == (Object)null) && !component.isRolling && ((GrabbableObject)component).grabbable && !((Object)(object)((GrabbableObject)component).playerHeldBy != (Object)null) && !StartOfRound.Instance.inShipPhase && StartOfRound.Instance.shipHasLanded) { PlayerControllerB val3 = StartOfRound.Instance.allPlayerScripts[playerID]; ((MonoBehaviour)component).StartCoroutine(component.doStuff(7510501, val3)); } } } public override string GetTipText() { return (SpectatorCamController.instance.Power < ((NetworkedInteractible)this).GetCost()) ? $"Not Enough Power ({((NetworkedInteractible)this).GetCost():F0})" : $"Roll Dice : [{PoltergeistCustomInputs.GetInteractString()}] ({((NetworkedInteractible)this).GetCost():F0})"; } protected override void __initializeVariables() { ((NetworkedInteractible)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(3295779142u, new RpcReceiveHandler(__rpc_handler_3295779142), "RollDiceServerRpc"); ((NetworkedInteractible)this).__initializeRpcs(); } private static void __rpc_handler_3295779142(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { ulong diceId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref diceId); int playerID = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerID); target.__rpc_exec_stage = (__RpcExecStage)1; ((DiceGhostInteractible)(object)target).RollDiceServerRpc(diceId, playerID); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "DiceGhostInteractible"; } } [BepInPlugin("Slayer6409.DicePoltergeistCompat", "DicePoltergeistCompat", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public static AssetBundle LoadedAssets; public static GameObject GhostInteractiblePrefab; private readonly Harmony harmony = new Harmony("Slayer6409.DicePoltergeistCompat"); public static ConfigEntry<bool> poltergeistEnabled; public static ConfigEntry<float> energyUsage; private void Awake() { if (!Chainloader.PluginInfos.ContainsKey("coderCleric.Poltergeist")) { MysteryDice.CustomLogger.LogInfo((object)"Poltergeist not found disabling Poltergeist Compatability"); return; } LoadedAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "mysterydicepoltergeistcompat")); GhostInteractiblePrefab = LoadedAssets.LoadAsset<GameObject>("GhostInteractiblePrefab"); poltergeistEnabled = MysteryDice.BepInExConfig.Bind<bool>("Poltergeist", "Enabled", true, "If poltergeist compatability is enabled"); if (poltergeistEnabled.Value) { energyUsage = MysteryDice.BepInExConfig.Bind<float>("Poltergeist", "Energy Usage", 51f, "How much energy it takes to roll dice"); NetworkPrefabs.RegisterNetworkPrefab(GhostInteractiblePrefab); harmony.PatchAll(); } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "DicePoltergeistCompat"; public const string PLUGIN_NAME = "DicePoltergeistCompat"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace DicePoltergeistCompat.Patches { [HarmonyPatch(typeof(DieBehaviour), "Start")] internal class DieBehaviourPatch { private static void Postfix(DieBehaviour __instance) { if (NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer) { GameObject val = Object.Instantiate<GameObject>(Plugin.GhostInteractiblePrefab, ((Component)__instance).transform); val.GetComponent<NetworkObject>().Spawn(false); val.transform.parent = ((Component)__instance).transform; } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace DicePoltergeistCompat.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }
DiceStrangerThingsIntegration.dll
Decompiled 3 days agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using DiceStrangerThingsIntegration.NetcodePatcher; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using MoreCompany.Cosmetics; using MysteryDice; using StrangerThings.Registries; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: IgnoresAccessChecksTo("MysteryDice")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("DiceStrangerThingsIntegration")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Twitch Integration for The Dice Mod")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("DiceStrangerThingsIntegration")] [assembly: AssemblyTitle("DiceStrangerThingsIntegration")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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 DiceStrangerThingsIntegration { [BepInPlugin("Slayer6409.DiceStrangerThingsIntegration", "Dice Stranger Things Integration", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private const string modGUID = "Slayer6409.DiceStrangerThingsIntegration"; private const string modName = "Dice Stranger Things Integration"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Slayer6409.DiceStrangerThingsIntegration"); private void Awake() { if (MysteryDice.TwitchEnabled.Value && Chainloader.PluginInfos.ContainsKey("Lega.StrangerThings")) { MysteryDice.CustomLogger.LogInfo((object)"Dice Stranger Things Integration has been loaded!"); harmony.PatchAll(); } } } public class StrangerThingsCompat { [HarmonyPatch] internal static class StrangerThingsScanNodePatch { [HarmonyPostfix] [HarmonyPatch(typeof(DimensionRegistry), "UpdateVisibilityState")] private static void UpdateVisibilityState_Postfix(GameObject entity) { try { if ((Object)(object)entity == (Object)null) { return; } PlayerControllerB localPlayerController = StartOfRound.Instance.localPlayerController; if ((Object)(object)localPlayerController == (Object)null) { return; } bool flag = DimensionRegistry.AreInSameDimension(((Component)localPlayerController).gameObject, entity); PlayerControllerB value = default(PlayerControllerB); if (entity.gameObject.TryGetComponent<PlayerControllerB>(ref value) && Networker.Instance.scanNodesByPlayerIndex.TryGetValue(Array.IndexOf(StartOfRound.Instance.allPlayerScripts, value), out var value2)) { value2.SetActive(flag); } MaskedPlayerEnemy val = default(MaskedPlayerEnemy); if (entity.TryGetComponent<MaskedPlayerEnemy>(ref val)) { if (Chainloader.PluginInfos.TryGetValue("me.swipez.melonloader.morecompany", out var _)) { ((Behaviour)((Component)((Component)val).transform).GetComponentInChildren<CosmeticApplication>()).enabled = flag; } if (Networker.Instance.MimicTrackers.TryGetValue(val, out var value4)) { ((Behaviour)value4).enabled = flag; } } } catch (Exception) { } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "DiceStrangerThingsIntegration"; public const string PLUGIN_NAME = "DiceStrangerThingsIntegration"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace DiceStrangerThingsIntegration.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }
DiceTwitchIntegration.dll
Decompiled 3 days agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using DiceTwitchIntegration.NetcodePatcher; using HarmonyLib; using LethalConfig; using LethalConfig.ConfigItems; using Microsoft.CodeAnalysis; using MysteryDice; using MysteryDice.Effects; using MysteryDice.Patches; using TwitchChatAPI; using TwitchChatAPI.Objects; 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 = ".NET Standard 2.1")] [assembly: AssemblyCompany("DiceTwitchIntegration")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Twitch Integration for The Dice Mod")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("DiceTwitchIntegration")] [assembly: AssemblyTitle("DiceTwitchIntegration")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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 DiceTwitchIntegration { public class ConfigManager { public static void SetupLethalConfig() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown BoolCheckBoxConfigItem val = new BoolCheckBoxConfigItem(TwitchHandler.enableSubs); IntInputFieldConfigItem val2 = new IntInputFieldConfigItem(TwitchHandler.cheerMin); IntInputFieldConfigItem val3 = new IntInputFieldConfigItem(TwitchHandler.cheerGood); IntInputFieldConfigItem val4 = new IntInputFieldConfigItem(TwitchHandler.cheerAwful); IntInputFieldConfigItem val5 = new IntInputFieldConfigItem(TwitchHandler.cheerGreat); IntInputFieldConfigItem val6 = new IntInputFieldConfigItem(TwitchHandler.cheerMixed); IntInputFieldConfigItem val7 = new IntInputFieldConfigItem(TwitchHandler.cheerBad); BoolCheckBoxConfigItem val8 = new BoolCheckBoxConfigItem(TwitchHandler.enableCheer); BoolCheckBoxConfigItem val9 = new BoolCheckBoxConfigItem(TwitchHandler.enableRaid); BoolCheckBoxConfigItem val10 = new BoolCheckBoxConfigItem(TwitchHandler.enableChatEvents); IntInputFieldConfigItem val11 = new IntInputFieldConfigItem(TwitchHandler.chattersMin); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val3); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val4); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val5); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val6); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val7); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val8); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val9); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val10); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val11); } } [BepInPlugin("Slayer6409.DiceTwitchIntegration", "Dice Twitch Integration", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private const string modGUID = "Slayer6409.DiceTwitchIntegration"; private const string modName = "Dice Twitch Integration"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Slayer6409.DiceTwitchIntegration"); public static bool LethalConfigPresent; private void Awake() { if (MysteryDice.TwitchEnabled.Value && Chainloader.PluginInfos.ContainsKey("com.github.zehsteam.TwitchChatAPI")) { if (Chainloader.PluginInfos.ContainsKey("ainavt.lc.lethalconfig")) { LethalConfigPresent = true; } MysteryDice.CustomLogger.LogInfo((object)"Dice Twitch Integration has been loaded!"); TwitchHandler.doConfigStuff(); TwitchHandler.Initialize(); harmony.PatchAll(); if (LethalConfigPresent) { ConfigManager.SetupLethalConfig(); } } } } public class TwitchHandler { [CompilerGenerated] private sealed class <waitReset>d__16 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <waitReset>d__16(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; hasRan = true; Networker.Instance.QueueRandomDiceEffectServerRPC("Twitch chatters:"); <>2__current = (object)new WaitForSeconds(120f); <>1__state = 1; return true; case 1: <>1__state = -1; evnt = new HashSet<string>(); hasRan = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static ConfigEntry<bool> enableSubs; public static ConfigEntry<bool> enableCheer; public static ConfigEntry<int> cheerMin; public static ConfigEntry<int> cheerGood; public static ConfigEntry<int> cheerGreat; public static ConfigEntry<int> cheerAwful; public static ConfigEntry<int> cheerBad; public static ConfigEntry<int> cheerMixed; public static ConfigEntry<bool> enableRaid; public static ConfigEntry<bool> enableChatEvents; public static ConfigEntry<int> chattersMin; public static HashSet<string> evnt = new HashSet<string>(); public static bool hasRan = false; public static void Initialize() { try { API.OnMessage += OnMessageHandler; API.OnCheer += OnCheerHandler; API.OnSub += OnSubHandler; API.OnRaid += OnRaidHandler; Application.quitting += delegate { API.OnMessage -= OnMessageHandler; API.OnCheer -= OnCheerHandler; API.OnSub -= OnSubHandler; API.OnRaid -= OnRaidHandler; }; } catch (Exception arg) { MysteryDice.CustomLogger.LogError((object)$"Failed to initialize TwitchIntegrationManager. {arg}"); } } public static void doConfigStuff() { enableSubs = MysteryDice.BepInExConfig.Bind<bool>("Twitch", "Enable Sub", true, "If Twitch Subscription events are enabled"); enableCheer = MysteryDice.BepInExConfig.Bind<bool>("Twitch", "Enable Cheer", true, "If Twitch Cheer events are enabled"); enableChatEvents = MysteryDice.BepInExConfig.Bind<bool>("Twitch", "Enable Chat Events", true, "If Twitch Chat events are enabled "); chattersMin = MysteryDice.BepInExConfig.Bind<int>("Twitch", "Chatters Min", 5, "How many Chatters are required for an event to start"); enableRaid = MysteryDice.BepInExConfig.Bind<bool>("Twitch", "Enable Raids", true, "If Twitch Raid events are enabled (Experimental so off by default)"); cheerMin = MysteryDice.BepInExConfig.Bind<int>("Twitch", "Cheer Min", 50, "How many bits required before a dice event is triggered"); cheerGreat = MysteryDice.BepInExConfig.Bind<int>("Twitch", "Cheer Great", 1, "The ones digit for spawning a Great Effect"); cheerGood = MysteryDice.BepInExConfig.Bind<int>("Twitch", "Cheer Good", 2, "The ones digit for spawning a Good Effect"); cheerMixed = MysteryDice.BepInExConfig.Bind<int>("Twitch", "Cheer Mixed", 3, "The ones digit for spawning a Mixed Effect"); cheerBad = MysteryDice.BepInExConfig.Bind<int>("Twitch", "Cheer Bad", 4, "The ones digit for spawning a Bad Effect"); cheerAwful = MysteryDice.BepInExConfig.Bind<int>("Twitch", "Cheer Awful", 5, "The ones digit for spawning a Awful Effect"); } public static void OnMessageHandler(TwitchMessage message) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) TwitchUser user = ((TwitchMessage)(ref message)).User; if (((TwitchUser)(ref user)).Username == "slayer6409") { string text = ((TwitchMessage)(ref message)).Message.ToUpper(); if (((TwitchMessage)(ref message)).Message.ToUpper().Contains("RANDOM") && ((TwitchMessage)(ref message)).Message.ToUpper().Contains("DICE")) { if (text.Contains("GOOD")) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)3, "twitch"); } else if (text.Contains("BAD")) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)1, "twitch"); } else if (text.Contains("AWFUL")) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)0, "twitch"); } else if (text.Contains("GREAT")) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)4, "twitch"); } else if (text.Contains("MIXED")) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)2, "twitch"); } else { Networker.Instance.QueueRandomDiceEffectServerRPC("Twitch"); } } else if (((TwitchMessage)(ref message)).Message.ToUpper() == "SUPERTEST") { Test(); } } if (enableChatEvents.Value && ((TwitchMessage)(ref message)).Message.ToUpper().StartsWith("!EVENT")) { Debug.Log((object)"test"); if (evnt.Count == 0) { Misc.SafeTipMessage("Dice Twitch event started", $"{chattersMin.Value - 1} more users needed to trigger an event! Do !event to join the event!"); } HashSet<string> hashSet = evnt; user = ((TwitchMessage)(ref message)).User; hashSet.Add(((TwitchUser)(ref user)).Username); if (evnt.Count >= chattersMin.Value && !hasRan) { ((MonoBehaviour)StartOfRound.Instance).StartCoroutine(waitReset()); } } } [IteratorStateMachine(typeof(<waitReset>d__16))] public static IEnumerator waitReset() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <waitReset>d__16(0); } public static void Test() { Misc.SpawnEnemyForced(GetEnemies.Lasso, 4, true, false); } private static void OnSubHandler(TwitchSubEvent subEvent) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Invalid comparison between Unknown and I4 //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Invalid comparison between Unknown and I4 //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Invalid comparison between Unknown and I4 //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Invalid comparison between Unknown and I4 if (enableSubs.Value) { TwitchUser user = ((TwitchEvent)subEvent).User; string displayName = ((TwitchUser)(ref user)).DisplayName; int num = 0; if ((int)subEvent.Tier == 1) { num = 1; } else if ((int)subEvent.Tier == 2) { num = 2; } else if ((int)subEvent.Tier == 3) { num = 3; } if ((int)subEvent.Type == 3) { num *= subEvent.GiftCount; } for (int i = 0; i < num; i++) { Networker.Instance.QueueRandomDiceEffectServerRPC("Twitch:" + displayName); } } } private static void OnCheerHandler(TwitchCheerEvent cheerEvent) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) TwitchUser user = ((TwitchEvent)cheerEvent).User; string displayName = ((TwitchUser)(ref user)).DisplayName; if (enableCheer.Value && cheerEvent.CheerAmount >= cheerMin.Value) { int num = cheerEvent.CheerAmount % 10; if (num == cheerAwful.Value) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)0, displayName); } else if (num == cheerGood.Value) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)3, displayName); } else if (num == cheerGreat.Value) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)4, displayName); } else if (num == cheerBad.Value) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)1, displayName); } else if (num == cheerMixed.Value) { Networker.Instance.QueueSelectTypeServerRPC((EffectType)2, displayName); } else { Networker.Instance.QueueRandomDiceEffectServerRPC("Twitch:" + displayName); } } } private static void OnRaidHandler(TwitchRaidEvent raidEvent) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) TwitchUser user = ((TwitchEvent)raidEvent).User; string displayName = ((TwitchUser)(ref user)).DisplayName; if (enableRaid.Value) { int num = raidEvent.ViewerCount / 5; if (num > 5) { num = 5; } for (int i = 0; i < num; i++) { Networker.Instance.QueueRandomDiceEffectServerRPC("Twitch:" + displayName); } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "DiceTwitchIntegration"; public const string PLUGIN_NAME = "DiceTwitchIntegration"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace DiceTwitchIntegration.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }
DiceWeatherRegistryCompat.dll
Decompiled 3 days agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using DiceWeatherRegistryCompat.Effects; using DiceWeatherRegistryCompat.NetcodePatcher; using HarmonyLib; using Microsoft.CodeAnalysis; using MysteryDice; using MysteryDice.Dice; using MysteryDice.Effects; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; using WeatherRegistry; [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 = ".NET Standard 2.1")] [assembly: AssemblyCompany("DiceWeatherRegistryCompat")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Dice Weather Registry Compatibility")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("DiceWeatherRegistryCompat")] [assembly: AssemblyTitle("DiceWeatherRegistryCompat")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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 DiceWeatherRegistryCompat { public class Networker : NetworkBehaviour { public static Networker Instance; public override void OnNetworkSpawn() { Instance = this; MysteryDice.CustomLogger.LogInfo((object)"WeatherReg OnNetworkSpawn"); ((NetworkBehaviour)this).OnNetworkSpawn(); if (!((NetworkBehaviour)this).IsServer) { } } [ServerRpc(RequireOwnership = false)] public void SetWeatherServerRpc(string weather) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3171511287u, val, (RpcDelivery)0); bool flag = weather != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(weather, false); } ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3171511287u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; string weather2 = weather; WeatherController.ChangeCurrentWeather(WeatherManager.Weathers.Find((Weather x) => x.name == weather2)); } } [ServerRpc(RequireOwnership = false)] public void AddWeatherServerRpc(string weather) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2812204045u, val, (RpcDelivery)0); bool flag = weather != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(weather, false); } ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2812204045u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; string weather2 = weather; WeatherController.AddWeatherEffect(WeatherManager.Weathers.Find((Weather x) => x.name == weather2)); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(3171511287u, new RpcReceiveHandler(__rpc_handler_3171511287), "SetWeatherServerRpc"); ((NetworkBehaviour)this).__registerRpc(2812204045u, new RpcReceiveHandler(__rpc_handler_2812204045), "AddWeatherServerRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_3171511287(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); string weatherServerRpc = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref weatherServerRpc, false); } target.__rpc_exec_stage = (__RpcExecStage)1; ((Networker)(object)target).SetWeatherServerRpc(weatherServerRpc); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2812204045(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); string weather = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref weather, false); } target.__rpc_exec_stage = (__RpcExecStage)1; ((Networker)(object)target).AddWeatherServerRpc(weather); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "Networker"; } } [BepInPlugin("Slayer6409.DiceWeatherRegistryCompat", "DiceWeatherRegistryCompat", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__5_0; public static UnityAction <>9__5_1; internal void <addButtons>b__5_0() { DebugMenuStuff.clearMainViewport(); setWeather(); } internal void <addButtons>b__5_1() { DebugMenuStuff.clearMainViewport(); AddWeather(); } } public static AssetBundle LoadedAssets; public static GameObject NetworkerPrefab; private readonly Harmony harmony = new Harmony("Slayer6409.DiceWeatherRegistryCompat"); private void Awake() { if (!Chainloader.PluginInfos.ContainsKey("mrov.WeatherRegistry")) { MysteryDice.CustomLogger.LogInfo((object)"WeatherRegistry not found disabling WeatherRegistry Compatability"); return; } LoadedAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "mysterydiceweatherregcompat")); NetworkerPrefab = LoadedAssets.LoadAsset<GameObject>("Networker"); NetworkerPrefab.AddComponent<Networker>(); DebugMenuStuff.OnDebugMenuOpen += debugMenuOpened; DieBehaviour.SteveNames.Add(new AddWeather().Name); MysteryDice.RegisterNewEffect((IEffect)(object)new AddWeather(), false, false); DieBehaviour.SteveNames.Add(new ClearWeather().Name); MysteryDice.RegisterNewEffect((IEffect)(object)new ClearWeather(), false, false); DieBehaviour.SteveNames.Add(new RandomWeather().Name); MysteryDice.RegisterNewEffect((IEffect)(object)new RandomWeather(), false, false); NetcodeWeaver(); harmony.PatchAll(); } private void debugMenuOpened() { DebugMenuStuff.OnSpecialFunctionsAdded += addButtons; } private void addButtons(Transform scrollContent) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown if (!ButtonExists(scrollContent, "Set Weather")) { object obj = <>c.<>9__5_0; if (obj == null) { UnityAction val = delegate { DebugMenuStuff.clearMainViewport(); setWeather(); }; <>c.<>9__5_0 = val; obj = (object)val; } CreateButton(scrollContent, "Set Weather", (UnityAction)obj); } if (ButtonExists(scrollContent, "Add Weather")) { return; } object obj2 = <>c.<>9__5_1; if (obj2 == null) { UnityAction val2 = delegate { DebugMenuStuff.clearMainViewport(); AddWeather(); }; <>c.<>9__5_1 = val2; obj2 = (object)val2; } CreateButton(scrollContent, "Add Weather", (UnityAction)obj2); } private bool ButtonExists(Transform parent, string text) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown foreach (Transform item in parent) { Transform val = item; TMP_Text component = ((Component)val.GetChild(0)).GetComponent<TMP_Text>(); if ((Object)(object)component != (Object)null && component.text == text) { return true; } } return false; } private void CreateButton(Transform parent, string label, UnityAction onClick) { GameObject val = Object.Instantiate<GameObject>(MysteryDice.DebugSubButtonPrefab, parent); TMP_Text component = ((Component)val.transform.GetChild(0)).GetComponent<TMP_Text>(); component.text = label; Button component2 = val.GetComponent<Button>(); ((UnityEvent)component2.onClick).AddListener(onClick); } public static void AddWeather() { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown List<string> weathers = WeatherRegistryCompat.getWeathers(); foreach (string weather in weathers) { GameObject val = Object.Instantiate<GameObject>(MysteryDice.DebugMenuButtonPrefab, DebugMenuStuff.mainScrollContent); TMP_Text component = ((Component)val.transform.GetChild(0)).GetComponent<TMP_Text>(); component.text = weather; Button component2 = val.GetComponent<Button>(); ((UnityEvent)component2.onClick).AddListener((UnityAction)delegate { Networker.Instance.AddWeatherServerRpc(weather); DebugMenuStuff.CloseSelectMenu(false); }); } } public static void setWeather() { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown List<string> weathers = WeatherRegistryCompat.getWeathers(); foreach (string weather in weathers) { GameObject val = Object.Instantiate<GameObject>(MysteryDice.DebugMenuButtonPrefab, DebugMenuStuff.mainScrollContent); TMP_Text component = ((Component)val.transform.GetChild(0)).GetComponent<TMP_Text>(); component.text = weather; Button component2 = val.GetComponent<Button>(); ((UnityEvent)component2.onClick).AddListener((UnityAction)delegate { Networker.Instance.SetWeatherServerRpc(weather); DebugMenuStuff.CloseSelectMenu(false); }); } } private static void NetcodeWeaver() { try { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } catch (Exception ex) { Debug.Log((object)ex); } } } public class WeatherRegistryCompat : MonoBehaviour { public static List<string> getWeathers() { List<string> list = new List<string>(); foreach (Weather weather in WeatherManager.Weathers) { list.Add(weather.name); } return list; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "DiceWeatherRegistryCompat"; public const string PLUGIN_NAME = "DiceWeatherRegistryCompat"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace DiceWeatherRegistryCompat.Patches { [HarmonyPatch(typeof(GameNetworkManager))] public class GameNetworkManagerPatch { [HarmonyPostfix] [HarmonyPatch("Start")] public static void AddPrefab(ref GameNetworkManager __instance) { ((Component)__instance).GetComponent<NetworkManager>().AddNetworkPrefab(Plugin.NetworkerPrefab); } } [HarmonyPatch(typeof(StartOfRound))] public class StartOfRoundPatch { [HarmonyPostfix] [HarmonyPatch("Start")] public static void InstantiateNetworker(StartOfRound __instance) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) if (NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer) { GameObject val = Object.Instantiate<GameObject>(Plugin.NetworkerPrefab, Vector3.zero, Quaternion.identity); val.GetComponent<NetworkObject>().Spawn(true); } } } } namespace DiceWeatherRegistryCompat.Effects { public class AddWeather : IEffect { public string Name => "Add Weather"; public EffectType Outcome => (EffectType)0; public bool ShowDefaultTooltip => false; public string Tooltip => "Adds a weather to the day"; public void Use() { List<string> list = WeatherRegistryCompat.getWeathers().ToList(); Networker.Instance.AddWeatherServerRpc(list[Random.Range(0, list.Count)]); } } internal class ClearWeather : IEffect { public string Name => "Clear Weather"; public EffectType Outcome => (EffectType)4; public bool ShowDefaultTooltip => false; public string Tooltip => "Sunshiny Day"; public void Use() { Networker.Instance.SetWeatherServerRpc("None"); } } internal class RandomWeather : IEffect { public string Name => "Random Weather"; public EffectType Outcome => (EffectType)1; public bool ShowDefaultTooltip => false; public string Tooltip => "New weather time!"; public void Use() { List<string> list = WeatherRegistryCompat.getWeathers().ToList(); Networker.Instance.SetWeatherServerRpc(list[Random.Range(0, list.Count)]); } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace DiceWeatherRegistryCompat.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }
MysteryDice.dll
Decompiled 3 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using BombCollar; using CodeRebirth.src.Content.Enemies; using CodeRebirth.src.Content.Maps; using CodeRebirth.src.MiscScripts; using Dawn; using Dawn.Utils; using DiversityRemastered; using DiversityRemastered.Misc; using GameNetcodeStuff; using HarmonyLib; using JetBrains.Annotations; using KaimiraGames; using LethalCompanyInputUtils.Api; using LethalConfig; using LethalConfig.ConfigItems; using LethalConfig.ConfigItems.Options; using LethalLib.Extras; using LethalLib.Modules; using Microsoft.CodeAnalysis; using MoreCompany.Cosmetics; using MysteryDice; using MysteryDice.CompatThings; using MysteryDice.Dice; using MysteryDice.Effects; using MysteryDice.Extensions; using MysteryDice.Gal; using MysteryDice.MiscStuff; using MysteryDice.NetcodePatcher; using MysteryDice.Patches; using MysteryDice.Visual; using Newtonsoft.Json; using PathfindingLib.Jobs; using PathfindingLib.Utilities; using Surfaced; using TMPro; using TooManyEmotes; using TooManyEmotes.Props; using TooManyEmotes.UI; using Unity.Jobs; using Unity.Mathematics; using Unity.Netcode; using Unity.Netcode.Components; using UnityEngine; using UnityEngine.AI; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.Experimental.AI; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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; } } [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; } } } public class TargetRandomPlayer : MonoBehaviour { private NavMeshAgent agent; private PlayerControllerB target; public void Start() { agent = ((Component)this).gameObject.GetComponent<NavMeshAgent>(); target = Misc.GetRandomAlivePlayer(); } public void Update() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)target == (Object)null || target.isPlayerDead) { target = Misc.GetRandomAlivePlayer(); } agent.SetDestination(((Component)target).transform.position); } } public class Blinking : MonoBehaviour { public float BlinkingTime; private float BlinkingTimer; private GameObject GlowSign; private GameObject NormalSign; private bool Stop; public bool Glow { get; private set; } private void Start() { BlinkingTime = 0.5f; Glow = false; NormalSign = ((Component)((Component)this).transform.Find("Emergency Sign")).gameObject; GlowSign = ((Component)((Component)this).transform.Find("Emergency Sign Glowing")).gameObject; } public void HideSigns() { Stop = true; NormalSign.SetActive(false); GlowSign.SetActive(false); } private void Update() { if (Stop) { return; } BlinkingTimer -= Time.deltaTime; if (BlinkingTimer <= 0f) { BlinkingTimer = BlinkingTime; if (Glow) { Glow = false; NormalSign.SetActive(true); GlowSign.SetActive(false); } else { Glow = true; NormalSign.SetActive(false); GlowSign.SetActive(true); } } } } public class ColorGradient : MonoBehaviour { public Renderer CubeRenderer; public Renderer MoonRenderer; public Renderer SunRenderer; public Color NightColor = new Color(0.40392157f, 33f / 85f, 0.8862745f); public Color DayColor = new Color(1f, 0.81960785f, 0f); private float ColorTimer; private void Start() { CubeRenderer = ((Component)this).GetComponent<Renderer>(); SunRenderer = ((Component)((Component)this).transform.Find("Sun")).GetComponent<Renderer>(); MoonRenderer = ((Component)((Component)this).transform.Find("Moon")).GetComponent<Renderer>(); } private void Update() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) ColorTimer -= Time.deltaTime; if (!(ColorTimer >= 0f)) { ColorTimer = 1f; Color val = DayColor + (NightColor - DayColor) * TimeOfDay.Instance.normalizedTimeOfDay; CubeRenderer.material.SetColor("_BaseColor", val); CubeRenderer.material.SetColor("_EmissiveColor", val * 3f); float normalizedTimeOfDay = TimeOfDay.Instance.normalizedTimeOfDay; float num = 1f - normalizedTimeOfDay; MoonRenderer.material.SetColor("_BaseColor", new Color(1f, 1f, 1f, normalizedTimeOfDay)); SunRenderer.material.SetColor("_BaseColor", new Color(1f, 1f, 1f, num)); MoonRenderer.material.SetColor("_UnlitColor", new Color(1f, 1f, 1f, normalizedTimeOfDay)); SunRenderer.material.SetColor("_UnlitColor", new Color(1f, 1f, 1f, num)); MoonRenderer.material.SetColor("_MainColor", new Color(1f, 1f, 1f, normalizedTimeOfDay)); SunRenderer.material.SetColor("_MainColor", new Color(1f, 1f, 1f, num)); } } } public class CycleSigns : MonoBehaviour { private class DiceVisuals { public Sprite Sprite; public Color ModelColor; public Color EmissionColor; public float Emission; public DiceVisuals(Sprite sprite, Color color, Color emissionColor, float emission) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) Sprite = sprite; ModelColor = color; EmissionColor = emissionColor; Emission = emission; } } public float CycleTime = 1f; private float CurrentTimer; private int CurrentSprite; private bool Stop; private SpriteRenderer SignSpriteRenderer; private SpriteRenderer SignSpriteRenderer2; private Renderer DiceRenderer; private List<DiceVisuals> Visuals = new List<DiceVisuals>(); private void Start() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) Visuals.Add(new DiceVisuals(global::MysteryDice.MysteryDice.WarningJester, Color.yellow, Color.yellow, 100f)); Visuals.Add(new DiceVisuals(global::MysteryDice.MysteryDice.WarningBracken, Color.yellow, Color.yellow, 100f)); Visuals.Add(new DiceVisuals(global::MysteryDice.MysteryDice.WarningDeath, Color.red, Color.red, 100f)); Visuals.Add(new DiceVisuals(global::MysteryDice.MysteryDice.WarningLuck, Color.green, Color.green, 300f)); SignSpriteRenderer = ((Component)((Component)this).transform.Find("Emergency Sign")).gameObject.GetComponent<SpriteRenderer>(); SignSpriteRenderer2 = ((Component)((Component)this).transform.Find("Emergency Sign2")).gameObject.GetComponent<SpriteRenderer>(); DiceRenderer = ((Component)this).gameObject.GetComponent<Renderer>(); } private void Update() { if (!Stop) { CurrentTimer -= Time.deltaTime; if (CurrentTimer <= 0f) { CurrentTimer = CycleTime; CycleSprite(); } } } private void CycleSprite() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) CurrentSprite++; if (CurrentSprite >= Visuals.Count) { CurrentSprite = 0; } SignSpriteRenderer.sprite = Visuals[CurrentSprite].Sprite; SignSpriteRenderer2.sprite = Visuals[CurrentSprite].Sprite; DiceRenderer.material.SetColor("_BaseColor", Visuals[CurrentSprite].ModelColor); DiceRenderer.material.SetColor("_EmissiveColor", Visuals[CurrentSprite].EmissionColor * Visuals[CurrentSprite].Emission); } public void HideSigns() { Stop = true; ((Renderer)((Component)SignSpriteRenderer).GetComponent<SpriteRenderer>()).enabled = false; ((Renderer)((Component)SignSpriteRenderer2).GetComponent<SpriteRenderer>()).enabled = false; } } namespace KaimiraGames { public class WeightedList<T> : IEnumerable<T>, IEnumerable { private readonly List<T> _list = new List<T>(); private readonly List<int> _weights = new List<int>(); private readonly List<int> _probabilities = new List<int>(); private readonly List<int> _alias = new List<int>(); private readonly Random _rand; private int _totalWeight; private bool _areAllProbabilitiesIdentical; private int _minWeight; private int _maxWeight; public WeightErrorHandlingType BadWeightErrorHandling { get; set; } public int TotalWeight => _totalWeight; public int MinWeight => _minWeight; public int MaxWeight => _maxWeight; public IReadOnlyList<T> Items => _list.AsReadOnly(); public T this[int index] => _list[index]; public int Count => _list.Count; public WeightedList(Random rand = null) { _rand = rand ?? new Random(); } public WeightedList(ICollection<WeightedListItem<T>> listItems, Random rand = null) { _rand = rand ?? new Random(); foreach (WeightedListItem<T> listItem in listItems) { _list.Add(listItem._item); _weights.Add(listItem._weight); } Recalculate(); } public T Next() { if (Count == 0) { return default(T); } int index = _rand.Next(Count); if (_areAllProbabilitiesIdentical) { return _list[index]; } int num = _rand.Next(_totalWeight); if (num >= _probabilities[index]) { return _list[_alias[index]]; } return _list[index]; } public void AddWeightToAll(int weight) { if (weight + _minWeight <= 0 && BadWeightErrorHandling == WeightErrorHandlingType.ThrowExceptionOnAdd) { throw new ArgumentException($"Subtracting {-1 * weight} from all items would set weight to non-positive for at least one element."); } for (int i = 0; i < Count; i++) { _weights[i] = FixWeight(_weights[i] + weight); } Recalculate(); } public void SubtractWeightFromAll(int weight) { AddWeightToAll(weight * -1); } public void SetWeightOfAll(int weight) { if (weight <= 0 && BadWeightErrorHandling == WeightErrorHandlingType.ThrowExceptionOnAdd) { throw new ArgumentException("Weight cannot be non-positive."); } for (int i = 0; i < Count; i++) { _weights[i] = FixWeight(weight); } Recalculate(); } public IEnumerator<T> GetEnumerator() { return _list.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return _list.GetEnumerator(); } public void Add(T item, int weight) { _list.Add(item); _weights.Add(FixWeight(weight)); Recalculate(); } public void Add(ICollection<WeightedListItem<T>> listItems) { foreach (WeightedListItem<T> listItem in listItems) { _list.Add(listItem._item); _weights.Add(FixWeight(listItem._weight)); } Recalculate(); } public void Clear() { _list.Clear(); _weights.Clear(); Recalculate(); } public void Contains(T item) { _list.Contains(item); } public int IndexOf(T item) { return _list.IndexOf(item); } public void Insert(int index, T item, int weight) { _list.Insert(index, item); _weights.Insert(index, FixWeight(weight)); Recalculate(); } public void Remove(T item) { int index = IndexOf(item); RemoveAt(index); Recalculate(); } public void RemoveAt(int index) { _list.RemoveAt(index); _weights.RemoveAt(index); Recalculate(); } public void SetWeight(T item, int newWeight) { SetWeightAtIndex(IndexOf(item), FixWeight(newWeight)); } public int GetWeightOf(T item) { return GetWeightAtIndex(IndexOf(item)); } public void SetWeightAtIndex(int index, int newWeight) { _weights[index] = FixWeight(newWeight); Recalculate(); } public int GetWeightAtIndex(int index) { return _weights[index]; } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("WeightedList<"); stringBuilder.Append(typeof(T).Name); stringBuilder.Append(">: TotalWeight:"); stringBuilder.Append(TotalWeight); stringBuilder.Append(", Min:"); stringBuilder.Append(_minWeight); stringBuilder.Append(", Max:"); stringBuilder.Append(_maxWeight); stringBuilder.Append(", Count:"); stringBuilder.Append(Count); stringBuilder.Append(", {"); for (int i = 0; i < _list.Count; i++) { stringBuilder.Append(_list[i].ToString()); stringBuilder.Append(":"); stringBuilder.Append(_weights[i].ToString()); if (i < _list.Count - 1) { stringBuilder.Append(", "); } } stringBuilder.Append("}"); return stringBuilder.ToString(); } private void Recalculate() { _totalWeight = 0; _areAllProbabilitiesIdentical = false; _minWeight = 0; _maxWeight = 0; bool flag = true; _alias.Clear(); _probabilities.Clear(); List<int> list = new List<int>(Count); List<int> list2 = new List<int>(Count); List<int> list3 = new List<int>(Count); foreach (int weight in _weights) { if (flag) { _minWeight = (_maxWeight = weight); flag = false; } _minWeight = ((weight < _minWeight) ? weight : _minWeight); _maxWeight = ((_maxWeight < weight) ? weight : _maxWeight); _totalWeight += weight; list.Add(weight * Count); _alias.Add(0); _probabilities.Add(0); } if (_minWeight == _maxWeight) { _areAllProbabilitiesIdentical = true; return; } for (int i = 0; i < Count; i++) { if (list[i] < _totalWeight) { list2.Add(i); } else { list3.Add(i); } } while (list2.Count > 0 && list3.Count > 0) { int index = list2[list2.Count - 1]; list2.RemoveAt(list2.Count - 1); int num = list3[list3.Count - 1]; list3.RemoveAt(list3.Count - 1); _probabilities[index] = list[index]; _alias[index] = num; int num3 = (list[num] = list[num] + list[index] - _totalWeight); if (num3 < _totalWeight) { list2.Add(num); } else { list3.Add(num); } } while (list3.Count > 0) { int index2 = list3[list3.Count - 1]; list3.RemoveAt(list3.Count - 1); _probabilities[index2] = _totalWeight; } } internal static int FixWeightSetToOne(int weight) { if (weight > 0) { return weight; } return 1; } internal static int FixWeightExceptionOnAdd(int weight) { if (weight > 0) { return weight; } throw new ArgumentException("Weight cannot be non-positive"); } private int FixWeight(int weight) { if (BadWeightErrorHandling != WeightErrorHandlingType.ThrowExceptionOnAdd) { return FixWeightSetToOne(weight); } return FixWeightExceptionOnAdd(weight); } } public readonly struct WeightedListItem<T> { internal readonly T _item; internal readonly int _weight; public WeightedListItem(T item, int weight) { _item = item; _weight = weight; } } public enum WeightErrorHandlingType { SetWeightToOne, ThrowExceptionOnAdd } } namespace MysteryDice { internal class ConfigManager { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static GenericButtonHandler <>9__1_0; internal void <setupLethalConfig>b__1_0() { Misc.ToggleAllScanPlayerNodes(); } } public static void addConfig(ConfigEntry<bool> config) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown BoolCheckBoxConfigItem val = new BoolCheckBoxConfigItem(config, true); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val); } public static void setupLethalConfig() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0025: Expected O, but got Unknown //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_004b: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_0071: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_0097: Expected O, but got Unknown //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00bd: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_00e4: Expected O, but got Unknown //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Expected O, but got Unknown //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Expected O, but got Unknown //IL_010b: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Expected O, but got Unknown //IL_012b: Expected O, but got Unknown //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Expected O, but got Unknown //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Expected O, but got Unknown //IL_014b: Expected O, but got Unknown //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Expected O, but got Unknown //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Expected O, but got Unknown //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Expected O, but got Unknown //IL_016b: Expected O, but got Unknown //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Expected O, but got Unknown //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Expected O, but got Unknown //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Expected O, but got Unknown //IL_018b: Expected O, but got Unknown //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Expected O, but got Unknown //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Expected O, but got Unknown //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Expected O, but got Unknown //IL_01ab: Expected O, but got Unknown //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Expected O, but got Unknown //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Expected O, but got Unknown //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Expected O, but got Unknown //IL_01cb: Expected O, but got Unknown //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Expected O, but got Unknown //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Expected O, but got Unknown //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Expected O, but got Unknown //IL_01eb: Expected O, but got Unknown //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Expected O, but got Unknown //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Expected O, but got Unknown //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Expected O, but got Unknown //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Expected O, but got Unknown //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Expected O, but got Unknown //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Expected O, but got Unknown //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Expected O, but got Unknown //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Expected O, but got Unknown //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Expected O, but got Unknown //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Expected O, but got Unknown //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Expected O, but got Unknown //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Expected O, but got Unknown //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Expected O, but got Unknown //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Expected O, but got Unknown //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Expected O, but got Unknown //IL_02e1: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Expected O, but got Unknown //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Expected O, but got Unknown //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Expected O, but got Unknown //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Expected O, but got Unknown //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Expected O, but got Unknown //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Expected O, but got Unknown //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Expected O, but got Unknown //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Expected O, but got Unknown //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Expected O, but got Unknown //IL_0356: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Expected O, but got Unknown //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Expected O, but got Unknown //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Expected O, but got Unknown //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_0384: Expected O, but got Unknown //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_0391: Expected O, but got Unknown //IL_0397: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Expected O, but got Unknown //IL_03a4: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Expected O, but got Unknown //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Expected O, but got Unknown //IL_03be: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Expected O, but got Unknown //IL_03cb: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Expected O, but got Unknown //IL_03d8: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Expected O, but got Unknown //IL_03e5: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Expected O, but got Unknown //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_03f9: Expected O, but got Unknown //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0406: Expected O, but got Unknown //IL_040c: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Expected O, but got Unknown //IL_0419: Unknown result type (might be due to invalid IL or missing references) //IL_0420: Expected O, but got Unknown //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Expected O, but got Unknown //IL_0433: Unknown result type (might be due to invalid IL or missing references) //IL_043a: Expected O, but got Unknown //IL_0440: Unknown result type (might be due to invalid IL or missing references) //IL_0447: Expected O, but got Unknown //IL_044d: Unknown result type (might be due to invalid IL or missing references) //IL_0454: Expected O, but got Unknown //IL_045a: Unknown result type (might be due to invalid IL or missing references) //IL_0461: Expected O, but got Unknown //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_046e: Expected O, but got Unknown //IL_0474: Unknown result type (might be due to invalid IL or missing references) //IL_047b: Expected O, but got Unknown //IL_0481: Unknown result type (might be due to invalid IL or missing references) //IL_0488: Expected O, but got Unknown //IL_048d: Unknown result type (might be due to invalid IL or missing references) //IL_0492: Unknown result type (might be due to invalid IL or missing references) //IL_049a: Expected O, but got Unknown //IL_049a: Unknown result type (might be due to invalid IL or missing references) //IL_04a5: Expected O, but got Unknown //IL_04aa: Expected O, but got Unknown //IL_04a5: Unknown result type (might be due to invalid IL or missing references) //IL_04ac: Expected O, but got Unknown //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_04b6: Unknown result type (might be due to invalid IL or missing references) //IL_04be: Expected O, but got Unknown //IL_04be: Unknown result type (might be due to invalid IL or missing references) //IL_04c9: Expected O, but got Unknown //IL_04ce: Expected O, but got Unknown //IL_04c9: Unknown result type (might be due to invalid IL or missing references) //IL_04d0: Expected O, but got Unknown //IL_04d5: Unknown result type (might be due to invalid IL or missing references) //IL_04da: Unknown result type (might be due to invalid IL or missing references) //IL_04e2: Expected O, but got Unknown //IL_04e2: Unknown result type (might be due to invalid IL or missing references) //IL_04ed: Expected O, but got Unknown //IL_04f2: Expected O, but got Unknown //IL_04ed: Unknown result type (might be due to invalid IL or missing references) //IL_04f4: Expected O, but got Unknown //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Expected O, but got Unknown //IL_06bd: Unknown result type (might be due to invalid IL or missing references) //IL_06c4: Expected O, but got Unknown //IL_06e5: Unknown result type (might be due to invalid IL or missing references) //IL_06ec: Expected O, but got Unknown ConfigEntry<float> minHyperShake = MysteryDice.minHyperShake; FloatSliderOptions val = new FloatSliderOptions(); ((BaseRangeOptions<float>)val).Min = 0f; ((BaseRangeOptions<float>)val).Max = 100f; FloatSliderConfigItem val2 = new FloatSliderConfigItem(minHyperShake, val); ConfigEntry<float> maxHyperShake = MysteryDice.maxHyperShake; FloatSliderOptions val3 = new FloatSliderOptions(); ((BaseRangeOptions<float>)val3).Min = 0f; ((BaseRangeOptions<float>)val3).Max = 100f; FloatSliderConfigItem val4 = new FloatSliderConfigItem(maxHyperShake, val3); ConfigEntry<float> minNeckSpin = MysteryDice.minNeckSpin; FloatSliderOptions val5 = new FloatSliderOptions(); ((BaseRangeOptions<float>)val5).Min = 0f; ((BaseRangeOptions<float>)val5).Max = 100f; FloatSliderConfigItem val6 = new FloatSliderConfigItem(minNeckSpin, val5); ConfigEntry<float> rotationSpeedModifier = MysteryDice.rotationSpeedModifier; FloatSliderOptions val7 = new FloatSliderOptions(); ((BaseRangeOptions<float>)val7).Min = 0f; ((BaseRangeOptions<float>)val7).Max = 100f; FloatSliderConfigItem val8 = new FloatSliderConfigItem(rotationSpeedModifier, val7); ConfigEntry<float> maxNeckSpin = MysteryDice.maxNeckSpin; FloatSliderOptions val9 = new FloatSliderOptions(); ((BaseRangeOptions<float>)val9).Min = 0f; ((BaseRangeOptions<float>)val9).Max = 100f; FloatSliderConfigItem val10 = new FloatSliderConfigItem(maxNeckSpin, val9); ConfigEntry<float> eggExplodeTime = MysteryDice.eggExplodeTime; FloatSliderOptions val11 = new FloatSliderOptions(); ((BaseRangeOptions<float>)val11).Min = 0f; ((BaseRangeOptions<float>)val11).Max = 5f; FloatSliderConfigItem val12 = new FloatSliderConfigItem(eggExplodeTime, val11); ConfigEntry<float> soundVolume = MysteryDice.SoundVolume; FloatSliderOptions val13 = new FloatSliderOptions(); ((BaseRangeOptions<float>)val13).Min = 0f; ((BaseRangeOptions<float>)val13).Max = 1f; FloatSliderConfigItem val14 = new FloatSliderConfigItem(soundVolume, val13); ConfigEntry<int> minNeckBreakTimer = MysteryDice.minNeckBreakTimer; IntSliderOptions val15 = new IntSliderOptions(); ((BaseRangeOptions<int>)val15).Min = 0; ((BaseRangeOptions<int>)val15).Max = 100; IntSliderConfigItem val16 = new IntSliderConfigItem(minNeckBreakTimer, val15); ConfigEntry<int> maxNeckBreakTimer = MysteryDice.maxNeckBreakTimer; IntSliderOptions val17 = new IntSliderOptions(); ((BaseRangeOptions<int>)val17).Min = 0; ((BaseRangeOptions<int>)val17).Max = 100; IntSliderConfigItem val18 = new IntSliderConfigItem(maxNeckBreakTimer, val17); ConfigEntry<int> debugButtonAlpha = MysteryDice.DebugButtonAlpha; IntSliderOptions val19 = new IntSliderOptions(); ((BaseRangeOptions<int>)val19).Min = 0; ((BaseRangeOptions<int>)val19).Max = 100; IntSliderConfigItem val20 = new IntSliderConfigItem(debugButtonAlpha, val19); ConfigEntry<int> debugMenuAccentAlpha = MysteryDice.DebugMenuAccentAlpha; IntSliderOptions val21 = new IntSliderOptions(); ((BaseRangeOptions<int>)val21).Min = 0; ((BaseRangeOptions<int>)val21).Max = 100; IntSliderConfigItem val22 = new IntSliderConfigItem(debugMenuAccentAlpha, val21); ConfigEntry<int> debugMenuBackgroundAlpha = MysteryDice.DebugMenuBackgroundAlpha; IntSliderOptions val23 = new IntSliderOptions(); ((BaseRangeOptions<int>)val23).Min = 0; ((BaseRangeOptions<int>)val23).Max = 100; IntSliderConfigItem val24 = new IntSliderConfigItem(debugMenuBackgroundAlpha, val23); ConfigEntry<int> debugMenuTextAlpha = MysteryDice.DebugMenuTextAlpha; IntSliderOptions val25 = new IntSliderOptions(); ((BaseRangeOptions<int>)val25).Min = 0; ((BaseRangeOptions<int>)val25).Max = 100; IntSliderConfigItem val26 = new IntSliderConfigItem(debugMenuTextAlpha, val25); ConfigEntry<int> debugMenuFavoriteTextAlpha = MysteryDice.DebugMenuFavoriteTextAlpha; IntSliderOptions val27 = new IntSliderOptions(); ((BaseRangeOptions<int>)val27).Min = 0; ((BaseRangeOptions<int>)val27).Max = 100; IntSliderConfigItem val28 = new IntSliderConfigItem(debugMenuFavoriteTextAlpha, val27); object obj = <>c.<>9__1_0; if (obj == null) { GenericButtonHandler val29 = delegate { Misc.ToggleAllScanPlayerNodes(); }; <>c.<>9__1_0 = val29; obj = (object)val29; } GenericButtonConfigItem val30 = new GenericButtonConfigItem("Clientside", "Toggle Controllers", "Hides/Shows the custom scannodes attached to people", "Toggle Scannodes", (GenericButtonHandler)obj); IntInputFieldConfigItem val31 = new IntInputFieldConfigItem(MysteryDice.EmergencyDiePrice, true); IntInputFieldConfigItem val32 = new IntInputFieldConfigItem(MysteryDice.brutalStartingScale, false); IntInputFieldConfigItem val33 = new IntInputFieldConfigItem(MysteryDice.brutalMaxScale, false); IntInputFieldConfigItem val34 = new IntInputFieldConfigItem(MysteryDice.brutalScaleType, false); BoolCheckBoxConfigItem val35 = new BoolCheckBoxConfigItem(MysteryDice.DieEmergencyAsScrap, true); IntInputFieldConfigItem val36 = new IntInputFieldConfigItem(BlameGlitch.minNum, false); IntInputFieldConfigItem val37 = new IntInputFieldConfigItem(BlameGlitch.maxNum, false); IntInputFieldConfigItem val38 = new IntInputFieldConfigItem(MysteryDice.hyperShakeTimer, false); IntInputFieldConfigItem val39 = new IntInputFieldConfigItem(MysteryDice.neckRotations, false); TextInputFieldConfigItem val40 = new TextInputFieldConfigItem(MysteryDice.DisplayResults); TextInputFieldConfigItem val41 = new TextInputFieldConfigItem(MysteryDice.debugChat); BoolCheckBoxConfigItem val42 = new BoolCheckBoxConfigItem(BlameGlitch.isInside, false); BoolCheckBoxConfigItem val43 = new BoolCheckBoxConfigItem(BlameGlitch.bothInsideOutside, false); BoolCheckBoxConfigItem val44 = new BoolCheckBoxConfigItem(MysteryDice.pussyMode, false); BoolCheckBoxConfigItem val45 = new BoolCheckBoxConfigItem(MysteryDice.DebugLogging, false); BoolCheckBoxConfigItem val46 = new BoolCheckBoxConfigItem(MysteryDice.randomSpinTime, true); BoolCheckBoxConfigItem val47 = new BoolCheckBoxConfigItem(MysteryDice.chronosUpdatedTimeOfDay, false); BoolCheckBoxConfigItem val48 = new BoolCheckBoxConfigItem(MysteryDice.useDiceOutside, false); BoolCheckBoxConfigItem val49 = new BoolCheckBoxConfigItem(MysteryDice.debugDice, false); BoolCheckBoxConfigItem val50 = new BoolCheckBoxConfigItem(MysteryDice.TwitchEnabled, true); BoolCheckBoxConfigItem val51 = new BoolCheckBoxConfigItem(MysteryDice.CopyrightFree, false); BoolCheckBoxConfigItem val52 = new BoolCheckBoxConfigItem(MysteryDice.allowChatCommands, true); BoolCheckBoxConfigItem val53 = new BoolCheckBoxConfigItem(MysteryDice.useNeckBreakTimer, false); BoolCheckBoxConfigItem val54 = new BoolCheckBoxConfigItem(MysteryDice.debugMenuShowsAll, false); BoolCheckBoxConfigItem val55 = new BoolCheckBoxConfigItem(MysteryDice.debugButton, true); BoolCheckBoxConfigItem val56 = new BoolCheckBoxConfigItem(MysteryDice.BetterDebugMenu, false); BoolCheckBoxConfigItem val57 = new BoolCheckBoxConfigItem(MysteryDice.Bald, false); BoolCheckBoxConfigItem val58 = new BoolCheckBoxConfigItem(MysteryDice.LockDebugUI, false); BoolCheckBoxConfigItem val59 = new BoolCheckBoxConfigItem(BlameGlitch.GlitchedMeteorShower, false); BoolCheckBoxConfigItem val60 = new BoolCheckBoxConfigItem(AlarmCurse.fireAlarm, false); BoolCheckBoxConfigItem val61 = new BoolCheckBoxConfigItem(AlarmCurse.HorribleVersion, false); BoolCheckBoxConfigItem val62 = new BoolCheckBoxConfigItem(MysteryDice.doDiceExplosion, false); BoolCheckBoxConfigItem val63 = new BoolCheckBoxConfigItem(MysteryDice.LoversOnStart, false); BoolCheckBoxConfigItem val64 = new BoolCheckBoxConfigItem(MysteryDice.insideJoke, false); BoolCheckBoxConfigItem val65 = new BoolCheckBoxConfigItem(MysteryDice.DebugMenuClosesAfter, false); BoolCheckBoxConfigItem val66 = new BoolCheckBoxConfigItem(MysteryDice.BrutalMode, false); BoolCheckBoxConfigItem val67 = new BoolCheckBoxConfigItem(MysteryDice.BrutalChat, false); BoolCheckBoxConfigItem val68 = new BoolCheckBoxConfigItem(MysteryDice.debugSpawnOnPlayer, false); BoolCheckBoxConfigItem val69 = new BoolCheckBoxConfigItem(MysteryDice.SuperBrutalMode, false); BoolCheckBoxConfigItem val70 = new BoolCheckBoxConfigItem(MysteryDice.yippeeUse, false); HexColorInputFieldConfigItem val71 = new HexColorInputFieldConfigItem(MysteryDice.DebugMenuTextColor, false); HexColorInputFieldConfigItem val72 = new HexColorInputFieldConfigItem(MysteryDice.DebugMenuFavoriteTextColor, false); HexColorInputFieldConfigItem val73 = new HexColorInputFieldConfigItem(MysteryDice.DebugMenuBackgroundColor, false); HexColorInputFieldConfigItem val74 = new HexColorInputFieldConfigItem(MysteryDice.DebugMenuAccentColor, false); HexColorInputFieldConfigItem val75 = new HexColorInputFieldConfigItem(MysteryDice.DebugButtonColor, false); BoolCheckBoxConfigItem val76 = new BoolCheckBoxConfigItem(MysteryDice.ConfigGalAutomatic, false); BoolCheckBoxConfigItem val77 = new BoolCheckBoxConfigItem(MysteryDice.ConfigOnlyOwnerDisablesGal, false); ConfigEntry<int> imFeelingLuckyCooldown = MysteryDice.ImFeelingLuckyCooldown; IntInputFieldOptions val78 = new IntInputFieldOptions(); ((BaseRangeOptions<int>)val78).Min = 10; ((BaseRangeOptions<int>)val78).Max = 600; IntInputFieldConfigItem val79 = new IntInputFieldConfigItem(imFeelingLuckyCooldown, val78); ConfigEntry<int> onTheHouseCooldown = MysteryDice.OnTheHouseCooldown; IntInputFieldOptions val80 = new IntInputFieldOptions(); ((BaseRangeOptions<int>)val80).Min = 10; ((BaseRangeOptions<int>)val80).Max = 600; IntInputFieldConfigItem val81 = new IntInputFieldConfigItem(onTheHouseCooldown, val80); ConfigEntry<int> devilDealCooldown = MysteryDice.DevilDealCooldown; IntInputFieldOptions val82 = new IntInputFieldOptions(); ((BaseRangeOptions<int>)val82).Min = 10; ((BaseRangeOptions<int>)val82).Max = 600; IntInputFieldConfigItem val83 = new IntInputFieldConfigItem(devilDealCooldown, val82); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val49); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val48); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val66); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val67); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val69); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val32); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val33); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val34); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val71); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val26); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val72); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val28); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val73); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val24); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val74); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val64); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val22); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val75); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val20); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val56); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val47); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val46); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val44); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val53); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val14); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val40); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val51); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val4); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val38); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val12); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val65); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val70); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val6); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val10); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val8); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val16); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val18); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val76); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val77); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val79); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val81); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val83); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val39); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val42); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val43); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val36); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val37); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val54); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val55); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val68); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val41); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val50); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val45); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val57); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val31); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val63); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val35); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val62); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val59); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val60); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val58); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val61); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val30); if (MysteryDice.SurfacedPresent) { BoolCheckBoxConfigItem val84 = new BoolCheckBoxConfigItem(Flinger.beybladeMode, false); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val84); } foreach (ConfigEntry<bool> effectConfig in DieBehaviour.effectConfigs) { BoolCheckBoxConfigItem val85 = new BoolCheckBoxConfigItem(effectConfig, true); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val85); } } } internal static class CullFactorySoftCompat { private static readonly bool CullFactoryAvailable; private static readonly MethodInfo RefreshGrabbableMethod; private static readonly MethodInfo RefreshLightMethod; static CullFactorySoftCompat() { if (Chainloader.PluginInfos.TryGetValue("com.fumiko.CullFactory", out var value) && value.Metadata.Version >= new Version(1, 5, 0)) { Type type = Type.GetType("CullFactory.Behaviours.API.DynamicObjectsAPI, CullFactory"); if (type != null) { RefreshGrabbableMethod = type.GetMethod("RefreshGrabbableObjectPosition", BindingFlags.Static | BindingFlags.Public); RefreshLightMethod = type.GetMethod("RefreshLightPosition", BindingFlags.Static | BindingFlags.Public); CullFactoryAvailable = RefreshGrabbableMethod != null && RefreshLightMethod != null; } } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void RefreshGrabbableObjectPosition(GrabbableObject item) { item.EnableItemMeshes(true); if (CullFactoryAvailable) { RefreshGrabbableMethod?.Invoke(null, new object[1] { item }); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void RefreshLightPosition(Light light) { if (CullFactoryAvailable) { RefreshLightMethod?.Invoke(null, new object[1] { light }); } } } public class IngameKeybinds : LcInputActions { [InputAction("<Keyboard>/numpadMinus", Name = "DebugMenu")] public InputAction DebugMenu { get; set; } [InputAction("<Keyboard>/space", Name = "FlyButton")] public InputAction FlyButton { get; set; } [InputAction("<Keyboard>/ctrl", Name = "FlyDownButton")] public InputAction FlyDownButton { get; set; } } public class Misc { public static Item GetItemByName(string itemName, bool matchCase = true) { StringComparison comparisonType = ((!matchCase) ? StringComparison.OrdinalIgnoreCase : StringComparison.CurrentCulture); foreach (Item items in StartOfRound.Instance.allItemsList.itemsList) { if (items.itemName.Equals(itemName, comparisonType)) { return items; } } foreach (SpawnableItemWithRarity item in RoundManager.Instance.currentLevel.spawnableScrap) { if (item.spawnableItem.itemName.Equals(itemName, comparisonType)) { return item.spawnableItem; } } return null; } public static void SpawnEnemy(SpawnableEnemyWithRarity enemy, int amount, bool isInside, bool isInvisible = false) { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)Networker.Instance).IsHost) { return; } RoundManager instance = RoundManager.Instance; if (isInside) { if (isInvisible) { for (int i = 0; i < amount; i++) { EnemyVent val = instance.allEnemyVents[Random.Range(0, instance.allEnemyVents.Length)]; GameObject val2 = Object.Instantiate<GameObject>(enemy.enemyType.enemyPrefab, val.floorNode.position, Quaternion.Euler(new Vector3(0f, 0f, 0f))); SetObjectInvisible(val2); val2.GetComponentInChildren<NetworkObject>().Spawn(true); instance.SpawnedEnemies.Add(val2.GetComponent<EnemyAI>()); } } else { for (int j = 0; j < amount; j++) { EnemyVent val3 = instance.allEnemyVents[Random.Range(0, instance.allEnemyVents.Length)]; instance.SpawnEnemyOnServer(val3.floorNode.position, val3.floorNode.eulerAngles.y, instance.currentLevel.Enemies.IndexOf(enemy)); } } } else { for (int k = 0; k < amount; k++) { SpawnOutsideEnemy(enemy); } } } public static void SpawnEnemy(EnemyType enemy, int amount, bool isInside, bool isInvisible = false) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)Networker.Instance).IsHost) { return; } RoundManager instance = RoundManager.Instance; Vector3 position = instance.outsideAINodes[Random.Range(0, instance.outsideAINodes.Length)].transform.position; EnemyVent val = instance.allEnemyVents[Random.Range(0, instance.allEnemyVents.Length)]; if (isInside) { position = val.floorNode.position; } for (int i = 0; i < amount; i++) { GameObject val2 = Object.Instantiate<GameObject>(enemy.enemyPrefab, position, Quaternion.Euler(new Vector3(0f, 0f, 0f))); if (isInvisible) { SetObjectInvisible(val2); } val2.GetComponentInChildren<NetworkObject>().Spawn(true); instance.SpawnedEnemies.Add(val2.GetComponent<EnemyAI>()); } } public static bool canDiceYet() { if ((Object)(object)StartOfRound.Instance == (Object)null) { return false; } if (StartOfRound.Instance.inShipPhase || !StartOfRound.Instance.shipHasLanded) { return false; } return true; } public static int playerCount() { int num = 0; PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB player in allPlayerScripts) { if (IsPlayerAliveAndControlled(player)) { num++; } } return num; } public static void SetObjectInvisible(GameObject obj) { //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) Renderer[] componentsInChildren = obj.GetComponentsInChildren<Renderer>(); Renderer[] array = componentsInChildren; foreach (Renderer val in array) { Material[] materials = val.materials; foreach (Material val2 in materials) { val2.shader = Shader.Find("Standard"); val2.SetFloat("_Mode", 3f); val2.SetInt("_SrcBlend", 5); val2.SetInt("_DstBlend", 10); val2.SetInt("_ZWrite", 0); val2.DisableKeyword("_ALPHATEST_ON"); val2.EnableKeyword("_ALPHABLEND_ON"); val2.DisableKeyword("_ALPHAPREMULTIPLY_ON"); val2.renderQueue = 3000; Color color = val2.color; color.a = 0.1f; val2.color = color; } } } public static PlayerControllerB getPlayerBySteamID(ulong steamID) { List<PlayerControllerB> list = new List<PlayerControllerB>(); PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (IsPlayerReal(val)) { list.Add(val); } } return list.Where((PlayerControllerB x) => x.playerSteamId == steamID).FirstOrDefault(); } public static void SpawnOutsideEnemy(SpawnableEnemyWithRarity enemy) { //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) RoundManager instance = RoundManager.Instance; Random random = new Random(StartOfRound.Instance.randomMapSeed); GameObject[] source = GameObject.FindGameObjectsWithTag("OutsideAINode"); source = source.OrderBy((GameObject x) => Vector3.Distance(x.transform.position, Vector3.zero)).ToArray(); Vector3 position = instance.outsideAINodes[Random.Range(0, instance.outsideAINodes.Length)].transform.position; position = instance.GetRandomNavMeshPositionInBoxPredictable(position, 30f, default(NavMeshHit), random, -1, 1f) + Vector3.up; GameObject val = Object.Instantiate<GameObject>(enemy.enemyType.enemyPrefab, position, Quaternion.Euler(new Vector3(0f, 0f, 0f))); val.GetComponentInChildren<NetworkObject>().Spawn(true); instance.SpawnedEnemies.Add(val.GetComponent<EnemyAI>()); } public static List<GameObject> SpawnEnemy(SpawnableEnemyWithRarity enemy, int amount, bool isInside, bool isInvisible = false, bool returnObject = false) { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) List<GameObject> list = new List<GameObject>(); if (!((NetworkBehaviour)Networker.Instance).IsHost) { return list; } RoundManager instance = RoundManager.Instance; if (isInside) { for (int i = 0; i < amount; i++) { EnemyVent val = instance.allEnemyVents[Random.Range(0, instance.allEnemyVents.Length)]; GameObject val2 = Object.Instantiate<GameObject>(enemy.enemyType.enemyPrefab, val.floorNode.position, Quaternion.Euler(new Vector3(0f, 0f, 0f))); if (isInvisible) { SetObjectInvisible(val2); } val2.GetComponentInChildren<NetworkObject>().Spawn(true); instance.SpawnedEnemies.Add(val2.GetComponent<EnemyAI>()); list.Add(val2); } } else { for (int j = 0; j < amount; j++) { list.Add(SpawnOutsideEnemy(enemy, returnObject: true)); } } return list; } public static GameObject SpawnOutsideEnemy(SpawnableEnemyWithRarity enemy, bool returnObject) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) List<GameObject> list = new List<GameObject>(); RoundManager instance = RoundManager.Instance; Random random = new Random(StartOfRound.Instance.randomMapSeed); GameObject[] source = GameObject.FindGameObjectsWithTag("OutsideAINode"); source = source.OrderBy((GameObject x) => Vector3.Distance(x.transform.position, Vector3.zero)).ToArray(); Vector3 position = instance.outsideAINodes[Random.Range(0, instance.outsideAINodes.Length)].transform.position; position = instance.GetRandomNavMeshPositionInBoxPredictable(position, 30f, default(NavMeshHit), random, -1, 1f) + Vector3.up; GameObject val = Object.Instantiate<GameObject>(enemy.enemyType.enemyPrefab, position, Quaternion.Euler(new Vector3(0f, 0f, 0f))); val.GetComponentInChildren<NetworkObject>().Spawn(true); instance.SpawnedEnemies.Add(val.GetComponent<EnemyAI>()); return val; } public static void SpawnEnemyForced(SpawnableEnemyWithRarity enemy, int amount, bool isInside, bool isInvisible = false) { if (!RoundManager.Instance.currentLevel.Enemies.Contains(enemy)) { RoundManager.Instance.currentLevel.Enemies.Add(enemy); SpawnEnemy(enemy.enemyType, amount, isInside, isInvisible); RoundManager.Instance.currentLevel.Enemies.Remove(enemy); } else { SpawnEnemy(enemy.enemyType, amount, isInside, isInvisible); } } public static List<GameObject> SpawnEnemyForced2(SpawnableEnemyWithRarity enemy, int amount, bool isInside, bool isInvisible = false, bool returnObject = false) { List<GameObject> list = new List<GameObject>(); if (!RoundManager.Instance.currentLevel.Enemies.Contains(enemy)) { RoundManager.Instance.currentLevel.Enemies.Add(enemy); list = SpawnEnemy(enemy, amount, isInside, isInvisible, returnObject: true); RoundManager.Instance.currentLevel.Enemies.Remove(enemy); } else { list = SpawnEnemy(enemy, amount, isInside, isInvisible, returnObject: true); } return list; } public static float Map(float x, float inMin, float inMax, float outMin, float outMax) { return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin; } public static PlayerControllerB GetPlayerByUserID(int userID) { return StartOfRound.Instance.allPlayerScripts[userID]; } public static NetworkObjectReference SpawnEnemyOnServer(Vector3 spawnPosition, float yRot, SpawnableEnemyWithRarity enemy) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) NetworkObjectReference result = default(NetworkObjectReference); if (!((NetworkBehaviour)Networker.Instance).IsServer) { return result; } GameObject val = Object.Instantiate<GameObject>(enemy.enemyType.enemyPrefab, spawnPosition, Quaternion.Euler(new Vector3(0f, yRot, 0f))); val.GetComponentInChildren<NetworkObject>().Spawn(true); RoundManager.Instance.SpawnedEnemies.Add(val.GetComponent<EnemyAI>()); return NetworkObjectReference.op_Implicit(val.GetComponentInChildren<NetworkObject>()); } public static void ToggleAllScanPlayerNodes(bool fromConfig = false) { if (Networker.Instance.playerScanNodes == null) { return; } GameObject[] array = Networker.Instance.playerScanNodes.ToArray(); PlayerTracker playerTracker = default(PlayerTracker); foreach (GameObject playerScanNode in Networker.Instance.playerScanNodes) { if (!Object.op_Implicit((Object)(object)playerScanNode) || !playerScanNode.TryGetComponent<PlayerTracker>(ref playerTracker)) { continue; } if (fromConfig) { if (((NetworkBehaviour)playerTracker.trackedPlayer).IsLocalPlayer) { playerScanNode.SetActive(MysteryDice.showOwnScanNode.Value); } } else if (((NetworkBehaviour)playerTracker.trackedPlayer).IsLocalPlayer && !MysteryDice.showOwnScanNode.Value) { if (playerScanNode.activeSelf) { playerScanNode.SetActive(false); } } else { playerScanNode.SetActive(!playerScanNode.activeSelf); } } } public static void ChatWrite(string chatMessage) { HUDManager.Instance.lastChatMessage = chatMessage; HUDManager.Instance.PingHUDElement(HUDManager.Instance.Chat, 4f, 1f, 0.2f); if (HUDManager.Instance.ChatMessageHistory.Count >= 4) { ((TMP_Text)HUDManager.Instance.chatText).text.Remove(0, HUDManager.Instance.ChatMessageHistory[0].Length); HUDManager.Instance.ChatMessageHistory.Remove(HUDManager.Instance.ChatMessageHistory[0]); } string item = "<color=#00ffff>" + chatMessage + "</color>"; HUDManager.Instance.ChatMessageHistory.Add(item); ((TMP_Text)HUDManager.Instance.chatText).text = ""; for (int i = 0; i < HUDManager.Instance.ChatMessageHistory.Count; i++) { TextMeshProUGUI chatText = HUDManager.Instance.chatText; ((TMP_Text)chatText).text = ((TMP_Text)chatText).text + "\n" + HUDManager.Instance.ChatMessageHistory[i]; } } public static trap[] getAllTraps() { List<trap> list = new List<trap>(); List<SpawnableMapObject> list2 = (from x in StartOfRound.Instance.levels.SelectMany((SelectableLevel level) => level.spawnableMapObjects) group x by ((Object)x.prefabToSpawn).name into g select g.First()).ToList(); foreach (SpawnableMapObject item2 in list2) { list.Add(new trap(((Object)item2.prefabToSpawn).name, item2.prefabToSpawn)); } if (MysteryDice.CodeRebirthPresent) { HashSet<string> hashSet = new HashSet<string>(list.Select((trap x) => NormalizeName(x.name))); foreach (trap spawnPrefab in CodeRebirthCheckConfigs.getSpawnPrefabs()) { string item = NormalizeName(spawnPrefab.name); if (!hashSet.Contains(item)) { list.Add(spawnPrefab); hashSet.Add(item); } } } return list.ToArray(); static string NormalizeName(string input) { return new string(input.Where((char c) => !char.IsWhiteSpace(c)).ToArray()).ToLowerInvariant(); } } public static void SafeTipMessage(string title, string body) { try { HUDManager.Instance.DisplayTip(title, body, false, false, "LC_Tip1"); } catch { MysteryDice.CustomLogger.LogWarning((object)"There's a problem with the DisplayTip method. This might have happened due to a new game verison, or some other mod."); try { ChatWrite(title + ": " + body); } catch { MysteryDice.CustomLogger.LogWarning((object)"There's a problem with writing to the chat. This might have happened due to a new game verison, or some other mod."); } } } public static int TotalAlive() { List<PlayerControllerB> list = new List<PlayerControllerB>(); PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (IsPlayerAliveAndControlled(val)) { list.Add(val); } } return list.Count; } public static bool isPlayerLocal(int userID) { return (Object)(object)StartOfRound.Instance.allPlayerScripts[userID] == (Object)(object)StartOfRound.Instance.localPlayerController; } public static PlayerControllerB GetRandomAlivePlayer(int notThisPlayer = -1) { List<PlayerControllerB> list = new List<PlayerControllerB>(); PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (IsPlayerAliveAndControlled(val)) { list.Add(val); } } if (list.Count == 1) { return list[0]; } PlayerControllerB val2 = list[Random.Range(0, list.Count)]; if (notThisPlayer != -1) { for (int j = 0; Array.IndexOf(StartOfRound.Instance.allPlayerScripts, val2) == notThisPlayer || j > 10; j++) { val2 = list[Random.Range(0, list.Count)]; } } return val2; } public static int GetRandomPlayerID() { List<PlayerControllerB> list = new List<PlayerControllerB>(); PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (IsPlayerAliveAndControlled(val)) { list.Add(val); } } return Array.IndexOf(StartOfRound.Instance.allPlayerScripts, list[Random.Range(0, list.Count)]); } public static PlayerControllerB GetRandomPlayer() { List<PlayerControllerB> list = new List<PlayerControllerB>(); PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (IsPlayerReal(val)) { list.Add(val); } } if (list.Count == 1) { return list[0]; } return list[Random.Range(0, list.Count)]; } public static bool IsPlayerAliveAndControlled(PlayerControllerB player) { if (!player.isPlayerDead) { return player.isPlayerControlled; } return false; } public static bool IsPlayerReal(PlayerControllerB player) { if (!((Behaviour)player).isActiveAndEnabled) { return player.isPlayerDead; } return true; } public static SpawnableEnemyWithRarity getEnemyByName(string name) { HashSet<SpawnableEnemyWithRarity> hashSet = new HashSet<SpawnableEnemyWithRarity>(); SelectableLevel[] levels = StartOfRound.Instance.levels; foreach (SelectableLevel val in levels) { hashSet.UnionWith(val.Enemies); hashSet.UnionWith(val.OutsideEnemies); hashSet.UnionWith(val.DaytimeEnemies); } List<SpawnableEnemyWithRarity> source = (from x in hashSet group x by x.enemyType.enemyName into g select g.First() into x orderby x.enemyType.enemyName select x).ToList(); return ((IEnumerable<SpawnableEnemyWithRarity>)source).FirstOrDefault((Func<SpawnableEnemyWithRarity, bool>)((SpawnableEnemyWithRarity x) => x.enemyType.enemyName == name)); } public static void AdjustWeight(int userID, float factor) { PlayerControllerB val = null; val = StartOfRound.Instance.allPlayerScripts[userID]; if ((Object)(object)val == (Object)null) { MysteryDice.CustomLogger.LogError((object)"Player not found."); return; } float num = 0f; float num2 = 0f; GrabbableObject[] itemSlots = val.ItemSlots; foreach (GrabbableObject val2 in itemSlots) { if (!((Object)(object)val2 == (Object)null) && val2.itemProperties.weight != 0f) { float num3 = Mathf.Clamp(val2.itemProperties.weight - 1f, 0f, 100f); float num4 = Mathf.RoundToInt(num3 * 105f); num4 *= factor; num2 += num4; float num5 = Mathf.Clamp(num4 / 105f + 1f, 1f, 10f); val2.itemProperties.weight = num5; num += num5; } } float num6 = Mathf.Clamp(num2 / 105f + 1f, 1f, 10f); if (num6 != 0f) { val.carryWeight = num6; } } } public class trap { public string name; public GameObject prefab; public trap(string _name, GameObject _prefab) { name = _name; prefab = _prefab; } } [BepInPlugin("mine9289.EmergencyDice", "Emergency Dice Updated KR", "0.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MysteryDice : BaseUnityPlugin { public enum chatDebug { Host, Everyone, None } public static HashSet<ulong> admins = new HashSet<ulong> { 76561198077184650uL, 76561199094139351uL, 76561198984467725uL, 76561198399127090uL, 76561198086086035uL, 76561198298343090uL }; public static HashSet<ulong> revokedAdmins = new HashSet<ulong>(); public static readonly ulong slayerSteamID = 76561198077184650uL; internal static bool isAdmin = false; internal static bool triedRequestingAdmin = false; private const string modGUID = "mine9289.EmergencyDice"; private const string modName = "Emergency Dice Updated KR"; private const string modVersion = "0.0.1"; private readonly Harmony harmony = new Harmony("mine9289.EmergencyDice"); public static ManualLogSource CustomLogger; public static AssetBundle LoadedAssets; public static AssetBundle LoadedAssets2; internal static IngameKeybinds Keybinds = null; public static UnlockableItemDef diceGalUnlockable; public static GameObject NetworkerPrefab; public static GameObject JumpscareCanvasPrefab; public static GameObject SpiderCanvasPrefab; public static GameObject SpiderMoverPrefab; public static GameObject JumpscareOBJ; public static GameObject PathfinderPrefab; public static GameObject DebugMenuPrefab; public static GameObject NewSelectMenuPrefab; public static GameObject DebugMenuButtonPrefab; public static GameObject DebugSubButtonPrefab; public static GameObject DiceGal; public static GameObject AgentObjectPrefab; public static GameObject PlayerNodeController; public static Material jobApplication; public static Material angyGlitch; public static Jumpscare JumpscareScript; public static Dictionary<string, AudioClip> sounds = new Dictionary<string, AudioClip>(); public static Sprite WarningBracken; public static Sprite WarningJester; public static Sprite WarningDeath; public static Sprite WarningLuck; public static Item DieEmergency; public static Item DieGambler; public static Item DieChronos; public static Item DieSacrificer; public static Item DieSaint; public static Item DieRusty; public static Item DieSurfaced; public static Item DieCodeRebirth; public static Item DieSteve; public static Item PathfinderSpawner; public static ConfigFile BepInExConfig = null; public static bool lethalThingsPresent = false; public static Assembly lethalThingsAssembly; public static bool LethalMonPresent = false; public static Assembly LethalMonAssembly; public static bool LCOfficePresent = false; public static bool CodeRebirthPresent = false; public static bool SurfacedPresent = false; public static bool LCTarotCardPresent = false; public static bool TakeyPlushPresent = false; public static bool TooManyEmotesPresent = false; public static bool DiversityPresent = false; public static bool NightOfTheLivingMimicPresent = false; public static bool NavMeshInCompanyPresent = false; public static bool BombCollarPresent = false; public static bool MoreCompanyPresent = false; public static bool LethalConfigPresent = false; public static Assembly LCOfficeAssembly; public static bool terminalLockout = false; public static CustomConfigs customCfg; public static ConfigEntry<bool> aprilFoolsConfig; public static ConfigEntry<bool> pussyMode; public static ConfigEntry<float> minHyperShake; public static ConfigEntry<float> maxHyperShake; public static ConfigEntry<bool> randomSpinTime; public static ConfigEntry<bool> ConfigOnlyOwnerDisablesGal; public static ConfigEntry<bool> ConfigGalAutomatic; public static ConfigEntry<bool> chronosUpdatedTimeOfDay; public static ConfigEntry<bool> useDiceOutside; public static ConfigEntry<bool> debugDice; public static ConfigEntry<bool> allowChatCommands; public static ConfigEntry<float> eggExplodeTime; public static ConfigEntry<float> minNeckSpin; public static ConfigEntry<float> maxNeckSpin; public static ConfigEntry<int> neckRotations; public static ConfigEntry<float> rotationSpeedModifier; public static ConfigEntry<bool> useNeckBreakTimer; public static ConfigEntry<bool> debugMenuShowsAll; public static ConfigEntry<bool> yippeeUse; public static ConfigEntry<bool> insideJoke; public static ConfigEntry<int> minNeckBreakTimer; public static ConfigEntry<int> maxNeckBreakTimer; public static ConfigEntry<int> hyperShakeTimer; public static ConfigEntry<int> EmergencyDiePrice; public static ConfigEntry<int> CustomEnemyEventCount; public static ConfigEntry<int> CustomItemEventCount; public static ConfigEntry<int> CustomTrapEventCount; public static ConfigEntry<string> DebugMenuTextColor; public static ConfigEntry<int> DebugMenuTextAlpha; public static ConfigEntry<string> DebugMenuFavoriteTextColor; public static ConfigEntry<int> DebugMenuFavoriteTextAlpha; public static ConfigEntry<string> DebugMenuBackgroundColor; public static ConfigEntry<int> DebugMenuBackgroundAlpha; public static ConfigEntry<string> DebugMenuAccentColor; public static ConfigEntry<int> DebugMenuAccentAlpha; public static ConfigEntry<string> DebugButtonColor; public static ConfigEntry<string> cursedIDs; public static ConfigEntry<bool> cursedRandomly; public static ConfigEntry<bool> toggleCursed; public static ConfigEntry<int> DebugButtonAlpha; public static ConfigEntry<bool> BrutalMode; public static ConfigEntry<bool> BrutalChat; public static ConfigEntry<bool> SuperBrutalMode; public static ConfigEntry<int> brutalStartingScale; public static ConfigEntry<int> brutalMaxScale; public static ConfigEntry<int> ImFeelingLuckyCooldown; public static ConfigEntry<int> DevilDealCooldown; public static ConfigEntry<int> OnTheHouseCooldown; public static ConfigEntry<int> brutalScaleType; public static ConfigEntry<bool> showOwnScanNode; public static ConfigEntry<bool> Bald; public static ConfigEntry<bool> CopyrightFree; public static ConfigEntry<float> SoundVolume; public static ConfigEntry<bool> debugButton; public static ConfigEntry<bool> debugSpawnOnPlayer; public static ConfigEntry<bool> superDebugMode; public static ConfigEntry<bool> DebugLogging; public static ConfigEntry<bool> BetterDebugMenu; public static ConfigEntry<bool> LockDebugUI; public static ConfigEntry<bool> doDiceExplosion; public static ConfigEntry<bool> DieEmergencyAsScrap; public static ConfigEntry<bool> DisableGal; public static ConfigEntry<int> GalPrice; public static ConfigEntry<bool> LoversOnStart; public static ConfigEntry<bool> DebugMenuClosesAfter; public static ConfigEntry<bool> TwitchEnabled; public static ConfigEntry<string> DisplayResults; public static ConfigEntry<string> debugChat; public static ConfigEntry<bool> deadAds; public static Dictionary<string, LevelTypes> RegLevels = new Dictionary<string, LevelTypes> { { "Experimentation", (LevelTypes)4 }, { "Assurance", (LevelTypes)8 }, { "Vow", (LevelTypes)16 }, { "Offense", (LevelTypes)32 }, { "March", (LevelTypes)64 }, { "Rend", (LevelTypes)128 }, { "Dine", (LevelTypes)256 }, { "Titan", (LevelTypes)512 }, { "Adamance", (LevelTypes)2048 }, { "Artifice", (LevelTypes)4096 }, { "Embrion", (LevelTypes)8192 } }; public static List<Item> RegisteredDice = new List<Item>(); public static void ModConfig() { pussyMode = BepInExConfig.Bind<bool>("클라이언트", "겁쟁이 모드", true, "점프스케어 효과를 덜 무서운 버전으로 변경합니다."); deadAds = BepInExConfig.Bind<bool>("Clientside", "사망 중 광고", true, "사망 중에도 광고가 재생됩니다."); DieEmergencyAsScrap = BepInExConfig.Bind<bool>("긴급 주사위", "고철 등록", false, "긴급 주사위를 고철로 등록합니다"); debugButton = BepInExConfig.Bind<bool>("관리자", "디버그 버튼", false, "디버그 버튼을 활성화합니다 (호스트 전용)"); superDebugMode = BepInExConfig.Bind<bool>("Admin", "슈퍼 디버그", false, "클라이언트도 디버그 메뉴를 사용할 수 있게 됩니다"); debugMenuShowsAll = BepInExConfig.Bind<bool>("Admin", "디버그 메뉴 전체 이벤트 표시", false, "비활성화된 이벤트도 디버그 메뉴에 표시합니다"); BetterDebugMenu = BepInExConfig.Bind<bool>("Admin", "개선된 디버그 메뉴", false, "개선된 디버그 메뉴를 활성화합니다"); LockDebugUI = BepInExConfig.Bind<bool>("새 디버그", "입력 잠금", true, "UI가 열려있는 동안 입력을 잠급니다"); debugDice = BepInExConfig.Bind<bool>("Admin", "콘솔에 이펙트 표시", false, "주사위로 나온 이펙트를 콘솔에 표시합니다. 디버그용."); debugChat = BepInExConfig.Bind<string>("Admin", "채팅에 이펙트 표시", chatDebug.None.ToString(), "주사위로 나온 이펙트를 채팅에 표시합니다. 디버그용.\n옵션: Host, Everyone, None"); DebugMenuTextColor = BepInExConfig.Bind<string>("New Debug", "텍스트 색상", "#F581FA", "디버그 메뉴 텍스트 색상을 설정합니다."); DebugMenuTextAlpha = BepInExConfig.Bind<int>("New Debug", "텍스트 투명도", 100, "디버그 메뉴 텍스트 투명도를 설정합니다."); debugSpawnOnPlayer = BepInExConfig.Bind<bool>("New Debug", "플레이어에게 소환", true, "디버그 메뉴로 적을 플레이어 위치에 소환합니다."); ConfigOnlyOwnerDisablesGal = BepInExConfig.Bind<bool>("갈", "소유자만 갈 비활성화 가능", true, "소유자만 갈을 비활성화할 수 있습니다"); ConfigGalAutomatic = BepInExConfig.Bind<bool>("Gal", "자동 활성화", false, "갈이 자동으로 활성화됩니다"); DisableGal = BepInExConfig.Bind<bool>("Gal", "완전 비활성화", false, "갈을 상점에서 제거하고 이펙트 풀에 추가합니다"); GalPrice = BepInExConfig.Bind<int>("Gal", "가격", 1777, "갈의 가격을 설정합니다."); ImFeelingLuckyCooldown = BepInExConfig.Bind<int>("Gal", "행운의 느낌 쿨다운", 120, "행운의 느낌 갈 이펙트 쿨다운(초)"); DevilDealCooldown = BepInExConfig.Bind<int>("Gal", "악마의 거래 쿨다운", 90, "악마의 거래 갈 이펙트 쿨다운(초)"); OnTheHouseCooldown = BepInExConfig.Bind<int>("Gal", "서비스 쿨다운", 300, "서비스 갈 이펙트 쿨다운(초)"); DebugMenuFavoriteTextColor = BepInExConfig.Bind<string>("New Debug", "즐겨찾기 텍스트 색상", "#F53548", "디버그 메뉴 즐겨찾기 텍스트 색상을 설정합니다."); DebugMenuFavoriteTextAlpha = BepInExConfig.Bind<int>("New Debug", "즐겨찾기 텍스트 투명도", 100, "디버그 메뉴 즐겨찾기 텍스트 투명도를 설정합니다."); DebugMenuBackgroundColor = BepInExConfig.Bind<string>("New Debug", "배경 색상", "#270051", "디버그 메뉴 배경 색상을 설정합니다."); DebugMenuBackgroundAlpha = BepInExConfig.Bind<int>("New Debug", "배경 투명도", 46, "디버그 메뉴 배경 투명도를 설정합니다."); DebugMenuAccentColor = BepInExConfig.Bind<string>("New Debug", "강조 색상", "#A34EFF", "디버그 메뉴 강조 색상을 설정합니다."); DebugMenuAccentAlpha = BepInExConfig.Bind<int>("New Debug", "강조 투명도", 25, "디버그 메뉴 강조 투명도를 설정합니다."); DebugButtonColor = BepInExConfig.Bind<string>("New Debug", "버튼 색상", "#A447FF", "디버그 메뉴 버튼 색상을 설정합니다."); DebugButtonAlpha = BepInExConfig.Bind<int>("New Debug", "버튼 투명도", 80, "디버그 메뉴 버튼 투명도를 설정합니다."); minHyperShake = BepInExConfig.Bind<float>("과진동", "과진동 최소 강도", 15f, "과진동의 최소 이동량을 변경합니다."); Bald = BepInExConfig.Bind<bool>("New Debug", "대머리", false, "Bald"); maxHyperShake = BepInExConfig.Bind<float>("Hypershake", "과진동 최대 강도", 60f, "과진동의 최대 이동량을 변경합니다."); LoversOnStart = BepInExConfig.Bind<bool>("Misc", "라운드 시작 시 연인 지정", false, "매 라운드 새로운 연인을 지정합니다"); insideJoke = BepInExConfig.Bind<bool>("Misc", "내부 농담", false, "내부 농담 요소를 활성화합니다"); aprilFoolsConfig = BepInExConfig.Bind<bool>("Misc", "만우절 모드", false, "만우절 모드를 토글합니다"); CopyrightFree = BepInExConfig.Bind<bool>("Clientside", "저작권 프리", false, "10초 이상의 저작권 음악을 제거합니다"); CopyrightFree.SettingChanged += freebirdChange; SoundVolume = BepInExConfig.Bind<float>("Clientside", "사운드 볼륨", 0.75f, "이 모드의 대부분 사운드/음악 볼륨을 설정합니다"); SoundVolume.SettingChanged += setAudio; hyperShakeTimer = BepInExConfig.Bind<int>("Hypershake", "과진동 지속 시간", -1, "과진동 지속 시간(초). -1이면 라운드 종료까지"); randomSpinTime = BepInExConfig.Bind<bool>("Misc", "무작위 회전 시간", true, "주사위가 굴러가기 전 무작위 시간 동안 회전합니다."); chronosUpdatedTimeOfDay = BepInExConfig.Bind<bool>("Misc", "크로노스 시간 개선", true, "크로노스 주사위가 아침에 더 나은 확률을 가집니다."); doDiceExplosion = BepInExConfig.Bind<bool>("Misc", "주사위 폭발 효과", true, "굴린 후 주사위가 폭발하는지 설정합니다"); TwitchEnabled = BepInExConfig.Bind<bool>("트위치", "트위치 연동 활성화", false, "트위치 채팅 연동을 활성화합니다 (TwitchChatAPI 필요)"); useDiceOutside = BepInExConfig.Bind<bool>("Misc", "외부에서 주사위 사용", false, "크로노스/갬블러를 외부에서 사용 가능하게 합니다."); allowChatCommands = BepInExConfig.Bind<bool>("Admin", "채팅 명령어 허용", false, "관리자용 채팅 명령어를 활성화합니다. 주로 디버그용."); eggExplodeTime = BepInExConfig.Bind<float>("Misc", "알 분수 시간", 0.25f, "알이 폭발하는 속도를 설정합니다. 0이면 즉시 전부 폭발"); yippeeUse = BepInExConfig.Bind<bool>("Misc", "비축 벌레 주사위 사용", true, "비축 벌레가 주사위를 사용할 수 있는지 설정합니다"); minNeckSpin = BepInExConfig.Bind<float>("목 회전", "목 회전 최소 속도", 0.1f, "목이 회전하는 최소 속도를 변경합니다."); maxNeckSpin = BepInExConfig.Bind<float>("NeckSpin", "목 회전 최대 속도", 0.8f, "목이 회전하는 최대 속도를 변경합니다."); neckRotations = BepInExConfig.Bind<int>("NeckSpin", "목 회전 횟수", -1, "목이 멈추기 전 회전 횟수를 변경합니다. -1이면 무한"); rotationSpeedModifier = BepInExConfig.Bind<float>("NeckSpin", "목 회전 속도 배율", 3f, "회전 횟수가 유한일 때 최소/최대 속도 배율을 변경합니다"); useNeckBreakTimer = BepInExConfig.Bind<bool>("목 부러짐", "타이머 사용", true, "라운드 종료 대신 타이머로 목 부러짐 지속 시간을 설정합니다"); CustomEnemyEventCount = BepInExConfig.Bind<int>("커스텀", "커스텀 적 이벤트 수", 0, "커스텀 적 이벤트의 수를 설정합니다"); CustomItemEventCount = BepInExConfig.Bind<int>("Custom", "커스텀 아이템 이벤트 수", 0, "커스텀 아이템 이벤트의 수를 설정합니다"); CustomTrapEventCount = BepInExConfig.Bind<int>("Custom", "커스텀 함정 이벤트 수", 0, "커스텀 함정 이벤트의 수를 설정합니다"); showOwnScanNode = BepInExConfig.Bind<bool>("Clientside", "내 스캔 노드 표시", true, "자신의 스캔 노드를 볼 수 있는지 설정합니다 (현재 일부 플레이어에게만 적용)"); showOwnScanNode.SettingChanged += delegate { Misc.ToggleAllScanPlayerNodes(); }; minNeckBreakTimer = BepInExConfig.Bind<int>("NeckBreak", "최소 지속 시간", 30, "목 부러짐 최소 지속 시간(초)을 설정합니다"); EmergencyDiePrice = BepInExConfig.Bind<int>("Emergency Die", "긴급 주사위 가격", 200, "긴급 주사위의 가격을 설정합니다"); maxNeckBreakTimer = BepInExConfig.Bind<int>("NeckBreak", "최대 지속 시간", 60, "목 부러짐 최대 지속 시간(초)을 설정합니다"); DisplayResults = BepInExConfig.Bind<string>("Misc", "결과 표시", DieBehaviour.ShowEffect.ALL.ToString(), "주사위 결과 표시 방식:\nALL - 전부 표시, NONE - 표시 안 함,\nDEFAULT - 기본 표시, RANDOM - 무작위 표시"); DebugLogging = BepInExConfig.Bind<bool>("Admin", "디버그 로깅", false, "다양한 항목의 이름을 로그로 출력합니다. 대부분의 경우 불필요합니다."); DebugMenuClosesAfter = BepInExConfig.Bind<bool>("Misc", "선택 후 메뉴 닫기", true, "이펙트 선택 후 디버그 메뉴를 닫습니다. False면 열린 채로 유지"); toggleCursed = BepInExConfig.Bind<bool>("Misc", "저주 토글", false, "true로 설정하면 저주 ID와 무작위 저주가 작동합니다"); cursedIDs = BepInExConfig.Bind<string>("Misc", "저주받은 스팀 ID", "76561198984467725", "쉼표로 구분하여 저주할 플레이어의 스팀 ID를 입력합니다"); cursedRandomly = BepInExConfig.Bind<bool>("Misc", "무작위 저주", false, "매 할당량마다 저주받은 ID 목록 대신 무작위 플레이어를 저주합니다"); BrutalMode = BepInExConfig.Bind<bool>("브루탈", "브루탈 모드", false, "라운드 시작 시 무작위 주사위 이벤트가 발생합니다"); BrutalChat = BepInExConfig.Bind<bool>("Brutal", "브루탈 채팅", true, "브루탈 이벤트를 채팅에 표시합니다"); SuperBrutalMode = BepInExConfig.Bind<bool>("Brutal", "슈퍼 브루탈 모드", false, "무작위로 주사위 이벤트가 계속 발생합니다"); brutalStartingScale = BepInExConfig.Bind<int>("Brutal", "브루탈 시작 규모", 1, "시작 이벤트 수를 설정합니다"); brutalMaxScale = BepInExConfig.Bind<int>("Brutal", "브루탈 최대 규모", 7, "최대 이벤트 수를 설정합니다"); brutalScaleType = BepInExConfig.Bind<int>("Brutal", "브루탈 규모 유형", 0, "규모 증가 방식을 설정합니다\n0: 경과 일수 기준 (최대 50일)\n1: 선박 내 고철 양 기준\n2: 연속 생존 일수 기준\n3: 0번과 1번의 조합\n4: 스케일링 비활성화"); } public static void setAudio(object sender, EventArgs e) { if ((Object)(object)Networker.Instance == (Object)null) { return; } foreach (AudioSource audioSource in Networker.Instance.AudioSources) { audioSource.volume = SoundVolume.Value; } foreach (AudioSource freebirdAudioSource in Networker.Instance.FreebirdAudioSources) { freebirdAudioSource.volume = SoundVolume.Value; } } public static void freebirdChange(object sender, EventArgs e) { if ((Object)(object)Networker.Instance == (Object)null) { return; } foreach (AudioSource freebirdAudioSource in Networker.Instance.FreebirdAudioSources) { if (CopyrightFree.Value) { freebirdAudioSource.clip = LoadedAssets2.LoadAsset<AudioClip>("SpazzmaticaPolka"); } else { freebirdAudioSource.clip = LoadedAssets2.LoadAsset<AudioClip>("Freebird"); } freebirdAudioSource.Play(); } } public static List<ConfigEntryBase> GetListConfigs() { List<ConfigEntryBase> list = new List<ConfigEntryBase>(); list.Add((ConfigEntryBase)(object)debugChat); list.Add((ConfigEntryBase)(object)superDebugMode); list.Add((ConfigEntryBase)(object)DieEmergencyAsScrap); list.Add((ConfigEntryBase)(object)EmergencyDiePrice); list.Add((ConfigEntryBase)(object)hyperShakeTimer); list.Add((ConfigEntryBase)(object)minHyperShake); list.Add((ConfigEntryBase)(object)maxHyperShake); list.Add((ConfigEntryBase)(object)randomSpinTime); list.Add((ConfigEntryBase)(object)chronosUpdatedTimeOfDay); list.Add((ConfigEntryBase)(object)useDiceOutside); list.Add((ConfigEntryBase)(object)allowChatCommands); list.Add((ConfigEntryBase)(object)minNeckSpin); list.Add((ConfigEntryBase)(object)maxNeckSpin); list.Add((ConfigEntryBase)(object)neckRotations); list.Add((ConfigEntryBase)(object)rotationSpeedModifier); list.Add((ConfigEntryBase)(object)useNeckBreakTimer); list.Add((ConfigEntryBase)(object)minNeckBreakTimer); list.Add((ConfigEntryBase)(object)maxNeckBreakTimer); list.Add((ConfigEntryBase)(object)DisplayResults); return list; } private void Awake() { //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Expected O, but got Unknown CustomLogger = Logger.CreateLogSource("Emergency Dice Updated"); lethalThingsAssembly = GetAssembly("evaisa.lethalthings"); lethalThingsPresent = IsModPresent("evaisa.lethalthings", "LethalThings compatibility enabled!"); LethalMonAssembly = GetAssembly("LethalMon"); LethalMonPresent = IsModPresent("LethalMon", "LethalMon compatibility enabled!"); LCOfficeAssembly = GetAssembly("Piggy.LCOffice"); LCOfficePresent = IsModPresent("Piggy.LCOffice", "LCOffice compatibility enabled!"); SurfacedPresent = IsModPresent("Surfaced", "Surfaced compatibility enabled!"); LCTarotCardPresent = IsModPresent("LCTarotCard", "LCTarotCard compatibility enabled!"); TakeyPlushPresent = IsModPresent("com.github.zehsteam.TakeyPlush", "TakeyPlush compatibility enabled!"); CodeRebirthPresent = IsModPresent("CodeRebirth", "CodeRebirth compatibility enabled!"); DiversityPresent = IsModPresent("Chaos.Diversity", "Diversity: Remastered compatibility enabled!"); BombCollarPresent = IsModPresent("Jordo.BombCollar", "Bomb Collar compatibility enabled! >:)"); NavMeshInCompanyPresent = IsModPresent("dev.kittenji.NavMeshInCompany", "Nav Mesh In Company compatibility enabled! >:)"); NightOfTheLivingMimicPresent = IsModPresent("Slayer6409.NightOfTheLivingMimic", ">:)"); TooManyEmotesPresent = IsModPresent("FlipMods.TooManyEmotes", "Dancing Enabled!"); if (Chainloader.PluginInfos.ContainsKey("ainavt.lc.lethalconfig")) { LethalConfigPresent = true; } BepInExConfig = new ConfigFile(Path.Combine(Paths.ConfigPath, "Emergency Dice.cfg"), true); ModConfig(); InvisibleEnemy.Config(); BlameGlitch.Config(); AlarmCurse.Config(); if (SurfacedPresent) { Flinger.Config(); } customCfg = new CustomConfigs(BepInExConfig); customCfg.GenerateConfigs(CustomEnemyEventCount.Value, CustomItemEventCount.Value, CustomTrapEventCount.Value); DieBehaviour.Config(); if (superDebugMode.Value) { db(); } LoadedAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "mysterydice")); LoadedAssets2 = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "mysterydice2")); sounds.Add("MineDetonate", LoadedAssets.LoadAsset<AudioClip>("MineDetonate")); sounds.Add("MineTrigger", LoadedAssets.LoadAsset<AudioClip>("MineTrigger")); sounds.Add("Bell2", LoadedAssets.LoadAsset<AudioClip>("Bell2")); sounds.Add("Bad1", LoadedAssets.LoadAsset<AudioClip>("Bad1")); sounds.Add("Good2", LoadedAssets.LoadAsset<AudioClip>("Good2")); sounds.Add("glitch", LoadedAssets.LoadAsset<AudioClip>("glitch")); sounds.Add("purr", LoadedAssets.LoadAsset<AudioClip>("purr")); sounds.Add("alarmcurse", LoadedAssets.LoadAsset<AudioClip>("alarmcurse")); sounds.Add("Meeting_Sound", LoadedAssets2.LoadAsset<AudioClip>("Meeting_Sound")); sounds.Add("Dawg", LoadedAssets2.LoadAsset<AudioClip>("Dawg")); sounds.Add("Jaws", LoadedAssets2.LoadAsset<AudioClip>("Jaws")); sounds.Add("FireAlarm", LoadedAssets2.LoadAsset<AudioClip>("FireAlarm")); sounds.Add("Paparazzi", LoadedAssets2.LoadAsset<AudioClip>("Paparazzi")); sounds.Add("WindowsError", LoadedAssets2.LoadAsset<AudioClip>("WindowsError")); sounds.Add("disconnect", LoadedAssets2.LoadAsset<AudioClip>("disconnect")); sounds.Add("DoorLeft", LoadedAssets2.LoadAsset<AudioClip>("DoorLeft")); sounds.Add("DoorRight", LoadedAssets2.LoadAsset<AudioClip>("DoorRight")); sounds.Add("AudioTest", LoadedAssets2.LoadAsset<AudioClip>("AudioTest")); sounds.Add("aot", LoadedAssets2.LoadAsset<AudioClip>("aot")); sounds.Add("wiwiwi", LoadedAssets2.LoadAsset<AudioClip>("wiwiwi")); sounds.Add("BANANA", LoadedAssets2.LoadAsset<AudioClip>("BANANA")); sounds.Add("tuturu", LoadedAssets2.LoadAsset<AudioClip>("tuturu")); sounds.Add("mah-boi", LoadedAssets2.LoadAsset<AudioClip>("mah-boi")); sounds.Add("Bad Romance", LoadedAssets2.LoadAsset<AudioClip>("bad")); sounds.Add("Boom", LoadedAssets2.LoadAsset<AudioClip>("boom")); sounds.Add("Bald", LoadedAssets2.LoadAsset<AudioClip>("Glitchimnotbald")); sounds.Add("BerthaCollide", LoadedAssets2.LoadAsset<AudioClip>("BerthaCollide")); sounds.Add("Jimothy", LoadedAssets2.LoadAsset<AudioClip>("JimHonk")); sounds.Add("Beartrap", LoadedAssets2.LoadAsset<AudioClip>("BearTrapSnapOnPlayer")); sounds.Add("JanitorBald", LoadedAssets2.LoadAsset<AudioClip>("JanitorIdleSpeak12")); sounds.Add("Duck", LoadedAssets2.LoadAsset<AudioClip>("DuckSpawn")); sounds.Add("Fumo", LoadedAssets2.LoadAsset<AudioClip>("Fumo")); sounds.Add("Steve", LoadedAssets2.LoadAsset<AudioClip>("Steve")); sounds.Add("Yeehaw", LoadedAssets2.LoadAsset<AudioClip>("Yeehaw")); sounds.Add("KeepDice", LoadedAssets2.LoadAsset<AudioClip>("KeepDice")); sounds.Add("NancyHair", LoadedAssets2.LoadAsset<AudioClip>("NancySorryGlitch")); sounds.Add("Lizard", LoadedAssets2.LoadAsset<AudioClip>("lizard")); WarningBracken = LoadedAssets.LoadAsset<Sprite>("bracken"); WarningJester = LoadedAssets.LoadAsset<Sprite>("jester"); WarningDeath = LoadedAssets.LoadAsset<Sprite>("death"); WarningLuck = LoadedAssets.LoadAsset<Sprite>("luck"); jobApplication = LoadedAssets2.LoadAsset<Material>("JobApplication"); angyGlitch = LoadedAssets2.LoadAsset<Material>("AngyGlitch"); DiceGal = LoadedAssets2.LoadAsset<GameObject>("DiceGal"); diceGalUnlockable = LoadedAssets2.LoadAsset<UnlockableItemDef>("DiceGalUnlockable"); NetworkerPrefab = LoadedAssets.LoadAsset<GameObject>("Networker"); ((Object)NetworkerPrefab).name = "DiceNetworker"; NetworkerPrefab.AddComponent<Networker>(); AgentObjectPrefab = LoadedAssets2.LoadAsset<GameObject>("AgentObject"); if (aprilFoolsConfig.Value) { AgentObjectPrefab.GetComponent<NavMeshAgent>().speed = 9f; } DebugMenuPrefab = LoadedAssets2.LoadAsset<GameObject>("DebugMenu"); NewSelectMenuPrefab = LoadedAssets2.LoadAsset<GameObject>("NewSelectMenu"); DebugMenuButtonPrefab = LoadedAssets2.LoadAsset<GameObject>("DebugButton"); DebugSubButtonPrefab = LoadedAssets2.LoadAsset<GameObject>("SubmenuButton"); PlayerNodeController = LoadedAssets2.LoadAsset<GameObject>("PlayerNodeController"); JumpscareCanvasPrefab = LoadedAssets2.LoadAsset<GameObject>("JumpscareCanvas"); JumpscareCanvasPrefab.AddComponent<Jumpscare>(); SpiderCanvasPrefab = LoadedAssets2.LoadAsset<GameObject>("SpiderCanvas"); SpiderMoverPrefab = LoadedAssets2.LoadAsset<GameObject>("SpiderMover"); PathfinderPrefab = LoadedAssets.LoadAsset<GameObject>("Pathfinder"); PathfinderPrefab.AddComponent<Pathfinder.PathfindBehaviour>(); PathfinderSpawner = LoadedAssets.LoadAsset<Item>("Pathblob"); Pathfinder.BlobspawnerBehaviour blobspawnerBehaviour = PathfinderSpawner.spawnPrefab.AddComponent<Pathfinder.BlobspawnerBehaviour>(); ((GrabbableObject)blobspawnerBehaviour).grabbable = true; ((GrabbableObject)blobspawnerBehaviour).grabbableToEnemies = true; ((GrabbableObject)blobspawnerBehaviour).itemProperties = PathfinderSpawner; NetworkPrefabs.RegisterNetworkPrefab(NetworkerPrefab); NetworkPrefabs.RegisterNetworkPrefab(AgentObjectPrefab); NetworkPrefabs.RegisterNetworkPrefab(PathfinderSpawner.spawnPrefab); NetworkPrefabs.RegisterNetworkPrefab(PathfinderPrefab); NetworkPrefabs.RegisterNetworkPrefab(DiceGal); NetworkPrefabs.RegisterNetworkPrefab(diceGalUnlockable.unlockable.prefabObject); if ((Object)(object)diceGalUnlockable == (Object)null) { CustomLogger.LogError((object)"DiceGalUnlockable is null!"); } if (!DisableGal.Value) { Unlockables.RegisterUnlockable(diceGalUnlock