using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using CheatUnlocks;
using HG;
using HarmonyLib;
using IL.RoR2.UI;
using IL.RoR2.UI.LogBook;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On;
using On.RoR2.UI;
using RoR2;
using RoR2.Stats;
using RoR2.UI;
using RoR2.UI.LogBook;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
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: AssemblyCompany("RealerCheatUnlocks")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+da4c4cd87b72e124f9e1da568daeae2b1b45fca4")]
[assembly: AssemblyProduct("RealerCheatUnlocks")]
[assembly: AssemblyTitle("RealerCheatUnlocks")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace RealerCheatUnlocks
{
[BepInPlugin("prodzpod.RealerCheatUnlocks", "RealerCheatUnlocks", "1.0.3")]
public class Main : BaseUnityPlugin
{
public abstract class CheatUnlocksButton : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
public AchievementDef achievementDef;
public UnlockableDef unlockableDef;
public bool canRelock = true;
public HGButton hgButton;
public bool unlocked
{
get
{
UserProfile userProfile = GetUserProfile();
return userProfile != null && userProfile.HasUnlockable(unlockableDef.cachedName);
}
}
public bool achieved
{
get
{
UserProfile userProfile = GetUserProfile();
return userProfile != null && userProfile.HasAchievement(achievementDef.identifier);
}
}
public abstract void OnPointerClick(PointerEventData eventData);
public UserProfile GetUserProfile()
{
LocalUser? obj = ((IEnumerable<LocalUser>)LocalUserManager.readOnlyLocalUsersList).FirstOrDefault((Func<LocalUser, bool>)((LocalUser v) => v != null));
return (obj != null) ? obj.userProfile : null;
}
public bool TryToggle()
{
UserProfile userProfile = GetUserProfile();
bool flag = achievementDef != null && !achieved;
bool flag2 = (Object)(object)unlockableDef != (Object)null && !unlocked;
if (flag || flag2)
{
Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject);
if (flag)
{
userProfile.AddAchievement(achievementDef.identifier, true);
}
if (flag2)
{
userProfile.GrantUnlockable(unlockableDef);
}
return true;
}
if (canRelock)
{
Util.PlaySound("Play_UI_artifactDeselect", ((Component)RoR2Application.instance).gameObject);
if (achievementDef != null)
{
userProfile.RevokeAchievement(achievementDef.identifier);
}
if ((Object)(object)unlockableDef != (Object)null)
{
userProfile.RevokeUnlockable(unlockableDef);
userProfile.RequestEventualSave();
}
return false;
}
return true;
}
}
public class CheatUnlocksLoadoutButton : CheatUnlocksButton
{
public Sprite icon;
public string title;
public string body;
public Color color;
public UnityAction onClick;
public Node viewableNode;
public static Sprite lockedIcon;
public override void OnPointerClick(PointerEventData eventData)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
//IL_010c: Unknown result type (might be due to invalid IL or missing references)
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//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_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_018f: Unknown result type (might be due to invalid IL or missing references)
if ((int)eventData.button != 1)
{
return;
}
TooltipProvider component = ((Component)hgButton).GetComponent<TooltipProvider>();
ViewableTag val = ((viewableNode != null) ? ((Component)hgButton).gameObject.GetComponent<ViewableTag>() : null);
if (TryToggle())
{
((MPButton)hgButton).disableGamepadClick = false;
((MPButton)hgButton).disablePointerClick = false;
component.titleColor = color;
component.overrideTitleText = Language.GetString(title);
component.overrideBodyText = Language.GetString(body);
((UnityEvent)((Button)hgButton).onClick).AddListener(onClick);
if (Object.op_Implicit((Object)(object)val))
{
val.viewableName = viewableNode.fullName;
val.Refresh();
}
((Image)((Selectable)hgButton).targetGraphic).sprite = icon;
}
else
{
((MPButton)hgButton).disableGamepadClick = true;
((MPButton)hgButton).disablePointerClick = true;
component.titleColor = Color.gray;
component.overrideTitleText = Language.GetString("UNIDENTIFIED");
component.overrideBodyText = unlockableDef.getHowToUnlockString();
((UnityEvent)((Button)hgButton).onClick).RemoveListener(onClick);
if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.tagInstance))
{
Object.Destroy((Object)(object)val.tagInstance);
val.tagInstance = null;
}
((Image)((Selectable)hgButton).targetGraphic).sprite = lockedIcon;
}
}
}
public class CheatUnlocksSurvivorButton : CheatUnlocksButton
{
public SurvivorIconController controller;
public override void OnPointerClick(PointerEventData eventData)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
if ((int)eventData.button == 1)
{
if (TryToggle())
{
controller.survivorIsUnlocked = true;
((MPButton)hgButton).disableGamepadClick = false;
((MPButton)hgButton).disablePointerClick = false;
}
else
{
controller.survivorIsUnlocked = false;
((MPButton)hgButton).disableGamepadClick = true;
((MPButton)hgButton).disablePointerClick = true;
}
controller.UpdateAvailability();
controller.Rebuild();
}
}
}
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static Func<Instruction, bool> <>9__7_2;
public static Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node> <>9__7_3;
public static Manipulator <>9__7_0;
public static hook_Rebuild <>9__7_1;
internal void <Awake>b__7_0(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: 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_006c: 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_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
val.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<GameObject>(x, "GetComponent")
});
val.Emit(OpCodes.Dup);
val.Emit(OpCodes.Ldarg, 2);
val.Emit(OpCodes.Ldarg, 3);
val.Emit(OpCodes.Ldarg, 4);
val.Emit(OpCodes.Ldarg, 5);
val.Emit(OpCodes.Ldarg, 6);
val.Emit(OpCodes.Ldarg, 7);
val.Emit(OpCodes.Ldarg, 8);
val.EmitDelegate<Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>>((Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>)delegate(HGButton button, Sprite icon, string titleToken, string bodyToken, Color tooltipColor, UnityAction callback, string unlockableName, Node viewableNode)
{
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
if (!Utility.IsNullOrWhiteSpace(unlockableName) && !((Object)(object)UnlockableCatalog.GetUnlockableDef(unlockableName) == (Object)null))
{
CheatUnlocksLoadoutButton cheatUnlocksLoadoutButton = ((Component)button).gameObject.AddComponent<CheatUnlocksLoadoutButton>();
cheatUnlocksLoadoutButton.hgButton = button;
cheatUnlocksLoadoutButton.unlockableDef = UnlockableCatalog.GetUnlockableDef(unlockableName);
cheatUnlocksLoadoutButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksLoadoutButton.unlockableDef.cachedName);
if (viewableNode != null)
{
cheatUnlocksLoadoutButton.viewableNode = viewableNode;
}
cheatUnlocksLoadoutButton.icon = icon;
cheatUnlocksLoadoutButton.title = titleToken;
cheatUnlocksLoadoutButton.body = bodyToken;
cheatUnlocksLoadoutButton.color = tooltipColor;
cheatUnlocksLoadoutButton.onClick = callback;
}
});
}
internal bool <Awake>b__7_2(Instruction x)
{
return ILPatternMatchingExt.MatchCallOrCallvirt<GameObject>(x, "GetComponent");
}
internal void <Awake>b__7_3(HGButton button, Sprite icon, string titleToken, string bodyToken, Color tooltipColor, UnityAction callback, string unlockableName, Node viewableNode)
{
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
if (!Utility.IsNullOrWhiteSpace(unlockableName) && !((Object)(object)UnlockableCatalog.GetUnlockableDef(unlockableName) == (Object)null))
{
CheatUnlocksLoadoutButton cheatUnlocksLoadoutButton = ((Component)button).gameObject.AddComponent<CheatUnlocksLoadoutButton>();
cheatUnlocksLoadoutButton.hgButton = button;
cheatUnlocksLoadoutButton.unlockableDef = UnlockableCatalog.GetUnlockableDef(unlockableName);
cheatUnlocksLoadoutButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksLoadoutButton.unlockableDef.cachedName);
if (viewableNode != null)
{
cheatUnlocksLoadoutButton.viewableNode = viewableNode;
}
cheatUnlocksLoadoutButton.icon = icon;
cheatUnlocksLoadoutButton.title = titleToken;
cheatUnlocksLoadoutButton.body = bodyToken;
cheatUnlocksLoadoutButton.color = tooltipColor;
cheatUnlocksLoadoutButton.onClick = callback;
}
}
internal void <Awake>b__7_1(orig_Rebuild orig, SurvivorIconController self)
{
orig.Invoke(self);
if ((Object)(object)self.survivorDef.unlockableDef == (Object)null)
{
if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() != (Object)null)
{
Object.Destroy((Object)(object)((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>());
}
return;
}
CheatUnlocksSurvivorButton cheatUnlocksSurvivorButton;
if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() == (Object)null)
{
cheatUnlocksSurvivorButton = ((Component)self).gameObject.AddComponent<CheatUnlocksSurvivorButton>();
cheatUnlocksSurvivorButton.hgButton = self.hgButton;
cheatUnlocksSurvivorButton.controller = self;
}
else
{
cheatUnlocksSurvivorButton = ((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>();
}
cheatUnlocksSurvivorButton.unlockableDef = self.survivorDef.unlockableDef;
cheatUnlocksSurvivorButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksSurvivorButton.unlockableDef.cachedName);
}
}
public const string PluginGUID = "prodzpod.RealerCheatUnlocks";
public const string PluginAuthor = "prodzpod";
public const string PluginName = "RealerCheatUnlocks";
public const string PluginVersion = "1.0.3";
public static ManualLogSource Log;
public static PluginInfo pluginInfo;
public static Harmony Harmony;
public void Awake()
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Expected O, but got Unknown
//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_005a: Expected O, but got Unknown
//IL_0074: 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_007f: Expected O, but got Unknown
pluginInfo = ((BaseUnityPlugin)this).Info;
Log = ((BaseUnityPlugin)this).Logger;
Harmony = new Harmony("prodzpod.RealerCheatUnlocks");
CheatUnlocksLoadoutButton.lockedIcon = LegacyResourcesAPI.Load<Sprite>("Textures/MiscIcons/texUnlockIcon");
CheatUnlocksPlugin.Awake();
object obj = <>c.<>9__7_0;
if (obj == null)
{
Manipulator val = delegate(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: 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_006c: 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_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
ILCursor val3 = new ILCursor(il);
val3.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<GameObject>(x, "GetComponent")
});
val3.Emit(OpCodes.Dup);
val3.Emit(OpCodes.Ldarg, 2);
val3.Emit(OpCodes.Ldarg, 3);
val3.Emit(OpCodes.Ldarg, 4);
val3.Emit(OpCodes.Ldarg, 5);
val3.Emit(OpCodes.Ldarg, 6);
val3.Emit(OpCodes.Ldarg, 7);
val3.Emit(OpCodes.Ldarg, 8);
val3.EmitDelegate<Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>>((Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>)delegate(HGButton button, Sprite icon, string titleToken, string bodyToken, Color tooltipColor, UnityAction callback, string unlockableName, Node viewableNode)
{
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
if (!Utility.IsNullOrWhiteSpace(unlockableName) && !((Object)(object)UnlockableCatalog.GetUnlockableDef(unlockableName) == (Object)null))
{
CheatUnlocksLoadoutButton cheatUnlocksLoadoutButton = ((Component)button).gameObject.AddComponent<CheatUnlocksLoadoutButton>();
cheatUnlocksLoadoutButton.hgButton = button;
cheatUnlocksLoadoutButton.unlockableDef = UnlockableCatalog.GetUnlockableDef(unlockableName);
cheatUnlocksLoadoutButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksLoadoutButton.unlockableDef.cachedName);
if (viewableNode != null)
{
cheatUnlocksLoadoutButton.viewableNode = viewableNode;
}
cheatUnlocksLoadoutButton.icon = icon;
cheatUnlocksLoadoutButton.title = titleToken;
cheatUnlocksLoadoutButton.body = bodyToken;
cheatUnlocksLoadoutButton.color = tooltipColor;
cheatUnlocksLoadoutButton.onClick = callback;
}
});
};
<>c.<>9__7_0 = val;
obj = (object)val;
}
Row.AddButton += (Manipulator)obj;
object obj2 = <>c.<>9__7_1;
if (obj2 == null)
{
hook_Rebuild val2 = delegate(orig_Rebuild orig, SurvivorIconController self)
{
orig.Invoke(self);
if ((Object)(object)self.survivorDef.unlockableDef == (Object)null)
{
if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() != (Object)null)
{
Object.Destroy((Object)(object)((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>());
}
}
else
{
CheatUnlocksSurvivorButton cheatUnlocksSurvivorButton;
if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() == (Object)null)
{
cheatUnlocksSurvivorButton = ((Component)self).gameObject.AddComponent<CheatUnlocksSurvivorButton>();
cheatUnlocksSurvivorButton.hgButton = self.hgButton;
cheatUnlocksSurvivorButton.controller = self;
}
else
{
cheatUnlocksSurvivorButton = ((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>();
}
cheatUnlocksSurvivorButton.unlockableDef = self.survivorDef.unlockableDef;
cheatUnlocksSurvivorButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksSurvivorButton.unlockableDef.cachedName);
}
};
<>c.<>9__7_1 = val2;
obj2 = (object)val2;
}
SurvivorIconController.Rebuild += (hook_Rebuild)obj2;
}
}
}
namespace CheatUnlocks
{
public class CheatUnlocksPlugin : BaseUnityPlugin
{
public class CheatUnlocksLogbookButton : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
public Entry entry;
public LogBookController logbookController;
public string achievementName;
public PickupIndex pickupIndex = PickupIndex.none;
public UnlockableDef unlockableDef;
public PerBodyStatDef perBodyStatDef;
public BodyIndex bodyIndex = (BodyIndex)(-1);
public UnityAction entryOnClick;
public bool canRelock = true;
public HGButton hgButton;
public bool hgButtonDisableGamepadClick;
public bool hgButtonDisablePointerClick;
public Image hgButtonImageOnInteractable;
public Action<GameObject, EntryStatus> initializeGraphics = InitializeGraphicsDefault;
public static void InitializeGraphicsDefault(GameObject buttonObject, EntryStatus entryStatus)
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: 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_0039: 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_003e: Invalid comparison between Unknown and I4
ChildLocator component = buttonObject.GetComponent<ChildLocator>();
RawImage val = null;
if (Object.op_Implicit((Object)(object)component))
{
val = ((Component)component.FindChild("BG")).GetComponent<RawImage>();
}
if (Object.op_Implicit((Object)(object)val))
{
if (entryStatus - 4 <= 1)
{
((Behaviour)val).enabled = true;
}
}
}
public static void InitializeGraphicsChallenge(GameObject buttonObject, EntryStatus entryStatus)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: 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_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected I4, but got Unknown
ChildLocator component = buttonObject.GetComponent<ChildLocator>();
switch (entryStatus - 2)
{
case 0:
((Component)component.FindChild("HasBeenUnlocked")).gameObject.SetActive(false);
break;
case 1:
((Component)component.FindChild("HasBeenUnlocked")).gameObject.SetActive(false);
((Component)component.FindChild("CantBeAchieved")).gameObject.SetActive(false);
break;
case 2:
((Component)component.FindChild("CantBeAchieved")).gameObject.SetActive(false);
break;
case 3:
((Component)component.FindChild("CantBeAchieved")).gameObject.SetActive(false);
break;
}
}
public void Start()
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Expected O, but got Unknown
entryOnClick = (UnityAction)delegate
{
if (entry != null && Object.op_Implicit((Object)(object)logbookController))
{
logbookController.ViewEntry(entry);
}
};
}
public void OnPointerClick(PointerEventData eventData)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: 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_0191: Unknown result type (might be due to invalid IL or missing references)
//IL_02ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0304: Unknown result type (might be due to invalid IL or missing references)
//IL_030d: Unknown result type (might be due to invalid IL or missing references)
//IL_030f: Unknown result type (might be due to invalid IL or missing references)
//IL_0314: Unknown result type (might be due to invalid IL or missing references)
//IL_01be: Unknown result type (might be due to invalid IL or missing references)
//IL_0347: Unknown result type (might be due to invalid IL or missing references)
//IL_0379: Unknown result type (might be due to invalid IL or missing references)
//IL_037c: Invalid comparison between Unknown and I4
//IL_0371: Unknown result type (might be due to invalid IL or missing references)
//IL_0412: Unknown result type (might be due to invalid IL or missing references)
//IL_0414: Unknown result type (might be due to invalid IL or missing references)
//IL_0419: Unknown result type (might be due to invalid IL or missing references)
//IL_044e: Unknown result type (might be due to invalid IL or missing references)
//IL_0278: Unknown result type (might be due to invalid IL or missing references)
if ((int)eventData.button != 1)
{
return;
}
UserProfile val = logbookController.LookUpUserProfile();
bool flag = !string.IsNullOrEmpty(achievementName);
bool flag2 = flag && val.HasAchievement(achievementName);
bool flag3 = Object.op_Implicit((Object)(object)unlockableDef);
bool flag4 = flag3 && val.HasUnlockable(unlockableDef);
bool flag5 = pickupIndex != PickupIndex.none;
bool flag6 = perBodyStatDef != null;
if ((flag && !flag2) || (flag3 && !flag4))
{
Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject);
if (flag && !flag2)
{
foreach (AchievementNotificationPanel instances in AchievementNotificationPanel.instancesList)
{
Object.Destroy((Object)(object)((Component)instances).gameObject);
}
val.AddAchievement(achievementName, true);
}
if (flag3 && !flag4)
{
val.GrantUnlockable(unlockableDef);
}
}
else if (flag5 && !val.HasDiscoveredPickup(pickupIndex))
{
val.SetPickupDiscovered(pickupIndex, true);
Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject);
}
else if (flag6 && val.statSheet.GetStatValueULong(perBodyStatDef.FindStatDef(bodyIndex)) == 0)
{
val.statSheet.PushStatValue(perBodyStatDef, bodyIndex, 1uL);
Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject);
}
else if (canRelock)
{
if (flag && flag2)
{
foreach (AchievementNotificationPanel instances2 in AchievementNotificationPanel.instancesList)
{
Object.Destroy((Object)(object)((Component)instances2).gameObject);
}
val.RevokeAchievement(achievementName);
}
if (flag3 && flag4)
{
val.RevokeUnlockable(unlockableDef);
val.RequestEventualSave();
}
if (flag5)
{
val.SetPickupDiscovered(pickupIndex, false);
}
if (entry.viewableNode != null)
{
ViewableTag component = ((Component)hgButton).gameObject.GetComponent<ViewableTag>();
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.tagInstance))
{
Object.Destroy((Object)(object)component.tagInstance);
component.tagInstance = null;
}
}
Util.PlaySound("Play_UI_artifactDeselect", ((Component)RoR2Application.instance).gameObject);
}
EntryStatus status = entry.GetStatus(val);
TooltipContent tooltipContent = entry.GetTooltipContent(val, status);
entry.category.initializeElementGraphics?.Invoke(((Component)hgButton).gameObject, entry, status, val);
if (initializeGraphics != null)
{
initializeGraphics(((Component)hgButton).gameObject, status);
}
if ((int)status >= 4)
{
((UnityEvent)((Button)hgButton).onClick).AddListener(entryOnClick);
((MPButton)hgButton).disableGamepadClick = hgButtonDisableGamepadClick;
((MPButton)hgButton).disablePointerClick = hgButtonDisablePointerClick;
hgButton.imageOnInteractable = hgButtonImageOnInteractable;
}
else
{
((UnityEvent)((Button)hgButton).onClick).RemoveListener(entryOnClick);
((MPButton)hgButton).disableGamepadClick = true;
((MPButton)hgButton).disablePointerClick = true;
hgButton.imageOnInteractable = null;
}
Color titleColor = tooltipContent.titleColor;
titleColor.a = 0.2f;
hgButton.hoverToken = Language.GetStringFormatted("LOGBOOK_HOVER_DESCRIPTION_FORMAT", new object[3]
{
((TooltipContent)(ref tooltipContent)).GetTitleText(),
((TooltipContent)(ref tooltipContent)).GetBodyText(),
ColorUtility.ToHtmlStringRGBA(titleColor)
});
}
}
public class CheatUnlocksEclipseButton : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
public LocalUser localUser;
public SurvivorDef survivorDef;
public EclipseDifficultyMedalDisplay medalDisplay;
public void OnEnable()
{
InstanceTracker.Add<CheatUnlocksEclipseButton>(this);
}
public void OnDisable()
{
InstanceTracker.Remove<CheatUnlocksEclipseButton>(this);
}
public void SetEclipseLevelUnlocked(bool unlock)
{
UnlockableDef safe = ListUtils.GetSafe<UnlockableDef>(EclipseRun.GetEclipseLevelUnlockablesForSurvivor(survivorDef), medalDisplay.eclipseLevel - EclipseRun.minUnlockableEclipseLevel + 1);
if (unlock)
{
localUser.userProfile.GrantUnlockable(safe);
bool flag = true;
foreach (SurvivorDef orderedSurvivorDef in SurvivorCatalog.orderedSurvivorDefs)
{
if (medalDisplay.ShouldDisplaySurvivor(orderedSurvivorDef, localUser))
{
int localUserSurvivorCompletedEclipseLevel = EclipseRun.GetLocalUserSurvivorCompletedEclipseLevel(localUser, orderedSurvivorDef);
if (localUserSurvivorCompletedEclipseLevel < medalDisplay.eclipseLevel)
{
flag = false;
break;
}
}
}
if (Object.op_Implicit((Object)(object)medalDisplay.iconImage))
{
medalDisplay.iconImage.sprite = (flag ? medalDisplay.completeSprite : medalDisplay.incompleteSprite);
}
}
else
{
localUser.userProfile.RevokeUnlockable(safe);
localUser.userProfile.RequestEventualSave();
if (Object.op_Implicit((Object)(object)medalDisplay.iconImage))
{
medalDisplay.iconImage.sprite = medalDisplay.unearnedSprite;
}
}
}
public void OnPointerClick(PointerEventData eventData)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
if ((int)eventData.button != 1)
{
return;
}
UnlockableDef safe = ListUtils.GetSafe<UnlockableDef>(EclipseRun.GetEclipseLevelUnlockablesForSurvivor(survivorDef), medalDisplay.eclipseLevel - EclipseRun.minUnlockableEclipseLevel + 1);
if (!Object.op_Implicit((Object)(object)safe))
{
return;
}
if (!localUser.userProfile.HasUnlockable(safe))
{
foreach (CheatUnlocksEclipseButton item in from x in InstanceTracker.GetInstancesList<CheatUnlocksEclipseButton>()
where (Object)(object)x.survivorDef == (Object)(object)survivorDef && x.medalDisplay.eclipseLevel <= medalDisplay.eclipseLevel
select x)
{
item.SetEclipseLevelUnlocked(unlock: true);
}
Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject);
Util.PlaySound("Play_UI_achievementUnlock", ((Component)RoR2Application.instance).gameObject);
return;
}
foreach (CheatUnlocksEclipseButton item2 in from x in InstanceTracker.GetInstancesList<CheatUnlocksEclipseButton>()
where (Object)(object)x.survivorDef == (Object)(object)survivorDef && x.medalDisplay.eclipseLevel >= medalDisplay.eclipseLevel
select x)
{
item2.SetEclipseLevelUnlocked(unlock: false);
}
Util.PlaySound("Play_UI_artifactDeselect", ((Component)RoR2Application.instance).gameObject);
}
}
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static Func<Instruction, bool> <>9__0_4;
public static Func<Instruction, bool> <>9__0_5;
public static Func<Instruction, bool> <>9__0_8;
public static Func<Instruction, bool> <>9__0_10;
public static Func<Instruction, bool> <>9__0_11;
public static Action<HGButton, Entry, LogBookController> <>9__0_2;
public static Manipulator <>9__0_0;
public static hook_Refresh <>9__0_1;
internal void <Awake>b__0_0(ILContext il)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Expected O, but got Unknown
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: Unknown result type (might be due to invalid IL or missing references)
//IL_0162: Unknown result type (might be due to invalid IL or missing references)
//IL_0174: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
ILCursor val = new ILCursor(il);
CS$<>8__locals0.hgButtonPos = -1;
CS$<>8__locals0.entryDisplayClassPos = -1;
CS$<>8__locals0.entryFieldRef = null;
int num = default(int);
if (!val.TryGotoNext(new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref CS$<>8__locals0.hgButtonPos),
(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, ref num),
(Instruction x) => ILPatternMatchingExt.MatchStfld<HGButton>(x, "updateTextOnHover")
}) || !val.TryGotoNext(new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref CS$<>8__locals0.entryDisplayClassPos),
(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, ref CS$<>8__locals0.entryFieldRef),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<Entry>(x, "viewableNode")
}) || !val.TryGotoPrev((MoveType)2, new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, CS$<>8__locals0.hgButtonPos),
(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1),
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Selectable>(x, "set_interactable")
}))
{
return;
}
val.Emit(OpCodes.Ldloc, CS$<>8__locals0.hgButtonPos);
val.Emit(OpCodes.Ldloc, CS$<>8__locals0.entryDisplayClassPos);
val.Emit(OpCodes.Ldfld, CS$<>8__locals0.entryFieldRef);
val.Emit(OpCodes.Ldarg, 0);
val.EmitDelegate<Action<HGButton, Entry, LogBookController>>((Action<HGButton, Entry, LogBookController>)delegate(HGButton button, Entry entry, LogBookController logbookController)
{
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: 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_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: 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_012e: Invalid comparison between Unknown and I4
//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Invalid comparison between Unknown and I4
//IL_0146: 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_028a: Expected O, but got Unknown
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_02be: Unknown result type (might be due to invalid IL or missing references)
//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
//IL_032c: Unknown result type (might be due to invalid IL or missing references)
//IL_0333: Expected O, but got Unknown
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
//IL_0362: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass0_1 <>c__DisplayClass0_ = default(<>c__DisplayClass0_1);
<>c__DisplayClass0_.button = button;
<>c__DisplayClass0_.entry = entry;
<>c__DisplayClass0_.logbookController = logbookController;
switch (<>c__DisplayClass0_.entry.category.nameToken)
{
case "LOGBOOK_CATEGORY_ACHIEVEMENTS":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton3 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
cheatUnlocksLogbookButton3.achievementName = ((AchievementDef)<>c__DisplayClass0_.entry.extraData).identifier;
cheatUnlocksLogbookButton3.unlockableDef = UnlockableCatalog.GetUnlockableDef(((AchievementDef)<>c__DisplayClass0_.entry.extraData).unlockableRewardIdentifier);
cheatUnlocksLogbookButton3.initializeGraphics = CheatUnlocksLogbookButton.InitializeGraphicsChallenge;
break;
}
case "LOGBOOK_CATEGORY_ITEMANDEQUIPMENT":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton2 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
cheatUnlocksLogbookButton2.pickupIndex = (PickupIndex)<>c__DisplayClass0_.entry.extraData;
PickupDef pickupDef = PickupCatalog.GetPickupDef(cheatUnlocksLogbookButton2.pickupIndex);
ItemIndex itemIndex = pickupDef.itemIndex;
EquipmentIndex equipmentIndex = pickupDef.equipmentIndex;
if ((int)itemIndex != -1)
{
<>c__DisplayClass0_2 CS$<>8__locals3 = new <>c__DisplayClass0_2
{
itemDef = ItemCatalog.GetItemDef(itemIndex)
};
if (Object.op_Implicit((Object)(object)CS$<>8__locals3.itemDef) && Object.op_Implicit((Object)(object)CS$<>8__locals3.itemDef.unlockableDef))
{
AchievementDef val5 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals3.itemDef.unlockableDef.cachedName));
if (val5 != null)
{
cheatUnlocksLogbookButton2.achievementName = val5.identifier;
}
cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals3.itemDef.unlockableDef;
}
}
else if ((int)equipmentIndex != -1)
{
<>c__DisplayClass0_3 CS$<>8__locals1 = new <>c__DisplayClass0_3
{
equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex)
};
if (Object.op_Implicit((Object)(object)CS$<>8__locals1.equipmentDef) && Object.op_Implicit((Object)(object)CS$<>8__locals1.equipmentDef.unlockableDef))
{
AchievementDef val6 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals1.equipmentDef.unlockableDef.cachedName));
if (val6 != null)
{
cheatUnlocksLogbookButton2.achievementName = val6.identifier;
}
cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals1.equipmentDef.unlockableDef;
}
}
break;
}
case "LOGBOOK_CATEGORY_MONSTER":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton4 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
CharacterBody val7 = (CharacterBody)<>c__DisplayClass0_.entry.extraData;
DeathRewards component = ((Component)val7).GetComponent<DeathRewards>();
if (Object.op_Implicit((Object)(object)component))
{
cheatUnlocksLogbookButton4.unlockableDef = component.logUnlockableDef;
}
cheatUnlocksLogbookButton4.perBodyStatDef = PerBodyStatDef.killsAgainst;
cheatUnlocksLogbookButton4.bodyIndex = val7.bodyIndex;
break;
}
case "LOGBOOK_CATEGORY_STAGE":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton5 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
UnlockableDef unlockableLogFromBaseSceneName = SceneCatalog.GetUnlockableLogFromBaseSceneName(((SceneDef)<>c__DisplayClass0_.entry.extraData).baseSceneName);
if (Object.op_Implicit((Object)(object)unlockableLogFromBaseSceneName))
{
cheatUnlocksLogbookButton5.unlockableDef = unlockableLogFromBaseSceneName;
}
break;
}
case "LOGBOOK_CATEGORY_SURVIVOR":
{
<>c__DisplayClass0_4 CS$<>8__locals2 = new <>c__DisplayClass0_4();
CheatUnlocksLogbookButton cheatUnlocksLogbookButton = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
CharacterBody val2 = (CharacterBody)<>c__DisplayClass0_.entry.extraData;
SurvivorDef val3 = SurvivorCatalog.FindSurvivorDefFromBody(((Component)val2).gameObject);
CS$<>8__locals2.unlockableDef = val3.unlockableDef;
if (Object.op_Implicit((Object)(object)CS$<>8__locals2.unlockableDef))
{
AchievementDef val4 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals2.unlockableDef.cachedName));
if (val4 != null)
{
cheatUnlocksLogbookButton.achievementName = val4.identifier;
}
cheatUnlocksLogbookButton.unlockableDef = CS$<>8__locals2.unlockableDef;
}
cheatUnlocksLogbookButton.perBodyStatDef = PerBodyStatDef.totalWins;
cheatUnlocksLogbookButton.bodyIndex = val2.bodyIndex;
break;
}
}
});
}
internal bool <Awake>b__0_4(Instruction x)
{
int num = default(int);
return ILPatternMatchingExt.MatchLdcI4(x, ref num);
}
internal bool <Awake>b__0_5(Instruction x)
{
return ILPatternMatchingExt.MatchStfld<HGButton>(x, "updateTextOnHover");
}
internal bool <Awake>b__0_8(Instruction x)
{
return ILPatternMatchingExt.MatchLdfld<Entry>(x, "viewableNode");
}
internal bool <Awake>b__0_10(Instruction x)
{
return ILPatternMatchingExt.MatchLdcI4(x, 1);
}
internal bool <Awake>b__0_11(Instruction x)
{
return ILPatternMatchingExt.MatchCallOrCallvirt<Selectable>(x, "set_interactable");
}
internal void <Awake>b__0_2(HGButton button, Entry entry, LogBookController logbookController)
{
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: 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_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: 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_012e: Invalid comparison between Unknown and I4
//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Invalid comparison between Unknown and I4
//IL_0146: 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_028a: Expected O, but got Unknown
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_02be: Unknown result type (might be due to invalid IL or missing references)
//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
//IL_032c: Unknown result type (might be due to invalid IL or missing references)
//IL_0333: Expected O, but got Unknown
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
//IL_0362: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass0_1 <>c__DisplayClass0_ = default(<>c__DisplayClass0_1);
<>c__DisplayClass0_.button = button;
<>c__DisplayClass0_.entry = entry;
<>c__DisplayClass0_.logbookController = logbookController;
switch (<>c__DisplayClass0_.entry.category.nameToken)
{
case "LOGBOOK_CATEGORY_ACHIEVEMENTS":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton3 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
cheatUnlocksLogbookButton3.achievementName = ((AchievementDef)<>c__DisplayClass0_.entry.extraData).identifier;
cheatUnlocksLogbookButton3.unlockableDef = UnlockableCatalog.GetUnlockableDef(((AchievementDef)<>c__DisplayClass0_.entry.extraData).unlockableRewardIdentifier);
cheatUnlocksLogbookButton3.initializeGraphics = CheatUnlocksLogbookButton.InitializeGraphicsChallenge;
break;
}
case "LOGBOOK_CATEGORY_ITEMANDEQUIPMENT":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton2 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
cheatUnlocksLogbookButton2.pickupIndex = (PickupIndex)<>c__DisplayClass0_.entry.extraData;
PickupDef pickupDef = PickupCatalog.GetPickupDef(cheatUnlocksLogbookButton2.pickupIndex);
ItemIndex itemIndex = pickupDef.itemIndex;
EquipmentIndex equipmentIndex = pickupDef.equipmentIndex;
if ((int)itemIndex != -1)
{
<>c__DisplayClass0_2 CS$<>8__locals2 = new <>c__DisplayClass0_2
{
itemDef = ItemCatalog.GetItemDef(itemIndex)
};
if (Object.op_Implicit((Object)(object)CS$<>8__locals2.itemDef) && Object.op_Implicit((Object)(object)CS$<>8__locals2.itemDef.unlockableDef))
{
AchievementDef val4 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals2.itemDef.unlockableDef.cachedName));
if (val4 != null)
{
cheatUnlocksLogbookButton2.achievementName = val4.identifier;
}
cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals2.itemDef.unlockableDef;
}
}
else
{
if ((int)equipmentIndex == -1)
{
break;
}
<>c__DisplayClass0_3 CS$<>8__locals0 = new <>c__DisplayClass0_3
{
equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex)
};
if (Object.op_Implicit((Object)(object)CS$<>8__locals0.equipmentDef) && Object.op_Implicit((Object)(object)CS$<>8__locals0.equipmentDef.unlockableDef))
{
AchievementDef val5 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals0.equipmentDef.unlockableDef.cachedName));
if (val5 != null)
{
cheatUnlocksLogbookButton2.achievementName = val5.identifier;
}
cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals0.equipmentDef.unlockableDef;
}
}
break;
}
case "LOGBOOK_CATEGORY_MONSTER":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton4 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
CharacterBody val6 = (CharacterBody)<>c__DisplayClass0_.entry.extraData;
DeathRewards component = ((Component)val6).GetComponent<DeathRewards>();
if (Object.op_Implicit((Object)(object)component))
{
cheatUnlocksLogbookButton4.unlockableDef = component.logUnlockableDef;
}
cheatUnlocksLogbookButton4.perBodyStatDef = PerBodyStatDef.killsAgainst;
cheatUnlocksLogbookButton4.bodyIndex = val6.bodyIndex;
break;
}
case "LOGBOOK_CATEGORY_STAGE":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton5 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
UnlockableDef unlockableLogFromBaseSceneName = SceneCatalog.GetUnlockableLogFromBaseSceneName(((SceneDef)<>c__DisplayClass0_.entry.extraData).baseSceneName);
if (Object.op_Implicit((Object)(object)unlockableLogFromBaseSceneName))
{
cheatUnlocksLogbookButton5.unlockableDef = unlockableLogFromBaseSceneName;
}
break;
}
case "LOGBOOK_CATEGORY_SURVIVOR":
{
<>c__DisplayClass0_4 CS$<>8__locals1 = new <>c__DisplayClass0_4();
CheatUnlocksLogbookButton cheatUnlocksLogbookButton = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_);
CharacterBody val = (CharacterBody)<>c__DisplayClass0_.entry.extraData;
SurvivorDef val2 = SurvivorCatalog.FindSurvivorDefFromBody(((Component)val).gameObject);
CS$<>8__locals1.unlockableDef = val2.unlockableDef;
if (Object.op_Implicit((Object)(object)CS$<>8__locals1.unlockableDef))
{
AchievementDef val3 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals1.unlockableDef.cachedName));
if (val3 != null)
{
cheatUnlocksLogbookButton.achievementName = val3.identifier;
}
cheatUnlocksLogbookButton.unlockableDef = CS$<>8__locals1.unlockableDef;
}
cheatUnlocksLogbookButton.perBodyStatDef = PerBodyStatDef.totalWins;
cheatUnlocksLogbookButton.bodyIndex = val.bodyIndex;
break;
}
}
}
internal void <Awake>b__0_1(orig_Refresh orig, EclipseDifficultyMedalDisplay self)
{
orig.Invoke(self);
CheatUnlocksEclipseButton cheatUnlocksEclipseButton = ((Component)self).GetComponent<CheatUnlocksEclipseButton>();
if (!Object.op_Implicit((Object)(object)cheatUnlocksEclipseButton))
{
cheatUnlocksEclipseButton = ((Component)self).gameObject.AddComponent<CheatUnlocksEclipseButton>();
}
cheatUnlocksEclipseButton.medalDisplay = self;
cheatUnlocksEclipseButton.localUser = LocalUserManager.GetFirstLocalUser();
cheatUnlocksEclipseButton.survivorDef = ((cheatUnlocksEclipseButton.localUser != null) ? cheatUnlocksEclipseButton.localUser.userProfile.GetSurvivorPreference() : null);
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0
{
public int hgButtonPos;
public int entryDisplayClassPos;
public FieldReference entryFieldRef;
internal bool <Awake>b__3(Instruction x)
{
return ILPatternMatchingExt.MatchLdloc(x, ref hgButtonPos);
}
internal bool <Awake>b__6(Instruction x)
{
return ILPatternMatchingExt.MatchLdloc(x, ref entryDisplayClassPos);
}
internal bool <Awake>b__7(Instruction x)
{
return ILPatternMatchingExt.MatchLdfld(x, ref entryFieldRef);
}
internal bool <Awake>b__9(Instruction x)
{
return ILPatternMatchingExt.MatchLdloc(x, hgButtonPos);
}
}
[StructLayout(LayoutKind.Auto)]
[CompilerGenerated]
private struct <>c__DisplayClass0_1
{
public HGButton button;
public Entry entry;
public LogBookController logbookController;
}
[CompilerGenerated]
private sealed class <>c__DisplayClass0_2
{
public ItemDef itemDef;
internal bool <Awake>b__13(AchievementDef x)
{
return x.unlockableRewardIdentifier == itemDef.unlockableDef.cachedName;
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass0_3
{
public EquipmentDef equipmentDef;
internal bool <Awake>b__14(AchievementDef x)
{
return x.unlockableRewardIdentifier == equipmentDef.unlockableDef.cachedName;
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass0_4
{
public UnlockableDef unlockableDef;
internal bool <Awake>b__15(AchievementDef x)
{
return x.unlockableRewardIdentifier == unlockableDef.cachedName;
}
}
public static void Awake()
{
//IL_0015: 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_0020: Expected O, but got Unknown
//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_0045: Expected O, but got Unknown
object obj = <>c.<>9__0_0;
if (obj == null)
{
Manipulator val = delegate(ILContext il)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Expected O, but got Unknown
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: Unknown result type (might be due to invalid IL or missing references)
//IL_0162: Unknown result type (might be due to invalid IL or missing references)
//IL_0174: Unknown result type (might be due to invalid IL or missing references)
ILCursor val3 = new ILCursor(il);
int hgButtonPos = -1;
int entryDisplayClassPos = -1;
FieldReference entryFieldRef = null;
int num = default(int);
if (val3.TryGotoNext(new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref hgButtonPos),
(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, ref num),
(Instruction x) => ILPatternMatchingExt.MatchStfld<HGButton>(x, "updateTextOnHover")
}) && val3.TryGotoNext(new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref entryDisplayClassPos),
(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, ref entryFieldRef),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<Entry>(x, "viewableNode")
}) && val3.TryGotoPrev((MoveType)2, new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, hgButtonPos),
(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1),
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Selectable>(x, "set_interactable")
}))
{
val3.Emit(OpCodes.Ldloc, hgButtonPos);
val3.Emit(OpCodes.Ldloc, entryDisplayClassPos);
val3.Emit(OpCodes.Ldfld, entryFieldRef);
val3.Emit(OpCodes.Ldarg, 0);
val3.EmitDelegate<Action<HGButton, Entry, LogBookController>>((Action<HGButton, Entry, LogBookController>)delegate(HGButton button, Entry entry, LogBookController logbookController)
{
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: 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_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: 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_012e: Invalid comparison between Unknown and I4
//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Invalid comparison between Unknown and I4
//IL_0146: 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_028a: Expected O, but got Unknown
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_02be: Unknown result type (might be due to invalid IL or missing references)
//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
//IL_032c: Unknown result type (might be due to invalid IL or missing references)
//IL_0333: Expected O, but got Unknown
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
//IL_0362: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
switch (entry.category.nameToken)
{
case "LOGBOOK_CATEGORY_ACHIEVEMENTS":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton3 = MakeCheatButton();
cheatUnlocksLogbookButton3.achievementName = ((AchievementDef)entry.extraData).identifier;
cheatUnlocksLogbookButton3.unlockableDef = UnlockableCatalog.GetUnlockableDef(((AchievementDef)entry.extraData).unlockableRewardIdentifier);
cheatUnlocksLogbookButton3.initializeGraphics = CheatUnlocksLogbookButton.InitializeGraphicsChallenge;
break;
}
case "LOGBOOK_CATEGORY_ITEMANDEQUIPMENT":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton2 = MakeCheatButton();
cheatUnlocksLogbookButton2.pickupIndex = (PickupIndex)entry.extraData;
PickupDef pickupDef = PickupCatalog.GetPickupDef(cheatUnlocksLogbookButton2.pickupIndex);
ItemIndex itemIndex = pickupDef.itemIndex;
EquipmentIndex equipmentIndex = pickupDef.equipmentIndex;
if ((int)itemIndex != -1)
{
ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex);
if (Object.op_Implicit((Object)(object)itemDef) && Object.op_Implicit((Object)(object)itemDef.unlockableDef))
{
AchievementDef val7 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == itemDef.unlockableDef.cachedName));
if (val7 != null)
{
cheatUnlocksLogbookButton2.achievementName = val7.identifier;
}
cheatUnlocksLogbookButton2.unlockableDef = itemDef.unlockableDef;
}
}
else if ((int)equipmentIndex != -1)
{
EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex);
if (Object.op_Implicit((Object)(object)equipmentDef) && Object.op_Implicit((Object)(object)equipmentDef.unlockableDef))
{
AchievementDef val8 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == equipmentDef.unlockableDef.cachedName));
if (val8 != null)
{
cheatUnlocksLogbookButton2.achievementName = val8.identifier;
}
cheatUnlocksLogbookButton2.unlockableDef = equipmentDef.unlockableDef;
}
}
break;
}
case "LOGBOOK_CATEGORY_MONSTER":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton4 = MakeCheatButton();
CharacterBody val9 = (CharacterBody)entry.extraData;
DeathRewards component = ((Component)val9).GetComponent<DeathRewards>();
if (Object.op_Implicit((Object)(object)component))
{
cheatUnlocksLogbookButton4.unlockableDef = component.logUnlockableDef;
}
cheatUnlocksLogbookButton4.perBodyStatDef = PerBodyStatDef.killsAgainst;
cheatUnlocksLogbookButton4.bodyIndex = val9.bodyIndex;
break;
}
case "LOGBOOK_CATEGORY_STAGE":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton5 = MakeCheatButton();
UnlockableDef unlockableLogFromBaseSceneName = SceneCatalog.GetUnlockableLogFromBaseSceneName(((SceneDef)entry.extraData).baseSceneName);
if (Object.op_Implicit((Object)(object)unlockableLogFromBaseSceneName))
{
cheatUnlocksLogbookButton5.unlockableDef = unlockableLogFromBaseSceneName;
}
break;
}
case "LOGBOOK_CATEGORY_SURVIVOR":
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton = MakeCheatButton();
CharacterBody val4 = (CharacterBody)entry.extraData;
SurvivorDef val5 = SurvivorCatalog.FindSurvivorDefFromBody(((Component)val4).gameObject);
UnlockableDef unlockableDef = val5.unlockableDef;
if (Object.op_Implicit((Object)(object)unlockableDef))
{
AchievementDef val6 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == unlockableDef.cachedName));
if (val6 != null)
{
cheatUnlocksLogbookButton.achievementName = val6.identifier;
}
cheatUnlocksLogbookButton.unlockableDef = unlockableDef;
}
cheatUnlocksLogbookButton.perBodyStatDef = PerBodyStatDef.totalWins;
cheatUnlocksLogbookButton.bodyIndex = val4.bodyIndex;
break;
}
}
CheatUnlocksLogbookButton MakeCheatButton()
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton6 = ((Component)button).gameObject.AddComponent<CheatUnlocksLogbookButton>();
cheatUnlocksLogbookButton6.entry = entry;
cheatUnlocksLogbookButton6.logbookController = logbookController;
cheatUnlocksLogbookButton6.hgButton = button;
cheatUnlocksLogbookButton6.hgButtonDisableGamepadClick = ((MPButton)button).disableGamepadClick;
cheatUnlocksLogbookButton6.hgButtonDisablePointerClick = ((MPButton)button).disablePointerClick;
cheatUnlocksLogbookButton6.hgButtonImageOnInteractable = button.imageOnInteractable;
return cheatUnlocksLogbookButton6;
}
});
}
};
<>c.<>9__0_0 = val;
obj = (object)val;
}
LogBookController.BuildEntriesPage += (Manipulator)obj;
object obj2 = <>c.<>9__0_1;
if (obj2 == null)
{
hook_Refresh val2 = delegate(orig_Refresh orig, EclipseDifficultyMedalDisplay self)
{
orig.Invoke(self);
CheatUnlocksEclipseButton cheatUnlocksEclipseButton = ((Component)self).GetComponent<CheatUnlocksEclipseButton>();
if (!Object.op_Implicit((Object)(object)cheatUnlocksEclipseButton))
{
cheatUnlocksEclipseButton = ((Component)self).gameObject.AddComponent<CheatUnlocksEclipseButton>();
}
cheatUnlocksEclipseButton.medalDisplay = self;
cheatUnlocksEclipseButton.localUser = LocalUserManager.GetFirstLocalUser();
cheatUnlocksEclipseButton.survivorDef = ((cheatUnlocksEclipseButton.localUser != null) ? cheatUnlocksEclipseButton.localUser.userProfile.GetSurvivorPreference() : null);
};
<>c.<>9__0_1 = val2;
obj2 = (object)val2;
}
EclipseDifficultyMedalDisplay.Refresh += (hook_Refresh)obj2;
}
[CompilerGenerated]
internal static CheatUnlocksLogbookButton <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_1 P_0)
{
CheatUnlocksLogbookButton cheatUnlocksLogbookButton = ((Component)P_0.button).gameObject.AddComponent<CheatUnlocksLogbookButton>();
cheatUnlocksLogbookButton.entry = P_0.entry;
cheatUnlocksLogbookButton.logbookController = P_0.logbookController;
cheatUnlocksLogbookButton.hgButton = P_0.button;
cheatUnlocksLogbookButton.hgButtonDisableGamepadClick = ((MPButton)P_0.button).disableGamepadClick;
cheatUnlocksLogbookButton.hgButtonDisablePointerClick = ((MPButton)P_0.button).disablePointerClick;
cheatUnlocksLogbookButton.hgButtonImageOnInteractable = P_0.button.imageOnInteractable;
return cheatUnlocksLogbookButton;
}
}
}