Please disclose if your mod was created primarily 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 CLLCVRFix v2.0.0
plugins/CLLCVRFix.dll
Decompiled 2 days agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using TMPro; using UnityEngine; 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: AssemblyTitle("CLLCVRFix")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CLLCVRFix")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4efe4d09-5f76-46c3-9dff-bfff704b49fb")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] public static class CLLCVRHUD { private static MethodInfo getExtraEffect; private static MethodInfo getInfusion; private static MethodInfo getBossAffix; public static void Initialize(Harmony harmony) { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown try { Type type = AccessTools.TypeByName("CreatureLevelControl.API, CreatureLevelControl"); if (type == null) { Debug.LogWarning((object)"CLLC VR Fix: CLLC API not found"); return; } getExtraEffect = AccessTools.Method(type, "GetExtraEffectCreature", (Type[])null, (Type[])null); getInfusion = AccessTools.Method(type, "GetInfusionCreature", (Type[])null, (Type[])null); getBossAffix = AccessTools.Method(type, "GetAffixBoss", (Type[])null, (Type[])null); Type type2 = AccessTools.TypeByName("ValheimVRMod.VRCore.UI.EnemyHudManager, ValheimVRMod"); MethodInfo methodInfo = AccessTools.Method(type2, "UpdateName", (Type[])null, (Type[])null); harmony.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(typeof(CLLCVRHUD), "OnUpdateNamePostfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } catch (Exception arg) { Debug.LogError((object)$"CLLC VR Fix init error: {arg}"); } } private static void OnUpdateNamePostfix(object __instance, Character c) { if ((Object)(object)c == (Object)null) { return; } try { Type type = __instance.GetType(); object obj = AccessTools.Method(type, "getEnemyHud", (Type[])null, (Type[])null)?.Invoke(__instance, new object[1] { c }); if (obj != null) { object? obj2 = AccessTools.Field(obj.GetType(), "gui")?.GetValue(obj); GameObject val = (GameObject)((obj2 is GameObject) ? obj2 : null); if (!((Object)(object)val == (Object)null)) { UpdateName(val, c); UpdateStars(val, c); } } } catch { } } private static void UpdateName(GameObject gui, Character c) { Transform val = gui.transform.Find("Name"); if ((Object)(object)val == (Object)null) { return; } TextMeshProUGUI component = ((Component)val).GetComponent<TextMeshProUGUI>(); if ((Object)(object)component == (Object)null) { return; } string text = ((TMP_Text)component).text; text = RemoveWords(text); string text2 = null; string text3 = "white"; if (c.IsBoss()) { object obj = getBossAffix?.Invoke(null, new object[1] { c }); if (obj != null && obj.ToString() != "None") { text2 = obj.ToString(); text3 = "red"; } } if (text2 == null) { object obj2 = getInfusion?.Invoke(null, new object[1] { c }); if (obj2 != null && obj2.ToString() != "None") { text2 = obj2.ToString(); text3 = GetInfusionColorTag(text2); } } if (text2 == null) { object obj3 = getExtraEffect?.Invoke(null, new object[1] { c }); if (obj3 != null && obj3.ToString() != "None") { text2 = obj3.ToString(); text3 = GetEffectColorTag(text2); } } if (text2 == null) { ((TMP_Text)component).text = text; return; } string text4 = (CLLCVRMain.UseIcons.Value ? GetIcon(text2) : text2); ((TMP_Text)component).text = text + " <color=" + text3 + ">" + text4 + "</color>"; } private static void UpdateStars(GameObject gui, Character c) { //IL_004f: 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_00a0: Unknown result type (might be due to invalid IL or missing references) if (c.IsBoss() || c.GetLevel() <= 1) { return; } string effect = getExtraEffect?.Invoke(null, new object[1] { c })?.ToString(); Color effectColor = GetEffectColor(effect); Transform[] componentsInChildren = gui.GetComponentsInChildren<Transform>(); foreach (Transform val in componentsInChildren) { if (((Object)val).name.StartsWith("star")) { Image componentInChildren = ((Component)val).GetComponentInChildren<Image>(); if ((Object)(object)componentInChildren != (Object)null) { ((Graphic)componentInChildren).color = effectColor; } } } } private static string RemoveWords(string text) { string[] array = new string[18] { "Aggressive", "Quick", "Regenerating", "Curious", "Splitting", "Armored", "Fire", "Frost", "Lightning", "Poison", "Spirit", "Reflective", "Shielded", "Mending", "Summoner", "Elementalist", "Enraged", "Twin" }; string[] array2 = array; foreach (string oldValue in array2) { text = text.Replace(oldValue, ""); } return text.Trim(); } private static string GetEffectColorTag(string effect) { return effect switch { "Aggressive" => "red", "Quick" => "magenta", "Regenerating" => "green", "Curious" => "cyan", "Splitting" => "white", "Armored" => "blue", _ => "#FFD15C", }; } private static string GetInfusionColorTag(string infusion) { return infusion switch { "Fire" => "red", "Frost" => "#80FFFF", "Lightning" => "yellow", "Poison" => "green", "Spirit" => "white", _ => "white", }; } private static Color GetEffectColor(string effect) { //IL_0055: 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_009c: 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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007d: 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_0094: 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) return (Color)(effect switch { "Aggressive" => Color.red, "Quick" => Color.magenta, "Regenerating" => Color.green, "Curious" => Color.cyan, "Splitting" => Color.white, "Armored" => Color.blue, _ => new Color(1f, 0.817f, 0.338f), }); } private static string GetIcon(string name) { return name switch { "Aggressive" => "⚔", "Quick" => "⚡", "Regenerating" => "✚", "Curious" => "\ud83d\udc41", "Splitting" => "✦", "Armored" => "\ud83d\udee1", "Fire" => "\ud83d\udd25", "Frost" => "❄", "Lightning" => "⚡", "Poison" => "☣", "Spirit" => "✧", "Reflective" => "\ud83d\udd01", "Shielded" => "\ud83d\udee1", "Mending" => "✚", "Summoner" => "☠", "Elementalist" => "⚡", "Enraged" => "\ud83d\udd25", "Twin" => "\ud83d\udc65", _ => "?", }; } } [BepInPlugin("geekstreet.cllcvrfix", "CLLC VR Fix", "2.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class CLLCVRMain : BaseUnityPlugin { public static ConfigEntry<bool> UseIcons; private Harmony _harmony; private void Awake() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown UseIcons = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "UseIcons", false, "Show creature effects using icons instead of text"); _harmony = new Harmony("geekstreet.cllcvrfix"); CLLCVRHUD.Initialize(_harmony); ((BaseUnityPlugin)this).Logger.LogInfo((object)"CLLC VR Fix v2 loaded"); } private void OnDestroy() { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } }