Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of MrAntTennaEmoteMod v1.0.1
plugins/MrAntTennaEmoteModProject.dll
Decompiled 9 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using EmotesAPI; using LethalEmotesAPI.ImportV2; using Lethal_Company_MrAntTennaEmotes_Project; using Microsoft.CodeAnalysis; using MrAntTennaEmotes_Project; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("MrAntTennaEmoteMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MrAntTennaEmoteMod")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("199912ba-43b6-4276-b420-7bfaa3eedbe5")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyInformationalVersion("1.0.0")] [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; } } } namespace Lethal_Company_MrAntTennaEmotes_Project { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.craftyrhys05.MrAntTennaEmotes", "MrAntTennaEmotes", "1.0.0")] public class MrAntTennasEmotes : BaseUnityPlugin { public const string PluginGUID = "com.craftyrhys05.MrAntTennaEmotes"; public const string PluginName = "MrAntTennaEmotes"; public const string PluginVersion = "1.0.0"; public static MrAntTennasEmotes instance; public static PluginInfo PInfo { get; private set; } public void Awake() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Expected O, but got Unknown //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Expected O, but got Unknown instance = this; PInfo = ((BaseUnityPlugin)this).Info; Assets.LoadAssetBundlesFromFolder("assetbundles"); CustomEmoteParams val = new CustomEmoteParams(); val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("tennadance_loop.anim") }; val.secondaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("tennadance_loop.anim") }; val.audioLoops = true; val.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("tennaintro.ogg") }; val.secondaryAudioClips = null; val.primaryDMCAFreeAudioClips = null; val.secondaryDMCAFreeAudioClips = null; val.visible = true; val.syncAnim = true; val.syncAudio = true; val.startPref = -1; val.joinPref = -1; val.joinSpots = null; val.internalName = "SillyTennaDance"; val.lockType = (LockType)1; val.willGetClaimedByDMCA = false; val.audioLevel = 0.3f; val.rootBonesToIgnore = null; val.soloBonesToIgnore = null; val.stopWhenMove = false; val.thirdPerson = true; val.displayName = "Silly Tenna Dance"; EmoteImporter.ImportEmote(val); val = new CustomEmoteParams(); val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("tennaswing_loop.anim") }; val.secondaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("tennaswing_loop.anim") }; val.audioLoops = true; val.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("tennaintro.ogg") }; val.secondaryAudioClips = null; val.primaryDMCAFreeAudioClips = null; val.secondaryDMCAFreeAudioClips = null; val.visible = true; val.syncAnim = true; val.syncAudio = true; val.startPref = -1; val.joinPref = -1; val.joinSpots = null; val.internalName = "SwingTennaDance"; val.lockType = (LockType)1; val.willGetClaimedByDMCA = false; val.audioLevel = 0.3f; val.rootBonesToIgnore = null; val.soloBonesToIgnore = null; val.stopWhenMove = false; val.thirdPerson = true; val.displayName = "Swing Tenna Dance"; EmoteImporter.ImportEmote(val); val = new CustomEmoteParams(); val.primaryAnimationClips = (AnimationClip[])(object)new AnimationClip[1] { Assets.Load<AnimationClip>("tennakick_start.anim") }; val.secondaryAnimationClips = null; val.audioLoops = false; val.primaryAudioClips = (AudioClip[])(object)new AudioClip[1] { Assets.Load<AudioClip>("snd_whip_hard.ogg") }; val.secondaryAudioClips = null; val.primaryDMCAFreeAudioClips = null; val.secondaryDMCAFreeAudioClips = null; val.visible = true; val.syncAnim = false; val.syncAudio = false; val.startPref = -1; val.joinPref = -1; val.joinSpots = null; val.internalName = "MMATennaKick"; val.lockType = (LockType)1; val.willGetClaimedByDMCA = false; val.audioLevel = 0.3f; val.rootBonesToIgnore = null; val.soloBonesToIgnore = null; val.stopWhenMove = true; val.thirdPerson = true; val.displayName = "MMA Tenna Kick"; EmoteImporter.ImportEmote(val); CustomEmotesAPI.animChanged += new AnimationChanged(CustomEmotesAPI_animChanged); } private void CustomEmotesAPI_animChanged(string newAnimation, BoneMapper mapper) { if (newAnimation.StartsWith("com.craftyrhys05.MrAntTennaEmotes")) { newAnimation = newAnimation.Split("__")[1]; } } } } namespace MrAntTennaEmotes_Project { public static class Assets { internal static readonly List<AssetBundle> AssetBundles = new List<AssetBundle>(); private static readonly Dictionary<string, int> AssetIndices = new Dictionary<string, int>(); public static void LoadAssetBundlesFromFolder(string folderName) { folderName = Path.Combine(Path.GetDirectoryName(MrAntTennasEmotes.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))); } } public 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); } } } }