Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of EliteLookSwap v1.0.0
EliteLookSwap.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using R2API; using RoR2; 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: AssemblyCompany("EliteLookSwap")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("EliteLookSwap")] [assembly: AssemblyTitle("EliteLookSwap")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace EliteLookSwap { [BepInPlugin("_prodzpod.EliteLookSwap", "EliteLookSwap", "1.0.0")] public class Main : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<EquipmentDef, bool> <>9__10_2; public static Func<EquipmentDef, string> <>9__10_3; public static Action <>9__10_0; public static hook_SetEquipmentDisplay <>9__10_1; internal void <Awake>b__10_0() { List<string> list = new List<string>(); foreach (string item in from x in EquipmentCatalog.equipmentDefs where (Object)(object)x.passiveBuffDef?.eliteDef != (Object)null select ((Object)x).name) { string text = item.ToUpper(); if (Overrides.ContainsKey(text.ToUpper())) { text = text + "=" + Overrides[text.ToUpper()]; } list.Add(text); } Log.LogInfo((object)("Elites: " + string.Join(", ", list))); } internal bool <Awake>b__10_2(EquipmentDef x) { return (Object)(object)x.passiveBuffDef?.eliteDef != (Object)null; } internal string <Awake>b__10_3(EquipmentDef x) { return ((Object)x).name; } internal void <Awake>b__10_1(orig_SetEquipmentDisplay orig, CharacterModel self, EquipmentIndex idx) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_005e: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass10_0 CS$<>8__locals0 = new <>c__DisplayClass10_0 { def = EquipmentCatalog.GetEquipmentDef(idx) }; if ((Object)(object)CS$<>8__locals0.def != (Object)null && Overrides.ContainsKey(((Object)CS$<>8__locals0.def).name.ToUpper())) { EquipmentDef? obj = ((IEnumerable<EquipmentDef>)EquipmentCatalog.equipmentDefs).FirstOrDefault((Func<EquipmentDef, bool>)((EquipmentDef x) => ((Object)x).name.ToUpper() == Overrides[((Object)CS$<>8__locals0.def).name.ToUpper()])); orig.Invoke(self, (obj != null) ? obj.equipmentIndex : idx); } else { orig.Invoke(self, idx); } } } [CompilerGenerated] private sealed class <>c__DisplayClass10_0 { public EquipmentDef def; internal bool <Awake>b__4(EquipmentDef x) { return ((Object)x).name.ToUpper() == Overrides[((Object)def).name.ToUpper()]; } } public const string PluginGUID = "_prodzpod.EliteLookSwap"; public const string PluginAuthor = "_prodzpod"; public const string PluginName = "EliteLookSwap"; public const string PluginVersion = "1.0.0"; public static ManualLogSource Log; public static PluginInfo pluginInfo; public static ConfigFile Config; public static Harmony Harmony; public static ConfigEntry<string> OverridesRaw; public static Dictionary<string, string> Overrides = new Dictionary<string, string>(); public void Awake() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown pluginInfo = ((BaseUnityPlugin)this).Info; Log = ((BaseUnityPlugin)this).Logger; Config = new ConfigFile(Path.Combine(Paths.ConfigPath, "_prodzpod.EliteLookSwap.cfg"), true); Harmony = new Harmony("_prodzpod.EliteLookSwap"); OverridesRaw = Config.Bind<string>("General", "Overrides", "NEMESISRISINGTIDES_AFFIXBUFFERED=ELITEVARIETY_AFFIXARMORED, ELITE_EQUIPMENT_MOTIVATING=ELITEVARIETY_AFFIXBUFFING, ELITEVARIETY_AFFIXIMPPLANE=EQUIPMENT_AFFIXARAGONITE, EQUIPMENT_AFFIXARAGONITE=ELITEVARIETY_AFFIXIMPPLANE, ELITEAURELIONITEEQUIPMENT=ELITEVARIETY_AFFIXPILLAGING", "FROM=TO, elite names, separated by commas. see the log for list of valid input for your pack."); string[] array = OverridesRaw.Value.Split(","); foreach (string text in array) { string[] array2 = text.Split("="); if (array2.Length != 2) { Log.LogWarning((object)("Entry is malformed, skipping: " + text)); } else { Overrides.Add(array2[0].Trim().ToUpper(), array2[1].Trim().ToUpper()); } } RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { List<string> list = new List<string>(); foreach (string item in from x in EquipmentCatalog.equipmentDefs where (Object)(object)x.passiveBuffDef?.eliteDef != (Object)null select ((Object)x).name) { string text2 = item.ToUpper(); if (Overrides.ContainsKey(text2.ToUpper())) { text2 = text2 + "=" + Overrides[text2.ToUpper()]; } list.Add(text2); } Log.LogInfo((object)("Elites: " + string.Join(", ", list))); }); Harmony.PatchAll(typeof(PatchR2API)); object obj = <>c.<>9__10_1; if (obj == null) { hook_SetEquipmentDisplay val = delegate(orig_SetEquipmentDisplay orig, CharacterModel self, EquipmentIndex idx) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_005e: Unknown result type (might be due to invalid IL or missing references) EquipmentDef def = EquipmentCatalog.GetEquipmentDef(idx); if ((Object)(object)def != (Object)null && Overrides.ContainsKey(((Object)def).name.ToUpper())) { EquipmentDef? obj2 = ((IEnumerable<EquipmentDef>)EquipmentCatalog.equipmentDefs).FirstOrDefault((Func<EquipmentDef, bool>)((EquipmentDef x) => ((Object)x).name.ToUpper() == Overrides[((Object)def).name.ToUpper()])); orig.Invoke(self, (obj2 != null) ? obj2.equipmentIndex : idx); } else { orig.Invoke(self, idx); } }; <>c.<>9__10_1 = val; obj = (object)val; } CharacterModel.SetEquipmentDisplay += (hook_SetEquipmentDisplay)obj; } } [HarmonyPatch] public class PatchR2API { public static void ILManipulator(ILContext il, MethodBase original, ILLabel retLabel) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterModel>(x, "myEliteIndex") })) { val.EmitDelegate<Func<EliteIndex, EliteIndex>>((Func<EliteIndex, EliteIndex>)delegate(EliteIndex idx) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0085: 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) EliteDef def = EliteCatalog.GetEliteDef(idx); if ((Object)(object)def == (Object)null) { return idx; } return Main.Overrides.ContainsKey(((Object)def.eliteEquipmentDef).name.ToUpper()) ? (((IEnumerable<EquipmentDef>)EquipmentCatalog.equipmentDefs).FirstOrDefault((Func<EquipmentDef, bool>)((EquipmentDef x) => ((Object)x).name.ToUpper() == Main.Overrides[((Object)def.eliteEquipmentDef).name.ToUpper()])) ?? def.eliteEquipmentDef).passiveBuffDef.eliteDef.eliteIndex : idx; }); } } public static MethodBase TargetMethod() { return AccessTools.GetDeclaredMethods(typeof(EliteRamp)).Find((MethodInfo x) => x.Name.StartsWith("<UpdateRampProperly>g")); } } }