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 MVP Crown v1.0.2
MVP_Crown/Crown_Mod.dll
Decompiled 11 months agousing 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 BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using RoR2; using RoR2.ContentManagement; using RoR2.Stats; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Rendering; [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("Crown_Mod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2")] [assembly: AssemblyProduct("MVP Crown For RoR2")] [assembly: AssemblyTitle("Crown_Mod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.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 Crown_Mod { public class SpinCrown : MonoBehaviour { private Vector3 localPosBeforeOffset; private Transform parentTransform; private void Awake() { ((Behaviour)this).enabled = true; } private void Start() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) parentTransform = ((Component)this).transform.parent; localPosBeforeOffset = ((Component)this).transform.localPosition; ((Component)this).transform.parent = null; ((Component)this).transform.rotation = Quaternion.identity; ((Component)this).transform.localScale = CrownItemDisplayRule.GetCrownDisplayRule().localScale; } private void Update() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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) if (!Object.op_Implicit((Object)(object)parentTransform)) { Object.Destroy((Object)(object)((Component)this).gameObject); } ((Component)this).transform.Rotate(Vector3.up * Time.deltaTime * 60f, (Space)1); ((Component)this).transform.position = parentTransform.position + localPosBeforeOffset + Mathf.Sin(Time.time * MathF.PI * 0.5f) * Vector3.up * 0.05f; } } public class CharacterSpecific { private static ItemDisplayRule CreateItemDisplayRuleDeepCopy(ItemDisplayRule toCopy) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) ItemDisplayRule result = default(ItemDisplayRule); result.childName = toCopy.childName; result.localPos = toCopy.localPos; result.localAngles = toCopy.localAngles; result.localScale = toCopy.localScale; result.limbMask = toCopy.limbMask; result.ruleType = toCopy.ruleType; result.followerPrefab = toCopy.followerPrefab; result.followerPrefabAddress = toCopy.followerPrefabAddress; return result; } public static ItemDisplayRule GetCrownDisplayRuleForCharacter(CharacterModel model) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: 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_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0135: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: 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_0125: 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_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_023d: 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_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017e: 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_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_0156: 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_015c: 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_0169: 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_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) ItemDisplayRule val = CrownItemDisplayRule.GetCrownDisplayRule(); switch (((Object)model).name) { case "mdlChef": val = CreateItemDisplayRuleDeepCopy(val); val.localPos = Vector3.up * 1.1f; break; case "mdlFalseSon": val = CreateItemDisplayRuleDeepCopy(val); val.localPos = Vector3.up * 0.9f; break; case "mdlCroco": val = CreateItemDisplayRuleDeepCopy(val); val.localPos = Vector3.up * 0.9f; break; case "mdlEngi": val = CreateItemDisplayRuleDeepCopy(val); val.localPos = new Vector3(0f, 1.5f, 0.25f); val.childName = "Base"; break; case "mdlToolbot": val = CreateItemDisplayRuleDeepCopy(val); val.localPos = Vector3.up * 0.9f; val.childName = "Head"; break; case "mdlCaptain": val = CreateItemDisplayRuleDeepCopy(val); val.localPos = new Vector3(0f, 1.5f, 0f); val.childName = "Base"; break; case "mdlTreebot": val = CreateItemDisplayRuleDeepCopy(val); val.localPos = new Vector3(0f, 2.5f, 0f); val.childName = "Base"; break; } return val; } } public class ContentPackLoader { private class CustomContentPackProvider : IContentPackProvider { [CompilerGenerated] private sealed class <FinalizeAsync>d__4 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FinalizeAsyncArgs args; public CustomContentPackProvider <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FinalizeAsync>d__4(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <GenerateContentPackAsync>d__6 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public GetContentPackAsyncArgs args; public CustomContentPackProvider <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <GenerateContentPackAsync>d__6(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; ContentPack.Copy(<>4__this.contentPack, args.output); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <LoadStaticContentAsync>d__5 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public LoadStaticContentAsyncArgs args; public CustomContentPackProvider <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadStaticContentAsync>d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } protected ContentPack contentPack; public string identifier => contentPack.identifier; public CustomContentPackProvider(ContentPack contentPack) { this.contentPack = contentPack; } [IteratorStateMachine(typeof(<FinalizeAsync>d__4))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FinalizeAsync>d__4(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<LoadStaticContentAsync>d__5))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadStaticContentAsync>d__5(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<GenerateContentPackAsync>d__6))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GenerateContentPackAsync>d__6(0) { <>4__this = this, args = args }; } } public ContentPack additionalContent; private void OnAddContentPack(AddContentPackProviderDelegate _addContentDelegate) { CustomContentPackProvider customContentPackProvider = new CustomContentPackProvider(additionalContent); try { _addContentDelegate.Invoke((IContentPackProvider)(object)customContentPackProvider); Plugin.Logger.LogInfo((object)"Sucessfully supplied the content provider"); } catch { Plugin.Logger.LogWarning((object)"Could not load the content pack."); } } public void SetupLoadPack() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(OnAddContentPack); } public ContentPackLoader(ContentPack _additionalContent) { additionalContent = _additionalContent; } } public class CrownItemDisplayRule { [HarmonyPatch(typeof(ItemDisplayRuleSet), "Init")] private class AddItemDisplayRules { private static void PatchCharacterModel(CharacterModel model) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)model.itemDisplayRuleSet)) { model.itemDisplayRuleSet = ScriptableObject.CreateInstance<ItemDisplayRuleSet>(); } model.itemDisplayRuleSet.SetDisplayRuleGroup((Object)(object)CrownItemDef.GetCrownDef(), new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { CharacterSpecific.GetCrownDisplayRuleForCharacter(model) } }); } [HarmonyPrefix] private static void AddCustomDispRules() { foreach (GameObject allBodyPrefab in BodyCatalog.allBodyPrefabs) { CharacterModel componentInChildren = allBodyPrefab.GetComponentInChildren<CharacterModel>(); if (Object.op_Implicit((Object)(object)componentInChildren)) { PatchCharacterModel(componentInChildren); } } } } private static ItemDisplayRule crownDisplayRule; private static bool setCrownDisplayRule; public static MeshRenderer crownMeshRenderer { get { if (!Object.op_Implicit((Object)(object)CrownItemDef.crownGameobj)) { return null; } return CrownItemDef.crownGameobj.GetComponentInChildren<MeshRenderer>(); } } private static void SetParentedPrefabSettings() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) crownDisplayRule.ruleType = (ItemDisplayRuleType)0; crownDisplayRule.limbMask = (LimbFlags)0; crownDisplayRule.followerPrefab = CrownItemDef.crownGameobj; crownDisplayRule.followerPrefabAddress = new AssetReferenceGameObject(""); crownDisplayRule.childName = "Head"; crownDisplayRule.localScale = Vector3.one * 0.3f; crownDisplayRule.localPos = Vector3.up * 0.55f; crownDisplayRule.followerPrefab.AddComponent<SpinCrown>(); } private static void SetRenderingInfo() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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) //IL_005d: Unknown result type (might be due to invalid IL or missing references) ItemDisplay val = crownDisplayRule.followerPrefab.AddComponent<ItemDisplay>(); val.visibilityLevel = (VisibilityLevel)3; MeshRenderer val2 = crownMeshRenderer; val.rendererInfos = (RendererInfo[])(object)new RendererInfo[1] { new RendererInfo { renderer = (Renderer)(object)val2, defaultMaterial = ((Renderer)val2).material, defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false, hideOnDeath = true } }; } public static ItemDisplayRule GetCrownDisplayRule() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (setCrownDisplayRule) { return crownDisplayRule; } crownDisplayRule = default(ItemDisplayRule); SetParentedPrefabSettings(); SetRenderingInfo(); setCrownDisplayRule = true; UnitTest.TestShaderConfig(); return crownDisplayRule; } } public class CrownItemDef { public const string CROWN_ITEM_NAME = "MVP Crown"; public const ItemTier CROWN_ITEM_TIER = 5; private static ItemDef crownItemDef; public static GameObject crownGameobj { get { if (!Object.op_Implicit((Object)(object)crownItemDef)) { return null; } return crownItemDef.pickupModelPrefab; } } private static string ResourcesFolder => Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); private static void SetCrownDescriptions() { ((Object)crownItemDef).name = "MVP Crown"; crownItemDef.nameToken = "MVP Crown"; crownItemDef.descriptionToken = "Congrats Your The Best Player In The Lobby!"; crownItemDef.loreToken = "Wow, i didn't even know that this would ever be visible :)"; crownItemDef.pickupToken = "Congrats Your The Best Player In The Lobby!"; } private static void SetItemDefDisplayProperties() { crownItemDef.pickupIconSprite = Helpers.LoadSpriteFromName("CrownItemInventoryImage.png"); AssetBundle val = AssetBundle.LoadFromFile(ResourcesFolder + "\\crownbundle"); crownItemDef.pickupModelPrefab = val.LoadAsset<GameObject>("Crown"); crownItemDef.hidden = false; } private static void SetRequiredMisc() { crownItemDef.unlockableDef = null; crownItemDef.tier = (ItemTier)5; crownItemDef.canRemove = false; ItemDef obj = crownItemDef; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; } public static ItemDef GetCrownDef() { if (Object.op_Implicit((Object)(object)crownItemDef)) { return crownItemDef; } crownItemDef = ScriptableObject.CreateInstance<ItemDef>(); SetCrownDescriptions(); SetItemDefDisplayProperties(); SetRequiredMisc(); return crownItemDef; } } public class CrownDistribution { private static PlayerStatsComponent lastCrownWinner; private static PlayerStatsComponent bestPlayerFound; public static PlayerStatsComponent bestPlayerFoundSafer { get { if (Object.op_Implicit((Object)(object)bestPlayerFound)) { return bestPlayerFound; } if (PlayerStatsComponent.instancesList.Count > 0) { return PlayerStatsComponent.instancesList[0]; } Plugin.Logger.LogWarning((object)"Attempting To Access Best Player Stats When No Player Exist."); return null; } } private static ulong GetTotalDamage(StatSheet playerStatSheet) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) ulong num = 0uL; StatField[] fields = playerStatSheet.fields; for (int i = 0; i < fields.Length; i++) { StatField val = fields[i]; if (((StatField)(ref val)).name == "totalDamageDealt") { num += ((StatField)(ref val)).ulongValue; } else if (((StatField)(ref val)).name == "totalMinionDamageDealt") { num += ((StatField)(ref val)).ulongValue; } } return num; } private static PlayerStatsComponent GetPlayerWithBestStats() { PlayerStatsComponent val = bestPlayerFoundSafer; foreach (PlayerStatsComponent instances in PlayerStatsComponent.instancesList) { if (GetTotalDamage(val.currentStats) < GetTotalDamage(instances.currentStats)) { val = instances; } } return val; } public static void EvaluateBestPlayer() { if (PlayerStatsComponent.instancesList.Count > 0) { bestPlayerFound = GetPlayerWithBestStats(); } } public static void AwardBestPlayer() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)lastCrownWinner)) { lastCrownWinner.characterMaster.inventory.RemoveItem(ItemCatalog.FindItemIndex("MVP Crown"), 1); } bestPlayerFound.characterMaster.inventory.GiveItemString("MVP Crown"); lastCrownWinner = bestPlayerFound; } } [HarmonyPatch(typeof(StatManager), "OnServerStageBegin")] public class GiveCrownToBestPlayerOnNewStage { private static int stagesEntered; [HarmonyPostfix] private static void GiveCrownToBestPlayer() { stagesEntered++; if (stagesEntered >= 2) { CrownDistribution.EvaluateBestPlayer(); CrownDistribution.AwardBestPlayer(); } } } public class Helpers { public static Sprite LoadSpriteFromName(string name) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_004c: 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) string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + name; byte[] array = File.ReadAllBytes(path); Texture2D val = new Texture2D(0, 0); ImageConversion.LoadImage(val, array); return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f)); } } [BepInPlugin("Crown_Mod", "MVP Crown For RoR2", "1.0.2")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger; private void CreateCrownModContentPack() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ContentPack val = new ContentPack(); val.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { CrownItemDef.GetCrownDef() }); val.identifier = "Crown_Mod_Pack"; ContentPackLoader contentPackLoader = new ContentPackLoader(val); contentPackLoader.SetupLoadPack(); } private void Awake() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; CreateCrownModContentPack(); Harmony val = new Harmony("Crown_Mod"); val.PatchAll(Assembly.GetExecutingAssembly()); } } internal class UnitTest { [HarmonyPatch(typeof(ItemCatalog), "Init")] private class TestGetItemIndex { private static void OnTestFail() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) Plugin.Logger.LogInfo((object)("Item Name --> " + ((Object)CrownItemDef.GetCrownDef()).name)); Plugin.Logger.LogInfo((object)"Printing Entire Catalog"); foreach (string key in ItemCatalog.itemNameToIndex.Keys) { Plugin.Logger.LogInfo((object)$"\t{key} --> {ItemCatalog.itemNameToIndex[key]}"); } } [HarmonyPostfix] private static void PrintCrownIndex() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) if (testingItemIndex) { bool flag = ItemCatalog.itemNameToIndex.ContainsKey("MVP Crown"); Plugin.Logger.LogInfo((object)$"Test: Is Item In Catalog : {flag}"); if (flag) { Plugin.Logger.LogInfo((object)string.Format("Item Index --> {0}", ItemCatalog.itemNameToIndex["MVP Crown"])); } else { OnTestFail(); } } } } [HarmonyPatch(typeof(StatManager), "OnServerStageBegin")] private class TestCrownItemEquipable { [HarmonyPostfix] private static void GiveCrownItemToPlayer() { if (testingCanGiveCrownItem) { Inventory inventory = PlayerStatsComponent.instancesList[0].characterMaster.inventory; inventory.GiveItemString("MVP Crown"); Plugin.Logger.LogInfo((object)"Testing : Give Player Crown Item : Status Unknown"); } } } internal static bool testingItemIndex; internal static bool testingCanGiveCrownItem; internal static bool testingItemShader; internal static bool testingCrownDisplayConflicts; public static void ReadItemDispRules() { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Invalid comparison between Unknown and I4 //IL_007a: Unknown result type (might be due to invalid IL or missing references) foreach (GameObject allBodyPrefab in BodyCatalog.allBodyPrefabs) { CharacterModel componentInChildren = allBodyPrefab.GetComponentInChildren<CharacterModel>(); if (!Object.op_Implicit((Object)(object)componentInChildren)) { continue; } DisplayRuleGroup[] runtimeItemRuleGroups = componentInChildren.itemDisplayRuleSet.runtimeItemRuleGroups; for (int i = 0; i < runtimeItemRuleGroups.Length; i++) { DisplayRuleGroup val = runtimeItemRuleGroups[i]; if (!((DisplayRuleGroup)(ref val)).isEmpty && (int)val.rules[0].ruleType <= 0) { Plugin.Logger.LogInfo((object)val.rules[0].childName); } } } } public static void TestShaderConfig() { if (!testingItemShader) { return; } MeshRenderer crownMeshRenderer = CrownItemDisplayRule.crownMeshRenderer; if (!Object.op_Implicit((Object)(object)crownMeshRenderer)) { Plugin.Logger.LogWarning((object)"Could Not Find The Renderer Of The Crown Model"); return; } Material material = ((Renderer)crownMeshRenderer).GetMaterial(); if (!Object.op_Implicit((Object)(object)material)) { Plugin.Logger.LogWarning((object)"Could Not Find the Material Of The Crown"); return; } if (!Object.op_Implicit((Object)(object)material.shader)) { Plugin.Logger.LogWarning((object)"Could Not Find the Shader Of The Crown"); return; } Plugin.Logger.LogInfo((object)("Crown Mat Shader Name == " + ((Object)material.shader).name)); if (!Object.op_Implicit((Object)(object)material.GetTexture("_MainTex"))) { Plugin.Logger.LogInfo((object)"Crown Mat Texture Could Not Be Found"); } else if (Object.op_Implicit((Object)(object)material.GetTexture("_MainTex"))) { Plugin.Logger.LogInfo((object)("Main Texture Name == " + ((Object)material.GetTexture("_MainTex")).name)); } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "Crown_Mod"; public const string PLUGIN_NAME = "MVP Crown For RoR2"; public const string PLUGIN_VERSION = "1.0.2"; } }