Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Lethal Pyrkon v1.0.0
PyrkonScripts.dll
Decompiled 4 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using PyrkonScripts.NetcodePatcher; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; using UnityEngine.Video; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("PyrkonScripts")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("PyrkonScripts")] [assembly: AssemblyTitle("PyrkonScripts")] [assembly: AssemblyVersion("1.0.0.0")] [module: NetcodePatchedAssembly] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace PyrkonScripts { public class BananaGunItem : GrabbableObject { private int ammoLoaded; public override void EquipItem() { ((GrabbableObject)this).EquipItem(); base.playerHeldBy.equippedUsableItemQE = true; } public override void DiscardItem() { ((GrabbableObject)this).DiscardItem(); base.playerHeldBy.equippedUsableItemQE = false; } public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); } public override int GetItemDataToSave() { return ammoLoaded; } public override void LoadItemSaveData(int saveData) { ((GrabbableObject)this).LoadItemSaveData(saveData); ammoLoaded = saveData; } public override void ItemInteractLeftRight(bool right) { ((GrabbableObject)this).ItemInteractLeftRight(right); if (right) { int num = FindAmmoInInventory(); if (num != -1 && ammoLoaded < 3) { ammoLoaded++; base.playerHeldBy.DestroyItemInSlotAndSync(num); SyncAmmoRpc(ammoLoaded); } } } private int FindAmmoInInventory() { for (int i = 0; i < base.playerHeldBy.ItemSlots.Length; i++) { if (!((Object)(object)base.playerHeldBy.ItemSlots[i] == (Object)null)) { GrabbableObject obj = base.playerHeldBy.ItemSlots[i]; GunAmmo val = (GunAmmo)(object)((obj is GunAmmo) ? obj : null); if ((Object)(object)val != (Object)null && val.ammoType == 102) { return i; } } } if ((Object)(object)base.playerHeldBy.ItemOnlySlot != (Object)null) { GrabbableObject itemOnlySlot = base.playerHeldBy.ItemOnlySlot; GunAmmo val2 = (GunAmmo)(object)((itemOnlySlot is GunAmmo) ? itemOnlySlot : null); if ((Object)(object)val2 != (Object)null && val2.ammoType == 102) { return 50; } } return -1; } [Rpc(/*Could not decode attribute arguments.*/)] public void SyncAmmoRpc(int ammo) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_0043: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: 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) { RpcAttributeParams val = default(RpcAttributeParams); RpcParams val3 = default(RpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendRpc(192557183u, val3, val, (SendTo)6, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, ammo); ((NetworkBehaviour)this).__endSendRpc(ref val2, 192557183u, val3, val, (SendTo)6, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; ammoLoaded = Mathf.Clamp(ammo, 0, 3); } } } protected override void __initializeVariables() { ((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 ((NetworkBehaviour)this).__registerRpc(192557183u, new RpcReceiveHandler(__rpc_handler_192557183), "SyncAmmoRpc"); ((GrabbableObject)this).__initializeRpcs(); } private static void __rpc_handler_192557183(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int ammo = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref ammo); target.__rpc_exec_stage = (__RpcExecStage)1; ((BananaGunItem)(object)target).SyncAmmoRpc(ammo); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "BananaGunItem"; } } [Serializable] public class DamageLevel { public List<Mesh> meshes = new List<Mesh>(); public List<MeshFilter> meshFilters = new List<MeshFilter>(); } public class DepositableItem : GrabbableObject { [Space(10f)] [Header("DepositableItem")] public int depositAmount = 50; public ScanNodeProperties? scanNode; public int hp = 3; public List<DamageLevel> damageLevels = new List<DamageLevel>(); public GameObject? destructionObject; private PlayerControllerB? lastHeldBy; public override int GetItemDataToSave() { return hp; } public override void LoadItemSaveData(int saveData) { ((GrabbableObject)this).LoadItemSaveData(saveData); DamageItemRpc(saveData); } public override void OnNetworkSpawn() { ((NetworkBehaviour)this).OnNetworkSpawn(); if (!((Object)(object)scanNode == (Object)null)) { scanNode.subText = $"Kaucja: ${depositAmount}"; } } public override void EquipItem() { ((GrabbableObject)this).EquipItem(); lastHeldBy = base.playerHeldBy; } public override void OnHitGround() { ((GrabbableObject)this).OnHitGround(); if (!((Object)(object)lastHeldBy == (Object)null) && (!((Object)(object)lastHeldBy != (Object)null) || !lastHeldBy.isInHangarShipRoom) && ((NetworkBehaviour)this).IsServer) { hp--; DamageItemRpc(hp); } } [Rpc(/*Could not decode attribute arguments.*/)] public void DamageItemRpc(int health) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_0043: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: 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) { RpcAttributeParams val = default(RpcAttributeParams); RpcParams val3 = default(RpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendRpc(1629268537u, val3, val, (SendTo)6, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, health); ((NetworkBehaviour)this).__endSendRpc(ref val2, 1629268537u, val3, val, (SendTo)6, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; hp = health; if (hp > -1 && damageLevels[hp] != null) { Debug.Log((object)"Changing depositable item mesh"); if (damageLevels[hp].meshes.Count == damageLevels[hp].meshFilters.Count) { for (int i = 0; i < damageLevels[hp].meshes.Count; i++) { damageLevels[hp].meshFilters[i].mesh = damageLevels[hp].meshes[i]; } } } else if (hp == -1 && (Object)(object)base.playerHeldBy == (Object)null) { Debug.Log((object)"Depositable item destroyed"); if ((Object)(object)destructionObject != (Object)null) { Object.Instantiate<GameObject>(destructionObject, ((Component)this).transform.position, Quaternion.identity, RoundManager.Instance.mapPropsContainer.transform); } if (((NetworkBehaviour)this).IsServer) { ((NetworkBehaviour)this).NetworkObject.Despawn(true); } } } protected override void __initializeVariables() { ((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 ((NetworkBehaviour)this).__registerRpc(1629268537u, new RpcReceiveHandler(__rpc_handler_1629268537), "DamageItemRpc"); ((GrabbableObject)this).__initializeRpcs(); } private static void __rpc_handler_1629268537(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int health = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref health); target.__rpc_exec_stage = (__RpcExecStage)1; ((DepositableItem)(object)target).DamageItemRpc(health); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string? __getTypeName() { return "DepositableItem"; } } public class DepositMachine : NetworkBehaviour { public static DepositMachine Instance; public TMP_Text? monitorText; public AudioSource? audioSource; public Animator? animator; public PlaceableShipObject? shipObj; public AudioClip[]? clips; public InteractTrigger? emptyTrigger; public int maxCapacity = 10; public Transform? bagSpawnPos; public NetworkVariable<int> capacity = new NetworkVariable<int>(0, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); [TextArea] public string[] possibleSentences = new string[14] { "You're a true ecologist\n\nyour deposit: $[AMOUNT]", "Keep the company clean\n\nyour deposit: $[AMOUNT]", "We appreciate you following the rules\n\nyour deposit: $[AMOUNT]", "Thank you for depositing\n\nyour deposit: $[AMOUNT]", "Your work is looked upon\n\nyour deposit: $[AMOUNT]", "What an accomplishment\n\nyour deposit: $[AMOUNT]", "Keep up the pace\n\nyour deposit: $[AMOUNT]", "Sincerely thank you\n\nyour deposit: $[AMOUNT]", "You're the greatest asset\n\nyour deposit: $[AMOUNT]", "We reward your commitment\n\nyour deposit: $[AMOUNT]", "Must keep the ship tidy\n\nyour deposit: $[AMOUNT]", "Baboon Hawks are thankful\n\nyour deposit: $[AMOUNT]", "Your job is valued\n\nyour deposit: $[AMOUNT]", "Please pick up the trash\n\nyour deposit: $[AMOUNT]" }; private Coroutine? textDisplay; private Coroutine? disableTrigger; private Item? emptyBag = Plugin.trash; private Terminal? terminal; private void Awake() { terminal = Object.FindObjectOfType<Terminal>(); Instance = this; } public override void OnNetworkSpawn() { ((NetworkBehaviour)this).OnNetworkSpawn(); NetworkVariable<int> obj = capacity; obj.OnValueChanged = (OnValueChangedDelegate<int>)(object)Delegate.Combine((Delegate?)(object)obj.OnValueChanged, (Delegate?)(object)new OnValueChangedDelegate<int>(OnCapacityChanged)); if (ES3.KeyExists("DepositMachineCapacity", GameNetworkManager.Instance.currentSaveFileName) && ((NetworkBehaviour)this).IsServer) { int value = ES3.Load<int>("DepositMachineCapacity", GameNetworkManager.Instance.currentSaveFileName); capacity.Value = value; } } public void OnCapacityChanged(int prevValue, int newValue) { if (newValue >= maxCapacity && (Object)(object)emptyTrigger != (Object)null) { emptyTrigger.interactable = true; } } public void EmptyDeposit(PlayerControllerB player) { EmptyDepositRpc(player.playerClientId); } [Rpc(/*Could not decode attribute arguments.*/)] public void EmptyDepositRpc(ulong clientId) { //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_0043: 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_005f: 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_0072: 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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val3 = default(RpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendRpc(79017483u, val3, val, (SendTo)6, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, clientId); ((NetworkBehaviour)this).__endSendRpc(ref val2, 79017483u, val3, val, (SendTo)6, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; ulong clientId2 = clientId; PlayerControllerB val4 = ((IEnumerable<PlayerControllerB>)StartOfRound.Instance.allPlayerScripts).FirstOrDefault((Func<PlayerControllerB, bool>)((PlayerControllerB plr) => plr.playerClientId == clientId2)); if ((Object)(object)val4 == (Object)null || (Object)(object)animator == (Object)null || (Object)(object)emptyTrigger == (Object)null || (Object)(object)emptyBag == (Object)null || (Object)(object)bagSpawnPos == (Object)null) { return; } emptyTrigger.interactable = false; if (disableTrigger != null) { ((MonoBehaviour)this).StopCoroutine(disableTrigger); } disableTrigger = ((MonoBehaviour)this).StartCoroutine(disablePlaceableTrigger(0.5f)); if ((Object)(object)audioSource != (Object)null && clips != null) { audioSource.PlayOneShot(clips[1]); } DisplayText("Thank you <color=#0DA2FF>" + val4.playerUsername + "</color> for emptying the Company Depositor", 9f); if (((NetworkBehaviour)this).IsServer) { GameObject val5 = Object.Instantiate<GameObject>(emptyBag.spawnPrefab, bagSpawnPos.position, Quaternion.identity, StartOfRound.Instance.elevatorTransform); val5.GetComponent<NetworkObject>().Spawn(false); capacity.Value = 0; if (StartOfRound.Instance.inShipPhase) { ES3.Save<int>("DepositMachineCapacity", capacity.Value, GameNetworkManager.Instance.currentSaveFileName); } } ((MonoBehaviour)this).StartCoroutine(openHatchWithDelay(4f)); } private IEnumerator openHatchWithDelay(float time) { if (!((Object)(object)animator == (Object)null)) { animator.SetBool("OpenHatch", true); yield return (object)new WaitForSeconds(time); animator.SetBool("OpenHatch", false); } } private IEnumerator disablePlaceableTrigger(float time) { if ((Object)(object)shipObj != (Object)null) { shipObj.placeObjectCollider.enabled = false; } yield return (object)new WaitForSeconds(time); if ((Object)(object)shipObj != (Object)null) { shipObj.placeObjectCollider.enabled = true; } } public void DepositCurrentItem(PlayerControllerB player) { GrabbableObject currentlyHeldObjectServer = player.currentlyHeldObjectServer; if ((Object)(object)currentlyHeldObjectServer != (Object)null && currentlyHeldObjectServer is DepositableItem) { DepositableItem depositableItem = (DepositableItem)(object)currentlyHeldObjectServer; if (capacity.Value < maxCapacity) { int index = Random.Range(0, possibleSentences.Length); GetRewardRpc(depositableItem.depositAmount, index); ((GrabbableObject)depositableItem).playerHeldBy.DespawnHeldObject(); } else { EmptyNotifyRpc(); } } else { HUDManager.Instance.DisplayTip("Company Deposit", "Please insert depositable item", true, false, "LC_Tip1"); } } private IEnumerator displayTextAfterDelay(float time, int characters) { if (!((Object)(object)monitorText == (Object)null)) { while (monitorText.maxVisibleCharacters <= characters) { yield return (object)new WaitForSeconds(time); TMP_Text? obj = monitorText; obj.maxVisibleCharacters += 1; } } } public void DisplayText(string text, float fontSize = 6f) { if (!((Object)(object)monitorText == (Object)null)) { monitorText.fontSize = fontSize; monitorText.text = text; monitorText.maxVisibleCharacters = 0; if (textDisplay != null) { ((MonoBehaviour)this).StopCoroutine(textDisplay); } textDisplay = ((MonoBehaviour)this).StartCoroutine(displayTextAfterDelay(0.05f, text.Length)); } } [Rpc(/*Could not decode attribute arguments.*/)] public void EmptyNotifyRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Invalid comparison between Unknown and I4 //IL_0043: 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_005f: 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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0085: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val3 = default(RpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendRpc(2084601195u, val3, val, (SendTo)6, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendRpc(ref val2, 2084601195u, val3, val, (SendTo)6, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1) { base.__rpc_exec_stage = (__RpcExecStage)0; DisplayText("<color=#880808>Depositor is full.</color>\n\nPlease empty using the <color=#50BD15>HATCH</color> located on your right"); if ((Object)(object)audioSource != (Object)null && clips != null) { audioSource.PlayOneShot(clips[1]); } } } [Rpc(/*Could not decode attribute arguments.*/)] public void GetRewardRpc(int kaucja, int index) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Invalid comparison between Unknown and I4 //IL_0043: 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_005f: 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_0072: 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_0083: 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_009f: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val3 = default(RpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendRpc(2958306765u, val3, val, (SendTo)6, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, kaucja); BytePacker.WriteValueBitPacked(val2, index); ((NetworkBehaviour)this).__endSendRpc(ref val2, 2958306765u, val3, val, (SendTo)6, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; if ((Object)(object)terminal == (Object)null) { return; } if (((NetworkBehaviour)this).IsServer) { NetworkVariable<int> obj = capacity; obj.Value += 1; if (StartOfRound.Instance.inShipPhase) { ES3.Save<int>("DepositMachineCapacity", capacity.Value, GameNetworkManager.Instance.currentSaveFileName); } } DisplayText(possibleSentences[index].Replace("[AMOUNT]", kaucja.ToString())); Terminal? obj2 = terminal; obj2.groupCredits += kaucja; if ((Object)(object)audioSource != (Object)null && clips != null) { audioSource.PlayOneShot(clips[0]); } } protected override void __initializeVariables() { if (capacity == null) { throw new Exception("DepositMachine.capacity cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)capacity).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)capacity, "capacity"); base.NetworkVariableFields.Add((NetworkVariableBase)(object)capacity); ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(79017483u, new RpcReceiveHandler(__rpc_handler_79017483), "EmptyDepositRpc"); ((NetworkBehaviour)this).__registerRpc(2084601195u, new RpcReceiveHandler(__rpc_handler_2084601195), "EmptyNotifyRpc"); ((NetworkBehaviour)this).__registerRpc(2958306765u, new RpcReceiveHandler(__rpc_handler_2958306765), "GetRewardRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_79017483(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ulong clientId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref clientId); target.__rpc_exec_stage = (__RpcExecStage)1; ((DepositMachine)(object)target).EmptyDepositRpc(clientId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2084601195(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; ((DepositMachine)(object)target).EmptyNotifyRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2958306765(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int kaucja = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref kaucja); int index = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref index); target.__rpc_exec_stage = (__RpcExecStage)1; ((DepositMachine)(object)target).GetRewardRpc(kaucja, index); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string? __getTypeName() { return "DepositMachine"; } } public class JayPhoneItem : GrabbableObject { private const int SCREEN_MATERIAL_INDEX = 0; public Material[] pageMaterials; public Material disabledMaterial; public MeshRenderer mesh; public AudioClip swapArtClip; public AudioClip enableClip; public AudioClip disableClip; public AudioSource phoneAudioSource; private int currentIndex = 0; private PlayerControllerB lastHeldBy; private bool isEnabled = false; public override void EquipItem() { ((GrabbableObject)this).EquipItem(); lastHeldBy = base.playerHeldBy; lastHeldBy.equippedUsableItemQE = true; } public override void DiscardItem() { ((GrabbableObject)this).DiscardItem(); lastHeldBy.equippedUsableItemQE = false; SetState(enabled: false); base.isBeingUsed = false; } public override void UseUpBatteries() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).UseUpBatteries(); SetState(enabled: false); phoneAudioSource.PlayOneShot(disableClip); RoundManager.Instance.PlayAudibleNoise(((Component)this).transform.position, 7f, 0.4f, 0, base.isInElevator && StartOfRound.Instance.hangarDoorsClosed, 0); } public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); SetState(!isEnabled); } public void SetPage(int index) { if (index >= 0 && index < pageMaterials.Length) { currentIndex = index; if (isEnabled) { List<Material> list = new List<Material>(((Renderer)mesh).materials); list[0] = pageMaterials[currentIndex]; ((Renderer)mesh).materials = list.ToArray(); phoneAudioSource.PlayOneShot(swapArtClip); } } } public void SetState(bool enabled) { isEnabled = enabled; List<Material> list = new List<Material>(((Renderer)mesh).materials); list[0] = (isEnabled ? pageMaterials[currentIndex] : disabledMaterial); ((Renderer)mesh).materials = list.ToArray(); phoneAudioSource.PlayOneShot(isEnabled ? enableClip : disableClip); } public override void ItemInteractLeftRight(bool right) { ((GrabbableObject)this).ItemInteractLeftRight(right); if (!isEnabled) { base.isBeingUsed = false; } else { base.isBeingUsed = true; } int num = currentIndex + (right ? 1 : (-1)); if (num < 0) { num = pageMaterials.Length - 1; } else if (num >= pageMaterials.Length) { num = 0; } SetPage(num); } protected override void __initializeVariables() { ((GrabbableObject)this).__initializeVariables(); } protected override void __initializeRpcs() { ((GrabbableObject)this).__initializeRpcs(); } protected internal override string __getTypeName() { return "JayPhoneItem"; } } public class MaxplaierCapItem : GrabbableObject { public GameObject? CapHeadModel; private GameObject? activeCapModel; public override void PocketItem() { //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).PocketItem(); int num = 0; GrabbableObject[] itemSlots = base.playerHeldBy.ItemSlots; foreach (GrabbableObject val in itemSlots) { if (val is MaxplaierCapItem) { MaxplaierCapItem maxplaierCapItem = (MaxplaierCapItem)(object)val; if ((Object)(object)maxplaierCapItem.activeCapModel != (Object)null) { num++; } } } if (num != 0) { return; } activeCapModel = Object.Instantiate<GameObject>(CapHeadModel, base.playerHeldBy.headCostumeContainer.parent.Find("HeadPoint")); if ((Object)(object)activeCapModel != (Object)null) { if ((Object)(object)base.playerHeldBy == (Object)(object)GameNetworkManager.Instance.localPlayerController) { activeCapModel.SetActive(false); } activeCapModel.transform.localPosition = Vector3.zero; activeCapModel.transform.localRotation = Quaternion.identity; activeCapModel.transform.localScale = Vector3.one; } } public override void EquipItem() { ((GrabbableObject)this).EquipItem(); if ((Object)(object)activeCapModel != (Object)null) { Object.Destroy((Object)(object)activeCapModel); } } public override void DiscardItem() { ((GrabbableObject)this).DiscardItem(); if ((Object)(object)activeCapModel != (Object)null) { Object.Destroy((Object)(object)activeCapModel); } } protected override void __initializeVariables() { ((GrabbableObject)this).__initializeVariables(); } protected override void __initializeRpcs() { ((GrabbableObject)this).__initializeRpcs(); } protected internal override string? __getTypeName() { return "MaxplaierCapItem"; } } public class OiikaBroomItem : GrabbableObject { public int broomHitForce = 1; public bool reelingUp; public bool isHoldingButton; private RaycastHit rayHit; private Coroutine reelingUpCoroutine; private RaycastHit[] objectsHitByBroom; private List<RaycastHit> objectsHitByBroomList = new List<RaycastHit>(); public AudioClip reelUp; public AudioClip swing; public AudioClip[] hitSFX; public AudioSource shovelAudio; private PlayerControllerB previousPlayerHeldBy; private int shovelMask = 1084754248; public override void ItemActivate(bool used, bool buttonDown = true) { if ((Object)(object)base.playerHeldBy == (Object)null) { return; } isHoldingButton = buttonDown; if (!reelingUp && buttonDown) { reelingUp = true; previousPlayerHeldBy = base.playerHeldBy; if (reelingUpCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(reelingUpCoroutine); } reelingUpCoroutine = ((MonoBehaviour)this).StartCoroutine(reelUpShovel()); } } private IEnumerator reelUpShovel() { base.playerHeldBy.activatingItem = true; base.playerHeldBy.twoHanded = true; base.playerHeldBy.playerBodyAnimator.ResetTrigger("shovelHit"); base.playerHeldBy.playerBodyAnimator.SetBool("reelingUp", true); shovelAudio.PlayOneShot(reelUp); ReelUpSFXServerRpc(); yield return (object)new WaitForSeconds(0.35f); yield return (object)new WaitUntil((Func<bool>)(() => !isHoldingButton || !base.isHeld)); SwingShovel(!base.isHeld); yield return (object)new WaitForSeconds(0.13f); yield return (object)new WaitForEndOfFrame(); HitShovel(!base.isHeld); yield return (object)new WaitForSeconds(0.3f); reelingUp = false; reelingUpCoroutine = null; } [ServerRpc] public void ReelUpSFXServerRpc() { //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 val2 = default(ServerRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(350106391u, val2, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val, 350106391u, val2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; ReelUpSFXClientRpc(); } } [ClientRpc] public void ReelUpSFXClientRpc() { //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) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val2 = default(ClientRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(1780050249u, val2, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val, 1780050249u, val2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (!((NetworkBehaviour)this).IsOwner) { shovelAudio.PlayOneShot(reelUp); } } } public override void DiscardItem() { if ((Object)(object)base.playerHeldBy != (Object)null) { base.playerHeldBy.activatingItem = false; } ((GrabbableObject)this).DiscardItem(); } public void SwingShovel(bool cancel = false) { //IL_0045: Unknown result type (might be due to invalid IL or missing references) previousPlayerHeldBy.playerBodyAnimator.SetBool("reelingUp", false); if (!cancel) { shovelAudio.PlayOneShot(swing); previousPlayerHeldBy.UpdateSpecialAnimationValue(true, (short)((Component)previousPlayerHeldBy).transform.localEulerAngles.y, 0.4f, false); } } public void HitShovel(bool cancel = false) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_05f9: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: 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_0157: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_032d: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Unknown result type (might be due to invalid IL or missing references) //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_0530: Unknown result type (might be due to invalid IL or missing references) //IL_04de: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)previousPlayerHeldBy == (Object)null) { Debug.LogError((object)"Previousplayerheldby is null on this client when HitShovel is called."); return; } previousPlayerHeldBy.activatingItem = false; bool flag = false; bool flag2 = false; bool flag3 = false; int num = -1; if (!cancel) { previousPlayerHeldBy.twoHanded = false; objectsHitByBroom = Physics.SphereCastAll(((Component)previousPlayerHeldBy.gameplayCamera).transform.position + ((Component)previousPlayerHeldBy.gameplayCamera).transform.right * -0.35f, 0.8f, ((Component)previousPlayerHeldBy.gameplayCamera).transform.forward, 1.5f, shovelMask, (QueryTriggerInteraction)2); objectsHitByBroomList = objectsHitByBroom.OrderBy((RaycastHit x) => ((RaycastHit)(ref x)).distance).ToList(); List<EnemyAI> list = new List<EnemyAI>(); IHittable val2 = default(IHittable); for (int num2 = 0; num2 < objectsHitByBroomList.Count; num2++) { RaycastHit val = objectsHitByBroomList[num2]; Debug.Log((object)((Object)((Component)((RaycastHit)(ref val)).transform).gameObject).name); val = objectsHitByBroomList[num2]; if (((Component)((RaycastHit)(ref val)).transform).gameObject.layer != 8) { val = objectsHitByBroomList[num2]; if (((Component)((RaycastHit)(ref val)).transform).gameObject.layer != 11) { val = objectsHitByBroomList[num2]; if (!((Component)((RaycastHit)(ref val)).transform).TryGetComponent<IHittable>(ref val2)) { continue; } val = objectsHitByBroomList[num2]; if ((Object)(object)((RaycastHit)(ref val)).transform == (Object)(object)((Component)previousPlayerHeldBy).transform) { continue; } val = objectsHitByBroomList[num2]; if (!(((RaycastHit)(ref val)).point == Vector3.zero)) { Vector3 position = ((Component)previousPlayerHeldBy.gameplayCamera).transform.position; RaycastHit val3 = objectsHitByBroomList[num2]; if (Physics.Linecast(position, ((RaycastHit)(ref val3)).point, ref val, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1)) { continue; } } flag = true; Vector3 forward = ((Component)previousPlayerHeldBy.gameplayCamera).transform.forward; Vector3 position2 = ((Component)previousPlayerHeldBy.gameplayCamera).transform.position; val = objectsHitByBroomList[num2]; Debug.DrawLine(position2, ((RaycastHit)(ref val)).point, Color.green, 5f); try { val = objectsHitByBroomList[num2]; EnemyAICollisionDetect component = ((Component)((RaycastHit)(ref val)).transform).GetComponent<EnemyAICollisionDetect>(); if ((Object)(object)component != (Object)null) { if (!((Object)(object)component.mainScript == (Object)null) && !list.Contains(component.mainScript) && (!StartOfRound.Instance.hangarDoorsClosed || component.mainScript.isInsidePlayerShip == previousPlayerHeldBy.isInHangarShipRoom)) { goto IL_03ed; } continue; } val = objectsHitByBroomList[num2]; if (!((Object)(object)((Component)((RaycastHit)(ref val)).transform).GetComponent<PlayerControllerB>() != (Object)null)) { goto IL_03ed; } if (flag3) { continue; } flag3 = true; val = objectsHitByBroomList[num2]; PlayerControllerB component2 = ((Component)((RaycastHit)(ref val)).transform).GetComponent<PlayerControllerB>(); if ((Object)(object)component2 != (Object)null) { bool flag4 = component2.playerSteamId == 76561198010917842L; bool flag5 = val2.Hit(flag4 ? 5 : broomHitForce, forward, previousPlayerHeldBy, true, 1); if (flag5 && (Object)(object)component != (Object)null) { list.Add(component.mainScript); } if (!flag2) { flag2 = flag5; } } else { bool flag6 = val2.Hit(broomHitForce, forward, previousPlayerHeldBy, true, 1); if (flag6 && (Object)(object)component != (Object)null) { list.Add(component.mainScript); } if (!flag2) { flag2 = flag6; } } goto end_IL_0324; IL_03ed: bool flag7 = val2.Hit(broomHitForce, forward, previousPlayerHeldBy, true, 1); if (flag7 && (Object)(object)component != (Object)null) { Debug.Log((object)(component.mainScript.enemyType.enemyName + " has been hit by force: " + broomHitForce + " true: " + flag7)); list.Add(component.mainScript); } if (!flag2) { flag2 = flag7; } end_IL_0324:; } catch (Exception arg) { Debug.Log((object)$"Exception caught when hitting object with shovel from player #{previousPlayerHeldBy.playerClientId}: {arg}"); } continue; } } val = objectsHitByBroomList[num2]; if (((RaycastHit)(ref val)).collider.isTrigger) { continue; } flag = true; val = objectsHitByBroomList[num2]; string tag = ((Component)((RaycastHit)(ref val)).collider).gameObject.tag; for (int num3 = 0; num3 < StartOfRound.Instance.footstepSurfaces.Length; num3++) { if (StartOfRound.Instance.footstepSurfaces[num3].surfaceTag == tag) { num = num3; break; } } } } if (flag) { RoundManager.PlayRandomClip(shovelAudio, hitSFX, true, 1f, 0, 1000); Object.FindObjectOfType<RoundManager>().PlayAudibleNoise(((Component)this).transform.position, 17f, 0.8f, 0, false, 0); if (!flag2 && num != -1) { shovelAudio.PlayOneShot(StartOfRound.Instance.footstepSurfaces[num].hitSurfaceSFX); WalkieTalkie.TransmitOneShotAudio(shovelAudio, StartOfRound.Instance.footstepSurfaces[num].hitSurfaceSFX, 1f); } base.playerHeldBy.playerBodyAnimator.SetTrigger("shovelHit"); HitBroomServerRpc(num); } } [ServerRpc] public void HitBroomServerRpc(int hitSurfaceID) { //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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_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 val2 = default(ServerRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(458182727u, val2, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val, hitSurfaceID); ((NetworkBehaviour)this).__endSendServerRpc(ref val, 458182727u, val2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; HitBroomClientRpc(hitSurfaceID); } } [ClientRpc] public void HitBroomClientRpc(int hitSurfaceID) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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 val2 = default(ClientRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(2914920080u, val2, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val, hitSurfaceID); ((NetworkBehaviour)this).__endSendClientRpc(ref val, 2914920080u, val2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (!((NetworkBehaviour)this).IsOwner) { RoundManager.PlayRandomClip(shovelAudio, hitSFX, true, 1f, 0, 1000); if (hitSurfaceID != -1) { HitSurfaceWithShovel(hitSurfaceID); } } } private void HitSurfaceWithShovel(int hitSurfaceID) { shovelAudio.PlayOneShot(StartOfRound.Instance.footstepSurfaces[hitSurfaceID].hitSurfaceSFX); WalkieTalkie.TransmitOneShotAudio(shovelAudio, StartOfRound.Instance.footstepSurfaces[hitSurfaceID].hitSurfaceSFX, 1f); } protected override void __initializeVariables() { ((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(350106391u, new RpcReceiveHandler(__rpc_handler_350106391), "ReelUpSFXServerRpc"); ((NetworkBehaviour)this).__registerRpc(1780050249u, new RpcReceiveHandler(__rpc_handler_1780050249), "ReelUpSFXClientRpc"); ((NetworkBehaviour)this).__registerRpc(458182727u, new RpcReceiveHandler(__rpc_handler_458182727), "HitBroomServerRpc"); ((NetworkBehaviour)this).__registerRpc(2914920080u, new RpcReceiveHandler(__rpc_handler_2914920080), "HitBroomClientRpc"); ((GrabbableObject)this).__initializeRpcs(); } private static void __rpc_handler_350106391(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; ((OiikaBroomItem)(object)target).ReelUpSFXServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1780050249(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; ((OiikaBroomItem)(object)target).ReelUpSFXClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_458182727(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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 { int hitSurfaceID = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref hitSurfaceID); target.__rpc_exec_stage = (__RpcExecStage)1; ((OiikaBroomItem)(object)target).HitBroomServerRpc(hitSurfaceID); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2914920080(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int hitSurfaceID = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref hitSurfaceID); target.__rpc_exec_stage = (__RpcExecStage)1; ((OiikaBroomItem)(object)target).HitBroomClientRpc(hitSurfaceID); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "OiikaBroomItem"; } } [BepInPlugin("WaterGun.PyrkonScripts", "Pyrkon", "1.0.0")] public class Plugin : BaseUnityPlugin { [HarmonyPatch(typeof(GameNetworkManager))] internal class GameNetworkManager_Patch { [HarmonyPatch("Start")] [HarmonyPostfix] public static void Postfix(GameNetworkManager __instance) { if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)pyrkonNetworkObject)) { NetworkManager.Singleton.AddNetworkPrefab(pyrkonNetworkObject); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)maxplaierCup?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(maxplaierCup?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)maxplaierCap?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(maxplaierCap?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)maxplaierPillow?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(maxplaierPillow?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)chuckenPillow?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(chuckenPillow?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)rockus?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(rockus?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)companyDeposit)) { NetworkManager.Singleton.AddNetworkPrefab(companyDeposit); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)haalandPlushieObj)) { NetworkManager.Singleton.AddNetworkPrefab(haalandPlushieObj); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)trash?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(trash?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)oiikaBroom?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(oiikaBroom?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)admirozdroj?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(admirozdroj?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)starbucksCup?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(starbucksCup?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)leszekBanana?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(leszekBanana?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)jayPhone?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(jayPhone?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)jayJam?.spawnPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(jayJam?.spawnPrefab); } if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Prefabs.Any((NetworkPrefab p) => (Object)(object)p.Prefab == (Object)(object)tsurayaCat?.enemyPrefab)) { NetworkManager.Singleton.AddNetworkPrefab(tsurayaCat?.enemyPrefab); } } [HarmonyPatch("SaveGameValues")] [HarmonyPostfix] public static void SaveGameValues() { if ((Object)(object)PyrkonScripts.DepositMachine.Instance != (Object)null) { ES3.Save<int>("DepositMachineCapacity", PyrkonScripts.DepositMachine.Instance.capacity.Value, GameNetworkManager.Instance.currentSaveFileName); } } } [HarmonyPatch(typeof(MenuManager))] internal class MenuManager_Patch { private static IEnumerator waitForMenuAndSetup(Transform header, TMP_Text text, GameObject loading) { while ((Object)(object)header == (Object)null || (Object)(object)text == (Object)null) { yield return null; } ((Component)header).GetComponent<Image>().sprite = headerLogo; text.text += "<color=#BF40BF> (Pyrkon 1.0.0)</color>"; text.margin -= new Vector4(0f, 0f, 500f, 0f); Transform imageHeader = loading.transform.Find("Image"); if ((Object)(object)imageHeader != (Object)null) { ((Component)imageHeader).GetComponent<Image>().sprite = headerLogo; } } [HarmonyPatch("Start")] [HarmonyPrefix] public static void Prefix(MenuManager __instance) { __instance.menuMusic = menuMusic; } [HarmonyPatch("Start")] [HarmonyPostfix] public static void Postfix(MenuManager __instance) { Transform header = __instance.menuButtons.transform.Find("HeaderImage"); if ((Object)(object)__instance.loadingScreen != (Object)null) { ((MonoBehaviour)__instance).StartCoroutine(waitForMenuAndSetup(header, (TMP_Text)(object)__instance.versionNumberText, __instance.loadingScreen)); } } } [HarmonyPatch(typeof(RoundManager), "SpawnScrapInLevel")] internal static class SpawnScrapInLevel_Patch { private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator) { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected O, but got Unknown //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown List<CodeInstruction> list = new List<CodeInstruction>(instructions); FieldInfo fieldInfo = AccessTools.Field(typeof(SelectableLevel), "spawnableScrap"); MethodInfo methodInfo = AccessTools.Method(typeof(SpawnScrapInLevel_Patch), "FilterSingleItemDay", (Type[])null, (Type[])null); for (int i = 1; i < list.Count; i++) { if (list[i].opcode == OpCodes.Stloc_2 && list[i - 1].opcode == OpCodes.Callvirt) { list.InsertRange(i + 1, (IEnumerable<CodeInstruction>)(object)new CodeInstruction[4] { new CodeInstruction(OpCodes.Ldarg_0, (object)null), new CodeInstruction(OpCodes.Ldloc_2, (object)null), new CodeInstruction(OpCodes.Call, (object)methodInfo), new CodeInstruction(OpCodes.Stloc_2, (object)null) }); } } return list; } private static int FilterSingleItemDay(RoundManager roundManager, int index) { index = roundManager.AnomalyRandom.Next(0, roundManager.currentLevel.spawnableScrap.Count); Item spawnableItem = roundManager.currentLevel.spawnableScrap[index].spawnableItem; if ((Object)(object)spawnableItem.spawnPrefab.GetComponent<DepositableItem>() != (Object)null) { Debug.Log((object)("[PyrkonMod] Prevented DepositableItem '" + spawnableItem.itemName + "' from becoming the single-item day.")); return 0; } return index; } } [HarmonyPatch(typeof(DepositItemsDesk))] internal class DepositItemsDesk_Patch { [HarmonyPatch("PlaceItemOnCounter")] [HarmonyPrefix] public static bool PlaceItemOnCounter_Prefix(ref PlayerControllerB playerWhoTriggered) { if (playerWhoTriggered.currentlyHeldObjectServer is DepositableItem) { HUDManager.Instance.DisplayTip("Sell Counter", "This item is returnable, please upgrade your company ship to include Company Deposit!", true, false, "LC_Tip1"); return false; } return true; } } [HarmonyPatch(typeof(Terminal))] internal class Terminal_Patch { [HarmonyPatch("Awake")] [HarmonyPrefix] public static void Awake(Terminal __instance) { //IL_06bf: Unknown result type (might be due to invalid IL or missing references) //IL_06c6: Expected O, but got Unknown //IL_0a48: Unknown result type (might be due to invalid IL or missing references) //IL_0a4e: Expected O, but got Unknown //IL_0ac6: Unknown result type (might be due to invalid IL or missing references) //IL_0acc: Expected O, but got Unknown //IL_0b4a: Unknown result type (might be due to invalid IL or missing references) //IL_0b54: Expected O, but got Unknown //IL_0fe9: Unknown result type (might be due to invalid IL or missing references) //IL_0fef: Expected O, but got Unknown //IL_0c4b: Unknown result type (might be due to invalid IL or missing references) //IL_0c55: Expected O, but got Unknown //IL_1067: Unknown result type (might be due to invalid IL or missing references) //IL_106d: Expected O, but got Unknown //IL_10f7: Unknown result type (might be due to invalid IL or missing references) //IL_1101: Expected O, but got Unknown //IL_11f8: Unknown result type (might be due to invalid IL or missing references) //IL_1202: Expected O, but got Unknown if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == maxplaierCup?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(maxplaierCup); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == maxplaierCap?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(maxplaierCap); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == maxplaierPillow?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(maxplaierPillow); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == chuckenPillow?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(chuckenPillow); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == rockus?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(rockus); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == oiikaBroom?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(oiikaBroom); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == trash?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(trash); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == admirozdroj?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(admirozdroj); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == starbucksCup?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(starbucksCup); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == leszekBanana?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(leszekBanana); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == jayPhone?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(jayPhone); } if (!StartOfRound.Instance.allItemsList.itemsList.Any((Item val11) => val11.itemName == jayJam?.itemName)) { StartOfRound.Instance.allItemsList.itemsList.Add(jayJam); } TerminalKeyword val = __instance.terminalNodes.allKeywords.First((TerminalKeyword k) => k.word == "info"); if (!__instance.enemyFiles.Any((TerminalNode f) => f.creatureName == Plugin.tsurayaCat?.enemyName)) { TerminalNode val2 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val2).name = Plugin.tsurayaCat?.enemyName.Replace(" ", "-") + "File"; val2.clearPreviousText = true; val2.creatureName = Plugin.tsurayaCat?.enemyName; val2.creatureFileID = __instance.enemyFiles.Count; val2.maxCharactersToType = 35; val2.displayText = "Tsuraya cats often become enormous sizes when reached please be careful"; val2.displayVideo = tsurayaCatVid; val2.playSyncedClip = 2; val2.loadImageSlowly = true; __instance.enemyFiles.Add(val2); EnemyType? tsurayaCat = Plugin.tsurayaCat; ScanNodeProperties val3 = ((tsurayaCat != null) ? tsurayaCat.enemyPrefab.GetComponentInChildren<ScanNodeProperties>() : null); if ((Object)(object)val3 != (Object)null) { val3.creatureScanID = val2.creatureFileID; } } if (!__instance.terminalNodes.allKeywords.Any((TerminalKeyword k) => k.word == Plugin.tsurayaCat?.enemyName.ToLowerInvariant().Replace(" ", "-"))) { TerminalKeyword val4 = ScriptableObject.CreateInstance<TerminalKeyword>(); ((Object)val4).name = Plugin.tsurayaCat?.enemyName.Replace(" ", "-"); val4.word = Plugin.tsurayaCat?.enemyName.ToLowerInvariant().Replace(" ", "-"); val4.defaultVerb = val; List<TerminalKeyword> list = __instance.terminalNodes.allKeywords.ToList(); list.Add(val4); __instance.terminalNodes.allKeywords = list.ToArray(); } if (!val.compatibleNouns.Any((CompatibleNoun n) => n.noun.word == Plugin.tsurayaCat?.enemyName.ToLowerInvariant().Replace(" ", "-"))) { CompatibleNoun item = new CompatibleNoun(__instance.terminalNodes.allKeywords.First((TerminalKeyword k) => k.word == Plugin.tsurayaCat?.enemyName.ToLowerInvariant().Replace(" ", "-")), __instance.enemyFiles.First((TerminalNode n) => n.creatureName == Plugin.tsurayaCat?.enemyName)); List<CompatibleNoun> list2 = val.compatibleNouns.ToList(); list2.Add(item); val.compatibleNouns = list2.ToArray(); } DepositMachine.prefabObject = companyDeposit; DepositMachine.unlockableName = "Deposit machine"; DepositMachine.unlockableType = 1; DepositMachine.IsPlaceable = true; DepositMachine.alwaysInStock = true; if (!StartOfRound.Instance.unlockablesList.unlockables.Any((UnlockableItem unlockable) => unlockable.unlockableName == DepositMachine.unlockableName) && (Object)(object)DepositMachine.prefabObject != (Object)null) { PlaceableShipObject componentInChildren = DepositMachine.prefabObject.GetComponentInChildren<PlaceableShipObject>(); componentInChildren.unlockableID = StartOfRound.Instance.unlockablesList.unlockables.Count; componentInChildren.parentObject.unlockableID = componentInChildren.unlockableID; StartOfRound.Instance.unlockablesList.unlockables.Add(DepositMachine); TerminalKeyword keyword = ScriptableObject.CreateInstance<TerminalKeyword>(); ((Object)keyword).name = "DepositMachine"; keyword.defaultVerb = __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy"); keyword.word = DepositMachine.unlockableName.ToLowerInvariant().Replace(" ", "-"); if (__instance.terminalNodes.allKeywords.Any((TerminalKeyword key) => key.word == keyword.word)) { return; } int shipUnlockableID = StartOfRound.Instance.unlockablesList.unlockables.FindIndex((UnlockableItem unlockable) => unlockable.unlockableName == DepositMachine.unlockableName); TerminalNode val5 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val5).name = DepositMachine.unlockableName.Replace(" ", "-") + "BuyNode2"; val5.displayText = "Ordered [variableAmount] " + DepositMachine.unlockableName + ". Your new balance is [playerCredits].\n\nOur contractors enjoy fast, free shipping while on the job! Any purchased items will arrive hourly at your approximate location.\r\n\r\n"; val5.clearPreviousText = true; val5.maxCharactersToType = 15; val5.buyItemIndex = -1; val5.shipUnlockableID = shipUnlockableID; val5.buyUnlockable = true; val5.creatureName = DepositMachine.unlockableName; val5.isConfirmationNode = false; val5.itemCost = 300; val5.playSyncedClip = 0; TerminalNode val6 = ScriptableObject.CreateInstance<TerminalNode>(); val6 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val6).name = DepositMachine.unlockableName.Replace(" ", "-") + "BuyNode1"; val6.displayText = "You have requested to order " + DepositMachine.unlockableName + ". Amount: [variableAmount].\nTotal cost of items: [totalCost].\n\nPlease CONFIRM or DENY.\r\n\r\n"; val6.clearPreviousText = true; val6.maxCharactersToType = 35; val6.buyItemIndex = -1; val6.shipUnlockableID = shipUnlockableID; val6.creatureName = DepositMachine.unlockableName; val6.isConfirmationNode = true; val6.overrideOptions = true; val6.itemCost = 300; val6.terminalOptions = (CompatibleNoun[])(object)new CompatibleNoun[2] { new CompatibleNoun(__instance.terminalNodes.allKeywords.First((TerminalKeyword val11) => val11.word == "confirm"), val5), new CompatibleNoun(__instance.terminalNodes.allKeywords.First((TerminalKeyword val11) => val11.word == "deny"), __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy").compatibleNouns[0].result.terminalOptions[1].result) }; List<TerminalKeyword> list3 = __instance.terminalNodes.allKeywords.ToList(); list3.Add(keyword); __instance.terminalNodes.allKeywords = list3.ToArray(); List<CompatibleNoun> list4 = __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy").compatibleNouns.ToList(); list4.Add(new CompatibleNoun(keyword, val6)); __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy").compatibleNouns = list4.ToArray(); TerminalNode val7 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val7).name = DepositMachine.unlockableName.Replace(" ", "-") + "InfoNode"; val7.displayText = "No information given about " + DepositMachine.unlockableName + "\n\n"; val7.clearPreviousText = true; val7.maxCharactersToType = 25; __instance.terminalNodes.allKeywords = list3.ToArray(); List<CompatibleNoun> list5 = __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "info").compatibleNouns.ToList(); list5.Add(new CompatibleNoun(keyword, val7)); __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "info").compatibleNouns = list5.ToArray(); } HaalandPlushie.prefabObject = haalandPlushieObj; HaalandPlushie.unlockableName = "Haaland plushie"; HaalandPlushie.unlockableType = 1; HaalandPlushie.IsPlaceable = true; HaalandPlushie.alwaysInStock = false; if (StartOfRound.Instance.unlockablesList.unlockables.Any((UnlockableItem unlockable) => unlockable.unlockableName == HaalandPlushie.unlockableName) || !((Object)(object)HaalandPlushie.prefabObject != (Object)null)) { return; } PlaceableShipObject componentInChildren2 = HaalandPlushie.prefabObject.GetComponentInChildren<PlaceableShipObject>(); componentInChildren2.unlockableID = StartOfRound.Instance.unlockablesList.unlockables.Count; componentInChildren2.parentObject.unlockableID = componentInChildren2.unlockableID; StartOfRound.Instance.unlockablesList.unlockables.Add(HaalandPlushie); TerminalKeyword keyword2 = ScriptableObject.CreateInstance<TerminalKeyword>(); ((Object)keyword2).name = "HaalandPlushie"; keyword2.defaultVerb = __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy"); keyword2.word = HaalandPlushie.unlockableName.ToLowerInvariant().Replace(" ", "-"); if (!__instance.terminalNodes.allKeywords.Any((TerminalKeyword key) => key.word == keyword2.word)) { int shipUnlockableID2 = StartOfRound.Instance.unlockablesList.unlockables.FindIndex((UnlockableItem unlockable) => unlockable.unlockableName == HaalandPlushie.unlockableName); TerminalNode val8 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val8).name = HaalandPlushie.unlockableName.Replace(" ", "-") + "BuyNode2"; val8.displayText = "Ordered [variableAmount] " + HaalandPlushie.unlockableName + ". Your new balance is [playerCredits].\n\nOur contractors enjoy fast, free shipping while on the job! Any purchased items will arrive hourly at your approximate location.\r\n\r\n"; val8.clearPreviousText = true; val8.maxCharactersToType = 15; val8.buyItemIndex = -1; val8.shipUnlockableID = shipUnlockableID2; val8.buyUnlockable = true; val8.creatureName = HaalandPlushie.unlockableName; val8.isConfirmationNode = false; val8.itemCost = 120; val8.playSyncedClip = 0; TerminalNode val9 = ScriptableObject.CreateInstance<TerminalNode>(); val9 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val9).name = HaalandPlushie.unlockableName.Replace(" ", "-") + "BuyNode1"; val9.displayText = "You have requested to order " + HaalandPlushie.unlockableName + ". Amount: [variableAmount].\nTotal cost of items: [totalCost].\n\nPlease CONFIRM or DENY.\r\n\r\n"; val9.clearPreviousText = true; val9.maxCharactersToType = 35; val9.buyItemIndex = -1; val9.shipUnlockableID = shipUnlockableID2; val9.creatureName = HaalandPlushie.unlockableName; val9.isConfirmationNode = true; val9.overrideOptions = true; val9.itemCost = 120; val9.terminalOptions = (CompatibleNoun[])(object)new CompatibleNoun[2] { new CompatibleNoun(__instance.terminalNodes.allKeywords.First((TerminalKeyword val11) => val11.word == "confirm"), val8), new CompatibleNoun(__instance.terminalNodes.allKeywords.First((TerminalKeyword val11) => val11.word == "deny"), __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy").compatibleNouns[0].result.terminalOptions[1].result) }; HaalandPlushie.shopSelectionNode = val9; List<TerminalKeyword> list6 = __instance.terminalNodes.allKeywords.ToList(); list6.Add(keyword2); __instance.terminalNodes.allKeywords = list6.ToArray(); List<CompatibleNoun> list7 = __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy").compatibleNouns.ToList(); list7.Add(new CompatibleNoun(keyword2, val9)); __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "buy").compatibleNouns = list7.ToArray(); TerminalNode val10 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val10).name = HaalandPlushie.unlockableName.Replace(" ", "-") + "InfoNode"; val10.displayText = "No information given about " + HaalandPlushie.unlockableName + "\n\n"; val10.clearPreviousText = true; val10.maxCharactersToType = 25; __instance.terminalNodes.allKeywords = list6.ToArray(); List<CompatibleNoun> list8 = __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "info").compatibleNouns.ToList(); list8.Add(new CompatibleNoun(keyword2, val10)); __instance.terminalNodes.allKeywords.First((TerminalKeyword key) => key.word == "info").compatibleNouns = list8.ToArray(); } } [HarmonyPatch("TextPostProcess")] [HarmonyPrefix] public static void TextPostProcess(ref TerminalNode node, ref string modifiedDisplayText, Terminal __instance) { if (modifiedDisplayText.Contains("[buyableItemsList]") && modifiedDisplayText.Contains("[unlockablesSelectionList]")) { int num = modifiedDisplayText.IndexOf(":"); string unlockableName = DepositMachine.unlockableName; int num2 = 300; string value = $"\n* {unlockableName} // Price: ${num2}"; modifiedDisplayText = modifiedDisplayText.Insert(num + 1, value); } } } [HarmonyPatch(typeof(StartOfRound))] internal class StartOfRound_Patch { [HarmonyPatch("Start")] [HarmonyPostfix] public static void Postfix(StartOfRound __instance) { //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Expected O, but got Unknown //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Expected O, but got Unknown //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Expected O, but got Unknown //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Expected O, but got Unknown //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Expected O, but got Unknown //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Expected O, but got Unknown //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_030a: Expected O, but got Unknown //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Expected O, but got Unknown //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Expected O, but got Unknown //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Expected O, but got Unknown if (NetworkManager.Singleton.IsServer) { GameObject val = Object.Instantiate<GameObject>(pyrkonNetworkObject); if (val != null) { val.GetComponent<NetworkObject>().Spawn(false); } } SelectableLevel val2 = __instance.levels.First((SelectableLevel l) => l.PlanetName == "52 Pyrkon"); if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == maxplaierCup?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(maxplaierCup, 30)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == maxplaierCap?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(maxplaierCap, 25)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == maxplaierPillow?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(maxplaierPillow, 55)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == chuckenPillow?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(chuckenPillow, 25)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == rockus?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(rockus, 50)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == admirozdroj?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(admirozdroj, 45)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == oiikaBroom?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(oiikaBroom, 20)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == starbucksCup?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(starbucksCup, 25)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == leszekBanana?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(leszekBanana, 10)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == jayPhone?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(jayPhone, 45)); } if (!val2.spawnableScrap.Any((SpawnableItemWithRarity s) => s.spawnableItem.itemName == jayJam?.itemName)) { val2.spawnableScrap.Add(new SpawnableItemWithRarity(jayJam, 50)); } if (!val2.Enemies.Any((SpawnableEnemyWithRarity e) => e.enemyType.enemyName == tsurayaCat?.enemyName)) { val2.Enemies.Add(new SpawnableEnemyWithRarity(tsurayaCat, 200)); } if ((Object)(object)val2.specialEnemyRarity.overrideEnemy != (Object)(object)tsurayaCat) { val2.specialEnemyRarity.overrideEnemy = tsurayaCat; } } } [HarmonyPatch] internal class MaskedPlayerEnemy_Transpiler { public static MethodBase TargetMethod() { Type type = AccessTools.Inner(typeof(MaskedPlayerEnemy), "<killAnimation>d__119"); return AccessTools.Method(type, "MoveNext", (Type[])null, (Type[])null); } public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator) { //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Expected O, but got Unknown List<CodeInstruction> list = new List<CodeInstruction>(instructions); MethodInfo methodInfo = AccessTools.Method(typeof(MaskedPlayerEnemy_Transpiler), "GetKillAudio", (Type[])null, (Type[])null); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldloc_1 && list[i + 1].opcode == OpCodes.Ldfld && list[i + 1].operand is FieldInfo fieldInfo && fieldInfo.FieldType == typeof(EnemyType) && list[i + 3].opcode == OpCodes.Ldc_I4_0) { list[i + 4] = new CodeInstruction(OpCodes.Call, (object)methodInfo); } if (list[i].opcode == OpCodes.Ldloc_1 && list[i + 1].opcode == OpCodes.Ldfld && list[i + 1].operand is FieldInfo fieldInfo2 && fieldInfo2.FieldType == typeof(EnemyType) && list[i + 3].opcode == OpCodes.Ldc_I4_2) { list[i + 4] = new CodeInstruction(OpCodes.Call, (object)methodInfo); } } return list; } private static AudioClip GetKillAudio(AudioClip[] array, int index) { if ((Object)(object)PyrkonMaskAudio != (Object)null && StartOfRound.Instance.currentLevel.PlanetName == "52 Pyrkon") { return PyrkonMaskAudio; } return array[index]; } } [HarmonyPatch(typeof(ButlerEnemyAI))] internal class ButlerEnemy_Patch { [HarmonyPostfix] [HarmonyPatch("Start")] public static void Postfix(ButlerEnemyAI __instance) { if (StartOfRound.Instance.currentLevel.PlanetName == "52 Pyrkon") { __instance.knifePrefab = leszekBanana?.spawnPrefab; } } } [HarmonyPatch(typeof(MaskedPlayerEnemy))] internal class MaskedPlayerEnemy_Patch { [HarmonyPatch("Start")] [HarmonyPostfix] public static void Postfix(MaskedPlayerEnemy __instance) { if (!(StartOfRound.Instance.currentLevel.PlanetName == "52 Pyrkon") || !((Object)(object)PyrkonMaskSuit != (Object)null) || !((Object)(object)PyrkonMaskMesh != (Object)null) || !((Object)(object)PyrkonMaskMat != (Object)null) || !((Object)(object)GzdaczeSuit != (Object)null)) { return; } Debug.Log((object)"Passed first if"); if (TimeOfDay.Instance.currentDayTime < 900f) { Debug.Log((object)"Mask is daytime"); ((Renderer)__instance.rendererLOD0).SetMaterials(new List<Material> { PyrkonMaskSuit }); ((Renderer)__instance.rendererLOD1).SetMaterials(new List<Material> { PyrkonMaskSuit }); ((Renderer)__instance.rendererLOD2).SetMaterials(new List<Material> { PyrkonMaskSuit }); MeshFilter component = ((Component)__instance.maskTypes[0].transform.Find("Mesh")).GetComponent<MeshFilter>(); MeshFilter component2 = ((Component)__instance.maskTypes[0].transform.Find("ComedyMaskLOD1")).GetComponent<MeshFilter>(); component.mesh = PyrkonMaskMesh; ((Renderer)((Component)component).GetComponent<MeshRenderer>()).SetMaterials(new List<Material> { PyrkonMaskMat }); component2.mesh = PyrkonMaskMesh; ((Renderer)((Component)component2).GetComponent<MeshRenderer>()).SetMaterials(new List<Material> { PyrkonMaskMat }); GameObject gameObject = ((Component)((Component)__instance).transform.Find("ScavengerModel/metarig/spine/spine.001/spine.002/spine.003/LevelSticker")).gameObject; GameObject gameObject2 = ((Component)((Component)__instance).transform.Find("ScavengerModel/metarig/spine/spine.001/spine.002/spine.003/BetaBadge")).gameObject; gameObject.SetActive(false); gameObject2.SetActive(false); if (!((Object)(object)PyrkonMaskRandAudio1 == (Object)null) && !((Object)(object)PyrkonMaskRandAudio2 == (Object)null) && !((Object)(object)PyrkonMaskRandAudio3 == (Object)null) && !((Object)(object)PyrkonMaskRandAudio4 == (Object)null) && !((Object)(object)PyrkonMaskRandAudio5 == (Object)null)) { RandomPeriodicAudioPlayer component3 = __instance.maskTypes[0].GetComponent<RandomPeriodicAudioPlayer>(); AudioClip[] randomClips = (AudioClip[])(object)new AudioClip[5] { PyrkonMaskRandAudio1, PyrkonMaskRandAudio2, PyrkonMaskRandAudio3, PyrkonMaskRandAudio4, PyrkonMaskRandAudio5 }; component3.randomClips = randomClips; component3.audioMaxInterval = 12f; component3.audioChancePercent = 80f; } } else { Debug.Log((object)"Mask is nightTime"); ((Renderer)__instance.rendererLOD0).SetMaterials(new List<Material> { GzdaczeSuit }); ((Renderer)__instance.rendererLOD1).SetMaterials(new List<Material> { GzdaczeSuit }); ((Renderer)__instance.rendererLOD2).SetMaterials(new List<Material> { GzdaczeSuit }); Transform val = __instance.maskTypes[0].transform.Find("Mesh"); Transform val2 = __instance.maskTypes[0].transform.Find("ComedyMaskLOD1"); ((Component)val).gameObject.SetActive(false); ((Component)val2).gameObject.SetActive(false); GameObject gameObject3 = ((Component)((Component)__instance).transform.Find("ScavengerModel/metarig/spine/spine.001/spine.002/spine.003/LevelSticker")).gameObject; GameObject gameObject4 = ((Component)((Component)__instance).transform.Find("ScavengerModel/metarig/spine/spine.001/spine.002/spine.003/BetaBadge")).gameObject; gameObject3.SetActive(false); gameObject4.SetActive(false); if (!((Object)(object)GzdaczMaskRandAudio1 == (Object)null) && !((Object)(object)GzdaczMaskRandAudio2 == (Object)null) && !((Object)(object)GzdaczMaskRandAudio3 == (Object)null)) { RandomPeriodicAudioPlayer component4 = __instance.maskTypes[0].GetComponent<RandomPeriodicAudioPlayer>(); AudioClip[] randomClips2 = (AudioClip[])(object)new AudioClip[3] { GzdaczMaskRandAudio1, GzdaczMaskRandAudio2, GzdaczMaskRandAudio3 }; component4.randomClips = randomClips2; component4.audioMaxInterval = 12f; component4.audioChancePercent = 80f; } } } } [HarmonyPatch(typeof(GrabbableObject))] internal class GrabbableObject_Patch { [HarmonyPatch("SetScrapValue")] [HarmonyPrefix] public static bool Prefix(GrabbableObject __instance) { if (__instance is DepositableItem) { return false; } return true; } } [HarmonyPatch(typeof(TVScript))] internal class TVScript_Patch { [HarmonyPatch("OnEnable")] [HarmonyPostfix] public static void Postfix(TVScript __instance) { if (!__instance.tvClips.Contains(rockusAdVid) && !__instance.tvAudioClips.Contains(rockusAdAudio)) { List<VideoClip> list = __instance.tvClips.ToList(); list.Add(rockusAdVid); __instance.tvClips = list.ToArray(); List<AudioClip> list2 = __instance.tvAudioClips.ToList(); list2.Add(rockusAdAudio); __instance.tvAudioClips = list2.ToArray(); } } } private const string GUID = "WaterGun.PyrkonScripts"; private const string NAME = "Pyrkon"; private const string VER = "1.0.0"; public static Sprite? headerLogo; public static Item? maxplaierCup; public static Item? maxplaierCap; public static Item? maxplaierPillow; public static Item? chuckenPillow; public static Item? rockus; public static Item? trash; public static Item? oiikaBroom; public static Item? admirozdroj; public static Item? starbucksCup; public static Item? leszekBanana; public static Item? jayPhone; public static Item? jayJam; public static GameObject? companyDeposit; public static UnlockableItem DepositMachine = new UnlockableItem(); public static GameObject? haalandPlushieObj; public static UnlockableItem HaalandPlushie = new UnlockableItem(); public static Material? PyrkonMaskSuit; public static Mesh? PyrkonMaskMesh; public static Material? PyrkonMaskMat; public static AudioClip? PyrkonMaskAudio; public static AudioClip? PyrkonMaskRandAudio1; public static AudioClip? PyrkonMaskRandAudio2; public static AudioClip? PyrkonMaskRandAudio3; public static AudioClip? PyrkonMaskRandAudio4; public static AudioClip? PyrkonMaskRandAudio5; public static AudioClip? GzdaczMaskRandAudio1; public static AudioClip? GzdaczMaskRandAudio2; public static AudioClip? GzdaczMaskRandAudio3; public static Material? GzdaczeSuit; public static VideoClip? rockusAdVid; public static AudioClip? rockusAdAudio; public static EnemyType? tsurayaCat; public static VideoClip? tsurayaCatVid; public static GameObject? treeParticle1; public static GameObject? treeParticle2; public static GameObject? treeParticle3; public static GameObject? pyrkonNetworkObject; public static AudioClip? menuMusic; public static List<GameObject> treeBreaks = new List<GameObject>(); private void Awake() { //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Expected O, but got Unknown 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); } } } Harmony val = new Harmony("WaterGun.PyrkonScripts"); val.PatchAll(); string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "pyrkonassets"); AssetBundle val2 = AssetBundle.LoadFromFile(text); pyrkonNetworkObject = val2.LoadAsset<GameObject>("Assets/LethalCompany/Mods/Moons/Pyrkon/NetworkPyrkon.prefab"); pyrkonNetworkObject.AddComponent<PyrkonNetwork>(); headerLogo = val2.LoadAsset<Sprite>("Assets/LethalCompany/Mods/Moons/Pyrkon/MainMenu/pyrkontitle.png"); menuMusic = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MainMenu/PyrkonMainTheme.ogg"); maxplaierCup = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/MaxCup/MaxplaierCup.asset"); maxplaierCap = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/MaxCap/MaxplaierCap.asset"); maxplaierPillow = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/MaxPillow/MaxplaierPillow.asset"); chuckenPillow = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/ChuckenPillow/ChuckenPillow.asset"); oiikaBroom = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/OiikaBroom/OiikaBroom.asset"); starbucksCup = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/StarbucksCup/StarbucksCup.asset"); leszekBanana = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/LeszekBanana/LeszekBanana.asset"); jayPhone = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/JayPhone/JayPhone.asset"); jayJam = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/JayJam/JayJam.asset"); rockus = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/Rockus/Rockus.asset"); admirozdroj = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/Admirozdroj/AdmiroZdroj.asset"); companyDeposit = val2.LoadAsset<GameObject>("Assets/LethalCompany/Mods/Moons/Pyrkon/Unlockables/CompanyDeposit/CompanyDeposit.prefab"); trash = val2.LoadAsset<Item>("Assets/LethalCompany/Mods/Moons/Pyrkon/Items/Trash/Trash.asset"); haalandPlushieObj = val2.LoadAsset<GameObject>("Assets/LethalCompany/Mods/Moons/Pyrkon/Unlockables/Haaland/HaalandContainer.prefab"); PyrkonMaskSuit = val2.LoadAsset<Material>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/PyrkonMaskSkin.mat"); PyrkonMaskMesh = val2.LoadAsset<Mesh>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/PyrkonMaskMesh.asset"); PyrkonMaskMat = val2.LoadAsset<Material>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/PyrkonMaskMat.mat"); PyrkonMaskAudio = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/MaskSound.ogg"); PyrkonMaskRandAudio1 = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/RandomMaskSound1.ogg"); PyrkonMaskRandAudio2 = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/RandomMaskSound2.ogg"); PyrkonMaskRandAudio3 = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/RandomMaskSound3.ogg"); PyrkonMaskRandAudio4 = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/RandomMaskSound4.ogg"); PyrkonMaskRandAudio5 = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/RandomMaskSound5.ogg"); GzdaczMaskRandAudio1 = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/GzdaczSound1.ogg"); GzdaczMaskRandAudio2 = val2.LoadAsset<AudioClip>("Assets/LethalCompany/Mods/Moons/Pyrkon/MaskedSkin/GzdaczSound2.ogg");