Decompiled source of SCP106 v3.0.1
SCP106.dll
Decompiled 3 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using SCP106.Configuration; using SCP106.NetcodePatcher; using Unity.Netcode; using UnityEngine; using UnityEngine.AI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SCP106")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("SCP-106 has breached containment.")] [assembly: AssemblyFileVersion("3.0.1.0")] [assembly: AssemblyInformationalVersion("3.0.1+5bebda81cec882b977232626099a5b778cfbba86")] [assembly: AssemblyProduct("SCP106")] [assembly: AssemblyTitle("SCP106")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("3.0.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] internal class <Module> { static <Module>() { } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SCP106 { [BepInPlugin("Dackie.SCP106", "SCP106", "3.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { [HarmonyPatch(typeof(OutOfBoundsTrigger))] [HarmonyPatch("OnTriggerEnter")] internal class OutOfBoundsTriggersPatch { private static bool Prefix(Collider other) { PlayerControllerB component = ((Component)other).GetComponent<PlayerControllerB>(); PocketDimController pocketDimController = Object.FindObjectOfType<PocketDimController>(); if ((Object)(object)pocketDimController != (Object)null && (Object)(object)component != (Object)null && pocketDimController.playerIsInPD[(uint)component.playerClientId]) { return false; } return true; } } public const string ModGUID = "Dackie.SCP106"; internal static ManualLogSource Logger; public static AssetBundle ModAssets; private readonly Harmony harmony = new Harmony("Dackie.SCP106"); internal static PluginConfig BoundConfig { get; private set; } private void Awake() { //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; BoundConfig = new PluginConfig((BaseUnityPlugin)(object)this); InitializeNetworkBehaviours(); string path = "scp106"; ModAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), path)); if ((Object)(object)ModAssets == (Object)null) { Logger.LogError((object)"Failed to load custom assets."); return; } EnemyType val = ModAssets.LoadAsset<EnemyType>("SCP106"); TerminalNode val2 = ModAssets.LoadAsset<TerminalNode>("SCP106TN"); TerminalKeyword val3 = ModAssets.LoadAsset<TerminalKeyword>("SCP106TK"); GameObject val4 = (GameObject)ModAssets.LoadAsset("pocketdimension"); GameObject val5 = (GameObject)ModAssets.LoadAsset("pdPersonalAudio"); GameObject val6 = (GameObject)ModAssets.LoadAsset("corrosionDecalProjector"); NetworkPrefabs.RegisterNetworkPrefab(val.enemyPrefab); NetworkPrefabs.RegisterNetworkPrefab(val4); NetworkPrefabs.RegisterNetworkPrefab(val5); NetworkPrefabs.RegisterNetworkPrefab(val6); harmony.PatchAll(); var (dictionary, dictionary2) = GetSpawnRarities(BoundConfig.SpawnWeight.Value); if (dictionary != null && dictionary2 != null) { Enemies.RegisterEnemy(val, dictionary, dictionary2, val2, val3); } else { Logger.LogInfo((object)"Failed to parse Spawn Rate Configuration. Defaulted to Global Spawn Rate of 25 for SCP-106."); Enemies.RegisterEnemy(val, 25, (LevelTypes)(-1), (SpawnType)0, val2, val3); } Logger.LogInfo((object)"Plugin SCP106 is loaded!"); } private (Dictionary<LevelTypes, int> levelRarities, Dictionary<string, int> customLevelRarities) GetSpawnRarities(string config) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) Dictionary<LevelTypes, int> dictionary = new Dictionary<LevelTypes, int>(); Dictionary<string, int> dictionary2 = new Dictionary<string, int>(); string[] array = config.Split(';'); foreach (string text in array) { try { string[] array2 = text.Split(':'); string text2 = array2[0]; string s = array2[1]; if (Enum.TryParse<LevelTypes>(text2, ignoreCase: true, out LevelTypes result)) { dictionary[result] = (int.TryParse(s, out var result2) ? result2 : 25); } else { dictionary2[text2] = (int.TryParse(s, out var result3) ? result3 : 25); } } catch { return (null, null); } } return (dictionary, dictionary2); } private static void InitializeNetworkBehaviours() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); for (int i = 0; i < types.Length; i++) { MethodInfo[] methods = types[i].GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); foreach (MethodInfo methodInfo in methods) { if (methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false).Length != 0) { methodInfo.Invoke(null, null); } } } } } internal class PocketDimController : NetworkBehaviour { public enum ExitStyle { RESET, ESCAPED } public enum DeathStyle { SLAM, BLEED, KNEEL } public enum RoomType { MAIN, CORRIDOR, THRONE } private enum AudioGroup { BREATHING, DEATH, ENTER, EXIT, MISC } [Header("Personal Audio Clips / Prefab")] public AudioClip[] personalAudioBreathing; public AudioClip[] personalAudioDeath; public AudioClip[] personalAudioEnter; public AudioClip[] personalAudioExit; public AudioClip[] personalAudioMisc; public GameObject personalAudioPrefab; [Header("Pocket Dimension Main Room")] public Transform mainRoomSpawn; [Header("Pocket Dimension Throne Room")] public Transform throneRoomSpawn; public AudioSource throneRoomAudioSource; public AudioClip personalAudioKneel; [Header("Pocket Dimension Corridor")] public Transform corridorSpawn; private SCPAI scpReference; private Vector3 pocketDimensionPosition; public bool[] playerIsInPD; private bool[] playerIsInThroneRoom; private bool[] playerIsInCorridor; private Coroutine localPlayerCoroutine; private Vector3 localPlayerExitLocation; private AudioSource[] personalAudios; [Conditional("DEBUG")] private void LogIfDebugBuild(string text) { Plugin.Logger.LogInfo((object)text); } public void Awake() { } public void Start() { } public override void OnDestroy() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; if (localPlayerCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(localPlayerCoroutine); ((Component)localPlayerController.gameplayCamera).transform.position = localPlayerController.cameraContainerTransform.position; } localPlayerController.drunkness = 0f; localPlayerController.drunknessInertia = 0f; ((NetworkBehaviour)this).OnDestroy(); } [ServerRpc] public void RegisterSCPServerRpc(Vector3 pocketPosition, ulong SCPNetworkId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0191: 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)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1500670558u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref pocketPosition); BytePacker.WriteValueBitPacked(val2, SCPNetworkId); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1500670558u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { int num = StartOfRound.Instance.allPlayerScripts.Length; ulong[] array = new ulong[num]; for (int i = 0; i < num; i++) { PlayerControllerB val3 = StartOfRound.Instance.allPlayerScripts[i]; NetworkObject component = Object.Instantiate<GameObject>(personalAudioPrefab, val3.cameraContainerTransform.position, Quaternion.identity, ((Component)val3).gameObject.transform).GetComponent<NetworkObject>(); component.Spawn(false); component.DestroyWithScene = true; array[i] = component.NetworkObjectId; } RegisterSCPClientRpc(num, pocketPosition, array, SCPNetworkId); } } [ClientRpc] public void RegisterSCPClientRpc(int numberOfPlayers, Vector3 pocketPosition, ulong[] networkObjects, ulong SCPNetworkId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0108: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2268078427u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, numberOfPlayers); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref pocketPosition); bool flag = networkObjects != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<ulong>(networkObjects, default(ForPrimitives)); } BytePacker.WriteValueBitPacked(val2, SCPNetworkId); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2268078427u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { scpReference = ((Component)NetworkManager.Singleton.SpawnManager.SpawnedObjects[SCPNetworkId]).GetComponent<SCPAI>(); pocketDimensionPosition = pocketPosition; playerIsInPD = new bool[numberOfPlayers]; playerIsInThroneRoom = new bool[numberOfPlayers]; playerIsInCorridor = new bool[numberOfPlayers]; personalAudios = (AudioSource[])(object)new AudioSource[numberOfPlayers]; for (int i = 0; i < personalAudios.Length; i++) { NetworkObject val3 = NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjects[i]]; val3.TrySetParent(((Component)StartOfRound.Instance.allPlayerScripts[i]).transform, true); personalAudios[i] = ((Component)val3).GetComponent<AudioSource>(); } } } [ServerRpc(RequireOwnership = false)] private void StopPersonalSoundServerRpc(int playerClientId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) 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(2593932004u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2593932004u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { StopPersonalSoundClientRpc(playerClientId); } } } [ClientRpc] private void StopPersonalSoundClientRpc(int playerClientId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1643445409u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1643445409u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { personalAudios[playerClientId].Stop(true); } } } [ServerRpc(RequireOwnership = false)] private void PlayPersonalSoundServerRpc(int playerClientId, int roomType, int audioGroup, int index) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_00b0: 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(1615960182u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); BytePacker.WriteValueBitPacked(val2, roomType); BytePacker.WriteValueBitPacked(val2, audioGroup); BytePacker.WriteValueBitPacked(val2, index); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1615960182u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { PlayPersonalSoundClientRpc(playerClientId, roomType, audioGroup, index); } } } [ClientRpc] private void PlayPersonalSoundClientRpc(int playerClientId, int roomType, int audioGroup, int index) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_00b0: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1378219553u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); BytePacker.WriteValueBitPacked(val2, roomType); BytePacker.WriteValueBitPacked(val2, audioGroup); BytePacker.WriteValueBitPacked(val2, index); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1378219553u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } switch (roomType) { case 0: switch (audioGroup) { case 0: personalAudios[playerClientId].PlayOneShot(personalAudioBreathing[index]); break; case 1: personalAudios[playerClientId].PlayOneShot(personalAudioDeath[index]); break; case 2: personalAudios[playerClientId].PlayOneShot(personalAudioEnter[index]); break; case 3: personalAudios[playerClientId].PlayOneShot(personalAudioExit[index]); break; } break; case 2: switch (audioGroup) { case 0: personalAudios[playerClientId].PlayOneShot(scpReference.killingSounds[index]); break; case 1: personalAudios[playerClientId].PlayOneShot(scpReference.playerKilledSounds[index]); break; case 2: throneRoomAudioSource.PlayOneShot(personalAudioKneel); break; case 4: personalAudios[playerClientId].PlayOneShot(personalAudioMisc[index]); break; case 3: break; } break; } } [ServerRpc] public void PlayerEnterPocketDimensionServerRpc(int playerClientId, Vector3 playerLocation) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 //IL_0128: 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)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1669676425u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref playerLocation); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1669676425u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && !playerIsInPD[playerClientId]) { PlayerEnterPocketDimensionClientRpc(playerClientId, playerLocation); } } [ClientRpc] private void PlayerEnterPocketDimensionClientRpc(int playerClientId, Vector3 playerLocation) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0110: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3263984778u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref playerLocation); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3263984778u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { playerIsInPD[playerClientId] = true; Animator playerBodyAnimator = StartOfRound.Instance.allPlayerScripts[playerClientId].playerBodyAnimator; playerBodyAnimator.speed /= 2f; if (playerClientId == (int)NetworkManager.Singleton.LocalClientId) { localPlayerExitLocation = playerLocation; localPlayerCoroutine = ((MonoBehaviour)this).StartCoroutine(PocketDimensionEffect(playerClientId)); } } } [ServerRpc(RequireOwnership = false)] private void PlayerExitServerRpc(int playerClientId, int exitStyle) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) 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(3044267319u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); BytePacker.WriteValueBitPacked(val2, exitStyle); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3044267319u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { PlayerExitClientRpc(playerClientId, exitStyle); } } } [ClientRpc] private void PlayerExitClientRpc(int playerClientId, int exitStyle) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1578820683u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); BytePacker.WriteValueBitPacked(val2, exitStyle); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1578820683u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } PlayerControllerB val3 = StartOfRound.Instance.allPlayerScripts[playerClientId]; playerIsInPD[playerClientId] = false; val3.playerBodyAnimator.speed = 1f; if (playerClientId == (int)NetworkManager.Singleton.LocalClientId) { if (localPlayerCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(localPlayerCoroutine); } if (exitStyle != 0 && exitStyle == 1) { val3.drunkness = 0.2f; val3.drunknessInertia = 0.2f; val3.playerBodyAnimator.speed = 1f; val3.movementSpeed *= 3f; val3.SpawnPlayerAnimation(); PlayPersonalSoundServerRpc(playerClientId, 0, 3, 0); Vector3 val4 = ((Random.Range(0, 3) == 0) ? scpReference.ReturnFromPDRandomLocation(localPlayerExitLocation) : localPlayerExitLocation); scpReference.PlaceCorrosionServerRpc(playerClientId + 2, val4); val3.TeleportPlayer(val4, false, 0f, false, true); } } } private IEnumerator PocketDimensionEffect(int playerClientId) { float bleedoutTimer = 45f; float timeSinceEntered = Time.realtimeSinceStartup; PlayerControllerB player = StartOfRound.Instance.allPlayerScripts[playerClientId]; PlayPersonalSoundServerRpc(playerClientId, 0, 2, 0); player.drunkness = 20f; player.movementSpeed /= 3f; Animator playerBodyAnimator = player.playerBodyAnimator; playerBodyAnimator.speed /= 2f; player.TeleportPlayer(mainRoomSpawn.position, false, 0f, false, true); player.SpawnPlayerAnimation(); player.DropBlood(default(Vector3), true, true); while (!player.isPlayerDead && Time.realtimeSinceStartup - timeSinceEntered < bleedoutTimer - 4f) { yield return null; } PlayPersonalSoundServerRpc(playerClientId, 0, 0, 0); player.DropBlood(default(Vector3), true, true); player.MakeCriticallyInjured(true); while (!player.isPlayerDead && Time.realtimeSinceStartup - timeSinceEntered < bleedoutTimer) { player.movementSpeed -= 0.1f * Time.deltaTime; player.drunknessInertia += 1f * Time.deltaTime; yield return null; } if (player.isPlayerDead) { player.movementSpeed = 4.6f; player.drunkness = 0f; player.drunknessInertia = 0f; } else if (playerClientId == (int)((NetworkBehaviour)this).NetworkManager.LocalClientId) { int index = Random.Range(0, 2); PlayPersonalSoundServerRpc(playerClientId, 0, 1, index); PlayerDeathServerRpc(playerClientId, 1); } } [ServerRpc(RequireOwnership = false)] public void PlayerDeathServerRpc(int playerClientId, int deathStyle, Vector3 optionalExtraInfo = default(Vector3)) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: 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) 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(1739410417u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); BytePacker.WriteValueBitPacked(val2, deathStyle); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref optionalExtraInfo); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1739410417u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } PlayerControllerB val3 = StartOfRound.Instance.allPlayerScripts[playerClientId]; if (!val3.inSpecialInteractAnimation) { val3.UpdateSpecialAnimationValue(true, (short)0, 4f, false); switch (deathStyle) { case 1: DeathStyleBleedClientRpc(playerClientId); break; case 2: DeathStyleKneelClientRpc(playerClientId); break; case 0: break; } } } [ServerRpc(RequireOwnership = false)] private void PlayerValueResetServerRpc(int playerClientId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) 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(2197408769u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2197408769u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { PlayerValueResetClientRpc(playerClientId); } } } [ClientRpc] private void PlayerValueResetClientRpc(int playerClientId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1362661378u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1362661378u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { PlayerControllerB obj = StartOfRound.Instance.allPlayerScripts[playerClientId]; obj.drunkness = 0f; obj.drunknessInertia = 0f; obj.playerBodyAnimator.speed = 1f; } } } public void RollForExit(int playerClientId, int roomType, Vector3 optionalVector = default(Vector3)) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) int num = Random.Range(0, 10); switch (roomType) { case 0: if (num <= 0) { DeathStyleSlam(playerClientId, optionalVector); } else if (num <= 1) { PlayerExitServerRpc(playerClientId, 1); } else if (num <= 3) { StartOfRound.Instance.allPlayerScripts[playerClientId].TeleportPlayer(mainRoomSpawn.position, false, 0f, false, true); personalAudios[playerClientId].PlayOneShot(personalAudioMisc[0]); } else { StartOfRound.Instance.allPlayerScripts[playerClientId].TeleportPlayer(corridorSpawn.position, false, 0f, false, true); } break; case 1: if (num <= 1) { StartOfRound.Instance.allPlayerScripts[playerClientId].TeleportPlayer(corridorSpawn.position, false, 0f, false, true); } else if (num <= 3) { PlayerExitServerRpc(playerClientId, 1); } else { StartOfRound.Instance.allPlayerScripts[playerClientId].TeleportPlayer(throneRoomSpawn.position, false, 0f, false, true); } break; case 2: if (localPlayerCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(localPlayerCoroutine); } localPlayerCoroutine = ((MonoBehaviour)this).StartCoroutine(ThroneRoomEffect(playerClientId)); break; } } private IEnumerator ThroneRoomEffect(int playerClientId) { PlayerControllerB player = StartOfRound.Instance.allPlayerScripts[playerClientId]; player.drunkness = 0f; player.drunknessInertia = 0f; float timeToKneel = 10f; yield return (object)new WaitForSeconds(3f); float startTime = Time.realtimeSinceStartup; PlayPersonalSoundServerRpc(playerClientId, 2, 2, 0); bool warningMusic = false; while (!player.isCrouching && Time.realtimeSinceStartup - startTime < timeToKneel) { if (!warningMusic && Time.realtimeSinceStartup - startTime > timeToKneel - 4f) { warningMusic = true; PlayPersonalSoundServerRpc(playerClientId, 0, 1, 0); } yield return (object)new WaitForSeconds(0.1f); } if (player.isCrouching) { StopPersonalSoundServerRpc(playerClientId); ((Component)player.gameplayCamera).transform.position = player.cameraContainerTransform.position; PlayerExitServerRpc(playerClientId, 1); yield break; } Coroutine cameraShake = ((MonoBehaviour)this).StartCoroutine(ShakePlayerCamera(player)); yield return (object)new WaitForSeconds(4f); PlayPersonalSoundServerRpc(playerClientId, 0, 1, 4); if (cameraShake != null) { ((MonoBehaviour)this).StopCoroutine(cameraShake); } ((Component)player.gameplayCamera).transform.position = player.cameraContainerTransform.position; player.KillPlayer(new Vector3(0f, 0f, 0f), true, (CauseOfDeath)8, 1, default(Vector3)); } private IEnumerator ShakePlayerCamera(PlayerControllerB player) { float intensityOverTime = 0f; while (!player.isPlayerDead) { ((Component)player.gameplayCamera).transform.position = player.cameraContainerTransform.position + Random.insideUnitSphere * intensityOverTime; if (intensityOverTime < 0.15f) { intensityOverTime += Time.deltaTime * 0.04f; } yield return null; } ((Component)player.gameplayCamera).transform.position = player.cameraContainerTransform.position; } public void DeathStyleSlam(int playerClientId, Vector3 crushColliderPosition) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) ((MonoBehaviour)this).StartCoroutine(SlamToWall(playerClientId, crushColliderPosition)); } private IEnumerator SlamToWall(int playerClientId, Vector3 crushColliderPosition) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) if (playerClientId == (int)NetworkManager.Singleton.LocalClientId) { ((MonoBehaviour)this).StopCoroutine(localPlayerCoroutine); } float timeSinceStart = Time.realtimeSinceStartup; float timeToDie = 1f; PlayerControllerB player = StartOfRound.Instance.allPlayerScripts[playerClientId]; Vector3 turnDirection = crushColliderPosition - ((Component)player).gameObject.transform.position; PlayPersonalSoundServerRpc(playerClientId, 0, 1, 3); while (Time.realtimeSinceStartup - timeSinceStart < timeToDie) { ((Component)player).gameObject.transform.rotation = Quaternion.Lerp(((Component)player).gameObject.transform.rotation, Quaternion.LookRotation(turnDirection), Time.deltaTime * 2f); ((Component)player).gameObject.transform.position = Vector3.Lerp(((Component)player).gameObject.transform.position, crushColliderPosition, Time.deltaTime * 2f); yield return null; } PlayPersonalSoundServerRpc(playerClientId, 0, 1, 5); yield return (object)new WaitForSeconds(0.2f); player.KillPlayer(new Vector3(5f, 0f, 5f), true, (CauseOfDeath)8, 1, default(Vector3)); PlayerValueResetServerRpc(playerClientId); } [ClientRpc] private void DeathStyleBleedClientRpc(int playerClientId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2275859956u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2275859956u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { StartOfRound.Instance.allPlayerScripts[playerClientId].KillPlayer(Vector3.zero, true, (CauseOfDeath)14, 0, default(Vector3)); PlayerValueResetClientRpc(playerClientId); } } } [ClientRpc] private void DeathStyleKneelClientRpc(int playerClientId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3024243794u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerClientId); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3024243794u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { StartOfRound.Instance.allPlayerScripts[playerClientId].KillPlayer(new Vector3(0f, 0f, 0f), true, (CauseOfDeath)8, 1, default(Vector3)); PlayerValueResetClientRpc(playerClientId); } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_PocketDimController() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Expected O, but got Unknown //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Expected O, but got Unknown //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Expected O, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Expected O, but got Unknown //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(1500670558u, new RpcReceiveHandler(__rpc_handler_1500670558)); NetworkManager.__rpc_func_table.Add(2268078427u, new RpcReceiveHandler(__rpc_handler_2268078427)); NetworkManager.__rpc_func_table.Add(2593932004u, new RpcReceiveHandler(__rpc_handler_2593932004)); NetworkManager.__rpc_func_table.Add(1643445409u, new RpcReceiveHandler(__rpc_handler_1643445409)); NetworkManager.__rpc_func_table.Add(1615960182u, new RpcReceiveHandler(__rpc_handler_1615960182)); NetworkManager.__rpc_func_table.Add(1378219553u, new RpcReceiveHandler(__rpc_handler_1378219553)); NetworkManager.__rpc_func_table.Add(1669676425u, new RpcReceiveHandler(__rpc_handler_1669676425)); NetworkManager.__rpc_func_table.Add(3263984778u, new RpcReceiveHandler(__rpc_handler_3263984778)); NetworkManager.__rpc_func_table.Add(3044267319u, new RpcReceiveHandler(__rpc_handler_3044267319)); NetworkManager.__rpc_func_table.Add(1578820683u, new RpcReceiveHandler(__rpc_handler_1578820683)); NetworkManager.__rpc_func_table.Add(1739410417u, new RpcReceiveHandler(__rpc_handler_1739410417)); NetworkManager.__rpc_func_table.Add(2197408769u, new RpcReceiveHandler(__rpc_handler_2197408769)); NetworkManager.__rpc_func_table.Add(1362661378u, new RpcReceiveHandler(__rpc_handler_1362661378)); NetworkManager.__rpc_func_table.Add(2275859956u, new RpcReceiveHandler(__rpc_handler_2275859956)); NetworkManager.__rpc_func_table.Add(3024243794u, new RpcReceiveHandler(__rpc_handler_3024243794)); } private static void __rpc_handler_1500670558(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { Vector3 pocketPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref pocketPosition); ulong sCPNetworkId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref sCPNetworkId); target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimController)(object)target).RegisterSCPServerRpc(pocketPosition, sCPNetworkId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2268078427(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //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_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int numberOfPlayers = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref numberOfPlayers); Vector3 pocketPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref pocketPosition); bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); ulong[] networkObjects = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<ulong>(ref networkObjects, default(ForPrimitives)); } ulong sCPNetworkId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref sCPNetworkId); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).RegisterSCPClientRpc(numberOfPlayers, pocketPosition, networkObjects, sCPNetworkId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2593932004(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimController)(object)target).StopPersonalSoundServerRpc(playerClientId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1643445409(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).StopPersonalSoundClientRpc(playerClientId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1615960182(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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_005d: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); int roomType = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref roomType); int audioGroup = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref audioGroup); int index = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref index); target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimController)(object)target).PlayPersonalSoundServerRpc(playerClientId, roomType, audioGroup, index); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1378219553(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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_005d: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); int roomType = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref roomType); int audioGroup = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref audioGroup); int index = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref index); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).PlayPersonalSoundClientRpc(playerClientId, roomType, audioGroup, index); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1669676425(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); Vector3 playerLocation = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref playerLocation); target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimController)(object)target).PlayerEnterPocketDimensionServerRpc(playerClientId, playerLocation); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3263984778(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); Vector3 playerLocation = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref playerLocation); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).PlayerEnterPocketDimensionClientRpc(playerClientId, playerLocation); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3044267319(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); int exitStyle = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref exitStyle); target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimController)(object)target).PlayerExitServerRpc(playerClientId, exitStyle); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1578820683(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); int exitStyle = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref exitStyle); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).PlayerExitClientRpc(playerClientId, exitStyle); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1739410417(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); int deathStyle = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref deathStyle); Vector3 optionalExtraInfo = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref optionalExtraInfo); target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimController)(object)target).PlayerDeathServerRpc(playerClientId, deathStyle, optionalExtraInfo); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2197408769(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimController)(object)target).PlayerValueResetServerRpc(playerClientId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1362661378(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).PlayerValueResetClientRpc(playerClientId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2275859956(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).DeathStyleBleedClientRpc(playerClientId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3024243794(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerClientId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerClientId); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimController)(object)target).DeathStyleKneelClientRpc(playerClientId); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "PocketDimController"; } } internal class pocketDimEnter : EnemyAICollisionDetect { private PlayerControllerB[] playersInsidePocketDimension; [Conditional("DEBUG")] private void LogIfDebugBuild(string text) { Plugin.Logger.LogInfo((object)text); } public void Start() { playersInsidePocketDimension = (PlayerControllerB[])(object)new PlayerControllerB[RoundManager.Instance.playersManager.allPlayerObjects.Length]; } public void Update() { } private void OnTriggerEnter(Collider other) { if (((Component)other).tag == "Player") { PlayerControllerB component = ((Component)other).GetComponent<PlayerControllerB>(); if ((Object)(object)playersInsidePocketDimension[(uint)component.playerClientId] == (Object)null) { playersInsidePocketDimension[(uint)component.playerClientId] = component; } } } } internal class PocketDimExit : NetworkBehaviour { [Header("Pocket Dimension")] public Transform pocketDimCentre; public PocketDimController pdController; [Header("This Exit's Wall")] public Transform crushCollider; [Header("This Trigger's Room Type")] public PocketDimController.RoomType type; [Conditional("DEBUG")] private void LogIfDebugBuild(string text) { Plugin.Logger.LogInfo((object)text); } public void Awake() { } public void Start() { } private void OnTriggerEnter(Collider other) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) if (!(((Component)other).tag == "Player")) { return; } PlayerControllerB component = ((Component)other).GetComponent<PlayerControllerB>(); if (component.playerClientId == NetworkManager.Singleton.LocalClientId) { if (type == PocketDimController.RoomType.MAIN) { pdController.RollForExit((int)component.playerClientId, (int)type, crushCollider.position); } else { pdController.RollForExit((int)component.playerClientId, (int)type); } } } private void OnTriggerStay(Collider other) { } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected internal override string __getTypeName() { return "PocketDimExit"; } } internal class PocketDimSounds : NetworkBehaviour { public AudioSource soundSource; public AudioClip[] sounds; public Transform[] soundPositions; private float soundTimeLimit = 15f; private int previousSound; private int soundLength; [Conditional("DEBUG")] private void LogIfDebugBuild(string text) { Plugin.Logger.LogInfo((object)text); } public void Awake() { soundSource.dopplerLevel = 4f; } public void Start() { soundLength = sounds.Length; if (((NetworkBehaviour)this).IsHost && ((NetworkBehaviour)this).IsServer) { ((MonoBehaviour)this).InvokeRepeating("PlaySoundServerRpc", 0f, soundTimeLimit); } } public void Update() { } [ServerRpc] public void PlaySoundServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2911123905u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2911123905u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { int num = Random.Range(0, soundLength); if (num == previousSound) { num += 1 % soundLength; } int positionIndex = Random.Range(0, soundPositions.Length); PlaySoundClientRpc(num, positionIndex); } } [ClientRpc] public void PlaySoundClientRpc(int clipIndex, int positionIndex) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4073091247u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, clipIndex); BytePacker.WriteValueBitPacked(val2, positionIndex); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4073091247u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { ((Component)this).transform.position = soundPositions[positionIndex].position; soundSource.PlayOneShot(sounds[clipIndex]); } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_PocketDimSounds() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(2911123905u, new RpcReceiveHandler(__rpc_handler_2911123905)); NetworkManager.__rpc_func_table.Add(4073091247u, new RpcReceiveHandler(__rpc_handler_4073091247)); } private static void __rpc_handler_2911123905(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { target.__rpc_exec_stage = (__RpcExecStage)1; ((PocketDimSounds)(object)target).PlaySoundServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_4073091247(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int clipIndex = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref clipIndex); int positionIndex = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref positionIndex); target.__rpc_exec_stage = (__RpcExecStage)2; ((PocketDimSounds)(object)target).PlaySoundClientRpc(clipIndex, positionIndex); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "PocketDimSounds"; } } internal class SCPAI : EnemyAI, IVisibleThreat, INoiseListener { private enum State { IDLE, SEARCHING, SPOTTED, HUNTING, KILLING, EMERGING, SINKING } public enum HeadState { StartLookingAtPlayer, FinishedLookingAtPlayer } private enum SFX { Breathing, Laughing, Spotted, Chasing, Neck, Killing, PlayerKilled, Sinking, Emerging } private enum KillState { StaringAtPlayer, NeckSnap, DragDownIntoCorrosion } [Header("Pocket Dimension")] public GameObject pocketdimension; private GameObject pocketd; private PocketDimController pdController; [Header("Corrosion Decal")] public GameObject corrosion; private GameObject[] corrosionSpawned; [Header("SCP-106 Model")] public Transform boneHead; public Transform boneNeck; public Transform turnReference; public GameObject scanNode; public MeshRenderer mapNode; public SkinnedMeshRenderer scpRenderer; [Header("Audio Sources / Clips")] public AudioSource creatureStep; public AudioSource chaseSource; public AudioClip[] footstepSounds; public AudioClip[] spottedSounds; public AudioClip[] neckSounds; public AudioClip[] killingSounds; public AudioClip[] playerKilledSounds; public AudioClip[] corrosionSounds; public AudioClip sinkSFX; public AudioClip emergeSFX; public ParticleSystem creatureVFX; private Coroutine killCoroutine; private Coroutine faceCoroutine; private bool lookAtPlayer; private bool killingPlayer; private bool sneaking; private float timeAtHittingPlayer; private float timeAtHitByPlayer; private float timeAtLastSpotted; private float timeAtLastNoiseHeard; private float timeAtHuntStart; private float timeAtLastExit; private readonly float spottedSFXCooldown = 60f; private readonly float chaseMusicLimit = 60f; private readonly float emergeCooldown = 120f; private readonly float emergeCooldownOutside = 240f; private int nonDeadlyInteractions = 15; private int chanceForPocketDimension = 20; private bool stunnable = true; private bool canGoOutside; private bool canGoInsideShip; public ThreatType type { get { throw new NotImplementedException(); } } [Conditional("DEBUG")] private void LogIfDebugBuild(string text) { Plugin.Logger.LogInfo((object)text); } public override void Start() { ((EnemyAI)this).Start(); if (((NetworkBehaviour)this).IsHost || ((NetworkBehaviour)this).IsServer) { InitSCPValuesServerRpc(); } } public override void OnDestroy() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; ((Component)localPlayerController.gameplayCamera).transform.position = localPlayerController.cameraContainerTransform.position; ((EnemyAI)this).OnDestroy(); } [ServerRpc] public void InitSCPValuesServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Invalid comparison between Unknown and I4 //IL_016d: 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_0186: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_025e: 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)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3778657094u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3778657094u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { int deadly = Math.Clamp(Plugin.BoundConfig.NonDeadlyInteractions.Value, 0, 100); int pdChance = Math.Clamp(Plugin.BoundConfig.ChanceForPocketDimension.Value, 0, 100); bool value = Plugin.BoundConfig.Stunnable.Value; bool value2 = Plugin.BoundConfig.CanGoOutside.Value; bool value3 = Plugin.BoundConfig.CanGoInsideShip.Value; Transform closestNode = RoundManager.Instance.GetClosestNode(((Component)this).transform.position - new Vector3(0f, 400f, 0f), false); pocketd = Object.Instantiate<GameObject>(pocketdimension, closestNode.position - new Vector3(0f, 100f, 0f), Quaternion.identity, ((Component)this).transform); pocketd.GetComponent<NetworkObject>().Spawn(false); pdController = pocketd.GetComponentInChildren<PocketDimController>(); ulong networkObjectId = ((Component)this).GetComponent<NetworkObject>().NetworkObjectId; pdController.RegisterSCPServerRpc(pocketd.transform.position, networkObjectId); ulong[] array = new ulong[StartOfRound.Instance.allPlayerScripts.Length + 2]; for (int i = 0; i < array.Length; i++) { NetworkObject component = Object.Instantiate<GameObject>(corrosion, new Vector3(0f, 0f, 0f), Quaternion.Euler(90f, 0f, 0f), ((Component)this).transform).GetComponent<NetworkObject>(); component.Spawn(false); component.DestroyWithScene = true; array[i] = component.NetworkObjectId; } InitSCPValuesClientRpc(deadly, pdChance, value, value2, value3, array); } } [ClientRpc] public void InitSCPValuesClientRpc(int deadly, int pdChance, bool stun, bool outside, bool ship, ulong[] corrosionObjects) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_014c: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: 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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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 != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4285114836u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, deadly); BytePacker.WriteValueBitPacked(val2, pdChance); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref stun, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref outside, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref ship, default(ForPrimitives)); bool flag = corrosionObjects != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<ulong>(corrosionObjects, default(ForPrimitives)); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4285114836u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { nonDeadlyInteractions = deadly; chanceForPocketDimension = pdChance; stunnable = stun; base.enemyType.canBeStunned = stun; canGoOutside = false; canGoInsideShip = false; timeAtHitByPlayer = Time.realtimeSinceStartup; timeAtLastExit = Time.realtimeSinceStartup; timeAtHuntStart = Time.realtimeSinceStartup; timeAtLastSpotted = Time.realtimeSinceStartup - 60f; timeAtLastNoiseHeard = Time.realtimeSinceStartup - 15f; timeAtHittingPlayer = Time.realtimeSinceStartup; base.agent.areaMask = -1; NavMeshAgent agent = base.agent; agent.areaMask &= ~(1 << NavMesh.GetAreaFromName("Not Walkable")); NavMeshAgent agent2 = base.agent; agent2.areaMask &= ~(1 << NavMesh.GetAreaFromName("SmallSpace")); corrosionSpawned = (GameObject[])(object)new GameObject[corrosionObjects.Length]; for (int i = 0; i < corrosionObjects.Length; i++) { corrosionSpawned[i] = ((Component)NetworkManager.Singleton.SpawnManager.SpawnedObjects[corrosionObjects[i]]).gameObject; corrosionSpawned[i].SetActive(false); } base.creatureAnimator.SetTrigger("startStill"); ((MonoBehaviour)this).StartCoroutine(DelayAndStateClient(3f, 1)); } } private IEnumerator DelayAndStateClient(float timeToWait, int newStateInt) { yield return (object)new WaitForSeconds(timeToWait); ((EnemyAI)this).SwitchToBehaviourClientRpc(newStateInt); DoAnimationClientRpc(newStateInt); } public override void Update() { ((EnemyAI)this).Update(); } public void LateUpdate() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) if (lookAtPlayer) { boneHead.LookAt(((Component)base.targetPlayer).transform.position); boneHead.Rotate(0f, 180f, -90f); } } [ServerRpc(RequireOwnership = false)] public void LookServerRpc(bool look) { //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) 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(186904637u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref look, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 186904637u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { LookClientRpc(look); } } } [ClientRpc] public void LookClientRpc(bool look) { //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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1799032168u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref look, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1799032168u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { lookAtPlayer = look; if (look) { base.eye.LookAt(((Component)base.targetPlayer).gameObject.transform); AudioClip val3 = spottedSounds[Random.Range(0, spottedSounds.Length)]; AudioClip val4 = neckSounds[Random.Range(0, neckSounds.Length)]; base.creatureSFX.PlayOneShot(val3); base.creatureSFX.PlayOneShot(val4); } } } public override void DoAIInterval() { ((EnemyAI)this).DoAIInterval(); switch (base.currentBehaviourStateIndex) { case 1: HuntIfPlayerIsInSight(); StopChaseMusicIfNoOneNearbyAndLimitReached(); HuntLoneliestPlayer(); break; case 3: if (sneaking) { SneakCheck(); } SearchIfPlayerIsTooFarAway(); break; } ((EnemyAI)this).SyncPositionToClients(); } private void StopChaseMusicIfNoOneNearbyAndLimitReached() { if (chaseSource.isPlaying && !(Time.realtimeSinceStartup - timeAtHuntStart < chaseMusicLimit) && !FoundClosestPlayerInRange(30f, 30f)) { PlaySFXServerRpc(3, play: false); PlaySFXServerRpc(0, play: false); } } private void HuntIfPlayerIsInSight() { if (base.currentBehaviourStateIndex != 1) { return; } PlayerControllerB closestPlayer = ((EnemyAI)this).GetClosestPlayer(true, true, true); if (!((Object)(object)closestPlayer == (Object)null)) { bool num = PlayerLookingAtMe(closestPlayer); base.targetPlayer = closestPlayer; ((EnemyAI)this).StopSearch(base.currentSearch, true); ChangeTargetPlayerServerRpc((int)closestPlayer.playerClientId); if (num) { sneaking = false; ToStateHunting(); } else { SneakOnPlayerServerRpc(changeState: true); } } } public override void DetectNoise(Vector3 noisePosition, float noiseLoudness, int timesPlayedInOneSpot = 0, int noiseID = 0) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) if (base.currentBehaviourStateIndex == 1 && !(Time.realtimeSinceStartup - timeAtLastNoiseHeard < 15f)) { ((EnemyAI)this).DetectNoise(noisePosition, noiseLoudness, timesPlayedInOneSpot, noiseID); float num = Vector3.Distance(((Component)this).transform.position, noisePosition); float num2 = 30f * noiseLoudness; if (Physics.Linecast(((Component)this).transform.position, noisePosition, 256)) { noiseLoudness /= 2f; num2 /= 2f; } if (!(noiseLoudness < 0.25f) && num < num2) { ((EnemyAI)this).SetDestinationToPosition(noisePosition, false); PlaySFXServerRpc(0); timeAtLastNoiseHeard = Time.realtimeSinceStartup; } } } private void SearchIfPlayerIsTooFarAway() { //IL_0006: 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_0033: 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) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) float num = Vector3.Distance(((Component)this).transform.position, ((Component)base.targetPlayer).transform.position); float num2 = 30f; bool flag = ((EnemyAI)this).CheckLineOfSightForPosition(((Component)base.targetPlayer).transform.position, 45f, 60, -1f, (Transform)null); if (!TargetClosestPlayerInAnyCase() || (num > num2 && !flag)) { if (Random.Range(0, 10) < 2) { FastEmergeServerRpc(); } else { ToStateSearching(); } } else if ((!base.targetPlayer.isInsideFactory && !base.isOutside) || (base.targetPlayer.isInsideFactory && base.isOutside) || (base.targetPlayer.isInHangarShipRoom && !canGoInsideShip)) { ToStateSearching(); } else if (((EnemyAI)this).GetPathDistance(((Component)base.targetPlayer).transform.position, ((Component)this).transform.position) && base.pathDistance > 50f) { ToStateSearching(); } else if (!((EnemyAI)this).SetDestinationToPosition(((Component)base.targetPlayer).transform.position, true)) { ToStateSearching(); } } private void SneakCheck() { if (sneaking && PlayerLookingAtMe(base.targetPlayer)) { SneakCheckServerRpc(); } } [ServerRpc(RequireOwnership = false)] private void SneakCheckServerRpc() { //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) 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(214643892u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 214643892u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && sneaking) { SneakCheckClientRpc(); } } } [ClientRpc] private void SneakCheckClientRpc() { //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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1193701754u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1193701754u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { sneaking = false; creatureStep.volume = 0.9f; PlaySFXClientRpc(2); PlaySFXClientRpc(3); } } } private void ExitEnterFacility() { //IL_0064: 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_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_008d: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) if (!canGoOutside || Time.realtimeSinceStartup - timeAtLastExit < 3f || Object