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 System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalCompanyInputUtils.Api;
using LethalLib.Extras;
using LethalLib.Modules;
using LethalThings.Extensions;
using LethalThings.MonoBehaviours;
using LethalThings.NetcodePatcher;
using LethalThings.Patches;
using Microsoft.CodeAnalysis;
using On;
using On.GameNetcodeStuff;
using TMPro;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Animations.Rigging;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
[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: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("EasyTextEffects")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: AssemblyCompany("LethalThings")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Mod for Lethal Company")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+31a4ed97c47dc9607e886e9564144191133ee8fb")]
[assembly: AssemblyProduct("LethalThings")]
[assembly: AssemblyTitle("LethalThings")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[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 LethalLib.Modules
{
public class SaveData
{
[CompilerGenerated]
private static class <>O
{
public static hook_ResetSavedGameValues <0>__GameNetworkManager_ResetSavedGameValues;
public static hook_SaveItemsInShip <1>__GameNetworkManager_SaveItemsInShip;
public static hook_LoadShipGrabbableItems <2>__StartOfRound_LoadShipGrabbableItems;
}
public static List<string> saveKeys = new List<string>();
public static void Init()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0032: 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)
//IL_003d: Expected O, but got Unknown
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Expected O, but got Unknown
object obj = <>O.<0>__GameNetworkManager_ResetSavedGameValues;
if (obj == null)
{
hook_ResetSavedGameValues val = GameNetworkManager_ResetSavedGameValues;
<>O.<0>__GameNetworkManager_ResetSavedGameValues = val;
obj = (object)val;
}
GameNetworkManager.ResetSavedGameValues += (hook_ResetSavedGameValues)obj;
object obj2 = <>O.<1>__GameNetworkManager_SaveItemsInShip;
if (obj2 == null)
{
hook_SaveItemsInShip val2 = GameNetworkManager_SaveItemsInShip;
<>O.<1>__GameNetworkManager_SaveItemsInShip = val2;
obj2 = (object)val2;
}
GameNetworkManager.SaveItemsInShip += (hook_SaveItemsInShip)obj2;
object obj3 = <>O.<2>__StartOfRound_LoadShipGrabbableItems;
if (obj3 == null)
{
hook_LoadShipGrabbableItems val3 = StartOfRound_LoadShipGrabbableItems;
<>O.<2>__StartOfRound_LoadShipGrabbableItems = val3;
obj3 = (object)val3;
}
StartOfRound.LoadShipGrabbableItems += (hook_LoadShipGrabbableItems)obj3;
}
private static void StartOfRound_LoadShipGrabbableItems(orig_LoadShipGrabbableItems orig, StartOfRound self)
{
orig.Invoke(self);
SaveableObject[] array = Object.FindObjectsOfType<SaveableObject>();
SaveableNetworkBehaviour[] array2 = Object.FindObjectsOfType<SaveableNetworkBehaviour>();
SaveableObject[] array3 = array;
foreach (SaveableObject saveableObject in array3)
{
saveableObject.LoadObjectData();
}
SaveableNetworkBehaviour[] array4 = array2;
foreach (SaveableNetworkBehaviour saveableNetworkBehaviour in array4)
{
saveableNetworkBehaviour.LoadObjectData();
}
if (ES3.KeyExists("LethalLibItemSaveKeys", GameNetworkManager.Instance.currentSaveFileName))
{
saveKeys = ES3.Load<List<string>>("LethalLibItemSaveKeys", GameNetworkManager.Instance.currentSaveFileName);
}
}
private static void GameNetworkManager_SaveItemsInShip(orig_SaveItemsInShip orig, GameNetworkManager self)
{
orig.Invoke(self);
SaveableObject[] array = Object.FindObjectsOfType<SaveableObject>();
SaveableNetworkBehaviour[] array2 = Object.FindObjectsOfType<SaveableNetworkBehaviour>();
SaveableObject[] array3 = array;
foreach (SaveableObject saveableObject in array3)
{
saveableObject.SaveObjectData();
}
SaveableNetworkBehaviour[] array4 = array2;
foreach (SaveableNetworkBehaviour saveableNetworkBehaviour in array4)
{
saveableNetworkBehaviour.SaveObjectData();
}
ES3.Save<List<string>>("LethalLibItemSaveKeys", saveKeys, GameNetworkManager.Instance.currentSaveFileName);
}
private static void GameNetworkManager_ResetSavedGameValues(orig_ResetSavedGameValues orig, GameNetworkManager self)
{
orig.Invoke(self);
foreach (string saveKey in saveKeys)
{
ES3.DeleteKey(saveKey, GameNetworkManager.Instance.currentSaveFileName);
}
saveKeys.Clear();
}
public static void SaveObjectData<T>(string key, T data, int objectId)
{
List<T> list = new List<T>();
if (ES3.KeyExists("LethalThingsSave_" + key, GameNetworkManager.Instance.currentSaveFileName))
{
list = ES3.Load<List<T>>("LethalThingsSave_" + key, GameNetworkManager.Instance.currentSaveFileName);
}
List<int> list2 = new List<int>();
if (ES3.KeyExists("LethalThingsSave_objectIds_" + key, GameNetworkManager.Instance.currentSaveFileName))
{
list2 = ES3.Load<List<int>>("LethalThingsSave_objectIds_" + key, GameNetworkManager.Instance.currentSaveFileName);
}
list.Add(data);
list2.Add(objectId);
if (!saveKeys.Contains("LethalThingsSave_" + key))
{
saveKeys.Add("LethalThingsSave_" + key);
}
if (!saveKeys.Contains("LethalThingsSave_objectIds_" + key))
{
saveKeys.Add("LethalThingsSave_objectIds_" + key);
}
ES3.Save<List<T>>("LethalThingsSave_" + key, list, GameNetworkManager.Instance.currentSaveFileName);
ES3.Save<List<int>>("LethalThingsSave_objectIds_" + key, list2, GameNetworkManager.Instance.currentSaveFileName);
}
public static T LoadObjectData<T>(string key, int objectId)
{
List<T> list = new List<T>();
if (ES3.KeyExists("LethalThingsSave_" + key, GameNetworkManager.Instance.currentSaveFileName))
{
list = ES3.Load<List<T>>("LethalThingsSave_" + key, GameNetworkManager.Instance.currentSaveFileName);
}
List<int> list2 = new List<int>();
if (ES3.KeyExists("LethalThingsSave_objectIds_" + key, GameNetworkManager.Instance.currentSaveFileName))
{
list2 = ES3.Load<List<int>>("LethalThingsSave_objectIds_" + key, GameNetworkManager.Instance.currentSaveFileName);
}
if (!saveKeys.Contains("LethalThingsSave_" + key))
{
saveKeys.Add("LethalThingsSave_" + key);
}
if (!saveKeys.Contains("LethalThingsSave_objectIds_" + key))
{
saveKeys.Add("LethalThingsSave_objectIds_" + key);
}
if (list2.Contains(objectId))
{
int index = list2.IndexOf(objectId);
return list[index];
}
return default(T);
}
}
}
namespace LethalThings
{
public class Content
{
public static AssetBundle MainAssets;
public static Dictionary<string, GameObject> Prefabs = new Dictionary<string, GameObject>();
public static ContentLoader ContentLoader;
public static GameObject devMenuPrefab;
public static GameObject configManagerPrefab;
public static void Init()
{
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Expected O, but got Unknown
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Expected O, but got Unknown
//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Expected O, but got Unknown
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Expected O, but got Unknown
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Expected O, but got Unknown
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_012b: Expected O, but got Unknown
//IL_0144: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Expected O, but got Unknown
//IL_0167: Unknown result type (might be due to invalid IL or missing references)
//IL_0171: Expected O, but got Unknown
//IL_018a: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: Expected O, but got Unknown
//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
//IL_01b7: Expected O, but got Unknown
//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Expected O, but got Unknown
//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
//IL_01fd: Expected O, but got Unknown
//IL_0239: Unknown result type (might be due to invalid IL or missing references)
//IL_0243: Expected O, but got Unknown
//IL_027f: Unknown result type (might be due to invalid IL or missing references)
//IL_0289: Expected O, but got Unknown
//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
//IL_02b1: Expected O, but got Unknown
//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
//IL_02d9: Expected O, but got Unknown
//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
//IL_0301: Expected O, but got Unknown
//IL_031f: Unknown result type (might be due to invalid IL or missing references)
//IL_0329: Expected O, but got Unknown
//IL_0347: Unknown result type (might be due to invalid IL or missing references)
//IL_0351: Expected O, but got Unknown
//IL_038d: Unknown result type (might be due to invalid IL or missing references)
//IL_0397: Expected O, but got Unknown
//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
//IL_03c0: Expected O, but got Unknown
//IL_03df: Unknown result type (might be due to invalid IL or missing references)
//IL_03e9: Expected O, but got Unknown
//IL_0408: Unknown result type (might be due to invalid IL or missing references)
//IL_0412: Expected O, but got Unknown
//IL_0440: Unknown result type (might be due to invalid IL or missing references)
//IL_044a: Expected O, but got Unknown
//IL_047d: Unknown result type (might be due to invalid IL or missing references)
//IL_0487: Expected O, but got Unknown
//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
//IL_04f6: Expected O, but got Unknown
//IL_053f: Unknown result type (might be due to invalid IL or missing references)
//IL_0549: Expected O, but got Unknown
MainAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "lethalthings"));
configManagerPrefab = MainAssets.LoadAsset<GameObject>("Assets/Custom/LethalThings/LTNetworkConfig.prefab");
NetworkPrefabs.RegisterNetworkPrefab(configManagerPrefab);
ContentLoader = new ContentLoader(Plugin.pluginInfo, MainAssets, (Action<CustomContent, GameObject>)delegate(CustomContent content, GameObject prefab)
{
Prefabs.Add(content.ID, prefab);
});
List<CustomContent> list = new List<CustomContent>(23)
{
(CustomContent)new ScrapItem("Arson", "Assets/Custom/LethalThings/Scrap/Arson/ArsonPlush.asset", NetworkConfig.arsonSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("Cookie", "Assets/Custom/LethalThings/Scrap/Cookie/CookieFumo.asset", NetworkConfig.cookieSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("Bilka", "Assets/Custom/LethalThings/Scrap/Toimari/ToimariPlush.asset", NetworkConfig.toimariSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("Hamis", "Assets/Custom/LethalThings/Scrap/Hamis/HamisPlush.asset", NetworkConfig.hamisSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("ArsonDirty", "Assets/Custom/LethalThings/Scrap/Arson/ArsonPlushDirty.asset", NetworkConfig.dirtyArsonSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("Maxwell", "Assets/Custom/LethalThings/Scrap/Maxwell/Dingus.asset", NetworkConfig.maxwellSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("Glizzy", "Assets/Custom/LethalThings/Scrap/glizzy/glizzy.asset", NetworkConfig.glizzySpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("Revolver", "Assets/Custom/LethalThings/Scrap/Flaggun/Toygun.asset", NetworkConfig.revolverSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("GremlinEnergy", "Assets/Custom/LethalThings/Scrap/GremlinEnergy/GremlinEnergy.asset", NetworkConfig.gremlinSodaSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("ToyHammerScrap", "Assets/Custom/LethalThings/Items/ToyHammer/ToyHammer.asset", NetworkConfig.toyHammerScrapSpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ScrapItem("Gnarpy", "Assets/Custom/LethalThings/Scrap/Gnarpy/GnarpyPlush.asset", NetworkConfig.gnarpySpawnChance.Value, (LevelTypes)(-1), (string[])null, (Action<Item>)null),
(CustomContent)new ShopItem("RocketLauncher", "Assets/Custom/LethalThings/Items/RocketLauncher/RocketLauncher.asset", NetworkConfig.rocketLauncherPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/RocketLauncher/RocketLauncherInfo.asset", (Action<Item>)delegate(Item item)
{
NetworkPrefabs.RegisterNetworkPrefab(item.spawnPrefab.GetComponent<RocketLauncher>().missilePrefab);
}),
(CustomContent)new ShopItem("Flaregun", "Assets/Custom/LethalThings/Items/Flaregun/Flaregun.asset", NetworkConfig.flareGunPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/Flaregun/FlaregunInfo.asset", (Action<Item>)delegate(Item item)
{
NetworkPrefabs.RegisterNetworkPrefab(item.spawnPrefab.GetComponent<ProjectileWeapon>().projectilePrefab);
}),
(CustomContent)new ShopItem("FlaregunAmmo", "Assets/Custom/LethalThings/Items/Flaregun/FlaregunAmmo.asset", NetworkConfig.flareGunAmmoPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/Flaregun/FlaregunAmmoInfo.asset", (Action<Item>)null),
(CustomContent)new ShopItem("ToyHammerShop", "Assets/Custom/LethalThings/Items/ToyHammer/ToyHammer.asset", NetworkConfig.toyHammerPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/ToyHammer/ToyHammerInfo.asset", (Action<Item>)null),
(CustomContent)new ShopItem("RemoteRadar", "Assets/Custom/LethalThings/Items/Radar/HandheldRadar.asset", NetworkConfig.remoteRadarPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/Radar/HandheldRadarInfo.asset", (Action<Item>)null),
(CustomContent)new ShopItem("PouchyBelt", "Assets/Custom/LethalThings/Items/Pouch/Pouch.asset", NetworkConfig.pouchyBeltPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/Pouch/PouchInfo.asset", (Action<Item>)null),
(CustomContent)new ShopItem("HackingTool", "Assets/Custom/LethalThings/Items/HackingTool/HackingTool.asset", NetworkConfig.hackingToolPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/HackingTool/HackingToolInfo.asset", (Action<Item>)null),
(CustomContent)new ShopItem("Pinger", "Assets/Custom/LethalThings/Items/PingingTool/PingTool.asset", NetworkConfig.pingerPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Items/PingingTool/PingToolInfo.asset", (Action<Item>)delegate(Item item)
{
NetworkPrefabs.RegisterNetworkPrefab(item.spawnPrefab.GetComponent<Pinger>().pingMarkerPrefab);
}),
(CustomContent)new Unlockable("SmallRug", "Assets/Custom/LethalThings/Unlockables/Rug/SmallRug.asset", NetworkConfig.smallRugPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Unlockables/Rug/RugInfo.asset", (StoreType)2, (Action<UnlockableItem>)null),
(CustomContent)new Unlockable("LargeRug", "Assets/Custom/LethalThings/Unlockables/Rug/LargeRug.asset", NetworkConfig.largeRugPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Unlockables/Rug/RugInfo.asset", (StoreType)2, (Action<UnlockableItem>)null),
(CustomContent)new Unlockable("FatalitiesSign", "Assets/Custom/LethalThings/Unlockables/Sign/Sign.asset", NetworkConfig.fatalitiesSignPrice.Value, (string)null, (string)null, "Assets/Custom/LethalThings/Unlockables/Sign/SignInfo.asset", (StoreType)2, (Action<UnlockableItem>)null),
(CustomContent)new MapHazard("TeleporterTrap", "Assets/Custom/LethalThings/hazards/TeleporterTrap/TeleporterTrap.asset", (LevelTypes)(-1), (string[])null, (Func<SelectableLevel, AnimationCurve>)((SelectableLevel level) => new AnimationCurve((Keyframe[])(object)new Keyframe[2]
{
new Keyframe(0f, 0f),
new Keyframe(1f, 4f)
})), (Action<SpawnableMapObjectDef>)null)
};
if (NetworkConfig.boombaSpawnWeight.Value > 0)
{
list.Add((CustomContent)new CustomEnemy("Boomba", "Assets/Custom/LethalThings/Enemies/Roomba/Boomba.asset", NetworkConfig.boombaSpawnWeight.Value, (LevelTypes)(-1), (SpawnType)0, (string[])null, "Assets/Custom/LethalThings/Enemies/Roomba/BoombaFile.asset", (string)null, (Action<EnemyType>)null));
}
else
{
Plugin.logger.LogInfo((object)"Skipping Boomba enemy registration since spawn weight is 0");
}
if (NetworkConfig.maggieSpawnWeight.Value > 0)
{
list.Add((CustomContent)new CustomEnemy("Maggie", "Assets/Custom/LethalThings/Enemies/Maggie/Maggie.asset", NetworkConfig.maggieSpawnWeight.Value, (LevelTypes)(-1), (SpawnType)0, (string[])null, "Assets/Custom/LethalThings/Enemies/Maggie/MaggieFile.asset", (string)null, (Action<EnemyType>)delegate
{
GameObject val4 = MainAssets.LoadAsset<GameObject>("Assets/Custom/LethalThings/Enemies/Maggie/PlayerRagdollGoop.prefab");
Player.RegisterPlayerRagdoll("LTGoopRagdoll", val4);
}));
}
else
{
Plugin.logger.LogInfo((object)"Skipping Maggie enemy registration since spawn weight is 0");
}
if (NetworkConfig.crystalRaySpawnWeight.Value > 0)
{
list.Add((CustomContent)new CustomEnemy("CrystalRay", "Assets/Custom/LethalThings/Enemies/CrystalRay/CrystalRay.asset", NetworkConfig.crystalRaySpawnWeight.Value, (LevelTypes)(-1), (SpawnType)0, (string[])null, "Assets/Custom/LethalThings/Enemies/CrystalRay/CrystalRayFile.asset", (string)null, (Action<EnemyType>)null));
}
else
{
Plugin.logger.LogInfo((object)"Skipping CrystalRay enemy registration since spawn weight is 0");
}
ContentLoader.RegisterAll(list);
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> val = NetworkConfig.VolumeConfig.Bind<float>("Volume", key ?? "", 100f, "Audio volume for " + key + " (0 - 100)");
AudioSource[] array = componentsInChildren;
foreach (AudioSource val2 in array)
{
val2.volume *= val.Value / 100f;
}
}
}
GameObject val3 = MainAssets.LoadAsset<GameObject>("Assets/Custom/LethalThings/DevMenu.prefab");
NetworkPrefabs.RegisterNetworkPrefab(val3);
devMenuPrefab = val3;
try
{
IEnumerable<Type> loadableTypes = Assembly.GetExecutingAssembly().GetLoadableTypes();
foreach (Type item in loadableTypes)
{
MethodInfo[] methods = item.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);
}
}
}
}
catch (Exception)
{
}
}
}
public static class InputCompat
{
public static InputActionAsset Asset;
public static bool Enabled => Chainloader.PluginInfos.ContainsKey("com.rune580.LethalCompanyInputUtils");
public static InputAction LTUtilityBeltQuick1 => Keybinds.Instance.LTUtilityBeltQuick1;
public static InputAction LTUtilityBeltQuick2 => Keybinds.Instance.LTUtilityBeltQuick2;
public static InputAction LTUtilityBeltQuick3 => Keybinds.Instance.LTUtilityBeltQuick3;
public static InputAction LTUtilityBeltQuick4 => Keybinds.Instance.LTUtilityBeltQuick4;
public static void Init()
{
Keybinds.Instance = new Keybinds();
Asset = Keybinds.Instance.GetAsset();
}
}
public class Keybinds : LcInputActions
{
public static Keybinds Instance;
[InputAction("", Name = "[LT] Utility Belt Quick 1")]
public InputAction LTUtilityBeltQuick1 { get; set; }
[InputAction("", Name = "[LT] Utility Belt Quick 2")]
public InputAction LTUtilityBeltQuick2 { get; set; }
[InputAction("", Name = "[LT] Utility Belt Quick 3")]
public InputAction LTUtilityBeltQuick3 { get; set; }
[InputAction("", Name = "[LT] Utility Belt Quick 4")]
public InputAction LTUtilityBeltQuick4 { get; set; }
public InputActionAsset GetAsset()
{
return ((LcInputActions)this).Asset;
}
}
public class Dingus : SaveableObject
{
[CompilerGenerated]
private sealed class <evilMaxwellMoment>d__36 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public Dingus <>4__this;
private Rigidbody[] <>s__1;
private int <>s__2;
private Rigidbody <rb>5__3;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <evilMaxwellMoment>d__36(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>s__1 = null;
<rb>5__3 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Expected O, but got Unknown
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Unknown result type (might be due to invalid IL or missing references)
//IL_024e: Unknown result type (might be due to invalid IL or missing references)
//IL_0258: Expected O, but got Unknown
//IL_016f: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(1f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
<>4__this.noiseAudio.PlayOneShot(<>4__this.evilNoise, 1f);
<>4__this.evilObject.SetActive(true);
((Renderer)((GrabbableObject)<>4__this).mainObjectRenderer).enabled = false;
if ((Object)(object)<>4__this.noiseAudioFar != (Object)null)
{
<>4__this.noiseAudioFar.PlayOneShot(<>4__this.evilNoise, 1f);
}
if ((Object)(object)<>4__this.triggerAnimator != (Object)null)
{
<>4__this.triggerAnimator.SetTrigger("playAnim");
}
WalkieTalkie.TransmitOneShotAudio(<>4__this.noiseAudio, <>4__this.evilNoise, 1f);
RoundManager.Instance.PlayAudibleNoise(((Component)<>4__this).transform.position, <>4__this.noiseRange, 1f, 0, ((GrabbableObject)<>4__this).isInElevator && StartOfRound.Instance.hangarDoorsClosed, 0);
<>2__current = (object)new WaitForSeconds(1.5f);
<>1__state = 2;
return true;
case 2:
<>1__state = -1;
Utilities.CreateExplosion(((Component)<>4__this).transform.position, spawnExplosionEffect: true, 100, 0f, 6.4f, 6, (CauseOfDeath)3);
<>s__1 = <>4__this.evilObject.GetComponentsInChildren<Rigidbody>();
for (<>s__2 = 0; <>s__2 < <>s__1.Length; <>s__2++)
{
<rb>5__3 = <>s__1[<>s__2];
<rb>5__3.isKinematic = false;
<rb>5__3.AddExplosionForce(1000f, <>4__this.evilObject.transform.position, 100f);
<rb>5__3 = null;
}
<>s__1 = null;
<>2__current = (object)new WaitForSeconds(2f);
<>1__state = 3;
return true;
case 3:
<>1__state = -1;
if (((NetworkBehaviour)<>4__this).IsServer)
{
((Component)<>4__this).GetComponent<NetworkObject>().Despawn(true);
}
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
public AudioSource noiseAudio;
public AudioSource noiseAudioFar;
public AudioSource musicAudio;
public AudioSource musicAudioFar;
[Space(3f)]
public AudioClip[] noiseSFX;
public AudioClip[] noiseSFXFar;
public AudioClip evilNoise;
[Space(3f)]
public float noiseRange;
public float maxLoudness;
public float minLoudness;
public float minPitch;
public float maxPitch;
private Random noisemakerRandom;
public Animator triggerAnimator;
private int timesPlayedWithoutTurningOff = 0;
private RoundManager roundManager;
private float noiseInterval = 1f;
public Animator danceAnimator;
public bool wasLoadedFromSave = false;
public bool exploding = false;
[HideInInspector]
private NetworkVariable<bool> isEvil = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);
public GameObject evilObject;
[HideInInspector]
public NetworkVariable<bool> isPlayingMusic = new NetworkVariable<bool>(NetworkConfig.maxwellPlayMusicDefault.Value, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1);
[HideInInspector]
public NetworkVariable<bool> isPipebomb = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);
public override void SaveObjectData()
{
SaveData.SaveObjectData("dingusBeEvil", isEvil.Value, uniqueId);
}
public override void LoadObjectData()
{
if (((NetworkBehaviour)this).IsHost)
{
bool flag = SaveData.LoadObjectData<bool>("dingusBeEvil", uniqueId);
Plugin.logger.LogInfo((object)$"Loading object[{uniqueId}] save data, evil? {flag}");
if (flag)
{
isEvil.Value = flag;
}
}
}
public override void Start()
{
((GrabbableObject)this).Start();
roundManager = Object.FindObjectOfType<RoundManager>();
noisemakerRandom = new Random(StartOfRound.Instance.randomMapSeed + 85);
Debug.Log((object)"Making the dingus dance");
}
public override void OnNetworkSpawn()
{
base.OnNetworkSpawn();
if (((NetworkBehaviour)this).IsOwner)
{
isPlayingMusic.Value = NetworkConfig.Instance.maxwellPlayMusicDefaultNetVar.Value;
}
if (((NetworkBehaviour)this).IsHost && !StartOfRound.Instance.inShipPhase)
{
isEvil.Value = Random.Range(0f, 100f) <= NetworkConfig.evilMaxwellChance.Value;
}
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).ItemActivate(used, buttonDown);
if (!((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null))
{
int num = noisemakerRandom.Next(0, noiseSFX.Length);
float num2 = (float)noisemakerRandom.Next((int)(minLoudness * 100f), (int)(maxLoudness * 100f)) / 100f;
float pitch = (float)noisemakerRandom.Next((int)(minPitch * 100f), (int)(maxPitch * 100f)) / 100f;
noiseAudio.pitch = pitch;
noiseAudio.PlayOneShot(noiseSFX[num], num2);
if ((Object)(object)noiseAudioFar != (Object)null)
{
noiseAudioFar.pitch = pitch;
noiseAudioFar.PlayOneShot(noiseSFXFar[num], num2);
}
if ((Object)(object)triggerAnimator != (Object)null)
{
triggerAnimator.SetTrigger("playAnim");
}
WalkieTalkie.TransmitOneShotAudio(noiseAudio, noiseSFX[num], num2);
RoundManager.Instance.PlayAudibleNoise(((Component)this).transform.position, noiseRange, num2, 0, ((GrabbableObject)this).isInElevator && StartOfRound.Instance.hangarDoorsClosed, 0);
}
}
public override void DiscardItem()
{
if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
((GrabbableObject)this).playerHeldBy.equippedUsableItemQE = false;
}
((GrabbableObject)this).isBeingUsed = false;
((GrabbableObject)this).DiscardItem();
}
public override void EquipItem()
{
((GrabbableObject)this).EquipItem();
((GrabbableObject)this).playerHeldBy.equippedUsableItemQE = true;
danceAnimator.Play("dingusIdle");
Debug.Log((object)"Making the dingus idle");
}
public override void ItemInteractLeftRight(bool right)
{
((GrabbableObject)this).ItemInteractLeftRight(right);
if (!right && ((NetworkBehaviour)this).IsOwner)
{
isPlayingMusic.Value = !isPlayingMusic.Value;
}
}
public override void InteractItem()
{
((GrabbableObject)this).InteractItem();
if (isEvil.Value && !exploding && !isPipebomb.Value)
{
EvilMaxwellServerRpc();
}
}
public void EvilMaxwellTruly()
{
danceAnimator.Play("dingusIdle");
if (musicAudio.isPlaying)
{
musicAudio.Pause();
musicAudioFar.Pause();
}
((MonoBehaviour)this).StartCoroutine(evilMaxwellMoment());
}
[ServerRpc(RequireOwnership = false)]
public void EvilMaxwellServerRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(88404199u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 88404199u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
isPipebomb.Value = true;
EvilMaxwellClientRpc();
}
}
}
[ClientRpc]
public void EvilMaxwellClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1120322383u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1120322383u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
EvilMaxwellTruly();
exploding = true;
if (((NetworkBehaviour)this).IsOwner)
{
isPlayingMusic.Value = false;
}
timesPlayedWithoutTurningOff = 0;
danceAnimator.Play("dingusIdle");
if (musicAudio.isPlaying)
{
musicAudio.Pause();
musicAudioFar.Pause();
}
Plugin.logger.LogInfo((object)"Evil maxwell moment");
}
}
[IteratorStateMachine(typeof(<evilMaxwellMoment>d__36))]
public IEnumerator evilMaxwellMoment()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <evilMaxwellMoment>d__36(0)
{
<>4__this = this
};
}
public override void Update()
{
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).Update();
if (isEvil.Value)
{
((GrabbableObject)this).grabbable = false;
((GrabbableObject)this).grabbableToEnemies = false;
}
if (isPlayingMusic.Value && !exploding)
{
if (!musicAudio.isPlaying)
{
musicAudio.Play();
musicAudioFar.Play();
}
if (!((GrabbableObject)this).isHeld)
{
danceAnimator.Play("dingusDance");
}
else
{
danceAnimator.Play("dingusIdle");
}
if (noiseInterval <= 0f)
{
noiseInterval = 1f;
timesPlayedWithoutTurningOff++;
roundManager.PlayAudibleNoise(((Component)this).transform.position, 16f, 0.9f, timesPlayedWithoutTurningOff, false, 5);
}
else
{
noiseInterval -= Time.deltaTime;
}
}
else
{
timesPlayedWithoutTurningOff = 0;
danceAnimator.Play("dingusIdle");
if (musicAudio.isPlaying)
{
musicAudio.Pause();
musicAudioFar.Pause();
}
}
}
protected override void __initializeVariables()
{
if (isEvil == null)
{
throw new Exception("Dingus.isEvil cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)isEvil).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)isEvil, "isEvil");
((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)isEvil);
if (isPlayingMusic == null)
{
throw new Exception("Dingus.isPlayingMusic cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)isPlayingMusic).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)isPlayingMusic, "isPlayingMusic");
((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)isPlayingMusic);
if (isPipebomb == null)
{
throw new Exception("Dingus.isPipebomb cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)isPipebomb).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)isPipebomb, "isPipebomb");
((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)isPipebomb);
base.__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(88404199u, new RpcReceiveHandler(__rpc_handler_88404199), "EvilMaxwellServerRpc");
((NetworkBehaviour)this).__registerRpc(1120322383u, new RpcReceiveHandler(__rpc_handler_1120322383), "EvilMaxwellClientRpc");
base.__initializeRpcs();
}
private static void __rpc_handler_88404199(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)1;
((Dingus)(object)target).EvilMaxwellServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1120322383(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)1;
((Dingus)(object)target).EvilMaxwellClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
protected internal override string __getTypeName()
{
return "Dingus";
}
}
public class Missile : NetworkBehaviour
{
public int damage = 50;
public float maxDistance = 10f;
public float minDistance = 0f;
public float gravity = 2.4f;
public float flightDelay = 0.5f;
public float flightForce = 150f;
public float flightTime = 2f;
public float autoDestroyTime = 3f;
private float timeAlive = 0f;
public float LobForce = 100f;
public ParticleSystem particleSystem;
private void OnCollisionEnter(Collision collision)
{
if (((NetworkBehaviour)this).IsHost)
{
Boom();
BoomClientRpc();
}
else
{
BoomServerRpc();
}
}
private void Start()
{
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
((Component)this).GetComponent<Rigidbody>().useGravity = false;
if (((NetworkBehaviour)this).IsHost)
{
((Component)this).GetComponent<Rigidbody>().AddForce(((Component)this).transform.forward * LobForce, (ForceMode)1);
}
}
[ClientRpc]
public void BoomClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3331368301u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3331368301u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
base.__rpc_exec_stage = (__RpcExecStage)0;
Boom();
}
}
}
[ServerRpc]
public void BoomServerRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Invalid comparison between Unknown and I4
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Invalid comparison between Unknown and I4
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
return;
}
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(452316787u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 452316787u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
base.__rpc_exec_stage = (__RpcExecStage)0;
Boom();
BoomClientRpc();
}
}
public void CreateExplosion()
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
PlayerControllerB attacker = ((IEnumerable<PlayerControllerB>)StartOfRound.Instance.allPlayerScripts).FirstOrDefault((Func<PlayerControllerB, bool>)((PlayerControllerB x) => ((NetworkBehaviour)x).OwnerClientId == ((NetworkBehaviour)this).OwnerClientId));
Utilities.CreateExplosion(((Component)this).transform.position, spawnExplosionEffect: true, damage, minDistance, maxDistance, 10, (CauseOfDeath)3, attacker);
}
public void Boom()
{
//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)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_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)
if ((Object)(object)particleSystem == (Object)null)
{
Debug.LogError((object)"No particle system set on missile, destruction time!!");
CreateExplosion();
if (((NetworkBehaviour)this).IsHost)
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
return;
}
particleSystem.Stop(true, (ParticleSystemStopBehavior)1);
((Component)particleSystem).transform.SetParent((Transform)null);
((Component)particleSystem).transform.localScale = Vector3.one;
GameObject gameObject = ((Component)particleSystem).gameObject;
MainModule main = particleSystem.main;
float duration = ((MainModule)(ref main)).duration;
main = particleSystem.main;
MinMaxCurve startLifetime = ((MainModule)(ref main)).startLifetime;
Object.Destroy((Object)(object)gameObject, duration + ((MinMaxCurve)(ref startLifetime)).constant);
CreateExplosion();
if (((NetworkBehaviour)this).IsHost)
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
private void FixedUpdate()
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
if (!((NetworkBehaviour)this).IsHost)
{
return;
}
((Component)this).GetComponent<Rigidbody>().useGravity = false;
((Component)this).GetComponent<Rigidbody>().AddForce(Vector3.down * gravity);
if (timeAlive <= flightTime && timeAlive >= flightDelay)
{
((Component)this).GetComponent<Rigidbody>().AddForce(((Component)this).transform.forward * flightForce);
}
timeAlive += Time.fixedDeltaTime;
if (timeAlive > autoDestroyTime)
{
if (((NetworkBehaviour)this).IsHost)
{
Boom();
BoomClientRpc();
}
else
{
BoomServerRpc();
}
}
else
{
Debug.Log((object)("Time alive: " + timeAlive + " / " + autoDestroyTime));
}
}
protected override void __initializeVariables()
{
((NetworkBehaviour)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(3331368301u, new RpcReceiveHandler(__rpc_handler_3331368301), "BoomClientRpc");
((NetworkBehaviour)this).__registerRpc(452316787u, new RpcReceiveHandler(__rpc_handler_452316787), "BoomServerRpc");
((NetworkBehaviour)this).__initializeRpcs();
}
private static void __rpc_handler_3331368301(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)1;
((Missile)(object)target).BoomClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_452316787(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;
((Missile)(object)target).BoomServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
protected internal override string __getTypeName()
{
return "Missile";
}
}
public class PouchyBelt : GrabbableObject
{
[CompilerGenerated]
private static class <>O
{
public static hook_BeginGrabObject <0>__PlayerControllerB_BeginGrabObject;
}
public Transform beltCosmetic;
public Vector3 beltCosmeticPositionOffset = new Vector3(0f, 0f, 0f);
public Vector3 beltCosmeticRotationOffset = new Vector3(0f, 0f, 0f);
public int beltCapacity = 3;
private PlayerControllerB previousPlayerHeldBy;
public List<int> slotIndexes = new List<int>();
public static void Initialize()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
object obj = <>O.<0>__PlayerControllerB_BeginGrabObject;
if (obj == null)
{
hook_BeginGrabObject val = PlayerControllerB_BeginGrabObject;
<>O.<0>__PlayerControllerB_BeginGrabObject = val;
obj = (object)val;
}
PlayerControllerB.BeginGrabObject += (hook_BeginGrabObject)obj;
}
public void Awake()
{
if (InputCompat.Enabled)
{
InputCompat.LTUtilityBeltQuick1.started += InputReceived;
InputCompat.LTUtilityBeltQuick2.started += InputReceived;
InputCompat.LTUtilityBeltQuick3.started += InputReceived;
InputCompat.LTUtilityBeltQuick4.started += InputReceived;
}
}
private static void PlayerControllerB_BeginGrabObject(orig_BeginGrabObject orig, PlayerControllerB self)
{
orig.Invoke(self);
if (self.currentlyGrabbingObject is PouchyBelt)
{
self.currentlyGrabbingObject.grabbable = true;
}
}
public override void InteractItem()
{
if (GameNetworkManager.Instance.localPlayerController.ItemSlots.Any((GrabbableObject x) => (Object)(object)x != (Object)null && x is PouchyBelt))
{
GameNetworkManager.Instance.localPlayerController.currentlyGrabbingObject.grabbable = false;
}
((GrabbableObject)this).InteractItem();
}
public void InputReceived(CallbackContext context)
{
if (((NetworkBehaviour)this).IsOwner && (Object)(object)base.playerHeldBy != (Object)null && ((CallbackContext)(ref context)).started)
{
int num = -1;
if (((CallbackContext)(ref context)).action == InputCompat.LTUtilityBeltQuick1)
{
num = 0;
}
else if (((CallbackContext)(ref context)).action == InputCompat.LTUtilityBeltQuick2)
{
num = 1;
}
else if (((CallbackContext)(ref context)).action == InputCompat.LTUtilityBeltQuick3)
{
num = 2;
}
else if (((CallbackContext)(ref context)).action == InputCompat.LTUtilityBeltQuick4)
{
num = 3;
}
if (num != -1 && num < slotIndexes.Count)
{
base.playerHeldBy.SwitchItemSlots(slotIndexes[num]);
}
}
}
public override void LateUpdate()
{
//IL_00da: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: 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)
//IL_00f6: 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_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_010f: Unknown result type (might be due to invalid IL or missing references)
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).LateUpdate();
if (GameNetworkManager.Instance.localPlayerController.ItemSlots.Any((GrabbableObject x) => (Object)(object)x != (Object)null && x is PouchyBelt))
{
base.customGrabTooltip = "(Cannot hold more than 1 belt)";
}
else
{
base.customGrabTooltip = "Pick up belt";
}
if ((Object)(object)previousPlayerHeldBy != (Object)null)
{
((Component)beltCosmetic).gameObject.SetActive(true);
beltCosmetic.SetParent((Transform)null);
((Renderer)((Component)beltCosmetic).GetComponent<MeshRenderer>()).enabled = true;
if (((NetworkBehaviour)this).IsOwner)
{
((Renderer)((Component)beltCosmetic).GetComponent<MeshRenderer>()).enabled = false;
}
Transform parent = previousPlayerHeldBy.lowerSpine.parent;
beltCosmetic.position = parent.position + beltCosmeticPositionOffset;
Quaternion rotation = parent.rotation;
Quaternion rotation2 = Quaternion.Euler(((Quaternion)(ref rotation)).eulerAngles + beltCosmeticRotationOffset);
beltCosmetic.rotation = rotation2;
((Renderer)base.mainObjectRenderer).enabled = false;
((Component)this).gameObject.SetActive(true);
}
else
{
((Component)beltCosmetic).gameObject.SetActive(false);
((Renderer)base.mainObjectRenderer).enabled = true;
beltCosmetic.SetParent(((Component)this).transform);
}
}
public void UpdateHUD(bool add)
{
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: 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_0176: Unknown result type (might be due to invalid IL or missing references)
//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0234: Unknown result type (might be due to invalid IL or missing references)
//IL_0252: Unknown result type (might be due to invalid IL or missing references)
slotIndexes.Clear();
HUDManager instance = HUDManager.Instance;
if (add)
{
int num = 0;
GrabbableObject[] itemSlots = GameNetworkManager.Instance.localPlayerController.ItemSlots;
foreach (GrabbableObject val in itemSlots)
{
if (val is PouchyBelt)
{
num++;
}
}
Image val2 = instance.itemSlotIconFrames[0];
Image val3 = instance.itemSlotIcons[0];
int num2 = instance.itemSlotIconFrames.Length;
CanvasScaler componentInParent = ((Component)val2).GetComponentInParent<CanvasScaler>();
AspectRatioFitter componentInParent2 = ((Component)val2).GetComponentInParent<AspectRatioFitter>();
float x = ((Graphic)val2).rectTransform.sizeDelta.x;
float y = ((Graphic)val2).rectTransform.sizeDelta.y;
float num3 = ((Graphic)val2).rectTransform.anchoredPosition.y + 1.125f * y * (float)num;
Vector3 localEulerAngles = ((Transform)((Graphic)val2).rectTransform).localEulerAngles;
Vector3 localEulerAngles2 = ((Transform)((Graphic)val3).rectTransform).localEulerAngles;
List<Image> list = instance.itemSlotIconFrames.ToList();
List<Image> list2 = instance.itemSlotIcons.ToList();
int count = list.Count;
float num4 = (float)beltCapacity * x + (float)(beltCapacity - 1) * 15f;
Debug.Log((object)$"Adding {beltCapacity} item slots! Surely this will go well..");
Debug.Log((object)$"Adding after index: {count}");
for (int j = 0; j < beltCapacity; j++)
{
float num5 = 0f - ((Component)((Transform)((Graphic)val2).rectTransform).parent).GetComponent<RectTransform>().sizeDelta.x / 2f - 3f;
float num6 = num5 + (float)j * x + (float)j * 15f;
Image val4 = list[0];
Image val5 = Object.Instantiate<Image>(val4, ((Component)val2).transform.parent);
((Object)val5).name = $"Slot{num2 + j}[LethalThingsBelt]";
((Graphic)val5).rectTransform.anchoredPosition = new Vector2(num6, num3);
((Transform)((Graphic)val5).rectTransform).eulerAngles = localEulerAngles;
Image component = ((Component)((Component)val5).transform.GetChild(0)).GetComponent<Image>();
((Object)component).name = "icon";
((Behaviour)component).enabled = false;
((Transform)((Graphic)component).rectTransform).eulerAngles = localEulerAngles2;
((Transform)((Graphic)component).rectTransform).Rotate(new Vector3(0f, 0f, -90f));
int num7 = count + j;
list.Insert(num7, val5);
list2.Insert(num7, component);
slotIndexes.Add(num7);
((Component)val5).transform.SetSiblingIndex(num7);
}
instance.itemSlotIconFrames = list.ToArray();
instance.itemSlotIcons = list2.ToArray();
Debug.Log((object)$"Added {beltCapacity} item slots!");
return;
}
List<Image> list3 = instance.itemSlotIconFrames.ToList();
List<Image> list4 = instance.itemSlotIcons.ToList();
int count2 = list3.Count;
int num8 = 0;
for (int num9 = count2 - 1; num9 >= 0; num9--)
{
if (((Object)list3[num9]).name.Contains("[LethalThingsBelt]"))
{
num8++;
Image val6 = list3[num9];
list3.RemoveAt(num9);
list4.RemoveAt(num9);
Object.Destroy((Object)(object)((Component)val6).gameObject);
if (num8 >= beltCapacity)
{
break;
}
}
}
instance.itemSlotIconFrames = list3.ToArray();
instance.itemSlotIcons = list4.ToArray();
Debug.Log((object)$"Removed {beltCapacity} item slots!");
}
public void AddItemSlots()
{
if ((Object)(object)base.playerHeldBy != (Object)null)
{
List<GrabbableObject> list = base.playerHeldBy.ItemSlots.ToList();
base.playerHeldBy.ItemSlots = (GrabbableObject[])(object)new GrabbableObject[list.Count + beltCapacity];
for (int i = 0; i < list.Count; i++)
{
base.playerHeldBy.ItemSlots[i] = list[i];
}
if ((Object)(object)base.playerHeldBy == (Object)(object)GameNetworkManager.Instance.localPlayerController)
{
UpdateHUD(add: true);
}
}
}
public void RemoveItemSlots()
{
if (!((Object)(object)base.playerHeldBy != (Object)null))
{
return;
}
int num = base.playerHeldBy.ItemSlots.Length - beltCapacity;
int currentItemSlot = base.playerHeldBy.currentItemSlot;
for (int i = 0; i < beltCapacity; i++)
{
GrabbableObject val = base.playerHeldBy.ItemSlots[num + i];
if ((Object)(object)val != (Object)null)
{
base.playerHeldBy.DropItem(val, num + i);
}
}
int currentItemSlot2 = base.playerHeldBy.currentItemSlot;
currentItemSlot2 = ((currentItemSlot < base.playerHeldBy.ItemSlots.Length) ? currentItemSlot : 0);
List<GrabbableObject> list = base.playerHeldBy.ItemSlots.ToList();
base.playerHeldBy.ItemSlots = (GrabbableObject[])(object)new GrabbableObject[list.Count - beltCapacity];
for (int j = 0; j < base.playerHeldBy.ItemSlots.Length; j++)
{
base.playerHeldBy.ItemSlots[j] = list[j];
}
if ((Object)(object)base.playerHeldBy == (Object)(object)GameNetworkManager.Instance.localPlayerController)
{
UpdateHUD(add: false);
}
base.playerHeldBy.SwitchItemSlots(currentItemSlot2);
}
public override void DiscardItem()
{
RemoveItemSlots();
previousPlayerHeldBy = null;
((GrabbableObject)this).DiscardItem();
}
public override void OnNetworkDespawn()
{
RemoveItemSlots();
previousPlayerHeldBy = null;
((NetworkBehaviour)this).OnNetworkDespawn();
}
public void GrabItemOnClient()
{
((GrabbableObject)this).GrabItemOnClient();
}
public override void OnDestroy()
{
if (InputCompat.Enabled)
{
InputCompat.LTUtilityBeltQuick1.started -= InputReceived;
InputCompat.LTUtilityBeltQuick2.started -= InputReceived;
InputCompat.LTUtilityBeltQuick3.started -= InputReceived;
InputCompat.LTUtilityBeltQuick4.started -= InputReceived;
}
((NetworkBehaviour)this).OnDestroy();
}
public override void EquipItem()
{
((GrabbableObject)this).EquipItem();
if ((Object)(object)base.playerHeldBy != (Object)null)
{
if ((Object)(object)base.playerHeldBy != (Object)(object)previousPlayerHeldBy)
{
AddItemSlots();
}
previousPlayerHeldBy = base.playerHeldBy;
}
}
protected override void __initializeVariables()
{
((GrabbableObject)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
((GrabbableObject)this).__initializeRpcs();
}
[MethodImpl(MethodImplOptions.NoInlining)]
protected internal override string __getTypeName()
{
return "PouchyBelt";
}
}
public class PowerOutletStun : NetworkBehaviour
{
[CompilerGenerated]
private sealed class <electrocutionDelayed>d__7 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public ItemCharger socket;
public PowerOutletStun <>4__this;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <electrocutionDelayed>d__7(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Expected O, but got Unknown
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
Debug.Log((object)"Electrocution started");
socket.zapAudio.Play();
<>2__current = (object)new WaitForSeconds(0.75f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
socket.chargeStationAnimator.SetTrigger("zap");
Debug.Log((object)"Electrocution finished");
if (((NetworkBehaviour)<>4__this).NetworkObject.IsOwner && !((NetworkBehaviour)<>4__this).NetworkObject.IsOwnedByServer)
{
Debug.Log((object)"Sending stun to server!!");
<>4__this.ElectrocutedServerRpc(((Component)<>4__this).transform.position);
}
else if (((NetworkBehaviour)<>4__this).NetworkObject.IsOwner && ((NetworkBehaviour)<>4__this).NetworkObject.IsOwnedByServer)
{
Debug.Log((object)"Sending stun to clients!!");
<>4__this.ElectrocutedClientRpc(((Component)<>4__this).transform.position);
<>4__this.Electrocuted(((Component)<>4__this).transform.position);
}
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
private Coroutine electrocutionCoroutine;
public AudioSource strikeAudio;
public ParticleSystem strikeParticle;
[HideInInspector]
private NetworkVariable<int> damage = new NetworkVariable<int>(20, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);
public void Electrocute(ItemCharger socket)
{
Debug.Log((object)"Attempting electrocution");
if (electrocutionCoroutine != null)
{
((MonoBehaviour)this).StopCoroutine(electrocutionCoroutine);
}
electrocutionCoroutine = ((MonoBehaviour)this).StartCoroutine(electrocutionDelayed(socket));
}
public void Awake()
{
//IL_0036: 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)
StormyWeather val = Object.FindObjectOfType<StormyWeather>(true);
GameObject gameObject = ((Component)val.targetedStrikeAudio).gameObject;
strikeAudio = Object.Instantiate<GameObject>(gameObject, ((Component)this).transform).GetComponent<AudioSource>();
((Component)strikeAudio).transform.localPosition = Vector3.zero;
((Component)strikeAudio).gameObject.SetActive(true);
strikeParticle = Object.Instantiate<GameObject>(((Component)val.explosionEffectParticle).gameObject, ((Component)this).transform).GetComponent<ParticleSystem>();
((Component)strikeParticle).transform.localPosition = Vector3.zero;
((Component)strikeParticle).gameObject.SetActive(true);
}
public override void OnNetworkSpawn()
{
((NetworkBehaviour)this).OnNetworkSpawn();
if (((NetworkBehaviour)this).IsHost)
{
damage.Value = NetworkConfig.itemChargerElectrocutionDamage.Value;
}
}
[IteratorStateMachine(typeof(<electrocutionDelayed>d__7))]
private IEnumerator electrocutionDelayed(ItemCharger socket)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <electrocutionDelayed>d__7(0)
{
<>4__this = this,
socket = socket
};
}
[ClientRpc]
private void ElectrocutedClientRpc(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_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(328188188u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 328188188u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
base.__rpc_exec_stage = (__RpcExecStage)0;
Debug.Log((object)"Stun received!!");
Electrocuted(position);
}
}
}
private void Electrocuted(Vector3 position)
{
//IL_0008: 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)
StormyWeather val = Object.FindObjectOfType<StormyWeather>(true);
Utilities.CreateExplosion(position, spawnExplosionEffect: false, damage.Value, 0f, 5f, 3, (CauseOfDeath)11);
strikeParticle.Play();
val.PlayThunderEffects(position, strikeAudio);
}
[ServerRpc]
private void ElectrocutedServerRpc(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_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Invalid comparison between Unknown and I4
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Invalid comparison between Unknown and I4
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
return;
}
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2844681185u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2844681185u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
base.__rpc_exec_stage = (__RpcExecStage)0;
ElectrocutedClientRpc(position);
}
}
protected override void __initializeVariables()
{
if (damage == null)
{
throw new Exception("PowerOutletStun.damage cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)damage).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)damage, "damage");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)damage);
((NetworkBehaviour)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(328188188u, new RpcReceiveHandler(__rpc_handler_328188188), "ElectrocutedClientRpc");
((NetworkBehaviour)this).__registerRpc(2844681185u, new RpcReceiveHandler(__rpc_handler_2844681185), "ElectrocutedServerRpc");
((NetworkBehaviour)this).__initializeRpcs();
}
private static void __rpc_handler_328188188(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)1;
((PowerOutletStun)(object)target).ElectrocutedClientRpc(position);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2844681185(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Invalid comparison between Unknown and I4
NetworkManager networkManager = target.NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
}
else
{
Vector3 position = default(Vector3);
((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
target.__rpc_exec_stage = (__RpcExecStage)1;
((PowerOutletStun)(object)target).ElectrocutedServerRpc(position);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
protected internal override string __getTypeName()
{
return "PowerOutletStun";
}
}
public class ProjectileWeapon : SaveableObject
{
public AudioSource mainAudio;
public AudioClip[] activateClips;
public AudioClip[] noAmmoSounds;
public AudioClip[] reloadSounds;
public Transform aimDirection;
public int maxAmmo = 4;
[HideInInspector]
private NetworkVariable<int> currentAmmo = new NetworkVariable<int>(4, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);
public GameObject projectilePrefab;
public float LobForce = 100f;
private float timeSinceLastShot;
private PlayerControllerB previousPlayerHeldBy;
public Animator Animator;
public ParticleSystem particleSystem;
public Item ammoItem;
public int ammoSlotToUse = -1;
public override void SaveObjectData()
{
SaveData.SaveObjectData("projectileWeaponAmmoData", currentAmmo.Value, uniqueId);
}
public override void LoadObjectData()
{
if (((NetworkBehaviour)this).IsHost)
{
currentAmmo.Value = SaveData.LoadObjectData<int>("projectileWeaponAmmoData", uniqueId);
}
}
public static void Init()
{
}
private static bool GrabbableObject_UseItemBatteries(orig_UseItemBatteries orig, GrabbableObject self, bool isThrowable, bool buttonDown)
{
if (self is ProjectileWeapon)
{
return true;
}
return orig.Invoke(self, isThrowable, buttonDown);
}
public override void Start()
{
((GrabbableObject)this).Start();
}
public override void OnDestroy()
{
((NetworkBehaviour)this).OnDestroy();
}
public override void OnNetworkSpawn()
{
base.OnNetworkSpawn();
if (((NetworkBehaviour)this).IsServer)
{
currentAmmo.Value = maxAmmo;
}
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).ItemActivate(used, buttonDown);
if (currentAmmo.Value > 0)
{
if (((NetworkBehaviour)this).IsHost)
{
NetworkVariable<int> obj = currentAmmo;
int value = obj.Value;
obj.Value = value - 1;
}
PlayRandomAudio(mainAudio, activateClips);
Animator.Play("fire");
particleSystem.Play();
timeSinceLastShot = 0f;
if (((NetworkBehaviour)this).IsOwner)
{
if (((NetworkBehaviour)this).IsHost)
{
ProjectileSpawner(aimDirection.position, aimDirection.rotation, aimDirection.forward);
}
else
{
SpawnProjectileServerRpc(aimDirection.position, aimDirection.rotation, aimDirection.forward);
}
}
}
else
{
PlayRandomAudio(mainAudio, noAmmoSounds);
}
}
private bool ReloadedGun()
{
int num = FindAmmoInInventory();
if (num == -1)
{
return false;
}
ammoSlotToUse = num;
return true;
}
private int FindAmmoInInventory()
{
for (int i = 0; i < ((GrabbableObject)this).playerHeldBy.ItemSlots.Length; i++)
{
if (!((Object)(object)((GrabbableObject)this).playerHeldBy.ItemSlots[i] == (Object)null) && ((GrabbableObject)this).playerHeldBy.ItemSlots[i].itemProperties.itemId == ammoItem.itemId)
{
return i;
}
}
return -1;
}
[ServerRpc]
private void FixWeightServerRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Invalid comparison between Unknown and I4
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Invalid comparison between Unknown and I4
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
return;
}
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(43845628u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 43845628u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
FixWeightClientRpc();
}
}
[ClientRpc]
private void FixWeightClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(948021082u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 948021082u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
PlayerControllerB playerHeldBy = ((GrabbableObject)this).playerHeldBy;
playerHeldBy.carryWeight -= Mathf.Clamp(ammoItem.weight - 1f, 0f, 10f);
}
}
}
public override void ItemInteractLeftRight(bool right)
{
((GrabbableObject)this).ItemInteractLeftRight(right);
if (right || !((NetworkBehaviour)this).IsOwner)
{
return;
}
if (ReloadedGun())
{
if (currentAmmo.Value > 0)
{
HUDManager.Instance.DisplayTip("Item already loaded.", "You can reload once you use up all the ammo.", false, false, "LC_Tip1");
return;
}
ReloadAmmoServerRpc();
DestroyItemInSlotAndSync(ammoSlotToUse);
ammoSlotToUse = -1;
}
else
{
HUDManager.Instance.DisplayTip("No ammo found.", "Buy " + ammoItem.itemName + " from the Terminal to reload.", false, false, "LC_Tip1");
}
}
[ServerRpc]
private void ReloadAmmoServerRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Invalid comparison between Unknown and I4
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Invalid comparison between Unknown and I4
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
return;
}
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1064596822u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1064596822u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
currentAmmo.Value = maxAmmo;
ReloadAmmoSoundClientRpc();
}
}
[ClientRpc]
private void ReloadAmmoSoundClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3520251861u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3520251861u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
PlayRandomAudio(mainAudio, reloadSounds);
Animator.Play("reload");
}
}
}
[ServerRpc]
private void SpawnProjectileServerRpc(Vector3 aimPosition, Quaternion aimRotation, Vector3 forward)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Invalid comparison between Unknown and I4
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Invalid comparison between Unknown and I4
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
return;
}
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1043162412u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref aimPosition);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref aimRotation);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref forward);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1043162412u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
ProjectileSpawner(aimPosition, aimRotation, forward);
}
}
private void ProjectileSpawner(Vector3 aimPosition, Quaternion aimRotation, Vector3 forward)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: 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_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
GameObject val = Object.Instantiate<GameObject>(projectilePrefab, aimPosition, aimRotation);
val.GetComponent<NetworkObject>().SpawnWithOwnership(((NetworkBehaviour)this).OwnerClientId, false);
ApplyProjectileForceClientRpc(NetworkObjectReference.op_Implicit(val.GetComponent<NetworkObject>()), aimPosition, aimRotation, forward);
}
[ClientRpc]
public void ApplyProjectileForceClientRpc(NetworkObjectReference projectile, Vector3 aimPosition, Quaternion aimRotation, Vector3 forward)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: 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_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: 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_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2170744407u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref projectile, default(ForNetworkSerializable));
((FastBufferWriter)(ref val2)).WriteValueSafe(ref aimPosition);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref aimRotation);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref forward);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2170744407u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
NetworkObject val3 = default(NetworkObject);
if (((NetworkObjectReference)(ref projectile)).TryGet(ref val3, (NetworkManager)null))
{
GameObject gameObject = ((Component)val3).gameObject;
gameObject.transform.position = aimPosition;
gameObject.transform.rotation = aimRotation;
gameObject.GetComponent<Rigidbody>().AddForce(forward * LobForce, (ForceMode)1);
}
}
}
private void PlayRandomAudio(AudioSource audioSource, AudioClip[] audioClips)
{
if (audioClips.Length != 0)
{
audioSource.PlayOneShot(audioClips[Random.Range(0, audioClips.Length)]);
}
}
public override void Update()
{
((GrabbableObject)this).Update();
timeSinceLastShot += Time.deltaTime;
}
private void OnEnable()
{
}
private void OnDisable()
{
}
public override void PocketItem()
{
((GrabbableObject)this).PocketItem();
if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
((GrabbableObject)this).playerHeldBy.equippedUsableItemQE = false;
}
}
public override void DiscardItem()
{
((GrabbableObject)this).DiscardItem();
if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
((GrabbableObject)this).playerHeldBy.equippedUsableItemQE = false;
}
}
public override void EquipItem()
{
((GrabbableObject)this).EquipItem();
((GrabbableObject)this).playerHeldBy.equippedUsableItemQE = true;
}
public void DestroyItemInSlotAndSync(int itemSlot)
{
if (((NetworkBehaviour)this).IsOwner)
{
if (itemSlot >= ((GrabbableObject)this).playerHeldBy.ItemSlots.Length || (Object)(object)((GrabbableObject)this).playerHeldBy.ItemSlots[itemSlot] == (Object)null)
{
Debug.LogError((object)$"Destroy item in slot called for a slot (slot {itemSlot}) which is empty or incorrect");
}
DestroyItemInSlotServerRpc(itemSlot);
}
}
[ServerRpc]
public void DestroyItemInSlotServerRpc(int itemSlot)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Invalid comparison between Unknown and I4
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Invalid comparison between Unknown and I4
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
return;
}
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3656085789u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, itemSlot);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3656085789u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
DestroyItemInSlotClientRpc(itemSlot);
}
}
[ClientRpc]
public void DestroyItemInSlotClientRpc(int itemSlot)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager =