Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of HighContrastEnemies v1.0.0
HighContrastEnemies.dll
Decompiled 3 weeks agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; 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 Microsoft.CodeAnalysis; using On.RoR2; using RoR2; using UnityEngine; using UnityEngine.SceneManagement; [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("HighContrastEnemies")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+07ec65656d515ec8afd82f69b54f6a2e9c345b45")] [assembly: AssemblyProduct("HighContrastEnemies")] [assembly: AssemblyTitle("HighContrastEnemies")] [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 HighContrastEnemies { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("swuff.HighContrastEnemies", "HighContrastEnemies", "1.0.0")] public class HighContrastEnemies : BaseUnityPlugin { public const string PluginGUID = "swuff.HighContrastEnemies"; public const string PluginAuthor = "swuff"; public const string PluginName = "HighContrastEnemies"; public const string PluginVersion = "1.0.0"; public List<Highlight> highlightsAddedByTheModIHateThisButBetterSafeThanSorryOmfg = new List<Highlight>(); public static Dictionary<string, Color32> StageColorDict = new Dictionary<string, Color32>(); public static ConfigEntry<float> OutlineThickness { get; set; } public static ConfigEntry<string> MonoColor { get; set; } public static ConfigEntry<string> BlueStages { get; set; } public static ConfigEntry<string> CyanStages { get; set; } public static ConfigEntry<string> GreenStages { get; set; } public static ConfigEntry<string> RedStages { get; set; } public static ConfigEntry<string> WhiteStages { get; set; } public static ConfigEntry<string> YellowStages { get; set; } public static ConfigEntry<string> PinkStages { get; set; } public static ConfigEntry<string> PurpleStages { get; set; } public static ConfigEntry<string> Custom1 { get; set; } public static ConfigEntry<string> Custom1Stages { get; set; } public static ConfigEntry<string> Custom2 { get; set; } public static ConfigEntry<string> Custom2Stages { get; set; } public static ConfigEntry<string> Custom3 { get; set; } public static ConfigEntry<string> Custom3Stages { get; set; } public void Awake() { MakeConfig(); Hooks(); ColorSetup(); } public void MakeConfig() { Custom1 = ((BaseUnityPlugin)this).Config.Bind<string>("Custom Outline Colors", "Custom Color 1", "#FFFFFFAA", "A custom outline color value in hex format (#RRGGBB / #RRGGBBAA). DEFAULT: Half-transparent white (#FFFFFFAA)"); Custom2 = ((BaseUnityPlugin)this).Config.Bind<string>("Custom Outline Colors", "Custom Color 2", "", "A custom outline color value in hex format (#RRGGBB / #RRGGBBAA)."); Custom3 = ((BaseUnityPlugin)this).Config.Bind<string>("Custom Outline Colors", "Custom Color 3", "", "A custom outline color value in hex format (#RRGGBB / #RRGGBBAA)."); OutlineThickness = ((BaseUnityPlugin)this).Config.Bind<float>("General Settings", "Outline Strength", 1f, "The strength of the outline to apply to monsters."); MonoColor = ((BaseUnityPlugin)this).Config.Bind<string>("General Settings", "Outline Color", "PerStage", "The color of outline to use for monsters, universally.\nAcceptable entries:\n\"PerStage\",\"Blue\",\"Green\",\"Red\",\"Yellow\",\"Cyan\",\"Pink\",\"Purple\",\"White\",\"Custom1\",\"Custom2\",\"Custom3\""); BlueStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Blue Stages", "moon,moon2,itmoon,meridian,solutionalhaunt", "Stages in which enemies should receive a blue outline, if per-stage setting is used."); CyanStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Cyan Stages", "sulfurpools,goolake,helminthroost,dampcavesimple,itgoolake,ancientloft,ironalluvium,ironalluvium2,itancientloft,lemuriantemple,repurposedcrater,wispgraveyard", "Stages in which enemies should receive a cyan outline, if per-stage setting is used."); GreenStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Green Stages", "village,villagenight,", "Stages in which enemies should receive a green outline, if per-stage setting is used."); RedStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Red Stages", "frozenwall,itfrozenwall,snowyforest,nest,habitatfall,limbo", "Stages in which enemies should receive a red outline, if per-stage setting is used."); WhiteStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "White Stages", "artifactworld,artifactworld01,artifactworld02,artifactworld03,arena,voidstage,voidraid,voidoutro,goldshores", "Stages in which enemies should receive a white outline, if per-stage setting is used."); YellowStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Yellow Stages", "blackbeach,blackbeach2,conduitcanyon,skymeadow,itskymeadow", "Stages in which enemies should receive a yellow outline, if per-stage setting is used."); PinkStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Pink Stages", "golemplains,golemplains2,rootjungle,foggyswamp,habitat,village,villagenight,FBLScene", "Stages in which enemies should receive a pink outline, if per-stage setting is used."); PurpleStages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Purple Stages", "lakes,lakesnight,shipgraveyard", "Stages in which enemies should receive a purple outline, if per-stage setting is used."); Custom1Stages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Custom Color 1 Stages", "", "Stages in which enemies should use Custom Color 1."); Custom2Stages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Custom Color 2 Stages", "", "Stages in which enemies should use Custom Color 2."); Custom3Stages = ((BaseUnityPlugin)this).Config.Bind<string>("Per-Stage Outline Settings", "Custom Color 3 Stages", "", "Stages in which enemies should use Custom Color 3."); } public void ColorSetup() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) RegisterStageColors(BlueStages, Color32.op_Implicit(Color.blue)); RegisterStageColors(GreenStages, Color32.op_Implicit(Color.green)); RegisterStageColors(CyanStages, Color32.op_Implicit(Color.cyan)); RegisterStageColors(RedStages, Color32.op_Implicit(Color.red)); RegisterStageColors(WhiteStages, Color32.op_Implicit(Color.white)); RegisterStageColors(PinkStages, new Color32(byte.MaxValue, (byte)105, (byte)180, byte.MaxValue)); RegisterStageColors(PurpleStages, new Color32((byte)128, (byte)0, (byte)128, byte.MaxValue)); RegisterStageColors(YellowStages, Color32.op_Implicit(Color.yellow)); RegisterStageColors(Custom1Stages, HexToColor(Custom1.Value)); RegisterStageColors(Custom2Stages, HexToColor(Custom2.Value)); RegisterStageColors(Custom3Stages, HexToColor(Custom3.Value)); } public void Hooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown CharacterBody.OnDeathStart += new hook_OnDeathStart(CharacterBody_OnDeathStart); CharacterModel.OnSkinApplied += new hook_OnSkinApplied(CharacterModel_OnSkinApplied); } private void CharacterModel_OnSkinApplied(orig_OnSkinApplied orig, CharacterModel self, int skinIndex) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_0049: Invalid comparison between Unknown and I4 //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Invalid comparison between Unknown and I4 //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Invalid comparison between Unknown and I4 //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, skinIndex); if ((Object)(object)self.body == (Object)null || (Object)(object)self.body.master == (Object)null) { return; } TeamIndex teamIndex = self.body.master.teamIndex; if ((int)teamIndex != 2 && (int)teamIndex != 3 && (int)teamIndex != 4) { return; } Highlight val = ((Component)self.body).gameObject.AddComponent<Highlight>(); highlightsAddedByTheModIHateThisButBetterSafeThanSorryOmfg.Add(val); List<Renderer> targetRendererList = val.GetTargetRendererList(); targetRendererList.Clear(); RendererInfo[] baseRendererInfos = self.baseRendererInfos; foreach (RendererInfo val2 in baseRendererInfos) { if (!val2.ignoreOverlays) { targetRendererList.Add(val2.renderer); } } if (targetRendererList.Count > 0) { ((Behaviour)val).enabled = true; val.CustomColor = Color32.op_Implicit(GetOutlineColor()); val.highlightColor = (HighlightColor)3; val.strength = OutlineThickness.Value; val.isOn = true; val.SetTargetRendererList(targetRendererList); } } private void CharacterBody_OnDeathStart(orig_OnDeathStart orig, CharacterBody self) { orig.Invoke(self); Highlight[] components = ((Component)self).gameObject.GetComponents<Highlight>(); foreach (Highlight val in components) { if (highlightsAddedByTheModIHateThisButBetterSafeThanSorryOmfg.Contains(val)) { highlightsAddedByTheModIHateThisButBetterSafeThanSorryOmfg.Remove(val); Object.Destroy((Object)(object)val); } } } public Color32 GetOutlineColor() { //IL_0316: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0219: 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_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) switch (MonoColor.Value) { case "PerStage": { Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (StageColorDict.TryGetValue(name, out var value)) { return value; } Debug.Log((object)("GetOutlineColor : Failed to find correct color for scene " + name + "; defaulting to white.")); return Color32.op_Implicit(Color.white); } case "Blue": return Color32.op_Implicit(Color.blue); case "Cyan": return Color32.op_Implicit(Color.cyan); case "Green": return Color32.op_Implicit(Color.green); case "Red": return Color32.op_Implicit(Color.red); case "White": return Color32.op_Implicit(Color.white); case "Yellow": return Color32.op_Implicit(Color.yellow); case "Pink": return new Color32(byte.MaxValue, (byte)105, (byte)180, byte.MaxValue); case "Purple": return new Color32((byte)128, (byte)0, (byte)128, byte.MaxValue); case "Custom1": return HexToColor(Custom1.Value); case "Custom2": return HexToColor(Custom2.Value); case "Custom3": return HexToColor(Custom3.Value); default: Debug.LogWarning((object)("GetOutlineColor : Failed to find color type " + MonoColor.Value + "!! Defaulting to white.")); return Color32.op_Implicit(Color.white); } } public static Color32 HexToColor(string hex) { //IL_0024: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) if (Utility.IsNullOrWhiteSpace(hex)) { Debug.Log((object)("HexToColor : Failed to make color from entry \"" + hex + "\"")); return Color32.op_Implicit(Color.white); } if (hex.StartsWith("#")) { hex = hex.Substring(1); } byte b = byte.Parse(hex.Substring(0, 2), NumberStyles.HexNumber); byte b2 = byte.Parse(hex.Substring(2, 2), NumberStyles.HexNumber); byte b3 = byte.Parse(hex.Substring(4, 2), NumberStyles.HexNumber); byte b4 = byte.MaxValue; if (hex.Length >= 8) { b4 = byte.Parse(hex.Substring(6, 2), NumberStyles.HexNumber); } return new Color32(b, b2, b3, b4); } public void RegisterStageColors(ConfigEntry<string> stageList, Color32 color) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) if (string.IsNullOrWhiteSpace(stageList.Value)) { return; } string[] array = stageList.Value.Split(','); string[] array2 = array; foreach (string text in array2) { string text2 = text.Trim(); if (!string.IsNullOrEmpty(text2)) { StageColorDict[text2] = color; } } } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } }