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 Alphabet Enemies v1.0.0
NumberLetterSkins.dll
Decompiled 6 months agousing System; 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 HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.UI; [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("Omniscye")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("NumberLetterSkins")] [assembly: AssemblyTitle("NumberLetterSkins")] [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.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; } } [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 Empress.Mods.NumberLetterSkins { [BepInPlugin("Omniscye.NumberLetterSkins", "Empress Number/Letter Skins", "2.1.0")] public sealed class CellingBootstrap : BaseUnityPlugin { internal static CellingBootstrap Instance { get; private set; } internal Harmony Harmony { get; private set; } private void Awake() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown Instance = this; ((Component)this).transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Harmony = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); DynBootstrap.ApplyDynamicPatches(Harmony); GameObject val = new GameObject("Empress_NumberLetter_Enforcer"); Object.DontDestroyOnLoad((Object)(object)val); val.AddComponent<Enforcer>(); } private void OnDestroy() { try { Harmony harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } catch { } } } internal static class DynBootstrap { internal static void ApplyDynamicPatches(Harmony h) { try { PatchDynamic(h, "EnemyHealth", "Awake", null, null, AccessTools.Method(typeof(DynPatches), "EnemyHealth_Awake_Postfix", (Type[])null, (Type[])null)); PatchDynamic(h, "Enemy", "Start", null, null, AccessTools.Method(typeof(DynPatches), "Enemy_Start_Postfix", (Type[])null, (Type[])null)); } catch { } } private static void PatchDynamic(Harmony h, string typeName, string methodName, Type[] paramTypes, MethodInfo prefix, MethodInfo postfix) { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) Type type = AccessTools.TypeByName(typeName); if (!(type == null)) { MethodInfo methodInfo = ((paramTypes == null) ? AccessTools.Method(type, methodName, (Type[])null, (Type[])null) : AccessTools.Method(type, methodName, paramTypes, (Type[])null)); if (!(methodInfo == null)) { HarmonyMethod val = ((!(prefix != null)) ? ((HarmonyMethod)null) : new HarmonyMethod(prefix)); HarmonyMethod val2 = ((!(postfix != null)) ? ((HarmonyMethod)null) : new HarmonyMethod(postfix)); h.Patch((MethodBase)methodInfo, val, val2, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } } } } internal static class VisualSwap { internal const string TagEnemy = "Empress_EnemyLetter"; internal static void DisableAllRenderers(Transform root) { if (!Object.op_Implicit((Object)(object)root)) { return; } Renderer[] componentsInChildren = ((Component)root).GetComponentsInChildren<Renderer>(true); Renderer[] array = componentsInChildren; foreach (Renderer val in array) { if (Object.op_Implicit((Object)(object)val)) { val.enabled = false; } } } internal static Bounds ComputeRenderersBounds(Transform root) { //IL_0048: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008a: 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_0040: 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) Renderer[] array = (Object.op_Implicit((Object)(object)root) ? ((Component)root).GetComponentsInChildren<Renderer>(true) : Array.Empty<Renderer>()); if (array.Length == 0) { return new Bounds(Object.op_Implicit((Object)(object)root) ? root.position : Vector3.zero, Vector3.one); } Bounds bounds = array[0].bounds; Bounds result = default(Bounds); ((Bounds)(ref result))..ctor(((Bounds)(ref bounds)).center, Vector3.zero); for (int i = 0; i < array.Length; i++) { ((Bounds)(ref result)).Encapsulate(array[i].bounds); } return result; } internal static Color TryGetRendererColor(Transform root, Color fallback) { //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_00a8: Unknown result type (might be due to invalid IL or missing references) try { Renderer val = (Object.op_Implicit((Object)(object)root) ? ((Component)root).GetComponentInChildren<Renderer>(true) : null); if ((Object)(object)val != (Object)null && (Object)(object)val.sharedMaterial != (Object)null) { if (val.sharedMaterial.HasProperty("_AlbedoColor")) { return val.sharedMaterial.GetColor("_AlbedoColor"); } if (val.sharedMaterial.HasProperty("_BaseColor")) { return val.sharedMaterial.GetColor("_BaseColor"); } if (val.sharedMaterial.HasProperty("_Color")) { return val.sharedMaterial.GetColor("_Color"); } } } catch { } return fallback; } internal static void FitTransformToBounds(Transform t, float targetSize) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_0040: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: 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) if (!Object.op_Implicit((Object)(object)t)) { return; } Renderer[] componentsInChildren = ((Component)t).GetComponentsInChildren<Renderer>(true); if (componentsInChildren.Length != 0) { Bounds bounds = componentsInChildren[0].bounds; Bounds val = default(Bounds); ((Bounds)(ref val))..ctor(((Bounds)(ref bounds)).center, Vector3.zero); Renderer[] array = componentsInChildren; foreach (Renderer val2 in array) { ((Bounds)(ref val)).Encapsulate(val2.bounds); } float num = Mathf.Max(((Bounds)(ref val)).size.x, Mathf.Max(((Bounds)(ref val)).size.y, ((Bounds)(ref val)).size.z)); if (!(num < 0.0001f)) { float num2 = targetSize / num; Vector3 val3 = (((Object)(object)t.parent != (Object)null) ? t.parent.lossyScale : Vector3.one); Vector3 val4 = default(Vector3); ((Vector3)(ref val4))..ctor((val3.x != 0f) ? (num2 / val3.x) : num2, (val3.y != 0f) ? (num2 / val3.y) : num2, (val3.z != 0f) ? (num2 / val3.z) : num2); t.localScale = Vector3.Scale(t.localScale, val4); } } } internal static Component CreateOrUpdateWorldText(Transform parent, string id, string text, Color color, Bounds referenceBounds) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Expected O, but got Unknown //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_028d: 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) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0105: 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_011d: Unknown result type (might be due to invalid IL or missing references) //IL_013b: 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_0153: Unknown result type (might be due to invalid IL or missing references) color.a = 1f; Vector3 center = ((Bounds)(ref referenceBounds)).center; try { TMP_FontAsset val = TMP_Settings.defaultFontAsset; if (!Object.op_Implicit((Object)(object)val)) { TMP_FontAsset[] array = Resources.FindObjectsOfTypeAll<TMP_FontAsset>(); if (array != null && array.Length != 0) { val = array[0]; } } if (Object.op_Implicit((Object)(object)val)) { Transform val2 = parent.Find(id); TextMeshPro val4; if ((Object)(object)val2 == (Object)null) { GameObject val3 = new GameObject(id); val3.transform.SetParent(parent, true); val4 = val3.AddComponent<TextMeshPro>(); ((TMP_Text)val4).font = val; ((TMP_Text)val4).alignment = (TextAlignmentOptions)514; ((TMP_Text)val4).enableWordWrapping = false; val3.AddComponent<BillboardYOnly>().SetActive(on: true); val3.layer = ((Component)parent).gameObject.layer; } else { val4 = ((Component)val2).GetComponent<TextMeshPro>() ?? ((Component)val2).gameObject.AddComponent<TextMeshPro>(); } ((TMP_Text)val4).text = text; ((Graphic)val4).color = color; val4.transform.position = center; val4.transform.localScale = Vector3.one * 0.1f; ((TMP_Text)val4).ForceMeshUpdate(false, false); FitTransformToBounds(val4.transform, Mathf.Max(((Bounds)(ref referenceBounds)).size.x, Mathf.Max(((Bounds)(ref referenceBounds)).size.y, ((Bounds)(ref referenceBounds)).size.z)) * 0.9f); MeshRenderer component = ((Component)val4).GetComponent<MeshRenderer>(); if (Object.op_Implicit((Object)(object)component)) { ((Renderer)component).shadowCastingMode = (ShadowCastingMode)0; ((Renderer)component).receiveShadows = false; ((Renderer)component).sortingOrder = 5000; } return (Component)(object)val4; } } catch { } Transform val5 = parent.Find(id); TextMesh val7; if ((Object)(object)val5 == (Object)null) { GameObject val6 = new GameObject(id); val6.transform.SetParent(parent, true); val7 = val6.AddComponent<TextMesh>(); val7.anchor = (TextAnchor)4; val7.alignment = (TextAlignment)1; val6.AddComponent<BillboardYOnly>().SetActive(on: true); val6.layer = ((Component)parent).gameObject.layer; } else { val7 = ((Component)val5).GetComponent<TextMesh>() ?? ((Component)val5).gameObject.AddComponent<TextMesh>(); } val7.text = text; val7.color = color; val7.fontSize = 64; val7.characterSize = 1f; ((Component)val7).transform.position = center; ((Component)val7).transform.localScale = Vector3.one * 0.1f; FitTransformToBounds(((Component)val7).transform, Mathf.Max(((Bounds)(ref referenceBounds)).size.x, Mathf.Max(((Bounds)(ref referenceBounds)).size.y, ((Bounds)(ref referenceBounds)).size.z)) * 0.9f); MeshRenderer component2 = ((Component)val7).GetComponent<MeshRenderer>(); if (Object.op_Implicit((Object)(object)component2)) { ((Renderer)component2).shadowCastingMode = (ShadowCastingMode)0; ((Renderer)component2).receiveShadows = false; ((Renderer)component2).sortingOrder = 5000; } return (Component)(object)val7; } } internal static class PrefabLetters { private static AssetBundle _bundle; private static readonly Dictionary<char, GameObject> _cache = new Dictionary<char, GameObject>(); private static readonly HashSet<char> _miss = new HashSet<char>(); private static bool _triedLoad; private static void TryLoad() { if (_triedLoad) { return; } _triedLoad = true; try { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string text = Path.Combine(directoryName ?? string.Empty, "soup"); if (File.Exists(text)) { _bundle = AssetBundle.LoadFromFile(text); } } catch { } } internal static GameObject GetLetterPrefab(char c) { TryLoad(); c = char.ToUpperInvariant(c); if (_cache.TryGetValue(c, out GameObject value)) { return value; } if (_miss.Contains(c)) { return null; } if ((Object)(object)_bundle == (Object)null) { _miss.Add(c); return null; } try { GameObject val = _bundle.LoadAsset<GameObject>(c.ToString()); if ((Object)(object)val != (Object)null) { _cache[c] = val; return val; } _miss.Add(c); return null; } catch { _miss.Add(c); return null; } } internal static Transform SpawnOrReplace(Transform parent, string id, GameObject prefab, Bounds refBounds, Color tint) { //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0137: 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_004b: 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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) Transform val = parent.Find(id); if (Object.op_Implicit((Object)(object)val)) { return val; } if (!Object.op_Implicit((Object)(object)prefab)) { return null; } GameObject val2 = Object.Instantiate<GameObject>(prefab, parent); ((Object)val2).name = id; Vector3 center = ((Bounds)(ref refBounds)).center; val2.transform.position = center; val2.transform.localScale = Vector3.one; try { Renderer[] componentsInChildren = val2.GetComponentsInChildren<Renderer>(true); Renderer[] array = componentsInChildren; foreach (Renderer val3 in array) { Material[] materials = val3.materials; foreach (Material val4 in materials) { if (Object.op_Implicit((Object)(object)val4)) { if (val4.HasProperty("_BaseColor")) { val4.SetColor("_BaseColor", tint); } else if (val4.HasProperty("_Color")) { val4.SetColor("_Color", tint); } } } } } catch { } float targetSize = Mathf.Max(((Bounds)(ref refBounds)).size.x, Mathf.Max(((Bounds)(ref refBounds)).size.y, ((Bounds)(ref refBounds)).size.z)) * 0.9f; VisualSwap.FitTransformToBounds(val2.transform, targetSize); return val2.transform; } } public sealed class BillboardYOnly : MonoBehaviour { private bool active; public void SetActive(bool on) { active = on; } private void LateUpdate() { //IL_002b: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) if (!active) { return; } Camera main = Camera.main; if (Object.op_Implicit((Object)(object)main)) { Vector3 val = ((Component)this).transform.position - ((Component)main).transform.position; val.y = 0f; if (((Vector3)(ref val)).sqrMagnitude > 0.0001f) { ((Component)this).transform.rotation = Quaternion.LookRotation(((Vector3)(ref val)).normalized, Vector3.up); } } } } public sealed class Enforcer : MonoBehaviour { private float timer; private void Update() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown timer -= Time.unscaledDeltaTime; if (timer > 0f) { return; } timer = 0.75f; try { Type type = AccessTools.TypeByName("Enemy"); if (type != null) { Object[] array = Object.FindObjectsOfType(type, true); foreach (Object val in array) { DynPatches.TryEnsureEnemy((Component)val); } } } catch { } } } internal static class DynPatches { private static char ResolveEnemyLetterFromContext(Component enemyOrHealth) { try { Type type = AccessTools.TypeByName("Enemy"); Type type2 = AccessTools.TypeByName("EnemyParent"); if (type != null && type2 != null) { Component val = enemyOrHealth.GetComponent(type); if (!Object.op_Implicit((Object)(object)val) && enemyOrHealth != null) { FieldInfo fieldInfo = AccessTools.Field(((object)enemyOrHealth).GetType(), "enemy"); if (fieldInfo != null) { object? value = fieldInfo.GetValue(enemyOrHealth); val = (Component)((value is Component) ? value : null); } } if (Object.op_Implicit((Object)(object)val)) { FieldInfo fieldInfo2 = AccessTools.Field(type, "EnemyParent"); Component val2 = (Component)((fieldInfo2 != null) ? /*isinst with value type is only supported in some contexts*/: null); if (Object.op_Implicit((Object)(object)val2) && type2.IsAssignableFrom(((object)val2).GetType())) { FieldInfo fieldInfo3 = AccessTools.Field(type2, "enemyName"); if (fieldInfo3 != null) { string text = (fieldInfo3.GetValue(val2) as string) ?? string.Empty; text = text.Trim(); if (!string.IsNullOrEmpty(text)) { return char.ToUpperInvariant(text[0]); } } } } } } catch { } try { string name = ((object)enemyOrHealth).GetType().Name; if (!string.IsNullOrEmpty(name)) { return char.ToUpperInvariant(name[0]); } } catch { } return 'E'; } public static void EnemyHealth_Awake_Postfix(object __instance) { //IL_0053: 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_005a: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) try { Component val = (Component)((__instance is Component) ? __instance : null); if (Object.op_Implicit((Object)(object)val)) { object? obj = AccessTools.Field(__instance.GetType(), "meshParent")?.GetValue(__instance); Transform val2 = (Transform)((obj is Transform) ? obj : null); Transform root = (Object.op_Implicit((Object)(object)val2) ? val2 : val.transform); Bounds val3 = VisualSwap.ComputeRenderersBounds(root); Color val4 = VisualSwap.TryGetRendererColor(root, Color.white); VisualSwap.DisableAllRenderers(root); char c = ResolveEnemyLetterFromContext(val); GameObject letterPrefab = PrefabLetters.GetLetterPrefab(c); if (Object.op_Implicit((Object)(object)letterPrefab)) { PrefabLetters.SpawnOrReplace(val.transform, "Empress_EnemyLetter", letterPrefab, val3, val4); } else { VisualSwap.CreateOrUpdateWorldText(val.transform, "Empress_EnemyLetter", c.ToString(), val4, val3); } } } catch { } } public static void Enemy_Start_Postfix(object __instance) { //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: 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) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) try { Component val = (Component)((__instance is Component) ? __instance : null); if (!Object.op_Implicit((Object)(object)val)) { return; } Type type = AccessTools.TypeByName("Enemy"); Transform root = val.transform; bool flag = false; if (type != null) { FieldInfo fieldInfo = AccessTools.Field(type, "HasHealth"); if (fieldInfo != null) { flag = (bool)(fieldInfo.GetValue(__instance) ?? ((object)false)); } if (flag) { object? obj = AccessTools.Field(type, "Health")?.GetValue(__instance); Component val2 = (Component)((obj is Component) ? obj : null); FieldInfo fieldInfo2 = (((Object)(object)val2 != (Object)null) ? AccessTools.Field(((object)val2).GetType(), "meshParent") : null); Transform val3 = (Transform)((fieldInfo2 != null) ? /*isinst with value type is only supported in some contexts*/: null); if (Object.op_Implicit((Object)(object)val3)) { root = val3; } } } Bounds val4 = VisualSwap.ComputeRenderersBounds(root); Color val5 = VisualSwap.TryGetRendererColor(root, Color.white); char c = ResolveEnemyLetterFromContext(val); GameObject letterPrefab = PrefabLetters.GetLetterPrefab(c); VisualSwap.DisableAllRenderers(root); if (Object.op_Implicit((Object)(object)letterPrefab)) { PrefabLetters.SpawnOrReplace(val.transform, "Empress_EnemyLetter", letterPrefab, val4, val5); } else { VisualSwap.CreateOrUpdateWorldText(val.transform, "Empress_EnemyLetter", c.ToString(), val5, val4); } } catch { } } internal static void TryEnsureEnemy(Component inst) { //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_00fd: 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) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_013c: 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) try { Transform val = inst.transform.Find("Empress_EnemyLetter"); if (Object.op_Implicit((Object)(object)val)) { return; } Transform root = inst.transform; Type type = AccessTools.TypeByName("Enemy"); if (type != null) { FieldInfo fieldInfo = AccessTools.Field(type, "HasHealth"); if (fieldInfo != null && (bool)(fieldInfo.GetValue(inst) ?? ((object)false))) { object? obj = AccessTools.Field(type, "Health")?.GetValue(inst); Component val2 = (Component)((obj is Component) ? obj : null); FieldInfo fieldInfo2 = (((Object)(object)val2 != (Object)null) ? AccessTools.Field(((object)val2).GetType(), "meshParent") : null); Transform val3 = (Transform)((fieldInfo2 != null) ? /*isinst with value type is only supported in some contexts*/: null); if (Object.op_Implicit((Object)(object)val3)) { root = val3; } } } Bounds val4 = VisualSwap.ComputeRenderersBounds(root); Color val5 = VisualSwap.TryGetRendererColor(root, Color.white); char c = ResolveEnemyLetterFromContext(inst); GameObject letterPrefab = PrefabLetters.GetLetterPrefab(c); VisualSwap.DisableAllRenderers(root); if (Object.op_Implicit((Object)(object)letterPrefab)) { PrefabLetters.SpawnOrReplace(inst.transform, "Empress_EnemyLetter", letterPrefab, val4, val5); } else { VisualSwap.CreateOrUpdateWorldText(inst.transform, "Empress_EnemyLetter", c.ToString(), val5, val4); } } catch { } } } }