using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using GameNetcodeStuff;
using HarmonyLib;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using MoreItems.Behaviours;
using MoreItems.NetcodePatcher;
using Unity.Netcode;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("MoreItems")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+314a83616cd336df3dc42bf188e52dde24b93fdd")]
[assembly: AssemblyProduct("MoreItems")]
[assembly: AssemblyTitle("MoreItems")]
[assembly: AssemblyVersion("1.0.0.0")]
[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;
}
}
}
namespace MoreItems
{
[BepInPlugin("LeoLR.MoreItems", "MoreItems", "9.0.1")]
public class Plugin : BaseUnityPlugin
{
private const string guid = "LeoLR.MoreItems";
private const string name = "MoreItems";
private const string version = "9.0.1";
private Harmony harmony = new Harmony("LeoLR.MoreItems");
public static Plugin instance;
public AssetBundle bundle;
private void Awake()
{
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
Type[] array = types;
foreach (Type type in array)
{
MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
MethodInfo[] array2 = methods;
foreach (MethodInfo methodInfo in array2)
{
object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
if (customAttributes.Length != 0)
{
methodInfo.Invoke(null, null);
}
}
}
instance = this;
string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "moreitems");
bundle = AssetBundle.LoadFromFile(text);
Item val = bundle.LoadAsset<Item>("Assets/Dynamite/DynamiteItem.asset");
((GrabbableObject)val.spawnPrefab.AddComponent<DynamiteBehaviour>()).itemProperties = val;
Utilities.FixMixerGroups(val.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab);
TerminalNode val2 = ScriptableObject.CreateInstance<TerminalNode>();
val2.clearPreviousText = true;
val2.displayText = "Explodes after a few seconds";
Items.RegisterShopItem(val, (TerminalNode)null, (TerminalNode)null, val2, 50);
Item val3 = bundle.LoadAsset<Item>("Assets/Karma/KarmaItem.asset");
((GrabbableObject)val3.spawnPrefab.AddComponent<KarmaBehaviour>()).itemProperties = val3;
Utilities.FixMixerGroups(val3.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val3.spawnPrefab);
TerminalNode val4 = ScriptableObject.CreateInstance<TerminalNode>();
val4.clearPreviousText = true;
val4.displayText = "A massive railgun, requires battery to fire and has a charge time";
Items.RegisterShopItem(val3, (TerminalNode)null, (TerminalNode)null, val4, 550);
Item val5 = bundle.LoadAsset<Item>("Assets/Sypo/SypoItem.asset");
((GrabbableObject)val5.spawnPrefab.AddComponent<SypoBehaviour>()).itemProperties = val5;
Utilities.FixMixerGroups(val5.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val5.spawnPrefab);
Items.RegisterScrap(val5, 15, (LevelTypes)(-1));
Item val6 = bundle.LoadAsset<Item>("Assets/Minikit/MinikitItem.asset");
Utilities.FixMixerGroups(val6.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val6.spawnPrefab);
Items.RegisterScrap(val6, 15, (LevelTypes)(-1));
Item val7 = bundle.LoadAsset<Item>("Assets/GravityCoil/GravityCoilItem.asset");
((GrabbableObject)val7.spawnPrefab.AddComponent<GravityCoilBehaviour>()).itemProperties = val7;
Utilities.FixMixerGroups(val7.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val7.spawnPrefab);
Items.RegisterScrap(val7, 15, (LevelTypes)(-1));
Item val8 = bundle.LoadAsset<Item>("Assets/FramedPic/FramedPicItem.asset");
((GrabbableObject)val8.spawnPrefab.AddComponent<FramedPicBehaviour>()).itemProperties = val8;
Utilities.FixMixerGroups(val8.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val8.spawnPrefab);
Items.RegisterScrap(val8, 15, (LevelTypes)(-1));
Item val9 = bundle.LoadAsset<Item>("Assets/Phone/PhoneItem.asset");
((GrabbableObject)val9.spawnPrefab.AddComponent<PhoneBehaviour>()).itemProperties = val9;
Utilities.FixMixerGroups(val9.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val9.spawnPrefab);
Items.RegisterScrap(val9, 15, (LevelTypes)(-1));
Item val10 = bundle.LoadAsset<Item>("Assets/SlapHand/SlapHandItem.asset");
((GrabbableObject)val10.spawnPrefab.AddComponent<SlapHandBehaviour>()).itemProperties = val10;
Utilities.FixMixerGroups(val10.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val10.spawnPrefab);
Items.RegisterScrap(val10, 15, (LevelTypes)(-1));
Item val11 = bundle.LoadAsset<Item>("Assets/Adrenaline/AdrenalineItem.asset");
((GrabbableObject)val11.spawnPrefab.AddComponent<AdrenalineBehaviour>()).itemProperties = val11;
Utilities.FixMixerGroups(val11.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val11.spawnPrefab);
TerminalNode val12 = ScriptableObject.CreateInstance<TerminalNode>();
val12.clearPreviousText = true;
val12.displayText = "Gives a temporary speed and stamina boost (stackable)";
Items.RegisterShopItem(val11, (TerminalNode)null, (TerminalNode)null, val12, 35);
Item val13 = bundle.LoadAsset<Item>("Assets/BananaPeel/BananaItem.asset");
((GrabbableObject)val13.spawnPrefab.AddComponent<BananaBehaviour>()).itemProperties = val13;
Utilities.FixMixerGroups(val13.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val13.spawnPrefab);
Items.RegisterScrap(val13, 15, (LevelTypes)(-1));
Item val14 = bundle.LoadAsset<Item>("Assets/Bottle/BottleItem.asset");
((GrabbableObject)val14.spawnPrefab.AddComponent<BottleBehaviour>()).itemProperties = val14;
Utilities.FixMixerGroups(val14.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val14.spawnPrefab);
Items.RegisterScrap(val14, 20, (LevelTypes)(-1));
harmony.PatchAll();
}
}
internal class Utils
{
public static AudioSource getAudioSource(GameObject go, string rootNodeName, string gameObjectName)
{
return ((Component)go.transform.Find(rootNodeName).Find(gameObjectName)).gameObject.GetComponent<AudioSource>();
}
public static ParticleSystem getParticleSystem(GameObject go, string rootNodeName, string gameObjectName)
{
return ((Component)go.transform.Find(rootNodeName).Find(gameObjectName)).gameObject.GetComponent<ParticleSystem>();
}
public static Dictionary<string, ParticleSystem> getAllParticleSystems(GameObject go, string rootNodeName, string[] gameObjectsName)
{
Dictionary<string, ParticleSystem> dictionary = new Dictionary<string, ParticleSystem>();
foreach (string text in gameObjectsName)
{
dictionary.Add(text, getParticleSystem(go, rootNodeName, text));
}
return dictionary;
}
public static Dictionary<string, AudioSource> getAllAudioSources(GameObject go, string rootNodeName, string[] gameObjectsName)
{
Dictionary<string, AudioSource> dictionary = new Dictionary<string, AudioSource>();
foreach (string text in gameObjectsName)
{
dictionary.Add(text, getAudioSource(go, rootNodeName, text));
}
return dictionary;
}
public static void destroyObj(GameObject go, string obj)
{
try
{
Object.Destroy((Object)(object)((Component)go.transform.Find(obj)).gameObject);
}
catch
{
Debug.LogError((object)("Cannot destroy " + obj));
}
}
public static void Explode(GameObject go, float radius, float baseDamage, float distanceInfluencedDamage, bool increaseHeightForLinecast = false)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: 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_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0204: Unknown result type (might be due to invalid IL or missing references)
//IL_020f: Unknown result type (might be due to invalid IL or missing references)
//IL_0214: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_014b: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: Unknown result type (might be due to invalid IL or missing references)
//IL_0185: Unknown result type (might be due to invalid IL or missing references)
//IL_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_0229: Unknown result type (might be due to invalid IL or missing references)
//IL_022e: Unknown result type (might be due to invalid IL or missing references)
int mask = LayerMask.GetMask(new string[2] { "Player", "Enemies" });
List<int> list = new List<int>();
Collider[] array = Physics.OverlapSphere(go.transform.position, radius, mask);
Collider[] array2 = array;
foreach (Collider val in array2)
{
PlayerControllerB component = ((Component)val).GetComponent<PlayerControllerB>();
GameObject playerColliderGameObject = ((Component)val).gameObject;
Transform enemyColliderRoot = ((Component)val).transform.root;
if ((Object)(object)component != (Object)null && !list.Exists((int i) => i == ((Object)playerColliderGameObject).GetInstanceID()))
{
list.Add(((Object)playerColliderGameObject).GetInstanceID());
if (!Physics.Linecast(((Component)component).transform.position + Vector3.up * 0.5f, go.transform.position + Vector3.up * (increaseHeightForLinecast ? 0.5f : 0f), StartOfRound.Instance.collidersAndRoomMaskAndDefault) && component.playerClientId == GameNetworkManager.Instance.localPlayerController.playerClientId)
{
float num = Vector3.Distance(((Component)component).transform.position + Vector3.up * 0.5f, go.transform.position);
float num2 = distanceInfluencedDamage / num + baseDamage;
component.DamagePlayer((int)num2, true, true, (CauseOfDeath)3, 0, false, default(Vector3));
}
}
EnemyAI component2 = ((Component)enemyColliderRoot).GetComponent<EnemyAI>();
if (!((Object)(object)component2 != (Object)null) || list.Exists((int i) => i == ((Object)((Component)enemyColliderRoot).gameObject).GetInstanceID()))
{
continue;
}
list.Add(((Object)((Component)enemyColliderRoot).gameObject).GetInstanceID());
if (!Physics.Linecast(((Component)component2).transform.position + Vector3.up * 0.5f, go.transform.position + Vector3.up * (increaseHeightForLinecast ? 0.5f : 0f), StartOfRound.Instance.collidersAndRoomMaskAndDefault))
{
if ((Object)(object)component2.creatureVoice != (Object)null && (Object)(object)component2.dieSFX != (Object)null)
{
component2.creatureVoice.PlayOneShot(component2.dieSFX);
}
component2.KillEnemy(true);
}
}
list.Clear();
}
public static bool frameCount(int interval)
{
return Time.frameCount % interval != 0;
}
public static bool isLocalPlayerHosting()
{
return ((NetworkBehaviour)GameNetworkManager.Instance.localPlayerController).IsHost || ((NetworkBehaviour)GameNetworkManager.Instance.localPlayerController).IsServer;
}
}
}
namespace MoreItems.Behaviours
{
internal class AdrenalineBehaviour : GrabbableObject
{
private float runSpeedMultiplier = 1.5f;
private bool triggered = false;
private float timer = 15f;
private PlayerControllerB playerActiveOn = null;
private string[] sources = new string[1] { "useSFX" };
private Dictionary<string, AudioSource> sourcesDict = new Dictionary<string, AudioSource>();
private void Awake()
{
base.grabbable = true;
base.grabbableToEnemies = true;
sourcesDict = Utils.getAllAudioSources(((Component)this).gameObject, "AdrSFX", sources);
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
((GrabbableObject)this).ItemActivate(used, buttonDown);
if ((Object)(object)base.playerHeldBy != (Object)null)
{
activateSyringeServerRpc();
}
}
private IEnumerator StartTimer()
{
yield return (object)new WaitForSeconds(timer);
triggered = false;
PlayerControllerB obj = playerActiveOn;
obj.movementSpeed /= runSpeedMultiplier;
yield return (object)new WaitForSeconds(0.5f);
Object.Destroy((Object)(object)((Component)this).gameObject);
}
public override void Update()
{
((GrabbableObject)this).Update();
if (triggered && (Object)(object)playerActiveOn != (Object)null)
{
playerActiveOn.sprintMeter = 1f;
}
}
public override void OnDestroy()
{
((NetworkBehaviour)this).OnDestroy();
if ((Object)(object)playerActiveOn != (Object)null)
{
playerActiveOn.movementSpeed = 4.6f;
}
}
public override void OnNetworkDespawn()
{
((NetworkBehaviour)this).OnNetworkDespawn();
if ((Object)(object)playerActiveOn != (Object)null)
{
playerActiveOn.movementSpeed = 4.6f;
}
}
[ServerRpc(RequireOwnership = false)]
private void activateSyringeServerRpc()
{
//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(2123057364u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2123057364u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
activateSyringeClientRpc();
}
}
}
[ClientRpc]
private void activateSyringeClientRpc()
{
//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(404489912u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 404489912u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
sourcesDict["useSFX"].Play();
playerActiveOn = base.playerHeldBy;
PlayerControllerB obj = playerActiveOn;
obj.movementSpeed *= runSpeedMultiplier;
playerActiveOn.health = 100;
((GrabbableObject)this).DestroyObjectInHand(playerActiveOn);
base.grabbable = false;
base.grabbableToEnemies = false;
triggered = true;
Utils.destroyObj(((Component)this).gameObject, "SyringeBody");
((MonoBehaviour)this).StartCoroutine(StartTimer());
}
}
}
protected override void __initializeVariables()
{
((GrabbableObject)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(2123057364u, new RpcReceiveHandler(__rpc_handler_2123057364), "activateSyringeServerRpc");
((NetworkBehaviour)this).__registerRpc(404489912u, new RpcReceiveHandler(__rpc_handler_404489912), "activateSyringeClientRpc");
((GrabbableObject)this).__initializeRpcs();
}
private static void __rpc_handler_2123057364(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;
((AdrenalineBehaviour)(object)target).activateSyringeServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_404489912(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;
((AdrenalineBehaviour)(object)target).activateSyringeClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "AdrenalineBehaviour";
}
}
internal class BananaBehaviour : GrabbableObject
{
private string[] sources = new string[1] { "slipSFX" };
private Dictionary<string, AudioSource> sourcesDict = new Dictionary<string, AudioSource>();
private List<PlayerControllerB> playerSlipping = new List<PlayerControllerB>();
private Vector2 forwardVector = new Vector2(0f, 1f);
private List<EnemyAI> enemySlipping = new List<EnemyAI>();
private float slipTime = 3f;
private void Awake()
{
base.grabbable = true;
base.grabbableToEnemies = true;
sourcesDict = Utils.getAllAudioSources(((Component)this).gameObject, "BananaSFX", sources);
}
public override void Update()
{
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).Update();
if (Utils.frameCount(20) || Object.op_Implicit((Object)(object)base.playerHeldBy))
{
return;
}
int mask = LayerMask.GetMask(new string[2] { "Player", "Enemies" });
Collider[] array = Physics.OverlapSphere(((Component)this).gameObject.transform.position + Vector3.up * 0.1f, 0.5f, mask);
Collider[] array2 = array;
foreach (Collider val in array2)
{
PlayerControllerB player = ((Component)val).GetComponent<PlayerControllerB>();
if ((Object)(object)player != (Object)null && !playerSlipping.Exists((PlayerControllerB i) => i.playerClientId == player.playerClientId) && player.moveInputVector != Vector2.zero)
{
playerSlipping.Add(player);
((MonoBehaviour)this).StartCoroutine(TriggerSlip(player));
}
}
}
private IEnumerator TriggerSlip(PlayerControllerB player)
{
float timer = 0f;
playSlipSoundServerRpc();
player.disableMoveInput = true;
Vector3 camera = ((Component)player.gameplayCamera).transform.forward;
Vector3 val = new Vector3(camera.x, 0f, camera.z);
Vector3 forward = ((Vector3)(ref val)).normalized;
Vector2 moveVector = player.moveInputVector;
float angle = Vector3.Angle(Vector2.op_Implicit(forwardVector), Vector2.op_Implicit(moveVector));
if (moveVector.x < 0f || moveVector.y < 0f)
{
angle *= -1f;
}
Vector3 direction = Quaternion.Euler(0f, angle, 0f) * forward;
float forceMult = player.movementSpeed * 2f;
while (timer < slipTime)
{
player.externalForces = direction * forceMult;
timer += Time.fixedDeltaTime;
yield return (object)new WaitForEndOfFrame();
}
playerSlipping.Remove(player);
player.disableMoveInput = false;
}
[ServerRpc(RequireOwnership = false)]
private void playSlipSoundServerRpc()
{
//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(3954791529u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3954791529u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
playSlipSoundClientRpc();
}
}
}
[ClientRpc]
private void playSlipSoundClientRpc()
{
//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(948241539u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 948241539u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
sourcesDict["slipSFX"].Play();
}
}
}
protected override void __initializeVariables()
{
((GrabbableObject)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(3954791529u, new RpcReceiveHandler(__rpc_handler_3954791529), "playSlipSoundServerRpc");
((NetworkBehaviour)this).__registerRpc(948241539u, new RpcReceiveHandler(__rpc_handler_948241539), "playSlipSoundClientRpc");
((GrabbableObject)this).__initializeRpcs();
}
private static void __rpc_handler_3954791529(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;
((BananaBehaviour)(object)target).playSlipSoundServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_948241539(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;
((BananaBehaviour)(object)target).playSlipSoundClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "BananaBehaviour";
}
}
internal class BottleBehaviour : GrabbableObject
{
private string[] sources = new string[1] { "drinkSFX" };
private Dictionary<string, AudioSource> sourcesDict = new Dictionary<string, AudioSource>();
private Color[] effects = (Color[])(object)new Color[3]
{
new Color(0.85f, 0.1f, 0.6f, 0.85f),
new Color(0.1f, 0.8f, 0.85f, 0.85f),
new Color(0.85f, 0.1f, 0.1f, 0.85f)
};
private bool empty = false;
private int currentEffect = 0;
private bool drinking = false;
private bool destroyedOnClient = false;
private float regularMovementSpeed = 4.6f;
private float regularJumpForce = 13f;
private Vector3 regularScale = Vector3.one;
private void Awake()
{
base.grabbable = true;
base.grabbableToEnemies = true;
sourcesDict = Utils.getAllAudioSources(((Component)this).gameObject, "BottleSFX", sources);
if (Utils.isLocalPlayerHosting())
{
setColorServerRpc();
}
}
public override void OnNetworkSpawn()
{
((NetworkBehaviour)this).OnNetworkSpawn();
if (Utils.isLocalPlayerHosting())
{
setEmptyServerRpc(empty);
setCurrentEffectServerRpc(currentEffect);
}
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
((GrabbableObject)this).ItemActivate(used, buttonDown);
if (!empty && !drinking)
{
drinking = true;
drinkServerRpc();
}
}
private void FixedUpdate()
{
if (!Utils.frameCount(20) && !destroyedOnClient && empty)
{
Utils.destroyObj(((Component)this).gameObject, "liquid");
destroyedOnClient = true;
}
}
[ServerRpc(RequireOwnership = false)]
private void setColorServerRpc()
{
//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(47990644u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 47990644u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
setColorClientRpc();
}
}
}
[ClientRpc]
private void setColorClientRpc()
{
//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)
//IL_010d: 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(4289994406u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4289994406u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
Material material = ((Renderer)((Component)((Component)this).gameObject.transform.Find("liquid")).gameObject.GetComponent<MeshRenderer>()).material;
currentEffect = Random.Range(0, effects.Length);
material.color = effects[currentEffect];
}
}
}
[ServerRpc(RequireOwnership = false)]
private void drinkServerRpc()
{
//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(3850970635u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3850970635u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
drinkClientRpc();
}
}
}
[ClientRpc]
private void drinkClientRpc()
{
//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(1269875293u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1269875293u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
((MonoBehaviour)this).StartCoroutine(Drink());
}
}
}
[ServerRpc(RequireOwnership = false)]
private void setEmptyServerRpc(bool value)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(592994066u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref value, default(ForPrimitives));
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 592994066u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
setEmptyClientRpc(value);
}
}
}
[ClientRpc]
private void setEmptyClientRpc(bool value)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3751284597u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref value, default(ForPrimitives));
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3751284597u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
empty = value;
}
}
}
[ServerRpc(RequireOwnership = false)]
private void setCurrentEffectServerRpc(int value)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2721315061u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, value);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2721315061u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
setCurrentEffectClientRpc(value);
}
}
}
[ClientRpc]
private void setCurrentEffectClientRpc(int value)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2811399482u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, value);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2811399482u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
currentEffect = value;
}
}
}
private IEnumerator Drink()
{
base.playerHeldBy.activatingItem = true;
base.playerHeldBy.playerBodyAnimator.SetBool("useTZPItem", true);
sourcesDict["drinkSFX"].Play();
((MonoBehaviour)this).StartCoroutine(DrinkAnimation(new Vector3(0.1f, 0.15f, 0.25f), new Vector3(120f, 100f, -95f)));
yield return (object)new WaitForSeconds(4f);
applyEffect();
base.playerHeldBy.activatingItem = false;
base.playerHeldBy.playerBodyAnimator.SetBool("useTZPItem", false);
Utils.destroyObj(((Component)this).gameObject, "liquid");
destroyedOnClient = true;
((MonoBehaviour)this).StartCoroutine(DrinkAnimation(new Vector3(-0.15f, 0.08f, 0f), new Vector3(120f, 0f, -95f), 3f));
setEmptyServerRpc(value: true);
drinking = false;
}
private void applyEffect()
{
switch (currentEffect)
{
case 0:
base.playerHeldBy.drunkness = 1f;
base.playerHeldBy.drunknessSpeed = 0.35f;
break;
case 1:
((MonoBehaviour)this).StartCoroutine(SetSmall(base.playerHeldBy));
break;
case 2:
((MonoBehaviour)this).StartCoroutine(SetBig(base.playerHeldBy));
break;
}
}
private IEnumerator SetSmall(PlayerControllerB player)
{
player.movementSpeed = 5.5f;
player.jumpForce = 9f;
((MonoBehaviour)this).StartCoroutine(SetScale(player, new Vector3(0.2f, 0.2f, 0.2f)));
yield return (object)new WaitForSeconds(60f);
player.movementSpeed = regularMovementSpeed;
player.jumpForce = regularJumpForce;
((MonoBehaviour)this).StartCoroutine(SetScale(player, regularScale));
}
private IEnumerator SetBig(PlayerControllerB player)
{
player.movementSpeed = 3.5f;
player.jumpForce = 12f;
((MonoBehaviour)this).StartCoroutine(SetScale(player, new Vector3(1.5f, 1.5f, 1.5f)));
((MonoBehaviour)this).StartCoroutine(RegenHealth(player));
yield return (object)new WaitForSeconds(50f);
player.movementSpeed = regularMovementSpeed;
player.jumpForce = regularJumpForce;
((MonoBehaviour)this).StartCoroutine(SetScale(player, regularScale));
}
private IEnumerator RegenHealth(PlayerControllerB player)
{
for (int i = 0; i < 10; i++)
{
if (player.health < 100)
{
player.health += 5;
}
yield return (object)new WaitForSeconds(1f);
}
yield return (object)new WaitForEndOfFrame();
}
private IEnumerator SetScale(PlayerControllerB player, Vector3 desiredScale)
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
Vector3 currentScale = ((Component)player).transform.localScale;
float increment = 0.004f;
float waitTime = 0.02f;
if (desiredScale.x < currentScale.x)
{
while (currentScale.x > desiredScale.x)
{
currentScale.x -= increment;
currentScale.y -= increment;
currentScale.z -= increment;
((Component)player).transform.localScale = currentScale;
yield return (object)new WaitForSeconds(waitTime);
}
}
else if (desiredScale.x > currentScale.x)
{
while (currentScale.x < desiredScale.x)
{
currentScale.x += increment;
currentScale.y += increment;
currentScale.z += increment;
((Component)player).transform.localScale = currentScale;
yield return (object)new WaitForSeconds(waitTime);
}
}
}
private IEnumerator DrinkAnimation(Vector3 targetPos, Vector3 targetRot, float multiplier = 1f)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
while (base.itemProperties.positionOffset != targetPos || base.itemProperties.rotationOffset != targetRot)
{
base.itemProperties.positionOffset = Vector3.MoveTowards(base.itemProperties.positionOffset, targetPos, Time.deltaTime * multiplier);
base.itemProperties.rotationOffset = Vector3.MoveTowards(base.itemProperties.rotationOffset, targetRot, Time.deltaTime * 1000f);
yield return (object)new WaitForEndOfFrame();
}
}
protected override void __initializeVariables()
{
((GrabbableObject)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Expected O, but got Unknown
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Expected O, but got Unknown
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Expected O, but got Unknown
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Expected O, but got Unknown
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Expected O, but got Unknown
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(47990644u, new RpcReceiveHandler(__rpc_handler_47990644), "setColorServerRpc");
((NetworkBehaviour)this).__registerRpc(4289994406u, new RpcReceiveHandler(__rpc_handler_4289994406), "setColorClientRpc");
((NetworkBehaviour)this).__registerRpc(3850970635u, new RpcReceiveHandler(__rpc_handler_3850970635), "drinkServerRpc");
((NetworkBehaviour)this).__registerRpc(1269875293u, new RpcReceiveHandler(__rpc_handler_1269875293), "drinkClientRpc");
((NetworkBehaviour)this).__registerRpc(592994066u, new RpcReceiveHandler(__rpc_handler_592994066), "setEmptyServerRpc");
((NetworkBehaviour)this).__registerRpc(3751284597u, new RpcReceiveHandler(__rpc_handler_3751284597), "setEmptyClientRpc");
((NetworkBehaviour)this).__registerRpc(2721315061u, new RpcReceiveHandler(__rpc_handler_2721315061), "setCurrentEffectServerRpc");
((NetworkBehaviour)this).__registerRpc(2811399482u, new RpcReceiveHandler(__rpc_handler_2811399482), "setCurrentEffectClientRpc");
((GrabbableObject)this).__initializeRpcs();
}
private static void __rpc_handler_47990644(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;
((BottleBehaviour)(object)target).setColorServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_4289994406(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;
((BottleBehaviour)(object)target).setColorClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3850970635(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;
((BottleBehaviour)(object)target).drinkServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1269875293(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;
((BottleBehaviour)(object)target).drinkClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_592994066(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool emptyServerRpc = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref emptyServerRpc, default(ForPrimitives));
target.__rpc_exec_stage = (__RpcExecStage)1;
((BottleBehaviour)(object)target).setEmptyServerRpc(emptyServerRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3751284597(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool emptyClientRpc = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref emptyClientRpc, default(ForPrimitives));
target.__rpc_exec_stage = (__RpcExecStage)1;
((BottleBehaviour)(object)target).setEmptyClientRpc(emptyClientRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2721315061(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int currentEffectServerRpc = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref currentEffectServerRpc);
target.__rpc_exec_stage = (__RpcExecStage)1;
((BottleBehaviour)(object)target).setCurrentEffectServerRpc(currentEffectServerRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2811399482(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int currentEffectClientRpc = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref currentEffectClientRpc);
target.__rpc_exec_stage = (__RpcExecStage)1;
((BottleBehaviour)(object)target).setCurrentEffectClientRpc(currentEffectClientRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "BottleBehaviour";
}
}
internal class DynamiteBehaviour : GrabbableObject
{
public Ray grenadeThrowRay;
public RaycastHit grenadeHit;
private float explodeTimer = 0f;
private float timeToExplode = 5f;
private int interval = 10;
private AudioSource MeshBurnSFX;
private AudioSource ExplosionSFX;
private AudioSource EarRingSFX;
private ParticleSystem MeshSmoke;
private ParticleSystem LingeringFire;
private ParticleSystem MainBlast;
private ParticleSystem Smoke;
private bool active = false;
private void Awake()
{
base.grabbable = true;
base.grabbableToEnemies = true;
MeshBurnSFX = Utils.getAudioSource(((Component)this).gameObject, "DynamiteSFX", "MeshBurnSFX");
ExplosionSFX = Utils.getAudioSource(((Component)this).gameObject, "DynamiteSFX", "ExplosionSFX");
EarRingSFX = Utils.getAudioSource(((Component)this).gameObject, "DynamiteSFX", "EarRingSFX");
MeshSmoke = Utils.getParticleSystem(((Component)this).gameObject, "DynamiteParticles", "MeshSmoke");
LingeringFire = Utils.getParticleSystem(((Component)this).gameObject, "DynamiteParticles", "LingeringFire");
MainBlast = Utils.getParticleSystem(((Component)this).gameObject, "DynamiteParticles", "MainBlast");
Smoke = Utils.getParticleSystem(((Component)this).gameObject, "DynamiteParticles", "Smoke");
}
[ServerRpc(RequireOwnership = false)]
private void startDynamiteBurnServerRpc()
{
//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(347468879u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 347468879u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
startDynamiteBurnClientRpc();
}
}
}
[ClientRpc]
private void startDynamiteBurnClientRpc()
{
//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(1004844402u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1004844402u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
MeshBurnSFX.Play();
WalkieTalkie.TransmitOneShotAudio(MeshBurnSFX, MeshBurnSFX.clip, 1f);
MeshSmoke.Play();
Utils.destroyObj(((Component)this).gameObject, "Mesh");
}
}
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).ItemActivate(used, buttonDown);
if (!((Object)(object)base.playerHeldBy != (Object)null))
{
return;
}
if (!active)
{
active = true;
if (((NetworkBehaviour)this).IsHost || ((NetworkBehaviour)this).IsServer)
{
startDynamiteBurnClientRpc();
}
else
{
startDynamiteBurnServerRpc();
}
}
else
{
base.playerHeldBy.DiscardHeldObject(true, (NetworkObject)null, GetGrenadeThrowDestination(), true);
}
}
public override void PocketItem()
{
((GrabbableObject)this).PocketItem();
editMeshAnimServerRpc(active: false);
}
public override void EquipItem()
{
((GrabbableObject)this).EquipItem();
if (active)
{
editMeshAnimServerRpc(active: true);
}
}
public override void Update()
{
((GrabbableObject)this).Update();
if (Utils.frameCount(interval) || !active)
{
return;
}
if (explodeTimer > timeToExplode)
{
active = false;
if (((NetworkBehaviour)this).IsHost || ((NetworkBehaviour)this).IsServer)
{
ExplodeDynamiteClientRpc();
}
else
{
ExplodeDynamiteServerRpc();
}
}
explodeTimer += Time.deltaTime * (float)interval;
}
[ServerRpc(RequireOwnership = false)]
public void ExplodeDynamiteServerRpc()
{
//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(4084733013u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4084733013u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
ExplodeDynamiteClientRpc();
}
}
}
[ClientRpc]
public void ExplodeDynamiteClientRpc()
{
//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(3225364544u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3225364544u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
base.grabbable = false;
base.grabbableToEnemies = false;
MeshBurnSFX.Stop();
MeshSmoke.Stop();
ExplosionSFX.Play();
WalkieTalkie.TransmitOneShotAudio(ExplosionSFX, ExplosionSFX.clip, 1f);
MainBlast.Play();
LingeringFire.Play();
Smoke.Play();
explodeTimer = 0f;
Utils.Explode(((Component)this).gameObject, 8f, 50f, 300f, (Object)(object)base.playerHeldBy == (Object)null);
if ((Object)(object)base.playerHeldBy != (Object)null)
{
((GrabbableObject)this).DestroyObjectInHand(base.playerHeldBy);
}
Utils.destroyObj(((Component)this).gameObject, "Base");
Object.Destroy((Object)(object)((Component)this).gameObject, ExplosionSFX.clip.length);
}
}
[ServerRpc(RequireOwnership = false)]
private void editMeshAnimServerRpc(bool active)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2021433102u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref active, default(ForPrimitives));
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2021433102u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
editMeshAnimClientRpc(active);
}
}
}
[ClientRpc]
private void editMeshAnimClientRpc(bool active)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3393819655u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref active, default(ForPrimitives));
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3393819655u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
if (active)
{
MeshSmoke.Play();
}
else
{
MeshSmoke.Stop();
}
}
}
public Vector3 GetGrenadeThrowDestination()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: 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_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: 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_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: 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_00e3: 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_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_0110: Unknown result type (might be due to invalid IL or missing references)
//IL_0115: Unknown result type (might be due to invalid IL or missing references)
//IL_011f: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_013b: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
Debug.DrawRay(((Component)base.playerHeldBy.gameplayCamera).transform.position, ((Component)base.playerHeldBy.gameplayCamera).transform.forward, Color.yellow, 15f);
grenadeThrowRay = new Ray(((Component)base.playerHeldBy.gameplayCamera).transform.position, ((Component)base.playerHeldBy.gameplayCamera).transform.forward);
Vector3 val = ((!Physics.Raycast(grenadeThrowRay, ref grenadeHit, 12f, StartOfRound.Instance.collidersAndRoomMaskAndDefault)) ? ((Ray)(ref grenadeThrowRay)).GetPoint(10f) : ((Ray)(ref grenadeThrowRay)).GetPoint(((RaycastHit)(ref grenadeHit)).distance - 0.05f));
Debug.DrawRay(val, Vector3.down, Color.blue, 15f);
grenadeThrowRay = new Ray(val, Vector3.down);
return (!Physics.Raycast(grenadeThrowRay, ref grenadeHit, 30f, StartOfRound.Instance.collidersAndRoomMaskAndDefault)) ? ((Ray)(ref grenadeThrowRay)).GetPoint(30f) : (((RaycastHit)(ref grenadeHit)).point + Vector3.up * 0.05f);
}
protected override void __initializeVariables()
{
((GrabbableObject)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Expected O, but got Unknown
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Expected O, but got Unknown
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Expected O, but got Unknown
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(347468879u, new RpcReceiveHandler(__rpc_handler_347468879), "startDynamiteBurnServerRpc");
((NetworkBehaviour)this).__registerRpc(1004844402u, new RpcReceiveHandler(__rpc_handler_1004844402), "startDynamiteBurnClientRpc");
((NetworkBehaviour)this).__registerRpc(4084733013u, new RpcReceiveHandler(__rpc_handler_4084733013), "ExplodeDynamiteServerRpc");
((NetworkBehaviour)this).__registerRpc(3225364544u, new RpcReceiveHandler(__rpc_handler_3225364544), "ExplodeDynamiteClientRpc");
((NetworkBehaviour)this).__registerRpc(2021433102u, new RpcReceiveHandler(__rpc_handler_2021433102), "editMeshAnimServerRpc");
((NetworkBehaviour)this).__registerRpc(3393819655u, new RpcReceiveHandler(__rpc_handler_3393819655), "editMeshAnimClientRpc");
((GrabbableObject)this).__initializeRpcs();
}
private static void __rpc_handler_347468879(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;
((DynamiteBehaviour)(object)target).startDynamiteBurnServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1004844402(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;
((DynamiteBehaviour)(object)target).startDynamiteBurnClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_4084733013(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;
((DynamiteBehaviour)(object)target).ExplodeDynamiteServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3225364544(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;
((DynamiteBehaviour)(object)target).ExplodeDynamiteClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2021433102(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool flag = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
target.__rpc_exec_stage = (__RpcExecStage)1;
((DynamiteBehaviour)(object)target).editMeshAnimServerRpc(flag);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3393819655(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool flag = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
target.__rpc_exec_stage = (__RpcExecStage)1;
((DynamiteBehaviour)(object)target).editMeshAnimClientRpc(flag);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "DynamiteBehaviour";
}
}
internal class FramedPicBehaviour : GrabbableObject
{
private string[] possiblePhotos = new string[6] { "Pigeon", "Toto", "Prospector", "Boowomp", "Gambling", "ManMug" };
private int index = -1;
private MeshRenderer picture;
private Transform listOfPossiblePhotos;
private bool imgSet = false;
private void Awake()
{
base.grabbable = true;
base.grabbableToEnemies = true;
picture = ((Component)((Component)this).transform.Find("Photo")).GetComponent<MeshRenderer>();
listOfPossiblePhotos = ((Component)this).transform.Find("PossiblePhotoMaterials");
}
public override void OnNetworkSpawn()
{
((NetworkBehaviour)this).OnNetworkSpawn();
if (Utils.isLocalPlayerHosting())
{
SetIndexServerRpc(index);
}
}
public void FixedUpdate()
{
if (Utils.frameCount(100))
{
return;
}
if (index == -1 && Utils.isLocalPlayerHosting())
{
SetIndexServerRpc(Random.Range(0, possiblePhotos.Length - 1));
}
else if (!imgSet)
{
try
{
((Renderer)picture).material = ((Renderer)((Component)listOfPossiblePhotos.Find(possiblePhotos[index])).GetComponent<MeshRenderer>()).material;
imgSet = true;
}
catch
{
Debug.LogError((object)"Cannot set picture material");
}
}
}
[ServerRpc(RequireOwnership = true)]
private void SetIndexServerRpc(int value)
{
//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(3213284832u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, value);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3213284832u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
SetIndexClientRpc(value);
}
}
[ClientRpc]
private void SetIndexClientRpc(int value)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1961538220u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, value);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1961538220u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
index = value;
}
}
}
protected override void __initializeVariables()
{
((GrabbableObject)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(3213284832u, new RpcReceiveHandler(__rpc_handler_3213284832), "SetIndexServerRpc");
((NetworkBehaviour)this).__registerRpc(1961538220u, new RpcReceiveHandler(__rpc_handler_1961538220), "SetIndexClientRpc");
((GrabbableObject)this).__initializeRpcs();
}
private static void __rpc_handler_3213284832(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Invalid comparison between Unknown and I4
NetworkManager networkManager = target.NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId)
{
if ((int)networkManager.LogLevel <= 1)
{
Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!");
}
}
else
{
int indexServerRpc = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref indexServerRpc);
target.__rpc_exec_stage = (__RpcExecStage)1;
((FramedPicBehaviour)(object)target).SetIndexServerRpc(indexServerRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1961538220(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int indexClientRpc = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref indexClientRpc);
target.__rpc_exec_stage = (__RpcExecStage)1;
((FramedPicBehaviour)(object)target).SetIndexClientRpc(indexClientRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "FramedPicBehaviour";
}
}
internal class GravityCoilBehaviour : GrabbableObject
{
private string[] sources = new string[1] { "jumpSFX" };
private Dictionary<string, AudioSource> sourcesDict = new Dictionary<string, AudioSource>();
private float baseJumpForce = 13f;
private float multiplier = 2f;
private bool shouldPlayJumpSFX = false;
private PlayerControllerB boostedPlayer = null;
private bool active = false;
private void Awake()
{
base.grabbable = true;
base.grabbableToEnemies = true;
sourcesDict = Utils.getAllAudioSources(((Component)this).gameObject, "CoilSFX", sources);
}
public override void Update()
{
((GrabbableObject)this).Update();
if (!active || (Object)(object)base.playerHeldBy == (Object)null || !base.wasOwnerLastFrame || Utils.frameCount(10) || !base.playerHeldBy.thisController.isGrounded || base.playerHeldBy.inSpecialInteractAnimation || Object.op_Implicit((Object)(object)base.playerHeldBy.inAnimationWithEnemy) || base.playerHeldBy.isClimbingLadder || base.playerHeldBy.isPlayerDead || base.playerHeldBy.inTerminalMenu || base.playerHeldBy.isTypingChat || base.playerHeldBy.isCrouching)
{
return;
}
if (base.playerHeldBy.playerActions.FindAction("Jump", false).IsPressed())
{
if (shouldPlayJumpSFX)
{
shouldPlayJumpSFX = false;
PlayJumpSFXServerRpc();
}
}
else
{
shouldPlayJumpSFX = true;
}
}
public override void OnHitGround()
{
((GrabbableObject)this).OnHitGround();
defaultJump();
}
public override void GrabItem()
{
((GrabbableObject)this).GrabItem();
boostedPlayer = base.playerHeldBy;
}
public override void GrabItemFromEnemy(EnemyAI enemy)
{
((GrabbableObject)this).GrabItemFromEnemy(enemy);
boostedPlayer = base.playerHeldBy;
}
public override void PocketItem()
{
((GrabbableObject)this).PocketItem();
boostedPlayer.jumpForce = baseJumpForce;
active = false;
}
public override void EquipItem()
{
((GrabbableObject)this).EquipItem();
boostedPlayer = base.playerHeldBy;
boostedPlayer.jumpForce = baseJumpForce * multiplier;
active = true;
}
public override void OnPlaceObject()
{
((GrabbableObject)this).OnPlaceObject();
defaultJump();
}
public override void DestroyObjectInHand(PlayerControllerB playerHolding)
{
((GrabbableObject)this).DestroyObjectInHand(playerHolding);
defaultJump(ref playerHolding);
}
public override void DiscardItem()
{
((GrabbableObject)this).DiscardItem();
defaultJump();
}
public override void OnDestroy()
{
((NetworkBehaviour)this).OnDestroy();
defaultJump();
}
public override void OnNetworkDespawn()
{
((NetworkBehaviour)this).OnNetworkDespawn();
defaultJump();
}
private void defaultJump()
{
if (!((Object)(object)boostedPlayer == (Object)null))
{
boostedPlayer.jumpForce = baseJumpForce;
boostedPlayer = null;
}
}
private void defaultJump(ref PlayerControllerB player)
{
if (!((Object)(object)player == (Object)null))
{
player.jumpForce = baseJumpForce;
}
}
[ServerRpc(RequireOwnership = false)]
private void PlayJumpSFXServerRpc()
{
//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(2135253370u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2135253370u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
PlayJumpSFXClientRpc();
}
}
}
[ClientRpc]
private void PlayJumpSFXClientRpc()
{
//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(3013580887u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3013580887u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
sourcesDict["jumpSFX"].Play();
}
}
}
protected override void __initializeVariables()
{
((GrabbableObject)this).__initializeVariables();
}
protected override void __initializeRpcs()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
((NetworkBehaviour)this).__registerRpc(2135253370u, new RpcReceiveHandler(__rpc_handler_2135253370), "PlayJumpSFXServerRpc");
((NetworkBehaviour)this).__registerRpc(3013580887u, new RpcReceiveHandler(__rpc_handler_3013580887), "PlayJumpSFXClientRpc");
((GrabbableObject)this).__initializeRpcs();
}
private static void __rpc_handler_2135253370(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;
((GravityCoilBehaviour)(object)target).PlayJumpSFXServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3013580887(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;
((GravityCoilBehaviour)(object)target).PlayJumpSFXClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "GravityCoilBehaviour";
}
}
internal class KarmaBehaviour : GrabbableObject
{
private bool coolingDown = false;
private bool broken = false;
private float cooldown = 5f;
private float timeSinceShot = 0f;
private float maxChargeBeforeShooting = 2f;
private float maxChargeBeforeExplode = 2.9f;
private float chargeTime = 0f;
private float energyLostPerShot = 0.5f;
private int interval = 10;
private bool charging = false;
private bool activated = false;
private bool shoot = false;
private bool startedRegen = false;
private string[] sources = new string[8] { "ChargeSFX", "ShootSFX", "TrailSFX", "WarningSFX", "ExplosionSFX", "CooldownSFX", "CoolupSFX", "OnCdShotSFX" };
private Dictionary<string, AudioSource> sourcesDict = new Dictionary<string, AudioSource>();
private string[] ps = new string[4] { "MuzzleFlash", "Trail", "LingeringFire", "MainBlast" };
private Dictionary<string, ParticleSystem> psDict = new Dictionary<string, ParticleSystem>();
private Color readyColor = Color32.op_Implicit(new Color32((byte)20, (byte)20, (byte)20, byte.MaxValue));
private Color shootColor = Color32.op_Implicit(new Color32((byte)20, (byte)200, (byte)20, byte.MaxValue));
private Color dangerColor = Color32.op_Implicit(new Color32((byte)200, (byte)20, (byte)20, byte.MaxValue));
private Color unreadyColor = Color32.op_Implicit(new Color32((byte)250, (byte)100, (byte)0, byte.MaxValue));
private GameObject laserLight;
private GameObject ScopeChargeTimer;
private void Awake()
{
base.grabbable = true;
base.grabbableToEnemies = true;
sourcesDict = Utils.getAllAudioSources(((Component)this).gameObject, "KarmaSFX", sources);
psDict = Utils.getAllParticleSystems(((Component)this).gameObject, "KarmaParticles", ps);
ScopeChargeTimer = ((Component)((Component)this).gameObject.transform.Find("ScopeChargeTimer")).gameObject;
laserLight = ((Component)((Component)this).gameObject.transform.Find("laserLight")).gameObject;
base.insertedBattery.charge = 1f;
}
public override void OnNetworkSpawn()
{
((NetworkBehaviour)this).OnNetworkSpawn();
if (Utils.isLocalPlayerHosting())
{
setCoolingDownServerRpc(coolingDown);
setBrokenServerRpc(broken);
}
if (!startedRegen)
{
startedRegen = true;
((MonoBehaviour)this).StartCoroutine(RegenBattery());
}
}
public override void PocketItem()
{
((GrabbableObject)this).PocketItem();
activated = false;
StopChargingServerRpc(hasShot: false);
((Behaviour)laserLight.GetComponent<Light>()).enabled = false;
}
public override void EquipItem()
{
((GrabbableObject)this).EquipItem();
((Behaviour)laserLight.GetComponent<Light>()).enabled = true;
}
public override void OnHitGround()
{
((GrabbableObject)this).OnHitGround();
StopChargingServerRpc(hasShot: false);
activated = false;
if (!coolingDown && base.insertedBattery.charge >= energyLostPerShot && !broken && Utils.isLocalPlayerHosting() && Random.Range(1, 20) == 1)
{
ShootServerRpc();
}
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
((GrabbableObject)this).ItemActivate(used, buttonDown);
if (!((Object)(object)base.playerHeldBy != (Object)null) || base.isPocketed || !base.wasOwnerLastFrame || broken)
{
return;
}
if (buttonDown)
{
if (!coolingDown && base.insertedBattery.charge > energyLostPerShot)
{
activated = true;
}
else
{
sourcesDict["OnCdShotSFX"].Play();
}
}
else
{
activated = false;
}
}
public override void ChargeBatteries()
{
((GrabbableObject)this).ChargeBatteries();
RepairServerRpc();
}
public override void Update()
{
((GrabbableObject)this).Update();
if (broken)
{
return;
}
if (coolingDown)
{
if (!Utils.frameCount(interval))
{
timeSinceShot += Time.deltaTime * (float)interval;
if (timeSinceShot > cooldown)
{
ResetCooldownServerRpc();
}
}
}
else
{
if (!base.wasOwnerLastFrame || Utils.frameCount(interval))
{
return;
}
if (activated)
{
StartChargingServerRpc();
if (chargeTime > maxChargeBeforeExplode)
{
ExplodeServerRpc();
}
chargeTime += Time.deltaTime * (float)interval;
}
else if (chargeTime >= maxChargeBeforeShooting && chargeTime <= maxChargeBeforeExplode)
{
StopChargingServerRpc(hasShot: true);
if (!shoot)
{
shoot = true;
ShootServerRpc();
}
}
else
{
StopChargingServerRpc(hasShot: false);
}
}
}
private IEnumerator RegenBattery()
{
while (true)
{
if (base.insertedBattery.charge < 1f)
{
Battery insertedBattery = base.insertedBattery;
insertedBattery.charge += 0.01f;
}
yield return (object)new WaitForSeconds(1f);
}
}
[ServerRpc(RequireOwnership = false)]
private void ShootServerRpc()
{
//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(1729751282u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1729751282u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
ShootClientRpc();
}
}
}
[ClientRpc]
private void ShootClientRpc()
{
//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 missi