Decompiled source of MinecraftStrongholdLevel v1.13.1

Minecraft Stronghold Scripts.dll

Decompiled 2 weeks ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using Microsoft.CodeAnalysis;
using Photon.Pun;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Serialization;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("Autodesk.Fbx")]
[assembly: IgnoresAccessChecksTo("Discord.Sdk")]
[assembly: IgnoresAccessChecksTo("Domain_Reload")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("FbxBuildTestAssets")]
[assembly: IgnoresAccessChecksTo("Klattersynth")]
[assembly: IgnoresAccessChecksTo("Photon3Unity3D")]
[assembly: IgnoresAccessChecksTo("PhotonChat")]
[assembly: IgnoresAccessChecksTo("PhotonRealtime")]
[assembly: IgnoresAccessChecksTo("PhotonUnityNetworking")]
[assembly: IgnoresAccessChecksTo("PhotonUnityNetworking.Utilities")]
[assembly: IgnoresAccessChecksTo("PhotonVoice.API")]
[assembly: IgnoresAccessChecksTo("PhotonVoice")]
[assembly: IgnoresAccessChecksTo("PhotonVoice.PUN")]
[assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime")]
[assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime.Public")]
[assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Attributes")]
[assembly: IgnoresAccessChecksTo("Sirenix.Serialization.Config")]
[assembly: IgnoresAccessChecksTo("Sirenix.Serialization")]
[assembly: IgnoresAccessChecksTo("Sirenix.Utilities")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.Formats.Fbx.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.MemoryProfiler")]
[assembly: IgnoresAccessChecksTo("Unity.Postprocessing.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Splines")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Antlr3.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Core")]
[assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Flow")]
[assembly: IgnoresAccessChecksTo("Unity.VisualScripting.State")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: IgnoresAccessChecksTo("websocket-sharp")]
[assembly: AssemblyCompany("AriIcedT")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Minecraft Stronghold Scripts")]
[assembly: AssemblyTitle("Minecraft Stronghold Scripts")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
public class ButtonScript : MonoBehaviour
{
	public Animator ButtonToggleAnimation;

	public Sound ButtonOnSound;

	public Sound DoorOpenSound;

	private PhotonView photonView;

	private StaticGrabObject staticGrabObject;

	private void Start()
	{
		photonView = ((Component)this).GetComponent<PhotonView>();
		staticGrabObject = ((Component)this).GetComponent<StaticGrabObject>();
	}

	public void animatorStart()
	{
		if (SemiFunc.IsMultiplayer())
		{
			if (SemiFunc.IsMasterClient())
			{
				photonView.RPC("animatorStartRPC", (RpcTarget)0, Array.Empty<object>());
			}
		}
		else
		{
			animatorStartRPC();
		}
	}

	[PunRPC]
	public void animatorStartRPC()
	{
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		Animator component = ((Component)this).GetComponent<Animator>();
		component.SetTrigger("buttonOn");
		GameDirector.instance.CameraShake.ShakeDistance(2f, 1f, 2f, ((Component)this).transform.position, 0.1f);
		GameDirector.instance.CameraImpact.ShakeDistance(2f, 1f, 3f, ((Component)this).transform.position, 0.1f);
		ButtonOnSound.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f);
		DoorOpenSound.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f);
	}
}
public class FireworkBoom : MonoBehaviour
{
	private FireworkScriptExplosion FireworkScriptExplosion;

	public Sound soundBlast;

	private void Start()
	{
		FireworkScriptExplosion = ((Component)this).GetComponent<FireworkScriptExplosion>();
	}

	public void Explosion()
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		soundBlast.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f);
		FireworkScriptExplosion.Spawn(((Component)this).transform.position, 1.2f, 75, 160, 4f);
	}
}
public class FireworkParticlePrefabExplosion : MonoBehaviour
{
	public ParticleSystem particleCharge;

	private float lightIntensityCurveProgress;

	internal float explosionSize = 1f;

	internal float particleSizeMultiplier = 0f;

	internal int explosionDamage;

	internal int explosionDamageEnemy;

	private float chargeNullCheckTimer;

	[HideInInspector]
	public float forceMultiplier = 1f;

	public bool onlyParticleEffect;

	internal bool SkipHurtColliderSetup;

	public HurtCollider HurtCollider;

	private bool HurtColliderActive = true;

	private bool HurtColliderFirstSetup = true;

	private bool HurtColliderSecondSetup = true;

	private float HurtColliderTimer;

	private void Start()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		MainModule main = particleCharge.main;
		particleCharge.Play();
	}

	private void Update()
	{
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0188: Unknown result type (might be due to invalid IL or missing references)
		//IL_018e: Invalid comparison between Unknown and I4
		//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_01da: Unknown result type (might be due to invalid IL or missing references)
		//IL_019e: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
		if (!onlyParticleEffect && HurtColliderActive)
		{
			HurtColliderTimer += Time.deltaTime;
			if (HurtColliderFirstSetup)
			{
				if (!SkipHurtColliderSetup)
				{
					HurtCollider.playerDamage = explosionDamage;
					HurtCollider.enemyDamage = explosionDamageEnemy;
					HurtCollider.physHitForce = (float)explosionDamage * 0.5f;
					if (explosionDamage >= 50)
					{
						HurtCollider.physImpact = (BreakImpact)3;
						HurtCollider.physHingeDestroy = true;
					}
					else if (explosionDamage >= 15)
					{
						HurtCollider.physImpact = (BreakImpact)2;
					}
					else
					{
						HurtCollider.physImpact = (BreakImpact)1;
					}
				}
				((Component)HurtCollider).gameObject.SetActive(true);
				((Component)HurtCollider).transform.localScale = new Vector3(explosionSize, explosionSize, explosionSize);
				HurtColliderFirstSetup = false;
			}
			if (HurtColliderSecondSetup && HurtColliderTimer > 0.2f)
			{
				HurtCollider.playerDamage = 0;
				HurtCollider hurtCollider = HurtCollider;
				hurtCollider.playerHitForce *= 0.25f;
				HurtCollider hurtCollider2 = HurtCollider;
				hurtCollider2.physHitForce *= 0.25f;
				if ((int)HurtCollider.physImpact > 0)
				{
					HurtCollider hurtCollider3 = HurtCollider;
					hurtCollider3.physImpact = (BreakImpact)(hurtCollider3.physImpact - 1);
				}
				((Component)HurtCollider).transform.localScale = new Vector3(explosionSize * 2f, explosionSize * 2f, explosionSize * 2f);
				HurtColliderSecondSetup = false;
			}
			if (HurtColliderTimer > 0.5f)
			{
				((Component)HurtCollider).gameObject.SetActive(false);
				HurtColliderActive = false;
			}
		}
		chargeNullCheckTimer += Time.deltaTime;
		if (chargeNullCheckTimer > 1f)
		{
			if (!Object.op_Implicit((Object)(object)particleCharge))
			{
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
			chargeNullCheckTimer = 0f;
		}
	}
}
public class FireworkScriptExplosion : MonoBehaviour
{
	public GameObject FireworkExplosionPrefab;

	private void Start()
	{
	}

	public FireworkParticlePrefabExplosion Spawn(Vector3 position, float size, int damage, int enemyDamage, float forceMulti = 1f, bool onlyParticleEffect = false, bool disableSound = false, float shakeMultiplier = 1f)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		FireworkParticlePrefabExplosion component = Object.Instantiate<GameObject>(FireworkExplosionPrefab, position, Quaternion.identity).GetComponent<FireworkParticlePrefabExplosion>();
		component.explosionSize = size;
		component.explosionDamage = damage / 3;
		component.explosionDamageEnemy = enemyDamage / 2;
		component.particleCharge.Play();
		return component;
	}
}
public class FireworkTrap : MonoBehaviour
{
	public UnityEvent FireworkDetonate;

	private ItemToggle itemToggle;

	private ItemAttributes itemAttributes;

	internal bool isActive;

	private float grenadeTimer;

	public float tickTime = 3f;

	private PhotonView photonView;

	private PhysGrabObjectImpactDetector physGrabObjectImpactDetector;

	public Sound soundLaunch;

	private ItemEquippable itemEquippable;

	private Vector3 grenadeStartPosition;

	private Quaternion grenadeStartRotation;

	private PhysGrabObject physGrabObject;

	private Vector3 prevPosition;

	[Space]
	private Quaternion initialBottleRotation;

	private Vector3 randomTorque;

	private int timeToTwist;

	public ParticleSystem TrailParticleSystem;

	public GameObject FireworkMesh;

	[FormerlySerializedAs("isThiefGrenade")]
	[HideInInspector]
	public bool isSpawnedGrenade;

	private Rigidbody rb;

	private void Start()
	{
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005a: Unknown result type (might be due to invalid IL or missing references)
		itemEquippable = ((Component)this).GetComponent<ItemEquippable>();
		itemToggle = ((Component)this).GetComponent<ItemToggle>();
		itemAttributes = ((Component)this).GetComponent<ItemAttributes>();
		photonView = ((Component)this).GetComponent<PhotonView>();
		physGrabObjectImpactDetector = ((Component)this).GetComponent<PhysGrabObjectImpactDetector>();
		grenadeStartPosition = ((Component)this).transform.position;
		grenadeStartRotation = ((Component)this).transform.rotation;
		physGrabObject = ((Component)this).GetComponent<PhysGrabObject>();
		rb = ((Component)this).GetComponent<Rigidbody>();
	}

	private void FixedUpdate()
	{
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		//IL_0047: Unknown result type (might be due to invalid IL or missing references)
		//IL_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: 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_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		if (itemEquippable.isEquipped || itemEquippable.wasEquippedTimer > 0f)
		{
			prevPosition = rb.position;
			return;
		}
		Vector3 val = (rb.position - prevPosition) / Time.fixedDeltaTime;
		Vector3 val2 = rb.position - prevPosition;
		_ = ((Vector3)(ref val2)).normalized;
		prevPosition = rb.position;
	}

	private void Update()
	{
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_010f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0119: Unknown result type (might be due to invalid IL or missing references)
		//IL_012c: 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_0140: Unknown result type (might be due to invalid IL or missing references)
		//IL_014a: Unknown result type (might be due to invalid IL or missing references)
		//IL_016e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_0177: 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_0190: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01db: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0202: Unknown result type (might be due to invalid IL or missing references)
		if (itemEquippable.isEquipped)
		{
			if (isActive)
			{
				TrailParticleSystem.Stop(false);
				isActive = false;
				grenadeTimer = 0f;
				itemToggle.ToggleItem(false, -1);
			}
		}
		else
		{
			if (!SemiFunc.IsMasterClientOrSingleplayer())
			{
				return;
			}
			if (itemToggle.toggleState && !isActive)
			{
				isActive = true;
				TickStart();
				TrailParticleSystem.Play(false);
			}
			if (!isActive)
			{
				return;
			}
			rb.AddForce(((Component)this).transform.up * 0.45f * 25f * Time.fixedDeltaTime * 25f, (ForceMode)0);
			rb.AddForce(Vector3.up * 0.15f * 15f * Time.fixedDeltaTime * 25f, (ForceMode)0);
			rb.AddTorque(randomTorque * 25f * Time.fixedDeltaTime * 25f, (ForceMode)0);
			if (timeToTwist > 200)
			{
				Vector3 val = Random.insideUnitSphere;
				randomTorque = ((Vector3)(ref val)).normalized * Random.Range(0f, 0.5f);
				timeToTwist = 0;
				val = rb.velocity;
				if (((Vector3)(ref val)).magnitude < 0.5f && !physGrabObject.grabbed)
				{
					rb.AddForce(((Component)this).transform.up * 3f, (ForceMode)1);
					rb.AddTorque(randomTorque * 15f, (ForceMode)1);
				}
			}
			grenadeTimer += Time.deltaTime;
			if (grenadeTimer >= tickTime)
			{
				grenadeTimer = 0f;
				TickEnd();
			}
		}
	}

	private void GrenadeReset()
	{
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		isActive = false;
		DeparentAndDestroy(TrailParticleSystem);
		grenadeTimer = 0f;
		itemToggle.ToggleItem(false, -1);
		if (!SemiFunc.IsMasterClientOrSingleplayer())
		{
			return;
		}
		rb.velocity = Vector3.zero;
		rb.angularVelocity = Vector3.zero;
		foreach (PhysGrabber item in physGrabObject.playerGrabbing.ToList())
		{
			if (!SemiFunc.IsMultiplayer())
			{
				item.ReleaseObject(photonView.ViewID, 0.1f);
				continue;
			}
			item.photonView.RPC("ReleaseObjectRPC", (RpcTarget)0, new object[3] { false, 0.1f, photonView.ViewID });
		}
	}

	private void DeparentAndDestroy(ParticleSystem particleSystem)
	{
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)particleSystem != (Object)null && particleSystem.isPlaying)
		{
			((Component)particleSystem).gameObject.transform.parent = null;
			MainModule main = particleSystem.main;
			((MainModule)(ref main)).stopAction = (ParticleSystemStopAction)2;
			particleSystem.Stop(false);
			particleSystem = null;
		}
	}

	private void TickStart()
	{
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		if (SemiFunc.IsMasterClient())
		{
			photonView.RPC("TickStartRPC", (RpcTarget)0, Array.Empty<object>());
		}
		else
		{
			TickStartRPC();
		}
	}

	private void TickEnd()
	{
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		if (SemiFunc.IsMasterClient())
		{
			photonView.RPC("TickEndRPC", (RpcTarget)0, Array.Empty<object>());
		}
		else
		{
			TickEndRPC();
		}
	}

	[PunRPC]
	private void TickStartRPC(PhotonMessageInfo _info = default(PhotonMessageInfo))
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		if (SemiFunc.MasterOnlyRPC(_info))
		{
			soundLaunch.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f);
			isActive = true;
		}
	}

	[PunRPC]
	private void TickEndRPC(PhotonMessageInfo _info = default(PhotonMessageInfo))
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d2: 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)
		if (!SemiFunc.MasterOnlyRPC(_info) || itemEquippable.isEquipped)
		{
			return;
		}
		FireworkDetonate.Invoke();
		if (SemiFunc.IsMasterClientOrSingleplayer())
		{
			if (!SemiFunc.RunIsShop() || isSpawnedGrenade)
			{
				if (!isSpawnedGrenade)
				{
					StatsManager.instance.ItemRemove(itemAttributes.instanceName);
				}
				Object.Destroy((Object)(object)((Component)this).gameObject, 15f);
				Object.Destroy((Object)(object)((Component)this).GetComponent<BoxCollider>());
				Object.Destroy((Object)(object)FireworkMesh);
				Object.Destroy((Object)(object)((Component)this).GetComponent<FireworkTrap>());
				TrailParticleSystem.Stop(false);
				Object.Destroy((Object)(object)TrailParticleSystem, 15f);
			}
			else
			{
				physGrabObject.Teleport(grenadeStartPosition, grenadeStartRotation);
			}
		}
		if (SemiFunc.RunIsShop() && !isSpawnedGrenade)
		{
			GrenadeReset();
		}
	}
}
public class LeverScript : MonoBehaviour
{
	public Animator LeverToggleAnimation;

	public Sound ButtonOnSound;

	public Sound ButtonOffSound;

	private PhotonView photonView;

	private StaticGrabObject staticGrabObject;

	private void Start()
	{
		photonView = ((Component)this).GetComponent<PhotonView>();
		staticGrabObject = ((Component)this).GetComponent<StaticGrabObject>();
	}

	public void animatorStart()
	{
		if (SemiFunc.IsMultiplayer())
		{
			if (SemiFunc.IsMasterClient())
			{
				photonView.RPC("animatorStartRPC", (RpcTarget)0, Array.Empty<object>());
			}
		}
		else
		{
			animatorStartRPC();
		}
	}

	[PunRPC]
	public void animatorStartRPC()
	{
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		Animator component = ((Component)this).GetComponent<Animator>();
		component.SetTrigger("leverOn");
		component.ResetTrigger("leverOff");
		GameDirector.instance.CameraShake.ShakeDistance(2f, 1f, 2f, ((Component)this).transform.position, 0.1f);
		GameDirector.instance.CameraImpact.ShakeDistance(2f, 1f, 3f, ((Component)this).transform.position, 0.1f);
		ButtonOnSound.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f);
	}

	public void animatorStay()
	{
		if (SemiFunc.IsMultiplayer())
		{
			if (SemiFunc.IsMasterClient())
			{
				photonView.RPC("animatorStartRPC", (RpcTarget)0, Array.Empty<object>());
			}
		}
		else
		{
			animatorStayRPC();
		}
	}

	[PunRPC]
	public void animatorStayRPC()
	{
		Animator component = ((Component)this).GetComponent<Animator>();
		component.SetTrigger("leverOn");
		component.ResetTrigger("leverOff");
	}

	public void animatorStop()
	{
		if (SemiFunc.IsMultiplayer())
		{
			if (SemiFunc.IsMasterClient())
			{
				photonView.RPC("animatorStartRPC", (RpcTarget)0, Array.Empty<object>());
			}
		}
		else
		{
			animatorStopRPC();
		}
	}

	[PunRPC]
	public void animatorStopRPC()
	{
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		Animator component = ((Component)this).GetComponent<Animator>();
		component.SetTrigger("leverOff");
		component.ResetTrigger("leverOn");
		GameDirector.instance.CameraShake.ShakeDistance(2f, 1f, 2f, ((Component)this).transform.position, 0.1f);
		GameDirector.instance.CameraImpact.ShakeDistance(2f, 1f, 3f, ((Component)this).transform.position, 0.1f);
		ButtonOffSound.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f);
	}
}
public class ObjectAreaTrigger : MonoBehaviour
{
	[SerializeField]
	private UnityEvent onTriggerEnter;

	[SerializeField]
	private UnityEvent onTriggerStay;

	[SerializeField]
	private UnityEvent onTriggerExit;

	private PhotonView photonView;

	private void OnTriggerEnter(Collider other)
	{
		onTriggerEnter.Invoke();
	}

	private void OnTriggerStay(Collider other)
	{
		onTriggerStay.Invoke();
	}

	private void OnTriggerExit(Collider other)
	{
		onTriggerExit.Invoke();
	}
}
public class PotionDanceTrigger : MonoBehaviour
{
	public enum State
	{
		start,
		levitate,
		end,
		inactive
	}

	private PhotonView photonView;

	internal State state = State.inactive;

	private bool stateStart = true;

	public Transform sphereEffects;

	public float range = 3f;

	private List<PlayerAvatar> capturedPlayerAvatars = new List<PlayerAvatar>();

	private float checkTimer;

	private int particleCount;

	private float stateTimer;

	private void StateMachine()
	{
		switch (state)
		{
		case State.start:
			StateStart();
			break;
		case State.levitate:
			StateLevitate();
			break;
		case State.end:
			StateEnd();
			break;
		case State.inactive:
			StateInactive();
			break;
		}
	}

	private void Reset()
	{
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		checkTimer = 0f;
		particleCount = 0;
		capturedPlayerAvatars.Clear();
		sphereEffects.localScale = Vector3.zero;
		((Component)sphereEffects).gameObject.SetActive(false);
	}

	private void StateInactive()
	{
		if (stateStart)
		{
			Reset();
			stateStart = false;
			((Component)this).gameObject.SetActive(false);
		}
	}

	private void StateEnd()
	{
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		if (stateStart)
		{
			stateStart = false;
		}
		if (((Component)sphereEffects).gameObject.activeSelf)
		{
			sphereEffects.localScale = Vector3.Lerp(sphereEffects.localScale, Vector3.zero, Time.deltaTime * 20f);
			if (sphereEffects.localScale.x < 0.01f)
			{
				StateSet(State.inactive);
			}
		}
		else
		{
			StateSet(State.inactive);
		}
	}

	private void StateStart()
	{
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: 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_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		if (stateStart)
		{
			Reset();
			((Component)sphereEffects).gameObject.SetActive(true);
			stateStart = false;
		}
		sphereEffects.localScale = Vector3.Lerp(sphereEffects.localScale, Vector3.one * 1.2f, Time.deltaTime * 6f);
		if (sphereEffects.localScale.x > 1.19f)
		{
			sphereEffects.localScale = Vector3.one * 1.2f;
			StateSet(State.levitate);
		}
	}

	private void StateLevitate()
	{
		if (stateStart)
		{
			stateTimer = 0f;
			stateStart = false;
			GetAllWithinRange();
		}
		if (checkTimer > 0.35f)
		{
			GetAllWithinRange();
			checkTimer = 0f;
		}
		checkTimer += Time.deltaTime;
		stateTimer += Time.deltaTime;
	}

	private void RemoveAllOutOfRange()
	{
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: 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_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		for (int num = capturedPlayerAvatars.Count - 1; num >= 0; num--)
		{
			PlayerAvatar val = capturedPlayerAvatars[num];
			if (!Object.op_Implicit((Object)(object)val))
			{
				capturedPlayerAvatars.RemoveAt(num);
			}
			else if (Vector3.Distance(new Vector3(((Component)val).transform.position.x, ((Component)this).transform.position.y, ((Component)val).transform.position.z), ((Component)this).transform.position) > range * 1.2f)
			{
				capturedPlayerAvatars.RemoveAt(num);
			}
		}
	}

	private void StateLevitateFixed()
	{
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
		//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_00ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e1: 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_00e8: Unknown result type (might be due to invalid IL or missing references)
		if (state != State.levitate)
		{
			return;
		}
		int count = capturedPlayerAvatars.Count;
		if (particleCount < count)
		{
			Vector3 val = Vector3.zero;
			bool flag = false;
			if (particleCount < capturedPlayerAvatars.Count)
			{
				if (Object.op_Implicit((Object)(object)capturedPlayerAvatars[particleCount]))
				{
					val = ((Component)capturedPlayerAvatars[particleCount]).transform.position;
					flag = true;
				}
			}
			else
			{
				int num = particleCount - capturedPlayerAvatars.Count;
			}
			if (flag)
			{
				Vector3 val2 = Random.insideUnitSphere * 2f;
				val2.y = 0f - Mathf.Abs(val2.y);
				val += val2;
			}
			particleCount++;
		}
		else
		{
			particleCount = 0;
		}
	}

	private void FixedUpdate()
	{
		if (state != State.levitate)
		{
			return;
		}
		foreach (PlayerAvatar capturedPlayerAvatar in capturedPlayerAvatars)
		{
			if (Object.op_Implicit((Object)(object)capturedPlayerAvatar) && capturedPlayerAvatar.isLocal && Object.op_Implicit((Object)(object)PlayerController.instance))
			{
				float num = Mathf.Sin(Time.time * 11.5f) * 0.7f;
				float num2 = Mathf.Sin(Time.time * 11.5f) * 25f;
				CameraAim.Instance.AdditiveAimY(num);
				PlayerExpressionsUI.instance.playerAvatarVisuals.playerAvatar.playerExpression.OverrideExpressionSet(4, 100f);
				PlayerExpressionsUI.instance.playerExpression.OverrideExpressionSet(4, 100f);
				PlayerExpressionsUI.instance.playerAvatarVisuals.HeadTiltOverride(num2 * 0.5f);
			}
		}
		if (SemiFunc.IsMasterClientOrSingleplayer())
		{
			StateLevitateFixed();
		}
	}

	private void Update()
	{
		StateMachine();
	}

	public void StateSet(State _state)
	{
		if (state != _state)
		{
			state = _state;
			stateStart = true;
		}
	}

	public void GetAllWithinRange()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		RemoveAllOutOfRange();
		foreach (PlayerAvatar item in SemiFunc.PlayerGetAllPlayerAvatarWithinRange(range, ((Component)this).transform.position, false, default(LayerMask)))
		{
			if (!capturedPlayerAvatars.Contains(item))
			{
				capturedPlayerAvatars.Add(item);
			}
		}
	}

	private void OnEnable()
	{
		StateSet(State.start);
	}

	private void OnDisable()
	{
		StateSet(State.inactive);
		StateInactive();
	}
}
namespace Minecraft_Stronghold_Scripts
{
	[BepInPlugin("MinecraftStrongholdLevel", "MinecraftStrongholdLevel", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Minecraft_Stronghold_Scripts : BaseUnityPlugin
	{
		private void Awake()
		{
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "MinecraftStrongholdLevel";

		public const string PLUGIN_NAME = "MinecraftStrongholdLevel";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}