Decompiled source of Chocobo Getaway Cosmetics v1.5.4

KoopaTheQuiccModelPack.dll

Decompiled 3 weeks ago
using 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 KoopaTheQuiccModelPack.Replacements;
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("KoopaTheQuiccModelPack")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("KoopaTheQuiccModelPack")]
[assembly: AssemblyTitle("KoopaTheQuiccModelPack")]
[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 KoopaTheQuiccModelPack
{
	[BepInPlugin("com.KoopaTheQuicc.KtQModelPack", "KoopaTheQuiccModelPack", "1.3.1")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public static ConfigFile config;

		public static ConfigEntry<bool> enableJigglePhysics { get; private set; }

		private static void InitConfig()
		{
			enableJigglePhysics = config.Bind<bool>("Settings", "Enable Jiggle Physics", false, "Enables jiggle physics for some models. Disable for better performance.");
		}

		private void Awake()
		{
			//IL_0634: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Expected O, but got Unknown
			config = ((BaseUnityPlugin)this).Config;
			InitConfig();
			Assets.PopulateAssets();
			ModelReplacementAPI.RegisterSuitModelReplacement("Koopa", typeof(KoopaTroopaReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("NTropy", typeof(NTropyReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("BigBoss", typeof(BigBossReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("Eustace", typeof(EustaceReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("Knuckles", typeof(KnucklesReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("Waluigi", typeof(WaluigiReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("Bowser", typeof(BowserReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("CocoRetro", typeof(CocoRetroReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("CourtneyBackup", typeof(CourtneyBackupReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("CourtneyGears", typeof(CourtneyGearsReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("DaisyStrikers", typeof(DaisyStrikersReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("FunkyKong", typeof(FunkyKongReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("LankyKong", typeof(LankyKongReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("ChunkyKong", typeof(ChunkyKongReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("NTropyIAT", typeof(NTropyIATReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("RosalinaSwim", typeof(RosalinaSwimReplacement));
			ModelReplacementAPI.RegisterSuitModelReplacement("UgandanKnuckles", typeof(UgandanKnucklesReplacement));
			if (enableJigglePhysics.Value)
			{
				ModelReplacementAPI.RegisterSuitModelReplacement("Rouge", typeof(RougeJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("RougeHeroes", typeof(RougeHeroesJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Midna", typeof(MidnaJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Liz", typeof(LizBandicootJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Minun", typeof(MinunJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Tawna", typeof(TawnaJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("TawnaCursed", typeof(TawnaCursedJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("TomCat", typeof(TomCatJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Tails", typeof(MilesProwerJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Coco", typeof(CocoBandicootJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("ToonLink", typeof(ToonLinkJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Krystal", typeof(KrystalJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Carmelita", typeof(CarmelitaJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Dimitri", typeof(DimitriJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Pasadena", typeof(PasadenaJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Hunter", typeof(HunterJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DaisyBiker", typeof(DaisyBikerJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Dingodile", typeof(DingodileJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DingodileIAT", typeof(DingodileIATJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DixieKong", typeof(DixieKongJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DonkeyKong", typeof(DonkeyKongJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Lickitung", typeof(LickitungJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("LizNitro", typeof(LizNitroJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("NTropyFem", typeof(NTropyFemJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Slowbro", typeof(SlowbroJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("TinyKong", typeof(TinyKongJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("SamusZeroSuit", typeof(SamusZeroSuitJiggleReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("CaptainQuark", typeof(CaptQuarkJiggleReplacement));
			}
			else
			{
				ModelReplacementAPI.RegisterSuitModelReplacement("Rouge", typeof(RougeReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("RougeHeroes", typeof(RougeHeroesReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Midna", typeof(MidnaReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Liz", typeof(LizBandicootReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Minun", typeof(MinunReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Tawna", typeof(TawnaReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("TawnaCursed", typeof(TawnaCursedReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("TomCat", typeof(TomCatReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Tails", typeof(MilesProwerReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Coco", typeof(CocoBandicootReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("ToonLink", typeof(ToonLinkReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Krystal", typeof(KrystalReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Carmelita", typeof(CarmelitaReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Dimitri", typeof(DimitriReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Pasadena", typeof(PasadenaReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Hunter", typeof(HunterReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DaisyBiker", typeof(DaisyBikerReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Dingodile", typeof(DingodileReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DingodileIAT", typeof(DingodileIATReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DixieKong", typeof(DixieKongReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("DonkeyKong", typeof(DonkeyKongReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Lickitung", typeof(LickitungReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("LizNitro", typeof(LizNitroReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("NTropyFem", typeof(NTropyFemReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("Slowbro", typeof(SlowbroReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("TinyKong", typeof(TinyKongReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("SamusZeroSuit", typeof(SamusZeroSuitReplacement));
				ModelReplacementAPI.RegisterSuitModelReplacement("CaptainQuark", typeof(CaptQuarkReplacement));
			}
			Harmony val = new Harmony("com.KoopaTheQuicc.KtQModelPack");
			val.PatchAll();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin com.KoopaTheQuicc.KtQModelPack is loaded!");
		}
	}
	public static class Assets
	{
		public static string mainAssetBundleName = "koopathequiccbundle";

		public static AssetBundle MainAssetBundle = null;

		private static string GetAssemblyName()
		{
			return Assembly.GetExecutingAssembly().GetName().Name.Replace(" ", "_");
		}

		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 KoopaTheQuiccModelPack.Replacements
{
	public class RougeHeroesReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "RougeHeroesPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class RougeHeroesJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "RougeHeroesPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class RougeReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "RougePrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class RougeJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "RougePrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class KoopaTroopaReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "KoopaTroopaPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LizBandicootReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "LizBandicootPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LizBandicootJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "LizBandicootPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MidnaReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MidnaPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MidnaJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MidnaPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class NTropyReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "NTropyPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class BigBossReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "BigBossPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MinunReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MinunPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MinunJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MinunPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TawnaReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TawnaPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TawnaJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TawnaPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TawnaCursedReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TawnaCursedPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TawnaCursedJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TawnaCursedPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class EustaceReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "EustaceBaggePrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TomCatReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TomCatPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TomCatJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TomCatPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MilesProwerReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MilesTailsProwerPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MilesProwerJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MilesTailsProwerPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CocoBandicootReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CocoBandicootPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CocoBandicootJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CocoBandicootPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class KnucklesReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "KnucklesPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class WaluigiReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "WaluigiPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class ToonLinkReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "ToonLinkPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class ToonLinkJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "ToonLinkPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class KrystalReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "KrystalPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class KrystalJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "KrystalPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CarmelitaReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CarmelitaPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CarmelitaJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CarmelitaPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DimitriReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DimitriPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DimitriJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DimitriPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class PasadenaReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "PasadenaPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class PasadenaJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "PasadenaPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class HunterReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "HunterPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class HunterJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "HunterPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class BowserReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "BowserPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class ChunkyKongReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "ChunkyKongPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CocoRetroReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CocoRetroPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CourtneyBackupReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CourtneyBackupPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CourtneyGearsReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CourtneyGearsPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DaisyBikerReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DaisyBikerPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DaisyBikerJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DaisyBikerPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DaisyStrikersReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DaisyStrikersPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DingodileReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DingodilePrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DingodileJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DingodilePrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DingodileIATReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DingodileIATPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DingodileIATJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DingodileIATPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DixieKongReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DixieKongPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DixieKongJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DixieKongPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DonkeyKongReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DonkeyKongPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class DonkeyKongJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "DonkeyKongPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class FunkyKongReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "FunkyKongPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LankyKongReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "LankyKongPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LickitungReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "LickitungPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LickitungJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "LickitungPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LizNitroReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "LizNitroPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LizNitroJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "LizNitroPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class NTropyIATReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "NTropyIATPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class NTropyFemReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "NTropyFemalePrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class NTropyFemJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "NTropyFemalePrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class RosalinaSwimReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "RosalinaSwimPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SlowbroReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "SlowbroPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SlowbroJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "SlowbroPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TinyKongReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TinyKongPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class TinyKongJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "TinyKongPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class UgandanKnucklesReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "UgandanKnucklesPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SamusZeroSuitReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "ZeroSuitSamusPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SamusZeroSuitJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "ZeroSuitSamusPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CaptQuarkReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CaptainQuarkPrefab";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class CaptQuarkJiggleReplacement : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "CaptainQuarkPrefabJiggle";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}

spongebobmodels.dll

Decompiled 3 weeks ago
using 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 HarmonyLib;
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: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: AssemblyCompany("spongebobmodels")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("spongebobmodels")]
[assembly: AssemblyTitle("spongebobmodels")]
[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 ModelReplacement
{
	public class PLANKTON : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "Plankton";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class BARNACLEBOY : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "BarnacleBoy";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SPONGEBOB : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "SpongeBob";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SANDYBIKINI : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "SandyBikini";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class LARRY : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "Larry";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SANDY : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "Sandy";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class PATRICK : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "Patrick";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MERMAIDMAN : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MermaidMan";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class SQUIDWARD : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "Squidward";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class MRKRABS : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "MrKrabs";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class PLANKTONGIANT : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "PlanktonGiant";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	public class BUBBLEBUDDY : BodyReplacementBase
	{
		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "BubbleBuddy";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}
	}
	[BepInPlugin("com.robinkc.spongebobsuits", "SpongeBobSuits", "0.1.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		private void Awake()
		{
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Expected O, but got Unknown
			Assets.PopulateAssets();
			ModelReplacementAPI.RegisterSuitModelReplacement("SpongeBob", typeof(SPONGEBOB));
			ModelReplacementAPI.RegisterSuitModelReplacement("Patrick", typeof(PATRICK));
			ModelReplacementAPI.RegisterSuitModelReplacement("Squidward", typeof(SQUIDWARD));
			ModelReplacementAPI.RegisterSuitModelReplacement("Sandy", typeof(SANDY));
			ModelReplacementAPI.RegisterSuitModelReplacement("MrKrabs", typeof(MRKRABS));
			ModelReplacementAPI.RegisterSuitModelReplacement("Plankton", typeof(PLANKTON));
			ModelReplacementAPI.RegisterSuitModelReplacement("Larry", typeof(LARRY));
			ModelReplacementAPI.RegisterSuitModelReplacement("MermaidMan", typeof(MERMAIDMAN));
			ModelReplacementAPI.RegisterSuitModelReplacement("BarnacleBoy", typeof(BARNACLEBOY));
			ModelReplacementAPI.RegisterSuitModelReplacement("SandyBikini", typeof(SANDYBIKINI));
			ModelReplacementAPI.RegisterSuitModelReplacement("PlanktonGiant", typeof(PLANKTONGIANT));
			ModelReplacementAPI.RegisterSuitModelReplacement("BubbleBuddy", typeof(BUBBLEBUDDY));
			Harmony val = new Harmony("com.robinkc.spongebobsuits");
			val.PatchAll();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin com.robinkc.spongebobsuits is loaded!");
		}
	}
	public static class Assets
	{
		public static string mainAssetBundleName = "spongebobbundle";

		public static AssetBundle MainAssetBundle = null;

		private static string GetAssemblyName()
		{
			return Assembly.GetExecutingAssembly().GetName().Name.Replace(" ", "_");
		}

		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)
		{
		}
	}
}