Decompiled source of BadAssCompany v1.1.12

plugins/BadAssCompany/BadAssCompany.dll

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

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
public class LivingParticlesAudioModule : MonoBehaviour
{
	public Transform audioPosition;

	public LivingParticlesAudioSource LPaSourse;

	public bool useBuffer;

	public bool firstAndLastPixelBlack = false;

	private Texture2D t2d;

	private float[] finalSpectrum;

	private Color col = Color.black;

	private ParticleSystemRenderer psr;

	private void Start()
	{
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: 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_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: Expected O, but got Unknown
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_006c: Expected O, but got Unknown
		psr = ((Component)this).GetComponent<ParticleSystemRenderer>();
		switch (LPaSourse.numberOfBands)
		{
		case LivingParticlesAudioSource._numberOfBands.Bands8:
			if (firstAndLastPixelBlack)
			{
				t2d = new Texture2D(10, 1);
			}
			else
			{
				t2d = new Texture2D(8, 1);
			}
			break;
		case LivingParticlesAudioSource._numberOfBands.Bands16:
			if (firstAndLastPixelBlack)
			{
				t2d = new Texture2D(18, 1);
			}
			else
			{
				t2d = new Texture2D(16, 1);
			}
			break;
		}
		((Texture)t2d).wrapMode = (TextureWrapMode)0;
	}

	private void Update()
	{
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_014d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		if (useBuffer)
		{
			switch (LPaSourse.numberOfBands)
			{
			case LivingParticlesAudioSource._numberOfBands.Bands8:
				finalSpectrum = LPaSourse.finalBands8Buffer;
				break;
			case LivingParticlesAudioSource._numberOfBands.Bands16:
				finalSpectrum = LPaSourse.finalBands16Buffer;
				break;
			}
		}
		else
		{
			switch (LPaSourse.numberOfBands)
			{
			case LivingParticlesAudioSource._numberOfBands.Bands8:
				finalSpectrum = LPaSourse.finalBands8;
				break;
			case LivingParticlesAudioSource._numberOfBands.Bands16:
				finalSpectrum = LPaSourse.finalBands16;
				break;
			}
		}
		for (int i = 0; i < finalSpectrum.Length; i++)
		{
			col.r = finalSpectrum[i];
			if (firstAndLastPixelBlack)
			{
				t2d.SetPixel(i + 1, 0, col);
			}
			else
			{
				t2d.SetPixel(i, 0, col);
			}
		}
		if (firstAndLastPixelBlack)
		{
			t2d.SetPixel(0, 0, Color.black);
			switch (LPaSourse.numberOfBands)
			{
			case LivingParticlesAudioSource._numberOfBands.Bands8:
				t2d.SetPixel(9, 0, Color.black);
				break;
			case LivingParticlesAudioSource._numberOfBands.Bands16:
				t2d.SetPixel(17, 0, Color.black);
				break;
			}
		}
		t2d.Apply();
		((Renderer)psr).material.SetTexture("_AudioSpectrum", (Texture)(object)t2d);
		((Renderer)psr).material.SetVector("_AudioPosition", Vector4.op_Implicit(audioPosition.position));
		switch (LPaSourse.numberOfBands)
		{
		case LivingParticlesAudioSource._numberOfBands.Bands8:
		{
			int num = 1;
			float amplitudeBuffer = (LPaSourse.amplitudeBuffer8 + 48f) / 48f;
			LPaSourse.amplitudeBuffer8 = amplitudeBuffer;
			((Renderer)psr).material.SetFloat("_AudioAverageAmplitude", LPaSourse.amplitudeBuffer8);
			break;
		}
		case LivingParticlesAudioSource._numberOfBands.Bands16:
			((Renderer)psr).material.SetFloat("_AudioAverageAmplitude", LPaSourse.amplitudeBuffer16);
			break;
		}
	}
}
public class LivingParticlesAudioSource : MonoBehaviour
{
	public enum _numberOfBands
	{
		Bands8,
		Bands16
	}

	public AudioClip audioClip;

	[Range(0.1f, 2f)]
	public float bufferInitialDecreaseSpeed = 1f;

	[Range(0f, 10f)]
	public float bufferDecreaseSpeedMultiply = 5f;

	public float freqBandsPower = 10f;

	public float audioProfileInitialValue = 5f;

	public bool audioProfileDecreasing = true;

	public float audioProfileDecreasingSpeed = 0.1f;

	public _numberOfBands numberOfBands = _numberOfBands.Bands8;

	private float[] initialSamplesL = new float[512];

	private float[] initialSamplesR = new float[512];

	private float[] freqBands8 = new float[8];

	private float[] freqBands8Buffer = new float[8];

	private float[] freqBands8BufferDecrease = new float[8];

	private float[] freqBands8Highest = new float[8];

	private float[] freqBands16 = new float[16];

	private float[] freqBands16Buffer = new float[16];

	private float[] freqBands16BufferDecrease = new float[16];

	private float[] freqBands16Highest = new float[16];

	private AudioSource audioSource;

	[HideInInspector]
	public float[] finalBands8 = new float[8];

	[HideInInspector]
	public float[] finalBands8Buffer = new float[8];

	[HideInInspector]
	public float[] finalBands16 = new float[16];

	[HideInInspector]
	public float[] finalBands16Buffer = new float[16];

	[HideInInspector]
	public float amplitude8;

	[HideInInspector]
	public float amplitudeBuffer8;

	[HideInInspector]
	public float amplitude16;

	[HideInInspector]
	public float amplitudeBuffer16;

	private float amplitudeHighest;

	private static bool speaking;

	private uint _length = 0u;

	private bool yote = false;

	private float[] left;

	private float[] right;

	private double[] _window;

	private void Start()
	{
		audioSource = ((Component)this).GetComponent<AudioSource>();
		AudioProfile(audioProfileInitialValue);
	}

	public void StartAudio()
	{
		Reset();
	}

	public void Reset()
	{
		_length = 0u;
	}

	private static bool readWav(string filename, out float[] L, out float[] R, out uint samplerate, out uint channels)
	{
		speaking = true;
		L = (R = null);
		samplerate = 0u;
		channels = 0u;
		try
		{
			using FileStream input = File.Open(filename, FileMode.Open);
			BinaryReader binaryReader = new BinaryReader(input);
			int num = binaryReader.ReadInt32();
			int num2 = binaryReader.ReadInt32();
			int num3 = binaryReader.ReadInt32();
			int num4 = binaryReader.ReadInt32();
			int num5 = binaryReader.ReadInt32();
			int num6 = binaryReader.ReadInt16();
			int num7 = binaryReader.ReadInt16();
			int num8 = binaryReader.ReadInt32();
			int num9 = binaryReader.ReadInt32();
			int num10 = binaryReader.ReadInt16();
			int num11 = binaryReader.ReadInt16();
			samplerate = (uint)num8;
			channels = (uint)num7;
			if (num5 == 18)
			{
				int count = binaryReader.ReadInt16();
				binaryReader.ReadBytes(count);
			}
			int num12 = binaryReader.ReadInt32();
			int num13 = binaryReader.ReadInt32();
			byte[] src = binaryReader.ReadBytes(num13);
			int num14 = num11 / 8;
			int num15 = num13 / num14;
			float[] array = null;
			switch (num11)
			{
			case 64:
			{
				double[] array3 = new double[num15];
				Buffer.BlockCopy(src, 0, array3, 0, num13);
				array = Array.ConvertAll(array3, (double e) => (float)e);
				break;
			}
			case 32:
				array = new float[num15];
				Buffer.BlockCopy(src, 0, array, 0, num13);
				break;
			case 16:
			{
				short[] array2 = new short[num15];
				Buffer.BlockCopy(src, 0, array2, 0, num13);
				array = Array.ConvertAll(array2, (short e) => (float)e / 32768f);
				break;
			}
			default:
				return false;
			}
			switch (channels)
			{
			case 1u:
				L = array;
				R = null;
				return true;
			case 2u:
			{
				int num16 = num15 / 2;
				L = new float[num16];
				R = new float[num16];
				int i = 0;
				int num17 = 0;
				for (; i < num16; i++)
				{
					L[i] = array[num17++];
					R[i] = array[num17++];
				}
				return true;
			}
			default:
				return false;
			}
		}
		catch
		{
			Debug.Log((object)("...Failed to load: " + filename));
			return false;
		}
	}

	private bool WavBufferToWwise(uint playingID, uint channelIndex, float[] samples)
	{
		if (left.Length == 0)
		{
			DebugClass.Log((object)"There was an error playing the audio file, The audio buffer is empty!");
		}
		if (_length >= (uint)left.Length)
		{
			_length = (uint)left.Length;
		}
		initialSamplesL = new float[samples.Length];
		initialSamplesR = new float[samples.Length];
		try
		{
			uint num = 0u;
			for (num = 0u; num < samples.Length; num++)
			{
				if (num + _length >= left.Length)
				{
					speaking = false;
					_length = 0u;
					break;
				}
				initialSamplesL[num] = left[num + _length];
				initialSamplesR[num] = right[num + _length];
				samples[num] = 0f;
			}
			_length += num;
		}
		catch (Exception)
		{
			Debug.Log((object)"--------end of audio???");
			throw;
		}
		if (_length >= (uint)left.Length)
		{
			_length = (uint)left.Length;
			speaking = false;
		}
		DoSpectrumDataStuff();
		return speaking;
	}

	private void ApplyWindow()
	{
		int num = initialSamplesL.Length;
		CreateWindow(num);
		for (int i = 0; i < num; i++)
		{
			initialSamplesL[i] = (float)((double)initialSamplesL[i] * _window[i]);
			initialSamplesR[i] = (float)((double)initialSamplesR[i] * _window[i]);
		}
	}

	private void DoSpectrumDataStuff()
	{
		ApplyWindow();
		switch (numberOfBands)
		{
		case _numberOfBands.Bands8:
			CreateFreqBands8();
			CreateBandBuffer8();
			CreateFinalBands8();
			CreateAmplitude8();
			break;
		case _numberOfBands.Bands16:
			CreateFreqBands16();
			CreateBandBuffer16();
			CreateFinalBands16();
			CreateAmplitude16();
			break;
		}
	}

	private void CreateWindow(int size, bool normalize = false)
	{
		_window = new double[size];
		for (int i = 0; i < size; i++)
		{
			double num = (double)i / (double)(size - 1);
			_window[i] = (double)(0.42f - 0.5f * Mathf.Cos((float)(i / size))) + 0.08 * (double)Mathf.Cos(2f * (float)i / (float)size);
		}
		if (normalize)
		{
			double num2 = 0.0;
			for (int j = 0; j < _window.Length; j++)
			{
				num2 += _window[j];
			}
			for (int k = 0; k < _window.Length; k++)
			{
				_window[k] /= num2;
			}
		}
	}

	private void AudioProfile(float audioProfileValue)
	{
		for (int i = 0; i < 8; i++)
		{
			freqBands8Highest[i] = audioProfileValue;
		}
		for (int j = 0; j < 16; j++)
		{
			freqBands16Highest[j] = audioProfileValue;
		}
	}

	private void CreateAmplitude8()
	{
		float num = 0f;
		float num2 = 0f;
		for (int i = 0; i < 8; i++)
		{
			num += finalBands8[i];
			num2 += finalBands8Buffer[i];
		}
		if (num > amplitudeHighest)
		{
			amplitudeHighest = num;
		}
		amplitude8 = num / amplitudeHighest;
		amplitudeBuffer8 = num2 / amplitudeHighest;
	}

	private void CreateAmplitude16()
	{
		float num = 0f;
		float num2 = 0f;
		for (int i = 0; i < 16; i++)
		{
			num += finalBands16[i];
			num2 += finalBands16Buffer[i];
		}
		if (num > amplitudeHighest)
		{
			amplitudeHighest = num;
		}
		amplitude16 = num / amplitudeHighest;
		amplitudeBuffer16 = num2 / amplitudeHighest;
	}

	private void CreateFinalBands8()
	{
		for (int i = 0; i < 8; i++)
		{
			if (audioProfileDecreasing)
			{
				freqBands8Highest[i] -= audioProfileDecreasingSpeed * Time.deltaTime;
			}
			if (freqBands8[i] > freqBands8Highest[i])
			{
				freqBands8Highest[i] = freqBands8[i];
			}
			finalBands8[i] = freqBands8[i] / freqBands8Highest[i];
			finalBands8Buffer[i] = freqBands8Buffer[i] / freqBands8Highest[i];
		}
	}

	private void CreateFinalBands16()
	{
		for (int i = 0; i < 16; i++)
		{
			if (audioProfileDecreasing)
			{
				freqBands16Highest[i] -= audioProfileDecreasingSpeed * Time.deltaTime;
			}
			if (freqBands16[i] > freqBands16Highest[i])
			{
				freqBands16Highest[i] = freqBands16[i];
			}
			finalBands16[i] = freqBands16[i] / freqBands16Highest[i];
			finalBands16Buffer[i] = freqBands16Buffer[i] / freqBands16Highest[i];
		}
	}

	private void CreateBandBuffer8()
	{
		for (int i = 0; i < 8; i++)
		{
			if (freqBands8[i] > freqBands8Buffer[i])
			{
				freqBands8Buffer[i] = freqBands8[i];
				freqBands8BufferDecrease[i] = bufferInitialDecreaseSpeed * freqBands8Highest[i] * Time.deltaTime;
			}
			if (freqBands8[i] < freqBands8Buffer[i])
			{
				freqBands8Buffer[i] -= freqBands8BufferDecrease[i];
				freqBands8BufferDecrease[i] *= 1f + bufferDecreaseSpeedMultiply * Time.deltaTime;
			}
		}
	}

	private void CreateBandBuffer16()
	{
		for (int i = 0; i < 16; i++)
		{
			if (freqBands16[i] > freqBands16Buffer[i])
			{
				freqBands16Buffer[i] = freqBands16[i];
				freqBands16BufferDecrease[i] = bufferInitialDecreaseSpeed * freqBands16Highest[i] * Time.deltaTime;
			}
			if (freqBands16[i] < freqBands16Buffer[i])
			{
				freqBands16Buffer[i] -= freqBands16BufferDecrease[i];
				freqBands16BufferDecrease[i] *= 1f + bufferDecreaseSpeedMultiply * Time.deltaTime;
			}
		}
	}

	private void CreateFreqBands8()
	{
		int num = 1;
	}

	private void CreateFreqBands16()
	{
		int num = 0;
		int num2 = 1;
		int num3 = 0;
		for (int i = 0; i < 16; i++)
		{
			float num4 = 0f;
			if (i == 2 || i == 4 || i == 6 || i == 8 || i == 10 || i == 12 || i == 14)
			{
				num3++;
				num2 = (int)Mathf.Pow(2f, (float)num3);
				if (num3 == 7)
				{
					num2++;
				}
			}
			for (int j = 0; j < num2; j++)
			{
				num4 += (initialSamplesL[num] + initialSamplesR[num]) * (float)(num + 1);
				num++;
			}
			num4 /= (float)num;
			freqBands16[i] = num4 * freqBandsPower * 2f;
		}
	}
}
namespace BadAssCompany
{
	internal class LethalConfigSupport
	{
		internal static void LethalConfig()
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Expected O, but got Unknown
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Expected O, but got Unknown
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Expected O, but got Unknown
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Expected O, but got Unknown
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Expected O, but got Unknown
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Expected O, but got Unknown
			LethalConfigManager.SetModDescription("API for importing animations to Lethal Company");
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.FloatLightProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.moneyProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.chikaProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.desertlightProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.BimBamBomProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.SummermogusProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.Amogus, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.BluntAnimatorProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.neverseeProp, false));
			LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Settings.ImaMysteryProp, false));
		}
	}
}
namespace BadAssEmotes
{
	internal class CSS_Loader
	{
	}
}
namespace ExamplePlugin
{
	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(BadAssEmotesPlugin.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);
			}
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.weliveinasociety.badasscompany", "BadAssCompany", "1.1.12")]
	public class BadAssEmotesPlugin : BaseUnityPlugin
	{
		public const string PluginGUID = "com.weliveinasociety.badasscompany";

		public const string PluginAuthor = "Nunchuk";

		public const string PluginName = "BadAssCompany";

		public const string PluginVersion = "1.1.12";

		private int stageInt = -1;

		private int pressInt = -1;

		internal static GameObject stage;

		internal static GameObject press;

		internal static GameObject pressMechanism;

		internal static LivingParticleArrayController LPAC;

		public static BadAssEmotesPlugin instance;

		private static List<string> HatKidDances = new List<string>();

		private int stand = -1;

		private List<BoneMapper> punchingMappers = new List<BoneMapper>();

		private int prop1 = -1;

		public static PluginInfo PInfo { get; private set; }

		public void Awake()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0feb: Expected O, but got Unknown
			//IL_106a: Unknown result type (might be due to invalid IL or missing references)
			//IL_106f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1074: Unknown result type (might be due to invalid IL or missing references)
			//IL_107a: Unknown result type (might be due to invalid IL or missing references)
			//IL_107f: Unknown result type (might be due to invalid IL or missing references)
			//IL_109a: Unknown result type (might be due to invalid IL or missing references)
			//IL_109f: Unknown result type (might be due to invalid IL or missing references)
			//IL_10a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_10aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_10af: Unknown result type (might be due to invalid IL or missing references)
			//IL_10c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_1115: Unknown result type (might be due to invalid IL or missing references)
			//IL_111b: Expected O, but got Unknown
			//IL_114b: Unknown result type (might be due to invalid IL or missing references)
			//IL_116d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1173: Expected O, but got Unknown
			//IL_11a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_11ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_11f5: Expected O, but got Unknown
			//IL_1268: Unknown result type (might be due to invalid IL or missing references)
			//IL_14a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_14ae: Expected O, but got Unknown
			//IL_1504: Unknown result type (might be due to invalid IL or missing references)
			//IL_1509: Unknown result type (might be due to invalid IL or missing references)
			//IL_150e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1514: Unknown result type (might be due to invalid IL or missing references)
			//IL_1519: Unknown result type (might be due to invalid IL or missing references)
			//IL_1525: Unknown result type (might be due to invalid IL or missing references)
			//IL_1579: Unknown result type (might be due to invalid IL or missing references)
			//IL_157f: Expected O, but got Unknown
			//IL_15c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_15f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_15f7: Expected O, but got Unknown
			//IL_1620: Unknown result type (might be due to invalid IL or missing references)
			//IL_1907: Unknown result type (might be due to invalid IL or missing references)
			//IL_190d: Expected O, but got Unknown
			//IL_1971: Unknown result type (might be due to invalid IL or missing references)
			//IL_1976: Unknown result type (might be due to invalid IL or missing references)
			//IL_197b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1981: Unknown result type (might be due to invalid IL or missing references)
			//IL_1986: Unknown result type (might be due to invalid IL or missing references)
			//IL_1992: Unknown result type (might be due to invalid IL or missing references)
			//IL_19d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_19da: Expected O, but got Unknown
			//IL_1a2a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1a9d: Unknown result type (might be due to invalid IL or missing references)
			//IL_1aa3: Expected O, but got Unknown
			//IL_1b07: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b0c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b11: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b17: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b28: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b63: Unknown result type (might be due to invalid IL or missing references)
			//IL_1b69: Expected O, but got Unknown
			//IL_1bb9: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1c20: Expected O, but got Unknown
			//IL_1c76: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e82: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e8c: Expected O, but got Unknown
			//IL_1e94: Unknown result type (might be due to invalid IL or missing references)
			//IL_1e9e: Expected O, but got Unknown
			//IL_1ea6: Unknown result type (might be due to invalid IL or missing references)
			//IL_1eb0: Expected O, but got Unknown
			//IL_1eb8: Unknown result type (might be due to invalid IL or missing references)
			//IL_1ec2: Expected O, but got Unknown
			instance = this;
			PInfo = ((BaseUnityPlugin)this).Info;
			Assets.LoadAssetBundlesFromFolder("assetbundles");
			Settings.Setup();
			CustomEmoteParams val = new CustomEmoteParams();
			val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/Breakin.anim") };
			val.audioLoops = false;
			val.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/breakin'.ogg") };
			val.syncAnim = true;
			val.syncAudio = true;
			val.lockType = (LockType)1;
			val.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/Breakin'_NNTranscription.ogg") };
			val.displayName = "Breakin";
			EmoteImporter.ImportEmote(val);
			AddAnimation("Breakneck", (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/Breakneck.ogg") }, null, looping: true, dimAudio: true, sync: true, (LockType)1, "", (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/Breakneck.ogg") }, null, DMCA: false, 0.7f);
			AddAnimation("Crabby", "Crabby", "", looping: true, dimAudio: true, sync: true, (LockType)3, "", "Crabby", "", DMCA: false, 0.7f);
			AddAnimation("Dabstand", "Dabstand", "", looping: false, dimAudio: false, sync: false, (LockType)1, "", "Dabstand", "", DMCA: false, 0.05f);
			AddAnimation("DanceMoves", "Fortnite default dance sound", "", looping: false, dimAudio: true, sync: true, (LockType)1, "Default Dance", "Fortnite default dance sound", "", DMCA: false, 0.7f);
			AddAnimation("DanceTherapyIntro", "DanceTherapyLoop", "Dance Therapy Intro", "Dance Therapy Loop", looping: true, dimAudio: true, sync: true, (LockType)1, "Dance Therapy", "Dance Therapy Intro", "Dance Therapy Loop", DMCA: false, 0.7f);
			AddAnimation("DeepDab", "Dabstand", "", looping: false, dimAudio: false, sync: false, (LockType)3, "Deep Dab", "Dabstand", "", DMCA: false, 0.05f);
			AddAnimation("Droop", "Droop", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Droop", "", DMCA: false, 0.7f);
			AddAnimation("ElectroSwing", "ElectroSwing", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Electro Swing", "ElectroSwing", "", DMCA: false, 0.7f);
			AddAnimation("Extraterrestial", "Extraterestrial", "", looping: true, dimAudio: true, sync: true, (LockType)3, "", "Extraterestrial", "", DMCA: false, 0.7f);
			AddAnimation("FancyFeet", "FancyFeet", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Fancy Feet", "FancyFeet", "", DMCA: false, 0.7f);
			AddAnimation("FlamencoIntro", "FlamencoLoop", "Flamenco", "FlamencoLoop", looping: true, dimAudio: true, sync: true, (LockType)1, "Flamenco", "FlamencoLoop", "", DMCA: false, 0.7f);
			AddAnimation("Floss", "Floss", "", looping: true, dimAudio: true, sync: false, (LockType)3, "", "Floss", "", DMCA: false, 0.5f);
			AddAnimation("Fresh", "Fresh", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Fresh", "", DMCA: false, 0.7f);
			AddAnimation("Hype", "Hype", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Hype", "", DMCA: false, 0.7f);
			AddAnimation("Infectious", "Infectious", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Infectious", "", DMCA: false, 0.7f);
			AddAnimation("InfinidabIntro", "InfinidabLoop", "InfinidabIntro", "InfinidabLoop", looping: true, dimAudio: true, sync: false, (LockType)1, "Infinidab", "InfinidabLoop", "", DMCA: false, 0.1f);
			AddAnimation("NeverGonna", "Never Gonna Give you Up", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Never Gonna", "Never Gonna Give you Up", "", DMCA: true, 0.7f);
			AddAnimation("NinjaStyle", "NinjaStyle", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Ninja Style", "NinjaStyle", "", DMCA: false, 0.7f);
			AddAnimation("OldSchool", "Old School", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Oldschool", "Old School", "", DMCA: false, 0.7f);
			AddAnimation("OrangeJustice", "Orange Justice", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Orange Justice", "Orange Justice", "", DMCA: false, 0.6f);
			AddAnimation("Overdrive", "Overdrive", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Overdrive", "", DMCA: false, 0.7f);
			AddAnimation("PawsAndClaws", "im a cat", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Paws and Claws", "im a cat", "", DMCA: false, 0.7f);
			AddAnimation("PhoneItIn", "Phone It In", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Phone It In", "Phone It In", "", DMCA: false, 0.7f);
			AddAnimation("PopLock", "PopLock", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Pop Lock", "PopLock", "", DMCA: false, 0.7f);
			AddAnimation("Scenario", "Scenario", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Scenario", "", DMCA: false, 0.7f);
			AddAnimation("SpringLoaded", "SpringLoaded", "", looping: true, dimAudio: false, sync: false, (LockType)1, "Spring Loaded", "SpringLoaded", "", DMCA: false, 0.1f);
			AddAnimation("Springy", "Springy", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Springy", "", DMCA: false, 0.7f);
			AddAnimation("AnkhaZone", "AnkhaZone", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "AnkhaZone", "", DMCA: true, 0.7f);
			AddAnimation("GangnamStyle", "GangnamStyle", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Gangnam Style", "GangnamStyle", "", DMCA: true, 0.7f);
			AddAnimation("DontStart", "DontStart", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Don't Start", "DontStart", "", DMCA: true, 0.7f);
			AddAnimation("BunnyHop", "BunnyHop", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Bunny Hop", "BunnyHop", "", DMCA: false, 0.4f);
			AddAnimation("BestMates", "BestMates", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Best Mates", "BestMates", "", DMCA: false, 0.7f);
			AddAnimation("JackOPose", "", "", looping: true, dimAudio: false, sync: false, (LockType)1, "Jack-O Crouch", "", "", DMCA: false, 0f);
			AddAnimation("Crackdown", "Crackdown", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Crackdown", "", DMCA: false, 0.7f);
			AddAnimation("Thicc", "Thicc", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Thicc", "", DMCA: false, 0.7f);
			AddAnimation("TakeTheL", "TakeTheL", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Take The L", "TakeTheL", "", DMCA: false, 0.8f);
			AddAnimation("LetsDanceBoys", "LetsDanceBoys", "", looping: true, dimAudio: true, sync: true, (LockType)3, "Let's Dance Boys", "LetsDanceBoys", "", DMCA: false, 0.7f);
			AddAnimation("BlindingLightsIntro", "BlindingLights", "BlindingLightsIntro", "BlindingLightsLoop", looping: true, dimAudio: true, sync: true, (LockType)1, "Blinding Lights", "BlindingLightsIntro", "BlindingLightsLoop", DMCA: true, 0.7f);
			AddAnimation("ImDiamond", "ImDiamond", "", looping: true, dimAudio: true, sync: true, (LockType)1, "I'm Diamond", "ImDiamond", "", DMCA: true, 0.7f);
			AddAnimation("ItsDynamite", "ItsDynamite", "", looping: true, dimAudio: true, sync: true, (LockType)1, "It's Dynamite", "ItsDynamite", "", DMCA: true, 0.7f);
			AddAnimation("TheRobot", "TheRobot", "", looping: true, dimAudio: true, sync: true, (LockType)1, "The Robot", "TheRobot", "", DMCA: false, 0.7f);
			AddAnimation("Cartwheelin", "Cartwheelin", "", looping: true, dimAudio: false, sync: false, (LockType)1, "", "Cartwheelin", "", DMCA: false, 0.1f);
			AddAnimation("CrazyFeet", "CrazyFeet", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Crazy Feet", "CrazyFeet", "", DMCA: false, 0.7f);
			AddAnimation("FullTilt", "FullTilt", "", looping: true, dimAudio: true, sync: true, (LockType)3, "Full Tilt", "FullTilt", "", DMCA: false, 0.1f);
			AddAnimation("FloorSamus", "", "", looping: true, dimAudio: false, sync: false, (LockType)1, "Samus Crawl", "", "", DMCA: false, 0f);
			AddAnimation("DEDEDE", "", "", looping: true, dimAudio: false, sync: false, (LockType)1, "", "", "", DMCA: false, 0f);
			AddAnimation("Specialist", "Specialist", "", looping: false, dimAudio: true, sync: true, (LockType)3, "The Specialist", "Specialist", "", DMCA: false, 0.7f);
			AddStartAndJoinAnim(new string[2] { "PPmusic", "PPmusicFollow" }, "PPmusic", looping: true, dimaudio: true, sync: true, (LockType)1, "Penis Music", "PPmusic", DMCA: false, 0.7f);
			AddAnimation("GetDown", "GetDown", "", looping: false, dimAudio: true, sync: true, (LockType)3, "Get Down", "GetDown", "", DMCA: true, 0.7f);
			AddAnimation("Yakuza", "Yakuza", "", looping: true, dimAudio: true, sync: true, (LockType)3, "Koi no Disco Queen", "Yakuza", "", DMCA: false, 0.7f);
			AddAnimation("Miku", "Miku", "", looping: true, dimAudio: true, sync: true, (LockType)3, "", "Miku", "", DMCA: true, 0.7f);
			AddAnimation("Horny", new string[2] { "Horny", "TeddyLoid - ME!ME!ME! feat. Daoko" }, looping: true, dimaudio: true, sync: true, (LockType)1, "", new string[2] { "Horny", "TeddyLoid - ME!ME!ME! feat. Daoko" }, DMCA: true, 0.7f);
			AddAnimation("GangTorture", "GangTorture", "", looping: false, dimAudio: true, sync: true, (LockType)3, "", "GangTorture", "", DMCA: true, 0.7f);
			AddAnimation("PoseBurter", "GinyuForce", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Burter Pose", "GinyuForce", "", DMCA: false, 0.7f);
			AddAnimation("PoseGinyu", "GinyuForce", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Ginyu Pose", "GinyuForce", "", DMCA: false, 0.7f);
			AddAnimation("PoseGuldo", "GinyuForce", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Guldo Pose", "GinyuForce", "", DMCA: false, 0.7f);
			AddAnimation("PoseJeice", "GinyuForce", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Jeice Pose", "GinyuForce", "", DMCA: false, 0.7f);
			AddAnimation("PoseRecoome", "GinyuForce", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Recoome Pose", "GinyuForce", "", DMCA: false, 0.7f);
			AddAnimation("Carson", "Carson", "", looping: false, dimAudio: true, sync: true, (LockType)1, "", "Carson", "", DMCA: true, 0.7f);
			AddAnimation("Frolic", "Frolic", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Frolic", "", DMCA: true, 0.7f);
			AddAnimation("MoveIt", "MoveIt", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Move It", "MoveIt", "", DMCA: true, 0.7f);
			AddStartAndJoinAnim(new string[2] { "ByTheFireLead", "ByTheFirePartner" }, "ByTheFire", looping: true, dimaudio: true, sync: true, (LockType)1, "By The Fire", "ByTheFire", DMCA: true, 0.7f);
			AddStartAndJoinAnim(new string[2] { "SwayLead", "SwayPartner" }, "Sway", looping: true, dimaudio: true, sync: true, (LockType)1, "Sway", "Sway", DMCA: true, 0.7f);
			AddAnimation("Macarena", "Macarena", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Macarena", "", DMCA: true, 0.7f);
			AddAnimation("Thanos", "Thanos", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Thanos", "", DMCA: true, 0.7f);
			AddAnimation("StarGet", (AudioClip[])(object)new AudioClip[6]
			{
				Assets.Load<AudioClip>("assets/compressedaudio/starget2.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/starget3.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/starget4.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/starget5.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/starget6.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/starget7.ogg")
			}, null, looping: false, dimAudio: false, sync: false, (LockType)3, "Star Get", (AudioClip[])(object)new AudioClip[6]
			{
				Assets.Load<AudioClip>("assets/DMCAMusic/starget2_NNTranscription.ogg"),
				Assets.Load<AudioClip>("assets/DMCAMusic/starget3_NNTranscription.ogg"),
				Assets.Load<AudioClip>("assets/DMCAMusic/starget4_NNTranscription.ogg"),
				Assets.Load<AudioClip>("assets/DMCAMusic/starget5_NNTranscription.ogg"),
				Assets.Load<AudioClip>("assets/DMCAMusic/starget6_NNTranscription.ogg"),
				Assets.Load<AudioClip>("assets/DMCAMusic/starget7_NNTranscription.ogg")
			}, null, DMCA: false, 0.6f);
			AddAnimation("Poyo", "Poyo", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Poyo", "", DMCA: false, 0.7f);
			AddAnimation("Chika", "Chika", "", looping: false, dimAudio: true, sync: true, (LockType)3, "", "Chika", "", DMCA: true, 0.7f);
			AddAnimation("Goopie", "Goopie", "", looping: false, dimAudio: true, sync: true, (LockType)1, "", "Goopie", "", DMCA: true, 0.7f);
			AddAnimation("Crossbounce", "Crossbounce", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Crossbounce", "", DMCA: false, 0.7f);
			AddAnimation("Butt", "Butt", "", looping: false, dimAudio: false, sync: false, (LockType)2, "", "Butt", "", DMCA: false, 0.5f);
			AddAnimation("MakeItRainIntro", "MakeItRainLoop", "MakeItRainIntro", "MakeItRainLoop", looping: true, dimAudio: true, sync: true, (LockType)3, "Make it Rain", "MakeItRainLoop", "", DMCA: true, 0.7f);
			AddAnimation("Penguin", "Penguin", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Club Penguin", "Penguin", "", DMCA: false, 0.4f);
			AddAnimation("DesertRivers", "DesertRivers", "", looping: false, dimAudio: true, sync: true, (LockType)3, "Rivers in the Dessert", "DesertRivers", "", DMCA: false, 0.7f);
			AddAnimation("HondaStep", "HondaStep", "", looping: false, dimAudio: true, sync: true, (LockType)3, "Step!", "HondaStep", "", DMCA: true, 0.7f);
			AddAnimation("UGotThat", "UGotThat", "", looping: false, dimAudio: true, sync: true, (LockType)3, "U Got That", "UGotThat", "", DMCA: true, 0.7f);
			AddAnimation("OfficerEarl", "", "", looping: true, dimAudio: false, sync: false, (LockType)1, "Officer Earl", "", "", DMCA: false, 0f);
			AddAnimation("Cirno", "Cirno", "", looping: false, dimAudio: true, sync: true, (LockType)3, "", "Cirno", "", DMCA: false, 0.7f);
			CustomEmoteParams val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/Haruhi.anim") };
			val2.audioLoops = false;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[2]
			{
				Assets.Load<AudioClip>("assets/compressedaudio/Haruhi.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/HaruhiYoung.ogg")
			};
			val2.syncAnim = true;
			val2.syncAudio = true;
			val2.startPref = 0;
			val2.joinPref = 0;
			val2.joinSpots = (JoinSpot[])(object)new JoinSpot[2]
			{
				new JoinSpot("Yuki_Nagato", new Vector3(1.5f, 0f, -1.5f), Vector3.zero, Vector3.one, true),
				new JoinSpot("Mikuru_Asahina", new Vector3(-1.5f, 0f, -1.5f), Vector3.zero, Vector3.one, true)
			};
			val2.internalName = "Hare Hare Yukai";
			val2.lockType = (LockType)3;
			val2.willGetClaimedByDMCA = true;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[2]
			{
				Assets.Load<AudioClip>("assets/DMCAMusic/Haruhi_NNTranscription.ogg"),
				Assets.Load<AudioClip>("assets/DMCAMusic/HaruhiYoung_NNTranscription.ogg")
			};
			val2.audioLevel = 0.7f;
			val2.displayName = "Hare Hare Yukai";
			EmoteImporter.ImportEmote(val2);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/Yuki_Nagato.anim") };
			val2.audioLoops = false;
			val2.syncAnim = true;
			val2.visible = false;
			val2.lockType = (LockType)2;
			val2.audioLevel = 0f;
			val2.displayName = "Hare Hare Yukai";
			EmoteImporter.ImportEmote(val2);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/Mikuru_Asahina.anim") };
			val2.audioLoops = false;
			val2.syncAnim = true;
			val2.visible = false;
			val2.lockType = (LockType)2;
			val2.audioLevel = 0f;
			val2.displayName = "Hare Hare Yukai";
			EmoteImporter.ImportEmote(val2);
			BoneMapper.animClips["com.weliveinasociety.badasscompany__Yuki_Nagato"].vulnerableEmote = true;
			BoneMapper.animClips["com.weliveinasociety.badasscompany__Mikuru_Asahina"].vulnerableEmote = true;
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[3]
			{
				Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/GGGG.anim"),
				Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/GGGG2.anim"),
				Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/GGGG3.anim")
			};
			val2.audioLoops = false;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/GGGG.ogg") };
			val2.syncAnim = true;
			val2.syncAudio = true;
			val2.startPref = -2;
			val2.joinPref = -2;
			val2.lockType = (LockType)3;
			val2.willGetClaimedByDMCA = true;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/GGGG_NNTranscription.ogg") };
			val2.audioLevel = 0.7f;
			val2.displayName = "GGGG";
			EmoteImporter.ImportEmote(val2);
			AddAnimation("Shufflin", "Shufflin", "", looping: false, dimAudio: true, sync: true, (LockType)3, "", "Shufflin", "", DMCA: true, 0.7f);
			AddAnimation("BimBamBom", "BimBamBom", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Bim Bam Boom", "BimBamBom", "", DMCA: true, 0.7f);
			AddAnimation("Savage", "Savage", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Savage", "", DMCA: true, 0.7f);
			AddAnimation("Stuck", "Stuck", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Stuck", "", DMCA: true, 0.7f);
			AddAnimation("Roflcopter", "Roflcopter", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Roflcopter", "", DMCA: false, 0.7f);
			AddAnimation("Float", "Float", "", looping: false, dimAudio: true, sync: true, (LockType)1, "", "Float", "", DMCA: false, 0.4f);
			AddAnimation("Rollie", "Rollie", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Rollie", "", DMCA: true, 0.7f);
			AddAnimation("GalaxyObservatory", new string[3] { "GalaxyObservatory1", "GalaxyObservatory2", "GalaxyObservatory3" }, looping: true, dimaudio: true, sync: true, (LockType)3, "Galaxy Observatory", new string[3] { "GalaxyObservatory1", "GalaxyObservatory2", "GalaxyObservatory3" }, DMCA: false, 0.5f);
			AddAnimation("Markiplier", "Markiplier", "", looping: false, dimAudio: false, sync: false, (LockType)3, "", "Markiplier", "", DMCA: true, 0.6f);
			AddAnimation("DevilSpawn", "DevilSpawn", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "DevilSpawn", "", DMCA: true, 0.7f);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/DuckThisOneIdle.anim") };
			val2.audioLoops = true;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/DuckThisOneIdle.ogg") };
			val2.joinSpots = (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("DuckThisJoinSpot", new Vector3(0f, 0f, 2f), Vector3.zero, Vector3.one, true)
			};
			val2.lockType = (LockType)2;
			val2.internalName = "Duck This One";
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/DuckThisOneIdle_NNTranscription.ogg") };
			val2.willGetClaimedByDMCA = false;
			val2.audioLevel = 0.7f;
			val2.displayName = "Duck This One";
			val2.preventMovement = true;
			EmoteImporter.ImportEmote(val2);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/DuckThisOne.anim") };
			val2.audioLoops = false;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/DuckThisOne.ogg") };
			val2.visible = false;
			val2.lockType = (LockType)2;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/DuckThisOne.ogg") };
			val2.displayName = "Duck This One";
			EmoteImporter.ImportEmote(val2);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/DuckThisOneJoin.anim") };
			val2.audioLoops = false;
			val2.visible = false;
			val2.lockType = (LockType)2;
			val2.displayName = "Duck This One";
			EmoteImporter.ImportEmote(val2);
			BoneMapper.animClips["com.weliveinasociety.badasscompany__Duck This One"].vulnerableEmote = true;
			BoneMapper.animClips["com.weliveinasociety.badasscompany__DuckThisOne"].vulnerableEmote = true;
			BoneMapper.animClips["com.weliveinasociety.badasscompany__DuckThisOneJoin"].vulnerableEmote = true;
			AddAnimation("Griddy", "Griddy", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Griddy", "", DMCA: true, 0.7f);
			AddAnimation("Tidy", "Tidy", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Tidy", "", DMCA: true, 0.7f);
			AddAnimation("Toosie", "Toosie", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Toosie", "", DMCA: true, 0.7f);
			AddAnimation("INEEDAMEDICBAG", (AudioClip[])(object)new AudioClip[2]
			{
				Assets.Load<AudioClip>("assets/compressedaudio/INEEDAMEDICBAG1.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/INEEDAMEDICBAG2.ogg")
			}, null, looping: false, dimAudio: false, sync: false, (LockType)1, "I NEED A MEDIC BAG", (AudioClip[])(object)new AudioClip[2]
			{
				Assets.Load<AudioClip>("assets/compressedaudio/INEEDAMEDICBAG1.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/INEEDAMEDICBAG2.ogg")
			}, null, DMCA: false, 0.9f);
			AddAnimation("Smoke", "Smoke", "", looping: true, dimAudio: true, sync: true, (LockType)3, "Ralsei Dies", "Smoke", "", DMCA: false, 0.7f);
			AddAnimation("FamilyGuyDeath", "", "", looping: true, dimAudio: false, sync: false, (LockType)1, "Family Guy Death Pose", "", "", DMCA: false, 0f);
			AddAnimation("Panda", "", "", looping: false, dimAudio: false, sync: false, (LockType)3, "", "", "", DMCA: false, 0f);
			AddAnimation("Yamcha", "", "", looping: true, dimAudio: false, sync: false, (LockType)1, "Yamcha Death Pose", "", "", DMCA: false, 0f);
			AddAnimation("Thriller", "Thriller", "", looping: true, dimAudio: true, sync: true, (LockType)3, "", "Thriller", "", DMCA: true, 0.7f);
			AddAnimation("Wess", "Wess", "", looping: false, dimAudio: true, sync: true, (LockType)1, "", "Wess", "", DMCA: true, 0.7f);
			AddAnimation("Distraction", "Distraction", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Distraction Dance", "Distraction", "", DMCA: false, 1f);
			AddAnimation("Security", "Security", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Last Surprise", "Security", "", DMCA: false, 0.7f);
			AddAnimation("KillMeBaby", "KillMeBaby", "", looping: false, dimAudio: true, sync: true, (LockType)1, "Kill Me Baby", "KillMeBaby", "", DMCA: true, 0.7f);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/MyWorld.anim") };
			val2.audioLoops = true;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/MyWorld.ogg") };
			val2.syncAnim = true;
			val2.syncAudio = true;
			val2.joinSpots = (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("MyWorldJoinSpot", new Vector3(2f, 0f, 0f), Vector3.zero, Vector3.one, true)
			};
			val2.lockType = (LockType)1;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/MyWorld_NNTranscription.ogg") };
			val2.audioLevel = 0.7f;
			val2.willGetClaimedByDMCA = true;
			val2.displayName = "My World";
			EmoteImporter.ImportEmote(val2);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/MyWorldJoin.anim") };
			val2.audioLoops = true;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/MyWorld.ogg") };
			val2.syncAnim = true;
			val2.syncAudio = true;
			val2.visible = false;
			val2.lockType = (LockType)1;
			val2.audioLevel = 0f;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/MyWorld_NNTranscription.ogg") };
			val2.willGetClaimedByDMCA = true;
			val2.displayName = "My World";
			EmoteImporter.ImportEmote(val2);
			CustomAnimationClip obj = BoneMapper.animClips["com.weliveinasociety.badasscompany__MyWorldJoin"];
			obj.syncPos--;
			BoneMapper.animClips["com.weliveinasociety.badasscompany__MyWorldJoin"].vulnerableEmote = true;
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/VSWORLD.anim") };
			val2.audioLoops = true;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/VSWORLD.ogg") };
			val2.syncAnim = true;
			val2.syncAudio = true;
			val2.joinSpots = (JoinSpot[])(object)new JoinSpot[1]
			{
				new JoinSpot("VSWORLDJoinSpot", new Vector3(-2f, 0f, 0f), Vector3.zero, Vector3.one, true)
			};
			val2.lockType = (LockType)1;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/VSWORLD_NNTranscription.ogg") };
			val2.audioLevel = 0.7f;
			val2.displayName = "VSWORLD";
			EmoteImporter.ImportEmote(val2);
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/VSWORLDLEFT.anim") };
			val2.audioLoops = true;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/VSWORLD.ogg") };
			val2.syncAnim = true;
			val2.syncAudio = true;
			val2.visible = false;
			val2.lockType = (LockType)1;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/VSWORLD_NNTranscription.ogg") };
			val2.displayName = "VSWORLD";
			EmoteImporter.ImportEmote(val2);
			CustomAnimationClip obj2 = BoneMapper.animClips["com.weliveinasociety.badasscompany__VSWORLDLEFT"];
			obj2.syncPos--;
			BoneMapper.animClips["com.weliveinasociety.badasscompany__VSWORLDLEFT"].vulnerableEmote = true;
			val2 = new CustomEmoteParams();
			val2.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/ChugJug.anim") };
			val2.audioLoops = false;
			val2.primaryAudioClips = (AudioClip[])(object)new AudioClip[2]
			{
				Assets.Load<AudioClip>("assets/compressedaudio/ChugJug.ogg"),
				Assets.Load<AudioClip>("assets/compressedaudio/MikuJug.ogg")
			};
			val2.syncAnim = true;
			val2.syncAudio = true;
			val2.lockType = (LockType)1;
			val2.primaryDMCAFreeAudioClips = (AudioClip[])(object)new AudioClip[2]
			{
				Assets.Load<AudioClip>("assets/DMCAMusic/ChugJug_NNTranscription.ogg"),
				Assets.Load<AudioClip>("assets/DMCAMusic/MikuJug_NNTranscription.ogg")
			};
			val2.audioLevel = 0.7f;
			val2.displayName = "Chug Jug";
			val2.willGetClaimedByDMCA = true;
			EmoteImporter.ImportEmote(val2);
			AddAnimation("Summertime", "Summertime", "", looping: false, dimAudio: true, sync: true, (LockType)1, "", "Summertime", "", DMCA: true, 0.7f);
			AddAnimation("Dougie", "Dougie", "", looping: true, dimAudio: true, sync: true, (LockType)1, "", "Dougie", "", DMCA: true, 0.7f);
			AddAnimation("CaliforniaGirls", "CaliforniaGirls", "", looping: true, dimAudio: true, sync: true, (LockType)1, "California Gurls", "CaliforniaGirls", "", DMCA: true, 0.7f);
			AddAnimation("SeeTinh", "SeeTinh", "", looping: false, dimAudio: true, sync: true, (LockType)1, "See Tình", "SeeTinh", "", DMCA: true, 0.7f);
			AddAnimation("VirtualInsanityIntro", "VirtualInsanityLoop", "VirtualInsanityStart", "VirtualInsanityLoop", looping: false, dimAudio: true, sync: true, (LockType)1, "Virtual Insanity", "VirtualInsanityStart", "VirtualInsanityLoop", DMCA: true, 0.5f);
			AddAnimation("Im a Mystery", "Im a Mystery Loop", "Im a Mystery", "Im a Mystery Loop", looping: true, dimAudio: true, sync: true, (LockType)1, "Im a Mystery", "Im a Mystery", "Im a Mystery Loop", DMCA: true, 0.5f);
			AddAnimation("Bird", "Bird", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Bird", "Bird", "", DMCA: false, 0.7f);
			AddAnimation("Real Slim Shady", "Real Slim Shady Loop", "Real Slim Shady", "Real Slim Shady Loop", looping: true, dimAudio: true, sync: true, (LockType)1, "Real Slim Shady", "Real Slim Shady", "Real Slim Shady Loop", DMCA: true, 0.7f);
			AddAnimation("Steady", "Steady", "", looping: true, dimAudio: true, sync: true, (LockType)1, "Steady", "Steady", "", DMCA: false, 0.7f);
			CustomEmotesAPI.animChanged += new AnimationChanged(CustomEmotesAPI_animChanged);
			CustomEmotesAPI.emoteSpotJoined_Body += new JoinedEmoteSpotBody(CustomEmotesAPI_emoteSpotJoined_Body);
			CustomEmotesAPI.emoteSpotJoined_Prop += new JoinedEmoteSpotProp(CustomEmotesAPI_emoteSpotJoined_Prop);
			CustomEmotesAPI.boneMapperCreated += new BoneMapperCreated(CustomEmotesAPI_boneMapperCreated);
		}

		private void CustomEmotesAPI_boneMapperCreated(BoneMapper mapper)
		{
		}

		private void CustomEmotesAPI_emoteSpotJoined_Prop(GameObject emoteSpot, BoneMapper joiner, BoneMapper host)
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Expected O, but got Unknown
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Expected O, but got Unknown
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Expected O, but got Unknown
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Expected O, but got Unknown
			switch (((Object)emoteSpot).name)
			{
			case "ifumiddle":
			{
				((Component)host).GetComponentsInChildren<Animator>()[1].SetTrigger("Start");
				joiner.PlayAnim("ifu", 0);
				GameObject val = new GameObject();
				((Object)val).name = "ifumiddle_JoinProp";
				IFU(joiner, host, emoteSpot, val);
				break;
			}
			case "ifeleft":
			{
				((Component)host).GetComponentsInChildren<Animator>()[1].SetTrigger("Start");
				joiner.PlayAnim("ifeleft", 0);
				GameObject val = new GameObject();
				((Object)val).name = "ifeleft_JoinProp";
				IFU(joiner, host, emoteSpot, val);
				break;
			}
			case "ifuright":
			{
				((Component)host).GetComponentsInChildren<Animator>()[1].SetTrigger("Start");
				joiner.PlayAnim("ifuright", 0);
				GameObject val = new GameObject();
				((Object)val).name = "ifuright_JoinProp";
				IFU(joiner, host, emoteSpot, val);
				break;
			}
			case "HydrolicPressJoinSpot":
			{
				GameObject val = new GameObject();
				((Object)val).name = "hydrolicpress_JoinProp";
				HydrolicPress(joiner, host, emoteSpot, val);
				break;
			}
			}
		}

		private void IFU(BoneMapper joiner, BoneMapper host, GameObject emoteSpot, GameObject g)
		{
		}

		private void HydrolicPress(BoneMapper joiner, BoneMapper host, GameObject emoteSpot, GameObject g)
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			joiner.props.Add(g);
			g.transform.SetParent(((Component)host).transform);
			g.transform.localPosition = new Vector3(0f, 0.03f, 0f);
			g.transform.localEulerAngles = Vector3.zero;
			g.transform.localScale = Vector3.one;
			g.AddComponent<HydrolicPressComponent>().boneMapper = joiner;
			joiner.AssignParentGameObject(g, true, false, true, false, false);
			emoteSpot.GetComponent<EmoteLocation>().SetEmoterAndHideLocation(joiner);
			((MonoBehaviour)this).StartCoroutine(WaitForSecondsThenEndEmote(joiner, 10f, g));
		}

		private IEnumerator WaitForSecondsThenEndEmote(BoneMapper mapper, float time, GameObject parent)
		{
			yield return (object)new WaitForSeconds(time);
			if (Object.op_Implicit((Object)(object)mapper) && (Object)(object)mapper.parentGameObject == (Object)(object)parent)
			{
				mapper.preserveProps = true;
				mapper.AssignParentGameObject(mapper.parentGameObject, false, false, true, false, false);
				mapper.preserveParent = true;
				mapper.preserveProps = true;
				mapper.PlayAnim("none", 0);
			}
		}

		internal IEnumerator WaitForSecondsThenDeleteGameObject(GameObject obj, float time)
		{
			yield return (object)new WaitForSeconds(time);
			if (Object.op_Implicit((Object)(object)obj))
			{
				Object.Destroy((Object)(object)obj);
			}
		}

		private void CustomEmotesAPI_emoteSpotJoined_Body(GameObject emoteSpot, BoneMapper joiner, BoneMapper host)
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Expected O, but got Unknown
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Expected O, but got Unknown
			//IL_0150: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Expected O, but got Unknown
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_022e: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Expected O, but got Unknown
			//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_03d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e6: Expected O, but got Unknown
			//IL_051a: Unknown result type (might be due to invalid IL or missing references)
			//IL_051f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0537: Unknown result type (might be due to invalid IL or missing references)
			//IL_0558: Unknown result type (might be due to invalid IL or missing references)
			//IL_056a: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c1: Expected O, but got Unknown
			//IL_0605: Unknown result type (might be due to invalid IL or missing references)
			//IL_0617: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Unknown result type (might be due to invalid IL or missing references)
			//IL_0679: Unknown result type (might be due to invalid IL or missing references)
			//IL_0680: Expected O, but got Unknown
			//IL_06a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_070d: Unknown result type (might be due to invalid IL or missing references)
			//IL_071f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0731: Unknown result type (might be due to invalid IL or missing references)
			//IL_0747: Unknown result type (might be due to invalid IL or missing references)
			string name = ((Object)emoteSpot).name;
			if (name == "StandingHereJoinSpot")
			{
				joiner.PlayAnim("StandingHere", 0);
				GameObject val = new GameObject();
				((Object)val).name = "StandingHereProp";
				joiner.props.Add(val);
				val.transform.SetParent(((Component)host).transform);
				Vector3 lossyScale = ((Component)host).transform.lossyScale;
				val.transform.localPosition = new Vector3(0f, 0f, 0.75f / lossyScale.z);
				val.transform.localEulerAngles = new Vector3(0f, 130f, 0f);
				val.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
				joiner.AssignParentGameObject(val, true, true, true, true, true);
				joiner.SetAnimationSpeed(2f);
				emoteSpot.GetComponent<EmoteLocation>().SetEmoterAndHideLocation(joiner);
			}
			if (name == "DuckThisJoinSpot")
			{
				joiner.PlayAnim("com.weliveinasociety.badasscompany__DuckThisOneJoin", 0);
				GameObject val2 = new GameObject();
				((Object)val2).name = "DuckThisOneJoinProp";
				joiner.props.Add(val2);
				val2.transform.SetParent(((Component)host).transform);
				Vector3 lossyScale2 = ((Component)host).transform.lossyScale;
				val2.transform.localPosition = new Vector3(0f, 0f, 1f / lossyScale2.z);
				val2.transform.localEulerAngles = new Vector3(0f, 180f, 0f);
				val2.transform.localScale = Vector3.one;
				joiner.AssignParentGameObject(val2, true, true, true, true, true);
				host.PlayAnim("com.weliveinasociety.badasscompany__DuckThisOne", 0);
				joiner.currentlyLockedBoneMapper = host;
				val2 = new GameObject();
				((Object)val2).name = "DuckThisOneHostProp";
				host.props.Add(val2);
				val2.transform.localPosition = ((Component)host).transform.position;
				val2.transform.localEulerAngles = ((Component)host).transform.eulerAngles;
				val2.transform.localScale = Vector3.one;
				val2.transform.SetParent(host.mapperBodyTransform.parent);
				host.AssignParentGameObject(val2, true, true, true, true, false);
			}
			if (name == "Yuki_Nagato")
			{
				joiner.PlayAnim("com.weliveinasociety.badasscompany__Yuki_Nagato", 0);
				DebugClass.Log((object)$"{joiner.currentClip != null}       {host.currentClip != null}");
				DebugClass.Log((object)$"{host.currentClip.syncPos}");
				DebugClass.Log((object)$"{joiner.currentClip.syncPos}");
				CustomAnimationClip.syncTimer[joiner.currentClip.syncPos] = CustomAnimationClip.syncTimer[host.currentClip.syncPos];
				CustomAnimationClip.syncPlayerCount[joiner.currentClip.syncPos]++;
				joiner.PlayAnim("com.weliveinasociety.badasscompany__Yuki_Nagato", 0);
				CustomAnimationClip.syncPlayerCount[joiner.currentClip.syncPos]--;
				GameObject val3 = new GameObject();
				((Object)val3).name = "Yuki_NagatoProp";
				joiner.props.Add(val3);
				val3.transform.SetParent(((Component)host).transform);
				Vector3 lossyScale3 = ((Component)host).transform.lossyScale;
				val3.transform.localPosition = new Vector3(0f, 0f, 0f);
				val3.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				val3.transform.localScale = Vector3.one;
				joiner.AssignParentGameObject(val3, true, true, true, true, true);
				joiner.currentlyLockedBoneMapper = host;
				emoteSpot.GetComponent<EmoteLocation>().SetEmoterAndHideLocation(joiner);
			}
			if (name == "Mikuru_Asahina")
			{
				joiner.PlayAnim("com.weliveinasociety.badasscompany__Mikuru_Asahina", 0);
				CustomAnimationClip.syncTimer[joiner.currentClip.syncPos] = CustomAnimationClip.syncTimer[host.currentClip.syncPos];
				CustomAnimationClip.syncPlayerCount[joiner.currentClip.syncPos]++;
				joiner.PlayAnim("com.weliveinasociety.badasscompany__Mikuru_Asahina", 0);
				CustomAnimationClip.syncPlayerCount[joiner.currentClip.syncPos]--;
				GameObject val4 = new GameObject();
				((Object)val4).name = "Mikuru_AsahinaProp";
				joiner.props.Add(val4);
				val4.transform.SetParent(((Component)host).transform);
				Vector3 lossyScale4 = ((Component)host).transform.lossyScale;
				val4.transform.localPosition = new Vector3(0f, 0f, 0f);
				val4.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				val4.transform.localScale = Vector3.one;
				joiner.AssignParentGameObject(val4, true, true, true, true, true);
				joiner.currentlyLockedBoneMapper = host;
				emoteSpot.GetComponent<EmoteLocation>().SetEmoterAndHideLocation(joiner);
			}
			if (name == "MyWorldJoinSpot")
			{
				joiner.PlayAnim("com.weliveinasociety.badasscompany__MyWorldJoin", 0);
				GameObject val5 = new GameObject();
				((Object)val5).name = "MyWorldJoinProp";
				joiner.props.Add(val5);
				val5.transform.SetParent(((Component)host).transform);
				val5.transform.localPosition = new Vector3(2f, 0f, 0f);
				val5.transform.localEulerAngles = Vector3.zero;
				val5.transform.localScale = Vector3.one;
				joiner.AssignParentGameObject(val5, true, true, true, true, true);
				joiner.currentlyLockedBoneMapper = host;
				emoteSpot.GetComponent<EmoteLocation>().SetEmoterAndHideLocation(joiner);
			}
			if (name == "VSWORLDJoinSpot")
			{
				joiner.PlayAnim("com.weliveinasociety.badasscompany__VSWORLDLEFT", 0);
				GameObject val6 = new GameObject();
				((Object)val6).name = "VSWORLDLEFTJoinProp";
				joiner.props.Add(val6);
				Vector3 localScale = ((Component)host).transform.parent.localScale;
				((Component)host).transform.parent.localScale = Vector3.one;
				val6.transform.SetParent(((Component)host).transform);
				val6.transform.localPosition = new Vector3(-2f, 0f, 0f);
				val6.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				val6.transform.localScale = Vector3.one * (host.scale / joiner.scale);
				((Component)host).transform.parent.localScale = localScale;
				joiner.AssignParentGameObject(val6, true, true, false, false, true);
				joiner.currentlyLockedBoneMapper = host;
				emoteSpot.GetComponent<EmoteLocation>().SetEmoterAndHideLocation(joiner);
			}
		}

		private void CustomEmotesAPI_animChanged(string newAnimation, BoneMapper mapper)
		{
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Expected O, but got Unknown
			//IL_00f1: 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_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0397: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0596: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0802: Unknown result type (might be due to invalid IL or missing references)
			//IL_0823: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a10: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d06: Expected O, but got Unknown
			//IL_0d2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d46: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d58: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c4f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c70: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cbf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e40: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fac: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fcd: Unknown result type (might be due to invalid IL or missing references)
			if (!newAnimation.StartsWith("com.weliveinasociety.badasscompany"))
			{
				return;
			}
			newAnimation = newAnimation.Split("__")[1];
			prop1 = -1;
			try
			{
				if (newAnimation != "none")
				{
					stand = mapper.currentClip.syncPos;
				}
			}
			catch (Exception)
			{
			}
			if (punchingMappers.Contains(mapper))
			{
				punchingMappers.Remove(mapper);
			}
			if (punchingMappers.Count == 0)
			{
			}
			if (newAnimation == "StandingHere")
			{
				punchingMappers.Add(mapper);
			}
			if (newAnimation == "StoodHere")
			{
				GameObject val = new GameObject();
				((Object)val).name = "StoodHereProp";
				mapper.props.Add(val);
				val.transform.localPosition = ((Component)mapper).transform.position;
				val.transform.localEulerAngles = ((Component)mapper).transform.eulerAngles;
				val.transform.localScale = Vector3.one;
				mapper.AssignParentGameObject(val, false, false, true, true, false);
			}
			if (newAnimation == "Chika" && Settings.chikaProp.Value)
			{
				prop1 = mapper.props.Count;
				GameObject val2 = ((Random.Range(0, 100) != 0) ? Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/prefabs/CSSDesker.prefab") : Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/models/desker.prefab"));
				mapper.props.Add(Object.Instantiate<GameObject>(val2));
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
			if (newAnimation == "Make it Rain" && Settings.moneyProp.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/money.prefab")));
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
			switch (newAnimation)
			{
			default:
				if (!(newAnimation == "GGGG"))
				{
					break;
				}
				goto case "Rivers in the Dessert";
			case "Rivers in the Dessert":
			case "Cirno":
			case "Hare Hare Yukai":
				if (Settings.desertlightProp.Value)
				{
					prop1 = mapper.props.Count;
					mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/desertlight.prefab")));
					mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
					mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
					mapper.props[prop1].transform.localPosition = Vector3.zero;
				}
				break;
			}
			if (newAnimation == "Step!")
			{
				prop1 = mapper.props.Count;
				GameObject val3 = Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/hondastuff.prefab"));
				ParticleSystem[] componentsInChildren = val3.GetComponentsInChildren<ParticleSystem>();
				foreach (ParticleSystem val4 in componentsInChildren)
				{
					val4.time = CustomAnimationClip.syncTimer[mapper.currentClip.syncPos];
				}
				Animator componentInChildren = val3.GetComponentInChildren<Animator>();
				componentInChildren.Play("MusicSync", 0, CustomAnimationClip.syncTimer[mapper.currentClip.syncPos] % ((AnimatorClipInfo)(ref componentInChildren.GetCurrentAnimatorClipInfo(0)[0])).clip.length / ((AnimatorClipInfo)(ref componentInChildren.GetCurrentAnimatorClipInfo(0)[0])).clip.length);
				val3.transform.SetParent(((Component)mapper).transform);
				val3.transform.localEulerAngles = Vector3.zero;
				val3.transform.localPosition = Vector3.zero;
				mapper.props.Add(val3);
			}
			if (newAnimation == "Train")
			{
				prop1 = mapper.props.Count;
				if (CustomAnimationClip.syncPlayerCount[stand] == 1)
				{
					mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/train.prefab")));
				}
				else
				{
					mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/passenger.prefab")));
				}
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.SetAutoWalk(1f, false);
				mapper.ScaleProps();
			}
			if (newAnimation == "Bim Bam Boom" && Settings.BimBamBomProp.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/BimBamBom.prefab")));
				ParticleSystem[] componentsInChildren2 = mapper.props[prop1].GetComponentsInChildren<ParticleSystem>();
				foreach (ParticleSystem val5 in componentsInChildren2)
				{
					val5.time = CustomAnimationClip.syncTimer[mapper.currentClip.syncPos];
				}
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
			if (newAnimation == "Summertime" && Settings.SummermogusProp.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:Assets/Prefabs/Summermogus.prefab")));
				Animator[] componentsInChildren3 = mapper.props[prop1].GetComponentsInChildren<Animator>();
				foreach (Animator val6 in componentsInChildren3)
				{
					val6.Play("Summertime", 0, CustomAnimationClip.syncTimer[mapper.currentClip.syncPos] % ((AnimatorClipInfo)(ref val6.GetCurrentAnimatorClipInfo(0)[0])).clip.length / ((AnimatorClipInfo)(ref val6.GetCurrentAnimatorClipInfo(0)[0])).clip.length);
				}
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
			if (newAnimation == "Float" && Settings.FloatLightProp.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/FloatLight.prefab")));
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
			if (newAnimation == "Markiplier" && Settings.Amogus.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/Amogus.prefab")));
				Animator[] componentsInChildren4 = mapper.props[prop1].GetComponentsInChildren<Animator>();
				foreach (Animator val7 in componentsInChildren4)
				{
					val7.Play("Markimogus", 0, CustomAnimationClip.syncTimer[mapper.currentClip.syncPos] % ((AnimatorClipInfo)(ref val7.GetCurrentAnimatorClipInfo(0)[0])).clip.length / ((AnimatorClipInfo)(ref val7.GetCurrentAnimatorClipInfo(0)[0])).clip.length);
				}
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
			if (newAnimation == "Officer Earl")
			{
				mapper.SetAutoWalk(1f, false);
			}
			if (newAnimation == "Virtual Insanity")
			{
				mapper.SetAutoWalk(0.2f, false);
			}
			if (newAnimation == "Move It")
			{
				mapper.SetAutoWalk(0.2f, false);
			}
			if (newAnimation == "Spring Loaded")
			{
				mapper.SetAutoWalk(-1f, false);
			}
			if (newAnimation == "Samus Crawl")
			{
				mapper.SetAutoWalk(0.5f, false);
			}
			if (newAnimation == "Duck This One")
			{
			}
			if (newAnimation == "Full Tilt")
			{
				mapper.SetAutoWalk(1f, false);
			}
			if (newAnimation == "Cartwheelin")
			{
				mapper.SetAutoWalk(0.75f, false);
			}
			if (newAnimation == "Ralsei Dies" && Settings.BluntAnimatorProp.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/BluntAnimator.prefab")));
				Animator[] componentsInChildren5 = mapper.props[prop1].GetComponentsInChildren<Animator>();
				foreach (Animator val8 in componentsInChildren5)
				{
					val8.Play("Blunt", 0, CustomAnimationClip.syncTimer[mapper.currentClip.syncPos] % ((AnimatorClipInfo)(ref val8.GetCurrentAnimatorClipInfo(0)[0])).clip.length / ((AnimatorClipInfo)(ref val8.GetCurrentAnimatorClipInfo(0)[0])).clip.length);
				}
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				ParticleSystem componentInChildren2 = mapper.props[prop1].GetComponentInChildren<ParticleSystem>();
				componentInChildren2.gravityModifier *= mapper.scale;
				LimitVelocityOverLifetimeModule limitVelocityOverLifetime = mapper.props[prop1].GetComponentInChildren<ParticleSystem>().limitVelocityOverLifetime;
				((LimitVelocityOverLifetimeModule)(ref limitVelocityOverLifetime)).dampen = ((LimitVelocityOverLifetimeModule)(ref limitVelocityOverLifetime)).dampen * mapper.scale;
				((LimitVelocityOverLifetimeModule)(ref limitVelocityOverLifetime)).limitMultiplier = mapper.scale;
				mapper.ScaleProps();
			}
			if (newAnimation == "Hare Hare Yukai")
			{
				GameObject val9 = new GameObject();
				((Object)val9).name = "HaruhiProp";
				mapper.props.Add(val9);
				val9.transform.localPosition = ((Component)mapper).transform.position;
				val9.transform.localEulerAngles = ((Component)mapper).transform.eulerAngles;
				val9.transform.localScale = Vector3.one;
				mapper.AssignParentGameObject(val9, false, false, true, true, false);
			}
			if (newAnimation == "Last Surprise" && (Object)(object)mapper != (Object)(object)CustomEmotesAPI.localMapper && Settings.neverseeProp.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/prefabs/neversee.prefab")));
				mapper.props[prop1].transform.SetParent(((Component)mapper).gameObject.GetComponent<Animator>().GetBoneTransform((HumanBodyBones)7));
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
			if (newAnimation == "IFU Stage")
			{
			}
			if (newAnimation == "Hydraulic Press")
			{
			}
			if (newAnimation == "Im a Mystery" && Settings.desertlightProp.Value)
			{
				prop1 = mapper.props.Count;
				mapper.props.Add(Object.Instantiate<GameObject>(Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/Im a Mystery.prefab")));
				Animator componentInChildren3 = mapper.props[prop1].GetComponentInChildren<Animator>();
				if (CustomAnimationClip.syncTimer[mapper.currentClip.syncPos] < 0.4f)
				{
					componentInChildren3.Play("Mystery Model Intro", 0, CustomAnimationClip.syncTimer[mapper.currentClip.syncPos] % 0.4f / 0.4f);
				}
				else
				{
					componentInChildren3.Play("Mstery Model", 0, (CustomAnimationClip.syncTimer[mapper.currentClip.syncPos] - 0.4f) % 7.333f / 7.333f);
				}
				mapper.props[prop1].transform.SetParent(((Component)mapper).transform);
				mapper.props[prop1].transform.localEulerAngles = Vector3.zero;
				mapper.props[prop1].transform.localPosition = Vector3.zero;
				mapper.ScaleProps();
			}
		}

		internal void AddAnimation(string AnimClip, AudioClip[] startClips, AudioClip[] loopClips, bool looping, bool dimAudio, bool sync, LockType lockType, string customName, AudioClip[] dmcaStartClips, AudioClip[] dmcaLoopClips, bool DMCA, float audio)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Expected O, but got Unknown
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			if (customName == "")
			{
				customName = ((Object)Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim")).name;
			}
			CustomEmoteParams val = new CustomEmoteParams();
			val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim") };
			val.audioLoops = looping;
			val.primaryAudioClips = startClips;
			val.secondaryAudioClips = loopClips;
			val.syncAnim = sync;
			val.syncAudio = sync;
			val.lockType = lockType;
			val.internalName = customName;
			val.primaryDMCAFreeAudioClips = dmcaStartClips;
			val.secondaryDMCAFreeAudioClips = dmcaLoopClips;
			val.willGetClaimedByDMCA = DMCA;
			val.audioLevel = audio;
			val.displayName = customName;
			EmoteImporter.ImportEmote(val);
		}

		internal void AddAnimation(string AnimClip, string startClip, string loopClip, bool looping, bool dimAudio, bool sync, LockType lockType, string customName, string dmcaStartClip, string dmcaLoopClip, bool DMCA, float audio)
		{
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Expected O, but got Unknown
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			if (customName == "")
			{
				customName = ((Object)Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim")).name;
			}
			AudioClip[] primaryAudioClips = (AudioClip[])(object)((!(startClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/" + startClip + ".ogg") } : null);
			AudioClip[] secondaryAudioClips = (AudioClip[])(object)((!(loopClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/" + loopClip + ".ogg") } : null);
			AudioClip[] primaryDMCAFreeAudioClips = (AudioClip[])(object)((!(dmcaStartClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/" + dmcaStartClip + "_NNTranscription.ogg") } : null);
			AudioClip[] secondaryDMCAFreeAudioClips = (AudioClip[])(object)((!(dmcaLoopClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/" + dmcaLoopClip + "_NNTranscription.ogg") } : null);
			CustomEmoteParams val = new CustomEmoteParams();
			val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim") };
			val.audioLoops = looping;
			val.primaryAudioClips = primaryAudioClips;
			val.secondaryAudioClips = secondaryAudioClips;
			val.syncAnim = sync;
			val.syncAudio = sync;
			val.lockType = lockType;
			val.internalName = customName;
			val.primaryDMCAFreeAudioClips = primaryDMCAFreeAudioClips;
			val.secondaryDMCAFreeAudioClips = secondaryDMCAFreeAudioClips;
			val.willGetClaimedByDMCA = DMCA;
			val.audioLevel = audio;
			val.displayName = customName;
			EmoteImporter.ImportEmote(val);
		}

		internal void AddAnimation(string AnimClip, string AnimClip2, string startClip, string loopClip, bool looping, bool dimAudio, bool sync, LockType lockType, string customName, string dmcaStartClip, string dmcaLoopClip, bool DMCA, float audio)
		{
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Expected O, but got Unknown
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			if (customName == "")
			{
				customName = ((Object)Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim")).name;
			}
			AudioClip[] primaryAudioClips = (AudioClip[])(object)((!(startClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/" + startClip + ".ogg") } : null);
			AudioClip[] secondaryAudioClips = (AudioClip[])(object)((!(loopClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/" + loopClip + ".ogg") } : null);
			AudioClip[] primaryDMCAFreeAudioClips = (AudioClip[])(object)((!(dmcaStartClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/" + dmcaStartClip + "_NNTranscription.ogg") } : null);
			AudioClip[] secondaryDMCAFreeAudioClips = (AudioClip[])(object)((!(dmcaLoopClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/" + dmcaLoopClip + "_NNTranscription.ogg") } : null);
			CustomEmoteParams val = new CustomEmoteParams();
			val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim") };
			val.secondaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip2 + ".anim") };
			val.audioLoops = looping;
			val.primaryAudioClips = primaryAudioClips;
			val.secondaryAudioClips = secondaryAudioClips;
			val.syncAnim = sync;
			val.syncAudio = sync;
			val.lockType = lockType;
			val.internalName = customName;
			val.primaryDMCAFreeAudioClips = primaryDMCAFreeAudioClips;
			val.secondaryDMCAFreeAudioClips = secondaryDMCAFreeAudioClips;
			val.willGetClaimedByDMCA = DMCA;
			val.audioLevel = audio;
			val.displayName = customName;
			EmoteImporter.ImportEmote(val);
		}

		internal void AddAnimation(string AnimClip, string[] startClip, bool looping, bool dimaudio, bool sync, LockType lockType, string customName, string[] dmcaStartClips, bool DMCA, float audio)
		{
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Expected O, but got Unknown
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			if (customName == "")
			{
				customName = ((Object)Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim")).name;
			}
			List<AudioClip> list = new List<AudioClip>();
			foreach (string text in startClip)
			{
				list.Add(Assets.Load<AudioClip>("assets/compressedaudio/" + text + ".ogg"));
			}
			List<AudioClip> list2 = new List<AudioClip>();
			foreach (string text2 in dmcaStartClips)
			{
				if (text2 == "")
				{
					list2.Add(null);
				}
				else
				{
					list2.Add(Assets.Load<AudioClip>("assets/DMCAMusic/" + text2 + "_NNTranscription.ogg"));
				}
			}
			CustomEmoteParams val = new CustomEmoteParams();
			val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip + ".anim") };
			val.audioLoops = looping;
			val.primaryAudioClips = list.ToArray();
			val.secondaryAudioClips = null;
			val.syncAnim = sync;
			val.syncAudio = sync;
			val.lockType = lockType;
			val.internalName = customName;
			val.primaryDMCAFreeAudioClips = list2.ToArray();
			val.willGetClaimedByDMCA = DMCA;
			val.audioLevel = audio;
			val.displayName = customName;
			EmoteImporter.ImportEmote(val);
		}

		internal void AddStartAndJoinAnim(string[] AnimClip, string startClip, bool looping, bool dimaudio, bool sync, LockType lockType, string customName, string dmcaStartClip, bool DMCA, float audio)
		{
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Expected O, but got Unknown
			if (customName == "")
			{
				customName = ((Object)Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip[0] + ".anim")).name;
			}
			AudioClip[] primaryAudioClips = (AudioClip[])(object)((!(startClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/" + startClip + ".ogg") } : null);
			AudioClip[] primaryDMCAFreeAudioClips = (AudioClip[])(object)((!(dmcaStartClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/DMCAMusic/" + dmcaStartClip + "_NNTranscription.ogg") } : null);
			List<AnimationClip> list = new List<AnimationClip>();
			foreach (string text in AnimClip)
			{
				list.Add(Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + text + ".anim"));
			}
			EmoteImporter.ImportEmote(new CustomEmoteParams
			{
				primaryAnimationClips = list.ToArray(),
				audioLoops = looping,
				primaryAudioClips = primaryAudioClips,
				secondaryAudioClips = null,
				syncAnim = sync,
				syncAudio = sync,
				startPref = 0,
				joinPref = 1,
				lockType = lockType,
				internalName = customName,
				primaryDMCAFreeAudioClips = primaryDMCAFreeAudioClips,
				willGetClaimedByDMCA = DMCA,
				audioLevel = audio,
				displayName = customName
			});
		}

		internal void AddStartAndJoinAnim(string[] AnimClip, string startClip, string[] AnimClip2, bool looping, bool dimaudio, bool sync, LockType lockType, string customName, string dmcaStartClip, bool DMCA, float audio)
		{
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Expected O, but got Unknown
			if (customName == "")
			{
				customName = ((Object)Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/badassemotes/" + AnimClip[0] + ".anim")).name;
			}
			AudioClip[] primaryAudioClips = (AudioClip[])(object)((!(startClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/" + startClip + ".ogg") } : null);
			AudioClip[] primaryDMCAFreeAudioClips = (AudioClip[])(object)((!(dmcaStartClip == "")) ? new AudioClip[1] { Assets.Load<AudioClip>("assets/compressedaudio/" + dmcaStartClip + ".ogg") } : null);
			List<AnimationClip> list = new List<AnimationClip>();
			foreach (string text in AnimClip)
			{
				list.Add(Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/DMCAMusic/" + text + "_NNTranscription.anim"));
			}
			List<AnimationClip> list2 = new List<AnimationClip>();
			foreach (string text2 in AnimClip2)
			{
				list2.Add(Assets.Load<AnimationClip>("@ExampleEmotePlugin_badassemotes:assets/DMCAMusic/" + text2 + "_NNTranscription.anim"));
			}
			EmoteImporter.ImportEmote(new CustomEmoteParams
			{
				primaryAnimationClips = list.ToArray(),
				secondaryAnimationClips = list2.ToArray(),
				audioLoops = looping,
				primaryAudioClips = primaryAudioClips,
				syncAnim = sync,
				syncAudio = sync,
				startPref = 0,
				joinPref = 1,
				lockType = lockType,
				internalName = customName,
				primaryDMCAFreeAudioClips = primaryDMCAFreeAudioClips,
				willGetClaimedByDMCA = DMCA,
				audioLevel = audio,
				displayName = customName
			});
		}
	}
	internal class HydrolicPressComponent : MonoBehaviour
	{
		private bool crushPlayer = false;

		private Transform pressTransform;

		internal BoneMapper boneMapper;

		private bool compressing = true;

		private Vector3 currentScale;

		private float doNotRevert;

		private bool spawnedFeathers = false;

		private void Start()
		{
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			((MonoBehaviour)this).StartCoroutine(CrushAfterSeconds(3.5f));
			pressTransform = BadAssEmotesPlugin.pressMechanism.transform.Find("press");
			BadAssEmotesPlugin.pressMechanism.transform.localScale = new Vector3(boneMapper.scale, boneMapper.scale, boneMapper.scale);
		}

		private void Update()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: 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_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: 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)
			if (((Component)this).transform.localScale.y > 0.01f && compressing)
			{
				if (crushPlayer)
				{
					((Component)this).transform.localScale = new Vector3(((Component)this).transform.localScale.x + 0.16f * Time.deltaTime, ((Component)this).transform.localScale.y - 0.16f * Time.deltaTime, ((Component)this).transform.localScale.z + 0.16f * Time.deltaTime);
				}
				pressTransform.localScale = new Vector3(pressTransform.localScale.x, pressTransform.localScale.y, pressTransform.localScale.z + 0.154f * Time.deltaTime);
				if (!spawnedFeathers && ((Component)this).transform.localScale.y < 0.107f)
				{
					int count = boneMapper.props.Count;
					GameObject val = Assets.Load<GameObject>("@BadAssEmotes_badassemotes:assets/Prefabs/explosion press.prefab");
					boneMapper.props.Add(Object.Instantiate<GameObject>(val));
					boneMapper.props[count].transform.SetParent(((Component)boneMapper).transform);
					boneMapper.props[count].transform.localEulerAngles = new Vector3(270f, 0f, 0f);
					boneMapper.props[count].transform.localPosition = Vector3.zero;
					boneMapper.props[count].transform.SetParent((Transform)null);
					boneMapper.props[count].transform.localScale = new Vector3(boneMapper.scale, boneMapper.scale, boneMapper.scale);
					((MonoBehaviour)BadAssEmotesPlugin.instance).StartCoroutine(BadAssEmotesPlugin.instance.WaitForSecondsThenDeleteGameObject(boneMapper.props[count], 10f));
					boneMapper.props.RemoveAt(count);
					spawnedFeathers = true;
				}
				if (((Component)this).transform.localScale.y < 0.01f)
				{
					compressing = false;
					((Component)this).transform.localScale = new Vector3(((Component)this).transform.localScale.x, 0.01f, ((Compo