Please disclose if your mod was created primarily 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 PersonaPlayerModels v1.4.1
PersonaPlayerModels.dll
Decompiled 7 months 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.Logging; 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: AssemblyCompany("PersonaPlayerModels")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("PersonaPlayerModels")] [assembly: AssemblyTitle("PersonaPlayerModels")] [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 MRMITSURU : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Mitsuru"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRAIGIS : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Aigis"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRMARIE : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Marie"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRNAOTO : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Naoto"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRNANAKO : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Nanako"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRFUUKAYAMAGISHI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "FuukaYamagishi"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRJACKFROST : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "JackFrost"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRIGOR : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Igor"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRKOTONESHIOMI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Kotone Shiomi"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRSHINJI2 : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Shinji2"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRKANJI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Kanji"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MRCHIE : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Chie"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class RYOTARODOJIMA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "RyotaroDojima"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class RISEKUJIKAWA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "RiseKujikawa"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class YUKIKOAMAGI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "YukikoAmagi"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class YUNARUKAMI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "YuNarukami"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class TEDDIE : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "Teddie"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class YUKARITAKEBA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "YukariTakeba"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class YOSUKEHANAMURA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "YosukeHanamura"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class RENAMAMIYA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "RenAmamiya"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class RENAMAMIYAPS2 : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "RenAmamiyaPS2"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class TOHRUADACHI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "TohruAdachi"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MAKOTOYUKI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "MakotoYuki"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class AKIHIKOSANADA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "AkihikoSanada"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class JUNPEIIORI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "JunpeiIori"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class ANNTAKAMAKI : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "AnnTakamaki"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class MAKOTONIIJIMA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "MakotoNiijima"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class HARUOKUMURA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "HaruOkumura"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class RYUJISAKAMOTO : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "RyujiSakamoto"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class KASUMIYOSHIZAWA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "KasumiYoshizawa"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class YUSUKEKITAGAWA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "YusukeKitagawa"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } public class FUTABASAKURA : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "FutabaSakura"; return Assets.MainAssetBundle.LoadAsset<GameObject>(text); } } [BepInPlugin("com.teaisnt.personaplayermodels", "PersonaPlayerModels", "1.2.4")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public static ManualLogSource mls; public static string saveFilePath = Path.Combine(Paths.BepInExRootPath, "plugins", "Teaisnt-PersonaPlayerModels", "PersonaPlayerModelsSaveData.json"); private void Awake() { //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Expected O, but got Unknown Assets.PopulateAssets(); ModelReplacementAPI.RegisterSuitModelReplacement("Shinjiro Aragaki PSP", typeof(MRSHINJI2)); ModelReplacementAPI.RegisterSuitModelReplacement("Kanji Tatsumi PS2", typeof(MRKANJI)); ModelReplacementAPI.RegisterSuitModelReplacement("Chie Satonaka PS2", typeof(MRCHIE)); ModelReplacementAPI.RegisterSuitModelReplacement("Igor PS2", typeof(MRIGOR)); ModelReplacementAPI.RegisterSuitModelReplacement("Jack Frost PS2", typeof(MRJACKFROST)); ModelReplacementAPI.RegisterSuitModelReplacement("Kotone Shiomi PSP", typeof(MRKOTONESHIOMI)); ModelReplacementAPI.RegisterSuitModelReplacement("Fuuka Yamagishi PS2", typeof(MRFUUKAYAMAGISHI)); ModelReplacementAPI.RegisterSuitModelReplacement("Nanako Dojima PS2", typeof(MRNANAKO)); ModelReplacementAPI.RegisterSuitModelReplacement("Naoto Shirogane PS2", typeof(MRNAOTO)); ModelReplacementAPI.RegisterSuitModelReplacement("Marie PS2", typeof(MRMARIE)); ModelReplacementAPI.RegisterSuitModelReplacement("Aigis PS2", typeof(MRAIGIS)); ModelReplacementAPI.RegisterSuitModelReplacement("Yukari Takeba PS2", typeof(YUKARITAKEBA)); ModelReplacementAPI.RegisterSuitModelReplacement("Rise Kujikawa PS2", typeof(RISEKUJIKAWA)); ModelReplacementAPI.RegisterSuitModelReplacement("Ryotaro Dojima PS2", typeof(RYOTARODOJIMA)); ModelReplacementAPI.RegisterSuitModelReplacement("Teddie PS2", typeof(TEDDIE)); ModelReplacementAPI.RegisterSuitModelReplacement("Yukiko Amagi PS2", typeof(YUKIKOAMAGI)); ModelReplacementAPI.RegisterSuitModelReplacement("Yu Narukami PS2", typeof(YUNARUKAMI)); ModelReplacementAPI.RegisterSuitModelReplacement("Mitsuru Kirijo PS2", typeof(MRMITSURU)); ModelReplacementAPI.RegisterSuitModelReplacement("Yosuke Hanamura PS2", typeof(YOSUKEHANAMURA)); ModelReplacementAPI.RegisterSuitModelReplacement("Ren Amamiya 3DS", typeof(RENAMAMIYA)); ModelReplacementAPI.RegisterSuitModelReplacement("Tohru Adachi PS2", typeof(TOHRUADACHI)); ModelReplacementAPI.RegisterSuitModelReplacement("Makoto Yuki PS2", typeof(MAKOTOYUKI)); ModelReplacementAPI.RegisterSuitModelReplacement("Akihiko Sanada PS2", typeof(AKIHIKOSANADA)); ModelReplacementAPI.RegisterSuitModelReplacement("Junpei Iori PS2", typeof(JUNPEIIORI)); ModelReplacementAPI.RegisterSuitModelReplacement("Ann Takamaki PS2", typeof(ANNTAKAMAKI)); ModelReplacementAPI.RegisterSuitModelReplacement("Makoto Niijima PS2", typeof(MAKOTONIIJIMA)); ModelReplacementAPI.RegisterSuitModelReplacement("Haru Okumura PS2", typeof(HARUOKUMURA)); ModelReplacementAPI.RegisterSuitModelReplacement("Ryuji Sakamoto PS2", typeof(RYUJISAKAMOTO)); ModelReplacementAPI.RegisterSuitModelReplacement("Kasumi Yoshizawa PS2", typeof(KASUMIYOSHIZAWA)); ModelReplacementAPI.RegisterSuitModelReplacement("Yusuke Kitagawa PS2", typeof(YUSUKEKITAGAWA)); ModelReplacementAPI.RegisterSuitModelReplacement("Futaba Sakura PS2", typeof(FUTABASAKURA)); ModelReplacementAPI.RegisterSuitModelReplacement("Ren Amamiya PS2", typeof(RENAMAMIYAPS2)); Harmony val = new Harmony("com.teaisnt.personaplayermodels"); val.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin com.teaisnt.personaplayermodels is loaded!"); } } public static class Assets { public static string mainAssetBundleName = "personaplayermodelsassetbundle"; 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) { } } }