Decompiled source of Tf2Emotes v1.0.9

plugins/TF2Emotes/TitanFall2Emotes.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using EmotesAPI;
using GameNetcodeStuff;
using LethalConfig;
using LethalConfig.ConfigItems;
using LethalEmotesAPI.ImportV2;
using Microsoft.CodeAnalysis;
using MonoMod.RuntimeDetour;
using TitanFall2Emotes;
using TitanFall2Emotes.IMissWwise;
using TitanFall2Emotes.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("TitanFall2Emotes")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+71182f9eb40ace03586d2ec2f910a4622890b0cd")]
[assembly: AssemblyProduct("TitanFall2Emotes")]
[assembly: AssemblyTitle("TitanFall2Emotes")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
internal static class Assets
{
	internal static readonly List<AssetBundle> AssetBundles = new List<AssetBundle>();

	private static readonly Dictionary<string, int> AssetIndices = new Dictionary<string, int>();

	internal static void LoadAssetBundlesFromFolder(string folderName)
	{
		folderName = Path.Combine(Path.GetDirectoryName(TF2Plugin.PInfo.Location), folderName);
		string[] files = Directory.GetFiles(folderName);
		foreach (string text in files)
		{
			AssetBundle val = AssetBundle.LoadFromFile(text);
			int count = AssetBundles.Count;
			AssetBundles.Add(val);
			string[] allAssetNames = val.GetAllAssetNames();
			foreach (string text2 in allAssetNames)
			{
				string text3 = text2.ToLowerInvariant();
				if (text3.StartsWith("assets/"))
				{
					text3 = text3.Remove(0, "assets/".Length);
				}
				AssetIndices[text3] = count;
			}
			DebugClass.Log((object)("Loaded AssetBundle: " + Path.GetFileName(text)));
		}
	}

	internal static T Load<T>(string assetName) where T : Object
	{
		try
		{
			assetName = assetName.ToLowerInvariant();
			if (assetName.Contains(":"))
			{
				string[] array = assetName.Split(':');
				assetName = array[1].ToLowerInvariant();
			}
			if (assetName.StartsWith("assets/"))
			{
				assetName = assetName.Remove(0, "assets/".Length);
			}
			int index = AssetIndices[assetName];
			return AssetBundles[index].LoadAsset<T>("assets/" + assetName);
		}
		catch (Exception arg)
		{
			DebugClass.Log((object)$"Couldn't load asset [{assetName}] reason: {arg}");
			return default(T);
		}
	}
}
namespace TitanFall2Emotes
{
	internal class ChairHandler : MonoBehaviour
	{
		internal GameObject chair;

		private bool check = true;

		internal Vector3 pos;

		internal Vector3 rot;

		internal Vector3 scal;

		private bool check2 = false;

		private bool check3 = false;

		internal BoneMapper mapper;

		private float timer = 0f;

		private int whenToEmote = 0;

		private void Start()
		{
			whenToEmote = Random.Range(15, 25);
		}

		private void Update()
		{
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0278: Unknown result type (might be due to invalid IL or missing references)
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0323: Unknown result type (might be due to invalid IL or missing references)
			//IL_0329: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			if (check)
			{
				timer += Time.deltaTime;
			}
			if (timer > (float)whenToEmote)
			{
				timer = 0f;
				whenToEmote = Random.Range(15, 25);
				switch (Random.Range(0, 3))
				{
				case 0:
					mapper.preserveParent = true;
					mapper.preserveProps = true;
					mapper.PlayAnim("com.weliveinasociety.teamfortress2emotes__engiRanchoBurp", 0);
					AudioContainerHolder.instance.PlayAudio(mapper.personalAudioSource, TF2Plugin.Instance._play_ranchoburp, mapper);
					break;
				case 1:
					mapper.preserveParent = true;
					mapper.preserveProps = true;
					mapper.PlayAnim("com.weliveinasociety.teamfortress2emotes__engiRanchoBigDrink", 0);
					AudioContainerHolder.instance.PlayAudio(mapper.personalAudioSource, TF2Plugin.Instance._play_rancholong, mapper);
					((Component)this).GetComponentInChildren<Animator>().SetBool("BigDrink", true);
					break;
				case 2:
					mapper.preserveParent = true;
					mapper.preserveProps = true;
					mapper.PlayAnim("com.weliveinasociety.teamfortress2emotes__engiRanchoQuickDrink", 0);
					AudioContainerHolder.instance.PlayAudio(mapper.personalAudioSource, TF2Plugin.Instance._play_ranchoquick, mapper);
					((Component)this).GetComponentInChildren<Animator>().SetBool("SmallDrink", true);
					break;
				}
			}
			else if (timer > 3f)
			{
				((Component)this).GetComponentInChildren<Animator>().SetBool("BigDrink", false);
				((Component)this).GetComponentInChildren<Animator>().SetBool("SmallDrink", false);
			}
			if (check && !Object.op_Implicit((Object)(object)chair))
			{
				check = false;
				((MonoBehaviour)this).StartCoroutine(spinThenDestroy());
				((Component)this).GetComponentInChildren<Animator>().SetBool("Breaking", true);
				((Component)this).gameObject.transform.SetParent((Transform)null);
				((Component)this).gameObject.transform.position = pos;
				((Component)this).gameObject.transform.localEulerAngles = rot;
				((Component)this).gameObject.transform.localScale = scal;
				scal *= 1.333f;
				TF2Plugin.Instance.StopAudioContainerStuff(mapper);
				AudioContainerHolder.instance.PlayAudio(mapper.personalAudioSource, TF2Plugin.Instance._play_ranchoclose, mapper);
			}
			if (check3)
			{
				((Component)this).gameObject.transform.localScale = Vector3.Slerp(((Component)this).gameObject.transform.localScale, Vector3.zero, Time.deltaTime * 5f);
			}
			else if (check2)
			{
				((Component)this).gameObject.transform.localScale = Vector3.Slerp(((Component)this).gameObject.transform.localScale, scal, Time.deltaTime * 30f);
			}
		}

		private IEnumerator spinThenDestroy()
		{
			yield return (object)new WaitForSeconds(3.5f);
			check2 = true;
			yield return (object)new WaitForSeconds(0.15f);
			check3 = true;
			yield return (object)new WaitForSeconds(1f);
			Object.Destroy((Object)(object)((Component)this).gameObject);
		}
	}
	internal class Conga : MonoBehaviour
	{
		public string akSound;

		public static void StartConga(BoneMapper joinerMapper, int spot)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			joinerMapper.PlayAnim(TF2Plugin.Conga_Emotes[spot], 0);
			GameObject val = new GameObject();
			val.transform.parent = ((Component)joinerMapper).gameObject.transform;
			val.transform.localPosition = Vector3.zero;
			string text = "";
			switch (spot)
			{
			case 0:
				text = "Conga_Demo";
				break;
			case 1:
				text = "Conga_Engi";
				break;
			case 2:
				text = "Conga_Heavy";
				break;
			case 3:
				text = "Conga_Medic";
				break;
			case 4:
				text = "Conga_Pyro";
				break;
			case 5:
				text = "Conga_Scout";
				break;
			case 6:
				text = "Conga_Sniper";
				break;
			case 7:
				text = "Conga_Soldier";
				break;
			case 8:
				text = "Conga_Spy";
				break;
			}
			val.AddComponent<Conga>().akSound = text;
			joinerMapper.props.Add(val);
			joinerMapper.SetAutoWalk(0.2f, false);
		}
	}
	internal class Flip : MonoBehaviour
	{
		public int charType;

		public static void FlipWait(BoneMapper joinerMapper, int spot)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Expected O, but got Unknown
			//IL_0067: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			joinerMapper.PlayAnim(TF2Plugin.Flip_Wait_Emotes[spot], 0);
			joinerMapper.props.Add(new GameObject());
			joinerMapper.props[0].AddComponent<Flip>().charType = spot;
			GameObject val = new GameObject();
			((Object)val).name = "Flip_WaitProp";
			joinerMapper.props.Add(val);
			val.transform.localPosition = ((Component)joinerMapper).transform.position;
			val.transform.localEulerAngles = ((Component)joinerMapper).transform.eulerAngles;
			val.transform.localScale = Vector3.one;
			val.transform.SetParent(joinerMapper.mapperBodyTransform.parent);
			joinerMapper.AssignParentGameObject(val, false, false, true, true, false);
		}

		public static void Flip_Flip(BoneMapper joinerMapper, int spot, BoneMapper hostJoinerMapper)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_004b: 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)
			//IL_0066: 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_008d: Unknown result type (might be due to invalid IL or missing references)
			joinerMapper.PlayAnim(TF2Plugin.Flip_Flip_Emotes[spot], 0);
			GameObject val = new GameObject();
			((Object)val).name = "Flip_FlipProp";
			joinerMapper.props.Add(val);
			val.transform.SetParent(((Component)hostJoinerMapper).transform);
			Vector3 lossyScale = ((Component)hostJoinerMapper).transform.lossyScale;
			val.transform.localPosition = new Vector3(0f, 0f, 1.95f / lossyScale.z);
			val.transform.localEulerAngles = new Vector3(0f, 180f, 0f);
			val.transform.SetParent(joinerMapper.mapperBodyTransform.parent);
			joinerMapper.AssignParentGameObject(val, true, true, true, true, true);
		}

		public static void Flip_Throw(BoneMapper joinerMapper, int spot, BoneMapper hostJoinerMapper)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_003f: 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_0067: Unknown result type (might be due to invalid IL or missing references)
			joinerMapper.PlayAnim(TF2Plugin.Flip_Throw_Emotes[spot], 0);
			GameObject val = new GameObject();
			((Object)val).name = "Flip_ThrowProp";
			joinerMapper.props.Add(val);
			val.transform.localPosition = ((Component)joinerMapper).transform.position;
			val.transform.localEulerAngles = ((Component)joinerMapper).transform.eulerAngles;
			val.transform.localScale = Vector3.one;
			val.transform.SetParent(joinerMapper.mapperBodyTransform.parent);
			joinerMapper.AssignParentGameObject(val, true, true, true, true, false);
		}

		public static void Flip_Join(BoneMapper joinerMapper, int spot, BoneMapper hostJoinerMapper)
		{
			int spot2 = hostJoinerMapper.props[0].GetComponent<Flip>().charType;
			TF2Networker.instance.SyncEmoteToClientRpc(hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "Flip_Throw", spot2, hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
			TF2Networker.instance.SyncEmoteToClientRpc(joinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "Flip_Flip", spot, hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
		}
	}
	internal class Kazotsky : MonoBehaviour
	{
		public static void StartKazotsky(BoneMapper joinerMapper, int spot)
		{
			joinerMapper.PlayAnim(TF2Plugin.KazotskyKick_Emotes[spot], 0);
			joinerMapper.SetAutoWalk(0.2f, true);
		}
	}
	internal class Laugh : MonoBehaviour
	{
		public static void PlayLaugh(BoneMapper joinerMapper, int spot)
		{
			joinerMapper.PlayAnim(TF2Plugin.Laugh_Emotes[spot], 0);
		}
	}
	internal static class LethalConfig
	{
		internal static void SetupLethalConfig()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Expected O, but got Unknown
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Expected O, but got Unknown
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Expected O, but got Unknown
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Expected O, but got Unknown
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Expected O, but got Unknown
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Expected O, but got Unknown
			Sprite modIcon = Assets.Load<Sprite>("lethalconfigicon.png");
			LethalConfigManager.SetModIcon(modIcon);
			LethalConfigManager.SetModDescription("Are those Latin rhythms? I love Latin rhythms!");
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.scout, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.soldier, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.pyro, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.demo, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.heavy, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.engi, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.medic, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.sniper, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.spy, false));
		}
	}
	public class TF2Networker : NetworkBehaviour
	{
		public static TF2Networker instance;

		private void Awake()
		{
			((Object)this).name = "TF2_Networker";
			instance = this;
		}

		[ClientRpc]
		public void SyncEmoteToClientRpc(ulong netId, string name, int spot, ulong secondaryNetId)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: 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_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3673785931u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, netId);
				bool flag = name != null;
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives));
				if (flag)
				{
					((FastBufferWriter)(ref val2)).WriteValueSafe(name, false);
				}
				BytePacker.WriteValueBitPacked(val2, spot);
				BytePacker.WriteValueBitPacked(val2, secondaryNetId);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3673785931u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			GameObject gameObject = ((Component)((NetworkBehaviour)this).GetNetworkObject(netId)).gameObject;
			BoneMapper componentInChildren = gameObject.GetComponentInChildren<BoneMapper>();
			GameObject gameObject2 = ((Component)((NetworkBehaviour)this).GetNetworkObject(secondaryNetId)).gameObject;
			BoneMapper componentInChildren2 = gameObject2.GetComponentInChildren<BoneMapper>();
			bool joinerIsEnemy = gameObject.GetComponents<EnemyAI>().Length == 1;
			bool hostAndJoinerAreDifferentTeams = (gameObject.GetComponents<EnemyAI>().Length == 1 && gameObject2.GetComponents<PlayerControllerB>().Length == 1) || (gameObject.GetComponents<PlayerControllerB>().Length == 1 && gameObject2.GetComponents<EnemyAI>().Length == 1);
			if (name == null)
			{
				return;
			}
			switch (name.Length)
			{
			case 9:
				switch (name[5])
				{
				case 't':
					if (name == "RPS_Start")
					{
						RockPaperScissors.RPSStart(componentInChildren, spot);
					}
					break;
				case 'W':
					if (name == "Flip_Wait")
					{
						Flip.FlipWait(componentInChildren, spot);
					}
					break;
				case 'F':
					if (name == "Flip_Flip")
					{
						Flip.Flip_Flip(componentInChildren, spot, componentInChildren2);
					}
					break;
				}
				break;
			case 11:
				switch (name[0])
				{
				case 'C':
					if (name == "Conga_Start")
					{
						Conga.StartConga(componentInChildren, spot);
					}
					break;
				case 'L':
					if (name == "Laugh_Start")
					{
						Laugh.PlayLaugh(componentInChildren, spot);
					}
					break;
				}
				break;
			case 7:
				if (name == "RPS_Win")
				{
					RockPaperScissors.RPSWin(componentInChildren, spot, componentInChildren2, joinerIsEnemy);
				}
				break;
			case 8:
				if (name == "RPS_Loss")
				{
					RockPaperScissors.RPSLose(componentInChildren, spot, componentInChildren2, joinerIsEnemy, hostAndJoinerAreDifferentTeams);
				}
				break;
			case 10:
				if (name == "Flip_Throw")
				{
					Flip.Flip_Throw(componentInChildren, spot, componentInChildren2);
				}
				break;
			case 14:
				if (name == "Kazotsky_Start")
				{
					Kazotsky.StartKazotsky(componentInChildren, spot);
				}
				break;
			case 12:
			case 13:
				break;
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void SyncEmoteToServerRpc(ulong netId, string name, int spot, ulong secondaryNetId)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: 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_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3453768715u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, netId);
				bool flag = name != null;
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives));
				if (flag)
				{
					((FastBufferWriter)(ref val2)).WriteValueSafe(name, false);
				}
				BytePacker.WriteValueBitPacked(val2, spot);
				BytePacker.WriteValueBitPacked(val2, secondaryNetId);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3453768715u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost))
			{
				return;
			}
			GameObject gameObject = ((Component)((NetworkBehaviour)this).GetNetworkObject(netId)).gameObject;
			BoneMapper componentInChildren = gameObject.GetComponentInChildren<BoneMapper>();
			GameObject gameObject2 = ((Component)((NetworkBehaviour)this).GetNetworkObject(secondaryNetId)).gameObject;
			BoneMapper componentInChildren2 = gameObject2.GetComponentInChildren<BoneMapper>();
			bool flag2 = gameObject.GetComponents<PlayerControllerB>().Length == 1;
			bool flag3 = gameObject2.GetComponents<PlayerControllerB>().Length == 1;
			if (!(name == "RPS_Join"))
			{
				if (name == "Flip_Join")
				{
					Flip.Flip_Join(componentInChildren, spot, componentInChildren2);
				}
				else
				{
					SyncEmoteToClientRpc(netId, name, spot, secondaryNetId);
				}
			}
			else
			{
				RockPaperScissors.RPSJoin(componentInChildren, spot, componentInChildren2);
			}
		}

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVariables();
		}

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_TF2Networker()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(3673785931u, new RpcReceiveHandler(__rpc_handler_3673785931));
			NetworkManager.__rpc_func_table.Add(3453768715u, new RpcReceiveHandler(__rpc_handler_3453768715));
		}

		private static void __rpc_handler_3673785931(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: 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_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong netId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref netId);
				bool flag = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
				string name = null;
				if (flag)
				{
					((FastBufferReader)(ref reader)).ReadValueSafe(ref name, false);
				}
				int spot = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref spot);
				ulong secondaryNetId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref secondaryNetId);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((TF2Networker)(object)target).SyncEmoteToClientRpc(netId, name, spot, secondaryNetId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3453768715(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: 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_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong netId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref netId);
				bool flag = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
				string name = null;
				if (flag)
				{
					((FastBufferReader)(ref reader)).ReadValueSafe(ref name, false);
				}
				int spot = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref spot);
				ulong secondaryNetId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref secondaryNetId);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((TF2Networker)(object)target).SyncEmoteToServerRpc(netId, name, spot, secondaryNetId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "TF2Networker";
		}
	}
	internal class RockPaperScissors : MonoBehaviour
	{
		public int charType;

		public static void RPSStart(BoneMapper joinerMapper, int spot)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			joinerMapper.PlayAnim(TF2Plugin.RPS_Start_Emotes[spot], 0);
			joinerMapper.props.Add(new GameObject());
			joinerMapper.props[0].AddComponent<RockPaperScissors>().charType = spot;
		}

		public static void RPSWin(BoneMapper joinerMapper, int spot, BoneMapper hostJoinerMapper, bool joinerIsEnemy)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_00ee: 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_0116: 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_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_0279: Unknown result type (might be due to invalid IL or missing references)
			joinerMapper.PlayAnim(TF2Plugin.RPS_Win_Emotes[spot], 0);
			GameObject val = new GameObject();
			((Object)val).name = "RPS_WinProp";
			joinerMapper.props.Add(val);
			if ((Object)(object)hostJoinerMapper != (Object)(object)joinerMapper)
			{
				val.transform.SetParent(((Component)hostJoinerMapper).transform);
				Vector3 lossyScale = ((Component)hostJoinerMapper).transform.lossyScale;
				val.transform.localPosition = new Vector3(0f, 0f, 2.5f / lossyScale.z);
				val.transform.localEulerAngles = new Vector3(0f, 180f, 0f);
				val.transform.localScale = Vector3.one;
				val.transform.SetParent(joinerMapper.mapperBodyTransform.parent);
				joinerMapper.AssignParentGameObject(val, true, true, false, false, true);
			}
			else
			{
				val.transform.localPosition = ((Component)joinerMapper).transform.position;
				val.transform.localEulerAngles = ((Component)joinerMapper).transform.eulerAngles;
				val.transform.localScale = Vector3.one;
				val.transform.SetParent(joinerMapper.mapperBodyTransform.parent);
				joinerMapper.AssignParentGameObject(val, true, true, false, false, false);
			}
			string text = "Red";
			if (joinerIsEnemy)
			{
				text = "Blu";
			}
			int count = joinerMapper.props.Count;
			switch (spot % 3)
			{
			case 0:
				joinerMapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:Assets/RPS/" + text + "_Rock_Win.prefab")));
				break;
			case 1:
				joinerMapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:Assets/RPS/" + text + "_Paper_Win.prefab")));
				break;
			case 2:
				joinerMapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:Assets/RPS/" + text + "_Scissors_Win.prefab")));
				break;
			}
			joinerMapper.props[count].transform.SetParent(joinerMapper.parentGameObject.transform);
			joinerMapper.props[count].transform.localEulerAngles = Vector3.zero;
			joinerMapper.props[count].transform.localPosition = new Vector3(0f, 2.5f * joinerMapper.props[count].transform.lossyScale.y, 0f);
			joinerMapper.ScaleProps();
		}

		public static void RPSLose(BoneMapper joinerMapper, int spot, BoneMapper hostJoinerMapper, bool joinerIsEnemy, bool hostAndJoinerAreDifferentTeams)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_00ee: 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_0116: 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_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: Unknown result type (might be due to invalid IL or missing references)
			joinerMapper.PlayAnim(TF2Plugin.RPS_Loss_Emotes[spot], 0);
			GameObject val = new GameObject();
			((Object)val).name = "RPS_LossProp";
			joinerMapper.props.Add(val);
			if ((Object)(object)hostJoinerMapper != (Object)(object)joinerMapper)
			{
				val.transform.SetParent(((Component)hostJoinerMapper).transform);
				Vector3 lossyScale = ((Component)hostJoinerMapper).transform.lossyScale;
				val.transform.localPosition = new Vector3(0f, 0f, 2.5f / lossyScale.z);
				val.transform.localEulerAngles = new Vector3(0f, 180f, 0f);
				val.transform.localScale = Vector3.one;
				val.transform.SetParent(joinerMapper.mapperBodyTransform.parent);
				joinerMapper.AssignParentGameObject(val, true, true, false, false, true);
			}
			else
			{
				val.transform.localPosition = ((Component)joinerMapper).transform.position;
				val.transform.localEulerAngles = ((Component)joinerMapper).transform.eulerAngles;
				val.transform.localScale = Vector3.one;
				val.transform.SetParent(joinerMapper.mapperBodyTransform.parent);
				joinerMapper.AssignParentGameObject(val, true, true, false, false, false);
			}
			string text = "Red";
			if (joinerIsEnemy)
			{
				text = "Blu";
			}
			if (hostAndJoinerAreDifferentTeams)
			{
			}
			int count = joinerMapper.props.Count;
			switch (spot % 3)
			{
			case 0:
				joinerMapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:Assets/RPS/" + text + "_Rock_Lose.prefab")));
				break;
			case 1:
				joinerMapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:Assets/RPS/" + text + "_Paper_Lose.prefab")));
				break;
			case 2:
				joinerMapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:Assets/RPS/" + text + "_Scissors_Lose.prefab")));
				break;
			}
			joinerMapper.props[count].transform.SetParent(joinerMapper.parentGameObject.transform);
			joinerMapper.props[count].transform.localEulerAngles = Vector3.zero;
			joinerMapper.props[count].transform.localPosition = new Vector3(0f, 2.5f * joinerMapper.props[count].transform.lossyScale.y, 0f);
			joinerMapper.ScaleProps();
		}

		public static void RPSJoin(BoneMapper joinerMapper, int spot, BoneMapper hostJoinerMapper)
		{
			int num = Random.Range(0, 2);
			int num2 = Random.Range(0, 3);
			int num3 = ((num != 0) ? (num2 + 1) : (num2 - 1));
			if (num3 > 2)
			{
				num3 -= 3;
			}
			if (num3 < 0)
			{
				num3 += 3;
			}
			num2 += hostJoinerMapper.props[0].GetComponent<RockPaperScissors>().charType * 3;
			num3 += spot * 3;
			if (num == 0)
			{
				TF2Networker.instance.SyncEmoteToClientRpc(hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "RPS_Win", num2, hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
				TF2Networker.instance.SyncEmoteToClientRpc(joinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "RPS_Loss", num3, hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
			}
			else
			{
				TF2Networker.instance.SyncEmoteToClientRpc(hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "RPS_Loss", num2, hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
				TF2Networker.instance.SyncEmoteToClientRpc(joinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "RPS_Win", num3, hostJoinerMapper.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
			}
		}
	}
	public static class Settings
	{
		public static ConfigEntry<bool> scout;

		public static ConfigEntry<bool> soldier;

		public static ConfigEntry<bool> pyro;

		public static ConfigEntry<bool> demo;

		public static ConfigEntry<bool> heavy;

		public static ConfigEntry<bool> engi;

		public static ConfigEntry<bool> medic;

		public static ConfigEntry<bool> sniper;

		public static ConfigEntry<bool> spy;

		internal static void RunAll()
		{
			SetupConfig();
			if (Chainloader.PluginInfos.ContainsKey("ainavt.lc.lethalconfig"))
			{
				LethalConfig.SetupLethalConfig();
			}
			LoadSettings();
		}

		private static void SetupConfig()
		{
			scout = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Scout", true, "Puts Scout into the random merc pool");
			soldier = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Soldier", true, "Puts Soldier into the random merc pool");
			pyro = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Pyro", true, "Puts Pyro into the random merc pool");
			demo = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Demoman", true, "Puts Demoman into the random merc pool");
			heavy = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Heavy", true, "Puts Heavy into the random merc pool");
			engi = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Engineer", true, "Puts Engineer into the random merc pool");
			medic = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Medic", true, "Puts Medic into the random merc pool");
			sniper = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Sniper", true, "Puts Sniper into the random merc pool");
			spy = ((BaseUnityPlugin)TF2Plugin.Instance).Config.Bind<bool>("Merc Selection", "Spy", true, "Puts Spy into the random merc pool");
			scout.SettingChanged += Merc_SettingChanged;
			soldier.SettingChanged += Merc_SettingChanged;
			pyro.SettingChanged += Merc_SettingChanged;
			demo.SettingChanged += Merc_SettingChanged;
			heavy.SettingChanged += Merc_SettingChanged;
			engi.SettingChanged += Merc_SettingChanged;
			medic.SettingChanged += Merc_SettingChanged;
			sniper.SettingChanged += Merc_SettingChanged;
			spy.SettingChanged += Merc_SettingChanged;
		}

		private static void Merc_SettingChanged(object sender, EventArgs e)
		{
			LoadSettings();
		}

		internal static void LoadSettings()
		{
			TF2Plugin.validMercs.Clear();
			if (demo.Value)
			{
				TF2Plugin.validMercs.Add(0);
			}
			if (engi.Value)
			{
				TF2Plugin.validMercs.Add(1);
			}
			if (heavy.Value)
			{
				TF2Plugin.validMercs.Add(2);
			}
			if (medic.Value)
			{
				TF2Plugin.validMercs.Add(3);
			}
			if (pyro.Value)
			{
				TF2Plugin.validMercs.Add(4);
			}
			if (scout.Value)
			{
				TF2Plugin.validMercs.Add(5);
			}
			if (sniper.Value)
			{
				TF2Plugin.validMercs.Add(6);
			}
			if (soldier.Value)
			{
				TF2Plugin.validMercs.Add(7);
			}
			if (spy.Value)
			{
				TF2Plugin.validMercs.Add(8);
			}
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.weliveinasociety.teamfortress2emotes", "TF2Emotes", "1.0.9")]
	public class TF2Plugin : BaseUnityPlugin
	{
		public static TF2Plugin Instance;

		public const string PluginGUID = "com.weliveinasociety.teamfortress2emotes";

		public const string PluginAuthor = "Nunchuk";

		public const string PluginName = "TF2Emotes";

		public const string PluginVersion = "1.0.9";

		internal static List<string> Conga_Emotes = new List<string>();

		internal static List<string> KazotskyKick_Emotes = new List<string>();

		internal static List<string> RPS_Start_Emotes = new List<string>();

		internal static List<string> RPS_Loss_Emotes = new List<string>();

		internal static List<string> RPS_Win_Emotes = new List<string>();

		internal static List<string> Flip_Wait_Emotes = new List<string>();

		internal static List<string> Flip_Flip_Emotes = new List<string>();

		internal static List<string> Flip_Throw_Emotes = new List<string>();

		internal static List<string> Laugh_Emotes = new List<string>();

		internal static List<int> validMercs = new List<int>();

		private static GameObject tf2Networker;

		private static Hook playerControllerStartHook;

		private static Hook networkManagerStartHook;

		internal int _conga;

		internal int _conga_demo_start;

		internal int _conga_engi_start;

		internal int _conga_heavy_start;

		internal int _conga_medic_start;

		internal int _conga_pyro_start;

		internal int _conga_scout_start;

		internal int _conga_sniper_start;

		internal int _conga_soldier_start;

		internal int _conga_spy_start;

		internal int _conga_demo_loop;

		internal int _conga_engi_loop;

		internal int _conga_heavy_loop;

		internal int _conga_medic_loop;

		internal int _conga_pyro_loop;

		internal int _conga_scout_loop;

		internal int _conga_sniper_loop;

		internal int _conga_soldier_loop;

		internal int _conga_spy_loop;

		internal int _demo_flip_flip;

		internal int _demo_flip_throw;

		internal int _demo_flip_waiting;

		internal int _demo_laugh;

		internal int _engi_flip_flip;

		internal int _engi_flip_throw;

		internal int _engi_flip_waiting;

		internal int _engi_laugh;

		internal int _heavy_flip_flip;

		internal int _heavy_flip_throw;

		internal int _heavy_flip_waiting;

		internal int _heavy_laugh;

		internal int _kazotsky;

		internal int _medic_flip_flip;

		internal int _medic_flip_throw;

		internal int _medic_flip_waiting;

		internal int _medic_laugh;

		internal int _play_rancho;

		internal int _play_ranchoburp;

		internal int _play_ranchoclose;

		internal int _play_rancholong;

		internal int _play_ranchoquick;

		internal int _pyro_flip_flip;

		internal int _pyro_flip_throw;

		internal int _pyro_flip_waiting;

		internal int _pyro_laugh;

		internal int _rps_demo_initiate;

		internal int _rps_demo_loss;

		internal int _rps_demo_winpaper;

		internal int _rps_demo_winrock;

		internal int _rps_demo_winscissors;

		internal int _rps_engi_initiate;

		internal int _rps_engi_loss;

		internal int _rps_engi_winpaper;

		internal int _rps_engi_winrock;

		internal int _rps_engi_winscissors;

		internal int _rps_heavy_initiate;

		internal int _rps_heavy_loss;

		internal int _rps_heavy_winpaper;

		internal int _rps_heavy_winrock;

		internal int _rps_heavy_winscissors;

		internal int _rps_medic_initiate;

		internal int _rps_medic_loss;

		internal int _rps_medic_winpaper;

		internal int _rps_medic_winrock;

		internal int _rps_medic_winscissors;

		internal int _rps_pyro_initiate;

		internal int _rps_pyro_loss;

		internal int _rps_pyro_winpaper;

		internal int _rps_pyro_winrock;

		internal int _rps_pyro_winscissors;

		internal int _rps_scout_initiate;

		internal int _rps_scout_loss;

		internal int _rps_scout_lossrock;

		internal int _rps_scout_winpaper;

		internal int _rps_scout_winrock;

		internal int _rps_scout_winscissors;

		internal int _rps_sniper_loss;

		internal int _rps_sniper_winpaper;

		internal int _rps_sniper_winrock;

		internal int _rps_sniper_winscissors;

		internal int _rps_sniper_initiate_start;

		internal int _rps_sniper_initiate_loop;

		internal int _rps_soldier_initiate;

		internal int _rps_soldier_loss;

		internal int _rps_soldier_winpaper;

		internal int _rps_soldier_winrock;

		internal int _rps_soldier_winscissors;

		internal int _rps_spy_initiate;

		internal int _rps_spy_windup1;

		internal int _rps_spy_windup2;

		internal int _rps_spy_windup3;

		internal int _rps_spy_losspaper;

		internal int _rps_spy_lossrock;

		internal int _rps_spy_lossscissors;

		internal int _rps_spy_winpaper;

		internal int _rps_spy_winrock;

		internal int _rps_spy_winscissors;

		internal int _scout_flip_flip;

		internal int _scout_flip_throw;

		internal int _scout_flip_waiting;

		internal int _sniper_flip_flip;

		internal int _sniper_flip_throw;

		internal int _sniper_flip_waiting;

		internal int _soldier_flip_flip;

		internal int _soldier_flip_throw;

		internal int _soldier_flip_waiting;

		internal int _spy_flip_flip;

		internal int _spy_flip_throw;

		internal int _spy_flip_waiting;

		internal int _spy_laugh;

		private string prevAnimation;

		public static PluginInfo PInfo { get; private set; }

		private void PlayerControllerStart(Action<PlayerControllerB> orig, PlayerControllerB self)
		{
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Expected O, but got Unknown
			orig(self);
			if (((NetworkBehaviour)self).IsServer && (Object)(object)TF2Networker.instance == (Object)null)
			{
				GameObject val = Object.Instantiate<GameObject>(tf2Networker);
				val.GetComponent<NetworkObject>().Spawn(true);
			}
			if ((Object)(object)AudioContainerHolder.instance == (Object)null)
			{
				GameObject val2 = new GameObject();
				val2.AddComponent<AudioContainerHolder>();
			}
		}

		private void NetworkManagerStart(Action<GameNetworkManager> orig, GameNetworkManager self)
		{
			try
			{
				tf2Networker = Assets.Load<GameObject>("tf2222networker.prefab");
				tf2Networker.AddComponent<TF2Networker>();
				((Component)GameNetworkManager.Instance).GetComponent<NetworkManager>().PrefabHandler.AddNetworkPrefab(tf2Networker);
			}
			catch (Exception)
			{
				DebugClass.Log((object)"couldn't setup tf2 networker");
			}
			orig(self);
		}

		public void Awake()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Expected O, but got Unknown
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Expected O, but got Unknown
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Expected O, but got Unknown
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Expected O, but got Unknown
			Instance = this;
			PInfo = ((BaseUnityPlugin)this).Info;
			MethodInfo method = typeof(PlayerControllerB).GetMethod("Start", BindingFlags.Instance | BindingFlags.NonPublic);
			MethodInfo method2 = typeof(TF2Plugin).GetMethod("PlayerControllerStart", BindingFlags.Instance | BindingFlags.NonPublic);
			playerControllerStartHook = new Hook((MethodBase)method, method2, (object)this);
			method = typeof(GameNetworkManager).GetMethod("Start", BindingFlags.Instance | BindingFlags.NonPublic);
			method2 = typeof(TF2Plugin).GetMethod("NetworkManagerStart", BindingFlags.Instance | BindingFlags.NonPublic);
			networkManagerStartHook = new Hook((MethodBase)method, method2, (object)this);
			Type[] types = Assembly.GetExecutingAssembly().GetTypes();
			Type[] array = types;
			foreach (Type type in array)
			{
				try
				{
					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);
						}
					}
				}
				catch (Exception)
				{
				}
			}
			Assets.LoadAssetBundlesFromFolder("assetbundles");
			RegisterAllSounds();
			Settings.RunAll();
			Rancho();
			RPS();
			Conga();
			Flip();
			KazotskyKick();
			Laugh();
			CustomEmotesAPI.animJoined += new AnimationJoined(CustomEmotesAPI_animJoined);
			CustomEmotesAPI.animChanged += new AnimationChanged(CustomEmotesAPI_animChanged);
			CustomEmotesAPI.emoteSpotJoined_Body += new JoinedEmoteSpotBody(CustomEmotesAPI_emoteSpotJoined_Body);
		}

		public static int GetMercNumber()
		{
			if (validMercs.Count == 0)
			{
				return Random.Range(0, 9);
			}
			return validMercs[Random.Range(0, validMercs.Count)];
		}

		private void CustomEmotesAPI_animJoined(string joinedAnimation, BoneMapper joiner, BoneMapper host)
		{
			if (joinedAnimation.EndsWith("_Conga"))
			{
				int mercNumber = GetMercNumber();
				TF2Networker.instance.SyncEmoteToServerRpc(joiner.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "Conga_Start", mercNumber, joiner.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
			}
			if (joinedAnimation.StartsWith("Kazotsky_"))
			{
				TF2Networker.instance.SyncEmoteToServerRpc(joiner.mapperBody.GetComponent<NetworkObject>().NetworkObjectId, "Kazotsky_Start", GetMercNumber(), joiner.mapperBody.GetComponent<NetworkObject>().NetworkObjectId);
			}
		}

		public void RegisterAllSounds()
		{
			_play_rancho = RegisterSound(new string[1][] { new string[1] { "RanchoOpen" } }, new List<float>(1) { 1.5f }, 0f);
			_play_ranchoburp = RegisterSound(new string[1][] { new string[1] { "RanchoBurp" } }, new List<float>(1) { 1.5f }, 0f);
			_play_ranchoclose = RegisterSound(new string[1][] { new string[1] { "RanchoClose" } }, new List<float>(1) { 0f }, 0f);
			_play_rancholong = RegisterSound(new string[1][] { new string[1] { "RanchoDrink1" } }, new List<float>(1) { 2f }, 0f);
			_play_ranchoquick = RegisterSound(new string[1][] { new string[1] { "RanchoDrink2" } }, new List<float>(1) { 0.7f }, 0f);
			_conga_demo_start = RegisterSound(new string[1][] { new string[6] { "Taunt_demo_conga_int_01", "Taunt_demo_conga_int_02", "Taunt_demo_conga_int_04", "Taunt_demo_conga_int_05", "Taunt_demo_conga_int_06", "Taunt_demo_conga_int_07" } }, new List<float>(1) { 0f }, 0f);
			_conga_demo_loop = RegisterSound(new string[1][] { new string[7] { "Taunt_demo_conga_fun_08", "Taunt_demo_conga_fun_10", "Taunt_demo_conga_fun_11", "Taunt_demo_conga_fun_12", "Taunt_demo_conga_fun_18", "Taunt_demo_conga_fun_19", "Taunt_demo_conga_fun_24" } }, new List<float>(1) { 3f }, 3f);
			_conga_engi_start = RegisterSound(new string[1][] { new string[16]
			{
				"Eng_taunt_cong_fun_02", "Eng_taunt_cong_fun_04", "Eng_taunt_cong_fun_08", "Eng_taunt_cong_fun_09", "Eng_taunt_cong_fun_10", "Eng_taunt_cong_fun_13", "Eng_taunt_cong_fun_14", "Eng_taunt_cong_fun_16", "Eng_taunt_cong_fun_20", "Eng_taunt_cong_fun_26",
				"Eng_taunt_cong_fun_30", "Eng_taunt_cong_fun_33", "Eng_taunt_cong_fun_34", "Eng_taunt_cong_fun_35", "Eng_taunt_cong_fun_36", "Eng_taunt_cong_fun_42"
			} }, new List<float>(1) { 0f }, 0f);
			_conga_engi_loop = RegisterSound(new string[1][] { new string[16]
			{
				"Eng_taunt_cong_fun_02", "Eng_taunt_cong_fun_04", "Eng_taunt_cong_fun_08", "Eng_taunt_cong_fun_09", "Eng_taunt_cong_fun_10", "Eng_taunt_cong_fun_13", "Eng_taunt_cong_fun_14", "Eng_taunt_cong_fun_16", "Eng_taunt_cong_fun_20", "Eng_taunt_cong_fun_26",
				"Eng_taunt_cong_fun_30", "Eng_taunt_cong_fun_33", "Eng_taunt_cong_fun_34", "Eng_taunt_cong_fun_35", "Eng_taunt_cong_fun_36", "Eng_taunt_cong_fun_42"
			} }, new List<float>(1) { 3f }, 3f);
			_conga_heavy_start = RegisterSound(new string[1][] { new string[4] { "Heavy_taunt_cong_int_11", "Heavy_taunt_cong_int_08", "Heavy_taunt_cong_int_12", "Heavy_taunt_cong_int_13" } }, new List<float>(1) { 0f }, 0f);
			_conga_heavy_loop = RegisterSound(new string[1][] { new string[7] { "Heavy_taunt_cong_fun_01", "Heavy_taunt_cong_fun_11", "Heavy_taunt_cong_fun_12", "Heavy_taunt_cong_fun_19", "Heavy_taunt_cong_fun_20", "Heavy_taunt_cong_int_07", "Heavy_taunt_cong_int_09" } }, new List<float>(1) { 3f }, 3f);
			_conga_medic_start = RegisterSound(new string[1][] { new string[7] { "Medic_taunt_cong_fun_01", "Medic_taunt_cong_fun_06", "Medic_taunt_cong_fun_07", "Medic_taunt_cong_fun_08", "Medic_taunt_cong_fun_09", "Medic_taunt_cong_fun_12", "Medic_taunt_cong_fun_15" } }, new List<float>(1) { 0f }, 0f);
			_conga_medic_loop = RegisterSound(new string[1][] { new string[7] { "Medic_taunt_cong_fun_01", "Medic_taunt_cong_fun_06", "Medic_taunt_cong_fun_07", "Medic_taunt_cong_fun_08", "Medic_taunt_cong_fun_09", "Medic_taunt_cong_fun_12", "Medic_taunt_cong_fun_15" } }, new List<float>(1) { 3f }, 3f);
			_conga_pyro_start = RegisterSound(new string[1][] { new string[8] { "Pyro_taunt_cong_fun_05", "Pyro_taunt_cong_fun_08", "Pyro_taunt_cong_fun_09", "Pyro_taunt_cong_fun_10", "Pyro_taunt_cong_fun_11", "Pyro_taunt_cong_fun_12", "Pyro_taunt_cong_fun_13", "Pyro_taunt_cong_fun_14" } }, new List<float>(1) { 0f }, 0f);
			_conga_pyro_loop = RegisterSound(new string[1][] { new string[8] { "Pyro_taunt_cong_fun_05", "Pyro_taunt_cong_fun_08", "Pyro_taunt_cong_fun_09", "Pyro_taunt_cong_fun_10", "Pyro_taunt_cong_fun_11", "Pyro_taunt_cong_fun_12", "Pyro_taunt_cong_fun_13", "Pyro_taunt_cong_fun_14" } }, new List<float>(1) { 3f }, 3f);
			_conga_scout_start = RegisterSound(new string[1][] { new string[3] { "Scout_taunt_conga_int_02", "Scout_taunt_conga_int_03", "Scout_taunt_conga_int_10" } }, new List<float>(1) { 0f }, 0f);
			_conga_scout_loop = RegisterSound(new string[1][] { new string[10] { "Scout_taunt_conga_fun_01", "Scout_taunt_conga_fun_02", "Scout_taunt_conga_fun_05", "Scout_taunt_conga_fun_06", "Scout_taunt_conga_fun_07", "Scout_taunt_conga_fun_08", "Scout_taunt_conga_fun_09", "Scout_taunt_conga_fun_11", "Scout_taunt_conga_fun_12", "Scout_taunt_conga_fun_14" } }, new List<float>(1) { 3f }, 3f);
			_conga_sniper_start = RegisterSound(new string[1][] { new string[4] { "Sniper_taunt_cong_fun_02", "Sniper_taunt_cong_fun_03", "Sniper_taunt_cong_fun_25", "Sniper_taunt_cong_int_03" } }, new List<float>(1) { 0f }, 0f);
			_conga_sniper_loop = RegisterSound(new string[1][] { new string[12]
			{
				"Sniper_taunt_cong_fun_01", "Sniper_taunt_cong_fun_04", "Sniper_taunt_cong_fun_05", "Sniper_taunt_cong_fun_06", "Sniper_taunt_cong_fun_10", "Sniper_taunt_cong_fun_11", "Sniper_taunt_cong_fun_12", "Sniper_taunt_cong_fun_17", "Sniper_taunt_cong_fun_18", "Sniper_taunt_cong_fun_24",
				"Sniper_taunt_cong_int_01", "Sniper_taunt_cong_int_02"
			} }, new List<float>(1) { 3f }, 3f);
			_conga_soldier_start = RegisterSound(new string[1][] { new string[3] { "Soldier_taunt_cong_int_03", "Soldier_taunt_cong_int_04", "Soldier_taunt_cong_int_13" } }, new List<float>(1) { 0f }, 0f);
			_conga_soldier_loop = RegisterSound(new string[1][] { new string[8] { "Soldier_taunt_admire_22", "Soldier_taunt_cong_fun_01", "Soldier_taunt_cong_fun_04", "Soldier_taunt_cong_fun_08", "Soldier_taunt_cong_fun_11", "Soldier_taunt_cong_fun_24", "Soldier_taunt_cong_fun_27", "Soldier_taunt_cong_fun_29" } }, new List<float>(1) { 3f }, 3f);
			_conga_spy_start = RegisterSound(new string[1][] { new string[3] { "Spy_taunt_cong_int_01", "Spy_taunt_cong_int_05", "Spy_taunt_cong_int_11" } }, new List<float>(1) { 0f }, 0f);
			_conga_spy_loop = RegisterSound(new string[1][] { new string[11]
			{
				"Spy_taunt_cong_fun_01", "Spy_taunt_cong_fun_02", "Spy_taunt_cong_fun_03", "Spy_taunt_cong_fun_05", "Spy_taunt_cong_fun_06", "Spy_taunt_cong_fun_08", "Spy_taunt_cong_fun_09", "Spy_taunt_cong_fun_10", "Spy_taunt_cong_fun_14", "Spy_taunt_cong_fun_15",
				"Spy_taunt_cong_fun_17"
			} }, new List<float>(1) { 3f }, 3f);
			_demo_flip_flip = RegisterSound(new string[2][]
			{
				new string[2] { "taunt_demo_flip_fun_01", "taunt_demo_flip_fun_03" },
				new string[8] { "taunt_demo_flip_post_fun_03", "taunt_demo_flip_post_fun_01", "taunt_demo_flip_post_fun_04", "taunt_demo_flip_post_fun_05", "taunt_demo_admire_06", "Taunt_demo_flip_post_fun_point_03", "Taunt_demo_flip_post_fun_point_04", "Taunt_demo_flip_post_fun_point_06" }
			}, new List<float>(2) { 1.2f, 2.2f }, -1f);
			_demo_flip_throw = RegisterSound(new string[1][] { new string[3] { "Taunt_demo_flip_exert_03", "Taunt_demo_flip_neg_01", "Taunt_demo_flip_neg_02" } }, new List<float>(1) { 0.6f }, -1f);
			_demo_flip_waiting = RegisterSound(new string[1][] { new string[20]
			{
				"Taunt_demo_flip_int_05", "Taunt_demo_flip_int_06", "Taunt_demo_flip_int_08", "Taunt_demo_flip_int_10", "Taunt_demo_flip_int_12", "Taunt_demo_flip_int_13", "Taunt_demo_flip_int_14", "Taunt_demo_flip_int_16", "Taunt_demo_flip_int_18", "Taunt_demo_flip_int_20",
				"Taunt_demo_int_01", "Taunt_demo_int_03", "Taunt_demo_int_04", "Taunt_demo_int_05", "Taunt_demo_int_10", "Taunt_demo_int_19", "Taunt_demo_int_21", "Taunt_demo_int_27", "Taunt_demo_int_30", "Taunt_demo_int_34"
			} }, new List<float>(1) { 0f }, 3f);
			_engi_flip_flip = RegisterSound(new string[2][]
			{
				new string[12]
				{
					"Eng_taunt_exert_05", "Eng_taunt_exert_07", "Eng_taunt_exert_10", "Eng_taunt_exert_12", "Eng_taunt_exert_15", "Eng_taunt_exert_19", "Eng_taunt_exert_24", "Eng_taunt_exert_29", "Eng_taunt_flip_fun_01", "Eng_taunt_flip_fun_06",
					"Eng_taunt_flip_fun_07", "Eng_taunt_flip_fun_25"
				},
				new string[15]
				{
					"Eng_taunt_flip_admire_01", "Eng_taunt_flip_admire_02", "Eng_taunt_flip_admire_03", "Eng_taunt_flip_admire_04", "Eng_taunt_flip_admire_06", "Eng_taunt_flip_admire_07", "Eng_taunt_flip_admire_09", "Eng_taunt_flip_admire_10", "Eng_taunt_flip_admire_11", "Eng_taunt_flip_admire_12",
					"Eng_taunt_flip_admire_14", "Eng_taunt_flip_admire_15", "Eng_taunt_flip_end_01", "Eng_taunt_flip_end_04", "Eng_taunt_flip_end_08"
				}
			}, new List<float>(2) { 1.2f, 2.2f }, -1f);
			_engi_flip_throw = RegisterSound(new string[1][] { new string[9] { "Eng_taunt_exert_08", "Eng_taunt_exert_30", "Eng_taunt_exert_44", "Eng_taunt_exert_46", "Eng_taunt_exert_47", "Eng_taunt_flip_exert_14", "Eng_taunt_flip_exert_23", "Eng_taunt_flip_exert_24", "Eng_taunt_flip_exert_26" } }, new List<float>(1) { 0.6f }, -1f);
			_engi_flip_waiting = RegisterSound(new string[1][] { new string[6] { "Eng_taunt_flip_int_01", "Eng_taunt_flip_int_04", "Eng_taunt_flip_int_08", "Eng_taunt_flip_int_11", "Eng_taunt_flip_int_13", "Eng_taunt_flip_int_14" } }, new List<float>(1) { 0f }, 3f);
			_heavy_flip_flip = RegisterSound(new string[2][]
			{
				new string[2] { "Heavy_taunt_flip_fail_01", "Heavy_taunt_flip_fail_08" },
				new string[3] { "Heavy_taunt_flip_end_01", "Heavy_taunt_flip_end_02", "Heavy_taunt_flip_end_03" }
			}, new List<float>(2) { 1.2f, 2.2f }, -1f);
			_heavy_flip_throw = RegisterSound(new string[1][] { new string[9] { "Heavy_taunt_exert_01", "Heavy_taunt_exert_04", "Heavy_taunt_exert_06", "Heavy_taunt_exert_09", "Heavy_taunt_exert_11", "Heavy_taunt_exert_12", "Heavy_taunt_exert_13", "Heavy_taunt_flip_exert_01", "Heavy_taunt_flip_exert_09" } }, new List<float>(1) { 0.6f }, -1f);
			_heavy_flip_waiting = RegisterSound(new string[1][] { new string[9] { "Heavy_taunt_flip_int_01", "Heavy_taunt_flip_int_02", "Heavy_taunt_flip_int_04", "Heavy_taunt_flip_int_05", "Heavy_taunt_flip_int_10", "Heavy_taunt_flip_int_11", "Heavy_taunt_flip_int_12", "Heavy_taunt_flip_int_13", "Heavy_taunt_flip_int_16" } }, new List<float>(1) { 0f }, 3f);
			_medic_flip_flip = RegisterSound(new string[1][] { new string[14]
			{
				"Medic_taunt_admire_01", "Medic_taunt_admire_02", "Medic_taunt_admire_03", "Medic_taunt_admire_07", "Medic_taunt_admire_10", "Medic_taunt_admire_13", "Medic_taunt_admire_14", "Medic_taunt_admire_22", "Medic_taunt_flip_end_01", "Medic_taunt_flip_end_02",
				"Medic_taunt_flip_end_05", "Medic_taunt_flip_end_06", "Medic_taunt_flip_end_08", "Medic_taunt_flip_end_09"
			} }, new List<float>(1) { 2.6f }, 0f);
			_medic_flip_throw = RegisterSound(new string[1][] { new string[13]
			{
				"Medic_taunt_exert_01", "Medic_taunt_exert_02", "Medic_taunt_exert_08", "Medic_taunt_exert_09", "Medic_taunt_flip_exert_01", "Medic_taunt_flip_exert_03", "Medic_taunt_flip_exert_04", "Medic_taunt_flip_exert_05", "Medic_taunt_flip_exert_06", "Medic_taunt_flip_exert_07",
				"Medic_taunt_flip_exert_08", "Medic_taunt_flip_exert_09", "Medic_taunt_flip_exert_10"
			} }, new List<float>(1) { 0.6f }, 0f);
			_medic_flip_waiting = RegisterSound(new string[1][] { new string[5] { "Medic_taunt_flip_int_05", "Medic_taunt_flip_int_08", "Medic_taunt_flip_int_10", "Medic_taunt_flip_int_12", "Medic_taunt_flip_int_15" } }, new List<float>(1) { 0f }, 3f);
			_pyro_flip_flip = RegisterSound(new string[2][]
			{
				new string[7] { "Pyro_taunt_flip_fun_01", "Pyro_taunt_flip_fun_04", "Pyro_taunt_flip_fun_05", "Pyro_taunt_flip_fun_06", "Pyro_taunt_flip_fun_09", "Pyro_taunt_flip_fun_10", "Pyro_taunt_flip_fun_11" },
				new string[8] { "Pyro_taunt_flip_admire_01", "Pyro_taunt_flip_admire_02", "Pyro_taunt_flip_admire_03", "Pyro_taunt_flip_admire_05", "Pyro_taunt_flip_admire_06", "Pyro_taunt_thanks_07", "Pyro_taunt_thanks_08", "Pyro_taunt_thanks_09" }
			}, new List<float>(2) { 1.2f, 2.2f }, 0f);
			_pyro_flip_throw = RegisterSound(new string[1][] { new string[5] { "Pyro_taunt_exert_12", "Pyro_taunt_flip_exert_02", "Pyro_taunt_flip_exert_04", "Pyro_taunt_flip_exert_05", "Pyro_taunt_flip_exert_06" } }, new List<float>(1) { 0.6f }, 0f);
			_pyro_flip_waiting = RegisterSound(new string[1][] { new string[3] { "Pyro_taunt_flip_int_02", "Pyro_taunt_flip_int_05", "Pyro_taunt_flip_int_07" } }, new List<float>(1) { 0f }, 3f);
			_scout_flip_flip = RegisterSound(new string[2][]
			{
				new string[8] { "Scout_taunt_flip_fun_01", "Scout_taunt_flip_fun_02", "Scout_taunt_flip_fun_03", "Scout_taunt_flip_fun_05", "Scout_taunt_flip_fun_06", "Scout_taunt_flip_fun_08", "Scout_taunt_flip_fun_09", "Scout_taunt_flip_fun_10" },
				new string[9] { "Scout_taunt_flip_end_01", "Scout_taunt_flip_end_03", "Scout_taunt_flip_end_05", "Scout_taunt_flip_end_07", "Scout_taunt_flip_end_08", "Scout_taunt_flip_end_17", "Scout_taunt_flip_end_19", "Scout_taunt_flip_end_22", "Scout_taunt_flip_end_27" }
			}, new List<float>(2) { 1.2f, 2.2f }, 0f);
			_scout_flip_throw = RegisterSound(new string[1][] { new string[11]
			{
				"Scout_taunt_exert_05", "Scout_taunt_exert_13", "Scout_taunt_exert_21", "Scout_taunt_exert_23", "Scout_taunt_exert_30", "Scout_taunt_flip_exert_01", "Scout_taunt_flip_exert_05", "Scout_taunt_flip_exert_08", "Scout_taunt_flip_exert_09", "Scout_taunt_flip_exert_10",
				"Scout_taunt_flip_exert_13"
			} }, new List<float>(1) { 0.6f }, 0f);
			_scout_flip_waiting = RegisterSound(new string[1][] { new string[16]
			{
				"Scout_taunt_flip_int_03", "Scout_taunt_flip_int_06", "Scout_taunt_flip_int_07", "Scout_taunt_flip_int_10", "Scout_taunt_flip_int_12", "Scout_taunt_flip_int_13", "Scout_taunt_int_01", "Scout_taunt_int_03", "Scout_taunt_int_05", "Scout_taunt_int_06",
				"Scout_taunt_int_07", "Scout_taunt_int_08", "Scout_taunt_int_12", "Scout_taunt_int_14", "Scout_taunt_int_17", "Scout_taunt_int_18"
			} }, new List<float>(1) { 0f }, 3f);
			_sniper_flip_flip = RegisterSound(new string[1][] { new string[18]
			{
				"Sniper_taunt_admire_01", "Sniper_taunt_admire_02", "Sniper_taunt_admire_06", "Sniper_taunt_admire_09", "Sniper_taunt_admire_11", "Sniper_taunt_admire_12", "Sniper_taunt_admire_15", "Sniper_taunt_admire_16", "Sniper_taunt_admire_18", "Sniper_taunt_admire_19",
				"Sniper_taunt_admire_20", "Sniper_taunt_flip_end_02", "Sniper_taunt_flip_end_03", "Sniper_taunt_flip_end_04", "Sniper_taunt_flip_end_06", "Sniper_taunt_flip_end_07", "Sniper_taunt_flip_fun_05", "Sniper_taunt_flip_fun_06"
			} }, new List<float>(1) { 2.2f }, 0f);
			_sniper_flip_throw = RegisterSound(new string[1][] { new string[9] { "Sniper_taunt_exert_03", "Sniper_taunt_exert_07", "Sniper_taunt_exert_10", "Sniper_taunt_exert_15", "Sniper_taunt_flip_exert_01", "Sniper_taunt_flip_exert_04", "Sniper_taunt_flip_exert_05", "Sniper_taunt_flip_exert_06", "Sniper_taunt_flip_exert_07" } }, new List<float>(1) { 0.6f }, 0f);
			_sniper_flip_waiting = RegisterSound(new string[1][] { new string[7] { "Sniper_taunt_flip_int_04", "Sniper_taunt_flip_int_06", "Sniper_taunt_flip_int_07", "Sniper_taunt_flip_int_10", "Sniper_taunt_flip_int_11", "Sniper_taunt_int_01", "Sniper_taunt_int_13" } }, new List<float>(1) { 0f }, 3f);
			_soldier_flip_flip = RegisterSound(new string[2][]
			{
				new string[3] { "Soldier_taunt_flip_fun_04", "Soldier_taunt_flip_fun_06", "Soldier_taunt_flip_fun_08" },
				new string[17]
				{
					"Soldier_taunt_admire_01", "Soldier_taunt_admire_04", "Soldier_taunt_admire_09", "Soldier_taunt_admire_10", "Soldier_taunt_admire_16", "Soldier_taunt_admire_17", "Soldier_taunt_admire_18", "Soldier_taunt_admire_22", "Soldier_taunt_admire_24", "Soldier_taunt_admire_26",
					"Soldier_taunt_flip_end_01", "Soldier_taunt_flip_end_02", "Soldier_taunt_flip_end_03", "Soldier_taunt_flip_end_05", "Soldier_taunt_flip_end_15", "Soldier_taunt_flip_end_16", "Soldier_taunt_flip_end_17"
				}
			}, new List<float>(2) { 1.2f, 2.2f }, 0f);
			_soldier_flip_throw = RegisterSound(new string[1][] { new string[6] { "Soldier_taunt_exert_02", "Soldier_taunt_exert_06", "Soldier_taunt_flip_exert_02", "Soldier_taunt_flip_exert_06", "Soldier_taunt_flip_exert_21", "Soldier_taunt_flip_exert_31" } }, new List<float>(1) { 0.6f }, 0f);
			_soldier_flip_waiting = RegisterSound(new string[1][] { new string[9] { "Soldier_taunt_flip_int_01", "Soldier_taunt_flip_int_03", "Soldier_taunt_flip_int_04", "Soldier_taunt_flip_int_11", "Soldier_taunt_flip_int_15", "Soldier_taunt_flip_int_17", "Soldier_taunt_flip_int_19", "Soldier_taunt_flip_int_20", "Soldier_taunt_flip_int_24" } }, new List<float>(1) { 0f }, 3f);
			_spy_flip_flip = RegisterSound(new string[2][]
			{
				new string[6] { "Spy_taunt_flip_fun_01", "Spy_taunt_flip_fun_02", "Spy_taunt_flip_fun_07", "Spy_taunt_flip_fun_09", "Spy_taunt_flip_fun_12", "Spy_taunt_flip_fun_13" },
				new string[10] { "Spy_taunt_bos_int_05", "Spy_taunt_bos_kick_02", "Spy_taunt_flip_admire_05", "Spy_taunt_flip_admire_09", "Spy_taunt_flip_admire_18", "Spy_taunt_flip_admire_20", "Spy_taunt_flip_end_07", "Spy_taunt_flip_end_12", "Spy_taunt_flip_end_14", "Spy_taunt_flip_end_16" }
			}, new List<float>(2) { 1.2f, 2.2f }, 0f);
			_spy_flip_throw = RegisterSound(new string[1][] { new string[6] { "Spy_taunt_flip_exert_01", "Spy_taunt_flip_exert_02", "Spy_taunt_flip_exert_07", "Spy_taunt_flip_exert_08", "Spy_taunt_flip_exert_09", "Spy_taunt_flip_exert_10" } }, new List<float>(1) { 0.6f }, 0f);
			_spy_flip_waiting = RegisterSound(new string[1][] { new string[10] { "Spy_taunt_flip_int_01", "Spy_taunt_flip_int_02", "Spy_taunt_flip_int_03", "Spy_taunt_flip_int_04", "Spy_taunt_flip_int_07", "Spy_taunt_flip_int_15", "Spy_taunt_flip_int_16", "Spy_taunt_flip_int_20", "Spy_taunt_flip_int_25", "Spy_taunt_flip_int_28" } }, new List<float>(1) { 0f }, 3f);
			_rps_demo_initiate = RegisterSound(new string[1][] { new string[2] { "Taunt_demo_rps_int_01", "Taunt_demo_rps_int_06" } }, new List<float>(1) { 0f }, 3f);
			_rps_demo_loss = RegisterSound(new string[2][]
			{
				new string[5] { "Taunt_demo_rps_lose_04", "Taunt_demo_rps_lose_06", "Taunt_demo_rps_lose_08", "Taunt_demo_rps_lose_09", "Taunt_demo_rps_lose_10" },
				new string[1] { "Taunt_demo_rps_exert_04" }
			}, new List<float>(2) { 5.5f, 1.7f }, 0f);
			_rps_demo_winpaper = RegisterSound(new string[2][]
			{
				new string[9] { "Taunt_demo_rps_win_03", "Taunt_demo_rps_win_04", "Taunt_demo_rps_win_06", "Taunt_demo_rps_win_08", "Taunt_demo_rps_win_16", "Taunt_demo_rps_win_24", "Taunt_demo_rps_win_25", "Taunt_demo_rps_win_27", "Taunt_demo_rps_win_28" },
				new string[1] { "Taunt_demo_rps_exert_04" }
			}, new List<float>(2) { 3.5f, 1.7f }, 0f);
			_rps_demo_winrock = RegisterSound(new string[2][]
			{
				new string[9] { "Taunt_demo_rps_win_03", "Taunt_demo_rps_win_04", "Taunt_demo_rps_win_06", "Taunt_demo_rps_win_08", "Taunt_demo_rps_win_16", "Taunt_demo_rps_win_24", "Taunt_demo_rps_win_25", "Taunt_demo_rps_win_27", "Taunt_demo_rps_win_28" },
				new string[1] { "Taunt_demo_rps_exert_04" }
			}, new List<float>(2) { 3.5f, 1.7f }, 0f);
			_rps_demo_winscissors = RegisterSound(new string[2][]
			{
				new string[9] { "Taunt_demo_rps_win_03", "Taunt_demo_rps_win_04", "Taunt_demo_rps_win_06", "Taunt_demo_rps_win_08", "Taunt_demo_rps_win_16", "Taunt_demo_rps_win_24", "Taunt_demo_rps_win_25", "Taunt_demo_rps_win_27", "Taunt_demo_rps_win_28" },
				new string[1] { "Taunt_demo_rps_exert_04" }
			}, new List<float>(2) { 3.5f, 1.7f }, 0f);
			_rps_engi_initiate = RegisterSound(new string[1][] { new string[3] { "Eng_taunt_rps_int_01", "Eng_taunt_rps_int_03", "Eng_taunt_rps_int_07" } }, new List<float>(1) { 0f }, 3f);
			_rps_engi_loss = RegisterSound(new string[10][]
			{
				new string[1] { "Eng_taunt_rps_exert_07 (1)" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Eng_taunt_rps_exert_01" },
				new string[1] { "Eng_taunt_rps_exert_02" },
				new string[1] { "Eng_taunt_rps_exert_03" },
				new string[5] { "Eng_taunt_rps_lose_22", "Eng_taunt_rps_lose_25", "Eng_taunt_rps_lose_27", "Eng_taunt_rps_lose_29", "Eng_taunt_rps_lose_31" }
			}, new List<float>(10) { 0f, 0.5f, 0.7f, 1.7f, 1.928f, 2.156f, 1.7f, 2.159f, 2.63f, 5.5f }, 0f);
			_rps_engi_winpaper = RegisterSound(new string[10][]
			{
				new string[1] { "Eng_taunt_rps_exert_07 (1)" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Eng_taunt_rps_exert_01" },
				new string[1] { "Eng_taunt_rps_exert_02" },
				new string[1] { "Eng_taunt_rps_exert_03" },
				new string[5] { "Eng_taunt_rps_win_07", "Eng_taunt_rps_win_17", "Eng_taunt_rps_win_26", "Eng_taunt_rps_win_31", "Eng_taunt_rps_win_33" }
			}, new List<float>(10) { 0f, 0.5f, 0.7f, 1.7f, 1.928f, 2.156f, 1.7f, 2.159f, 2.63f, 3.5f }, 0f);
			_rps_engi_winrock = RegisterSound(new string[10][]
			{
				new string[1] { "Eng_taunt_rps_exert_07 (1)" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Eng_taunt_rps_exert_01" },
				new string[1] { "Eng_taunt_rps_exert_02" },
				new string[1] { "Eng_taunt_rps_exert_03" },
				new string[5] { "Eng_taunt_rps_win_10", "Eng_taunt_rps_win_17", "Eng_taunt_rps_win_26", "Eng_taunt_rps_win_31", "Eng_taunt_rps_win_33" }
			}, new List<float>(10) { 0f, 0.5f, 0.7f, 1.7f, 1.928f, 2.156f, 1.7f, 2.159f, 2.63f, 3.5f }, 0f);
			_rps_engi_winscissors = RegisterSound(new string[10][]
			{
				new string[1] { "Eng_taunt_rps_exert_07 (1)" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "taunt_hard_clap1" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Eng_taunt_rps_exert_01" },
				new string[1] { "Eng_taunt_rps_exert_02" },
				new string[1] { "Eng_taunt_rps_exert_03" },
				new string[5] { "Eng_taunt_rps_win_06", "Eng_taunt_rps_win_17", "Eng_taunt_rps_win_26", "Eng_taunt_rps_win_31", "Eng_taunt_rps_win_33" }
			}, new List<float>(10) { 0f, 0.5f, 0.7f, 1.7f, 1.928f, 2.156f, 1.7f, 2.159f, 2.63f, 3.5f }, 0f);
			_rps_heavy_initiate = RegisterSound(new string[1][] { new string[3] { "Heavy_taunt_rps_int_01", "Heavy_taunt_rps_int_02", "Heavy_taunt_rps_int_04" } }, new List<float>(1) { 0f }, 3f);
			_rps_heavy_loss = RegisterSound(new string[4][]
			{
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[3] { "Heavy_taunt_rps_lose_11", "Heavy_taunt_rps_lose_13", "Heavy_taunt_rps_lose_18" }
			}, new List<float>(4) { 1.7f, 2.2f, 2.7f, 5.5f }, 0f);
			_rps_heavy_winpaper = RegisterSound(new string[4][]
			{
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[11]
				{
					"Heavy_taunt_kill_02", "Heavy_taunt_kill_09", "Heavy_taunt_rps_win_02", "Heavy_taunt_rps_win_03", "Heavy_taunt_rps_win_04", "Heavy_taunt_rps_win_09", "Heavy_taunt_rps_win_11", "Heavy_taunt_rps_win_12", "Heavy_taunt_rps_win_21", "Heavy_taunt_rps_win_27",
					"Heavy_taunt_rps_win_34"
				}
			}, new List<float>(4) { 1.7f, 2.2f, 2.7f, 3.5f }, 0f);
			_rps_heavy_winrock = RegisterSound(new string[4][]
			{
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[12]
				{
					"Heavy_taunt_kill_02", "Heavy_taunt_kill_09", "Heavy_taunt_rps_int_05", "Heavy_taunt_rps_win_02", "Heavy_taunt_rps_win_03", "Heavy_taunt_rps_win_04", "Heavy_taunt_rps_win_09", "Heavy_taunt_rps_win_11", "Heavy_taunt_rps_win_12", "Heavy_taunt_rps_win_16",
					"Heavy_taunt_rps_win_27", "Heavy_taunt_rps_win_33"
				}
			}, new List<float>(4) { 1.7f, 2.2f, 2.7f, 3.5f }, 0f);
			_rps_heavy_winscissors = RegisterSound(new string[4][]
			{
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[2] { "fist_hit_world1", "fist_hit_world2" },
				new string[11]
				{
					"Heavy_taunt_kill_02", "Heavy_taunt_kill_09", "Heavy_taunt_rps_win_02", "Heavy_taunt_rps_win_03", "Heavy_taunt_rps_win_04", "Heavy_taunt_rps_win_09", "Heavy_taunt_rps_win_11", "Heavy_taunt_rps_win_12", "Heavy_taunt_rps_win_21", "Heavy_taunt_rps_win_27",
					"Heavy_taunt_rps_win_38"
				}
			}, new List<float>(4) { 1.7f, 2.2f, 2.7f, 3.5f }, 0f);
			_rps_medic_initiate = RegisterSound(new string[1][] { new string[1] { "Medic_taunt_rps_int_01" } }, new List<float>(1) { 0f }, 3f);
			_rps_medic_loss = RegisterSound(new string[7][]
			{
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Medic_taunt_rps_exert_01" },
				new string[1] { "Medic_taunt_rps_exert_07" },
				new string[1] { "Medic_taunt_rps_exert_24" },
				new string[5] { "Medic_taunt_rps_lose_12", "Medic_taunt_rps_lose_14", "Medic_taunt_rps_lose_16", "Medic_taunt_rps_lose_17", "Medic_taunt_rps_lose_19" }
			}, new List<float>(7) { 1.7f, 2.178f, 2.656f, 1.7f, 2.178f, 2.656f, 5.5f }, 0f);
			_rps_medic_winpaper = RegisterSound(new string[7][]
			{
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Medic_taunt_rps_exert_01" },
				new string[1] { "Medic_taunt_rps_exert_07" },
				new string[1] { "Medic_taunt_rps_exert_24" },
				new string[5] { "Medic_taunt_rps_win_04", "Medic_taunt_rps_win_05", "Medic_taunt_rps_win_06", "Medic_taunt_rps_win_08", "Medic_taunt_rps_win_09" }
			}, new List<float>(7) { 1.7f, 2.178f, 2.656f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_medic_winrock = RegisterSound(new string[7][]
			{
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Medic_taunt_rps_exert_01" },
				new string[1] { "Medic_taunt_rps_exert_07" },
				new string[1] { "Medic_taunt_rps_exert_24" },
				new string[5] { "Medic_taunt_rps_win_04", "Medic_taunt_rps_win_05", "Medic_taunt_rps_win_06", "Medic_taunt_rps_win_08", "Medic_taunt_rps_win_09" }
			}, new List<float>(7) { 1.7f, 2.178f, 2.656f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_medic_winscissors = RegisterSound(new string[7][]
			{
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Medic_taunt_rps_exert_01" },
				new string[1] { "Medic_taunt_rps_exert_07" },
				new string[1] { "Medic_taunt_rps_exert_24" },
				new string[5] { "Medic_taunt_rps_win_04", "Medic_taunt_rps_win_05", "Medic_taunt_rps_win_06", "Medic_taunt_rps_win_08", "Medic_taunt_rps_win_09" }
			}, new List<float>(7) { 1.7f, 2.178f, 2.656f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_pyro_initiate = RegisterSound(new string[1][] { new string[5] { "Pyro_taunt_rps_int_02", "Pyro_taunt_rps_int_04", "Pyro_taunt_rps_int_05", "Pyro_taunt_rps_int_07", "Pyro_taunt_rps_int_08" } }, new List<float>(1) { 0f }, 3f);
			_rps_pyro_loss = RegisterSound(new string[5][]
			{
				new string[1] { "Pyro_taunt_rps_exert_18 (1)" },
				new string[1] { "Pyro_taunt_rps_exert_21" },
				new string[1] { "Pyro_taunt_rps_exert_22" },
				new string[1] { "Pyro_taunt_rps_exert_23" },
				new string[1] { "Pyro_taunt_rps_lose_03" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 5.5f }, 0f);
			_rps_pyro_winpaper = RegisterSound(new string[5][]
			{
				new string[1] { "Pyro_taunt_rps_exert_18 (1)" },
				new string[1] { "Pyro_taunt_rps_exert_21" },
				new string[1] { "Pyro_taunt_rps_exert_22" },
				new string[1] { "Pyro_taunt_rps_exert_23" },
				new string[1] { "Pyro_laughevil01" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_pyro_winrock = RegisterSound(new string[5][]
			{
				new string[1] { "Pyro_taunt_rps_exert_18 (1)" },
				new string[1] { "Pyro_taunt_rps_exert_21" },
				new string[1] { "Pyro_taunt_rps_exert_22" },
				new string[1] { "Pyro_taunt_rps_exert_23" },
				new string[1] { "Pyro_laughevil01" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_pyro_winscissors = RegisterSound(new string[5][]
			{
				new string[1] { "Pyro_taunt_rps_exert_18 (1)" },
				new string[1] { "Pyro_taunt_rps_exert_21" },
				new string[1] { "Pyro_taunt_rps_exert_22" },
				new string[1] { "Pyro_taunt_rps_exert_23" },
				new string[1] { "Pyro_laughevil01" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_scout_initiate = RegisterSound(new string[1][] { new string[5] { "Scout_taunt_rps_int_02", "Scout_taunt_rps_int_03", "Scout_taunt_rps_int_05", "Scout_taunt_rps_int_09", "Scout_taunt_rps_int_10" } }, new List<float>(1) { 0f }, 3f);
			_rps_scout_loss = RegisterSound(new string[3][]
			{
				new string[1] { "Scout_taunt_rps_exert_23" },
				new string[1] { "Scout_taunt_rps_exert_25" },
				new string[4] { "Scout_taunt_rps_lose_01", "Scout_taunt_rps_lose_03", "Scout_taunt_rps_lose_06", "Scout_taunt_rps_lose_07" }
			}, new List<float>(3) { 1.7f, 0f, 5.5f }, 0f);
			_rps_scout_lossrock = RegisterSound(new string[3][]
			{
				new string[1] { "Scout_taunt_rps_exert_23" },
				new string[1] { "Scout_taunt_rps_exert_25" },
				new string[5] { "Scout_taunt_rps_lose_01", "Scout_taunt_rps_lose_03", "Scout_taunt_rps_lose_06", "Scout_taunt_rps_lose_07", "Scout_taunt_rps_lose_12" }
			}, new List<float>(3) { 1.7f, 0f, 5.5f }, 0f);
			_rps_scout_winpaper = RegisterSound(new string[8][]
			{
				new string[1] { "Scout_taunt_rps_exert_23" },
				new string[1] { "Scout_taunt_rps_exert_25" },
				new string[1] { "taunt_sfx_bell_single" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[5] { "Scout_taunt_misc_03", "Scout_taunt_misc_10", "Scout_taunt_misc_14", "Scout_taunt_rps_win_27", "Scout_taunt_rps_win_51" }
			}, new List<float>(8) { 1.7f, 0f, 3.5f, 5.25f, 5f, 4f, 4.5f, 3.5f }, 0f);
			_rps_scout_winrock = RegisterSound(new string[8][]
			{
				new string[1] { "Scout_taunt_rps_exert_23" },
				new string[1] { "Scout_taunt_rps_exert_25" },
				new string[1] { "taunt_sfx_bell_single" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[4] { "Scout_taunt_misc_03", "Scout_taunt_misc_10", "Scout_taunt_misc_14", "Scout_taunt_rps_win_34" }
			}, new List<float>(8) { 1.7f, 0f, 3.5f, 5.25f, 5f, 4f, 4.5f, 3.5f }, 0f);
			_rps_scout_winscissors = RegisterSound(new string[8][]
			{
				new string[1] { "Scout_taunt_rps_exert_23" },
				new string[1] { "Scout_taunt_rps_exert_25" },
				new string[1] { "taunt_sfx_bell_single" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[1] { "taunt_eng_swoosh" },
				new string[4] { "Scout_taunt_misc_03", "Scout_taunt_misc_10", "Scout_taunt_misc_14", "Scout_taunt_rps_win_36" }
			}, new List<float>(8) { 1.7f, 0f, 3.5f, 5.25f, 5f, 4f, 4.5f, 3.5f }, 0f);
			_rps_sniper_initiate_start = RegisterSound(new string[1][] { new string[2] { "Sniper_taunt_rps_int_03", "Sniper_taunt_rps_int_01" } }, new List<float>(1) { 0f }, 0f);
			_rps_sniper_initiate_loop = RegisterSound(new string[1][] { new string[4] { "Sniper_taunt_rps_int_05", "Sniper_taunt_rps_int_06", "Sniper_taunt_rps_int_07", "Sniper_taunt_rps_int_11" } }, new List<float>(1) { 3f }, 3f);
			_rps_sniper_loss = RegisterSound(new string[5][]
			{
				new string[1] { "Sniper_taunt_rps_exert_17" },
				new string[1] { "Sniper_taunt_rps_exert_01" },
				new string[1] { "Sniper_taunt_rps_exert_02" },
				new string[1] { "Sniper_taunt_rps_exert_16" },
				new string[5] { "Sniper_taunt_rps_lose_04", "Sniper_taunt_rps_lose_06", "Sniper_taunt_rps_lose_13", "Sniper_taunt_rps_lose_15", "Sniper_taunt_rps_lose_22" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 5.5f }, 0f);
			_rps_sniper_winpaper = RegisterSound(new string[5][]
			{
				new string[1] { "Sniper_taunt_rps_exert_17" },
				new string[1] { "Sniper_taunt_rps_exert_01" },
				new string[1] { "Sniper_taunt_rps_exert_02" },
				new string[1] { "Sniper_taunt_rps_exert_16" },
				new string[2] { "Sniper_taunt_rps_win_14", "Sniper_taunt_rps_win_15" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_sniper_winrock = RegisterSound(new string[5][]
			{
				new string[1] { "Sniper_taunt_rps_exert_17" },
				new string[1] { "Sniper_taunt_rps_exert_01" },
				new string[1] { "Sniper_taunt_rps_exert_02" },
				new string[1] { "Sniper_taunt_rps_exert_16" },
				new string[2] { "Sniper_taunt_rps_win_18", "Sniper_taunt_rps_win_15" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_sniper_winscissors = RegisterSound(new string[5][]
			{
				new string[1] { "Sniper_taunt_rps_exert_17" },
				new string[1] { "Sniper_taunt_rps_exert_01" },
				new string[1] { "Sniper_taunt_rps_exert_02" },
				new string[1] { "Sniper_taunt_rps_exert_16" },
				new string[2] { "Sniper_taunt_rps_win_20", "Sniper_taunt_rps_win_15" }
			}, new List<float>(5) { 0f, 1.7f, 2.178f, 2.656f, 3.5f }, 0f);
			_rps_soldier_initiate = RegisterSound(new string[1][] { new string[5] { "Soldier_taunt_rps_int_01", "Soldier_taunt_rps_int_03", "Soldier_taunt_rps_int_05", "Soldier_taunt_rps_int_07", "Soldier_taunt_rps_int_08" } }, new List<float>(1) { 0f }, 3f);
			_rps_soldier_loss = RegisterSound(new string[6][]
			{
				new string[1] { "Soldier_taunt_rps_exert_11" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Soldier_taunt_rps_exert_01" },
				new string[6] { "Soldier_taunt_rps_lose_01", "Soldier_taunt_rps_lose_05", "Soldier_taunt_rps_lose_12", "Soldier_taunt_rps_lose_14", "Soldier_taunt_rps_lose_21", "Soldier_taunt_rps_lose_22" }
			}, new List<float>(6) { 0f, 1.7f, 1.928f, 2.156f, 1.7f, 5.5f }, 0f);
			_rps_soldier_winpaper = RegisterSound(new string[6][]
			{
				new string[1] { "Soldier_taunt_rps_exert_11" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Soldier_taunt_rps_exert_01" },
				new string[1] { "Soldier_taunt_rps_win_55" }
			}, new List<float>(6) { 0f, 1.7f, 1.928f, 2.156f, 1.7f, 3.5f }, 0f);
			_rps_soldier_winrock = RegisterSound(new string[6][]
			{
				new string[1] { "Soldier_taunt_rps_exert_11" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Soldier_taunt_rps_exert_01" },
				new string[1] { "Soldier_taunt_rps_win_57" }
			}, new List<float>(6) { 0f, 1.7f, 1.928f, 2.156f, 1.7f, 3.5f }, 0f);
			_rps_soldier_winscissors = RegisterSound(new string[6][]
			{
				new string[1] { "Soldier_taunt_rps_exert_11" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "item_boxing_gloves_pickup" },
				new string[1] { "Soldier_taunt_rps_exert_01" },
				new string[1] { "Soldier_taunt_rps_win_61" }
			}, new List<float>(6) { 0f, 1.7f, 1.928f, 2.156f, 1.7f, 3.5f }, 0f);
			_rps_spy_initiate = RegisterSound(new string[1][] { new string[6] { "Spy_rpshold01", "Spy_rpsstart01", "Spy_taunt_rps_int_01", "Spy_taunt_rps_int_05", "Spy_taunt_rps_int_07", "Spy_taunt_rps_int_08" } }, new List<float>(1) { 0f }, 3f);
			_rps_spy_windup1 = RegisterSound(new string[3][]
			{
				new string[1] { "Spy_rpscountone01" },
				new string[1] { "Spy_rpscounttwo01" },
				new string[1] { "Spy_rpscountthree01" }
			}, new List<float>(3) { 1.7f, 2.178f, 2.656f }, 0f);
			_rps_spy_windup2 = RegisterSound(new string[3][]
			{
				new string[1] { "Spy_taunt_rps_exert_08" },
				new string[1] { "Spy_taunt_rps_exert_09" },
				new string[1] { "Spy_taunt_rps_exert_10" }
			}, new List<float>(3) { 1.7f, 2.178f, 2.656f }, 0f);
			_rps_spy_windup3 = RegisterSound(new string[3][]
			{
				new string[1] { "Spy_rpscountrock01" },
				new string[1] { "Spy_rpscountpaper01" },
				new string[1] { "Spy_rpscountscissor01" }
			}, new List<float>(3) { 1.7f, 2.178f, 2.656f }, 0f);
			_rps_spy_losspaper = RegisterSound(new string[1][] { new string[10] { "Spy_rpslose01", "Spy_rpslose02", "Spy_rpsregretrock01", "Spy_taunt_rps_lose_04", "Spy_taunt_rps_lose_05", "Spy_taunt_rps_lose_06", "Spy_taunt_rps_lose_09", "Spy_taunt_rps_lose_11", "Spy_taunt_rps_lose_12", "Spy_taunt_rps_lose_15" } }, new List<float>(1) { 5.5f }, 0f);
			_rps_spy_lossrock = RegisterSound(new string[1][] { new string[10] { "Spy_rpslose01", "Spy_rpslose02", "Spy_rpsregretscissor01", "Spy_taunt_rps_lose_04", "Spy_taunt_rps_lose_05", "Spy_taunt_rps_lose_06", "Spy_taunt_rps_lose_09", "Spy_taunt_rps_lose_11", "Spy_taunt_rps_lose_12", "Spy_taunt_rps_lose_15" } }, new List<float>(1) { 5.5f }, 0f);
			_rps_spy_lossscissors = RegisterSound(new string[1][] { new string[10] { "Spy_rpslose01", "Spy_rpslose02", "Spy_rpsregretpaper01", "Spy_taunt_rps_lose_04", "Spy_taunt_rps_lose_05", "Spy_taunt_rps_lose_06", "Spy_taunt_rps_lose_09", "Spy_taunt_rps_lose_11", "Spy_taunt_rps_lose_12", "Spy_taunt_rps_lose_15" } }, new List<float>(1) { 5.5f }, 0f);
			_rps_spy_winpaper = RegisterSound(new string[1][] { new string[21]
			{
				"Spy_rpspaperwin01", "Spy_rpspaperwin02", "Spy_rpspaperwin03", "Spy_rpswin01", "Spy_rpswin02", "Spy_taunt_rps_win_02", "Spy_taunt_rps_win_03", "Spy_taunt_rps_win_09", "Spy_taunt_rps_win_11", "Spy_taunt_rps_win_12",
				"Spy_taunt_rps_win_13", "Spy_taunt_rps_win_14", "Spy_taunt_rps_win_15", "Spy_taunt_rps_win_16", "Spy_taunt_rps_win_17", "Spy_taunt_rps_win_18", "Spy_taunt_rps_win_19", "Spy_taunt_rps_win_20", "Spy_taunt_rps_win_21", "Spy_taunt_rps_win_22",
				"Spy_taunt_rps_win_23"
			} }, new List<float>(1) { 3.5f }, 0f);
			_rps_spy_winrock = RegisterSound(new string[1][] { new string[19]
			{
				"Spy_rpsrockwin01", "Spy_rpswin01", "Spy_rpswin02", "Spy_taunt_rps_win_02", "Spy_taunt_rps_win_03", "Spy_taunt_rps_win_09", "Spy_taunt_rps_win_11", "Spy_taunt_rps_win_12", "Spy_taunt_rps_win_13", "Spy_taunt_rps_win_14",
				"Spy_taunt_rps_win_15", "Spy_taunt_rps_win_16", "Spy_taunt_rps_win_17", "Spy_taunt_rps_win_18", "Spy_taunt_rps_win_19", "Spy_taunt_rps_win_20", "Spy_taunt_rps_win_21", "Spy_taunt_rps_win_22", "Spy_taunt_rps_win_23"
			} }, new List<float>(1) { 3.5f }, 0f);
			_rps_spy_winscissors = RegisterSound(new string[1][] { new string[19]
			{
				"Spy_rpsscissorwin01", "Spy_rpswin01", "Spy_rpswin02", "Spy_taunt_rps_win_02", "Spy_taunt_rps_win_03", "Spy_taunt_rps_win_09", "Spy_taunt_rps_win_11", "Spy_taunt_rps_win_12", "Spy_taunt_rps_win_13", "Spy_taunt_rps_win_14",
				"Spy_taunt_rps_win_15", "Spy_taunt_rps_win_16", "Spy_taunt_rps_win_17", "Spy_taunt_rps_win_18", "Spy_taunt_rps_win_19", "Spy_taunt_rps_win_20", "Spy_taunt_rps_win_21", "Spy_taunt_rps_win_22", "Spy_taunt_rps_win_23"
			} }, new List<float>(1) { 3.5f }, 0f);
		}

		internal int RegisterSound(string[][] audioClipNames, List<float> delays, float repeatTimer)
		{
			return AudioContainerHolder.Setup(audioClipNames, delays, repeatTimer);
		}

		public void Rancho()
		{
			AddAnimation("Engi/Rancho/RanchoRelaxo", null, "Engi/Rancho/engiRanchoPassive", dimAudio: false, sync: false, "Rancho Relaxo", usePrevAnimationForJoinAnimation: false);
			prevAnimation = BoneMapper.animClips.Last().Key;
			AddAnimation("Engi/Rancho/engiRanchoBurp", "", "Engi/Rancho/engiRanchoPassive", dimAudio: false, sync: false, visibility: false, "Rancho Relaxo", usePrevAnimationForJoinAnimation: true);
			AddAnimation("Engi/Rancho/engiRanchoBigDrink", "", "Engi/Rancho/engiRanchoPassive", dimAudio: false, sync: false, visibility: false, "Rancho Relaxo", usePrevAnimationForJoinAnimation: true);
			AddAnimation("Engi/Rancho/engiRanchoQuickDrink", "", "Engi/Rancho/engiRanchoPassive", dimAudio: false, sync: false, visibility: false, "Rancho Relaxo", usePrevAnimationForJoinAnimation: true);
		}

		public void Laugh()
		{
			CustomEmotesAPI.AddNonAnimatingEmote("Schadenfreude", true);
			prevAnimation = "Schadenfreude";
			string item = AddHiddenAnimation(new string[1] { "Demo/Laugh/Demo_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Demoman_laughlong02.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Engi/Laugh/Engi_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Engineer_laughlong02.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Heavy/Laugh/Heavy_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Heavy_laugherbigsnort01.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Medic/Laugh/Medic_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Medic_laughlong01.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Pyro/Laugh/Pyro_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Pyro_laugh_addl04.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Scout/Laugh/Scout_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Scout_laughlong02.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Sniper/Laugh/Sniper_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Sniper_laughlong02.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Soldier/Laugh/Soldier_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Soldier_laughlong03.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Spy/Laugh/Spy_Laugh" }, (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/audio dump/Spy_laughlong01.ogg") }, "Schadenfreude", usePrevAnimationForJoinAnimation: true);
			Laugh_Emotes.Add(item);
		}

		public void Flip()
		{
			//IL_0051: 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_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0260: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			//IL_0309: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0465: Unknown result type (might be due to invalid IL or missing references)
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_046f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0513: Unknown result type (might be due to invalid IL or missing references)
			//IL_0518: Unknown result type (might be due to invalid IL or missing references)
			//IL_051d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cb: Unknown result type (might be due to invalid IL or missing references)
			CustomEmotesAPI.AddNonAnimatingEmote("Flippin' Awesome", true);
			prevAnimation = "Flippin' Awesome";
			string item = AddHiddenAnimation(new string[1] { "Demo/Flip/Demo_Flip_Start" }, new string[1] { "Demo/Flip/Demo_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Demo/Flip/Demo_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Demo/Flip/Demo_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Engi/Flip/Engi_Flip_Start" }, new string[1] { "Engi/Flip/Engi_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Engi/Flip/Engi_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Engi/Flip/Engi_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Heavy/Flip/Heavy_Flip_Start" }, new string[1] { "Heavy/Flip/Heavy_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Heavy/Flip/Heavy_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Heavy/Flip/Heavy_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Medic/Flip/Medic_Flip_Start" }, new string[1] { "Medic/Flip/Medic_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Medic/Flip/Medic_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Medic/Flip/Medic_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Pyro/Flip/Pyro_Flip_Start" }, new string[1] { "Pyro/Flip/Pyro_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Pyro/Flip/Pyro_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Pyro/Flip/Pyro_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Scout/Flip/Scout_Flip_Start" }, new string[1] { "Scout/Flip/Scout_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Scout/Flip/Scout_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Scout/Flip/Scout_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Sniper/Flip/Sniper_Flip_Start" }, new string[1] { "Sniper/Flip/Sniper_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Sniper/Flip/Sniper_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Sniper/Flip/Sniper_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Soldier/Flip/Soldier_Flip_Start" }, new string[1] { "Soldier/Flip/Soldier_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Soldier/Flip/Soldier_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Soldier/Flip/Soldier_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Spy/Flip/Spy_Flip_Start" }, new string[1] { "Spy/Flip/Spy_Flip_Wait" }, (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("FlipJoinSpot", new Vector3(0f, 0f, 1.5f))
			}, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Wait_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Spy/Flip/Spy_Flip_Throw" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Throw_Emotes.Add(item);
			item = AddHiddenAnimation(new string[1] { "Spy/Flip/Spy_Flip_Flip" }, "Flippin' Awesome", usePrevAnimationForJoinAnimation: true);
			Flip_Flip_Emotes.Add(item);
		}

		public void RPS()
		{
			//IL_005c: 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_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_043a: Unknown result type (might be due to invalid IL or missing references)
			//IL_043f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0444: Unknown result type (might be due to invalid IL or missing references)
			//IL_0584: Unknown result type (might be due to invalid IL or missing references)
			//IL_0589: Unknown result type (might be due to invalid IL or missing references)
			//IL_058e: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0818: Unknown result type (might be due to