Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of SCP106 v3.0.1
SCP106.dll
Decompiled 2 years 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