Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of PintoBoyFixed v2.1.0
PintoBoy.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using PintoBoy.NetcodePatcher; using PintoMod; using PintoMod.Assets.Scripts; using PintoMod.Assets.Scripts.FacilityDash; using PintoMod.Assets.Scripts.LethalJumpany; using PintoMod.Properties; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Pinto_Mod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Pinto_Mod")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ff99ad61-38a5-4085-a181-d080e129d86e")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyInformationalVersion("2.1.0+3396dd8d7d0d31e41bf6b0fc28b8942b470d7047")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } public enum PintoEnemyType { Spider, Slime, Lootbug } public class LJEnemy : NetworkBehaviour { public PintoEnemyType enemyType; public float speed = 5f; private float distance; public LethalJumpany game; public UnityEvent<LJEnemy> onDeath = new UnityEvent<LJEnemy>(); public Animator animator; public bool paused = false; public bool killedPlayer = false; private AudioClip[] movementSounds; private float currentMovementSoundTimer = 0f; private int currentMovementSoundIndex = 0; public NetworkVariable<int> parentNetworkID = new NetworkVariable<int>(0, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); private void Awake() { distance = 10f; animator = ((Component)this).GetComponent<Animator>(); } private void Update() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_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) if (!((GrabbableObject)game).isBeingUsed) { return; } if (killedPlayer) { if (enemyType == PintoEnemyType.Spider) { ((Behaviour)animator).enabled = false; } return; } float num = speed * Time.deltaTime; Transform transform = ((Component)this).transform; transform.position += Vector3.left * num; distance -= num; if (distance < 0f) { onDeath.Invoke(this); } currentMovementSoundTimer -= Time.deltaTime; if (currentMovementSoundTimer < 0f) { game.PlaySound(movementSounds[currentMovementSoundIndex]); currentMovementSoundIndex++; if (currentMovementSoundIndex >= movementSounds.Length) { currentMovementSoundIndex = 0; } currentMovementSoundTimer = movementSounds[currentMovementSoundIndex].length; } } private void OnTriggerEnter2D(Collider2D collision) { if (((Component)collision).gameObject.CompareTag("Player") && (Object)(object)game != (Object)null) { game.PlayerGotHit(); } } public void SetMovementSounds(AudioClip[] audioClips) { movementSounds = audioClips; currentMovementSoundTimer = movementSounds[0].length; game.PlaySound(movementSounds[0]); } protected override void __initializeVariables() { if (parentNetworkID == null) { throw new Exception("LJEnemy.parentNetworkID cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)parentNetworkID).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)parentNetworkID, "parentNetworkID"); base.NetworkVariableFields.Add((NetworkVariableBase)(object)parentNetworkID); ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { ((NetworkBehaviour)this).__initializeRpcs(); } protected internal override string __getTypeName() { return "LJEnemy"; } } public enum FadeState { FadeOff, FadeOn, FadeIn, FadeOut } public class PintoBoy : GrabbableObject { private AudioSource audioSource; private bool isButtonPressing = false; protected bool isHoldingButton = false; public GameObject cam; private Transform trCam2DScene; private GameObject modelScreen; private Transform cartridgeLocation; private Animator animButton; private ScanNodeProperties scanNodeProperties; private float hideStartHoldTime = 0.2f; private float hideStartHoldTimer = 0f; public bool pressButton = false; private bool spawnScreen = true; private Material matRenderTex = null; private RenderTexture texRenderTex = null; public bool isActive; public bool isPaused; public bool isInGame; public bool wasInitialized = false; private Renderer rendModelScreen; private float newGameOffset = 20f; private Coroutine coroutineButtonBeingPressed; public NetworkVariable<float> highScore = new NetworkVariable<float>(0f, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1); public NetworkVariable<float> currentScore = new NetworkVariable<float>(0f, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1); public NetworkVariable<int> health = new NetworkVariable<int>(0, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1); public NetworkVariable<Color32> color = new NetworkVariable<Color32>(default(Color32), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1); private Color32 bodyColor; private bool colorSet = false; private bool testcolor = false; protected void PintoAwake() { //IL_00f4: 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_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Expected O, but got Unknown //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) audioSource = ((Component)this).GetComponent<AudioSource>(); Debug.Log((object)"PintoBoy Awake"); base.propColliders = (Collider[])(object)new Collider[2]; base.propColliders[0] = ((Component)this).GetComponent<Collider>(); base.propColliders[1] = ((Component)((Component)this).transform.Find("ScanNode")).GetComponent<Collider>(); Debug.Log((object)(((Object)this).name + " propColliders Length:" + base.propColliders.Length)); Debug.Log((object)(((Object)this).name + " propColliders Length:" + base.propColliders.Length + ", item 0:" + (object)base.propColliders[0])); base.mainObjectRenderer = ((Component)((Component)this).transform.Find("Model")).GetComponent<MeshRenderer>(); base.originalScale = new Vector3(0.25f, 0.25f, 0.25f); Debug.Log((object)(((Object)this).name + " mainObjectRenderer: " + ((Object)base.mainObjectRenderer).name)); scanNodeProperties = ((Component)this).GetComponentInChildren<ScanNodeProperties>(); if ((Object)(object)scanNodeProperties == (Object)null) { Debug.Log((object)"scanNodePoperties null af tbh"); } base.useCooldown = 0.1f; base.grabbable = true; base.parentObject = ((Component)this).transform; Debug.Log((object)"scannode start"); base.grabbableToEnemies = true; Debug.Log((object)"scannode done"); modelScreen = ((Component)((Component)this).transform.Find("Model/Screen")).gameObject; animButton = ((Component)((Component)this).transform.Find("Model/Button")).GetComponent<Animator>(); base.startFallingPosition = new Vector3(0f, 0f, 0f); base.targetFloorPosition = new Vector3(0f, 0f, 0f); base.insertedBattery = new Battery(false, 1f); ((GrabbableObject)this).EnableItemMeshes(true); cartridgeLocation = ((Component)base.mainObjectRenderer).transform.Find("Cartridge"); Debug.Log((object)("cartLoc.childcount:" + cartridgeLocation.childCount)); if (Color32.op_Implicit(color.Value) != Color.black) { SetBodyColor(color.Value); } } protected void PintoBoyUpdate() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: 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) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_010b: 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) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).Update(); if (Color32.op_Implicit(color.Value) != Color.black) { SetBodyColor(color.Value); } if (((NetworkBehaviour)this).IsServer && (!colorSet || testcolor)) { Debug.Log((object)"PintoBoy: setting body color"); string[] array = new string[10] { "#FFFFFF", "#575757", "#FF6B6B", "#FFDAB9", "#FFFFCC", "#98FF98", "#008080", "#5999BE", "#CBCBFF", "#D9AEDD" }; Color32[] array2 = (Color32[])(object)new Color32[array.Length]; Color val = default(Color); for (int i = 0; i < array.Length; i++) { ColorUtility.TryParseHtmlString(array[i], ref val); array2[i] = Color32.op_Implicit(val); } ChangeBodyColorServerRpc(Color32.op_Implicit(array2[Random.Range(0, array2.Length)])); colorSet = true; testcolor = false; } if (spawnScreen) { SpawnScreen(); Debug.Log((object)$"PintoBoy: spawning screen. cam: {cam}"); spawnScreen = false; cam.transform.parent = null; cam.GetComponent<Camera>().orthographicSize = 1.5f; cam.transform.position = ((Component)this).transform.position + Vector3.down * 400f; cam.transform.rotation = Quaternion.identity; cam.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f); if (cam.transform.position.x == 0f || cam.transform.position.z == 0f) { cam.transform.position = new Vector3(Random.Range(-500f, 500f), cam.transform.position.y, Random.Range(-500f, 500f)); } SetScreenToOffTexture(); base.isBeingUsed = true; TurnOff(checkBeingUsed: true); } if (!base.isBeingUsed) { return; } isHoldingButton = false; if (base.isBeingUsed) { if (isButtonPressing) { if (hideStartHoldTimer > 0f) { hideStartHoldTimer -= Time.deltaTime; } else { isHoldingButton = true; } } GameUpdate(); } if (pressButton) { ButtonPress(); pressButton = false; } } public virtual void GameUpdate() { } public virtual void TurnedOn() { } public virtual void InitializeObjects(Transform gameRoot) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)("Intiailizing PintoBoyGame: " + ((Object)this).name)); wasInitialized = true; gameRoot.localPosition = Vector3.zero; gameRoot.localRotation = Quaternion.identity; gameRoot.localScale = Vector3.one; } public override void ItemInteractLeftRight(bool right) { ((GrabbableObject)this).ItemInteractLeftRight(right); if (!right) { ToggleOnOff(); } } public override void DiscardItem() { ((GrabbableObject)this).DiscardItem(); base.isBeingUsed = false; } public override void EquipItem() { ((GrabbableObject)this).EquipItem(); base.playerHeldBy.equippedUsableItemQE = true; } public virtual void ButtonPress() { } public virtual void ButtonRelease(float timeHeld) { } public override void UseUpBatteries() { Debug.Log((object)"PintoBoy battery used up"); ((GrabbableObject)this).UseUpBatteries(); TurnOff(checkBeingUsed: false); } private void TogglePause() { if (isPaused) { UnPause(); } else { Pause(); } } private void Pause() { if (base.isBeingUsed) { isPaused = true; SetScreenToOffTexture(); audioSource.Stop(); } } private void UnPause() { if (!base.isBeingUsed) { isPaused = false; } } private void ToggleOnOff() { if (!base.isBeingUsed) { TurnOn(); } else { TurnOff(checkBeingUsed: true); } } private void TurnOff(bool checkBeingUsed) { if (!(!base.isBeingUsed && checkBeingUsed)) { base.isBeingUsed = false; SetScreenToOffTexture(); audioSource.Stop(); ResetGame(); } } private void TurnOn() { if (!base.isBeingUsed) { base.isBeingUsed = true; SetScreenToRenderTexture(); } } public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); isButtonPressing = buttonDown; if (buttonDown) { animButton.SetBool("Press", true); ButtonPress(); if (coroutineButtonBeingPressed != null) { ((MonoBehaviour)this).StopCoroutine(coroutineButtonBeingPressed); } coroutineButtonBeingPressed = ((MonoBehaviour)this).StartCoroutine(ButtonBeingPressed()); } } private IEnumerator ButtonBeingPressed() { Debug.Log((object)("Pinto Button being pressed" + Time.time)); float buttonStartPress = Time.time; yield return (object)new WaitUntil((Func<bool>)(() => !isButtonPressing || !base.isHeld)); Debug.Log((object)("Pinto Button end press " + Time.deltaTime)); animButton.SetBool("Press", false); if (base.isBeingUsed) { ButtonRelease(Time.time - buttonStartPress); } } public void PlaySound(AudioClip clip) { audioSource.PlayOneShot(clip); } public void StopSounds() { audioSource.Stop(); } public void MakeScreenNOTSpawnable() { spawnScreen = false; } [ServerRpc] private void SpawnScreenServerRpc() { //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_0107: 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 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(2230293064u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2230293064u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Debug.Log((object)"SpawnScreenServerRpc Called"); int currentId = Pinto_ModBase.Instance.Value.currentId; global::PintoBoy[] array = (global::PintoBoy[])(object)Object.FindObjectsByType(typeof(global::PintoBoy), (FindObjectsSortMode)0); for (int i = currentId; i < array.Length + currentId; i++) { Debug.Log((object)"SpawnScreenServerRpc Called"); } Pinto_ModBase.Instance.Value.currentId += array.Length; SpawnScreenClientRpc(); } } [ClientRpc] private void SpawnScreenClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2649739462u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2649739462u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Debug.Log((object)"SpawnScreenClientRpc Called"); SpawnScreen(); } } } private void SpawnScreen() { Debug.Log((object)"Trying spawn screen"); if (!((Object)(object)cam != (Object)null)) { Debug.Log((object)"Spawning Screen"); cam = ((Component)((Component)this).transform.Find("2D Cam")).gameObject; cam.AddComponent<PintoCam>(); if ((Object)(object)cam == (Object)null) { Debug.Log((object)"Screen in Pintoboy is null even after instantiate"); } SetScreenToRenderTexture(); trCam2DScene = cam.transform.Find("2D Scene"); Debug.Log((object)"Initializing currentGame"); InitializeObjects(cam.transform.Find("2D Scene/Game")); spawnScreen = false; } } private void GetChildRecursive(Transform obj, int level) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown if ((Object)null == (Object)(object)obj) { return; } foreach (Transform item in ((Component)obj).transform) { Transform val = item; if (!((Object)null == (Object)(object)val)) { Debug.Log((object)string.Concat(string.Concat(Enumerable.Repeat("*", level)), ((Object)obj).name)); GetChildRecursive(((Component)val).transform, level++); } } } private void SetScreenToRenderTexture() { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown Debug.Log((object)"SetScreenRendTex: checking if texRenderTex null"); if ((Object)(object)texRenderTex == (Object)null) { Debug.Log((object)("SetScreenRendTex: texRenderTex is null. Setting. cam:" + (object)cam)); texRenderTex = new RenderTexture(120, 120, 16); ((Object)texRenderTex).name = "PintoBoyScreen"; ((Texture)texRenderTex).filterMode = (FilterMode)0; cam.GetComponent<Camera>().targetTexture = texRenderTex; } Debug.Log((object)"SetScreenRendTex: checking if matRenderTex null"); if ((Object)(object)matRenderTex == (Object)null) { Debug.Log((object)"SetScreenRendTex: matRenderTex is null. Setting"); matRenderTex = Object.Instantiate<Material>(Pinto_ModBase.matOnScreen); matRenderTex.SetTexture("_MainTex", (Texture)(object)texRenderTex); matRenderTex.mainTexture = (Texture)(object)texRenderTex; } Debug.Log((object)"SetScreenRendTex: checking if rendModelScreen is null"); if ((Object)(object)rendModelScreen == (Object)null) { Debug.Log((object)"SetScreenRendTex: rendModelScreen is null"); rendModelScreen = modelScreen.GetComponent<Renderer>(); } Debug.Log((object)"SetScreenRendTex: setting rendModelScreen to matRenderTex"); rendModelScreen.material = matRenderTex; } private void SetScreenToOffTexture() { if ((Object)(object)rendModelScreen == (Object)null) { rendModelScreen = modelScreen.GetComponent<Renderer>(); } rendModelScreen.material = Pinto_ModBase.matOffScreen; ResetGame(); } public virtual void ResetGame() { } [ServerRpc] private void ChangeBodyColorServerRpc(Color newColor) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Invalid comparison between Unknown and I4 //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0127: 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_0152: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016a: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(4073211155u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref newColor); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4073211155u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; ((Renderer)base.mainObjectRenderer).materials[0].color = newColor; Debug.Log((object)("PintoBoy: server body color to:" + ((object)(Color)(ref newColor)).ToString())); color.Value = Color32.op_Implicit(newColor); SetBodyColorClientRpc(newColor.r, newColor.g, newColor.b); } } [ClientRpc] private void SetBodyColorClientRpc(float r, float g, float b) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: 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_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(871864659u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref r, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref g, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref b, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 871864659u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Debug.Log((object)"PintoBoy: client body color"); ((Renderer)base.mainObjectRenderer).materials[0].color = new Color(r, g, b); } } } private void SetBodyColor(Color32 newColor) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) ((Renderer)base.mainObjectRenderer).materials[0].color = Color32.op_Implicit(newColor); } protected override void __initializeVariables() { if (highScore == null) { throw new Exception("PintoBoy.highScore cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)highScore).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)highScore, "highScore"); ((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)highScore); if (currentScore == null) { throw new Exception("PintoBoy.currentScore cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)currentScore).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)currentScore, "currentScore"); ((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)currentScore); if (health == null) { throw new Exception("PintoBoy.health cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)health).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)health, "health"); ((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)health); if (color == null) { throw new Exception("PintoBoy.color cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)color).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)color, "color"); ((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)color); ((GrabbableObject)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2230293064u, new RpcReceiveHandler(__rpc_handler_2230293064), "SpawnScreenServerRpc"); ((NetworkBehaviour)this).__registerRpc(2649739462u, new RpcReceiveHandler(__rpc_handler_2649739462), "SpawnScreenClientRpc"); ((NetworkBehaviour)this).__registerRpc(4073211155u, new RpcReceiveHandler(__rpc_handler_4073211155), "ChangeBodyColorServerRpc"); ((NetworkBehaviour)this).__registerRpc(871864659u, new RpcReceiveHandler(__rpc_handler_871864659), "SetBodyColorClientRpc"); ((GrabbableObject)this).__initializeRpcs(); } private static void __rpc_handler_2230293064(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; ((global::PintoBoy)(object)target).SpawnScreenServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2649739462(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((global::PintoBoy)(object)target).SpawnScreenClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_4073211155(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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009d: 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 { Color newColor = default(Color); ((FastBufferReader)(ref reader)).ReadValueSafe(ref newColor); target.__rpc_exec_stage = (__RpcExecStage)1; ((global::PintoBoy)(object)target).ChangeBodyColorServerRpc(newColor); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_871864659(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { float r = default(float); ((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref r, default(ForPrimitives)); float g = default(float); ((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref g, default(ForPrimitives)); float b = default(float); ((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref b, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((global::PintoBoy)(object)target).SetBodyColorClientRpc(r, g, b); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "PintoBoy"; } } namespace PintoMod { [BepInPlugin("123period.PintoBoyFixed", "PintoBoyFixed", "2.1.0")] public class Pinto_ModBase : BaseUnityPlugin { public const string MODGUID = "123period.PintoBoyFixed"; public const string MODNAME = "PintoBoyFixed"; public const string MODVERSION = "2.1.0"; private readonly Harmony harmony = new Harmony("123period.PintoBoyFixed"); public ManualLogSource logger; public static ConfigEntry<float> config_PintoBoyLethalJumpanyRarity; public static ConfigEntry<float> config_PintoBoyFacilityDashRarity; public static ConfigEntry<float> config_PintoBoy; public static readonly Lazy<Pinto_ModBase> Instance = new Lazy<Pinto_ModBase>(() => new Pinto_ModBase()); public static AssetBundle pintoBundle; public static Item itemPintoBoyPrefab; public static Material matOffScreen; public static Material matOnScreen; public static Item itemPintoBoyLJ; public static Item itemLJCartridgePrefab; public static LethalJumpany gameLethalJumpanyPrefab; public static GameObject ljSpiderPrefab; public static GameObject ljSlimePrefab; public static GameObject ljLootbugPrefab; public static Item itemPintoBoyFD; public static Item itemFDCartridgePrefab; public static FacilityDash gameFacilityDashPrefab; public static GameObject fdBrackenPrefab; public static GameObject fdBunkerSpiderPrefab; public static GameObject fdLootBugPrefab; public static GameObject fdNutcrackerPrefab; public static GameObject fdSnareFleaPrefab; public static GameObject fdThumperPrefab; public int currentId = 0; public static string basePath = "assets/pintoboy"; public static string devicePath = basePath + "/device"; public static string gamesPath = basePath + "/games"; public static string ljBasePath = gamesPath + "/lethal jumpany"; public static string ljAudioPath = ljBasePath + "/audio/"; public static string ljSpritesPath = ljBasePath + "/2d"; public static string fdBasePath = gamesPath + "/facility dash"; public static string fdAudioPath = fdBasePath + "/audio/"; public static string fdSpritesPath = fdBasePath + "/sprites/monsters"; private void Awake() { logger = Logger.CreateLogSource("PintoBoy"); ConfigSetup(); LoadBundle(); SetVariables(); harmony.PatchAll(typeof(Pinto_ModBase)); Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } Debug.Log((object)"Pintoboy initialized"); } private void ConfigSetup() { config_PintoBoyLethalJumpanyRarity = ((BaseUnityPlugin)this).Config.Bind<float>("Lethal Jumpany PintoBoy", "Value", 25f, "How rare is the PintoBoy with Lethal Jumpany"); config_PintoBoyFacilityDashRarity = ((BaseUnityPlugin)this).Config.Bind<float>("Facility Dash PintoBoy", "Value", 12f, "How rare is the PintoBoy with Facility Dash"); } private void SetVariables() { NetworkPrefabs.RegisterNetworkPrefab(itemPintoBoyPrefab.spawnPrefab); NetworkPrefabs.RegisterNetworkPrefab(itemPintoBoyLJ.spawnPrefab); NetworkPrefabs.RegisterNetworkPrefab(itemPintoBoyFD.spawnPrefab); Items.RegisterScrap(itemPintoBoyLJ, (int)config_PintoBoyLethalJumpanyRarity.Value, (LevelTypes)(-1)); Items.RegisterScrap(itemPintoBoyFD, (int)config_PintoBoyFacilityDashRarity.Value, (LevelTypes)(-1)); } private void LoadBundle() { pintoBundle = AssetBundle.LoadFromMemory(Resources.pintobund); if ((Object)(object)pintoBundle == (Object)null) { throw new Exception("Failed to load Pinto Bundle!"); } itemPintoBoyPrefab = pintoBundle.LoadAsset<Item>(basePath + "/pintoboy.asset"); if ((Object)(object)itemPintoBoyPrefab == (Object)null) { throw new Exception("Failed to load Pinto Item!"); } global::PintoBoy pintoBoy = itemPintoBoyPrefab.spawnPrefab.AddComponent<global::PintoBoy>(); if ((Object)(object)pintoBoy == (Object)null) { throw new Exception("Failed to load Pinto Boy!"); } ((GrabbableObject)pintoBoy).itemProperties = itemPintoBoyPrefab; matOffScreen = pintoBundle.LoadAsset<Material>(devicePath + "/off screen.mat"); if ((Object)(object)matOffScreen == (Object)null) { throw new Exception("Failed to load off screen material!"); } matOnScreen = pintoBundle.LoadAsset<Material>("Screen Mat.mat"); if ((Object)(object)matOnScreen == (Object)null) { throw new Exception("Failed to load Screen Mat material!"); } GameObject val = pintoBundle.LoadAsset<GameObject>(ljSpritesPath + "/spider/spider.prefab"); if ((Object)(object)val == (Object)null) { throw new Exception("Failed to load Spider Prefab Object!"); } val.AddComponent<LJEnemy>(); ljSpiderPrefab = val; if ((Object)(object)ljSpiderPrefab == (Object)null) { throw new Exception("Failed to load Spider Prefab!"); } GameObject val2 = pintoBundle.LoadAsset<GameObject>(ljSpritesPath + "/slime/slime.prefab"); if ((Object)(object)val2 == (Object)null) { throw new Exception("Failed to load Slime Prefab Object!"); } val2.AddComponent<LJEnemy>(); ljSlimePrefab = val2; if ((Object)(object)ljSlimePrefab == (Object)null) { throw new Exception("Failed to load Slime Prefab!"); } GameObject val3 = pintoBundle.LoadAsset<GameObject>(ljSpritesPath + "/loot bug/loot bug.prefab"); if ((Object)(object)val3 == (Object)null) { throw new Exception("Failed to load Lootbug Prefab Object!"); } val3.AddComponent<LJEnemy>(); ljLootbugPrefab = val3; if ((Object)(object)ljLootbugPrefab == (Object)null) { throw new Exception("Failed to load Lootbug Prefab!"); } string text = ""; AudioClip audioClip = GetAudioClip(fdAudioPath + "67_knock (Player hit)"); text = "Bracken"; fdBrackenPrefab = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + text + ".prefab"); if ((Object)(object)fdBrackenPrefab == (Object)null) { throw new Exception("PintoBoy FD: Failed to load " + text + " Prefab Object!"); } Debug.Log((object)("PintoBoy FD: Loading " + text + " Prefab")); fdBrackenPrefab.AddComponent<FD_Bracken>(); text = "Bunker Spider"; fdBunkerSpiderPrefab = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + text + ".prefab"); if ((Object)(object)fdBunkerSpiderPrefab == (Object)null) { throw new Exception("PintoBoy FD: Failed to load " + text + " Prefab Object!"); } Debug.Log((object)("PintoBoy FD: Loading " + text + " Prefab")); fdBunkerSpiderPrefab.AddComponent<FD_BunkerSpider>(); text = "Loot Bug"; fdLootBugPrefab = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + text + ".prefab"); if ((Object)(object)fdLootBugPrefab == (Object)null) { throw new Exception("PintoBoy FD: Failed to load " + text + " Prefab Object!"); } Debug.Log((object)("PintoBoy FD: Loading " + text + " Prefab")); fdLootBugPrefab.AddComponent<FD_LootBug>(); text = "Snare Flea"; fdSnareFleaPrefab = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + text + ".prefab"); if ((Object)(object)fdSnareFleaPrefab == (Object)null) { throw new Exception("PintoBoy FD: Failed to load " + text + " Prefab Object!"); } Debug.Log((object)("PintoBoy FD: Loading " + text + " Prefab")); fdSnareFleaPrefab.AddComponent<FD_SnareFlea>(); text = "Thumper"; fdThumperPrefab = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + text + ".prefab"); if ((Object)(object)fdThumperPrefab == (Object)null) { throw new Exception("PintoBoy FD: Failed to load " + text + " Prefab Object!"); } Debug.Log((object)("PintoBoy FD: Loading " + text + " Prefab")); FD_Thumper fD_Thumper = fdThumperPrefab.AddComponent<FD_Thumper>(); fD_Thumper.acEntrance = GetAudioClip(fdAudioPath + "monster sounds/thumper yell"); fD_Thumper.acDefaultAttack = audioClip; text = "Nutcracker"; fdNutcrackerPrefab = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + text + ".prefab"); if ((Object)(object)fdNutcrackerPrefab == (Object)null) { throw new Exception("PintoBoy FD: Failed to load " + text + " Prefab Object!"); } Debug.Log((object)("PintoBoy FD: Loading " + text + " Prefab")); fdNutcrackerPrefab.AddComponent<FD_Nutcracker>(); itemPintoBoyLJ = pintoBundle.LoadAsset<Item>(basePath + "/pintoboy lj.asset"); if ((Object)(object)itemPintoBoyLJ == (Object)null) { throw new Exception("Failed to load Pinto LJ Item!"); } global::PintoBoy pintoBoy2 = itemPintoBoyLJ.spawnPrefab.AddComponent<LethalJumpany>(); if ((Object)(object)pintoBoy2 == (Object)null) { throw new Exception("Failed to load Pinto Boy!"); } ((GrabbableObject)pintoBoy2).itemProperties = itemPintoBoyLJ; itemPintoBoyFD = pintoBundle.LoadAsset<Item>(basePath + "/pintoboy fd.asset"); if ((Object)(object)itemPintoBoyFD == (Object)null) { throw new Exception("Failed to load Pinto FD Item!"); } FacilityDash facilityDash = itemPintoBoyFD.spawnPrefab.AddComponent<FacilityDash>(); if ((Object)(object)facilityDash == (Object)null) { throw new Exception("Failed to load Pinto Boy!"); } ((GrabbableObject)facilityDash).itemProperties = itemPintoBoyFD; facilityDash.prefabBracken = fdBrackenPrefab; facilityDash.prefabBunkerSpider = fdBunkerSpiderPrefab; facilityDash.prefabLootBug = fdLootBugPrefab; facilityDash.prefabNutcracker = fdNutcrackerPrefab; facilityDash.prefabSnareFlea = fdSnareFleaPrefab; facilityDash.prefabThumper = fdThumperPrefab; } private GameObject LoadFDPrefab(MonoBehaviour component, string prefabName) { GameObject val = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + prefabName + ".prefab"); if ((Object)(object)val == (Object)null) { throw new Exception("Failed to load " + prefabName + " Prefab Object!"); } Debug.Log((object)("PintoBoy FD: Loading " + prefabName + " Prefab. Component type is:" + ((object)component).GetType())); val.AddComponent(((object)component).GetType()); return val; } private void LoadPrefabObject(GameObject prefab, MonoBehaviour component, string prefabName) { prefab = pintoBundle.LoadAsset<GameObject>(fdSpritesPath + "/" + prefabName + ".prefab"); if ((Object)(object)prefab == (Object)null) { throw new Exception("Failed to load " + prefabName + " Prefab Object!"); } prefab.AddComponent(((object)component).GetType()); if ((Object)(object)prefab == (Object)null) { throw new Exception("Failed to load " + prefabName + " Prefab!"); } } public static AudioClip GetAudioClip(string path) { AudioClip val = pintoBundle.LoadAsset<AudioClip>(path + ".wav"); if ((Object)(object)val == (Object)null) { val = pintoBundle.LoadAsset<AudioClip>(path + ".mp3"); } if ((Object)(object)val == (Object)null) { throw new Exception("Failed to load Audio Clip " + path); } return val; } [HarmonyPrefix] [HarmonyPatch(typeof(RoundManager), "CollectNewScrapForThisRound")] public static void PintoBoyAddedToShip(GrabbableObject scrapObject) { if (scrapObject is global::PintoBoy) { global::PintoBoy pintoBoy = (global::PintoBoy)(object)scrapObject; pintoBoy.MakeScreenNOTSpawnable(); Debug.Log((object)"PintoBoy added to ship and screen not spawned"); } } [HarmonyPrefix] [HarmonyPatch(typeof(RoundManager), "DespawnPropsAtEndOfRound")] public static void DespawnPintoBoyScreens(RoundManager __instance, ref bool despawnAllItems) { if (!((NetworkBehaviour)__instance).IsServer) { return; } global::PintoBoy[] array = Object.FindObjectsOfType<global::PintoBoy>(); for (int i = 0; i < array.Length; i++) { if (despawnAllItems || (!((GrabbableObject)array[i]).isHeld && !((GrabbableObject)array[i]).isInShipRoom)) { if (((GrabbableObject)array[i]).isHeld && (Object)(object)((GrabbableObject)array[i]).playerHeldBy != (Object)null) { ((GrabbableObject)array[i]).playerHeldBy.DropAllHeldItemsAndSync(); } NetworkObject component = ((Component)array[i]).gameObject.GetComponent<NetworkObject>(); if ((Object)(object)component != (Object)null && component.IsSpawned) { Object.Destroy((Object)(object)array[i].cam.gameObject); ((Component)array[i]).gameObject.GetComponent<NetworkObject>().Despawn(true); } else { Debug.Log((object)("Error/warning: prop '" + ((Object)((Component)array[i]).gameObject).name + "' was not spawned or did not have a NetworkObject component! Skipped despawning and destroyed it instead.")); Object.Destroy((Object)(object)array[i].cam.gameObject); Object.Destroy((Object)(object)((Component)array[i]).gameObject); } } else { ((GrabbableObject)array[i]).scrapPersistedThroughRounds = true; } if (__instance.spawnedSyncedObjects.Contains(((Component)array[i]).gameObject)) { __instance.spawnedSyncedObjects.Remove(((Component)array[i]).gameObject); } } } } [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resource { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { ResourceManager resourceManager = new ResourceManager("PintoBoy.Resource", typeof(Resource).Assembly); resourceMan = resourceManager; } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal Resource() { } } public static class MyPluginInfo { public const string PLUGIN_GUID = "PintoBoy"; public const string PLUGIN_NAME = "PintoBoy"; public const string PLUGIN_VERSION = "2.1.0"; } } namespace PintoMod.Properties { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { ResourceManager resourceManager = new ResourceManager("PintoMod.Properties.Resources", typeof(Resources).Assembly); resourceMan = resourceManager; } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal static byte[] pintobund { get { object @object = ResourceManager.GetObject("pintobund", resourceCulture); return (byte[])@object; } } internal Resources() { } } } namespace PintoMod.Assets.Scripts { [HarmonyPatch(typeof(GrabbableObject))] public static class GrabbableObject_Patches { [HarmonyPrefix] [HarmonyPatch(typeof(GrabbableObject), "Start")] private static void Start(GrabbableObject __instance) { if (((Object)__instance).name == "Pinto") { Debug.Log((object)"Instance is Pinto"); global::PintoBoy pintoBoy = (global::PintoBoy)(object)__instance; } } } [HarmonyPatch] public class NetworkHandler { private static GameObject pintoObject; private static GameObject ljObject; [HarmonyPrefix] [HarmonyPatch(typeof(GameNetworkManager), "Start")] private static void Init() { Debug.Log((object)"Pintoboy NetworkHandler Init starting"); Debug.Log((object)"Pintoboy NetworkHandler Init ending"); } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "Awake")] private static void SpawnNetworkPrefab() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) try { if (NetworkManager.Singleton.IsServer) { Debug.Log((object)"Trying to spawn PintoBoy test objs"); pintoObject = Object.Instantiate<GameObject>(Pinto_ModBase.itemPintoBoyPrefab.spawnPrefab); pintoObject.GetComponent<NetworkObject>().Spawn(true); pintoObject.transform.position = new Vector3(3.0792f, 0.2899f, -14.6918f); Debug.Log((object)"PintoBoy test obj 1 hopefully spawned"); ljObject = Object.Instantiate<GameObject>(Pinto_ModBase.itemLJCartridgePrefab.spawnPrefab); ljObject.GetComponent<NetworkObject>().Spawn(true); ljObject.transform.position = new Vector3(2.6302f, 0.2875f, -14.4498f); Debug.Log((object)"PintoBoy test objs hopefully spawned"); } } catch { Pinto_ModBase.Instance.Value.logger.LogError((object)"Failed to instantiate network prefab!"); } } } public abstract class PintoBoyGame : MonoBehaviour { public global::PintoBoy pintoBoy; public bool isActive; public bool isPaused; public bool isInGame; public bool isHoldingButton; public bool wasInitialized = false; public virtual void ButtonPress() { } public virtual void ButtonRelease(float timeHeld) { } public virtual void GameUpdate() { } public virtual void UnPause() { } public virtual void Pause() { } public virtual void TurnedOff() { } public virtual void TurnedOn() { } public virtual void InitializeObjects(Transform gameRoot) { Debug.Log((object)("Intiailizing PintoBoyGame: " + ((Object)this).name)); wasInitialized = true; } public virtual void TakenOutPintoBoy() { pintoBoy = null; DisableChildren(); } public virtual void DisableChildren() { for (int i = 0; i < ((Component)this).transform.childCount; i++) { ((Component)((Component)this).transform.GetChild(i)).gameObject.SetActive(false); } } public virtual void EnableChildren() { for (int i = 0; i < ((Component)this).transform.childCount; i++) { ((Component)((Component)this).transform.GetChild(i)).gameObject.SetActive(true); } } public virtual void StopSounds() { pintoBoy.StopSounds(); } public void PlaySound(AudioClip clip) { pintoBoy.PlaySound(clip); } } public class PintoCam : MonoBehaviour { private int timeToCheck = 30; private float timer = 2f; private Collider col; private void Awake() { CheckColliders(); } private void Update() { if (timer > 0f) { timer -= Time.deltaTime; return; } CheckColliders(); timer = timeToCheck; } private void CheckColliders() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)"PintoBoy Cam: checking if any PintoBoy Cams intersect with this one"); Collider[] array = Physics.OverlapBox(((Component)this).transform.position, Vector3.one * 10f); if ((Object)(object)col == (Object)null) { col = ((Component)this).GetComponent<Collider>(); } for (int i = 0; i < array.Length; i++) { if ((Object)(object)array[i] != (Object)(object)col) { CheckCollider(array[i]); } } } private void CheckCollider(Collider collision) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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_00bc: 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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0087: 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) Debug.Log((object)"PintoBoy Cam: moving to stop intersecting"); Vector3 val; if (((Component)collision).transform.position.x > ((Component)this).transform.position.x) { val = Vector3.right * (-50f - Random.value); Debug.Log((object)("PintoBoy Cam: moving " + ((object)(Vector3)(ref val)).ToString())); ((Component)this).transform.position = ((Component)this).transform.position + Vector3.right * (-50f - Random.value); CheckColliders(); } else { val = Vector3.right * (50f + Random.value); Debug.Log((object)("PintoBoy Cam: moving " + ((object)(Vector3)(ref val)).ToString())); ((Component)this).transform.position = ((Component)this).transform.position + Vector3.right * (50f + Random.value); CheckColliders(); } } } } namespace PintoMod.Assets.Scripts.LethalJumpany { public enum LJState { MainMenu, InGame, Paused, Lost } public class LethalJumpany : global::PintoBoy { private Animator fadeAnim; private LJState gameState = LJState.MainMenu; private Transform mainMenu; private Animator mainMenuAnim; private float mainmenuTime = 2f; private float mainmenuTimer = 0f; private float mainmenuWaitTime = 1.5f; private float mainmenuWaitTimer = 0f; private string SelectedString = "Selected"; private string FadeString = "Fade"; private string DoAnimString = "DoAnim"; private Transform inGame; private Vector3 playerStart; private GameObject player; private Rigidbody2D playerRb; private Collider2D playerCol; private Animator playerAnim; private SpriteRenderer playerSprite; private int[] playerPositions = new int[4] { 0, 5, 10, 15 }; private Vector3 brackenStart; private GameObject bracken; private Animator brackenAnim; private Collider2D groundCol; private Animator groundAnim; private string InAirString = "InAir"; private string DeathString = "Death"; private string ResetString = "Reset"; public float jumpHeight = 8f; public float fastFallSpeed = 15f; public float rayCastDistance = 0.25f; public float rayCastOffset = -0.05f; private bool isGrounded = false; private bool doOnce = false; private Transform paused; private Transform playerSpawnpoint; private Transform topSpawnpoint; private Transform midSpawnpoint; private Transform bottomSpawnpoint; private TMP_Text scoreText; private TMP_Text endScreenText; public GameObject spiderPrefab; public GameObject lootbugPrefab; public GameObject slimePrefab; private float spiderSpeed = 2.5f; private float lootbugSpeed = 3f; private float slimeSpeed = 2f; private float spiderLootBugSpawnChance = 0.4f; private float spiderLootBugDistance = 2.75f; private float scoreIncreaseRate = 15f; private float increaseSpeedAddition = 0.25f; private float increaseAdditionRate = 100f; private int speedAdditionMultiplier = 1; private int speedAdditionMultiplierDefault = 1; private int timesIncreased = 0; private float spawnEnemyEveryMin = 40f; private float spawnEnemyEveryMax = 100f; private float lastTimeSpawned = 0f; private List<LJEnemy> enemies = new List<LJEnemy>(); private bool invincible = false; private float invincibleTime = 2f; private float invincibleTimer = 0f; private bool dead; private bool deadHitGround; private bool deadAnimStarted; private bool endScreenShown; private float deathAnimTime = 2.5f; private float deathAnimTimer = 0f; private int deathAnimIndex = 0; public AudioClip acPlayerStep1; public AudioClip acPlayerStep2; public AudioClip acPlayerJump; public AudioClip acSnapNeck; public AudioClip acSnapNeckLand; public AudioClip acSpiderStep1; public AudioClip acSpiderStep2; public AudioClip acSpiderStep3; public AudioClip acSpiderStep4; public AudioClip acLootbugStep; public AudioClip acSlimeStep; public AudioClip acConfirm; public AudioClip acNewHighscore; public AudioClip acNoHighscore; public AudioClip acBackgroundSong; private float stepSoundTimer = 0f; private float stepSoundTime = 0.25f; private int stepSoundIndex = 0; private float backgroundMusicTimer = 0f; private float backgroundMusicTime = 0f; public bool jump = false; public Transform trGameRoot; private float jumpTimer = 0f; private float maxJumpTime = 0.5f; private float jumpForce = 8f; private bool jumping = false; private void Awake() { PintoAwake(); acPlayerStep1 = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "21_walk1 (player step 1)"); acPlayerStep2 = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "22_walk2 (player step 2)"); acPlayerJump = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "23_ladder (player land)"); acSnapNeck = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "12_exchange (snap neck)"); acSnapNeckLand = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "67_knock (fall after neck snap)"); acSpiderStep1 = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "52_step1 (spider movement)"); acSpiderStep2 = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "53_step2 (spider movement)"); acSpiderStep3 = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "54_step3 (spider movement)"); acSpiderStep4 = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "55_step4 (spider movement)"); acLootbugStep = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "47_grass (lootbug movement)"); acSlimeStep = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "30_triangle (slime movement)"); acConfirm = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "59_confirm (start game)"); acNewHighscore = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "24_levelclear (new highscore)"); acNoHighscore = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "64_lose2 (no highscore)"); acBackgroundSong = Pinto_ModBase.GetAudioClip(Pinto_ModBase.ljAudioPath + "danger_streets"); backgroundMusicTime = acBackgroundSong.length; spiderPrefab = Pinto_ModBase.ljSpiderPrefab; lootbugPrefab = Pinto_ModBase.ljLootbugPrefab; slimePrefab = Pinto_ModBase.ljSlimePrefab; mainmenuWaitTimer = mainmenuWaitTime; } private void Update() { PintoBoyUpdate(); if (jump) { ButtonPress(); jump = false; } } public override void GameUpdate() { base.GameUpdate(); if (fadeAnim.GetBool(DoAnimString)) { fadeAnim.SetBool(DoAnimString, false); } switch (gameState) { case LJState.MainMenu: if (mainmenuWaitTimer > 0f) { mainmenuWaitTimer -= Time.deltaTime; } if (mainmenuTimer > 0f) { mainmenuTimer -= Time.deltaTime; } if (mainmenuTimer > 1f && !doOnce) { SetFade(FadeState.FadeOut); doOnce = true; } if (mainmenuTimer <= 1f && mainmenuTimer > 0f && doOnce) { mainmenuTimer = 0f; StartGame(); SetFade(FadeState.FadeIn); doOnce = false; } break; case LJState.InGame: LJinGameUpdate(); break; case LJState.Paused: break; case LJState.Lost: break; } } private void LJinGameUpdate() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_0346: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_045e: Unknown result type (might be due to invalid IL or missing references) //IL_0487: Unknown result type (might be due to invalid IL or missing references) //IL_0496: Unknown result type (might be due to invalid IL or missing references) //IL_04b2: Unknown result type (might be due to invalid IL or missing references) //IL_04e2: Unknown result type (might be due to invalid IL or missing references) if (endScreenShown) { return; } if (!deadAnimStarted) { RaycastHit2D val = Physics2D.Raycast(Vector2.op_Implicit(player.transform.position - rayCastOffset * Vector3.down), Vector2.down, rayCastDistance); if ((Object)(object)((RaycastHit2D)(ref val)).collider == (Object)(object)groundCol) { isGrounded = true; Debug.DrawRay(player.transform.position - rayCastOffset * Vector3.down, Vector2.op_Implicit(Vector2.down * rayCastDistance), Color.green); playerAnim.SetBool(InAirString, false); deadHitGround = true; } else { isGrounded = false; Debug.DrawRay(player.transform.position - rayCastOffset * Vector3.down, Vector2.op_Implicit(Vector2.down * rayCastDistance), Color.red); playerAnim.SetBool(InAirString, true); deadHitGround = false; } } if (dead) { if (deadHitGround) { PlayDeathAnim(); } if (deadAnimStarted) { deathAnimTimer -= Time.deltaTime; if (deathAnimTimer <= 0f) { deadAnimStarted = false; ShowEndScreen(); } else if (deathAnimTimer < deathAnimTime - 0.25f && deathAnimIndex == 0) { deathAnimIndex++; PlaySound(acSnapNeck); } else if (deathAnimTimer < deathAnimTime - 1.75f && deathAnimIndex == 1) { deathAnimIndex++; PlaySound(acSnapNeckLand); } } return; } if (((NetworkBehaviour)this).IsOwner) { NetworkVariable<float> obj = currentScore; obj.Value += scoreIncreaseRate * Time.deltaTime; } if (currentScore.Value > (float)speedAdditionMultiplier * increaseAdditionRate && speedAdditionMultiplier > timesIncreased) { timesIncreased++; speedAdditionMultiplier++; } if (((NetworkBehaviour)this).IsOwner && currentScore.Value > lastTimeSpawned + Random.Range(spawnEnemyEveryMin, spawnEnemyEveryMax)) { SpawnRandomEnemyServerRpc(); lastTimeSpawned = currentScore.Value; } scoreText.text = Mathf.Round(currentScore.Value).ToString(); if (player.transform.localPosition.y < playerStart.y - 0.5f || player.transform.localPosition.y > playerStart.y + 100f) { player.transform.localPosition = playerSpawnpoint.localPosition; } if (invincible) { invincibleTimer -= Time.deltaTime; if (invincibleTimer <= 0f) { invincible = false; ((Renderer)playerSprite).enabled = true; } else if (invincibleTimer % 0.25f < 0.05f) { ((Renderer)playerSprite).enabled = !((Renderer)playerSprite).enabled; } } if (health.Value > -1) { player.transform.localPosition = new Vector3(playerSpawnpoint.localPosition.x + (float)playerPositions[health.Value], player.transform.localPosition.y, 0f); bracken.transform.localPosition = new Vector3(playerSpawnpoint.localPosition.x - (float)(playerPositions[health.Value] * 3), brackenStart.y, 0f); } if (isGrounded && !jumping) { PlayStepSound(); jumpTimer = 0f; } else if (isHoldingButton) { if (jumpTimer > 0f) { jumpTimer -= Time.deltaTime; } } else { jumpTimer = 0f; } if (backgroundMusicTimer > 0f) { backgroundMusicTimer -= Time.deltaTime; return; } backgroundMusicTimer = backgroundMusicTime; if ((Object)(object)acBackgroundSong != (Object)null) { PlaySound(acBackgroundSong); } else { Debug.Log((object)"PintoBoy LJ: acBackgroundSong is null"); } } [ServerRpc] private void SpawnRandomEnemyServerRpc() { //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_0107: 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 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(3146535670u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3146535670u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; switch (Random.Range(0, 3)) { case 0: SpawnSpider(); break; case 1: SpawnLootbug(); break; case 2: SpawnSlime(); break; } } } public void SetFade(FadeState state) { switch (state) { case FadeState.FadeOff: fadeAnim.SetInteger(FadeString, 0); fadeAnim.SetBool(DoAnimString, true); break; case FadeState.FadeOn: fadeAnim.SetInteger(FadeString, 1); fadeAnim.SetBool(DoAnimString, true); break; case FadeState.FadeIn: fadeAnim.SetInteger(FadeString, 2); fadeAnim.SetBool(DoAnimString, true); break; case FadeState.FadeOut: fadeAnim.SetInteger(FadeString, 3); fadeAnim.SetBool(DoAnimString, true); break; } } public void EnableFade(bool enabled) { ((Behaviour)fadeAnim).enabled = enabled; } private LJEnemy EnumToJumpanyEnemy(PintoEnemyType enemyType) { LJEnemy result = new LJEnemy(); switch (enemyType) { case PintoEnemyType.Spider: result = Pinto_ModBase.ljSpiderPrefab.GetComponent<LJEnemy>(); break; case PintoEnemyType.Slime: result = Pinto_ModBase.ljSlimePrefab.GetComponent<LJEnemy>(); break; case PintoEnemyType.Lootbug: result = Pinto_ModBase.ljLootbugPrefab.GetComponent<LJEnemy>(); break; } return result; } private Transform EnumToEnemySpawnPoint(PintoEnemyType enemyType) { Transform result = null; switch (enemyType) { case PintoEnemyType.Spider: result = topSpawnpoint; break; case PintoEnemyType.Lootbug: result = midSpawnpoint; break; case PintoEnemyType.Slime: result = bottomSpawnpoint; break; } return result; } private AudioClip[] EnumToEnemySounds(PintoEnemyType enemyType) { AudioClip[] result = null; switch (enemyType) { case PintoEnemyType.Spider: result = (AudioClip[])(object)new AudioClip[4] { acSpiderStep1, acSpiderStep2, acSpiderStep3, acSpiderStep4 }; break; case PintoEnemyType.Slime: result = (AudioClip[])(object)new AudioClip[1] { acSlimeStep }; break; case PintoEnemyType.Lootbug: result = (AudioClip[])(object)new AudioClip[1] { acLootbugStep }; break; } return result; } [ServerRpc] private void SpawnEnemyServerRpc(float speed, string enemy) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Invalid comparison between Unknown and I4 //IL_0160: 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_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 //IL_011b: 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(56739280u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref speed, default(ForPrimitives)); bool flag = enemy != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(enemy, false); } ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 56739280u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Debug.Log((object)"PintoBoy LJ: Spawning enemy serverside"); PintoEnemyType pintoEnemyType = Enum.Parse<PintoEnemyType>(enemy); SpawnEnemy(EnumToJumpanyEnemy(pintoEnemyType), EnumToEnemySpawnPoint(pintoEnemyType), 0f, speed, pintoEnemyType, EnumToEnemySounds(pintoEnemyType)); SpawnEnemyClientRpc(speed, enemy); } } [ServerRpc] private void SpawnEnemyServerRpc(float speed, float distance, string enemy) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Invalid comparison between Unknown and I4 //IL_017b: 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_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010a: 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_0136: 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(549012891u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref speed, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref distance, default(ForPrimitives)); bool flag = enemy != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(enemy, false); } ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 549012891u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Debug.Log((object)"PintoBoy LJ: Spawning enemy serverside"); PintoEnemyType pintoEnemyType = Enum.Parse<PintoEnemyType>(enemy); SpawnEnemy(EnumToJumpanyEnemy(pintoEnemyType), EnumToEnemySpawnPoint(pintoEnemyType), distance, speed, pintoEnemyType, EnumToEnemySounds(pintoEnemyType)); SpawnEnemyClientRpc(speed, enemy); } } [ClientRpc] private void SpawnEnemyClientRpc(float speed, string enemy) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(172107997u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref speed, default(ForPrimitives)); bool flag = enemy != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(enemy, false); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 172107997u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Debug.Log((object)"PintoBoy LJ: Spawning enemy clientside"); PintoEnemyType pintoEnemyType = Enum.Parse<PintoEnemyType>(enemy); if (!((NetworkBehaviour)this).IsServer) { SpawnEnemy(EnumToJumpanyEnemy(pintoEnemyType), EnumToEnemySpawnPoint(pintoEnemyType), 0f, speed, pintoEnemyType, EnumToEnemySounds(pintoEnemyType)); } } } private LJEnemy SpawnEnemy(LJEnemy prefab, Transform position, float spawnOffset, float speed, PintoEnemyType enemy, AudioClip[] audioClips) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) LJEnemy lJEnemy = Object.Instantiate<LJEnemy>(prefab, position.position, Quaternion.identity, position); Transform transform = ((Component)lJEnemy).transform; transform.position += Vector3.right * spawnOffset; lJEnemy.speed = speed + increaseSpeedAddition * (float)speedAdditionMultiplier; lJEnemy.game = this; lJEnemy.onDeath.AddListener((UnityAction<LJEnemy>)OnEnemyDeath); lJEnemy.enemyType = enemy; lJEnemy.SetMovementSounds(audioClips); enemies.Add(lJEnemy); return lJEnemy; } private void OnEnemyDeath(LJEnemy enemy) { enemies.Remove(enemy); enemy.onDeath.RemoveListener((UnityAction<LJEnemy>)OnEnemyDeath); Object.Destroy((Object)(object)((Component)enemy).gameObject); } private void SpawnSpider() { SpawnEnemyServerRpc(spiderSpeed, PintoEnemyType.Spider.ToString()); } private void SpawnLootbug() { SpawnEnemyServerRpc(lootbugSpeed, PintoEnemyType.Lootbug.ToString()); if (currentScore.Value > 700f) { float value = Random.value; Debug.Log((object)"PintoBoy LJ: rolling for Spider after lootbug"); if (value < spiderLootBugSpawnChance) { Debug.Log((object)"PintoBoy LJ: spider rolled"); SpawnEnemyServerRpc(spiderSpeed, spiderLootBugDistance, PintoEnemyType.Spider.ToString()); } } } private void SpawnSlime() { SpawnEnemyServerRpc(slimeSpeed, PintoEnemyType.Slime.ToString()); } public override void ButtonPress() { if (!((GrabbableObject)this).isBeingUsed) { return; } switch (gameState) { case LJState.MainMenu: if (mainmenuWaitTimer <= 0f && mainmenuTimer <= 0f) { StartFromTitleScreen(); } break; case LJState.InGame: if (dead) { if (!endScreenShown) { ShowEndScreen(); } else { ShowTitleScreen(); } } else { Jump(); } break; case LJState.Paused: break; case LJState.Lost: break; } } private void StartFromTitleScreen() { mainMenuAnim.SetTrigger(SelectedString); mainmenuTimer = mainmenuTime; PlaySound(acConfirm); } private void ShowTitleScreen() { SwitchState(LJState.MainMenu); mainmenuWaitTimer = mainmenuWaitTime; } [ServerRpc] private void StartGameServerRpc() { //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_0107: 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 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(1015111075u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1015111075u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; StartGame(); StartGameClientRpc(); } } [ClientRpc] private void StartGameClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2006741636u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2006741636u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; StartGame(); } } } private void StartGame() { SwitchState(LJState.InGame); playerRb.bodyType = (RigidbodyType2D)0; speedAdditionMultiplier = speedAdditionMultiplierDefault; brackenAnim.SetTrigger(ResetString); playerAnim.SetTrigger(ResetString); ClearEnemies(); ((Behaviour)groundAnim).enabled = true; dead = false; endScreenText.text = ""; deadAnimStarted = false; endScreenShown = false; deathAnimTimer = 0f; if (((NetworkBehaviour)this).IsOwner) { health.Value = 3; currentScore.Value = 0f; } timesIncreased = 0; lastTimeSpawned = 0f; deathAnimIndex = 0; backgroundMusicTimer = 0f; } private void ClearEnemies() { if (enemies.Count <= 0) { return; } foreach (LJEnemy enemy in enemies) { Object.Destroy((Object)(object)((Component)enemy).gameObject); } enemies.Clear(); } private void ClearEnemiesExcept(LJEnemy enemy) { if (enemies.Count <= 0) { return; } foreach (LJEnemy enemy2 in enemies) { if (!((Object)(object)enemy2 == (Object)(object)enemy)) { Object.Destroy((Object)(object)((Component)enemy2).gameObject); enemies.Remove(enemy2); } } } [ServerRpc] private void SwitchStateServerRpc(LJState newState) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Invalid comparison between Unknown and I4 //IL_0122: 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_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(433577756u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<LJState>(ref newState, default(ForEnums)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 433577756u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; SwitchState(newState); SwitchStateClientRpc(newState); } } [ClientRpc] private void SwitchStateClientRpc(LJState newState) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2705061252u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<LJState>(ref newState, default(ForEnums)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2705061252u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; SwitchState(newState); } } } private void SwitchState(LJState newState) { switch (newState) { case LJState.MainMenu: ((Component)mainMenu).gameObject.SetActive(true); ((Component)inGame).gameObject.SetActive(false); ((Component)paused).gameObject.SetActive(false); doOnce = false; break; case LJState.InGame: ((Component)mainMenu).gameObject.SetActive(false); ((Component)inGame).gameObject.SetActive(true); ((Component)paused).gameObject.SetActive(false); break; case LJState.Paused: ((Component)mainMenu).gameObject.SetActive(false); ((Component)inGame).gameObject.SetActive(false); ((Component)paused).gameObject.SetActive(true); break; case LJState.Lost: ((Component)mainMenu).gameObject.SetActive(false); ((Component)inGame).gameObject.SetActive(false); ((Component)paused).gameObject.SetActive(false); break; } gameState = newState; } private void Jump() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (isGrounded) { playerRb.velocity = new Vector2(0f, jumpHeight); isGrounded = false; jumpTimer = maxJumpTime; jumping = true; PlaySound(acPlayerJump); } else { playerRb.velocity = new Vector2(0f, 0f - fastFallSpeed); PlaySound(acPlayerJump); } } public override void ButtonRelease(float timeHeld) { //IL_0007: 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_0039: 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_006a: Unknown result type (might be due to invalid IL or missing references) if (playerRb.velocity.y > 0f) { playerRb.velocity = new Vector2(playerRb.velocity.x, playerRb.velocity.y / 4f); } jumping = false; if (!isGrounded && !(playerRb.velocity.y > 0.1f)) { } } public override void TurnedOn() { EnableAllAnimators(); ClearEnemies(); ShowTitleScreen(); } public override void ResetGame() { base.ResetGame(); } private void EnableAllAnimators() { ((Behaviour)groundAnim).enabled = true; ((Behaviour)brackenAnim).enabled = true; ((Behaviour)mainMenuAnim).enabled = true; ((Behaviour)playerAnim).enabled = true; EnableFade(enabled: true); for (int i = 0; i < enemies.Count; i++) { ((Behaviour)enemies[i].animator).enabled = true; enemies[i].paused = true; } } private void DisableAllAnimators() { ((Behaviour)groundAnim).enabled = false; ((Behaviour)brackenAnim).enabled = false; ((Behaviour)mainMenuAnim).enabled = false; ((Behaviour)playerAnim).enabled = false; EnableFade(enabled: false); for (int i = 0; i < enemies.Count; i++) { ((Behaviour)enemies[i].animator).enabled = false; enemies[i].paused = false; } } public void PlayerGotHit() { if (((NetworkBehaviour)this).IsOwner && !invincible) { NetworkVariable<int> obj = health; int value = obj.Value; obj.Value = value - 1; if (health.Value <= 0) { DieServerRpc(); return; } invincible = true; invincibleTimer = invincibleTime; } } [ServerRpc] public void DieServerRpc() { //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_0107: 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 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(3128206739u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3128206739u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Die(); DieClientRpc(); } } [ClientRpc] public void DieClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2035175567u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2035175567u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Die(); } } } public void Die() { //IL_004e: Unknown result type (might be due to inva