Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of LethalCasino v1.1.3
mrgrm7.LethalCasino.dll
Decompiled 5 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalCasino.Config; using LethalCasino.Custom; using LethalCasino.Patches; using LethalCasino.Types; using LethalCasino.patches; using Microsoft.CodeAnalysis; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; using UnityEngine.Rendering; using UnityEngine.Rendering.HighDefinition; using UnityEngine.SceneManagement; using mrgrm7.LethalCasino.NetcodePatcher; [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: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: AssemblyCompany("mrgrm7.LethalCasino")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("The Company is investing in a new vertical")] [assembly: AssemblyFileVersion("1.1.3.0")] [assembly: AssemblyInformationalVersion("1.1.3+d6d9bed707734e0bf108665ba5a0bdc99721421d")] [assembly: AssemblyProduct("LethalCasino")] [assembly: AssemblyTitle("mrgrm7.LethalCasino")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.3.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 struct NetworkStringIntDictionary : INetworkSerializable { public Dictionary<string, int> Dictionary; public unsafe void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReaderWriter { //IL_0045: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) if (Dictionary == null && !serializer.IsReader) { Dictionary = new Dictionary<string, int>(); } int num = ((!serializer.IsReader) ? Dictionary.Count : 0); ((BufferSerializer<int>*)(&serializer))->SerializeValue<int>(ref num, default(ForPrimitives)); if (serializer.IsReader) { Dictionary = new Dictionary<string, int>(num); } for (int i = 0; i < num; i++) { string key = string.Empty; int value = 0; if (!serializer.IsReader) { key = Dictionary.Keys.ElementAt(i); value = Dictionary[key]; } serializer.SerializeValue(ref key, false); ((BufferSerializer<int>*)(&serializer))->SerializeValue<int>(ref value, default(ForPrimitives)); if (serializer.IsReader) { Dictionary[key] = value; } } } } public struct NetworkStringBoolDictionary : INetworkSerializable { public Dictionary<string, bool> Dictionary; public unsafe void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReaderWriter { //IL_0045: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) if (Dictionary == null && !serializer.IsReader) { Dictionary = new Dictionary<string, bool>(); } int num = ((!serializer.IsReader) ? Dictionary.Count : 0); ((BufferSerializer<int>*)(&serializer))->SerializeValue<int>(ref num, default(ForPrimitives)); if (serializer.IsReader) { Dictionary = new Dictionary<string, bool>(num); } for (int i = 0; i < num; i++) { string key = string.Empty; bool value = false; if (!serializer.IsReader) { key = Dictionary.Keys.ElementAt(i); value = Dictionary[key]; } serializer.SerializeValue(ref key, false); ((BufferSerializer<bool>*)(&serializer))->SerializeValue<bool>(ref value, default(ForPrimitives)); if (serializer.IsReader) { Dictionary[key] = value; } } } } namespace LethalCasino { [BepInPlugin("mrgrm7.LethalCasino", "LethalCasino", "1.1.3")] public class Plugin : BaseUnityPlugin { private static Harmony harmony; public static ManualLogSource logger; public static Dictionary<string, GameObject> Prefabs; public static Dictionary<string, AudioClip> Sounds; public static Dictionary<string, Material> Materials; public static int numSongs = 10; public static LethalCasinoConfig configFile; public static Plugin Instance { get; private set; } private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown Instance = this; harmony = new Harmony("mrgrm7.LethalCasino"); NetcodeWeaver(); logger = Logger.CreateLogSource("mrgrm7.LethalCasino"); configFile = new LethalCasinoConfig(((BaseUnityPlugin)this).Config); LoadAllAssets(); Patch(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"mrgrm7.LethalCasino v1.1.3 has loaded!"); } private void LoadAllAssets() { //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Expected O, but got Unknown //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Expected O, but got Unknown Prefabs = new Dictionary<string, GameObject>(); Sounds = new Dictionary<string, AudioClip>(); Materials = new Dictionary<string, Material>(); string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); AssetBundle val = AssetBundle.LoadFromFile(Path.Combine(directoryName, "lethalcasinoassets")); if (!Object.op_Implicit((Object)(object)val)) { logger.LogError((object)"Failed to load asset bundle"); return; } logger.LogInfo((object)"Asset bundle loaded successfully"); Prefabs.Add("CasinoBuilding", LoadAsset<GameObject>(val, "CasinoBuilding")); Prefabs["CasinoBuilding"].AddComponent<CasinoBuilding>(); Prefabs.Add("SlotMachine", LoadAsset<GameObject>(val, "SlotMachine")); Prefabs["SlotMachine"].AddComponent<SlotMachine>(); Prefabs["SlotMachine"].AddComponent<InteractableCasinoComponent>(); Prefabs.Add("Roulette", LoadAsset<GameObject>(val, "Roulette")); Prefabs["Roulette"].AddComponent<Roulette>(); ((Component)Prefabs["Roulette"].transform.Find("Wheel")).gameObject.AddComponent<InteractableCasinoComponent>(); foreach (Transform item in Prefabs["Roulette"].transform.Find("BetContainer")) { Transform val2 = item; ((Component)val2).gameObject.AddComponent<InteractableCasinoComponent>(); } Prefabs.Add("Coin1", LoadAsset<GameObject>(val, "Coin1")); Prefabs.Add("Coin10", LoadAsset<GameObject>(val, "Coin10")); Prefabs.Add("Coin50", LoadAsset<GameObject>(val, "Coin50")); Prefabs.Add("Coin100", LoadAsset<GameObject>(val, "Coin100")); Prefabs.Add("Blackjack", LoadAsset<GameObject>(val, "Blackjack")); Prefabs["Blackjack"].AddComponent<Blackjack>(); Prefabs.Add("BlackjackBetControls", LoadAsset<GameObject>(val, "BlackjackBetControls")); foreach (Transform item2 in Prefabs["Blackjack"].transform) { Transform val3 = item2; if (((Object)((Component)val3).gameObject).name.StartsWith("Player") || ((Object)((Component)val3).gameObject).name.StartsWith("DealerHand")) { ((Component)val3).gameObject.AddComponent<InteractableCasinoComponent>(); } } Prefabs.Add("Card", LoadAsset<GameObject>(val, "Card")); string[] pLAYING_CARD_SUITS = Constants.PLAYING_CARD_SUITS; foreach (string text in pLAYING_CARD_SUITS) { string[] pLAYING_CARD_VALUES = Constants.PLAYING_CARD_VALUES; foreach (string text2 in pLAYING_CARD_VALUES) { string text3 = text2.ToLower() + "_" + text.ToLower(); Materials.Add(text3, LoadAsset<Material>(val, text3)); } } Sounds.Add("ShuffleDeck", LoadAsset<AudioClip>(val, "ShuffleDeck")); for (int k = 0; k < Constants.ASSETS_NUM_CARD_DEAL_SOUNDS; k++) { string text4 = $"CardDeal{k + 1}"; Sounds.Add(text4, LoadAsset<AudioClip>(val, text4)); } for (int l = 0; l < Constants.ASSETS_NUM_CARD_FLIP_SOUNDS; l++) { string text5 = $"CardFlip{l + 1}"; Sounds.Add(text5, LoadAsset<AudioClip>(val, text5)); } for (int m = 0; m < Constants.ASSETS_NUM_BLACKJACK_WIN_SOUNDS; m++) { string text6 = $"BlackjackWin{m + 1}"; Sounds.Add(text6, LoadAsset<AudioClip>(val, text6)); } Sounds.Add("BlackjackDealerWins", LoadAsset<AudioClip>(val, "BlackjackDealerWins")); Sounds.Add("BlackjackButtonHard", LoadAsset<AudioClip>(val, "BlackjackButtonHard")); Sounds.Add("BlackjackButtonSoft", LoadAsset<AudioClip>(val, "BlackjackButtonSoft")); Prefabs.Add("Jukebox", LoadAsset<GameObject>(val, "Jukebox")); Prefabs.Add("ATM", LoadAsset<GameObject>(val, "ATM")); Prefabs["ATM"].AddComponent<AtmMachine>(); Prefabs["ATM"].AddComponent<InteractableCasinoComponent>(); ((Component)Prefabs["ATM"].transform.Find("Buy10")).gameObject.AddComponent<InteractableCasinoComponent>(); ((Component)Prefabs["ATM"].transform.Find("Buy50")).gameObject.AddComponent<InteractableCasinoComponent>(); ((Component)Prefabs["ATM"].transform.Find("Buy100")).gameObject.AddComponent<InteractableCasinoComponent>(); Prefabs.Add("TheWheel", LoadAsset<GameObject>(val, "TheWheel")); Prefabs["TheWheel"].AddComponent<TheWheel>(); ((Component)Prefabs["TheWheel"].transform.Find("WheelPivot/Wheel")).gameObject.AddComponent<InteractableCasinoComponent>(); Prefabs.Add("ChipBag", LoadAsset<GameObject>(val, "ChipBag")); Prefabs.Add("PoofParticle", LoadAsset<GameObject>(val, "PoofParticle")); Prefabs.Add("SmokingPipe", LoadAsset<GameObject>(val, "SmokingPipe")); Prefabs.Add("Beer", LoadAsset<GameObject>(val, "Beer")); string[] array = Constants.BEER_POUR_SOUNDS.Concat(Constants.BEER_DRINK_SOUNDS).Concat(Constants.BEER_GULP_SOUNDS).Concat(Constants.GLASS_CLINK_SOUNDS) .ToArray(); string[] array2 = array; foreach (string text7 in array2) { Sounds.Add(text7, LoadAsset<AudioClip>(val, text7)); } Sounds.Add("PullLever", LoadAsset<AudioClip>(val, "PullLever")); Sounds.Add("ReelClick", LoadAsset<AudioClip>(val, "ReelClick")); Sounds.Add("SlotsPlaying1", LoadAsset<AudioClip>(val, "SlotsPlaying1")); Sounds.Add("SlotsPlaying2", LoadAsset<AudioClip>(val, "SlotsPlaying2")); Sounds.Add("SlotsPlaying3", LoadAsset<AudioClip>(val, "SlotsPlaying3")); Sounds.Add("SlotsDing", LoadAsset<AudioClip>(val, "SlotsDing")); Sounds.Add("CoinDispense", LoadAsset<AudioClip>(val, "CoinDispense")); Sounds.Add("SlotsBigJackpot", LoadAsset<AudioClip>(val, "SlotsBigJackpot")); Sounds.Add("SlotsMediumJackpot", LoadAsset<AudioClip>(val, "SlotsMediumJackpot")); Sounds.Add("SlotsSmallJackpot", LoadAsset<AudioClip>(val, "SlotsSmallJackpot")); Sounds.Add("SlotsBuzzer1", LoadAsset<AudioClip>(val, "SlotsBuzzer1")); Sounds.Add("SlotsBuzzer2", LoadAsset<AudioClip>(val, "SlotsBuzzer2")); Sounds.Add("SlotsLose", LoadAsset<AudioClip>(val, "SlotsLose")); Sounds.Add("ButtonPush", LoadAsset<AudioClip>(val, "ButtonPush")); Sounds.Add("RouletteBallRoll", LoadAsset<AudioClip>(val, "RouletteBallRoll")); Sounds.Add("Chips1", LoadAsset<AudioClip>(val, "Chips1")); Sounds.Add("Chips2", LoadAsset<AudioClip>(val, "Chips2")); Sounds.Add("Chips3", LoadAsset<AudioClip>(val, "Chips3")); Sounds.Add("Chips4", LoadAsset<AudioClip>(val, "Chips4")); Sounds.Add("PlaceMultipleChips", LoadAsset<AudioClip>(val, "PlaceMultipleChips")); Sounds.Add("ChipBagDrop1", LoadAsset<AudioClip>(val, "ChipBagDrop1")); Sounds.Add("ChipBagDrop2", LoadAsset<AudioClip>(val, "ChipBagDrop2")); Sounds.Add("ATMClick", LoadAsset<AudioClip>(val, "ATMClick")); Sounds.Add("PopSound", LoadAsset<AudioClip>(val, "PopSound")); Sounds.Add("ChaChing", LoadAsset<AudioClip>(val, "ChaCHing")); Sounds.Add("WheelClick1", LoadAsset<AudioClip>(val, "WheelClick1")); Sounds.Add("WheelClick2", LoadAsset<AudioClip>(val, "WheelClick2")); Sounds.Add("WheelClick3", LoadAsset<AudioClip>(val, "WheelClick3")); Sounds.Add("WheelClick4", LoadAsset<AudioClip>(val, "WheelClick4")); Sounds.Add("WheelClick5", LoadAsset<AudioClip>(val, "WheelClick5")); Sounds.Add("WheelClick6", LoadAsset<AudioClip>(val, "WheelClick6")); Sounds.Add("WheelClick7", LoadAsset<AudioClip>(val, "WheelClick7")); Sounds.Add("WheelClick8", LoadAsset<AudioClip>(val, "WheelClick8")); Sounds.Add("WheelClick9", LoadAsset<AudioClip>(val, "WheelClick9")); Sounds.Add("WheelClick10", LoadAsset<AudioClip>(val, "WheelClick10")); Sounds.Add("WheelLoseBig", LoadAsset<AudioClip>(val, "WheelLoseBig")); Sounds.Add("WheelLoseSmall", LoadAsset<AudioClip>(val, "WheelLoseSmall")); Sounds.Add("WheelTokenDrop", LoadAsset<AudioClip>(val, "WheelTokenDrop")); Sounds.Add("WheelWinMedium", LoadAsset<AudioClip>(val, "WheelWinMedium")); Sounds.Add("WheelWinLarge", LoadAsset<AudioClip>(val, "WheelWinLarge")); Sounds.Add("PipeLighter", LoadAsset<AudioClip>(val, "PipeLighter")); Sounds.Add("PipeBurn1", LoadAsset<AudioClip>(val, "PipeBurn1")); Sounds.Add("PipeBurn2", LoadAsset<AudioClip>(val, "PipeBurn2")); Sounds.Add("PipeBurn3", LoadAsset<AudioClip>(val, "PipeBurn3")); string[] sONG_TYPES = Constants.SONG_TYPES; foreach (string text8 in sONG_TYPES) { for (int num2 = 1; num2 <= numSongs; num2++) { Sounds.Add($"{text8}Song{num2}", LoadAsset<AudioClip>(val, $"{text8}Song{num2}")); } Sounds.Add(text8 + "Song99", LoadAsset<AudioClip>(val, text8 + "Song99")); } } private T LoadAsset<T>(AssetBundle bundle, string asset) where T : Object { T val = bundle.LoadAsset<T>(asset); if (!Object.op_Implicit((Object)(object)val)) { logger.LogError((object)(asset + " asset failed to load")); } return val; } private void Patch() { ((BaseUnityPlugin)this).Logger.LogDebug((object)"Patching..."); harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogDebug((object)"Finished Patching!"); } private void Unpatch() { ((BaseUnityPlugin)this).Logger.LogDebug((object)"Unpatching..."); harmony.UnpatchSelf(); ((BaseUnityPlugin)this).Logger.LogDebug((object)"Finished Unpatching!"); } private static void NetcodeWeaver() { 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); } } } } [ServerRpc(RequireOwnership = false)] public T GetHostConfigValueServerRpc<T>(string configField) { logger.LogInfo((object)"GetHostConfigValueServerRpc"); if (typeof(T) == typeof(string)) { return (T)(object)configFile.configStrings[configField]; } if (typeof(T) == typeof(float)) { return (T)(object)configFile.configValues[configField]; } if (typeof(T) == typeof(bool)) { return (T)(object)configFile.configFlags[configField]; } if (typeof(T) == typeof(int)) { return (T)(object)configFile.configInts[configField]; } return default(T); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "mrgrm7.LethalCasino"; public const string PLUGIN_NAME = "LethalCasino"; public const string PLUGIN_VERSION = "1.1.3"; } } namespace LethalCasino.Types { internal class RouletteResult { public List<GrabbableObject> winningScrap = new List<GrabbableObject>(); public int lostValue; public int wonValue; } } namespace LethalCasino.patches { [HarmonyPatch(typeof(RoundManager))] internal class RoundManagerPatch : NetworkBehaviour { public static CasinoManager CasinoManager; [HarmonyPatch("Awake")] [HarmonyPostfix] public static void AwakePatch(RoundManager __instance) { Plugin.logger.LogInfo((object)"RoundManagerPatch has awoken"); CasinoManager = ((Component)__instance).gameObject.AddComponent<CasinoManager>(); } [HarmonyPatch("LoadNewLevelWait")] [HarmonyPrefix] public static void LoadNewLevelWaitPatch(RoundManager __instance) { if (__instance.currentLevel.levelID == 3) { Plugin.logger.LogInfo((object)"Spawning casino objects"); CasinoManager.SpawnCasinoServerRpc(); } } [HarmonyPatch("DespawnPropsAtEndOfRound")] [HarmonyPostfix] public static void DespawnPropsAtEndOfRoundPatch(RoundManager __instance) { if (__instance.currentLevel.levelID == 3) { Plugin.logger.LogInfo((object)"Despawning casino objects"); if (((NetworkBehaviour)CasinoManager).IsServer) { CasinoManager.DespawnCasinoServerRpc(); } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { ((NetworkBehaviour)this).__initializeRpcs(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "RoundManagerPatch"; } } } namespace LethalCasino.Patches { [HarmonyPatch(typeof(GameNetworkManager))] internal class GameNetworkManagerPatch { [HarmonyPatch("Start")] [HarmonyPostfix] public static void StartPatch(GameNetworkManager __instance) { Plugin.logger.LogInfo((object)"Adding slot machine to network prefab"); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["CasinoBuilding"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["SlotMachine"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["Roulette"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["Blackjack"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["TheWheel"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["Jukebox"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["ATM"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["ChipBag"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["SmokingPipe"]); NetworkManager.Singleton.AddNetworkPrefab(Plugin.Prefabs["Beer"]); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "StartDisconnect")] public static void StartDisconnectPatch() { Plugin.logger.LogInfo((object)"Player disconnected."); RoundManagerPatch.CasinoManager.Destroy(); } } [HarmonyPatch(typeof(GrabbableObject))] internal class GrabbableObjectPatch : NetworkBehaviour { [HarmonyPatch("Start")] [HarmonyPrefix] public static void Start(GrabbableObject __instance) { CustomScrapController customScrapController = default(CustomScrapController); if (!((Component)__instance).gameObject.TryGetComponent<CustomScrapController>(ref customScrapController)) { ((Component)__instance).gameObject.AddComponent<CustomScrapController>(); } } [HarmonyPatch("SetScrapValue")] [HarmonyPostfix] public static void SetScrapValue(GrabbableObject __instance) { //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) CustomScrapController customScrapController = default(CustomScrapController); if (((Component)__instance).gameObject.TryGetComponent<CustomScrapController>(ref customScrapController) && __instance.scrapValue <= 0 && customScrapController.destroyOnZeroValue && !customScrapController.tempDisablePoofOnZero) { if (__instance.isHeld || __instance.isPocketed) { Plugin.logger.LogInfo((object)"Object is held or pocketed"); RoundManagerPatch.CasinoManager.DespawnCasinoItemServerRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)__instance), needsNetworkDespawn: false); } else { Plugin.logger.LogInfo((object)"Destroying object on ground"); CreatePoofParticle(((Component)__instance).transform, default(Vector3), 0.7f); RoundManagerPatch.CasinoManager.DespawnCasinoItemServerRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)__instance), needsNetworkDespawn: true); } } } public static void CreatePoofParticle(Transform transform, Vector3 offset, float volume) { //IL_0011: 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) //IL_0017: 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) GameObject val = Object.Instantiate<GameObject>(Plugin.Prefabs["PoofParticle"], transform.position + offset, transform.rotation); val.AddComponent<PoofParticle>(); val.GetComponent<AudioSource>().PlayOneShot(Plugin.Sounds["PopSound"], volume); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { ((NetworkBehaviour)this).__initializeRpcs(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "GrabbableObjectPatch"; } } [HarmonyPatch(typeof(MenuManager))] internal class MenuManagerPatch { [HarmonyPatch("Start")] [HarmonyPostfix] public static void StartPatch(MenuManager __instance) { CheckModConflicts(__instance); } private static void CheckModConflicts(MenuManager menuManager) { foreach (KeyValuePair<string, PluginInfo> pluginInfo in Chainloader.PluginInfos) { BepInPlugin metadata = pluginInfo.Value.Metadata; if (metadata.GUID.Equals("LC_API")) { menuManager.DisplayMenuNotification("LC_API IS BROKEN. UNINSTALL IT.", "Ignore"); } } } } [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { internal static Dictionary<PlayerControllerB, CustomPlayerController> customPlayers = new Dictionary<PlayerControllerB, CustomPlayerController>(); private const float minDrunknessToAffectVoice = 0.3f; private const float timeToLoseDrunkness = 300f; [HarmonyPatch("Awake")] [HarmonyPrefix] public static void Awake(PlayerControllerB __instance) { CustomPlayerController value = ((Component)__instance).gameObject.AddComponent<CustomPlayerController>(); customPlayers.Add(__instance, value); } [HarmonyPatch("Update")] [HarmonyPostfix] private static void AfterUpdate(PlayerControllerB __instance) { ProcessDrunkness(__instance); } private static void ProcessDrunkness(PlayerControllerB player) { CustomPlayerController customPlayerController = customPlayers[player]; if (customPlayerController.beerDrunkness > 0.3f) { float num = 1f - (customPlayerController.beerDrunkness - 0.3f) * 0.4f; Plugin.logger.LogInfo((object)$"setting player pitchTarget from {SoundManager.Instance.playerVoicePitchTargets[player.playerClientId]} to {num}"); SoundManager.Instance.playerVoicePitchTargets[player.playerClientId] = num; } if (customPlayerController.beerDrunkness > 0f) { player.drunkness = Mathf.Pow(customPlayerController.beerDrunkness, 2f); customPlayerController.beerDrunkness -= Time.deltaTime / 300f; if (customPlayerController.beerDrunkness < 0f) { customPlayerController.beerDrunkness = 0f; } } } [HarmonyPatch("SetHoverTipAndCurrentInteractTrigger")] [HarmonyPostfix] private static void ShowScrapValueHoverTip(PlayerControllerB __instance) { InteractableCasinoComponent interactableCasinoComponent = default(InteractableCasinoComponent); if (!Object.op_Implicit((Object)(object)__instance.hoveringOverTrigger) || !Object.op_Implicit((Object)(object)((Component)__instance.hoveringOverTrigger).gameObject) || !((Component)__instance.hoveringOverTrigger).gameObject.TryGetComponent<InteractableCasinoComponent>(ref interactableCasinoComponent)) { return; } GrabbableObject val = __instance.ItemSlots[__instance.currentItemSlot]; if (interactableCasinoComponent.hoverTipCurrentBlackjackHand) { string text = "Hand"; if (interactableCasinoComponent.hoverTipIsBlackjackDealer) { text = "Dealer hand"; } ((TMP_Text)__instance.cursorTip).text = text + ": " + interactableCasinoComponent.currentBlackjackHand; } else if (Object.op_Implicit((Object)(object)val) && interactableCasinoComponent.hoverTipCurrentScrapValue && !((TMP_Text)__instance.cursorTip).text.Contains("Holding ■") && !interactableCasinoComponent.hoverTipIsBlackjackDealer) { TextMeshProUGUI cursorTip = __instance.cursorTip; ((TMP_Text)cursorTip).text = ((TMP_Text)cursorTip).text + "\nHolding ■" + val.scrapValue; } else if (interactableCasinoComponent.requireScrap && !Object.op_Implicit((Object)(object)val) && !interactableCasinoComponent.gameInProgress) { ((TMP_Text)__instance.cursorTip).text = interactableCasinoComponent.requireScrapMessage; } } } } namespace LethalCasino.Custom { internal class BarMenu : NetworkBehaviour { public Material signWithoutPricesMat; private void OnEnable() { if (SomeBarPricesAreChanged()) { MeshRenderer component = ((Component)((Component)this).transform.Find("Sign")).GetComponent<MeshRenderer>(); ((Renderer)component).material = signWithoutPricesMat; } } private bool SomeBarPricesAreChanged() { return Plugin.configFile.hostConfigInts[Constants.PRICE_LIGHT_BEER] != Constants.DEFAULT_PRICE_LIGHT_BEER || Plugin.configFile.hostConfigInts[Constants.PRICE_SPECIALTY_BEER] != Constants.DEFAULT_PRICE_SPECIALTY_BEER || Plugin.configFile.hostConfigInts[Constants.PRICE_LUCKY_PIPE] != Constants.DEFAULT_PRICE_LUCKY_PIPE; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { ((NetworkBehaviour)this).__initializeRpcs(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "BarMenu"; } } internal class BeerMugSpawner : NetworkBehaviour { private const int maxPreppedGlasses = 4; private const float spawnNewMugDelay = 60f; private const float preppedGlassFrontOffset = 0.2f; private const float preppedGlassSideOffset = 0.3f; private Vector3 beerMugSpawnRotation = new Vector3(0f, 0f, 0f); private float timeSinceMissingMugs = 0f; private List<CasinoBeer> preppedGlasses = new List<CasinoBeer>(); private void Start() { SpawnPreppedGlasses(showPoofs: false); } private void LateUpdate() { if (((NetworkBehaviour)this).IsServer && GetNumPreppedGlasses() < 4 && ((NetworkBehaviour)this).IsServer) { timeSinceMissingMugs += Time.deltaTime; if (timeSinceMissingMugs > 60f) { SpawnPreppedGlasses(showPoofs: true); timeSinceMissingMugs = 0f; } } } public CasinoBeer GetNextCasinoBeer() { CasinoBeer result = preppedGlasses[preppedGlasses.Count - 1]; preppedGlasses.RemoveAt(preppedGlasses.Count - 1); if (GetNumPreppedGlasses() == 1) { timeSinceMissingMugs = 59f; } else if (GetNumPreppedGlasses() == 0) { SpawnPreppedGlasses(showPoofs: true); } return result; } private int GetNumPreppedGlasses() { return preppedGlasses.Count; } private void SpawnPreppedGlasses(bool showPoofs) { //IL_0070: 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_0077: 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_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) Plugin.logger.LogDebug((object)"spawnning new beer glasses"); if (!((NetworkBehaviour)this).IsServer) { return; } Vector3 val = default(Vector3); while (GetNumPreppedGlasses() < 4) { int num = 4 - GetNumPreppedGlasses() - 1; int num2 = num % 2; int num3 = num / 2; ((Vector3)(ref val))..ctor(0.3f * (float)num3 - 0.3f, 0f, 0.2f * (float)num2 - 0.2f); GameObject val2 = CasinoManager.Spawn("Beer", ((Component)this).transform.position + val, Quaternion.Euler(beerMugSpawnRotation)); preppedGlasses.Add(val2.GetComponent<CasinoBeer>()); if (showPoofs) { CreatePoofParticleClientRpc(val2.transform.position, new Vector3(0f, 0.4f, 0f), 0.1f); } } } [ClientRpc] public void CreatePoofParticleClientRpc(Vector3 position, Vector3 offset, float volume) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3909558591u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref position); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref offset); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref volume, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3909558591u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; GameObject val3 = Object.Instantiate<GameObject>(Plugin.Prefabs["PoofParticle"], position + offset, Quaternion.Euler(0f, 0f, 0f)); val3.AddComponent<PoofParticle>(); val3.GetComponent<AudioSource>().PlayOneShot(Plugin.Sounds["PopSound"], volume); } } } 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 ((NetworkBehaviour)this).__registerRpc(3909558591u, new RpcReceiveHandler(__rpc_handler_3909558591), "CreatePoofParticleClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_3909558591(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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_0080: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 position = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref position); Vector3 offset = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref offset); float volume = default(float); ((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref volume, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((BeerMugSpawner)(object)target).CreatePoofParticleClientRpc(position, offset, volume); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "BeerMugSpawner"; } } internal class BeerTap : NetworkBehaviour { public int beerCost = 20; public bool isHeavyBeer = false; public string beerName; public Material beerLiquidMaterial; private const float moveToTargetTime = 1.3f; private const float delayBeforeMoveToTarget = 0.4f; private bool isBeingUsed = false; private CasinoBeer currentPouringBeer; private Vector3 currentBeerTarget; private bool movingToBeerTarget = false; private bool playedPickupSound = false; private bool beerIsAtTarget = false; private bool playerHasGrabbedBeer = false; private bool isDonePouring = false; private float timeMovingToBeerTarget = 0f; private Transform parentTapContainer; private AudioSource beerAudioSource; private BeerMugSpawner beerMugSpawner; private InteractTrigger interactTrigger; private void Start() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown parentTapContainer = ((Component)this).transform.parent.parent; beerMugSpawner = ((Component)parentTapContainer.Find("BeerMugSpawner")).GetComponent<BeerMugSpawner>(); interactTrigger = ((Component)this).GetComponent<InteractTrigger>(); InteractEvent val = new InteractEvent(); ((UnityEvent<PlayerControllerB>)(object)val).AddListener((UnityAction<PlayerControllerB>)BuyBeer); interactTrigger.onInteract = val; SyncHostConfigs(); } private void SyncHostConfigs() { if (isHeavyBeer) { beerCost = Plugin.configFile.hostConfigInts[Constants.PRICE_SPECIALTY_BEER]; } else { beerCost = Plugin.configFile.hostConfigInts[Constants.PRICE_LIGHT_BEER]; } interactTrigger.hoverTip = $"Buy {beerName} (■{beerCost}) : [E]"; } private void LateUpdate() { //IL_00c3: 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_00cf: Unknown result type (might be due to invalid IL or missing references) if ((!movingToBeerTarget && !beerIsAtTarget) || playerHasGrabbedBeer) { return; } timeMovingToBeerTarget += Time.deltaTime; if (timeMovingToBeerTarget >= 0.4f) { if (!playedPickupSound) { beerAudioSource.PlayOneShot(Plugin.Sounds[Constants.GLASS_CLINK_SOUNDS[0]], 0.9f); playedPickupSound = true; } float num = timeMovingToBeerTarget - 0.4f; float num2 = Mathf.Clamp(num / 1.3f, 0f, 1f); ((Component)currentPouringBeer).transform.position = Vector3.Lerp(((Component)currentPouringBeer).transform.position, currentBeerTarget, num2); if (num2 == 1f && !beerIsAtTarget) { beerAudioSource.PlayOneShot(Plugin.Sounds[Constants.GLASS_CLINK_SOUNDS[1]], 1f); TriggerTapFillAnimation(); movingToBeerTarget = false; beerIsAtTarget = true; } } } [ClientRpc] public void ShowWarningMessageClientRpc(NetworkBehaviourReference playerRef, string header, string body, bool isWarning) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: 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_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_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: 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_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012e: 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.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2696953337u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkBehaviourReference>(ref playerRef, default(ForNetworkSerializable)); bool flag = header != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(header, false); } bool flag2 = body != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag2, default(ForPrimitives)); if (flag2) { ((FastBufferWriter)(ref val2)).WriteValueSafe(body, false); } ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref isWarning, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2696953337u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val3 = default(PlayerControllerB); if (((NetworkBehaviourReference)(ref playerRef)).TryGet<PlayerControllerB>(ref val3, (NetworkManager)null) && !((Object)(object)val3 != (Object)(object)GameNetworkManager.Instance.localPlayerController)) { HUDManager.Instance.DisplayTip(header, body, isWarning, false, "LC_Tip1"); } } } private void BuyBeer(PlayerControllerB playerController) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: 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) if (isBeingUsed) { if (isDonePouring) { ShowWarningMessageClientRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)playerController), "Cannot use tap", "Pick up the previous beer first", isWarning: false); } else { ShowWarningMessageClientRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)playerController), "Cannot use tap", "Another beer is already being poured", isWarning: false); } return; } GrabbableObject val = playerController.ItemSlots[playerController.currentItemSlot]; if (!((Object)(object)val == (Object)null)) { if (val.scrapValue < beerCost) { ShowWarningMessageClientRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)playerController), "Cannot afford", $"A pint of {beerName} costs ■{beerCost}. Your scrap is only worth ■{val.scrapValue}.", isWarning: true); return; } Plugin.logger.LogInfo((object)"triggered BuyBeer from this client"); BuyBeerServerRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)playerController)); } } [ServerRpc(RequireOwnership = false)] private void BuyBeerServerRpc(NetworkBehaviourReference playerControllerRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_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_0097: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0187: 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(960726601u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkBehaviourReference>(ref playerControllerRef, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 960726601u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val3 = default(PlayerControllerB); if (isBeingUsed || !((NetworkBehaviourReference)(ref playerControllerRef)).TryGet<PlayerControllerB>(ref val3, (NetworkManager)null)) { return; } GrabbableObject val4 = val3.ItemSlots[val3.currentItemSlot]; if (!((Object)(object)val4 == (Object)null)) { if (((Component)val4).GetComponent<CustomScrapController>().lockFromGambling) { ShowWarningMessageClientRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)val3), "Cannot buy beer", "Scrap is being gambled", isWarning: true); } else if (val4.scrapValue >= beerCost) { isBeingUsed = true; CasinoBeer nextCasinoBeer = beerMugSpawner.GetNextCasinoBeer(); BuyBeerClientRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)nextCasinoBeer), NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)val4)); } } } [ClientRpc] private void BuyBeerClientRpc(NetworkBehaviourReference beerRef, NetworkBehaviourReference scrapRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: 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.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1862352400u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkBehaviourReference>(ref beerRef, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkBehaviourReference>(ref scrapRef, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1862352400u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; CasinoBeer casinoBeer = default(CasinoBeer); GrabbableObject val3 = default(GrabbableObject); if (((NetworkBehaviourReference)(ref beerRef)).TryGet<CasinoBeer>(ref casinoBeer, (NetworkManager)null) && ((NetworkBehaviourReference)(ref scrapRef)).TryGet<GrabbableObject>(ref val3, (NetworkManager)null)) { isBeingUsed = true; currentPouringBeer = casinoBeer; movingToBeerTarget = true; beerIsAtTarget = false; playerHasGrabbedBeer = false; timeMovingToBeerTarget = 0f; playedPickupSound = false; isDonePouring = false; val3.SetScrapValue(val3.scrapValue - beerCost); CasinoBeer component = ((Component)casinoBeer).GetComponent<CasinoBeer>(); beerAudioSource = ((Component)((Component)currentPouringBeer).transform.Find("BeerMug")).GetComponent<AudioSource>(); component.SetBeerType(beerLiquidMaterial, isHeavyBeer); component.TriggerBeerFill(OnDoneFillingBeer, OnGrabBeerServerRpc); currentBeerTarget = ((Component)((Component)this).transform.Find("MugTarget")).transform.position; } } } private void setStreamEmission(bool setActive) { //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) ParticleSystem component = ((Component)((Component)this).transform.Find("Particles")).GetComponent<ParticleSystem>(); EmissionModule emission = component.emission; ((EmissionModule)(ref emission)).enabled = setActive; } private void TriggerTapFillAnimation() { currentPouringBeer.StartFill(); setStreamEmission(setActive: true); Random random = new Random(); string key = Constants.BEER_POUR_SOUNDS[random.Next(1, Constants.BEER_POUR_SOUNDS.Length)]; beerAudioSource.PlayOneShot(Plugin.Sounds[key], 0.5f); } private void OnDoneFillingBeer() { isDonePouring = true; setStreamEmission(setActive: false); } [ServerRpc(RequireOwnership = false)] private void OnGrabBeerServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(274521252u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 274521252u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; OnGrabBeerClientRpc(); } } } [ClientRpc] private void OnGrabBeerClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3946222049u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3946222049u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; beerIsAtTarget = false; isBeingUsed = false; playerHasGrabbedBeer = true; } } } 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 //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2696953337u, new RpcReceiveHandler(__rpc_handler_2696953337), "ShowWarningMessageClientRpc"); ((NetworkBehaviour)this).__registerRpc(960726601u, new RpcReceiveHandler(__rpc_handler_960726601), "BuyBeerServerRpc"); ((NetworkBehaviour)this).__registerRpc(1862352400u, new RpcReceiveHandler(__rpc_handler_1862352400), "BuyBeerClientRpc"); ((NetworkBehaviour)this).__registerRpc(274521252u, new RpcReceiveHandler(__rpc_handler_274521252), "OnGrabBeerServerRpc"); ((NetworkBehaviour)this).__registerRpc(3946222049u, new RpcReceiveHandler(__rpc_handler_3946222049), "OnGrabBeerClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_2696953337(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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0082: 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_00ba: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference playerRef = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkBehaviourReference>(ref playerRef, default(ForNetworkSerializable)); bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); string header = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref header, false); } bool flag2 = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag2, default(ForPrimitives)); string body = null; if (flag2) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref body, false); } bool isWarning = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref isWarning, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((BeerTap)(object)target).ShowWarningMessageClientRpc(playerRef, header, body, isWarning); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_960726601(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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference playerControllerRef = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkBehaviourReference>(ref playerControllerRef, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((BeerTap)(object)target).BuyBeerServerRpc(playerControllerRef); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1862352400(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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference beerRef = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkBehaviourReference>(ref beerRef, default(ForNetworkSerializable)); NetworkBehaviourReference scrapRef = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkBehaviourReference>(ref scrapRef, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((BeerTap)(object)target).BuyBeerClientRpc(beerRef, scrapRef); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_274521252(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((BeerTap)(object)target).OnGrabBeerServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3946222049(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((BeerTap)(object)target).OnGrabBeerClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "BeerTap"; } } internal class CasinoBeer : PhysicsProp { private const float drinkSoundInterval = 0.2f; private const float gulpSoundInterval = 5f; private const float gulpChance = 0.2f; private Vector3 groundPosition; private Quaternion groundRotation; private Vector3 restingPositionOffset = new Vector3(-0.05f, 0.12f, 0.2f); private Vector3 restingRotationOffset = new Vector3(330f, 90f, 340f); private Quaternion restingRotation; private Vector3 activePositionOffset = new Vector3(0.06f, 0.18f, -0.18f); private Vector3 activeRotationOffset = new Vector3(310f, 220f, 340f); private Quaternion activeRotation; private Vector3 positionVelocity; private const float rotationSpeed = 20f; private const float smoothTime = 0.03f; private const float maxDrinkTime = 12f; private float originalLiquidHeight = 0f; private List<int> liquidVerticesTopIndexes; private float[] originalVerticesOffsetH; private float originalBeerLiquidTopVerticeHeight; private float originalBeerLiquidBottomVerticeHeight; private const float liquidRotationWhenActive = -45f; private const float liquidRotationWhenActiveForOtherPlayers = -20f; private const float fizzRate = 10f; private const float verticeMultiplier = 1f; private const float fillDelay = 1f; private const float fillTime = 5f; private bool startMethodComplete = false; private bool isActive; private bool isFlipping; private bool isFilling; private Action? doneFillCallback; private Action? grabItemCallback; private float fillDelayTimer; private float percentFilled = 0f; private float timeUntilDrinkSound = 0f; private float timeUntilGulpSound = 0f; private float percentUsed = 0f; private bool isEquiped; private PlayerControllerB lastPlayerHeldBy; private bool isFlatteningVerticesHorizontal; private bool hasSetBeerType = false; private Material beerLiquidMaterial; private bool isHeavyBeer = false; private float beerSipVolume; private Random randGen; private AudioSource audioSource; private GameObject beerMug; private GameObject beerLiquidContainer; private MeshFilter beerLiquidMeshFilter; private Mesh beerLiquidMesh; private ParticleSystem particleSystem; private Animator mugAnimator; public override void Start() { //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).Start(); randGen = new Random(); audioSource = ((Component)this).GetComponent<AudioSource>(); beerMug = ((Component)((Component)this).transform.Find("BeerMug")).gameObject; beerLiquidContainer = ((Component)((Component)this).transform.Find("BeerMug/LiquidContainer")).gameObject; beerLiquidMeshFilter = ((Component)beerLiquidContainer.transform.Find("BeerLiquid")).GetComponent<MeshFilter>(); beerLiquidMesh = beerLiquidMeshFilter.mesh; originalLiquidHeight = beerLiquidContainer.transform.localScale.y; particleSystem = ((Component)((Component)this).transform.Find("BeerMug/LiquidContainer/BeerParticles")).GetComponent<ParticleSystem>(); mugAnimator = beerMug.GetComponent<Animator>(); groundPosition = beerMug.transform.localPosition; groundRotation = beerMug.transform.localRotation; restingRotation = Quaternion.Euler(restingRotationOffset); activeRotation = Quaternion.Euler(activeRotationOffset); liquidVerticesTopIndexes = new List<int>(); if ((Object)(object)beerLiquidMesh != (Object)null) { Vector3[] vertices = beerLiquidMesh.vertices; originalVerticesOffsetH = new float[vertices.Length]; for (int i = 0; i < vertices.Length; i++) { originalVerticesOffsetH[i] = vertices[i].y; float z = vertices[i].z; Bounds bounds = beerLiquidMesh.bounds; if (Mathf.Approximately(z, ((Bounds)(ref bounds)).max.z)) { originalBeerLiquidTopVerticeHeight = vertices[i].z; liquidVerticesTopIndexes.Add(i); continue; } float z2 = vertices[i].z; bounds = beerLiquidMesh.bounds; if (Mathf.Approximately(z2, ((Bounds)(ref bounds)).min.z)) { originalBeerLiquidBottomVerticeHeight = vertices[i].z; } } } beerLiquidContainer.active = false; ((GrabbableObject)this).grabbable = false; ((GrabbableObject)this).customGrabTooltip = "(Disabled) Use tap handles"; beerSipVolume = Plugin.configFile.configValues[Constants.MISC_BEER_SIPPING_VOLUME] / 100f; startMethodComplete = true; } public override void Update() { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_042f: Unknown result type (might be due to invalid IL or missing references) //IL_0434: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_04a0: Unknown result type (might be due to invalid IL or missing references) //IL_04a5: Unknown result type (might be due to invalid IL or missing references) //IL_0549: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_0552: Unknown result type (might be due to invalid IL or missing references) //IL_065f: Unknown result type (might be due to invalid IL or missing references) //IL_05f0: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).Update(); if (((GrabbableObject)this).isPocketed) { return; } if (startMethodComplete && !hasSetBeerType) { UpdateBeerType(); hasSetBeerType = true; } if (isActive) { activeRotation = Quaternion.Euler(activeRotationOffset); beerMug.transform.localPosition = Vector3.SmoothDamp(beerMug.transform.localPosition, activePositionOffset, ref positionVelocity, 0.03f); beerMug.transform.localRotation = Quaternion.Lerp(beerMug.transform.localRotation, activeRotation, 20f * Time.deltaTime); timeUntilDrinkSound -= Time.deltaTime; timeUntilGulpSound -= Time.deltaTime; if (timeUntilDrinkSound <= 0f && !audioSource.isPlaying) { if (timeUntilGulpSound <= 0f && randGen.NextDouble() <= 0.20000000298023224) { int num = randGen.Next(0, Constants.BEER_GULP_SOUNDS.Length); audioSource.PlayOneShot(Plugin.Sounds[Constants.BEER_GULP_SOUNDS[num]], beerSipVolume); } else { int num2 = randGen.Next(0, Constants.BEER_DRINK_SOUNDS.Length); audioSource.PlayOneShot(Plugin.Sounds[Constants.BEER_DRINK_SOUNDS[num2]], beerSipVolume); } timeUntilDrinkSound = 0.2f; timeUntilGulpSound = 5f; } percentUsed += Time.deltaTime / 12f; Vector3 localScale = beerLiquidContainer.transform.localScale; localScale.y = originalLiquidHeight * (1f - percentUsed); beerLiquidContainer.transform.localScale = localScale; EmissionModule emission = particleSystem.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(10f * (1f - percentUsed)); if (isHeavyBeer) { IncreaseDrunknessHeavy(); } else { IncreaseDrunkessLight(); } if (((NetworkBehaviour)this).IsServer && percentUsed >= 1f) { FinishDrinkingClientRpc(); } } else if (isEquiped) { restingRotation = Quaternion.Euler(restingRotationOffset); beerMug.transform.localPosition = Vector3.SmoothDamp(beerMug.transform.localPosition, restingPositionOffset, ref positionVelocity, 0.03f); beerMug.transform.localRotation = Quaternion.Lerp(beerMug.transform.localRotation, restingRotation, 20f * Time.deltaTime); } else if (isFilling) { Vector3 localScale2 = beerLiquidContainer.transform.localScale; localScale2.y = originalLiquidHeight * percentFilled; beerLiquidContainer.transform.localScale = localScale2; if (fillDelayTimer >= 1f) { if (!beerLiquidContainer.active) { beerLiquidContainer.active = true; } percentFilled += Time.deltaTime / 5f; if (percentFilled >= 1f) { DoneFilling(); } } else { fillDelayTimer += Time.deltaTime; } } if (!((Object)(object)beerLiquidMesh != (Object)null)) { return; } Vector3 forward = beerLiquidContainer.transform.forward; Vector3[] vertices = beerLiquidMesh.vertices; foreach (int liquidVerticesTopIndex in liquidVerticesTopIndexes) { float num3 = (float)Math.Pow((double)percentUsed * 1.2, 2.0) * 2.5f; if (isActive) { num3 *= 10f; } float num4 = Vector3.Dot(Vector3.down, forward) * (float)Math.Sin(vertices[liquidVerticesTopIndex].y * (1f + num3)); float num5 = originalBeerLiquidTopVerticeHeight - num4; if (num5 < originalBeerLiquidBottomVerticeHeight) { num5 = originalBeerLiquidBottomVerticeHeight; } vertices[liquidVerticesTopIndex].z = num5; } if (isActive) { for (int i = 0; i < vertices.Length; i++) { float num6 = 0f - (1f - percentUsed); Bounds bounds = beerLiquidMesh.bounds; float num7 = num6 * ((Bounds)(ref bounds)).max.y; if (vertices[i].y < num7) { vertices[i].y = num7; } } if (!isFlatteningVerticesHorizontal) { float num8 = -45f; if ((Object)(object)lastPlayerHeldBy != (Object)(object)GameNetworkManager.Instance.localPlayerController) { num8 = -20f; } beerLiquidContainer.transform.localRotation = Quaternion.Euler(0f, num8, 0f); } isFlatteningVerticesHorizontal = true; } else if (isFlatteningVerticesHorizontal) { for (int j = 0; j < vertices.Length; j++) { vertices[j].y = originalVerticesOffsetH[j]; } beerLiquidContainer.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); isFlatteningVerticesHorizontal = false; } beerLiquidMesh.vertices = vertices; beerLiquidMesh.RecalculateNormals(); beerLiquidMeshFilter.mesh = beerLiquidMesh; } private void IncreaseDrunknessHeavy() { lastPlayerHeldBy.drunknessInertia = Mathf.Clamp(lastPlayerHeldBy.drunknessInertia + Time.deltaTime / 40f * lastPlayerHeldBy.drunknessSpeed, 0.1f, 3f); lastPlayerHeldBy.increasingDrunknessThisFrame = true; CustomPlayerController component = ((Component)lastPlayerHeldBy).GetComponent<CustomPlayerController>(); component.beerDrunkness = Mathf.Clamp(component.beerDrunkness + Time.deltaTime / 50f, 0f, 1f); } private void IncreaseDrunkessLight() { lastPlayerHeldBy.drunknessInertia = Mathf.Clamp(lastPlayerHeldBy.drunknessInertia + Time.deltaTime / 80f * lastPlayerHeldBy.drunknessSpeed, 0.1f, 1f); lastPlayerHeldBy.increasingDrunknessThisFrame = true; CustomPlayerController component = ((Component)lastPlayerHeldBy).GetComponent<CustomPlayerController>(); component.beerDrunkness = Mathf.Clamp(component.beerDrunkness + Time.deltaTime / 120f, 0f, 1f); } public float GetPercentUsed() { return percentUsed; } public void SetBeerType(Material mat, bool isHeavy) { hasSetBeerType = false; beerLiquidMaterial = mat; isHeavyBeer = isHeavy; } private void UpdateBeerType() { MeshRenderer component = ((Component)beerLiquidContainer.transform.Find("BeerLiquid")).GetComponent<MeshRenderer>(); ((Renderer)component).material = beerLiquidMaterial; } public void TriggerBeerFill(Action onDoneFillCallback, Action onGrabItemCallback) { doneFillCallback = onDoneFillCallback; grabItemCallback = onGrabItemCallback; FlipBeer(); } public void FlipBeer() { isFlipping = true; ((GrabbableObject)this).customGrabTooltip = "Pouring..."; beerMug.GetComponent<Animator>().SetTrigger("beerFlip"); } public void StartFill() { isFlipping = false; isFilling = true; percentFilled = 0f; Object.Destroy((Object)(object)mugAnimator); } private void DoneFilling() { percentFilled = 1f; isFilling = false; ((GrabbableObject)this).grabbable = true; doneFillCallback(); doneFillCallback = null; ((GrabbableObject)this).customGrabTooltip = null; } public override void PocketItem() { ((GrabbableObject)this).PocketItem(); if (isActive) { SetActiveStatus(active: false); } isEquiped = false; particleSystem.Stop(); particleSystem.Clear(); } public override void EquipItem() { ((PhysicsProp)this).EquipItem(); isEquiped = true; particleSystem.Play(); } public override void GrabItem() { ((GrabbableObject)this).GrabItem(); if (grabItemCallback != null) { grabItemCallback(); grabItemCallback = null; } GrabItemServerRpc(); } [ServerRpc(RequireOwnership = false)] private void GrabItemServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1003776000u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1003776000u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; GrabItemClientRpc(); } } } [ClientRpc] private void GrabItemClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1323330482u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1323330482u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; grabItemCallback = null; lastPlayerHeldBy = ((GrabbableObject)this).playerHeldBy; } } } public override void OnHitGround() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).OnHitGround(); if (isActive) { SetActiveStatus(active: false); } isEquiped = false; particleSystem.Play(); beerMug.transform.SetLocalPositionAndRotation(groundPosition, groundRotation); } public override void ItemActivate(bool used, bool buttonDown = true) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).ItemActivate(used, buttonDown); SetActiveStatusServerRpc(buttonDown, NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)this)); } [ServerRpc(RequireOwnership = false)] private void SetActiveStatusServerRpc(bool active, NetworkBehaviourReference pipeRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_010e: 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)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1614102246u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref active, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkBehaviourReference>(ref pipeRef, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1614102246u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (((NetworkBehaviour)this).IsServer) { SetActiveStatusClientRpc(active, pipeRef); SetPlayerVoiceMuffledClientRpc(active); } } } [ClientRpc] private void SetActiveStatusClientRpc(bool active, NetworkBehaviourReference pipeRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: 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)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3865379800u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref active, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkBehaviourReference>(ref pipeRef, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3865379800u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (percentUsed >= 1f && active) { Plugin.logger.LogDebug((object)"player cannot drink beer, already used up"); } else { SetActiveStatus(active); } } } private void SetActiveStatus(bool active) { isActive = active; lastPlayerHeldBy.playerBodyAnimator.SetBool("useTZPItem", isActive); if (isActive) { timeUntilDrinkSound = 0.2f; } } [ClientRpc] private void SetPlayerVoiceMuffledClientRpc(bool enableMuffle) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_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_0097: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3341308629u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref enableMuffle, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3341308629u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (enableMuffle) { lastPlayerHeldBy.voiceMuffledByEnemy = true; if ((Object)(object)lastPlayerHeldBy.currentVoiceChatIngameSettings != (Object)null) { OccludeAudio component = ((Component)lastPlayerHeldBy.currentVoiceChatIngameSettings.voiceAudio).GetComponent<OccludeAudio>(); component.overridingLowPass = true; component.lowPassOverride = 600f; } } else { lastPlayerHeldBy.voiceMuffledByEnemy = false; if ((Object)(object)lastPlayerHeldBy.currentVoiceChatIngameSettings != (Object)null) { OccludeAudio component2 = ((Component)lastPlayerHeldBy.currentVoiceChatIngameSettings.voiceAudio).GetComponent<OccludeAudio>(); component2.overridingLowPass = false; } } } [ClientRpc] private void FinishDrinkingClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4282623143u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4282623143u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; SetActiveStatus(active: false); beerLiquidContainer.active = false; } } } private void OnCollisionEnter(Collision collision) { CasinoBeer casinoBeer = default(CasinoBeer); if (((Component)collision.transform).TryGetComponent<CasinoBeer>(ref casinoBeer) && isEquiped) { audioSource.PlayOneShot(Plugin.Sounds[Constants.GLASS_CLINK_SOUNDS[2]]); } } protected override void __initializeVariables() { ((PhysicsProp)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 //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(1003776000u, new RpcReceiveHandler(__rpc_handler_1003776000), "GrabItemServerRpc"); ((NetworkBehaviour)this).__registerRpc(1323330482u, new RpcReceiveHandler(__rpc_handler_1323330482), "GrabItemClientRpc"); ((NetworkBehaviour)this).__registerRpc(1614102246u, new RpcReceiveHandler(__rpc_handler_1614102246), "SetActiveStatusServerRpc"); ((NetworkBehaviour)this).__registerRpc(3865379800u, new RpcReceiveHandler(__rpc_handler_3865379800), "SetActiveStatusClientRpc"); ((NetworkBehaviour)this).__registerRpc(3341308629u, new RpcReceiveHandler(__rpc_handler_3341308629), "SetPlayerVoiceMuffledClientRpc"); ((NetworkBehaviour)this).__registerRpc(4282623143u, new RpcReceiveHandler(__rpc_handler_4282623143), "FinishDrinkingClientRpc"); ((PhysicsProp)this).__initializeRpcs(); } private static void __rpc_handler_1003776000(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((CasinoBeer)(object)target).GrabItemServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1323330482(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((CasinoBeer)(object)target).GrabItemClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1614102246(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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool active = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref active, default(ForPrimitives)); NetworkBehaviourReference pipeRef = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkBehaviourReference>(ref pipeRef, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((CasinoBeer)(object)target).SetActiveStatusServerRpc(active, pipeRef); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3865379800(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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool active = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref active, default(ForPrimitives)); NetworkBehaviourReference pipeRef = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkBehaviourReference>(ref pipeRef, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((CasinoBeer)(object)target).SetActiveStatusClientRpc(active, pipeRef); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3341308629(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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool playerVoiceMuffledClientRpc = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref playerVoiceMuffledClientRpc, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((CasinoBeer)(object)target).SetPlayerVoiceMuffledClientRpc(playerVoiceMuffledClientRpc); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_4282623143(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((CasinoBeer)(object)target).FinishDrinkingClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "CasinoBeer"; } } internal class CigarBox : NetworkBehaviour { private int pipeCost = 75; private const float lidOpenRotation = -80f; private const float lidRotationSmoothTime = 0.2f; private Vector3 pipeSpawnOffset = new Vector3(-0.7f, -0.05f, 0f); private Vector3 pipeSpawnArea = new Vector3(0.3f, 0f, 0.2f); private Vector3 pipeSpawnRotation = new Vector3(0f, 20f, 0f); private Quaternion lidClosedRotation; private Quaternion lidOpenRotationQuaternion; private InteractTrigger buyPipeInteractTrigger; private GameObject boxLid; private Camera localPlayerCamera; private int layerMask = 512; private void Awake() { //IL_004c: Un