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 BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates.Drifter.Bag;
using HG.Reflection;
using HarmonyLib;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.UI;
using ScavengerBingo;
using SimpleJSON;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.UI;
using Zio;
using ZioConfigFile;
using ZioRiskOfOptions;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("RiskUIFIxed")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("RiskUIFIxed")]
[assembly: AssemblyTitle("RiskUIFIxed")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: UnverifiableCode]
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 ExamplePlugin
{
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);
}
}
}
namespace MaterialHud
{
public class AddressablePrefabLoader : MonoBehaviour
{
public string Address;
public bool defaultActiveState = true;
private void OnValidate()
{
Awake();
}
private void Awake()
{
//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)
GameObject val = Addressables.LoadAssetAsync<GameObject>((object)Address).WaitForCompletion();
Object.Instantiate<GameObject>(val, ((Component)this).transform).SetActive(defaultActiveState);
}
}
public class BepinConfigParentManager : MonoBehaviour, IConfigHandler
{
public Transform[] choices;
public string category;
public string key;
public string description;
private ZioConfigEntry<int> _configEntry;
public void Awake()
{
Startup();
((ZioConfigEntryBase)_configEntry).SettingChanged += ConfigUpdated;
}
private void OnEnable()
{
ConfigUpdated(null, null, arg3: false);
}
public void OnDestroy()
{
((ZioConfigEntryBase)_configEntry).SettingChanged -= ConfigUpdated;
}
private void ConfigUpdated(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
int num = Math.Min(choices.Length - 1, _configEntry.Value);
((Component)this).transform.SetParent(choices[num], false);
}
public void Startup()
{
_configEntry = ConfigHelper.Bind(category, key, 0, description, null, choices.Length - 1);
}
}
public class BepinScaleController : MonoBehaviour
{
public string Category;
public string Key;
public string Description;
private ZioConfigEntry<float> _configValue;
private void Awake()
{
_configValue = ConfigHelper.Bind(Category, Key, 100f, Description, null, 300f);
((ZioConfigEntryBase)_configValue).SettingChanged += SettingChanged;
}
private void OnEnable()
{
SettingChanged(null, null, arg3: false);
}
private void OnDestroy()
{
((ZioConfigEntryBase)_configValue).SettingChanged -= SettingChanged;
}
private void SettingChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
float num = _configValue.Value / 100f;
Vector3 localScale = ((Component)this).transform.localScale;
localScale.y = num;
localScale.x = num;
((Component)this).transform.localScale = localScale;
}
}
public class BepinVerticalSpacing : MonoBehaviour
{
private ZioConfigEntry<float> configEntry;
public string desc;
public string key;
private GridLayoutGroup target;
public float Value
{
get
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
return target.spacing.y;
}
set
{
//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_001b: Unknown result type (might be due to invalid IL or missing references)
Vector2 spacing = target.spacing;
spacing.y = value;
target.spacing = spacing;
}
}
private void Awake()
{
target = ((Component)this).GetComponent<GridLayoutGroup>();
configEntry = ConfigHelper.Bind("Repositioning", key, Value, desc, null, 200f);
((ZioConfigEntryBase)configEntry).SettingChanged += SettingChanged;
}
private void OnEnable()
{
SettingChanged(null, null, arg3: false);
}
private void OnDestroy()
{
((ZioConfigEntryBase)configEntry).SettingChanged -= SettingChanged;
}
private void SettingChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
Value = configEntry.Value;
}
}
public class CloneFillValue : MonoBehaviour
{
public Image from;
private Image _to;
private void Awake()
{
_to = ((Component)this).GetComponent<Image>();
}
private void Update()
{
_to.fillAmount = from.fillAmount;
}
}
public class CombatHealthBarLoader : MonoBehaviour
{
public CombatHealthBarViewer viewer;
private static GameObject HealthBar => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/CombatHealthbar.prefab").WaitForCompletion();
public void Start()
{
viewer.healthBarPrefab = HealthBar;
}
}
public static class ConfigHelper
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static Action<ZioConfigEntryBase, object, bool> <>9__8_0;
public static UnityAction <>9__10_0;
public static UnityAction <>9__10_1;
internal void <get_SelectedProfile>b__8_0(ZioConfigEntryBase _, object profile, bool _)
{
SelectedProfile = (int)profile;
}
internal void <MakeSelectedProfileOptions>b__10_0()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Expected O, but got Unknown
configFiles.Add(new ZioConfigFile(whichFile.FileSystem, UPath.op_Implicit($"{UPathExtensions.GetDirectory(whichFile.FilePath)}/RiskUI/{default(Guid)}"), true, whichFile.OwnerMetadata));
option.max = configFiles.Count - 1;
}
internal void <MakeSelectedProfileOptions>b__10_1()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
whichFile.FileSystem.DeleteFile(configFiles[SelectedProfile].FilePath);
configFiles.RemoveAt(SelectedProfile);
option.max = configFiles.Count - 1;
}
}
public static Dictionary<string, ZioConfigEntryBase> Entries = new Dictionary<string, ZioConfigEntryBase>();
private static ZioConfigEntry<int> _selectedProfile;
private static IntSliderConfig option;
public static ZioConfigFile whichFile => RiskUIPlugin.ConfigFile;
public static List<ZioConfigFile> configFiles => RiskUIPlugin.ConfigFiles;
public static int SelectedProfile
{
get
{
if (_selectedProfile != null)
{
return _selectedProfile.Value;
}
_selectedProfile = whichFile.Bind<int>("Profiles", "Selected Profile", 0, "Currently selected profile.");
((ZioConfigEntryBase)_selectedProfile).SettingChanged += delegate(ZioConfigEntryBase _, object profile, bool _)
{
SelectedProfile = (int)profile;
};
if (RiskUIPlugin.RiskOfOptionsEnabled)
{
MakeSelectedProfileOptions();
}
return _selectedProfile.Value;
}
set
{
_selectedProfile.Value = value;
foreach (KeyValuePair<ConfigDefinition, ZioConfigEntryBase> item in whichFile)
{
if (!(item.Key == ((ZioConfigEntryBase)_selectedProfile).Definition))
{
ApplyConfigProfile(item.Value);
}
}
}
}
private static void MakeSelectedProfileOptions()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Expected O, but got Unknown
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Expected O, but got Unknown
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Expected O, but got Unknown
//IL_0084: 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_008f: Expected O, but got Unknown
option = new IntSliderConfig
{
max = configFiles.Count - 1
};
ModSettingsManager.AddOption((BaseOption)new ZioIntSliderOption(_selectedProfile, option));
object obj = <>c.<>9__10_0;
if (obj == null)
{
UnityAction val = delegate
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Expected O, but got Unknown
configFiles.Add(new ZioConfigFile(whichFile.FileSystem, UPath.op_Implicit($"{UPathExtensions.GetDirectory(whichFile.FilePath)}/RiskUI/{default(Guid)}"), true, whichFile.OwnerMetadata));
option.max = configFiles.Count - 1;
};
<>c.<>9__10_0 = val;
obj = (object)val;
}
ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Add Profile", "Profiles", (UnityAction)obj));
object obj2 = <>c.<>9__10_1;
if (obj2 == null)
{
UnityAction val2 = delegate
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
whichFile.FileSystem.DeleteFile(configFiles[SelectedProfile].FilePath);
configFiles.RemoveAt(SelectedProfile);
option.max = configFiles.Count - 1;
};
<>c.<>9__10_1 = val2;
obj2 = (object)val2;
}
ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Delete Profile", "Profiles", (UnityAction)obj2));
}
public static ZioConfigEntry<T> Bind<T>(string category, string key, T defaultValue, string desc, [CanBeNull] Action<ZioConfigEntry<T>> firstSetupCallback = null, object riskOfOptionsExtra = null)
{
string key2 = category + key;
if (!Entries.ContainsKey(key2))
{
ZioConfigEntry<T> val = RiskUIPlugin.ConfigFile.Bind<T>(category, key, defaultValue, desc);
((ZioConfigEntryBase)val).SettingChanged += UpdateSelectedProfile;
foreach (ZioConfigFile configFile in RiskUIPlugin.ConfigFiles)
{
configFile.Bind<T>(category, key, defaultValue, desc);
}
ApplyConfigProfile((ZioConfigEntryBase)(object)val);
if (RiskUIPlugin.RiskOfOptionsEnabled)
{
FillRiskOfOptions<T>(val, riskOfOptionsExtra);
}
Entries.Add(key2, (ZioConfigEntryBase)(object)val);
firstSetupCallback?.Invoke(val);
}
return (ZioConfigEntry<T>)(object)Entries[key2];
}
private static void UpdateSelectedProfile(ZioConfigEntryBase arg1, object arg2, bool arg3)
{
configFiles[SelectedProfile][arg1.Definition].BoxedValue = arg1.BoxedValue;
}
private static void ApplyConfigProfile(ZioConfigEntryBase configEntry)
{
if (RiskUIPlugin.NeverBeforeInitialized)
{
UpdateSelectedProfile(configEntry, null, arg3: false);
}
else
{
configEntry.BoxedValue = configFiles[SelectedProfile][configEntry.Definition].BoxedValue;
}
}
private static void FillRiskOfOptions<T>(ZioConfigEntry<T> configEntry, object riskOfOptionsExtra = null)
{
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Expected O, but got Unknown
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: Expected O, but got Unknown
//IL_0066: 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_007c: Expected O, but got Unknown
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Expected O, but got Unknown
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Expected O, but got Unknown
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Expected O, but got Unknown
if (!(configEntry is ZioConfigEntry<string> val))
{
if (!(configEntry is ZioConfigEntry<bool> val2))
{
if (!(configEntry is ZioConfigEntry<int> val3))
{
if (!(configEntry is ZioConfigEntry<float> val4))
{
if (configEntry is ZioConfigEntry<Color> val5)
{
ModSettingsManager.AddOption((BaseOption)new ZioColorOption(val5));
}
}
else
{
ModSettingsManager.AddOption((BaseOption)new ZioSliderOption(val4, new SliderConfig
{
max = (float)riskOfOptionsExtra
}));
}
}
else
{
ModSettingsManager.AddOption((BaseOption)new ZioIntSliderOption(val3, new IntSliderConfig
{
max = (int)riskOfOptionsExtra
}));
}
}
else
{
ModSettingsManager.AddOption((BaseOption)new ZioCheckBoxOption(val2));
}
}
else
{
ModSettingsManager.AddOption((BaseOption)new ZioStringInputFieldOption(val));
}
}
}
public class DifficultyTextController : MonoBehaviour, IConfigHandler
{
public TextMeshProUGUI text;
public string[] segmentTokens;
public Image ringImage;
public Image ringBehind;
public RedToColorRemapperIndividual textRecolorer;
public RedToColorRemapperIndividual ringRecolorer;
public RedToColorRemapperIndividual ringBehindRecolorer;
public RedToColorRemapperIndividual timerTextRecolorer;
public RedToColorRemapperIndividual timerCentiTextRecolorer;
public TextMeshProUGUI monsterLevel;
public float levelsPerSegment = 3f;
private int _previousSegment = -1;
private ZioConfigEntry<bool> _textRecolor;
private ZioConfigEntry<bool> _ringLowerRecolor;
private ZioConfigEntry<bool> _ringRecolor;
private ZioConfigEntry<bool> _timerRecolor;
private ZioConfigEntry<bool> _timerCentiRecolor;
private ZioConfigEntry<bool> _monsterLevelEnabled;
public static readonly Color[] DifficultyColors = (Color[])(object)new Color[9]
{
new Color(0.28627452f, 0.9490196f, 0.8509804f),
new Color(0.2627451f, 83f / 85f, 38f / 85f),
new Color(1f, 0.8862745f, 0.4f),
new Color(1f, 0.6627451f, 0.2627451f),
new Color(1f, 0.4862745f, 12f / 85f),
new Color(1f, 0.4f, 0.2627451f),
new Color(1f, 0.2627451f, 12f / 85f),
new Color(1f, 0.101960786f, 0.101960786f),
new Color(0.827451f, 0f, 0f)
};
private void Awake()
{
Debug.Log((object)"Difficulty controler ran");
text = ((Component)this).GetComponent<TextMeshProUGUI>();
segmentTokens = new string[9];
segmentTokens[0] = "Easy";
segmentTokens[1] = "Normal";
segmentTokens[2] = "Hard";
segmentTokens[3] = "Very Hard";
segmentTokens[4] = "Insane";
segmentTokens[5] = "Impossible";
segmentTokens[6] = "i see you";
segmentTokens[7] = "I'm coming for you";
segmentTokens[8] = "HAHAHHAHAHAHAHHAHAH";
textRecolorer = new RedToColorRemapperIndividual();
ringRecolorer = new RedToColorRemapperIndividual();
ringBehindRecolorer = new RedToColorRemapperIndividual();
timerTextRecolorer = new RedToColorRemapperIndividual();
timerCentiTextRecolorer = new RedToColorRemapperIndividual();
GameObject val = GameObject.Find("RiskUI(Clone)");
GameObject val2 = HarmonyPatches.FindRecursive(val.transform, "Monster Level");
if ((Object)(object)val2 != (Object)null)
{
Debug.Log((object)("Found MLevel: " + (object)val2));
monsterLevel = val2.GetComponent<TextMeshProUGUI>();
}
textRecolorer.target = (MonoBehaviour)(object)text;
ringRecolorer.target = (MonoBehaviour)(object)ringImage;
ringBehindRecolorer.target = (MonoBehaviour)(object)ringBehind;
timerTextRecolorer.target = (MonoBehaviour)(object)HarmonyPatches.FindRecursive(val.transform, "Seconds").GetComponent<TextMeshProUGUI>();
timerCentiTextRecolorer.target = (MonoBehaviour)(object)HarmonyPatches.FindRecursive(val.transform, "CentiSeconds").GetComponent<TextMeshProUGUI>();
Debug.Log((object)text);
Startup();
((ZioConfigEntryBase)_textRecolor).SettingChanged += TextColorerChanged;
((ZioConfigEntryBase)_ringLowerRecolor).SettingChanged += RingLowerColorerChanged;
((ZioConfigEntryBase)_ringRecolor).SettingChanged += RingColorerChanged;
((ZioConfigEntryBase)_timerRecolor).SettingChanged += TimerColorerChanged;
((ZioConfigEntryBase)_timerCentiRecolor).SettingChanged += CentiColorerChanged;
((ZioConfigEntryBase)_monsterLevelEnabled).SettingChanged += MonsterLevelChanged;
}
private void MonsterLevelChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
((Component)monsterLevel).gameObject.SetActive(_monsterLevelEnabled.Value);
}
private void OnDestroy()
{
((ZioConfigEntryBase)_textRecolor).SettingChanged -= TextColorerChanged;
((ZioConfigEntryBase)_ringLowerRecolor).SettingChanged -= RingLowerColorerChanged;
((ZioConfigEntryBase)_ringRecolor).SettingChanged -= RingColorerChanged;
((ZioConfigEntryBase)_timerRecolor).SettingChanged -= TimerColorerChanged;
((ZioConfigEntryBase)_timerCentiRecolor).SettingChanged -= CentiColorerChanged;
}
private void RingColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
((Behaviour)ringRecolorer).enabled = !_ringRecolor.Value;
UpdateColors();
}
private void RingLowerColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
((Behaviour)ringBehindRecolorer).enabled = !_ringLowerRecolor.Value;
UpdateColors();
}
private void TextColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
((Behaviour)textRecolorer).enabled = !_textRecolor.Value;
UpdateColors();
}
private void CentiColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
((Behaviour)timerCentiTextRecolorer).enabled = !_timerCentiRecolor.Value;
UpdateColors();
}
private void TimerColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
((Behaviour)timerTextRecolorer).enabled = !_timerRecolor.Value;
UpdateColors();
}
public void Update()
{
if (Object.op_Implicit((Object)(object)Run.instance))
{
float num = Run.instance.ambientLevel - 1f;
float num2 = num / levelsPerSegment;
int num3 = Mathf.FloorToInt(num2);
float fillAmount = num2 - (float)num3;
if (num3 >= segmentTokens.Length)
{
fillAmount = 1f;
}
if (_monsterLevelEnabled.Value)
{
((TMP_Text)monsterLevel).text = Language.GetStringFormatted("AMBIENT_LEVEL_DISPLAY_FORMAT", new object[1] { Mathf.FloorToInt(num + 1f) });
}
int num4 = Math.Min(segmentTokens.Length - 1, num3);
if (num4 != _previousSegment)
{
((TMP_Text)text).text = Language.GetString(segmentTokens[num4]).ToUpper();
_previousSegment = num4;
UpdateColors();
}
ringImage.fillAmount = fillAmount;
}
}
private void UpdateColors()
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: 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_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Run.instance))
{
int num = Math.Max(0, _previousSegment);
Color color = DifficultyColors[num];
if (_ringRecolor.Value)
{
((Graphic)(Image)ringRecolorer.target).color = color;
}
if (_ringLowerRecolor.Value)
{
((Graphic)(Image)ringBehindRecolorer.target).color = color;
}
if (_textRecolor.Value)
{
((Graphic)(TextMeshProUGUI)textRecolorer.target).color = color;
}
if (_timerRecolor.Value)
{
((Graphic)(TextMeshProUGUI)timerTextRecolorer.target).color = color;
}
if (_timerCentiRecolor.Value)
{
((Graphic)(TextMeshProUGUI)timerCentiTextRecolorer.target).color = color;
}
}
}
public void Startup()
{
_textRecolor = ConfigHelper.Bind("General", "Difficulty Text Colored Per Difficulty", defaultValue: false, "Should the difficulty text be recolored based on current difficulty.");
_ringLowerRecolor = ConfigHelper.Bind("General", "Difficulty Lower Ring Colored Per Difficulty", defaultValue: false, "Should the difficulty lower ring be recolored based on current difficulty.");
_ringRecolor = ConfigHelper.Bind("General", "Difficulty Upper Ring Colored Per Difficulty", defaultValue: false, "Should the difficulty upper ring be recolored based on current difficulty.");
_timerRecolor = ConfigHelper.Bind("General", "Timer Text Colored Per Difficulty", defaultValue: false, "Should the timer text be recolored based on current difficulty.");
_timerCentiRecolor = ConfigHelper.Bind("General", "Centisecond Timer Text Colored Per Difficulty", defaultValue: false, "Should the timer centisecond text be recolored based on current difficulty.");
_monsterLevelEnabled = ConfigHelper.Bind("General", "Monster Level Text Enable", defaultValue: false, "Should the monster level text be displayed.");
}
}
[HarmonyPatch]
public static class DisableSynergies
{
public static void DisableFunction(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
val.Index += 3;
val.Emit(OpCodes.Ret);
}
}
public class FieldLoader : MonoBehaviour
{
public string addressablePath;
public string targetFieldName;
public MonoBehaviour target;
private static readonly MethodInfo LoadAsset = typeof(Addressables).GetMethod("LoadAssetAsync", new Type[1] { typeof(string) });
public void Start()
{
Type type = ((object)target).GetType();
FieldInfo field = type.GetField(targetFieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (!(field == null))
{
MethodInfo methodInfo = LoadAsset.MakeGenericMethod(field.FieldType);
object obj = methodInfo.Invoke(null, new object[1] { addressablePath });
MethodInfo method = obj.GetType().GetMethod("WaitForCompletion", BindingFlags.Instance | BindingFlags.Public);
object value = method.Invoke(obj, null);
field.SetValue(target, value);
}
}
}
[HarmonyPatch]
public static class HarmonyPatches
{
public static readonly Type hBar = typeof(HealthBar);
[HarmonyPostfix]
[HarmonyPatch(typeof(CameraRigController), "GetHUDPath")]
public static void RedirectHUDToAssetBundle(ref string __result)
{
__result = "RiskUI/RiskUI_HUD";
}
[HarmonyPrefix]
[HarmonyPatch(typeof(CameraRigController), "UpdateHUD")]
public static bool ReplaceHUDInUpdateHUD(CameraRigController __instance)
{
try
{
if (!__instance.createHud)
{
return true;
}
if (Object.op_Implicit((Object)(object)__instance.hud))
{
Object.Destroy((Object)(object)((Component)__instance.hud).gameObject);
}
GameObject val = RiskUIPlugin.CreateHud();
if ((Object)(object)val == (Object)null)
{
return true;
}
GameObject val2 = Object.Instantiate<GameObject>(val);
__instance.hud = val2.GetComponent<HUD>();
if ((Object)(object)__instance.hud == (Object)null)
{
Object.Destroy((Object)(object)val2);
return true;
}
Canvas component = ((Component)__instance.hud).GetComponent<Canvas>();
if ((Object)(object)component != (Object)null)
{
if ((Object)(object)component.worldCamera == (Object)null)
{
component.worldCamera = __instance.uiCam;
Debug.Log((object)"Assigned uiCam to HUD Canvas");
}
}
else
{
Debug.LogError((object)"HUD is missing Canvas component!");
}
__instance.hud.cameraRigController = __instance;
CrosshairManager component2 = ((Component)__instance.hud).GetComponent<CrosshairManager>();
if ((Object)(object)component2 != (Object)null)
{
component2.cameraRigController = __instance;
}
__instance.hud.localUserViewer = __instance.localUserViewer;
CameraRigController.OnHUDUpdated?.Invoke();
Debug.Log((object)"Custom RiskUI HUD loaded successfully");
return false;
}
catch (Exception arg)
{
Debug.LogError((object)$"Error in ReplaceHUDInUpdateHUD: {arg}");
return true;
}
}
[HarmonyILManipulator]
[HarmonyPatch(typeof(HealthBar), "UpdateBarInfos")]
public static void FixInfusionColor(ILContext il)
{
//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);
val.GotoNext(new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, hBar, "voidPanelColor")
});
val.Remove();
val.EmitDelegate<Func<Color>>((Func<Color>)delegate
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: 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_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: 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_0047: Unknown result type (might be due to invalid IL or missing references)
Color value3 = RiskUIPlugin.VoidColor.Value;
return (value3 == Color.clear) ? Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f) : value3;
});
val.GotoNext(new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, hBar, "infusionPanelColor")
});
val.Remove();
val.EmitDelegate<Func<Color>>((Func<Color>)delegate
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: 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_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: 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_0047: Unknown result type (might be due to invalid IL or missing references)
Color value2 = RiskUIPlugin.InfusionColor.Value;
return (value2 == Color.clear) ? Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f) : value2;
});
val.GotoNext(new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, hBar, "voidShieldsColor")
});
val.Remove();
val.EmitDelegate<Func<Color>>((Func<Color>)delegate
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: 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_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: 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_0047: Unknown result type (might be due to invalid IL or missing references)
Color value = RiskUIPlugin.VoidShieldColor.Value;
return (value == Color.clear) ? Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f) : value;
});
}
[HarmonyPrefix]
[HarmonyPatch(typeof(Run), "InstantiateUi")]
public static void ReplaceUIPrefab(Run __instance)
{
try
{
if ((__instance.nameToken == "ECLIPSE_GAMEMODE_NAME" || __instance.nameToken == "GAMEMODE_CLASSIC_RUN_NAME") && (Object)(object)__instance.uiPrefab != (Object)null)
{
__instance.uiPrefab = RiskUIPlugin.CreateClassicRunHud();
}
}
catch (Exception arg)
{
Debug.LogError((object)$"Error in ReplaceUIPrefab: {arg}");
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(DifficultyDef), "GetIconSprite")]
public static bool SwapIcon(DifficultyDef __instance, ref Sprite __result)
{
if (__instance.nameToken == null || !RiskUIPlugin.DifficultyIconMap.ContainsKey(__instance.nameToken))
{
return true;
}
__result = RiskUIPlugin.DifficultyIconMap[__instance.nameToken];
return false;
}
[HarmonyILManipulator]
[HarmonyPatch(typeof(AllyCardManager), "Awake")]
public static void ReplaceAllyCards(ILContext il)
{
//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);
val.GotoNext(new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Prefabs/UI/AllyCard")
});
val.RemoveRange(2);
val.EmitDelegate<Func<GameObject>>((Func<GameObject>)RiskUIPlugin.CreateAllyCard);
}
[HarmonyPrefix]
[HarmonyPatch(typeof(AllyCardController), "Awake")]
public static void AllyCardFix(AllyCardController __instance)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
GameObject val = new GameObject("droneitem");
val.transform.position = ((Component)__instance).transform.position;
__instance.droneItemIndicatorObj = val;
}
public static void MoveVoidSurvivorController(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
val.GotoNext(new Func<Instruction, bool>[2]
{
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<VoidSurvivorController>(x, "overlayChildLocatorEntry")
});
val.RemoveRange(2);
val.Emit(OpCodes.Ldstr, "BottomLeftCluster");
}
[HarmonyPostfix]
[HarmonyPatch(typeof(EnemyInfoPanel), "Init")]
public static void ChangeMonsterInventory()
{
EnemyInfoPanel.panelPrefab = RiskUIPlugin.EnemyInfoPanel;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(ObjectivePanelController), "AddObjectiveTracker")]
public static bool ReplaceObjectiveTrackerPrefab(ObjectivePanelController __instance)
{
__instance.objectiveTrackerPrefab = RiskUIPlugin.CreateObjectiveTracker();
Debug.Log((object)__instance.objectiveTrackerPrefab);
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(ObjectiveTracker), "SetStrip")]
public static bool StripFix(ObjectiveTracker __instance, GameObject stripObject)
{
try
{
Debug.Log((object)"=== StripFix Patch ===");
Debug.Log((object)$"stripObject is null: {(Object)(object)stripObject == (Object)null}");
Debug.Log((object)$"__instance is null: {__instance == null}");
if ((Object)(object)stripObject == (Object)null)
{
Debug.LogError((object)"stripObject is NULL!");
return true;
}
__instance.stripObject = stripObject;
Transform val = stripObject.transform.Find("Label");
Debug.Log((object)$"Label transform found: {(Object)(object)val != (Object)null}");
if ((Object)(object)val != (Object)null)
{
__instance.label = ((Component)val).GetComponent<TextMeshProUGUI>();
Debug.Log((object)$"Label component: {(Object)(object)__instance.label != (Object)null}");
}
else
{
Debug.LogError((object)"Could not find 'Label' transform!");
}
Transform val2 = stripObject.transform.Find("Checkbox");
Debug.Log((object)$"Checkbox transform found: {(Object)(object)val2 != (Object)null}");
if ((Object)(object)val2 != (Object)null)
{
__instance.checkbox = ((Component)val2).GetComponent<Image>();
Debug.Log((object)$"Checkbox component: {(Object)(object)__instance.checkbox != (Object)null}");
}
else
{
Debug.LogError((object)"Could not find 'Checkbox' transform!");
}
if ((Object)(object)__instance.label != (Object)null && (Object)(object)__instance.checkbox != (Object)null)
{
__instance.UpdateStrip();
Debug.Log((object)"UpdateStrip called successfully");
}
else
{
Debug.LogError((object)"Missing required components - skipping UpdateStrip");
}
Debug.Log((object)"=== End StripFix ===");
return false;
}
catch (Exception arg)
{
Debug.LogError((object)$"Error in StripFix: {arg}");
return true;
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(ContextManager), "Awake")]
public static bool ReplaceContextManagerUpdate(ContextManager __instance)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Expected O, but got Unknown
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Expected O, but got Unknown
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Expected O, but got Unknown
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Expected O, but got Unknown
__instance.inspectDisplay = new GameObject("instanceDisplay");
__instance.contextDisplay = new GameObject("ContextDisplay");
GameObject val = new GameObject("InspectGlyph");
GameObject val2 = new GameObject("InspectDescription");
val.transform.SetParent(__instance.inspectDisplay.transform);
val2.transform.SetParent(__instance.inspectDisplay.transform);
__instance.inspectGlyphTMP = val.AddComponent<TextMeshProUGUI>();
__instance.inspectDescriptionTMP = val2.AddComponent<TextMeshProUGUI>();
GameObject val3 = new GameObject("ContextGlyph");
GameObject val4 = new GameObject("ContextDescription");
val3.transform.SetParent(__instance.contextDisplay.transform);
val4.transform.SetParent(__instance.contextDisplay.transform);
__instance.glyphTMP = val3.AddComponent<TextMeshProUGUI>();
__instance.descriptionTMP = val4.AddComponent<TextMeshProUGUI>();
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(CombatHealthBarViewer), "Awake")]
public static bool CombatHealthPrefabFix(CombatHealthBarViewer __instance)
{
__instance.healthBarPrefab = FindPrefab("Assets/RoR2/Base/UI/HUD/CombatHealthbar.prefab");
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(NotificationUIController), "SetUpNotification")]
public static bool NotificationPrefabFix(NotificationUIController __instance)
{
__instance.genericNotificationPrefab = FindPrefab("Assets/RoR2/Base/UI/HUD/NotificationPanels/NotificationPanel2.prefab");
__instance.genericTransformationNotificationPrefab = FindPrefab("Assets/RoR2/Base/UI/HUD/NotificationPanels/GenericTransformationNotificationPanel.prefab");
__instance.cloverVoidTransformationNotificationPrefab = FindPrefab("Assets/RoR2/DLC1/Items/CloverVoid/CloverVoidTransformationNotificationPanel.prefab");
__instance.droneRepairNotificationPrefab = FindPrefab("Assets/RoR2/DLC3/UI/NotificationPanels/DroneRepairNotificationPanel.prefab");
__instance.teleportOnLowHealthRegenTransformationNotificationPrefab = FindPrefab("Assets/RoR2/DLC2/Items/LowerPricedChests/TeleportOnLowHealthRegenTransformationNotificationPanel.prefab");
__instance.contagiousVoidTransformationNotificationPrefab = FindPrefab("Assets/RoR2/DLC1/UI/HUD/NotificationPanels/VoidTransformationNotificationPanel.prefab");
__instance.regeneratingScrapRegenTransformationNotificationPrefab = FindPrefab("Assets/RoR2/DLC1/Items/RegeneratingScrap/RegeneratingScrapRegenTransformationNotificationPanel.prefab");
__instance.LowerPricedChestsRegenTransformationNotificationPrefab = FindPrefab("Assets/RoR2/DLC2/Items/LowerPricedChests/LowerPricedChestsRegenTransformationNotificationPanel.prefab");
return true;
}
public static bool ItemIconPrefabFix(ItemIcon __instance)
{
return true;
}
public static bool SpriteAsNumberManagerPrefabFix(SpriteAsNumberManager __instance)
{
__instance.imagePrefab = FindPrefab("Assets/RoR2/Base/UI/SpriteText/Visual_Assets/SpriteNumberImage.prefab").transform;
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(ItemInventoryDisplay), "Awake")]
public static bool DebugIID(ItemInventoryDisplay __instance)
{
__instance.itemIconPrefab = FindPrefab("Assets/RoR2/Base/UI/ItemIcon.prefab");
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(HUD), "Awake")]
public static bool ScoreBoardPatch(HUD __instance)
{
__instance.scoreboardPanel = GameObject.Find("ScoreboardPanel");
return true;
}
[HarmonyPostfix]
[HarmonyPatch(typeof(HUD), "Awake")]
public static void DifFix(HUD __instance)
{
//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
//IL_01e0: Expected O, but got Unknown
//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Expected O, but got Unknown
GameObject val = GameObject.Find("RiskUI(Clone)");
if (!((Object)(object)val != (Object)null))
{
return;
}
GameObject val2 = FindRecursive(val.transform, "DifficultyText");
if ((Object)(object)val2 != (Object)null)
{
Debug.Log((object)("Found Text: " + (object)val2));
val2.AddComponent<DifficultyTextController>();
}
GameObject val3 = FindRecursive(val.transform, "HorizontalLayout");
if ((Object)(object)val3 == (Object)null)
{
Debug.LogError((object)"Could not find HorizontalLayout");
}
else
{
GameObject val4 = FindRecursive(val3.transform, "Image");
if ((Object)(object)val4 != (Object)null)
{
Debug.Log((object)("Found BackRing: " + (object)val4));
val2.GetComponent<DifficultyTextController>().ringBehind = val4.GetComponent<Image>();
}
GameObject val5 = FindRecursive(val.transform, "Top");
if ((Object)(object)val5 != (Object)null)
{
Debug.Log((object)("Found Ring: " + (object)val5));
val2.GetComponent<DifficultyTextController>().ringImage = val5.GetComponent<Image>();
}
}
GameObject val6 = FindRecursive(val.transform, "TextContainer");
if ((Object)(object)val6 != (Object)null)
{
GameObject val7 = FindRecursive(val.transform, "ItemContainer");
val7.AddComponent<Image>();
((Behaviour)val7.GetComponent<Image>()).enabled = false;
}
GameObject val8 = FindRecursive(val.transform, "ScoreboardPanel");
if ((Object)(object)val8 != (Object)null)
{
}
GameObject val9 = FindRecursive(val.transform, "BottomRightCluster");
if ((Object)(object)val9 != (Object)null)
{
GameObject val10 = FindRecursive(val.transform, "Scaler");
GameObject val11 = new GameObject("UtilityArea");
val11.transform.SetParent(val10.transform);
GameObject val12 = new GameObject("DisplayRoot");
val12.transform.SetParent(val11.transform);
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(SkillIcon), "Update")]
public static bool SkillFix(SkillIcon __instance)
{
float cooldownRemaining = __instance.targetSkill.cooldownRemaining;
float num = __instance.targetSkill.CalculateFinalRechargeInterval();
float fillAmount = Mathf.Clamp01(1f - cooldownRemaining / num);
GameObject val = FindRecursive(((Component)__instance).transform, "OnCooldown");
Image component = FindRecursive(((Component)__instance).transform, "Mask").GetComponent<Image>();
if (cooldownRemaining == 0f)
{
((Behaviour)component).enabled = false;
val.SetActive(false);
}
else
{
((Behaviour)component).enabled = true;
val.SetActive(true);
}
component.fillAmount = fillAmount;
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(ScoreboardStrip), "SetMaster")]
public static void SbFixfinal(ScoreboardStrip __instance, CharacterMaster newMaster)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
GameObject val = GameObject.Find("RiskUI(Clone)");
GameObject val2 = GameObject.Find("RoR2Application");
GameObject val3 = FindRecursive(val2.transform, "MPEventSystem Player0");
GameObject val4 = new GameObject("ItemCount");
val4.transform.parent = ((Component)__instance).transform;
GameObject val5 = new GameObject("nameFocusHiglight");
val5.transform.parent = ((Component)__instance).transform;
val5.AddComponent<Image>();
val4.AddComponent<HGTextMeshProUGUI>();
__instance.itemCountText = (TextMeshProUGUI)(object)val4.GetComponent<HGTextMeshProUGUI>();
__instance.nameFocusHighlight = val5.GetComponent<Image>();
UIInputPassthrough val6 = ((Component)__instance).gameObject.AddComponent<UIInputPassthrough>();
((Behaviour)val6).enabled = true;
val6.OnlyAllowMovement = true;
MPEventSystemLocator val7 = ((Component)__instance).gameObject.AddComponent<MPEventSystemLocator>();
((Behaviour)val7).enabled = true;
val7.eventSystemProvider = val.GetComponent<MPEventSystemProvider>();
val7.eventSystem = val3.GetComponent<MPEventSystem>();
UILayerSetFromParent val8 = ((Component)__instance).gameObject.AddComponent<UILayerSetFromParent>();
((Behaviour)val8).enabled = false;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(BaggedObject), "OnEnter")]
public static void FixDrifterUI(BaggedObject __instance)
{
__instance.uiOverlayPrefab = FindPrefab("Assets/RoR2/DLC3/Characters/Drifter/Skills/Passive/Bag UI.prefab");
}
[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
[HarmonyPatch(typeof(HUDBossHealthBarController), "<ApplyBars>g__HandleBar|37_0")]
public static void CallHandleBar(Image targetImage, ref BarInfo healthInfo, ref BarInfo oldHealthInfo)
{
}
[HarmonyPatch(typeof(HUDBossHealthBarController), "ApplyBars")]
[HarmonyPrefix]
private static void AfterApplyBars(HUDBossHealthBarController __instance)
{
Debug.Log((object)"Running Bars");
GameObject val = FindRecursive(((Component)__instance).gameObject.transform, "Center");
GameObject val2 = FindRecursive(val.transform, "FillPanelRight");
Image targetImage = default(Image);
if (val2.TryGetComponent<Image>(ref targetImage))
{
Debug.Log((object)"Got RightBar");
CallHandleBar(targetImage, ref __instance.healthInfo, ref __instance.oldHealthInfo);
}
GameObject val3 = FindRecursive(((Component)__instance).gameObject.transform, "Delayed");
GameObject val4 = FindRecursive(val3.transform, "FillPanelRight");
Image targetImage2 = default(Image);
if (val4.TryGetComponent<Image>(ref targetImage2))
{
Debug.Log((object)"Got RightDelay");
CallHandleBar(targetImage2, ref __instance.healthInfo, ref __instance.oldHealthInfo);
}
}
public static GameObject FindPrefab(string name)
{
GameObject val = null;
foreach (AssetBundle allLoadedAssetBundle in AssetBundle.GetAllLoadedAssetBundles())
{
val = allLoadedAssetBundle.LoadAsset<GameObject>(name);
if ((Object)(object)val != (Object)null)
{
Debug.Log((object)("RiskUI: Found Prefab: " + name));
return val;
}
}
Debug.Log((object)("RiskUI: Didnt find Prefab: " + name));
return val;
}
public static GameObject FindRecursive(Transform parent, string name)
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
if (((Object)parent).name == name)
{
return ((Component)parent).gameObject;
}
foreach (Transform item in parent)
{
Transform parent2 = item;
GameObject val = FindRecursive(parent2, name);
if ((Object)(object)val != (Object)null)
{
return val;
}
}
return null;
}
}
public class HideFromBepinConfig : MonoBehaviour, IConfigHandler
{
public GameObject target;
public string configName;
public string configDesc;
public string configCategory;
public bool defaultValue;
private ZioConfigEntry<bool> _configEntry;
public void Awake()
{
Startup();
((ZioConfigEntryBase)_configEntry).SettingChanged += SettingChanged;
SettingChanged();
}
public void OnDestroy()
{
((ZioConfigEntryBase)_configEntry).SettingChanged -= SettingChanged;
}
private void SettingChanged(ZioConfigEntryBase config, object oldValue, bool ignoreSave)
{
SettingChanged();
}
private void SettingChanged()
{
target.SetActive(_configEntry.Value);
}
public void Startup()
{
_configEntry = ConfigHelper.Bind(configCategory, configName, defaultValue, configDesc);
}
}
public class HideIfFirst : MonoBehaviour
{
public GameObject target;
public int position;
private void Awake()
{
target.SetActive(((Component)this).transform.GetSiblingIndex() != position);
}
}
public class MaterialEquipmentIcon : MonoBehaviour
{
public EquipmentIcon icon;
public Image onCooldown;
public Image mask;
public TextMeshProUGUI stockText;
public GameObject keyText;
public void Update()
{
//IL_007f: 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_0084: 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_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: 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_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
if (!icon.hasEquipment)
{
((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(false);
mask.fillAmount = 0f;
((Behaviour)onCooldown).enabled = false;
return;
}
EquipmentState val = (icon.displayAlternateEquipment ? icon.targetInventory.alternateEquipmentState : icon.targetInventory.currentEquipmentState);
FixedTimeStamp now = FixedTimeStamp.now;
FixedTimeStamp chargeFinishTime = val.chargeFinishTime;
((Behaviour)onCooldown).enabled = ((DisplayData)(ref icon.currentDisplayData)).showCooldown;
float num = Mathf.Max(0f, chargeFinishTime - now);
if (float.IsPositiveInfinity(num))
{
num = 0f;
}
float cooldown = val.equipmentDef.cooldown;
bool flag = true;
cooldown *= icon.targetInventory.CalculateEquipmentCooldownScale();
mask.fillAmount = num / cooldown;
((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(icon.currentDisplayData.maxStock > 1);
}
}
public class MaterialSkillIcon : MonoBehaviour
{
public Image onCooldown;
public SkillIcon icon;
public Image mask;
public TextMeshProUGUI stockText;
private void Update()
{
if (Object.op_Implicit((Object)(object)icon.targetSkill))
{
float cooldownRemaining = icon.targetSkill.cooldownRemaining;
float num = icon.targetSkill.CalculateFinalRechargeInterval();
bool flag = num >= float.Epsilon;
mask.fillAmount = (flag ? (cooldownRemaining / num) : 0f);
((Behaviour)onCooldown).enabled = flag && icon.targetSkill.stock <= 0 && mask.fillAmount > float.Epsilon;
if (icon.targetSkill.maxStock > 1)
{
((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(true);
}
else
{
((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(false);
}
}
}
}
public class NotificationAreaLoader : MonoBehaviour
{
public NotificationUIController controller;
private static GameObject genericNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/NotificationPanel2.prefab").WaitForCompletion();
private static GameObject genericTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/GenericTransformationNotificationPanel.prefab").WaitForCompletion();
private static GameObject contagiousVoidTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/UI/VoidTransformationNotificationPanel.prefab").WaitForCompletion();
private static GameObject cloverVoidTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/CloverVoid/CloverVoidTransformationNotificationPanel.prefab").WaitForCompletion();
private static GameObject regeneratingScrapRegenTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/RegeneratingScrap/RegeneratingScrapRegenTransformationNotificationPanel.prefab").WaitForCompletion();
public void Start()
{
controller.genericNotificationPrefab = genericNotificationPrefab;
controller.genericTransformationNotificationPrefab = genericTransformationNotificationPrefab;
controller.contagiousVoidTransformationNotificationPrefab = contagiousVoidTransformationNotificationPrefab;
controller.cloverVoidTransformationNotificationPrefab = cloverVoidTransformationNotificationPrefab;
controller.regeneratingScrapRegenTransformationNotificationPrefab = regeneratingScrapRegenTransformationNotificationPrefab;
}
}
public class HealthbarRecolor : MonoBehaviour, IConfigHandler
{
public class HealthBarConfig
{
private static readonly Type StyleType = typeof(HealthBarStyle);
public HealthBarStyle style;
private readonly FieldInfo _fieldInfo;
private ZioConfigEntry<Color> _configValue;
private bool rainbow;
public Color Color
{
get
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
return ((BarStyle)_fieldInfo.GetValue(style)).baseColor;
}
set
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
BarStyle val = (BarStyle)_fieldInfo.GetValue(style);
val.baseColor = value;
_fieldInfo.SetValue(style, val);
}
}
public HealthBarConfig(string category, string key, string desc, string field, HealthBarStyle styleIn, bool b)
{
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
style = styleIn;
_fieldInfo = StyleType.GetField(field, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
_configValue = ConfigHelper.Bind<Color>(category, key, Color, desc);
if (b)
{
((ZioConfigEntryBase)_configValue).SettingChanged += ConfigChanged;
}
}
public void Destroy()
{
((ZioConfigEntryBase)_configValue).SettingChanged -= ConfigChanged;
}
public void ConfigChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: 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)
rainbow = _configValue.Value == Color.clear;
Color = _configValue.Value;
}
public void Update(Color color)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
if (rainbow)
{
Color = color;
}
}
}
public string whichBar = "Player HealthBar";
public HealthBar healthBar;
private readonly Dictionary<string, HealthBarConfig> entries = new Dictionary<string, HealthBarConfig>();
public void Awake()
{
Startup(b: true);
OnEnable();
}
private void OnEnable()
{
foreach (KeyValuePair<string, HealthBarConfig> entry in entries)
{
entry.Value.ConfigChanged(null, null, arg3: false);
}
}
private void SetupConfig(string key, string desc, HealthBarStyle style, string field, bool b)
{
string key2 = "Recoloring " + whichBar + key;
HealthBarConfig value = new HealthBarConfig("Recoloring " + whichBar, key, desc, field, style, b);
entries[key2] = value;
}
private void OnDestroy()
{
foreach (KeyValuePair<string, HealthBarConfig> entry in entries)
{
entry.Value.Destroy();
}
}
private void Update()
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: 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)
Color color = Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f);
foreach (KeyValuePair<string, HealthBarConfig> entry in entries)
{
entry.Value.Update(color);
}
}
public void Startup(bool b)
{
HealthBarStyle style = healthBar.style;
SetupConfig("Trailing Under", "When hurt the bit that is slow to catch up.", style, "trailingUnderHealthBarStyle", b);
SetupConfig("Instant Health", "From medkits, etc.", style, "instantHealthBarStyle", b);
SetupConfig("Trailing Over", "The general color of the healthbar.", style, "trailingOverHealthBarStyle", b);
SetupConfig("Shield", "Shield", style, "shieldBarStyle", b);
SetupConfig("Curse", "Curse refers to having Shaped glass / anything that temporarily lowers max HP & normally leaves you w/ the white outlined section.", style, "curseBarStyle", b);
SetupConfig("Barrier", "Barrier", style, "barrierBarStyle", b);
SetupConfig("Flash", "?", style, "flashBarStyle", b);
SetupConfig("Cull", "Cull refers to things like guillotine / freeze, and is only seen when an allied minion (turret / zoea / drone, etc..) is hit by a Glacial Elite's death effect radius. Cull can't be applied to players however.", style, "cullBarStyle", b);
SetupConfig("Low Health Over", "Color for delicate watches and things like that.", style, "lowHealthOverStyle", b);
SetupConfig("Low Health Under", "?", style, "lowHealthUnderStyle", b);
SetupConfig("Magnetic", "A unused??? healthbar style.", style, "magneticStyle", b);
SetupConfig("OSP", "One shot protection color.", style, "ospStyle", b);
}
public void Startup()
{
Startup(b: false);
}
}
public class RedToColorRemapperIndividual : MonoBehaviour, IConfigHandler
{
public string configKey;
public string configDesc;
private Color defaultColor;
private ZioConfigEntry<Color> _configEntry;
public MonoBehaviour target;
private bool _rainbow;
public void Startup()
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
defaultColor = GetColor();
_configEntry = ConfigHelper.Bind<Color>("Recoloring", configKey, defaultColor, configDesc);
}
public void Awake()
{
Startup();
((ZioConfigEntryBase)_configEntry).SettingChanged += UpdateColor;
}
private void OnEnable()
{
UpdateColor();
}
private void OnDestroy()
{
((ZioConfigEntryBase)_configEntry).SettingChanged -= UpdateColor;
}
private void UpdateColor(ZioConfigEntryBase config, object oldValue, bool ignoreSave)
{
UpdateColor();
}
private void SetColor(Color color)
{
//IL_002f: 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_0051: 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)
MonoBehaviour val = target;
MonoBehaviour val2 = val;
TextMeshProUGUI val3 = (TextMeshProUGUI)(object)((val2 is TextMeshProUGUI) ? val2 : null);
if (val3 == null)
{
Image val4 = (Image)(object)((val2 is Image) ? val2 : null);
if (val4 == null)
{
HealthBar val5 = (HealthBar)(object)((val2 is HealthBar) ? val2 : null);
if (val5 != null)
{
val5.style.trailingOverHealthBarStyle.baseColor = color;
}
}
else
{
((Graphic)val4).color = color;
}
}
else
{
((Graphic)val3).color = color;
}
}
private Color GetColor()
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: 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_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_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)
MonoBehaviour val = target;
MonoBehaviour val2 = val;
TextMeshProUGUI val3 = (TextMeshProUGUI)(object)((val2 is TextMeshProUGUI) ? val2 : null);
if (val3 == null)
{
Image val4 = (Image)(object)((val2 is Image) ? val2 : null);
if (val4 == null)
{
return ((HealthBar)(((val2 is HealthBar) ? val2 : null)?)).style.trailingOverHealthBarStyle.baseColor ?? Color.black;
}
return ((Graphic)val4).color;
}
return ((Graphic)val3).color;
}
private void UpdateColor()
{
//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_002b: Unknown result type (might be due to invalid IL or missing references)
if (_configEntry.Value == Color.clear)
{
_rainbow = true;
}
else
{
SetColor(_configEntry.Value);
}
}
private void Update()
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
if (_rainbow)
{
SetColor(Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f));
}
}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("bubbet.riskui", "Risk UI", "1.4.0")]
public class RiskUIPlugin : BaseUnityPlugin
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static UnityAction <>9__28_0;
public static UnityAction <>9__28_1;
internal void <MakeRiskofOptions>b__28_0()
{
Application.OpenURL("https://github.com/Bubbet/Risk-Of-Rain-Mods/issues/new");
}
internal void <MakeRiskofOptions>b__28_1()
{
Application.OpenURL("https://ko-fi.com/bubbet");
}
}
public AssetBundle assetBundle;
private static GameObject _newHud;
private static GameObject _newClassicRunHud;
private static GameObject _newSimulacrumHud;
private static GameObject _allyCard;
private static GameObject _ObjectiveTracker;
public static GameObject BaseWaveUI;
public static GameObject EnemyInfoPanel;
public static readonly Dictionary<string, Sprite> DifficultyIconMap = new Dictionary<string, Sprite>();
public static ZioConfigEntry<Color> VoidColor;
public static ZioConfigEntry<Color> InfusionColor;
public static ZioConfigEntry<Color> VoidShieldColor;
public static ZioConfigFile ConfigFile;
private string description;
private Sprite icon;
public static ZioConfigEntry<bool> Enabled;
private Harmony harm;
private PatchClassProcessor patcher;
public static readonly List<ZioConfigFile> ConfigFiles = new List<ZioConfigFile>();
public static bool NeverBeforeInitialized;
public static bool RiskOfOptionsEnabled => Chainloader.PluginInfos.ContainsKey("bubbet.zioriskofoptions");
public void Awake()
{
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Expected O, but got Unknown
//IL_0094: 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_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Expected O, but got Unknown
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Expected O, but got Unknown
((BaseUnityPlugin)this).Logger.LogMessage((object)"Loaded");
string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
try
{
JSONNode val = JSON.Parse(File.OpenText(Path.Combine(directoryName, "manifest.json")).ReadToEnd());
description = ((object)val["description"]).ToString();
byte[] array = File.ReadAllBytes(Path.Combine(directoryName, "icon.png"));
Texture2D val2 = new Texture2D(256, 256);
ImageConversion.LoadImage(val2, array);
icon = Sprite.Create(val2, new Rect(0f, 0f, 256f, 256f), new Vector2(0.5f, 0.5f));
}
catch (Exception)
{
}
harm = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID);
patcher = new PatchClassProcessor(harm, typeof(HarmonyPatches));
RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(onLoad));
assetBundle = AssetBundle.LoadFromFile(Path.Combine(directoryName, "riskui"));
_newHud = assetBundle.LoadAsset<GameObject>("RiskUI");
_newClassicRunHud = assetBundle.LoadAsset<GameObject>("MaterialClassicRunInfoHudPanel");
_allyCard = assetBundle.LoadAsset<GameObject>("MaterialAllyCard");
EnemyInfoPanel = assetBundle.LoadAsset<GameObject>("MaterialMonsterItemInventory");
_ObjectiveTracker = assetBundle.LoadAsset<GameObject>("MaterialObjectiveStrip");
_newSimulacrumHud = assetBundle.LoadAsset<GameObject>("MaterialSimulacrum");
BaseWaveUI = assetBundle.LoadAsset<GameObject>("MaterialDefaultWaveUI");
DifficultyIconMap["SUNNY_NAME"] = assetBundle.LoadAsset<Sprite>("Sunny (More Difficulties)");
DifficultyIconMap["RAINSOON_NAME"] = assetBundle.LoadAsset<Sprite>("ThunderStorm (More Difficulties)");
DifficultyIconMap["HIFU_DIFFICULTY_NAME"] = assetBundle.LoadAsset<Sprite>("Inferno (Inferno)");
DifficultyIconMap["DIFFICULTY_CONFIGURABLEDIFFICULTYMOD_NAME"] = assetBundle.LoadAsset<Sprite>("Pluviculture (ConfigurableDifficulty)");
DifficultyIconMap["Mico27_DIFFICULTY_TROPICALSTORM_NAME"] = assetBundle.LoadAsset<Sprite>("Tropical Storm (Tropical Storm)");
DifficultyIconMap["GROOVYDIFFICULTY_4_NAME"] = assetBundle.LoadAsset<Sprite>("Deluge (UntitledDifficultyMod)");
DifficultyIconMap["CALYPSO_NAME"] = assetBundle.LoadAsset<Sprite>("Calypso (More Difficulties)");
DifficultyIconMap["GROOVYDIFFICULTY_5_NAME"] = assetBundle.LoadAsset<Sprite>("Charybdis (UntitledDifficultyMod)");
DifficultyIconMap["TEMPEST_NAME"] = assetBundle.LoadAsset<Sprite>("Tempest (More Difficulties)");
DifficultyIconMap["SCYLLA_NAME"] = assetBundle.LoadAsset<Sprite>("Armageddon (More Difficulties)");
DifficultyIconMap["DIFFICULTY_EASY_NAME"] = assetBundle.LoadAsset<Sprite>("Drizzle");
DifficultyIconMap["DIFFICULTY_NORMAL_NAME"] = assetBundle.LoadAsset<Sprite>("Rainstorm");
DifficultyIconMap["DIFFICULTY_HARD_NAME"] = assetBundle.LoadAsset<Sprite>("Monsoon");
}
private void FixScavBingo()
{
BingoUI.BingoAchievementDisplay.AddComponent<LayoutElement>().ignoreLayout = true;
}
private void onLoad()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: 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_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Expected O, but got Unknown
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: Unknown result type (might be due to invalid IL or missing references)
//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_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Expected O, but got Unknown
ConfigFile = new ZioConfigFile(RoR2Application.cloudStorage, UPath.op_Implicit("/RiskUI.cfg"), true, (BaseUnityPlugin)(object)this);
foreach (UPath item in FileSystemExtensions.EnumeratePaths((IFileSystem)(object)RoR2Application.cloudStorage, new UPath("/RiskUI/")))
{
ConfigFiles.Add(new ZioConfigFile(RoR2Application.cloudStorage, item, true, (BaseUnityPlugin)(object)this));
}
if (ConfigFiles.Count < 1)
{
NeverBeforeInitialized = true;
ConfigFiles.Add(new ZioConfigFile(RoR2Application.cloudStorage, UPath.op_Implicit($"/RiskUI/{default(Guid)}"), true, (BaseUnityPlugin)(object)this));
}
Enabled = ConfigHelper.Bind("General", "Enabled", defaultValue: true, "Should the hud be replaced. Only updates on hud awake, so stage change and starting new runs.");
((ZioConfigEntryBase)Enabled).SettingChanged += EnabledChanged;
EnabledChanged();
VoidColor = ConfigHelper.Bind<Color>("Recoloring Player HealthBar", "Void Color", Color32.op_Implicit(new Color32((byte)181, (byte)100, (byte)189, byte.MaxValue)), "Color of void, Void Fiends health bar.");
InfusionColor = ConfigHelper.Bind<Color>("Recoloring Player HealthBar", "Infusion Color", Color32.op_Implicit(new Color32((byte)221, (byte)44, (byte)38, byte.MaxValue)), "Color of infusion.");
VoidShieldColor = ConfigHelper.Bind<Color>("Recoloring Player HealthBar", "Void Shield Color", Color32.op_Implicit(new Color32((byte)229, (byte)127, (byte)240, byte.MaxValue)), "Color of void shield.");
if (RiskOfOptionsEnabled)
{
MakeRiskofOptions();
}
if (Chainloader.PluginInfos.ContainsKey("com.Dragonyck.Synergies") && Chainloader.PluginInfos["com.Dragonyck.Synergies"].Metadata.Version <= new Version("2.0.3"))
{
DisableSynergies();
}
if (Chainloader.PluginInfos.ContainsKey("com.groovesalad.ScavengerBingo"))
{
FixScavBingo();
}
IConfigHandler[] componentsInChildren = _newHud.GetComponentsInChildren<IConfigHandler>();
foreach (IConfigHandler configHandler in componentsInChildren)
{
configHandler.Startup();
}
}
private void DisableSynergies()
{
}
private void EnabledChanged()
{
if (Enabled.Value)
{
patcher.Patch();
}
else
{
harm.UnpatchSelf();
}
}
private void EnabledChanged(ZioConfigEntryBase arg1, object arg2, bool arg3)
{
EnabledChanged();
}
private void MakeRiskofOptions()
{
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Expected O, but got Unknown
//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_0068: Expected O, but got Unknown
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Expected O, but got Unknown
//IL_009b: 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)
//IL_00a6: Expected O, but got Unknown
if (Object.op_Implicit((Object)(object)icon))
{
ModSettingsManager.SetModIcon(icon);
}
if (description != null)
{
ModSettingsManager.SetModDescription(description);
}
object obj = <>c.<>9__28_0;
if (obj == null)
{
UnityAction val = delegate
{
Application.OpenURL("https://github.com/Bubbet/Risk-Of-Rain-Mods/issues/new");
};
<>c.<>9__28_0 = val;
obj = (object)val;
}
ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Report An Issue", "General", "If you find a bug in the mod, reporting an issue is the best way to ensure it gets fixed.", "Open Link", (UnityAction)obj));
object obj2 = <>c.<>9__28_1;
if (obj2 == null)
{
UnityAction val2 = delegate
{
Application.OpenURL("https://ko-fi.com/bubbet");
};
<>c.<>9__28_1 = val2;
obj2 = (object)val2;
}
ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Donate to Bubbet", "General", "Donate to the programmer of RiskUI.", "Open Link", (UnityAction)obj2));
}
[SystemInitializer(new Type[] { })]
private void CheckForBetterUI()
{
if (Chainloader.PluginInfos.ContainsKey("com.xoxfaby.BetterUI"))
{
EditBetterUIConfigs();
}
}
private void EditBetterUIConfigs()
{
}
public static GameObject CreateHud()
{
return _newHud;
}
public static GameObject CreateClassicRunHud()
{
return _newClassicRunHud;
}
public static GameObject CreateSimulcrum()
{
return _newSimulacrumHud;
}
public static GameObject CreateAllyCard()
{
return _allyCard;
}
public static GameObject CreateObjectiveTracker()
{
return _ObjectiveTracker;
}
}
public interface IConfigHandler
{
void Startup();
}
public class TextSizeBepin : MonoBehaviour, IConfigHandler
{
public string Key;
public string Description;
public TextMeshProUGUI Target;
private ZioConfigEntry<float> _configEntry;
public void Awake()
{
Startup();
((ZioConfigEntryBase)_configEntry).SettingChanged += SettingChanged;
}
private void OnEnable()
{
SettingChanged(null, null, arg3: false);
}
private void OnDestroy()
{
((ZioConfigEntryBase)_configEntry).SettingChanged -= SettingChanged;
}
private void SettingChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3)
{
((TMP_Text)Target).fontSize = _configEntry.Value;
}
public void Startup()
{
_configEntry = ConfigHelper.Bind("Rescaling", Key, ((TMP_Text)Target).fontSize, Description, null, 100f);
}
}
}