using 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
{
}
}
}
}