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 LethalPony v1.1.0
BepInEx/plugins/LethalPony.dll
Decompiled 2 years agousing System; 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 BepInEx; using BepInEx.Configuration; using HarmonyLib; using Microsoft.CodeAnalysis; using ModelReplacement; 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: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: AssemblyCompany("LethalPony")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+e1385d7a00d82b5d975710dfef1d14b1ea462d0f")] [assembly: AssemblyProduct("LethalPony")] [assembly: AssemblyTitle("LethalPony")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace LethalPony { public class PonyRarityReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "rarityPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(29, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(44, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(49, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(58, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(60, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(83, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(84, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(25, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(45, 0f); if (emoteId == 1) { base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(83, 100f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(84, 100f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(25, 60f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(45, 100f); } if (emoteId == 2) { base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(29, 100f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(44, 100f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(49, 100f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(58, 100f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(60, 70f); } } protected override void OnEmoteEnd() { base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(83, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(84, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(25, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(45, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(29, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(44, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(49, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(58, 0f); base.replacementModel.GetComponentInChildren<SkinnedMeshRenderer>().SetBlendShapeWeight(60, 0f); } } public class PonyApplejackReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "applejackPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyTwilightReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "twilightPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyAnonfillyReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "anonfillyPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyBraeburnReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "braeburnPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyChangelingReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "changelingPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyEchoReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "echoPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyFluttershyReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "fluttershyPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyLyraReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "lyraPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyPinkieReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "pinkiePrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyRainbowDashReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "rainbowdashPrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonySpitfireReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "spitfirePrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } public class PonyTrixieReplacement : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "trixiePrefab"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } protected override void OnEmoteStart(int emoteId) { throw new NotImplementedException(); } protected override void OnEmoteEnd() { throw new NotImplementedException(); } } [BepInPlugin("blud.PonyModelReplacement", "Pony Models", "1.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public static ConfigFile config; public static ConfigEntry<bool> enableApplejackAsDefault { get; private set; } public static ConfigEntry<float> UpdateRate { get; private set; } public static ConfigEntry<float> distanceDisablePhysics { get; private set; } public static ConfigEntry<bool> disablePhysicsAtRange { get; private set; } private static void InitConfig() { enableApplejackAsDefault = config.Bind<bool>("Suits to Replace Settings", "Enable Applejack as default", false, "Enable to replace every suit that hasn't been otherwise registered with Applejack."); UpdateRate = config.Bind<float>("Dynamic Bone Settings", "Update rate", 60f, "Refreshes dynamic bones more times per second the higher the number"); disablePhysicsAtRange = config.Bind<bool>("Dynamic Bone Settings", "Disable physics at range", false, "Enable to disable physics past the specified range"); distanceDisablePhysics = config.Bind<float>("Dynamic Bone Settings", "Distance to disable physics", 20f, "If Disable physics at range is enabled, this is the range after which physics is disabled."); } private void Awake() { //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Expected O, but got Unknown config = ((BaseUnityPlugin)this).Config; InitConfig(); Assets.PopulateAssets(); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Applejack", typeof(PonyApplejackReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Braeburn", typeof(PonyBraeburnReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Rarity", typeof(PonyRarityReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Changeling", typeof(PonyChangelingReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Echo", typeof(PonyEchoReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Fluttershy", typeof(PonyFluttershyReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Lyra", typeof(PonyLyraReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Pinkie", typeof(PonyPinkieReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Rainbow Dash", typeof(PonyRainbowDashReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Rarity Dash", typeof(PonyRarityReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Spitfire", typeof(PonySpitfireReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Trixie", typeof(PonyTrixieReplacement)); ModelReplacementAPI.RegisterSuitModelReplacement("Pony Twilight", typeof(PonyTwilightReplacement)); if (enableApplejackAsDefault.Value) { ModelReplacementAPI.RegisterModelReplacementDefault(typeof(PonyApplejackReplacement)); } Harmony val = new Harmony("blud.LethalPony"); val.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin blud.LethalPony is loaded!"); } } public static class Assets { public static string mainAssetBundleName = "ponyBundle"; public static AssetBundle MainAssetBundle = null; private static string GetAssemblyName() { return Assembly.GetExecutingAssembly().GetName().Name; } public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { Console.WriteLine(GetAssemblyName() + "." + mainAssetBundleName); using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetAssemblyName() + "." + mainAssetBundleName); MainAssetBundle = AssetBundle.LoadFromStream(stream); } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }