Decompiled source of RiskOfRainItems v0.2.7
plugins/RiskOfRainItems.dll
Decompiled 10 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using LethalLib.Modules; using Microsoft.CodeAnalysis; using MonoMod.RuntimeDetour; using On; using RiskOfRainItems.MonoBehaviours; using Unity.Netcode; using Unity.Netcode.Components; using UnityEngine; [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("RiskOfRainItems")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("RiskOfRainItems")] [assembly: AssemblyTitle("RiskOfRainItems")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] internal class <Module> { static <Module>() { NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<Vector3>(); NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<Vector3>(); NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<bool>(); NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<bool>(); } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace RiskOfRainItems { internal class Config { public static ConfigEntry<int> CommonItemSpawnWeight; public static ConfigEntry<int> UncommonItemSpawnWeight; public static ConfigEntry<int> LegendaryItemSpawnWeight; public static ConfigEntry<bool> UkeleleEnabled; public static ConfigFile VolumeConfig; public static ConfigEntry<string> version; public static void Load() { //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Expected O, but got Unknown CommonItemSpawnWeight = Plugin.config.Bind<int>("Scrap", "CommonLoot", 15, "higher number = more common"); UncommonItemSpawnWeight = Plugin.config.Bind<int>("Scrap", "UncommonLoot", 9, "higher number = more common"); LegendaryItemSpawnWeight = Plugin.config.Bind<int>("Scrap", "LegendaryLoot", 3, "higher number = more common"); version = Plugin.config.Bind<string>("Misc", "Version", "1.0.0", "Mod Version"); VolumeConfig = new ConfigFile(Paths.ConfigPath + "\\RiskOfRainItems.AudioVolume.cfg", true); } } public class Content { public class CustomItem { public string name = ""; public string itemPath = ""; public string infoPath = ""; public Action<Item> itemAction = delegate { }; public bool enabled = true; public CustomItem(string name, string itemPath, string infoPath, Action<Item> action = null) { this.name = name; this.itemPath = itemPath; this.infoPath = infoPath; if (action != null) { itemAction = action; } } public static CustomItem Add(string name, string itemPath, string infoPath = null, Action<Item> action = null) { return new CustomItem(name, itemPath, infoPath, action); } } public class CustomScrap : CustomItem { public LevelTypes levelType = (LevelTypes)(-1); public int rarity = 0; public CustomScrap(string name, string itemPath, LevelTypes levelType, int rarity, Action<Item> action = null) : base(name, itemPath, null, action) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) this.levelType = levelType; this.rarity = rarity; } public static CustomScrap Add(string name, string itemPath, LevelTypes levelTypes, int rarity, Action<Item> action = null) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) return new CustomScrap(name, itemPath, levelTypes, rarity, action); } } public static AssetBundle MainAssets; public static Dictionary<string, GameObject> Prefabs = new Dictionary<string, GameObject>(); public static List<CustomItem> customItems; public static GameObject ConfigManagerPrefab; public static void TryLoadAssets() { if ((Object)(object)MainAssets == (Object)null) { MainAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "riskofrainitems")); Plugin.logger.LogInfo((object)"we got them Assets"); } } public static void Load() { //IL_04cc: Unknown result type (might be due to invalid IL or missing references) TryLoadAssets(); customItems = new List<CustomItem> { CustomScrap.Add("SoldierSyringe", "Assets/CustomAssets/ItemProperties/SoldierSyringe.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("TougherTimes", "Assets/CustomAssets/ItemProperties/TougherTimes.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("MonsterToothNecklace", "Assets/CustomAssets/ItemProperties/MonsterToothNecklace.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("LensMakersGlasses", "Assets/CustomAssets/ItemProperties/LensMakersGlasses.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("PaulsGoatHoof", "Assets/CustomAssets/ItemProperties/PaulsGoatHoof.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("BustlingFungus", "Assets/CustomAssets/ItemProperties/BustlingFungus.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("Crowbar", "Assets/CustomAssets/ItemProperties/Crowbar.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("TriTipDagger", "Assets/CustomAssets/ItemProperties/TriTipDagger.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("StickyBomb", "Assets/CustomAssets/ItemProperties/StickyBomb.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("Warbanner", "Assets/CustomAssets/ItemProperties/Warbanner.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("CautiousSlug", "Assets/CustomAssets/ItemProperties/CautiousSlug.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("PersonalShieldGenerator", "Assets/CustomAssets/ItemProperties/PersonalShieldGenerator.asset", (LevelTypes)(-1), Config.CommonItemSpawnWeight.Value), CustomScrap.Add("Ukulele", "Assets/CustomAssets/ItemProperties/Ukulele.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("WillOTheWisp", "Assets/CustomAssets/ItemProperties/WilloWisp.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("HopooFeather", "Assets/CustomAssets/ItemProperties/HopooFeather.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("LeechingSeed", "Assets/CustomAssets/ItemProperties/LeechingSeed.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("PredInstincts", "Assets/CustomAssets/ItemProperties/PredInstincts.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("RedWhip", "Assets/CustomAssets/ItemProperties/RedWhip.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("HarvestersScythe", "Assets/CustomAssets/ItemProperties/HarvestersScythe.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("FuelCell", "Assets/CustomAssets/ItemProperties/FuelCell.asset", (LevelTypes)(-1), Config.UncommonItemSpawnWeight.Value), CustomScrap.Add("BrilliantBehemoth", "Assets/CustomAssets/ItemProperties/BrilliantBehemoth.asset", (LevelTypes)(-1), Config.LegendaryItemSpawnWeight.Value), CustomScrap.Add("FrostRelic", "Assets/CustomAssets/ItemProperties/FrostRelic.asset", (LevelTypes)(-1), Config.LegendaryItemSpawnWeight.Value), CustomScrap.Add("HappiestMask", "Assets/CustomAssets/ItemProperties/HappiestMask.asset", (LevelTypes)(-1), Config.LegendaryItemSpawnWeight.Value), CustomScrap.Add("CeremonialDagger", "Assets/CustomAssets/ItemProperties/CeremonialDagger.asset", (LevelTypes)(-1), Config.LegendaryItemSpawnWeight.Value), CustomScrap.Add("NkuhanasOpinion", "Assets/CustomAssets/ItemProperties/NkuhanasOpinion.asset", (LevelTypes)(-1), Config.LegendaryItemSpawnWeight.Value), CustomScrap.Add("UnstableTeslaCoil", "Assets/CustomAssets/ItemProperties/UnstableTeslaCoil.asset", (LevelTypes)(-1), Config.LegendaryItemSpawnWeight.Value), CustomScrap.Add("HeadStompers", "Assets/CustomAssets/ItemProperties/HeadStompers.asset", (LevelTypes)(-1), Config.LegendaryItemSpawnWeight.Value) }; foreach (CustomItem customItem in customItems) { if (customItem.enabled) { Item val = MainAssets.LoadAsset<Item>(customItem.itemPath); Plugin.logger.LogInfo((object)customItem.itemPath); if ((Object)(object)val.spawnPrefab.GetComponent<NetworkTransform>() == (Object)null && (Object)(object)val.spawnPrefab.GetComponent<CustomNetworkTransform>() == (Object)null) { NetworkTransform val2 = val.spawnPrefab.AddComponent<NetworkTransform>(); val2.SlerpPosition = false; val2.Interpolate = false; val2.SyncPositionX = false; val2.SyncPositionY = false; val2.SyncPositionZ = false; val2.SyncScaleX = false; val2.SyncScaleY = false; val2.SyncScaleZ = false; val2.UseHalfFloatPrecision = true; } Prefabs.Add(customItem.name, val.spawnPrefab); NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); customItem.itemAction(val); if (customItem is CustomScrap) { Items.RegisterScrap(val, ((CustomScrap)customItem).rarity, ((CustomScrap)customItem).levelType); } } } foreach (KeyValuePair<string, GameObject> prefab in Prefabs) { GameObject value = prefab.Value; string key = prefab.Key; AudioSource[] componentsInChildren = value.GetComponentsInChildren<AudioSource>(); if (componentsInChildren.Length != 0) { ConfigEntry<float> val3 = Config.VolumeConfig.Bind<float>("Volume", key ?? "", 100f, "Audio volume for " + key + " (0-100) "); AudioSource[] array = componentsInChildren; foreach (AudioSource val4 in array) { val4.volume *= val3.Value / 100f; } } } } } [BepInPlugin("Bread.RiskOfRainItems", "Risk of Scrap", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public const string PLUGIN_GUID = "Bread.RiskOfRainItems"; public const string PLUGIN_NAME = "Risk of Scrap"; public const string PLUGIN_VERSION = "1.0.0"; public static ConfigFile config; public static ManualLogSource logger; private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Bread.RiskOfRainItems is loaded!"); Utilities.Init(); logger = ((BaseUnityPlugin)this).Logger; config = ((BaseUnityPlugin)this).Config; Config.Load(); Content.Load(); 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); } } } } } public class Utilities { private static Dictionary<int, int> _masksByLayer; public static void Init() { GenerateLayerMap(); } public static void GenerateLayerMap() { _masksByLayer = new Dictionary<int, int>(); for (int i = 0; i < 32; i++) { int num = 0; for (int j = 0; j < 32; j++) { if (!Physics.GetIgnoreLayerCollision(i, j)) { num |= 1 << j; } } _masksByLayer.Add(i, num); } } public static int MaskForLayer(int layer) { bool flag = true; return _masksByLayer[layer]; } public static void LoadPrefab(string name, Vector3 position) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (Content.Prefabs.ContainsKey(name)) { Plugin.logger.LogInfo((object)("Loading prefab " + name)); GameObject val = Object.Instantiate<GameObject>(Content.Prefabs[name], position, Quaternion.identity); val.GetComponent<NetworkObject>().Spawn(false); } else { Plugin.logger.LogWarning((object)("Prefab " + name + " not found!")); } } public static void CreateExplosion(Vector3 explosionPosition, bool spawnExplosionEffect = false, int damage = 20, float minDamageRange = 0f, float maxDamageRange = 1f, int enemyHitForce = 6, CauseOfDeath causeOfDeath = 3, PlayerControllerB attacker = null) { //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012a: 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_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)"Spawning explosion at pos: {explosionPosition}"); Transform val = null; if ((Object)(object)RoundManager.Instance != (Object)null && (Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null && (Object)(object)RoundManager.Instance.mapPropsContainer.transform != (Object)null) { val = RoundManager.Instance.mapPropsContainer.transform; } if (spawnExplosionEffect) { Object.Instantiate<GameObject>(StartOfRound.Instance.explosionPrefab, explosionPosition, Quaternion.Euler(-90f, 0f, 0f), val).SetActive(true); } float num = Vector3.Distance(((Component)GameNetworkManager.Instance.localPlayerController).transform.position, explosionPosition); if (num < 14f) { HUDManager.Instance.ShakeCamera((ScreenShakeType)1); } else if (num < 25f) { HUDManager.Instance.ShakeCamera((ScreenShakeType)0); } Collider[] array = Physics.OverlapSphere(explosionPosition, maxDamageRange, 2621448, (QueryTriggerInteraction)2); PlayerControllerB val2 = null; for (int i = 0; i < array.Length; i++) { float num2 = Vector3.Distance(explosionPosition, ((Component)array[i]).transform.position); if (num2 > 4f && Physics.Linecast(explosionPosition, ((Component)array[i]).transform.position + Vector3.up * 0.3f, 256, (QueryTriggerInteraction)1)) { continue; } if (((Component)array[i]).gameObject.layer == 3) { val2 = ((Component)array[i]).gameObject.GetComponent<PlayerControllerB>(); if ((Object)(object)val2 != (Object)null && ((NetworkBehaviour)val2).IsOwner) { float num3 = 1f - Mathf.Clamp01((num2 - minDamageRange) / (maxDamageRange - minDamageRange)); val2.DamagePlayer((int)((float)damage * num3), true, true, causeOfDeath, 0, false, default(Vector3)); } } else if (((Component)array[i]).gameObject.layer == 19) { EnemyAICollisionDetect componentInChildren = ((Component)array[i]).gameObject.GetComponentInChildren<EnemyAICollisionDetect>(); if ((Object)(object)componentInChildren != (Object)null && ((NetworkBehaviour)componentInChildren.mainScript).IsOwner && num2 < 4.5f) { componentInChildren.mainScript.HitEnemyOnLocalClient(enemyHitForce, default(Vector3), attacker, false); } } } int num4 = ~LayerMask.GetMask(new string[1] { "Room" }); num4 = ~LayerMask.GetMask(new string[1] { "Colliders" }); array = Physics.OverlapSphere(explosionPosition, 10f, num4); for (int j = 0; j < array.Length; j++) { Rigidbody component = ((Component)array[j]).GetComponent<Rigidbody>(); if ((Object)(object)component != (Object)null) { component.AddExplosionForce(70f, explosionPosition, 10f); } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "RiskOfRainItems"; public const string PLUGIN_NAME = "RiskOfRainItems"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace RiskOfRainItems.Patches { public class Miscellaneous { public static void Load() { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Expected O, but got Unknown //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Expected O, but got Unknown //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Expected O, but got Unknown Hook val = new Hook((MethodBase)typeof(Object).GetMethod("Instantiate", new Type[3] { typeof(Object), typeof(Transform), typeof(bool) }), typeof(Miscellaneous).GetMethod("InstantiateOPI")); Hook val2 = new Hook((MethodBase)typeof(Object).GetMethod("Instantiate", new Type[2] { typeof(Object), typeof(Transform) }), typeof(Miscellaneous).GetMethod("InstantiateOP")); Hook val3 = new Hook((MethodBase)typeof(Object).GetMethod("Instantiate", new Type[1] { typeof(Object) }), typeof(Miscellaneous).GetMethod("InstantiateO")); Hook val4 = new Hook((MethodBase)typeof(Object).GetMethod("Instantiate", new Type[3] { typeof(Object), typeof(Vector3), typeof(Quaternion) }), typeof(Miscellaneous).GetMethod("InstantiateOPR")); Hook val5 = new Hook((MethodBase)typeof(Object).GetMethod("Instantiate", new Type[4] { typeof(Object), typeof(Vector3), typeof(Quaternion), typeof(Transform) }), typeof(Miscellaneous).GetMethod("InstantiateOPRP")); } public static Object InstantiateOPI(Func<Object, Transform, bool, Object> orig, Object original, Transform parent, bool instantiateInWorldSpace) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown Object val = orig(original, parent, instantiateInWorldSpace); if (val != (Object)null && val is GameObject) { GameObject val2 = (GameObject)val; Collider[] componentsInChildren = val2.GetComponentsInChildren<Collider>(); foreach (Collider val3 in componentsInChildren) { if (!((Object)(object)((Component)val3).gameObject.GetComponent<RootMarker>() != (Object)null)) { RootMarker rootMarker = ((Component)val3).gameObject.AddComponent<RootMarker>(); rootMarker.root = val2.transform; } } } return val; } public static Object InstantiateOP(Func<Object, Transform, Object> orig, Object original, Transform parent) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown Object val = orig(original, parent); if (val != (Object)null && val is GameObject) { GameObject val2 = (GameObject)val; Collider[] componentsInChildren = val2.GetComponentsInChildren<Collider>(); foreach (Collider val3 in componentsInChildren) { if (!((Object)(object)((Component)val3).gameObject.GetComponent<RootMarker>() != (Object)null)) { RootMarker rootMarker = ((Component)val3).gameObject.AddComponent<RootMarker>(); rootMarker.root = val2.transform; } } } return val; } public static Object InstantiateO(Func<Object, Object> orig, Object original) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown Object val = orig(original); if (val != (Object)null && val is GameObject) { GameObject val2 = (GameObject)val; Collider[] componentsInChildren = val2.GetComponentsInChildren<Collider>(); foreach (Collider val3 in componentsInChildren) { if (!((Object)(object)((Component)val3).gameObject.GetComponent<RootMarker>() != (Object)null)) { RootMarker rootMarker = ((Component)val3).gameObject.AddComponent<RootMarker>(); rootMarker.root = val2.transform; } } } return val; } public static Object InstantiateOPR(Func<Object, Vector3, Quaternion, Object> orig, Object original, Vector3 position, Quaternion rotation) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown Object val = orig(original, position, rotation); if (val != (Object)null && val is GameObject) { GameObject val2 = (GameObject)val; Collider[] componentsInChildren = val2.GetComponentsInChildren<Collider>(); foreach (Collider val3 in componentsInChildren) { if (!((Object)(object)((Component)val3).gameObject.GetComponent<RootMarker>() != (Object)null)) { RootMarker rootMarker = ((Component)val3).gameObject.AddComponent<RootMarker>(); rootMarker.root = val2.transform; } } } return val; } public static Object InstantiateOPRP(Func<Object, Vector3, Quaternion, Transform, Object> orig, Object original, Vector3 position, Quaternion rotation, Transform parent) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown Object val = orig(original, position, rotation, parent); if (val != (Object)null && val is GameObject) { GameObject val2 = (GameObject)val; Collider[] componentsInChildren = val2.GetComponentsInChildren<Collider>(); foreach (Collider val3 in componentsInChildren) { if (!((Object)(object)((Component)val3).gameObject.GetComponent<RootMarker>() != (Object)null)) { RootMarker rootMarker = ((Component)val3).gameObject.AddComponent<RootMarker>(); rootMarker.root = val2.transform; } } } return val; } private static void StartOfRound_Start(orig_Start orig, StartOfRound self) { orig.Invoke(self); SelectableLevel[] levels = self.levels; foreach (SelectableLevel val in levels) { val.spawnableScrap.RemoveAll((SpawnableItemWithRarity scrap) => ((Object)scrap.spawnableItem).name == "dingus"); } self.allItemsList.itemsList.RemoveAll((Item item) => ((Object)item).name == "dingus"); } } } namespace RiskOfRainItems.Network { public class ManageEvents : NetworkBehaviour { public static ManageEvents instance { get; private set; } public override void OnNetworkSpawn() { ((NetworkBehaviour)this).OnNetworkSpawn(); instance = this; } public override void OnNetworkDespawn() { ((NetworkBehaviour)this).OnNetworkDespawn(); instance = null; } [ClientRpc] public void SpawnExplosionOnPlayerClientRPC(NetworkObjectReference playerRef, Vector3 location, int damage) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1245110646u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref playerRef, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref location); BytePacker.WriteValueBitPacked(val2, damage); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1245110646u, val, (RpcDelivery)0); } NetworkObject val3 = default(NetworkObject); if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && ((NetworkObjectReference)(ref playerRef)).TryGet(ref val3, (NetworkManager)null)) { PlayerControllerB componentInChildren = ((Component)val3).GetComponentInChildren<PlayerControllerB>(); Utilities.CreateExplosion(location, spawnExplosionEffect: true, damage, 0f, 6.4f, 6, (CauseOfDeath)3); } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_ManageEvents() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(1245110646u, new RpcReceiveHandler(__rpc_handler_1245110646)); } private static void __rpc_handler_1245110646(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkObjectReference playerRef = default(NetworkObjectReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref playerRef, default(ForNetworkSerializable)); Vector3 location = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref location); int damage = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref damage); target.__rpc_exec_stage = (__RpcExecStage)2; ((ManageEvents)(object)target).SpawnExplosionOnPlayerClientRPC(playerRef, location, damage); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "ManageEvents"; } } } namespace RiskOfRainItems.MonoBehaviours { public class CustomNetworkTransform : NetworkBehaviour { public bool syncPosition = true; public bool syncRotation = true; public bool syncScale = true; public float positionDiffLimit = 0.1f; public float rotationDiffLimit = 0.1f; public float scaleDiffLimit = 0.1f; public bool lerpPosition = true; public bool lerpRotation = true; public bool lerpScale = true; public float positionLerpSpeed = 10f; public float rotationLerpSpeed = 10f; public float scaleLerpSpeed = 10f; private Vector3 _lastPosition; private Vector3 _lastRotation; private Vector3 _lastScale; private Vector3 _targetPosition; private Quaternion _targetRotation; private Vector3 _targetScale; public void FixedUpdate() { //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0073: 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_007e: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) if (((NetworkBehaviour)this).IsServer) { if (syncPosition && Vector3.Distance(((Component)this).transform.position, _lastPosition) > positionDiffLimit) { _lastPosition = ((Component)this).transform.position; UpdatePositionClientRpc(((Component)this).transform.position); } if (syncRotation && Quaternion.Angle(Quaternion.Euler(((Component)this).transform.eulerAngles), Quaternion.Euler(_lastRotation)) > rotationDiffLimit) { _lastRotation = ((Component)this).transform.eulerAngles; UpdateRotationClientRpc(((Component)this).transform.eulerAngles); } if (syncScale && Vector3.Distance(((Component)this).transform.localScale, _lastScale) > scaleDiffLimit) { _lastScale = ((Component)this).transform.localScale; UpdateScaleClientRpc(((Component)this).transform.localScale); } } else { if (lerpPosition) { ((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, _targetPosition, Time.fixedDeltaTime * positionLerpSpeed); } if (lerpRotation) { ((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, _targetRotation, Time.fixedDeltaTime * rotationLerpSpeed); } if (lerpScale) { ((Component)this).transform.localScale = Vector3.Lerp(((Component)this).transform.localScale, _targetScale, Time.fixedDeltaTime * scaleLerpSpeed); } } } [ClientRpc] public void UpdatePositionClientRpc(Vector3 position) { //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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(536210770u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref position); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 536210770u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((NetworkBehaviour)this).IsServer && syncPosition) { if (lerpPosition) { _targetPosition = position; } else { ((Component)this).transform.position = position; } } } [ClientRpc] public void UpdateRotationClientRpc(Vector3 rotation) { //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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3098187538u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref rotation); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3098187538u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((NetworkBehaviour)this).IsServer && syncRotation) { if (lerpRotation) { _targetRotation = Quaternion.Euler(rotation); } else { ((Component)this).transform.rotation = Quaternion.Euler(rotation); } } } [ClientRpc] public void UpdateScaleClientRpc(Vector3 scale) { //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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2642620880u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref scale); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2642620880u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((NetworkBehaviour)this).IsServer && syncScale) { if (lerpScale) { _targetScale = scale; } else { ((Component)this).transform.localScale = scale; } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_CustomNetworkTransform() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(536210770u, new RpcReceiveHandler(__rpc_handler_536210770)); NetworkManager.__rpc_func_table.Add(3098187538u, new RpcReceiveHandler(__rpc_handler_3098187538)); NetworkManager.__rpc_func_table.Add(2642620880u, new RpcReceiveHandler(__rpc_handler_2642620880)); } private static void __rpc_handler_536210770(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 position = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref position); target.__rpc_exec_stage = (__RpcExecStage)2; ((CustomNetworkTransform)(object)target).UpdatePositionClientRpc(position); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3098187538(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 rotation = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref rotation); target.__rpc_exec_stage = (__RpcExecStage)2; ((CustomNetworkTransform)(object)target).UpdateRotationClientRpc(rotation); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2642620880(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 scale = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref scale); target.__rpc_exec_stage = (__RpcExecStage)2; ((CustomNetworkTransform)(object)target).UpdateScaleClientRpc(scale); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "CustomNetworkTransform"; } } public class HarvestersScythe : GrabbableObject { public int shovelHitForce = 1; public float chanceToHeal = 0.5f; public bool reelingUp; public bool isHoldingButton; private RaycastHit rayHit; private Coroutine reelingUpCoroutine; private RaycastHit[] objectsHitByShovel; private List<RaycastHit> objectsHitByShovelList = new List<RaycastHit>(); public AudioClip reelUp; public AudioClip swing; public AudioClip[] hitSFX; public AudioSource shovelAudio; private PlayerControllerB previousPlayerHeldBy; private int shovelMask = 11012424; public override void ItemActivate(bool used, bool buttonDown = true) { if ((Object)(object)base.playerHeldBy == (Object)null) { return; } Debug.Log((object)$"Is player pressing down button?: {buttonDown}"); isHoldingButton = buttonDown; Debug.Log((object)("PLAYER ACTIVATED ITEM TO HIT WITH SHOVEL. Who sent this log: " + ((Object)((Component)GameNetworkManager.Instance.localPlayerController).gameObject).name)); if (!reelingUp && buttonDown) { reelingUp = true; previousPlayerHeldBy = base.playerHeldBy; Debug.Log((object)$"Set previousPlayerHeldBy: {previousPlayerHeldBy}"); 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); 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Invalid comparison between Unknown and I4 //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Invalid comparison between Unknown and I4 //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(712244304u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 712244304u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } NetworkManager networkManager2 = ((NetworkBehaviour)this).NetworkManager; if (networkManager2 == null || !networkManager2.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager2.IsClient || networkManager2.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager2.LocalClientId) { if ((int)networkManager2.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val3 = default(ServerRpcParams); FastBufferWriter val4 = ((NetworkBehaviour)this).__beginSendServerRpc(4113335123u, val3, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val4, 4113335123u, val3, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager2.IsServer || networkManager2.IsHost)) { 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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Invalid comparison between Unknown and I4 //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Invalid comparison between Unknown and I4 //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0107: 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_0118: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(178038074u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 178038074u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } NetworkManager networkManager2 = ((NetworkBehaviour)this).NetworkManager; if (networkManager2 != null && networkManager2.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager2.IsServer || networkManager2.IsHost)) { ClientRpcParams val3 = default(ClientRpcParams); FastBufferWriter val4 = ((NetworkBehaviour)this).__beginSendClientRpc(2042054613u, val3, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val4, 2042054613u, val3, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager2.IsClient || networkManager2.IsHost) && !((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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_00a2: 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_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0514: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: 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) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_039f: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: 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; Debug.Log((object)("PLAYER HIT WITH SHOVEL! who is sending this log: " + ((Object)((Component)GameNetworkManager.Instance.localPlayerController).gameObject).name)); bool flag = false; int hitSurfaceID = -1; if (!cancel) { previousPlayerHeldBy.twoHanded = false; Debug.DrawRay(((Component)previousPlayerHeldBy.gameplayCamera).transform.position + ((Component)previousPlayerHeldBy.gameplayCamera).transform.right * -0.35f, ((Component)previousPlayerHeldBy.gameplayCamera).transform.forward * 1.85f, Color.blue, 5f); objectsHitByShovel = Physics.SphereCastAll(((Component)previousPlayerHeldBy.gameplayCamera).transform.position + ((Component)previousPlayerHeldBy.gameplayCamera).transform.right * -0.35f, 0.75f, ((Component)previousPlayerHeldBy.gameplayCamera).transform.forward, 1.85f, shovelMask, (QueryTriggerInteraction)2); objectsHitByShovelList = objectsHitByShovel.OrderBy((RaycastHit x) => ((RaycastHit)(ref x)).distance).ToList(); Vector3 val = ((Component)previousPlayerHeldBy.gameplayCamera).transform.position; IHittable val3 = default(IHittable); RaycastHit val5 = default(RaycastHit); for (int i = 0; i < objectsHitByShovelList.Count; i++) { RaycastHit val2 = objectsHitByShovelList[i]; if (((Component)((RaycastHit)(ref val2)).transform).gameObject.layer != 8) { val2 = objectsHitByShovelList[i]; if (((Component)((RaycastHit)(ref val2)).transform).gameObject.layer != 11) { val2 = objectsHitByShovelList[i]; if (!((Component)((RaycastHit)(ref val2)).transform).TryGetComponent<IHittable>(ref val3)) { continue; } val2 = objectsHitByShovelList[i]; if ((Object)(object)((RaycastHit)(ref val2)).transform == (Object)(object)((Component)previousPlayerHeldBy).transform) { continue; } val2 = objectsHitByShovelList[i]; if (!(((RaycastHit)(ref val2)).point == Vector3.zero)) { Vector3 val4 = val; val2 = objectsHitByShovelList[i]; if (Physics.Linecast(val4, ((RaycastHit)(ref val2)).point, ref val5, StartOfRound.Instance.collidersAndRoomMaskAndDefault)) { continue; } } float value = Random.value; flag = true; Vector3 forward = ((Component)previousPlayerHeldBy.gameplayCamera).transform.forward; try { val3.Hit(shovelHitForce, forward, previousPlayerHeldBy, true); Plugin.logger.LogMessage((object)"Hit something living!, rolling for heal"); Plugin.logger.LogMessage((object)$"Health Before : {previousPlayerHeldBy.health}"); if (value <= chanceToHeal) { Plugin.logger.LogMessage((object)$"randValue was {value} so you got healed!"); previousPlayerHeldBy.health = Mathf.Clamp(previousPlayerHeldBy.health + 20, 0, 100); HUDManager.Instance.UpdateHealthUI(previousPlayerHeldBy.health, true); Plugin.logger.LogMessage((object)$"Health After : {previousPlayerHeldBy.health}"); } else { Plugin.logger.LogMessage((object)$"randValue was {value} so you didnt heal"); } } catch (Exception arg) { Debug.Log((object)$"Exception caught when hitting object with shovel from player #{previousPlayerHeldBy.playerClientId}: {arg}"); } continue; } } val2 = objectsHitByShovelList[i]; Vector3 point = ((RaycastHit)(ref val2)).point; val2 = objectsHitByShovelList[i]; val = point + ((RaycastHit)(ref val2)).normal * 0.01f; flag = true; val2 = objectsHitByShovelList[i]; string tag = ((Component)((RaycastHit)(ref val2)).collider).gameObject.tag; for (int j = 0; j < StartOfRound.Instance.footstepSurfaces.Length; j++) { if (StartOfRound.Instance.footstepSurfaces[j].surfaceTag == tag) { shovelAudio.PlayOneShot(StartOfRound.Instance.footstepSurfaces[j].hitSurfaceSFX); WalkieTalkie.TransmitOneShotAudio(shovelAudio, StartOfRound.Instance.footstepSurfaces[j].hitSurfaceSFX, 1f); hitSurfaceID = j; break; } } } } if (flag) { RoundManager.PlayRandomClip(shovelAudio, hitSFX, true, 1f, 0); Object.FindObjectOfType<RoundManager>().PlayAudibleNoise(((Component)this).transform.position, 17f, 0.8f, 0, false, 0); base.playerHeldBy.playerBodyAnimator.SetTrigger("shovelHit"); HitShovelServerRpc(hitSurfaceID); } } [ServerRpc] public void HitShovelServerRpc(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_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 //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Invalid comparison between Unknown and I4 //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Invalid comparison between Unknown and I4 //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(327322144u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, hitSurfaceID); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 327322144u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } NetworkManager networkManager2 = ((NetworkBehaviour)this).NetworkManager; if (networkManager2 == null || !networkManager2.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager2.IsClient || networkManager2.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager2.LocalClientId) { if ((int)networkManager2.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val3 = default(ServerRpcParams); FastBufferWriter val4 = ((NetworkBehaviour)this).__beginSendServerRpc(2096026133u, val3, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val4, hitSurfaceID); ((NetworkBehaviour)this).__endSendServerRpc(ref val4, 2096026133u, val3, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager2.IsServer || networkManager2.IsHost)) { HitShovelClientRpc(hitSurfaceID); } } [ClientRpc] public void HitShovelClientRpc(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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Invalid comparison between Unknown and I4 //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Invalid comparison between Unknown and I4 //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2271792914u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, hitSurfaceID); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2271792914u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } NetworkManager networkManager2 = ((NetworkBehaviour)this).NetworkManager; if (networkManager2 == null || !networkManager2.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager2.IsServer || networkManager2.IsHost)) { ClientRpcParams val3 = default(ClientRpcParams); FastBufferWriter val4 = ((NetworkBehaviour)this).__beginSendClientRpc(275435223u, val3, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val4, hitSurfaceID); ((NetworkBehaviour)this).__endSendClientRpc(ref val4, 275435223u, val3, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager2.IsClient || networkManager2.IsHost) && !((NetworkBehaviour)this).IsOwner) { RoundManager.PlayRandomClip(shovelAudio, hitSFX, true, 1f, 0); if (hitSurfaceID != -1) { HitSurfaceWithShovel(hitSurfaceID); } } } private void HitSurfaceWithShovel(int hitSurfaceID) { Plugin.logger.LogMessage((object)hitSurfaceID); shovelAudio.PlayOneShot(StartOfRound.Instance.footstepSurfaces[hitSurfaceID].hitSurfaceSFX); WalkieTalkie.TransmitOneShotAudio(shovelAudio, StartOfRound.Instance.footstepSurfaces[hitSurfaceID].hitSurfaceSFX, 1f); } protected override void __initializeVariables() { ((GrabbableObject)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_HarvestersScythe() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(712244304u, new RpcReceiveHandler(__rpc_handler_712244304)); NetworkManager.__rpc_func_table.Add(178038074u, new RpcReceiveHandler(__rpc_handler_178038074)); NetworkManager.__rpc_func_table.Add(327322144u, new RpcReceiveHandler(__rpc_handler_327322144)); NetworkManager.__rpc_func_table.Add(2271792914u, new RpcReceiveHandler(__rpc_handler_2271792914)); } private static void __rpc_handler_712244304(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; ((HarvestersScythe)(object)target).ReelUpSFXServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_178038074(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)2; ((HarvestersScythe)(object)target).ReelUpSFXClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_327322144(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; ((HarvestersScythe)(object)target).HitShovelServerRpc(hitSurfaceID); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2271792914(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)2; ((HarvestersScythe)(object)target).HitShovelClientRpc(hitSurfaceID); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "HarvestersScythe"; } } public class LensMakersGlasses : GrabbableObject { public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); Debug.Log((object)"Trying To Put ON Glasses!"); if (((NetworkBehaviour)this).IsOwner) { base.playerHeldBy.playerBodyAnimator.SetBool("HoldMask", buttonDown); Debug.Log((object)"Glasses Are Being Put On"); Debug.Log((object)$"Setting maskOn {buttonDown}"); base.playerHeldBy.activatingItem = buttonDown; } } protected override void __initializeVariables() { ((GrabbableObject)this).__initializeVariables(); } protected internal override string __getTypeName() { return "LensMakersGlasses"; } } [RequireComponent(typeof(Rigidbody))] public class RigidBodyItem : GrabbableObject { public float gravity = 9.8f; internal Rigidbody rb; public override void Start() { rb = ((Component)this).GetComponent<Rigidbody>(); rb.useGravity = false; base.itemProperties.itemSpawnsOnGround = false; ((GrabbableObject)this).Start(); EnablePhysics(enable: true); } public void EnablePhysics(bool enable) { for (int i = 0; i < base.propColliders.Length; i++) { if (!((Object)(object)base.propColliders[i] == (Object)null) && !((Component)base.propColliders[i]).gameObject.CompareTag("InteractTrigger") && !((Component)base.propColliders[i]).gameObject.CompareTag("DoNotSet")) { base.propColliders[i].enabled = enable; } } rb.isKinematic = !enable; } public override void Update() { base.fallTime = 1f; base.reachedFloorTarget = true; bool isHeld = base.isHeld; base.isHeld = true; ((GrabbableObject)this).Update(); base.isHeld = isHeld; } public void FixedUpdate() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (((NetworkBehaviour)this).IsHost) { if (!rb.isKinematic && !base.isHeld) { rb.useGravity = false; rb.AddForce(Vector3.down * gravity, (ForceMode)5); } else { rb.AddForce(Vector3.zero, (ForceMode)2); } } } public override void LateUpdate() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)base.parentObject != (Object)null && base.isHeld) { ((Component)this).transform.rotation = base.parentObject.rotation; ((Component)this).transform.Rotate(base.itemProperties.rotationOffset); ((Component)this).transform.position = base.parentObject.position; Vector3 positionOffset = base.itemProperties.positionOffset; positionOffset = base.parentObject.rotation * positionOffset; Transform transform = ((Component)this).transform; transform.position += positionOffset; } if ((Object)(object)base.radarIcon != (Object)null) { base.radarIcon.position = ((Component)this).transform.position; } } public override void FallWithCurve() { } public void FallToGround(bool randomizePosition = false) { } public override void EquipItem() { ((GrabbableObject)this).EquipItem(); ((Component)this).transform.SetParent((Transform)null, true); } protected override void __initializeVariables() { ((GrabbableObject)this).__initializeVariables(); } protected internal override string __getTypeName() { return "RigidBodyItem"; } } public class RootMarker : MonoBehaviour { public Transform root; } [ExecuteAlways] public class StickyBombRB : RigidBodyItem { private PlayerControllerB playerThrownBy; public Transform throwDirection; public float throwForce = 10f; public int explosionDamage = 200; private float t = 0f; public float fuseTimerLength = 5f; private float fuseTimer = 0f; public bool isThrown = false; public bool hasBeenThrownByActivation = false; private NetworkVariable<Vector3> throwDir = new NetworkVariable<Vector3>(Vector3.zero, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1); private NetworkVariable<bool> isKinematic = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); private NetworkVariable<bool> Explode = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1); public AudioClip StickSound; public AudioClip TickDownSound; public AudioSource audioSource; public GameObject trackingPoint; public BoxCollider collider; public List<PlayerControllerB> players; public bool countdownFinished = false; private void Awake() { } public override void Start() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) base.Start(); if (((NetworkBehaviour)this).IsHost) { rb.isKinematic = false; rb.AddForce(throwDirection.forward * throwForce, (ForceMode)1); t = 0f; isThrown = true; } ThrowStickyBombServerRpc(throwDirection.forward); collider = ((Component)this).GetComponent<BoxCollider>(); } public override void EquipItem() { base.EquipItem(); isThrown = false; rb.isKinematic = false; t = 0f; } public override void ItemActivate(bool used, bool buttonDown = true) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).ItemActivate(used, buttonDown); playerThrownBy = ((GrabbableObject)this).playerHeldBy; if (((NetworkBehaviour)this).IsOwner) { Plugin.logger.LogInfo((object)$"playerThrownBy = {playerThrownBy.actualClientId} and playerHeldBy = {((GrabbableObject)this).playerHeldBy.actualClientId} "); PlayerControllerB playerHeldBy = ((GrabbableObject)this).playerHeldBy; Vector3 val = default(Vector3); playerHeldBy.DiscardHeldObject(false, (NetworkObject)null, val, true); rb.isKinematic = false; Plugin.logger.LogMessage((object)"Forward {throwDirection.forward}"); Plugin.logger.LogMessage((object)throwDir.Value); throwDir.Value = throwDirection.forward; RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(((Component)playerThrownBy.gameplayCamera).transform.position, ((Component)playerThrownBy.gameplayCamera).transform.forward, ref val2, 100f, 11012424, (QueryTriggerInteraction)1)) { Plugin.logger.LogMessage((object)$"game object layer = {((Component)this).gameObject.layer}"); NetworkVariable<Vector3> obj = throwDir; val = ((RaycastHit)(ref val2)).point - throwDirection.position; obj.Value = ((Vector3)(ref val)).normalized; } hasBeenThrownByActivation = true; ThrowStickyBombServerRpc(throwDir.Value); DetonateWithCountdownServerRPC(); } } [ServerRpc(RequireOwnership = false)] public void ThrowStickyBombServerRpc(Vector3 throwDir) { //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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2003031787u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref throwDir); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2003031787u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { t = 0f; rb.isKinematic = false; isThrown = true; Plugin.logger.LogMessage((object)$"Throwing sticky bomb with velocity: {throwDir * throwForce}"); rb.AddForce(throwDir * throwForce, (ForceMode)1); } } } [ServerRpc(RequireOwnership = false)] public void PlayStickyBombHitSoundServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(4208983311u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4208983311u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { PlayStickyBombHitSoundClientRpc(); } } } [ClientRpc] public void PlayStickyBombHitSoundClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4289329137u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4289329137u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { audioSource.PlayOneShot(StickSound); } } } [ServerRpc(RequireOwnership = false)] public void DetonateWithCountdownServerRPC() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2233115480u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2233115480u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { DetonateWithCountdownClientRPC(); } } } [ClientRpc] public void DetonateWithCountdownClientRPC() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3494154830u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3494154830u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { ((MonoBehaviour)this).StartCoroutine(DetonateWithCountdown()); } } } public IEnumerator DetonateWithCountdown() { audioSource.PlayOneShot(TickDownSound); yield return (object)new WaitForSeconds(fuseTimerLength); countdownFinished = true; if (hasBeenThrownByActivation) { Explode.Value = true; } } [ServerRpc(RequireOwnership = false)] public void ExplosionServerRPC() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3731717188u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3731717188u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ExplosionClientRPC(); } } } [ClientRpc] public void ExplosionClientRPC() { //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_00c7: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4131351315u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4131351315u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { Utilities.CreateExplosion(trackingPoint.transform.position, spawnExplosionEffect: true, explosionDamage, 0f, 6.4f, 6, (CauseOfDeath)3); } } } public override void Update() { //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) if (isKinematic.Value != rb.isKinematic && !((NetworkBehaviour)this).IsHost) { rb.isKinematic = isKinematic.Value; } else if (((NetworkBehaviour)this).IsHost && rb.isKinematic != isKinematic.Value) { Plugin.logger.LogMessage((object)$"rb.isKinematic = {rb.isKinematic} and isKinematic.value = {isKinematic.Value}"); isKinematic.Value = rb.isKinematic; } if (isKinematic.Value) { ((Collider)collider).isTrigger = true; } else { ((Collider)collider).isTrigger = false; } if (((NetworkBehaviour)this).IsHost) { if (rb.isKinematic && !((GrabbableObject)this).isHeld) { rb.position = trackingPoint.transform.position; rb.rotation = trackingPoint.transform.rotation; } if (isThrown) { Vector3 velocity = rb.velocity; if (((Vector3)(ref velocity)).magnitude > 0.1f) { ((Component)this).transform.LookAt(((Component)this).transform.position + rb.velocity); } else { rb.isKinematic = false; rb.AddForce(throwDirection.forward * throwForce, (ForceMode)1); } t += Time.deltaTime; if (t > 5f) { isThrown = false; rb.isKinematic = true; } RaycastHit val = default(RaycastHit); if (Physics.SphereCast(throwDirection.position, 0.01f, ((Component)this).transform.forward, ref val, 0.01f, 11012424, (QueryTriggerInteraction)1)) { Transform transform = ((RaycastHit)(ref val)).transform; if (((Object)(object)playerThrownBy != (Object)null && ((Object)(object)transform == (Object)(object)((Component)playerThrownBy).transform || transform.IsChildOf(((Component)playerThrownBy).transform))) || (Object)(object)((Component)transform).GetComponent<StickyBombRB>() != (Object)null || (Object)(object)((Component)transform).GetComponentInParent<StickyBombRB>() != (Object)null) { return; } TryParent(((RaycastHit)(ref val)).collider); Plugin.logger.LogMessage((object)$"(1) Hit target ({transform}) wawa!!! Layer: ({((Component)transform).gameObject.layer})"); PlayStickyBombHitSoundServerRpc(); isThrown = false; rb.isKinematic = true; } } if (Explode.Value) { ExplosionServerRPC(); if (((NetworkBehaviour)this).IsServer) { ((Component)this).GetComponent<NetworkObject>().Despawn(true); } } } base.Update(); } public void TryParent(Collider collider) { //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Expected O, but got Unknown //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Expected O, but got Unknown //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: 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) RootMarker component = ((Component)collider).GetComponent<RootMarker>(); if ((Object)(object)component != (Object)null) { Transform root = component.root; if ((Object)(object)((Component)root).GetComponent<StickyBombRB>() != (Object)null || (Object)(object)((Component)root).GetComponentInParent<StickyBombRB>() != (Object)null || ((Object)root).name == "StickyBombTrackingPoint") { SetParent(((Component)collider).transform); } Transform val = root; float num = Vector3.Distance(((Component)this).transform.position, val.position); foreach (Transform item in root) { Transform val2 = item; if (!((Object)(object)((Component)val2).GetComponent<StickyBombRB>() != (Object)null) && !(((Object)val2).name == "StickyBombTrackingPoint")) { float num2 = Vector3.Distance(((Component)this).transform.position, val2.position); if (num2 < num) { val = val2; num = num2; } } } SetParent(val); } else { bool flag = false; Transform val3 = ((Component)collider).transform; while (!flag && !((Object)(object)val3 == (Object)null)) { if (Object.op_Implicit((Object)(object)((Component)val3).GetComponent<PlayerControllerB>())) { flag = true; } else { val3 = val3.parent; } } if (!flag) { SetParent(((Component)collider).transform); } else { Transform val4 = val3; float num3 = Vector3.Distance(((Component)this).transform.position, val4.position); foreach (Transform item2 in val3) { Transform val5 = item2; if (!((Object)(object)((Component)val5).GetComponent<StickyBombRB>() != (Object)null) && !(((Object)val5).name == "StickyBombTrackingPoint")) { float num4 = Vector3.Distance(((Component)this).transform.position, val5.position); if (num4 < num3) { val4 = val5; num3 = num4; } } } SetParent(val4); } } isKinematic.Value = true; rb.isKinematic = true; Plugin.logger.LogMessage((object)$"Parented to: {((Component)this).transform.parent}"); } public void SetParent(Transform parent) { //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) Plugin.logger.LogInfo((object)("Setting parent to: " + ((Object)parent).name)); if ((Object)(object)trackingPoint == (Object)null) { trackingPoint = new GameObject(); ((Object)trackingPoint).name = "StickyBombTrackingPoint"; trackingPoint.transform.SetParent(parent); trackingPoint.transform.position = ((Component)this).transform.position; trackingPoint.transform.rotation = ((Component)this).transform.rotation; } else { trackingPoint.transform.SetParent(parent); trackingPoint.transform.position = ((Component)this).transform.position; trackingPoint.transform.rotation = ((Component)this).transform.rotation; } } public override void OnDestroy() { ((NetworkBehaviour)this).OnDestroy(); if ((Object)(object)trackingPoint != (Object)null) { Object.Destroy((Object)(object)trackingPoint); } } public void OnTriggerEnter(Collider collision) { if (((NetworkBehaviour)this).IsHost && !collision.isTrigger && (Object)(object)((Component)collision).gameObject.GetComponent<StickyBombRB>() == (Object)null && (Object)(object)((Component)collision).gameObject.GetComponentInParent<StickyBombRB>() == (Object)null && isThrown) { Transform transform = ((Component)collision).transform; Plugin.logger.LogMessage((object)$"(2) Hit target ({transform}) wawa!!! Layer: ({((Component)transform).gameObject.layer})"); if (!((Object)(object)playerThrownBy != (Object)null) || (!((Object)(object)transform == (Object)(object)((Component)playerThrownBy).transform) && !transform.IsChild