using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
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 System.Timers;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.Duplicator;
using ExpeditionDemo;
using HG;
using HG.Reflection;
using IL.RoR2;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using MoreStats;
using On.RoR2;
using On.RoR2.UI;
using R2API;
using R2API.ScriptableObjects;
using RoR2;
using RoR2.Achievements;
using RoR2.Achievements.Artifacts;
using RoR2.Artifacts;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ExpansionManagement;
using RoR2.Items;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.UI;
using RoR2BepInExPack.GameAssetPathsBetter;
using ShaderSwapper;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyCompany("EXPEDITION")]
[assembly: AssemblyProduct("EXPEDITION")]
[assembly: AssemblyTitle("EXPEDITION")]
[assembly: AssemblyInformationalVersion("1.0.0+140ce0e2e379bd76775074a707e458ee31cc8adf")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[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]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
[Microsoft.CodeAnalysis.Embedded]
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;
}
}
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
public class RepairStationInfoPanelHelper : NetworkBehaviour
{
public InspectPanelController inspectPanelController;
public Image correspondingItemImage;
public TextMeshProUGUI correspondingItemCountText;
public SpriteAsNumberManager correspondingItemSpriteAsNumberManager;
private MPEventSystem eventSystem;
private Inventory cachedBodyInventory;
private void Awake()
{
MPEventSystemLocator component = ((Component)this).GetComponent<MPEventSystemLocator>();
eventSystem = component.eventSystem;
if ((Object)(object)eventSystem != (Object)null && eventSystem.localUser != null && (Object)(object)eventSystem.localUser.cachedBody != (Object)null)
{
cachedBodyInventory = eventSystem.localUser.cachedBody.inventory;
}
}
private void Update()
{
if (eventSystem.player.GetButtonDown(15))
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
public void ShowInfo(MPButton button, PickupDef pickupDef)
{
inspectPanelController.Show(InspectInfo.op_Implicit(pickupDef), false, (UserProfile)null);
ShowTierInfoInternal(button, pickupDef);
}
private void ShowTierInfoInternal(MPButton button, PickupDef pickupDef)
{
ShowTierInfoInternal(button, pickupDef, 1);
}
private void ShowTierInfoInternal(MPButton button, PickupDef pickupDef, int scrapCount)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
string name = ((Object)ItemCatalog.GetItemDef(pickupDef.itemIndex)).name;
name.Replace("Consumed", "");
PickupDef val = ItemCatalog.GetItemDef(ItemCatalog.FindItemIndex(name)).CreatePickupDef();
if (val == null)
{
return;
}
if ((Object)(object)correspondingItemImage != (Object)null)
{
correspondingItemImage.sprite = val.iconSprite;
}
if ((Object)(object)correspondingItemCountText != (Object)null)
{
string text = ((scrapCount > 0) ? scrapCount.ToString() : string.Empty);
((TMP_Text)correspondingItemCountText).text = text;
}
if ((Object)(object)correspondingItemSpriteAsNumberManager != (Object)null)
{
if (scrapCount == 1)
{
correspondingItemSpriteAsNumberManager.SetVisible(false);
}
else
{
correspondingItemSpriteAsNumberManager.SetItemCount(scrapCount);
}
}
}
public void AddQuantityToPickerButton(MPButton button, PickupDef pickupDef)
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)cachedBodyInventory))
{
return;
}
int itemCountEffective = cachedBodyInventory.GetItemCountEffective(pickupDef.itemIndex);
TextMeshProUGUI val = ((Component)button).GetComponent<ChildLocator>().FindChildComponent<TextMeshProUGUI>("Quantity");
if (Object.op_Implicit((Object)(object)val))
{
if (itemCountEffective > 1)
{
((TMP_Text)val).SetText($"{itemCountEffective}", true);
}
else
{
((Component)val).gameObject.SetActive(false);
}
}
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
bool result = default(bool);
return result;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
}
}
internal class Junk
{
}
namespace EXPEDITION.Junk
{
public class WingsRotation : NetworkBehaviour
{
public GameObject currentWings;
private Transform wingsTransform;
public float wingsSizeModifier;
public GameObject theOneWhoIsWinging;
private static int kRpcRpcSetupWings;
private void OnEnable()
{
}
private void OnDestroy()
{
Object.Destroy((Object)(object)currentWings);
}
[ClientRpc]
public void RpcSetupWings()
{
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
currentWings = theOneWhoIsWinging.GetComponent<Feathers2Behaviour>().wingusDingus;
wingsSizeModifier = theOneWhoIsWinging.GetComponent<CharacterBody>().radius;
currentWings.transform.localScale = new Vector3(1.5f * wingsSizeModifier, 1.5f * wingsSizeModifier, 1.5f * wingsSizeModifier);
currentWings.transform.SetParent(theOneWhoIsWinging.GetComponent<CharacterBody>().coreTransform);
}
private void UNetVersion()
{
}
protected static void InvokeRpcRpcSetupWings(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError((object)"RPC RpcSetupWings called on server.");
}
else
{
((WingsRotation)(object)obj).RpcSetupWings();
}
}
public void CallRpcSetupWings()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogError((object)"RPC Function RpcSetupWings called on client.");
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)2);
val.WritePackedUInt32((uint)kRpcRpcSetupWings);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcSetupWings");
}
static WingsRotation()
{
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Expected O, but got Unknown
kRpcRpcSetupWings = -214307129;
NetworkBehaviour.RegisterRpcDelegate(typeof(WingsRotation), kRpcRpcSetupWings, new CmdDelegate(InvokeRpcRpcSetupWings));
NetworkCRC.RegisterBehaviour("WingsRotation", 0);
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
bool result = default(bool);
return result;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
}
}
}
namespace ExpeditionDemo
{
[RegisterAchievement("ARTIFACT_DESTINATION", "ACHIEVEMENT_EXPEDITION_DESTINATION", null, 3u, null)]
public class DestinationAchievement : BaseObtainArtifactAchievement
{
public override ArtifactDef artifactDef => Destination.Instance.artifactDef;
}
[RegisterAchievement("EXPEDITION_BIODUDE", "ACHIEVEMENT_EXPEDITION_BIODUDE", null, 3u, typeof(BiodudeAchievementTracker))]
public class BiodudeAchievement : BaseAchievement
{
public class BiodudeAchievementTracker : BaseServerAchievement
{
public override void OnInstall()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
((BaseServerAchievement)this).OnInstall();
CharacterBody.FixedUpdate += new hook_FixedUpdate(CheckDebuffsOnCharacter);
}
private void CheckDebuffsOnCharacter(orig_FixedUpdate orig, CharacterBody self)
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: 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_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Invalid comparison between Unknown and I4
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: 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_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Invalid comparison between Unknown and I4
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: 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)
orig.Invoke(self);
int num = 0;
BuffIndex[] debuffBuffIndices = BuffCatalog.debuffBuffIndices;
foreach (BuffIndex val in debuffBuffIndices)
{
if (Object.op_Implicit((Object)(object)self) && self.HasBuff(val) && ((BaseServerAchievement)this).IsCurrentBody(self))
{
num++;
}
}
DotController val2 = DotController.FindDotController(((Component)self).gameObject);
if (Object.op_Implicit((Object)(object)val2))
{
for (DotIndex val3 = (DotIndex)0; (int)val3 < 12; val3 = (DotIndex)(val3 + 1))
{
if (val2.HasDotActive(val3))
{
num++;
}
}
for (DotIndex val4 = (DotIndex)1; (int)val4 < 12; val4 = (DotIndex)(val4 + 1))
{
if (val2.HasDotActive(val4))
{
num++;
}
}
}
if (Object.op_Implicit((Object)(object)self) && num >= 6)
{
num = 0;
((BaseServerAchievement)this).Grant();
}
}
public override void OnUninstall()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
CharacterBody.FixedUpdate -= new hook_FixedUpdate(CheckDebuffsOnCharacter);
((BaseServerAchievement)this).OnUninstall();
}
}
public override void OnInstall()
{
((BaseAchievement)this).OnInstall();
((BaseAchievement)this).SetServerTracked(true);
}
public override void OnUninstall()
{
((BaseAchievement)this).OnUninstall();
}
}
[RegisterAchievement("EXPEDITION_COMPASS", "ACHIEVEMENT_EXPEDITION_COMPASS", null, 2u, null)]
public class CompassAchievement : BaseAchievement
{
public override void OnInstall()
{
((BaseAchievement)this).OnInstall();
SceneExitController.onBeginExit += OnSceneBeginExit;
}
private void OnSceneBeginExit(SceneExitController controller)
{
Check();
}
private void Check()
{
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Invalid comparison between Unknown and I4
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Invalid comparison between Unknown and I4
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Invalid comparison between Unknown and I4
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Invalid comparison between Unknown and I4
if (!Object.op_Implicit((Object)(object)SceneCatalog.currentSceneDef.destinationsGroup))
{
return;
}
List<PurchaseInteraction> instancesList = InstanceTracker.GetInstancesList<PurchaseInteraction>();
List<BarrelInteraction> instancesList2 = InstanceTracker.GetInstancesList<BarrelInteraction>();
short num = 0;
for (int i = 0; i < instancesList.Count; i++)
{
if (instancesList[i].available && (int)instancesList[i].costType != 4 && (int)instancesList[i].costType != 5 && (int)instancesList[i].costType != 6 && (int)instancesList[i].costType != 10)
{
return;
}
num++;
}
short num2 = 0;
for (int j = 0; j < instancesList2.Count; j++)
{
if (!instancesList2[j].opened)
{
return;
}
num2++;
}
if (num == instancesList.Count && num2 == instancesList2.Count)
{
instancesList = null;
num = 0;
instancesList2 = null;
num2 = 0;
((BaseAchievement)this).Grant();
}
}
public override void OnUninstall()
{
SceneExitController.onBeginExit -= OnSceneBeginExit;
((BaseAchievement)this).OnUninstall();
}
}
[RegisterAchievement("EXPEDITION_CYCLE", "ACHIEVEMENT_EXPEDITION_CYCLE", null, 2u, typeof(CycleAchievementTracker))]
public class CycleAchievement : BaseAchievement
{
public class CycleAchievementTracker : BaseServerAchievement
{
public override void OnInstall()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
((BaseServerAchievement)this).OnInstall();
CharacterBody.FixedUpdate += new hook_FixedUpdate(CheckHoursToGrant);
}
private void CheckHoursToGrant(orig_FixedUpdate orig, CharacterBody self)
{
orig.Invoke(self);
if (Object.op_Implicit((Object)(object)self) && ((BaseServerAchievement)this).IsCurrentBody(self) && LocalUserManager.localUsersList[((NetworkBehaviour)self).playerControllerId + 1].userProfile.totalLoginSeconds >= 360000)
{
((BaseServerAchievement)this).Grant();
}
}
public override void OnUninstall()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
CharacterBody.FixedUpdate -= new hook_FixedUpdate(CheckHoursToGrant);
((BaseServerAchievement)this).OnUninstall();
}
}
public override void OnInstall()
{
((BaseAchievement)this).OnInstall();
((BaseAchievement)this).SetServerTracked(true);
}
public override void OnUninstall()
{
((BaseAchievement)this).OnUninstall();
}
}
[RegisterAchievement("EXPEDITION_HEATCORE", "ACHIEVEMENT_EXPEDITION_HEATCORE", null, 5u, typeof(HeatcoreAchievementTracker))]
public class HeatcoreAchievement : BaseAchievement
{
public class HeatcoreAchievementTracker : BaseServerAchievement
{
private bool flag;
public override void OnInstall()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
((BaseServerAchievement)this).OnInstall();
CharacterBody.FixedUpdate += new hook_FixedUpdate(CheckCharacterEquip);
Run.onServerGameOver += Run_onServerGameOver;
}
private void CheckCharacterEquip(orig_FixedUpdate orig, CharacterBody self)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
if (Object.op_Implicit((Object)(object)self) && ((BaseServerAchievement)this).IsCurrentBody(self))
{
if (self.equipmentSlot.equipmentIndex == Equipment.QuestVolatileBattery.equipmentIndex)
{
flag = true;
}
else
{
flag = false;
}
}
}
private void Run_onServerGameOver(Run run, GameEndingDef gameEndingDef)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
CharacterBody.FixedUpdate -= new hook_FixedUpdate(CheckCharacterEquip);
if (flag && (Object)(object)gameEndingDef == (Object)(object)GameEndings.MainEnding)
{
flag = false;
((BaseServerAchievement)this).Grant();
}
}
public override void OnUninstall()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
CharacterBody.FixedUpdate -= new hook_FixedUpdate(CheckCharacterEquip);
Run.onServerGameOver -= Run_onServerGameOver;
((BaseServerAchievement)this).OnUninstall();
}
}
public override void OnInstall()
{
((BaseAchievement)this).OnInstall();
((BaseAchievement)this).SetServerTracked(true);
}
public override void OnUninstall()
{
((BaseAchievement)this).OnUninstall();
}
}
[RegisterAchievement("EXPEDITION_SHITTYCAPE", "ACHIEVEMENT_EXPEDITION_SHITTYCAPE", null, 1u, typeof(ShittyCapeAchievementTracker))]
public class ShittyCapeAchievement : BaseAchievement
{
public class ShittyCapeAchievementTracker : BaseServerAchievement
{
private float timer = 2f;
private bool isTimerActive;
private int amountOfStrikes = 1;
public override void OnInstall()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
((BaseServerAchievement)this).OnInstall();
CharacterBody.FixedUpdate += new hook_FixedUpdate(FixedUpdate);
GlobalEventManager.onServerDamageDealt += onServerDamageDealt;
}
private void onServerDamageDealt(DamageReport report)
{
if (((BaseServerAchievement)this).IsCurrentBody(report.victimBody) && !report.isFallDamage && (Object)(object)report.attackerBody != (Object)(object)report.victimBody)
{
if (isTimerActive)
{
amountOfStrikes++;
}
else
{
isTimerActive = true;
}
}
}
private void FixedUpdate(orig_FixedUpdate orig, CharacterBody self)
{
orig.Invoke(self);
if (!((BaseServerAchievement)this).IsCurrentBody(self))
{
return;
}
if (timer > 0f)
{
if (isTimerActive)
{
timer -= Time.fixedDeltaTime;
if (amountOfStrikes >= 20)
{
isTimerActive = false;
timer = 0f;
amountOfStrikes = 0;
((BaseServerAchievement)this).Grant();
}
}
}
else
{
isTimerActive = false;
timer = 2f;
amountOfStrikes = 1;
}
}
public override void OnUninstall()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
CharacterBody.FixedUpdate -= new hook_FixedUpdate(FixedUpdate);
GlobalEventManager.onServerDamageDealt -= onServerDamageDealt;
((BaseServerAchievement)this).OnUninstall();
}
}
public override void OnInstall()
{
((BaseAchievement)this).OnInstall();
((BaseAchievement)this).SetServerTracked(true);
}
public override void OnUninstall()
{
((BaseAchievement)this).OnUninstall();
}
}
public abstract class ArtifactBase
{
public ArtifactDef artifactDef;
public abstract string ArtifactName { get; }
public abstract string ArtifactLangTokenName { get; }
public abstract string ArtifactDescription { get; }
public abstract Sprite ArtifactEnabledIcon { get; }
public abstract Sprite ArtifactDisabledIcon { get; }
public abstract Sprite ArtifactUnlockIcon { get; }
public abstract GameObject ArtifactModelPrefab { get; }
public bool ArtifactEnabled => RunArtifactManager.instance.IsArtifactEnabled(artifactDef);
public virtual string AchievementName { get; } = string.Empty;
public virtual string AchievementDesc { get; } = string.Empty;
public virtual Func<string> GetHowToUnlock => () => AchievementName + "\n<style=cStack>" + AchievementDesc + "</style>";
public virtual Func<string> GetUnlocked => () => AchievementName + "\n<style=cStack>" + AchievementDesc + "</style>";
public abstract void Init(ConfigFile config);
protected void CreateLang()
{
LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_NAME", ArtifactName);
LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION", ArtifactDescription);
}
protected void CreateArtifact()
{
artifactDef = ScriptableObject.CreateInstance<ArtifactDef>();
artifactDef.cachedName = "ARTIFACT_" + ArtifactLangTokenName;
artifactDef.nameToken = "ARTIFACT_" + ArtifactLangTokenName + "_NAME";
artifactDef.descriptionToken = "ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION";
artifactDef.smallIconSelectedSprite = ArtifactEnabledIcon;
artifactDef.smallIconDeselectedSprite = ArtifactDisabledIcon;
artifactDef.pickupModelPrefab = ArtifactModelPrefab;
if (AchievementName != string.Empty && AchievementDesc != string.Empty)
{
artifactDef.unlockableDef = CreateUnlock();
}
ContentAddition.AddArtifactDef(artifactDef);
}
protected UnlockableDef CreateUnlock()
{
artifactDef.unlockableDef = ScriptableObject.CreateInstance<UnlockableDef>();
((Object)artifactDef.unlockableDef).name = "ACHIEVEMENT_EXPEDITION_" + ArtifactLangTokenName;
artifactDef.unlockableDef.cachedName = "ACHIEVEMENT_EXPEDITION_" + ArtifactLangTokenName;
artifactDef.unlockableDef.nameToken = "ACHIEVEMENT_EXPEDITION_" + ArtifactLangTokenName + "_NAME";
artifactDef.unlockableDef.getHowToUnlockString = GetHowToUnlock;
artifactDef.unlockableDef.getUnlockedString = GetUnlocked;
artifactDef.unlockableDef.achievementIcon = ArtifactUnlockIcon;
UnlockableDef unlockableDef = artifactDef.unlockableDef;
ContentAddition.AddUnlockableDef(unlockableDef);
return unlockableDef;
}
public abstract void Hooks();
}
internal class Destination : ArtifactBase
{
public static ConfigEntry<int> TimesToPrintMessageOnStart;
public static GameObject expeditionStagePickerPrefab;
public static SceneDef pickedSceneDef;
public static ArtifactCode artifactCode;
public static GameObject panelPrefab;
public static SceneDef seerStationStaff;
public static SceneDef infiniteTowerStaff;
public static bool stopSpawningPortalsPlease;
internal static Destination Instance { get; private set; }
public override string ArtifactName => "Artifact of Destination";
public override string ArtifactLangTokenName => "DESTINATION";
public override string ArtifactDescription => "Choose your destination.";
public override Sprite ArtifactEnabledIcon => Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Textures/Icons/Artifacts/Destination/destinationIconEnabled.png");
public override Sprite ArtifactDisabledIcon => Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Textures/Icons/Artifacts/Destination/destinationIconDisabled.png");
public override Sprite ArtifactUnlockIcon => Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Textures/Icons/Artifacts/Destination/destinationIconUnlock.png");
public override GameObject ArtifactModelPrefab => Assets.mainAssetBundle.LoadAsset<GameObject>("Assets/Artifacts/PickupDestination.prefab");
public static DestinationStagePicker destinationStagePicker { get; private set; }
public override string AchievementName => "Trial of Destination";
public override string AchievementDesc => "Complete the Trial of Destination";
public override void Init(ConfigFile config)
{
//IL_0045: 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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
CreateConfig(config);
CreateLang();
CreateArtifact();
Hooks();
Instance = this;
expeditionStagePickerPrefab = Assets.mainAssetBundle.LoadAsset<GameObject>("Assets/Artifacts/ExpeditionStagePicker.prefab");
artifactCode = ScriptableObject.CreateInstance<ArtifactCode>();
artifactCode.topRow = new Vector3Int(5, 3, 5);
artifactCode.middleRow = new Vector3Int(3, 1, 3);
artifactCode.bottomRow = new Vector3Int(5, 3, 5);
ArtifactCodeAPI.AddCode(artifactDef, artifactCode);
}
private void CreateConfig(ConfigFile config)
{
TimesToPrintMessageOnStart = config.Bind<int>("Artifact: " + ArtifactName, "Times to Print Message in Chat", 5, "How many times should a message be printed to the chat on run start?");
}
public override void Hooks()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Expected O, but got Unknown
SceneExitController.SetState += new Manipulator(SceneExitController_SetState);
SceneExitController.UpdateServer += new Manipulator(SceneExitController_UpdateServer);
ChargedState.OnEnter += new Manipulator(ChargedState_OnEnter);
SeerStationController.SetRunNextStageToTarget += new hook_SetRunNextStageToTarget(SetRunNextStageToTarget);
Run.AdvanceStage += new hook_AdvanceStage(AdvanceStage);
Stage.onStageStartGlobal += StageStartGlobal;
}
private void StageStartGlobal(Stage obj)
{
if (Run.instance is InfiniteTowerRun)
{
infiniteTowerStaff = obj.sceneDef;
}
}
private void ChargedState_OnEnter(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
Instruction val2 = val.Instrs[val.Instrs.Count - 1];
if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchStfld<ChargeIndicatorController>(x, "isCharged")
}))
{
_ = val.Next;
val.EmitDelegate<Func<bool>>((Func<bool>)Check);
val.Emit(OpCodes.Brtrue_S, val2);
}
else
{
Debug.LogError((object)(((MemberReference)il.Method).Name + " IL Hook failed!"));
}
static bool Check()
{
if (stopSpawningPortalsPlease)
{
stopSpawningPortalsPlease = false;
return true;
}
return false;
}
}
private void SetRunNextStageToTarget(orig_SetRunNextStageToTarget orig, SeerStationController self)
{
orig.Invoke(self);
if (NetworkServer.active && base.ArtifactEnabled)
{
seerStationStaff = SceneCatalog.GetSceneDef((SceneIndex)self.targetSceneDefIndex);
}
}
private void AdvanceStage(orig_AdvanceStage orig, Run self, SceneDef nextScene)
{
orig.Invoke(self, nextScene);
if (NetworkServer.active && base.ArtifactEnabled)
{
seerStationStaff = null;
}
}
private void SceneExitController_UpdateServer(ILContext il)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Expected O, but got Unknown
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
ILLabel iLLabel = null;
if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[4]
{
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<SceneExitController>(x, "experienceCollector"),
(Instruction x) => ILPatternMatchingExt.MatchCall<Object>(x, "op_Implicit"),
(Instruction x) => ILPatternMatchingExt.MatchBrtrue(x, ref iLLabel)
}))
{
val.EmitDelegate<Func<bool>>((Func<bool>)Check);
val.Emit(OpCodes.Brtrue_S, (object)iLLabel);
}
else
{
Debug.LogError((object)(((MemberReference)il.Method).Name + " IL Hook failed!"));
}
bool Check()
{
if (NetworkServer.active && base.ArtifactEnabled)
{
if (Object.op_Implicit((Object)(object)pickedSceneDef))
{
return false;
}
return true;
}
return false;
}
}
private void SceneExitController_SetState(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[2]
{
(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1),
(Instruction x) => ILPatternMatchingExt.MatchCall<SceneExitController>(x, "set_isRunning")
}))
{
val.Emit(OpCodes.Ldarg_0);
val.EmitDelegate<Action<SceneExitController>>((Action<SceneExitController>)Check);
}
else
{
Debug.LogError((object)(((MemberReference)il.Method).Name + " IL Hook failed!"));
}
void Check(SceneExitController sceneExitController)
{
pickedSceneDef = null;
if (NetworkServer.active && base.ArtifactEnabled)
{
PullUp(sceneExitController);
}
}
}
public static void PullUp(SceneExitController sceneExitController)
{
CreatePicker();
destinationStagePicker.Init(sceneExitController);
((Component)destinationStagePicker).gameObject.SetActive(true);
}
public static void CreatePicker()
{
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Expected O, but got Unknown
if (!Object.op_Implicit((Object)(object)Destination.destinationStagePicker))
{
panelPrefab = Object.Instantiate<GameObject>(expeditionStagePickerPrefab, HUD.instancesList[0].mainContainer.transform);
panelPrefab.AddComponent<StagePickerSizeAdjuster>();
DestinationStagePicker destinationStagePicker = panelPrefab.AddComponent<DestinationStagePicker>();
DestinationCancelExit destinationCancelExit = ((Component)panelPrefab.transform.Find("body/BeetleJuice/cancelbutton")).gameObject.AddComponent<DestinationCancelExit>();
destinationStagePicker.childLocator = panelPrefab.GetComponent<ChildLocator>();
destinationStagePicker.destinationCancelExit = destinationCancelExit;
destinationCancelExit.hGButton = ((Component)destinationCancelExit).gameObject.GetComponent<HGButton>();
destinationCancelExit.destinationStagePicker = destinationStagePicker;
((UnityEvent)((Button)destinationCancelExit.hGButton).onClick).AddListener(new UnityAction(destinationCancelExit.Cancel));
destinationCancelExit.hGButton.imageOnHover = ((Component)((Component)destinationCancelExit.hGButton).gameObject.transform.Find("cancelbutton, outline")).gameObject.GetComponent<Image>();
destinationCancelExit.hGButton.showImageOnHover = true;
destinationCancelExit.hGButton.uiClickSoundOverride = "Play_UI_menuBack";
Destination.destinationStagePicker = destinationStagePicker;
((Behaviour)((Component)HUD.instancesList[0].mainContainer.transform.Find("MainUIArea")).GetComponent<Canvas>()).enabled = false;
stopSpawningPortalsPlease = true;
}
}
}
public class DestinationCancelExit : MonoBehaviour
{
public HGButton hGButton;
public SceneExitController sceneExitController;
public DestinationStagePicker destinationStagePicker;
public void OnDisable()
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
((UnityEvent)((Button)hGButton).onClick).RemoveListener(new UnityAction(Cancel));
}
public void Cancel()
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
if (Object.op_Implicit((Object)(object)((Component)sceneExitController).GetComponent<TeleporterInteraction>()))
{
EntityStateMachine component = ((Component)sceneExitController).GetComponent<EntityStateMachine>();
if ((Object)(object)component == (Object)null)
{
return;
}
component.SetNextState((EntityState)new ChargedState());
sceneExitController.SetState((ExitState)0);
((Component)destinationStagePicker).gameObject.SetActive(false);
Object.Destroy((Object)(object)Destination.panelPrefab);
((Behaviour)((Component)HUD.instancesList[0].mainContainer.transform.Find("MainUIArea")).GetComponent<Canvas>()).enabled = true;
}
if (Object.op_Implicit((Object)(object)((Component)sceneExitController).GetComponent<GenericInteraction>()))
{
sceneExitController.SetState((ExitState)0);
((Component)destinationStagePicker).gameObject.SetActive(false);
Object.Destroy((Object)(object)Destination.panelPrefab);
((Behaviour)((Component)HUD.instancesList[0].mainContainer.transform.Find("MainUIArea")).GetComponent<Canvas>()).enabled = true;
((Component)sceneExitController).GetComponent<GenericInteraction>().SetInteractabilityAvailable();
}
}
}
public class DestinationStagePicker : MonoBehaviour
{
public ChildLocator childLocator;
public DestinationCancelExit destinationCancelExit;
public void Init(SceneExitController sceneExitController)
{
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Invalid comparison between Unknown and I4
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Expected O, but got Unknown
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_0543: Unknown result type (might be due to invalid IL or missing references)
//IL_0549: Invalid comparison between Unknown and I4
//IL_0bb6: Unknown result type (might be due to invalid IL or missing references)
//IL_0bc0: Expected O, but got Unknown
//IL_0942: Unknown result type (might be due to invalid IL or missing references)
//IL_0951: Unknown result type (might be due to invalid IL or missing references)
destinationCancelExit.sceneExitController = sceneExitController;
GameObject gameObject = ((Component)childLocator.FindChild("Button")).gameObject;
Transform val = childLocator.FindChild("Content");
SceneDef nextStageScene = Run.instance.nextStageScene;
bool flag = !Object.op_Implicit((Object)(object)nextStageScene) || (int)nextStageScene.sceneType == 1;
((UnityEvent)((Button)((Component)this).gameObject.GetComponent<MPButton>()).onClick).AddListener(new UnityAction(destinationCancelExit.Cancel));
int num = (Object.op_Implicit((Object)(object)nextStageScene) ? nextStageScene.stageOrder : (-1));
List<SceneDef> list = (Object.op_Implicit((Object)(object)nextStageScene) ? ((IEnumerable<SceneDef>)(object)SceneCatalog.allSceneDefs).ToList() : new List<SceneDef> { Stage.instance.sceneDef });
if (Object.op_Implicit((Object)(object)sceneExitController.destinationScene) && (!Object.op_Implicit((Object)(object)sceneExitController.destinationScene.destinationsGroup) || !Object.op_Implicit((Object)(object)sceneExitController.destinationScene.loopedDestinationsGroup)) && !Object.op_Implicit((Object)(object)((Component)sceneExitController).GetComponent<TeleporterInteraction>()) && (Object)(object)sceneExitController.destinationScene != (Object)(object)Destination.seerStationStaff)
{
list.Clear();
list.Add(sceneExitController.destinationScene);
}
if (Object.op_Implicit((Object)(object)sceneExitController.destinationScene) && sceneExitController.destinationScene.cachedName == "moon2" && !sceneExitController.useRunNextStageScene)
{
list.Clear();
list.Add(SceneCatalog.FindSceneDef("moon2"));
}
if (sceneExitController.isColossusPortal)
{
int stageOrder = Stage.instance.sceneDef.stageOrder;
int num2 = Run.instance.nextStageScene.stageOrder;
if (num2 != stageOrder + 1 && stageOrder <= 5)
{
num2 = stageOrder + 1;
}
switch (num2)
{
case 2:
list.Clear();
list.Add(SceneCatalog.FindSceneDef("lemuriantemple"));
break;
case 3:
list.Clear();
if (Run.instance.stageClearCount <= 4)
{
list.Add(SceneCatalog.FindSceneDef("habitat"));
}
else
{
list.Add(SceneCatalog.FindSceneDef("habitatfall"));
}
break;
case 4:
list.Clear();
list.Add(SceneCatalog.FindSceneDef("meridian"));
break;
}
}
if (!flag)
{
list.Clear();
list.Add(nextStageScene);
}
if (Object.op_Implicit((Object)(object)sceneExitController.destinationScene))
{
if (sceneExitController.destinationScene.cachedName == "conduitcanyon")
{
list.Clear();
list.Add(SceneCatalog.FindSceneDef("conduitcanyon"));
}
if (sceneExitController.destinationScene.cachedName == "solutionalhaunt")
{
list.Clear();
list.Add(SceneCatalog.FindSceneDef("solutionalhaunt"));
}
}
if (Object.op_Implicit((Object)(object)sceneExitController.destinationScene) && (sceneExitController.destinationScene.cachedName == "artifactworld" || sceneExitController.destinationScene.cachedName == "artifactworld01" || sceneExitController.destinationScene.cachedName == "artifactworld02" || sceneExitController.destinationScene.cachedName == "artifactworld03"))
{
list.Remove(SceneCatalog.FindSceneDef(sceneExitController.destinationScene.cachedName));
list.Add(SceneCatalog.FindSceneDef("artifactworld"));
list.Add(SceneCatalog.FindSceneDef("artifactworld01"));
list.Add(SceneCatalog.FindSceneDef("artifactworld02"));
list.Add(SceneCatalog.FindSceneDef("artifactworld03"));
}
if (Run.instance is InfiniteTowerRun)
{
list.Clear();
list.Add(SceneCatalog.FindSceneDef("itancientloft"));
list.Add(SceneCatalog.FindSceneDef("itdampcave"));
list.Add(SceneCatalog.FindSceneDef("itfrozenwall"));
list.Add(SceneCatalog.FindSceneDef("itgolemplains"));
list.Add(SceneCatalog.FindSceneDef("itgoolake"));
list.Add(SceneCatalog.FindSceneDef("itskymeadow"));
list.Add(SceneCatalog.FindSceneDef("itmoon"));
list.Remove(SceneCatalog.FindSceneDef(Destination.infiniteTowerStaff.cachedName));
}
foreach (SceneDef item in list)
{
SceneDef sceneDef = item;
if (((!flag || (Object.op_Implicit((Object)(object)sceneDef.requiredExpansion) && !Run.instance.IsExpansionEnabled(sceneDef.requiredExpansion)) || (Object.op_Implicit((Object)(object)nextStageScene) && (!Object.op_Implicit((Object)(object)sceneExitController.destinationScene) || (Object)(object)sceneDef != (Object)(object)sceneExitController.destinationScene) && (sceneDef.stageOrder != num || (int)sceneDef.sceneType != 1))) && sceneDef.cachedName != "artifactworld" && sceneDef.cachedName != "artifactworld01" && sceneDef.cachedName != "artifactworld02" && sceneDef.cachedName != "artifactworld03") || (Object.op_Implicit((Object)(object)sceneExitController.destinationScene) && sceneExitController.destinationScene.cachedName != "conduitcanyon" && sceneDef.cachedName == "conduitcanyon") || (Object.op_Implicit((Object)(object)sceneExitController.destinationScene) && sceneExitController.destinationScene.cachedName != "artifactworld" && sceneExitController.destinationScene.cachedName != "artifactworld01" && sceneExitController.destinationScene.cachedName != "artifactworld02" && sceneExitController.destinationScene.cachedName != "artifactworld03" && (sceneDef.cachedName == "artifactworld" || sceneDef.cachedName == "artifactworld01" || sceneDef.cachedName == "artifactworld02" || sceneDef.cachedName == "artifactworld03")) || (Run.instance.stageClearCount < 4 && sceneDef.isLockedBeforeLooping && ((Object)(object)Destination.seerStationStaff == (Object)null || Destination.seerStationStaff.cachedName != sceneDef.cachedName)) || (Run.instance.stageClearCount >= 4 && Object.op_Implicit((Object)(object)sceneDef.loopedSceneDef) && ((Object)(object)Destination.seerStationStaff == (Object)null || Destination.seerStationStaff.cachedName != sceneDef.cachedName)) || sceneDef.cachedName == "golemplains2" || sceneDef.cachedName == "blackbeach2" || (!sceneExitController.isColossusPortal && ((Object)(object)Destination.seerStationStaff == (Object)null || Destination.seerStationStaff.cachedName != sceneDef.cachedName) && (sceneDef.cachedName == "habitat" || sceneDef.cachedName == "habitatfall" || sceneDef.cachedName == "lemuriantemple" || sceneDef.cachedName == "meridian")) || (sceneDef.cachedName == "moon2" && sceneExitController.useRunNextStageScene))
{
continue;
}
HGButton component = Object.Instantiate<GameObject>(gameObject, val).GetComponent<HGButton>();
((Component)component).gameObject.SetActive(true);
if (Object.op_Implicit((Object)(object)((Selectable)component).image) && Object.op_Implicit((Object)(object)sceneDef.previewTexture))
{
Texture previewTexture = sceneDef.previewTexture;
Texture2D val2 = (Texture2D)(object)((previewTexture is Texture2D) ? previewTexture : null);
Sprite sprite = Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), new Vector2(0f, 0f));
((Selectable)component).image.sprite = sprite;
if (sceneDef.cachedName == "nest")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/GearboxAreStupid/texNest_GearboxAreStupid.png");
}
if (sceneDef.cachedName == "villagenight")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/GearboxAreStupid/texVillageNight_GearboxAreStupid.png");
}
if (sceneDef.cachedName == "solusweb")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/GearboxAreStupid/texSolusWeb_GearboxAreStupid.png");
}
if (Run.instance is InfiniteTowerRun)
{
if (sceneDef.cachedName == "itancientloft")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/ForSimulacrum/itAncientLoft.png");
}
if (sceneDef.cachedName == "itdampcave")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/ForSimulacrum/itDampCave.png");
}
if (sceneDef.cachedName == "itfrozenwall")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/ForSimulacrum/itFrozenWall.png");
}
if (sceneDef.cachedName == "itgolemplains")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/ForSimulacrum/itGolemPlains.png");
}
if (sceneDef.cachedName == "itgoolake")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/ForSimulacrum/itGooLake.png");
}
if (sceneDef.cachedName == "itmoon")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/ForSimulacrum/itMoon.png");
}
if (sceneDef.cachedName == "itskymeadow")
{
((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset<Sprite>("Assets/Artifacts/ForSimulacrum/itSkyMeadow.png");
}
}
}
component.imageOnHover = ((Component)((Component)component).gameObject.transform.Find("button, outline")).gameObject.GetComponent<Image>();
component.showImageOnHover = true;
((UnityEvent)((Button)component).onClick).AddListener(new UnityAction(sus));
void sus()
{
string cachedName = sceneDef.cachedName;
if (!(cachedName == "golemplains"))
{
if (cachedName == "blackbeach")
{
float num3 = Mathf.Round(Random.Range(0f, 1f));
if (num3 == 0f)
{
Destination.pickedSceneDef = sceneDef;
sceneExitController.destinationScene = sceneDef;
}
if (num3 == 1f)
{
Destination.pickedSceneDef = SceneCatalog.FindSceneDef("blackbeach2");
sceneExitController.destinationScene = SceneCatalog.FindSceneDef("blackbeach2");
}
}
else
{
Destination.pickedSceneDef = sceneDef;
sceneExitController.destinationScene = sceneDef;
}
}
else
{
float num4 = Mathf.Round(Random.Range(0f, 1f));
if (num4 == 0f)
{
Destination.pickedSceneDef = sceneDef;
sceneExitController.destinationScene = sceneDef;
}
if (num4 == 1f)
{
Destination.pickedSceneDef = SceneCatalog.FindSceneDef("golemplains2");
sceneExitController.destinationScene = SceneCatalog.FindSceneDef("golemplains2");
}
}
((Component)this).gameObject.SetActive(false);
Object.Destroy((Object)(object)Destination.panelPrefab);
((Behaviour)((Component)HUD.instancesList[0].mainContainer.transform.Find("MainUIArea")).GetComponent<Canvas>()).enabled = true;
Destination.stopSpawningPortalsPlease = false;
if (Util.HasEffectiveAuthority(HUD.instancesList[0].oldTarget.GetComponent<CharacterBody>().networkIdentity))
{
AkSoundEngine.PostEvent(3652871718u, HUD.instancesList[0].oldTarget);
}
}
}
if (Object.op_Implicit((Object)(object)((Component)this).gameObject.GetComponent<StagePickerSizeAdjuster>()))
{
((Component)this).gameObject.GetComponent<StagePickerSizeAdjuster>().MikeRebuildMyPanel();
}
}
private void FixedUpdate()
{
if ((Object)(object)HUD.instancesList[0].mainContainer.GetComponentInChildren<ScoreboardController>() != (Object)null)
{
destinationCancelExit.Cancel();
}
}
}
public class StagePickerSizeAdjuster : MonoBehaviour
{
private int buttonCount;
private float normalSizeX;
private float normalSizeY;
private void MikeFindVariables()
{
//IL_0020: 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)
normalSizeX = ((Component)((Component)this).gameObject.transform.Find("body")).gameObject.GetComponent<RectTransform>().sizeDelta.x;
normalSizeY = ((Component)((Component)this).gameObject.transform.Find("body")).gameObject.GetComponent<RectTransform>().sizeDelta.y;
}
public void MikeRebuildMyPanel()
{
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
MikeFindVariables();
for (buttonCount = ((Component)((Component)this).gameObject.transform.Find("body/BeetleJuice/content")).gameObject.transform.childCount; buttonCount > 7; buttonCount -= 3)
{
((Component)((Component)this).gameObject.transform.Find("body")).gameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(normalSizeX + 300f, normalSizeY);
normalSizeX = ((Component)((Component)this).gameObject.transform.Find("body")).gameObject.GetComponent<RectTransform>().sizeDelta.x;
}
}
}
public class Feathers2Behaviour : ItemBehavior
{
public float maxTimerNumber;
private float realTimerNumber;
public CharacterBody playerBody;
public static FireProjectileInfo fireProjectileInfo;
public GameObject wingusDingus;
private void Awake()
{
((Behaviour)this).enabled = false;
}
private void Start()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
wingusDingus = Object.Instantiate<GameObject>(Feathers2.Feather2WingsEffectPrefab, playerBody.coreTransform.position, playerBody.coreTransform.rotation);
float radius = playerBody.radius;
wingusDingus.transform.localScale = new Vector3(1.5f * radius, 1.5f * radius, 1.5f * radius);
wingusDingus.transform.SetParent(playerBody.coreTransform);
}
private void OnEnable()
{
}
private void OnDisable()
{
}
private void OnDestroy()
{
Object.Destroy((Object)(object)wingusDingus);
}
private void FixedUpdate()
{
CharacterMotor val = default(CharacterMotor);
CharacterMotor val2 = default(CharacterMotor);
if (((((Component)playerBody).TryGetComponent<CharacterMotor>(ref val) && !val.isGrounded) || !((Component)playerBody).TryGetComponent<CharacterMotor>(ref val2)) && playerBody.inputBank.skill1.down)
{
realTimerNumber -= Time.deltaTime;
if (realTimerNumber <= 0f)
{
FireProjectile(playerBody);
AkSoundEngine.PostEvent(623304158u, ((Component)playerBody).gameObject);
realTimerNumber = maxTimerNumber;
}
if (!wingusDingus.activeSelf)
{
wingusDingus.SetActive(true);
}
}
else
{
realTimerNumber = maxTimerNumber;
if (wingusDingus.activeSelf)
{
wingusDingus.SetActive(false);
}
}
}
private void FireProjectile(CharacterBody characterBody)
{
//IL_0002: 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_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: 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_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
FireProjectileInfo val = default(FireProjectileInfo);
val.owner = ((Component)characterBody).gameObject;
val.damage = 0.8f * characterBody.damage;
val.force = 10f;
val.position = characterBody.corePosition;
val.rotation = Util.QuaternionSafeLookRotation(characterBody.inputBank.aimDirection);
val.projectilePrefab = Feathers2.Projectile;
fireProjectileInfo = val;
ProjectileManager.instance.FireProjectile(fireProjectileInfo);
}
}
public class georevealer : NetworkBehaviour
{
private struct PendingReveal : IComparable<PendingReveal>
{
public GameObject gameObject;
public FixedTimeStamp time;
public float duration;
public int CompareTo(PendingReveal other)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
return ((FixedTimeStamp)(ref time)).CompareTo(other.time);
}
}
private class RevealedObject : MonoBehaviour
{
private float lifetime;
private static readonly Dictionary<GameObject, RevealedObject> currentlyRevealedObjects = new Dictionary<GameObject, RevealedObject>();
private PositionIndicator positionIndicator;
public static void RevealObject(GameObject gameObject, float duration)
{
if (!currentlyRevealedObjects.TryGetValue(gameObject, out var value))
{
if ((Object)(object)gameObject.GetComponent<ShrineBloodBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineBossBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineChanceBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineCleanseBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineCombatBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineHealingBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineRestackBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<TeleporterInteraction>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<PortalStatueBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<PressurePlateController>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineRebirthController>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<HalcyoniteShrineInteractable>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineColossusAccessBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else if ((Object)(object)gameObject.GetComponent<ShrineCombatTroopBehavior>() != (Object)null)
{
value = gameObject.AddComponent<RevealedObject>();
}
else
{
if (!((Object)(object)gameObject.GetComponent<ShrinePlanetManager>() != (Object)null))
{
return;
}
value = gameObject.AddComponent<RevealedObject>();
}
}
if (value.lifetime < duration)
{
value.lifetime = duration;
}
}
private void OnEnable()
{
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
NetworkIdentity component = ((Component)this).gameObject.GetComponent<NetworkIdentity>();
if (Object.op_Implicit((Object)(object)component))
{
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
if (!((Object)(object)instance == (Object)null) && instance.isPingTheSameNetworkObject(component))
{
Object.Destroy((Object)(object)this);
return;
}
}
}
GameObject val = Object.Instantiate<GameObject>(LegacyResourcesAPI.Load<GameObject>("Prefabs/PositionIndicators/PoiPositionIndicator"), ((Component)this).transform.position, ((Component)this).transform.rotation);
positionIndicator = val.GetComponent<PositionIndicator>();
positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().sprite = GetInteractableIcon(((Component)this).gameObject);
positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().color = new Color(0.63f, 0.87f, 1f, 1f);
positionIndicator.outsideViewObject.GetComponentInChildren<SpriteRenderer>().color = new Color(0.63f, 0.87f, 1f, 1f);
positionIndicator.targetTransform = ((Component)this).transform;
currentlyRevealedObjects[((Component)this).gameObject] = this;
}
private void OnDisable()
{
currentlyRevealedObjects.Remove(((Component)this).gameObject);
if (Object.op_Implicit((Object)(object)positionIndicator))
{
Object.Destroy((Object)(object)((Component)positionIndicator).gameObject);
}
positionIndicator = null;
}
private void FixedUpdate()
{
lifetime -= Time.fixedDeltaTime;
if (lifetime <= 0f)
{
Object.Destroy((Object)(object)this);
}
}
}
[SyncVar]
public float radius;
public float pulseTravelSpeed;
public float revealDuration;
public float pulseInterval;
private FixedTimeStamp nextPulse = FixedTimeStamp.negativeInfinity;
public GameObject pulseEffectPrefab;
public float pulseEffectScale;
private static readonly List<PendingReveal> pendingReveals = new List<PendingReveal>();
private static Type[] typesToCheck;
private Vector3 spawn;
public float Networkradius
{
get
{
return radius;
}
[param: In]
set
{
((NetworkBehaviour)this).SetSyncVar<float>(value, ref radius, 1u);
}
}
public static Sprite GetInteractableIcon(GameObject gameObject)
{
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Invalid comparison between Unknown and I4
PingInfoProvider component = gameObject.GetComponent<PingInfoProvider>();
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.pingIconOverride))
{
return component.pingIconOverride;
}
string text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorMystery.png";
if (((Object)gameObject).name.Contains("Shrine"))
{
text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorShrine.png";
}
else if (Object.op_Implicit((Object)(object)gameObject.GetComponent<TeleporterInteraction>()))
{
text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorTeleporter.png";
}
else
{
PortalStatueBehavior component2 = gameObject.GetComponent<PortalStatueBehavior>();
if (Object.op_Implicit((Object)(object)component2) && (int)component2.portalType == 0)
{
text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorMystery.png";
}
else
{
PurchaseInteraction component3 = gameObject.GetComponent<PurchaseInteraction>();
if (Object.op_Implicit((Object)(object)component3) && (int)component3.costType == 3)
{
text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorShrine.png";
}
}
}
return Assets.mainAssetBundle.LoadAsset<Sprite>(text);
}
[InitDuringStartupPhase(/*Could not decode attribute arguments.*/)]
private static void Init()
{
RoR2Application.onFixedUpdate += StaticFixedUpdate;
typesToCheck = (from t in typeof(ChestRevealer).Assembly.GetTypes()
where typeof(IInteractable).IsAssignableFrom(t)
select t).ToArray();
}
private static void StaticFixedUpdate()
{
pendingReveals.Sort();
while (pendingReveals.Count > 0)
{
PendingReveal pendingReveal = pendingReveals[0];
if (((FixedTimeStamp)(ref pendingReveal.time)).hasPassed)
{
if (Object.op_Implicit((Object)(object)pendingReveal.gameObject))
{
RevealedObject.RevealObject(pendingReveal.gameObject, pendingReveal.duration);
}
pendingReveals.RemoveAt(0);
continue;
}
break;
}
}
public void Pulse()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: 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_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
Vector3 origin = ((Component)this).transform.position;
float radiusSqr = radius * radius;
float invPulseTravelSpeed = 1f / pulseTravelSpeed;
Type[] array = typesToCheck;
for (int i = 0; i < array.Length; i++)
{
foreach (MonoBehaviour item2 in InstanceTracker.FindInstancesEnumerable(array[i]))
{
if (((IInteractable)item2).ShouldShowOnScanner())
{
TryAddRevealable(((Component)item2).transform);
}
}
}
spawn = origin;
((MonoBehaviour)this).Invoke("SpawnEffect", 0.5f);
void TryAddRevealable(Transform revealableTransform)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//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_0011: 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_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
Vector3 val = revealableTransform.position - origin;
float sqrMagnitude = ((Vector3)(ref val)).sqrMagnitude;
if (!(sqrMagnitude > radiusSqr) && (!((Object)(object)((Component)revealableTransform).gameObject.GetComponent<TeleporterInteraction>() != (Object)null) || !((Component)revealableTransform).gameObject.GetComponent<TeleporterInteraction>().TrySetTeleporterIndicatorDiscovered(true)))
{
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
if (!((Object)(object)instance == (Object)null) && instance.isPingTheSameNetworkObject(((Component)revealableTransform).gameObject.GetComponent<NetworkIdentity>()))
{
return;
}
}
float num = Mathf.Sqrt(sqrMagnitude) * invPulseTravelSpeed;
PendingReveal pendingReveal = default(PendingReveal);
pendingReveal.gameObject = ((Component)revealableTransform).gameObject;
pendingReveal.time = FixedTimeStamp.now + num;
pendingReveal.duration = revealDuration;
PendingReveal item = pendingReveal;
pendingReveals.Add(item);
}
}
}
private void SpawnEffect()
{
//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_000d: 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_0030: Expected O, but got Unknown
EffectManager.SpawnEffect(pulseEffectPrefab, new EffectData
{
origin = spawn,
scale = radius * pulseEffectScale
}, false);
}
private void FixedUpdate()
{
//IL_0014: 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_0024: Unknown result type (might be due to invalid IL or missing references)
if (((FixedTimeStamp)(ref nextPulse)).hasPassed)
{
Pulse();
nextPulse = FixedTimeStamp.now + pulseInterval;
}
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
if (forceAll)
{
writer.Write(radius);
return true;
}
bool flag = false;
if ((((NetworkBehaviour)this).syncVarDirtyBits & (true ? 1u : 0u)) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
flag = true;
}
writer.Write(radius);
}
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
}
return flag;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
if (initialState)
{
radius = reader.ReadSingle();
return;
}
int num = (int)reader.ReadPackedUInt32();
if (((uint)num & (true ? 1u : 0u)) != 0)
{
radius = reader.ReadSingle();
}
}
}
public class HandleHeatcore : MonoBehaviour
{
public GameObject theresholdInstance;
public float theEndIsNear;
private bool playBuildUpSound;
private float segmentMoveX;
private float theresholdMoveX;
private float theresholdCurrentPositionX;
private float heatcoreTimer = 360f;
public GameObject theDifficultyBar;
public CharacterBody heatHolder;
private int stopSearching;
private void OnEnable()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
try
{
if (heatHolder.isPlayerControlled)
{
FindСorrespondingDificultyBar();
DifficultyBarController.SetSegmentScroll += new hook_SetSegmentScroll(MoveThereshold);
}
theEndIsNear = heatcoreTimer;
playBuildUpSound = true;
}
catch (Exception)
{
((Behaviour)this).enabled = false;
}
}
private void OnDisable()
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Expected O, but got Unknown
try
{
if (Object.op_Implicit((Object)(object)theDifficultyBar))
{
DifficultyBarController.SetSegmentScroll -= new hook_SetSegmentScroll(MoveThereshold);
}
}
catch (Exception)
{
}
}
private void OnDestroy()
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
try
{
if (Object.op_Implicit((Object)(object)theDifficultyBar))
{
AkSoundEngine.PostEvent(199676870u, ((Component)heatHolder).gameObject);
Object.Destroy((Object)(object)theresholdInstance.gameObject);
DifficultyBarController.SetSegmentScroll -= new hook_SetSegmentScroll(MoveThereshold);
}
}
catch (Exception)
{
}
}
private void FixedUpdate()
{
if (!Run.instance.isRunStopwatchPaused)
{
theEndIsNear -= Time.deltaTime;
if (theEndIsNear <= 30f && playBuildUpSound)
{
AkSoundEngine.PostEvent(3779037176u, ((Component)heatHolder).gameObject);
playBuildUpSound = false;
}
}
}
private void MoveThereshold(orig_SetSegmentScroll orig, DifficultyBarController self, float segmentScroll)
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: 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)
orig.Invoke(self, segmentScroll);
if (!Object.op_Implicit((Object)(object)theresholdInstance))
{
return;
}
segmentMoveX = self.segmentContainer.offsetMin.x;
if (theresholdMoveX != segmentMoveX)
{
float num = theresholdMoveX - segmentMoveX;
if (num >= 9f || num <= -9f)
{
num = 1f;
}
if (theresholdCurrentPositionX - num <= 72f)
{
theresholdInstance.GetComponent<RectTransform>().anchoredPosition = new Vector2(theresholdCurrentPositionX - num, 0f);
}
else
{
theresholdInstance.GetComponent<RectTransform>().anchoredPosition = new Vector2(72f, 0f);
}
theresholdMoveX = segmentMoveX;
theresholdCurrentPositionX -= num;
}
}
private void SetupThereshold()
{
//IL_006b: 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_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: 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)
if (Object.op_Implicit((Object)(object)theDifficultyBar))
{
if ((Object)(object)theresholdInstance != (Object)null)
{
Object.Destroy((Object)(object)theresholdInstance.gameObject);
}
theresholdInstance = Object.Instantiate<GameObject>(Heatcore.HeatcoreThereshold, theDifficultyBar.transform);
if (23f * (0.85f + (float)Run.instance.participatingPlayerCount * 0.15f) * DifficultyCatalog.GetDifficultyDef(Run.instance.selectedDifficulty).scalingValue * Mathf.Pow(1.15f, (float)Run.instance.stageClearCount) <= 72f)
{
theresholdInstance.GetComponent<RectTransform>().anchoredPosition = new Vector2(23f * (0.85f + (float)Run.instance.participatingPlayerCount * 0.15f) * DifficultyCatalog.GetDifficultyDef(Run.instance.selectedDifficulty).scalingValue * Mathf.Pow(1.15f, (float)Run.instance.stageClearCount), 0f);
}
else
{
theresholdInstance.GetComponent<RectTransform>().anchoredPosition = new Vector2(72f, 0f);
}
theresholdCurrentPositionX = 23f * (0.85f + (float)Run.instance.participatingPlayerCount * 0.15f) * DifficultyCatalog.GetDifficultyDef(Run.instance.selectedDifficulty).scalingValue * Mathf.Pow(1.15f, (float)Run.instance.stageClearCount);
segmentMoveX = theDifficultyBar.GetComponent<DifficultyBarController>().segmentContainer.offsetMin.x;
theresholdMoveX = segmentMoveX;
}
}
private void FindСorrespondingDificultyBar()
{
using List<HUD>.Enumerator enumerator = HUD.instancesList.GetEnumerator();
if (enumerator.MoveNext())
{
HUD current = enumerator.Current;
if ((Object)(object)current.oldTarget == (Object)(object)((Component)heatHolder).gameObject)
{
theDifficultyBar = ((Component)((Component)current).gameObject.GetComponentInChildren<DifficultyBarController>()).gameObject;
SetupThereshold();
}
else
{
((MonoBehaviour)this).Invoke("FindСorrespondingDificultyBar", 0.1f);
stopSearching++;
}
}
}
}
public class HandleTalisman : MonoBehaviour
{
public CharacterBody self;
private float healingTimer;
public float healingInterval = 1f;
public int timesHealed;
private void OnEnable()
{
try
{
self.onSkillActivatedServer += OnSkillActivatedServer;
timesHealed = 0;
if (Util.HasEffectiveAuthority(self.networkIdentity))
{
AkSoundEngine.PostEvent(2303086811u, ((Component)self).gameObject);
}
}
catch (Exception)
{
((Behaviour)this).enabled = false;
}
}
private void OnDisable()
{
try
{
self.onSkillActivatedServer -= OnSkillActivatedServer;
}
catch (Exception)
{
}
}
private void OnDestroy()
{
try
{
self.onSkillActivatedServer -= OnSkillActivatedServer;
self.RemoveBuff(Buffs.Cloak);
self.RemoveBuff(Talisman.TalismanRegen);
if (Util.HasEffectiveAuthority(self.networkIdentity))
{
AkSoundEngine.PostEvent(1911342449u, ((Component)self).gameObject);
}
}
catch (Exception)
{
}
}
private void FixedUpdate()
{
//IL_004f: 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)
if (self.HasBuff(Talisman.TalismanRegen))
{
healingTimer -= Time.fixedDeltaTime;
if (healingTimer <= 0f)
{
healingTimer = healingInterval;
self.healthComponent.HealFraction(0.01f, default(ProcChainMask));
timesHealed++;
}
}
if (timesHealed == 11)
{
Object.Destroy((Object)(object)this);
}
}
private void OnSkillActivatedServer(GenericSkill genericSkill)
{
if (self.HasBuff(Talisman.TalismanRegen))
{
Object.Destroy((Object)(object)this);
}
}
}
public class InstinctController : MonoBehaviour
{
private CharacterBody _characterBody;
public bool isSucker;
public bool isAbsoluteSucker;
private void Awake()
{
_characterBody = ((Component)this).GetComponent<CharacterBody>();
if (Object.op_Implicit((Object)(object)((Component)_characterBody.healthComponent).GetComponent<SetStateOnHurt>()))
{
isSucker = ((Component)_characterBody.healthComponent).GetComponent<SetStateOnHurt>().canBeStunned;
isAbsoluteSucker = ((Component)_characterBody.healthComponent).GetComponent<SetStateOnHurt>().canBeHitStunned;
}
}
private void OnDestroy()
{
if (_characterBody.HasBuff(Instinct.RageInstinct))
{
_characterBody.RemoveBuff(Instinct.RageInstinct);
}
}
private void FixedUpdate()
{
if (_characterBody.healthComponent.combinedHealth <= _characterBody.healthComponent.fullCombinedHealth / 2f && _characterBody.healthComponent.combinedHealth > 0f)
{
if (!_characterBody.HasBuff(Instinct.RageInstinct))
{
_characterBody.AddBuff(Instinct.RageInstinct);
}
}
else if (_characterBody.HasBuff(Instinct.RageInstinct))
{
_characterBody.RemoveBuff(Instinct.RageInstinct);
}
}
}
public class MortICantMoveItMoveItAnymore : MonoBehaviour
{
private CharacterBody body;
private TemporaryOverlayInstance injuredOverlayInstance;
private void Awake()
{
body = ((Component)this).GetComponent<CharacterBody>();
if (!body.HasBuff(Instinct.Injured))
{
Object.Destroy((Object)(object)this);
}
injuredOverlayInstance = TemporaryOverlayManager.AddOverlay(((Component)body.modelLocator.modelTransform).gameObject);
injuredOverlayInstance.duration = 1000f;
injuredOverlayInstance.animateShaderAlpha = true;
injuredOverlayInstance.alphaCurve = AnimationCurve.EaseInOut(1f, 1f, 1f, 0f);
injuredOverlayInstance.destroyComponentOnEnd = true;
injuredOverlayInstance.originalMaterial = Instinct.InjuredMaterial;
injuredOverlayInstance.AddToCharacterModel(((Component)body.modelLocator.modelTransform).gameObject.GetComponent<CharacterModel>());
}
private void OnDestroy()
{
injuredOverlayInstance.Destroy();
}
private void FixedUpdate()
{
if (body.HasBuff(Instinct.Injured))
{
body.isSprinting = false;
}
else
{
Object.Destroy((Object)(object)this);
}
}
}
public class PaperdogBehaviour : ItemBehavior
{
private bool playSound;
private bool inPeace;
private bool providingBuff;
public float outOfCombatStopwatch2;
public float outOfDangerStopwatch2;
private void OnEnable()
{
}
private void OnDisable()
{
try
{
((Component)this).gameObject.GetComponent<CharacterBody>().RemoveBuff(Paperdog.Continuity);
}
catch (Exception)
{
}
}
private void OnDestroy()
{
try
{
((Component)this).gameObject.GetComponent<CharacterBody>().RemoveBuff(Paperdog.Continuity);
}
catch (Exception)
{
}
}
private void SetProvidingBuff(bool shouldProvideBuff, CharacterBody body)
{
if (shouldProvideBuff != providingBuff)
{
providingBuff = shouldProvideBuff;
if (providingBuff)
{
body.AddBuff(Paperdog.Continuity);
}
else
{
body.RemoveBuff(Paperdog.Continuity);
}
}
}
private void FixedUpdate()
{
outOfCombatStopwatch2 += Time.fixedDeltaTime;
outOfDangerStopwatch2 += Time.fixedDeltaTime;
if (outOfDangerStopwatch2 >= 3f && outOfCombatStopwatch2 >= 3f)
{
inPeace = true;
if (playSound)
{
AkSoundEngine.PostEvent(1179956560u, ((Component)this).gameObject);
playSound = false;
}
}
else
{
inPeace = false;
playSound = true;
}
SetProvidingBuff(inPeace, ((Component)this).gameObject.GetComponent<CharacterBody>());
}
}
public class RedGuitarBehaviour : ItemBehavior
{
private CharacterBody Chris;
public int itemCount;
private void OnEnable()
{
try
{
BossGroup.onBossGroupStartServer += OnBossGroupStartServer;
Chris = ((Component)this).gameObject.GetComponent<CharacterBody>();
}
catch (Exception)
{
((Behaviour)this).enabled = false;
}
}
private void OnDisable()
{
try
{
BossGroup.onBossGroupStartServer -= OnBossGroupStartServer;
}
catch (Exception)
{
}
}
private void OnDestroy()
{
try
{
BossGroup.onBossGroupStartServer -= OnBossGroupStartServer;
}
catch (Exception)
{
}
}
private void OnBossGroupStartServer(BossGroup bossGroup)
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: 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)
AkSoundEngine.PostEvent(3245283788u, ((Component)Chris).gameObject);
foreach (TeamComponent teamMember in TeamComponent.GetTeamMembers(Chris.teamComponent.teamIndex))
{
if (teamMember.teamIndex == Chris.teamComponent.teamIndex)
{
((Component)teamMember).GetComponent<CharacterBody>().AddTimedBuff(RedGuitar.Jamming, (float)(5 + 5 * itemCount), 1);
Transform modelTransform = teamMember.body.modelLocator.modelTransform;
if (Object.op_Implicit((Object)(object)modelTransform))
{
TemporaryOverlayInstance obj = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject);
obj.duration = 5f + 5f * (float)itemCount;
obj.animateShaderAlpha = true;
obj.alphaCurve = AnimationCurve.EaseInOut(1f, 1f, 1f, 0f);
obj.destroyComponentOnEnd = true;
obj.originalMaterial = Assets.mainAssetBundle.LoadAsset<Material>("Jamming_material.mat");
obj.AddToCharacterModel(((Component)modelTransform).gameObject.GetComponent<CharacterModel>());
}
}
}
}
}
public class RepairStationManager : NetworkBehaviour
{
public NewPickupPickerController PickupPickerController;
public NetworkUIPromptController NetworkUIPromptController;
public Animator animator;
public EntityStateMachine esm;
public NetworkStateMachine esm2;
public int maxItemsToScrapAtATime = 1;
public Interactor interactor;
public UniquePickup pickupPrint;
public void Start()
{
esm2 = ((Component)this).gameObject.GetComponent<NetworkStateMachine>();
PickupPickerController = ((Component)this).gameObject.GetComponent<NewPickupPickerController>();
animator = ((Component)this).gameObject.GetComponentInChildren<Animator>();
((UnityEvent<Interactor>)(object)((PickupPickerController)((Component)this).gameObject.GetComponent<NewPickupPickerController>()).onServerInteractionBegin).AddListener((UnityAction<Interactor>)AssignPotentialInteractor);
((UnityEvent<Interactor>)(object)((PickupPickerController)((Component)this).gameObject.GetComponent<NewPickupPickerController>()).onServerInteractionBegin).AddListener((UnityAction<Interactor>)((PickupPickerController)((Component)this).gameObject.GetComponent<NewPickupPickerController>()).SetOptionsFromInteractor);
((UnityEvent<UniquePickup>)(object)((PickupPickerController)((Component)this).gameObject.GetComponent<NewPickupPickerController>()).onUniquePickupSelected).AddListener((UnityAction<UniquePickup>)BeginRepair);
((UnityEvent<UniquePickup>)(object)((PickupPickerController)((Component)this).gameObject.GetComponent<NewPickupPickerController>()).onUniquePickupSelected).AddListener((UnityAction<UniquePickup>)ClearParticipant);
void ClearParticipant(UniquePickup arg0)
{
((Component)this).gameObject.GetComponent<NetworkUIPromptController>().ClearParticipant();
}
}
private void FixedUpdate()
{
((PickupPickerController)PickupPickerController).multiOptionsAvailable = false;
}
[Server]
public void AssignPotentialInteractor(Interactor potentialInteractor)
{
if (!NetworkServer.active)
{
Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.RepairStationManager::AssignPotentialInteractor(RoR2.Interactor)' called on client");
}
else if (!NetworkServer.active)
{
Debug.LogWarning((object)"UwU");
}
else
{
interactor = potentialInteractor;
}
}
[Server]
public void BeginRepair(UniquePickup pickupToTake)
{
//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: 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_0073: 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)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: 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)
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: Unknown result type (might be due to invalid IL or missing references)
//IL_018d: Unknown result type (might be due to invalid IL or missing references)
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.RepairStationManager::BeginRepair(RoR2.UniquePickup)' called on client");
return;
}
if (!NetworkServer.active)
{
Debug.LogWarning((object)"[Server] function 'BeginRepair' called on client");
return;
}
PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupToTake.pickupIndex);
if (pickupDef == null)
{
return;
}
ItemDef itemDef = ItemCatalog.GetItemDef((ItemIndex)((pickupDef == null) ? (-1) : ((int)pickupDef.itemIndex)));
if (!Object.op_Implicit((Object)(object)itemDef))
{
return;
}
string name = itemDef.nameToken.Replace("CONSUMED", "");
ItemIndex itemIndex = ((IEnumerable<ItemDef>)(object)ItemCatalog.allItemDefs).Where((ItemDef x) => x.nameToken == name).FirstOrDefault().itemIndex;
CharacterBody val = default(CharacterBody);
if (!((Component)interactor).TryGetComponent<CharacterBody>(ref val))
{
return;
}
Inventory inventory = val.inventory;
if (!Object.op_Implicit((Object)(object)inventory))
{
return;
}
ItemTransformation val2 = default(ItemTransformation);
((ItemTransformation)(ref val2)).allowWhenDisabled = false;
((ItemTransformation)(ref val2)).forbidPermanentItems = ((UniquePickup)(ref pickupToTake)).isTempItem;
((ItemTransformation)(ref val2)).forbidTempItems = !((UniquePickup)(ref pickupToTake)).isTempItem;
((ItemTransformation)(ref val2)).minToTransform = 1;
((ItemTransformation)(ref val2)).maxToTransform = 1;
((ItemTransformation)(ref val2)).originalItemIndex = itemDef.itemIndex;
((ItemTransformation)(ref val2)).newItemIndex = (ItemIndex)(-1);
val2.transformationType = (ItemTransformationTypeIndex)(-1);
ItemTransformation val3 = val2;
bool flag = false;
TryTransformResult val4 = default(TryTransformResult);
if (((ItemTransformation)(ref val3)).TryTransform(inventory, ref val4) && Object.op_Implicit((Object)(object)val))
{
for (int i = 0; i < ((TryTransformResult)(ref val4)).totalTransformed; i++)
{
GameObject gameObject = ((Component)((Component)this).gameObject.transform.FindChild("DropPivot")).gameObject;
try
{
PickupIndex pickupIndex = PickupCatalog.FindPickupIndex(itemIndex);
pickupPrint = new UniquePickup
{
pickupIndex = pickupIndex
};
ExpeditionHelpfulUtils.CreateItemTakenOrb(val.corePosition, gameObject, GetAdditionalRandomItem(inventory, itemIndex));
ExpeditionHelpfulUtils.CreateItemTakenOrb(val.corePosition, gameObject, val4.takenItem.itemIndex);
}
catch (ArgumentOutOfRangeException)
{
inventory.GiveItemPermanent(itemDef.itemIndex, 1);
Debug.LogError((object)"You have not items to repair!");
Debug.LogError((object)"Have not? What?");
break;
}
flag = true;
}
}
if (Object.op_Implicit((Object)(object)esm) && flag)
{
esm.SetNextState((EntityState)(object)new RSWaitToBeginRepair());
}
}
public bool IsRewardPickupEmpty()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
_ = pickupPrint;
return false;
}
public UniquePickup PopRewardPickup()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return pickupPrint;
}
public ItemIndex GetAdditionalRandomItem(Inventory inventory, ItemIndex itemIndex)
{
//IL_0000: 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_0010: Invalid comparison between Unknown and I4
//IL_0035: 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_0018: 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_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_0050: 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_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0178: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_0134: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
//IL_0163: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_0192: Unknown result type (might be due to invalid IL or missing references)
//IL_0197: Unknown result type (might be due to invalid IL or missing references)
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01af: Unknown result type (might be due to invalid IL or missing references)
//IL_01de: Unknown result type (might be due to invalid IL or missing references)
//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: 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_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0127: Expected O, but got Unknown
ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex);
bool flag = false;
ItemIndex val;
if ((int)itemDef.tier == 1 && inventory.GetItemCountPermanent(Items.RegeneratingScrap.itemIndex) > 0)
{
val = Items.RegeneratingScrap.itemIndex;
flag = true;
}
else
{
PickupDef pickupDef = PickupCatalog.GetPickupDef(PickupCatalog.FindScrapIndexForItemTier(itemDef.tier));
val = (ItemIndex)((pickupDef == null) ? (-1) : ((int)pickupDef.itemIndex));
flag = false;
}
if (inventory.GetItemCountPermanent(val) > 0)
{
inventory.RemoveItemPermanent(val, 1);
if (flag)
{
EntitySoundManager.EmitSoundServer(NetworkSoundEventCatalog.FindNetworkSoundEventIndex("Play_item_proc_regenScrap_consume"), ((Component)inventory.characterBody).gameObject);
ModelLocator component = ((Component)inventory.characterBody).GetComponent<ModelLocator>();
if (Object.op_Implicit((Object)(object)component))
{
Transform modelTransform = component.modelTransform;
if (Object.op_Implicit((Object)(object)modelTransform))
{
CharacterModel component2 = ((Component)modelTransform).GetComponent<CharacterModel>();
if (Object.op_Implicit((Object)(object)component2))
{
List<GameObject> itemDisplayObjects = component2.GetItemDisplayObjects(Items.RegeneratingScrap.itemIndex);
if (itemDisplayObjects.Count > 0)
{
GameObject val2 = itemDisplayObjects[0];
GameObject obj = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/RegeneratingScrap/RegeneratingScrapExplosionDisplay.prefab").WaitForCompletion();
EffectData val3 = new EffectData
{
origin = val2.transform.position,
rotation = val2.transform.rotation
};
EffectManager.SpawnEffect(obj, val3, true);
}
}
}
}
EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/RegeneratingScrap/RegeneratingScrapExplosionInPrinter.prefab").WaitForCompletion(), ((Component)this).gameObject, "DropPivot", true);
CharacterMasterNotificationQueue.SendTransformNotification(inventory.characterBody.master, Items.RegeneratingScrap.itemIndex, Items.RegeneratingScrapConsumed.itemIndex, (TransformationType)0);
}
return val;
}
List<ItemIndex> itemAcquisitionOrder = inventory.itemAcquisitionOrder;
List<ItemIndex> list = new List<ItemIndex>();
foreach (ItemIndex item in itemAcquisitionOrder)
{
if (ItemCatalog.GetItemDef(item).tier == itemDef.tier)
{
list.Add(item);
}
}
ItemIndex val4 = list[Random.Range(0, list.Count)];
inventory.RemoveItemPermanent(val4, 1);
return val4;
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
return false;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
}
public override void PreStartClient()
{
}
}
public class ShrinePlanetManager : ShrineBehavior
{
public ShrinePlanetPPC pickupPickerController;
public Interactor interactor;
public ItemIndex[] selectedItemsList;
public bool isActive;
public bool isOfferingButtonClicked;
private const float delayConst = 0.45f;
private float delay;
public int repeats;
public GameObject[] droplets;
public GameObject spawnPoint;
public GameObject center;
public GameObject symbol;
public GameObject ThrownObjectProjectile;
private static int kRpcRpcDisableSymbol;
private void Start()
{
pickupPickerController = ((Component)this).GetComponent<ShrinePlanetPPC>();
ChildLocator component = ((Component)this).GetComponent<ChildLocator>();
spawnPoint = ((Component)component.transformPairs[0].transform).gameObject;
center = ((Component)component.transformPairs[1].transform).gameObject;
symbol = ((Component)((Component)((Component)this).gameObject.transform.FindChild("Base")).transform.FindChild("Symbol")).gameObject;
ExpeditionHelpfulUtils.TryAddNetworkidentity(symbol);
ItemIndex[] array = new ItemIndex[5];
RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
selectedItemsList = (ItemIndex[])(object)array;
((UnityEvent<Interactor>)(object)((PickupPickerController)pickupPickerController).onServerInteractionBegin).AddListener((UnityAction<Interactor>)AssignPotentialInteractor);
((UnityEvent<Interactor>)(object)((PickupPickerController)pickupPickerController).onServerInteractionBegin).AddListener((UnityAction<Interactor>)Prepair);
((UnityEvent<Interactor>)(object)((PickupPickerController)pickupPickerController).onServerInteractionBegin).AddListener((UnityAction<Interactor>)pickupPickerController.SetOptionsFromInteractor);
((UnityEvent<UniquePickup>)(object)((PickupPickerController)pickupPickerController).onUniquePickupSelected).AddListener((UnityAction<UniquePickup>)AddItemToList);
}
[ClientRpc]
public void RpcDisableSymbol()
{
symbol.SetActive(false);
}
public void ClearParticipant()
{
((Component)this).gameObject.GetComponent<NetworkUIPromptController>().ClearParticipant();
}
[Server]
private void OnDisable()
{
if (!NetworkServer.active)
{
Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.ShrinePlanetManager::OnDisable()' called on client");
return;
}
ThrownObjectProjectile = null;
isActive = false;
GameObject[] array = droplets;
foreach (GameObject val in array)
{
if (Object.op_Implicit((Object)(object)val))
{
val.GetComponent<DropletShrinePlanetBehaviour>().DestroyDropletBehaviourByTakeObject();
}
}
}
[Server]
private void Prepair(Interactor arg0)
{
if (!NetworkServer.active)
{
Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.ShrinePlanetManager::Prepair(RoR2.Interactor)' called on client");
return;
}
ThrownObjectProjectile = null;
delay = 0.45f;
repeats = 0;
isActive = false;
ItemIndex[] array = new ItemIndex[5];
RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
selectedItemsList = (ItemIndex[])(object)array;
droplets = (GameObject[])(object)new GameObject[5];
}
[Server]
public void AssignPotentialInteractor(Interactor potentialInteractor)
{
if (!NetworkServer.active)
{
Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.ShrinePlanetManager::AssignPotentialInteractor(RoR2.Interactor)' called on client");
}
else
{
interactor = potentialInteractor;
}
}
[Server]
private void AddItemToList(UniquePickup pickupToTake)
{
//IL_0078: 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_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: 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_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Invalid comparison between I4 and Unknown
//IL_0116: Unknown result type (might be due to invalid IL or missing references)
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
//IL_021d: Unknown result type (might be due to invalid IL or missing references)
//IL_0222: Unknown result type (might be due to invalid IL or missing references)
//IL_0256: Unknown result type (might be due to invalid IL or missing references)
//IL_0258: Expected I4, but got Unknown
if (!NetworkServer.active)
{
Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.ShrinePlanetManager::AddItemToList(RoR2.UniquePickup)' called on client");
return;
}
int num = 0;
ItemIndex[] array = selectedItemsList;
for (int i = 0; i < array.Length; i++)
{
if ((int)array[i] != -1)
{
num++;
}
}
if (num >= 5 || !NetworkServer.active)
{
return;
}
if (!Object.op_Implicit((Object)(object)interactor))
{
interactor = ((Component)((Component)this).GetComponent<NetworkUIPromptController>()._currentParticipantMaster.GetBody()).gameObject.GetComponent<Interactor>();
}
PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupToTake.pickupIndex);
if (pickupDef == null)
{
return;
}
ItemDef itemDef = ItemCatalog.GetItemDef((ItemIndex)((pickupDef == null) ? (-1) : ((int)pickupDef.itemIndex)));
if (!Object.op_Implicit((Object)(object)itemDef))
{
return;
}
ItemIndex itemIndex = itemDef.itemIndex;
CharacterBody val = default(CharacterBody);
if (!((Component)interactor).TryGetComponent<CharacterBody>(ref val))
{
return;
}
Inventory inventory = val.inventory;
if (!Object.op_Implicit((Object)(object)inventory) || isActive)
{
return;
}
int itemCountPermanent = inventory.GetItemCountPermanent(itemIndex);
int num2 = 0;
array = selectedItemsList;
for (int i = 0; i < array.Length; i++)
{
if ((int)array[i] == (int)itemIndex)
{
num2++;
}
}
if (num2 < itemCountPermanent)
{
FindItemButton(pickupToTake, out var button);
if ((Object)(object)button != (Object)null)
{
TextMeshProUGUI component = ((Component)button.transform.FindChild("Quantity")).gameObject.GetComponent<TextMeshProUGUI>();
int num3 = int.Parse(((TMP_Text)component).text);
num3--;
((TMP_Text)component).text = num3.ToString();
((Graphic)component).color = new Color(255f, 128f, 128f);
if (num3 <= 0)
{
((TMP_Text)component).text = "empty";
((Component)button.GetComponent<ChildLocator>().transformPairs[0].transform).gameObject.GetComponent<Image>().sprite = Addressables.LoadAssetAsync<Sprite>((object)RoR2_Base_Common_MiscIcons.texUnlockIcon_png).WaitForCompletion();
((Selectable)button.GetComponent<HGButton>()).interactable = false;
((Component)component).gameObject.SetActive(false);
}
if (!((Component)component).gameObject.activeSelf)
{
((Component)button.GetComponent<ChildLocator>().transformPairs[0].transform).gameObject.GetComponent<Image>().sprite = Addressables.LoadAssetAsync<Sprite>((object)RoR2_Base_Common_MiscIcons.texUnlockIcon_png).WaitForCompletion();
((Selectable)button.GetComponent<HGButton>()).interactable = false;
}
}
for (int j = 0; j < selectedItemsList.Length; j++)
{
if ((int)selectedItemsList[j] == -1)
{
selectedItemsList[j] = (ItemIndex)(int)itemIndex;
break;
}
}
}
((Component)this).gameObject.GetComponent<NetworkUIPromptController>()._currentLocalParticipant.cameraRigController.hud.mainContainer.gameObject.GetComponentInChildren<PlanetPickerPanelHelper>().SynchronizeLists();
}
public void FindItemButton(UniquePickup pickup, out GameObject button)
{
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
int num = 0;
if (((PickupPickerController)pickupPickerController).options.Length != 0)
{
for (int i = 0; i < ((PickupPickerController)pickupPickerController).options.Length; i++)
{
if (((PickupPickerController)pickupPickerController).options[i].pickup == pickup)
{
num = i;
break;
}
}
}
button = ((Component)((Component)((Component)this).gameObject.GetComponent<NetworkUIPromptController>()._currentLocalParticipant.cameraRigController.hud.mainContainer.gameObject.GetComponentInChildren<PickupPickerPanel>().buttonContainer).gameObject.transform.GetChild(num + 1)).gameObject;
}
public void FixedUpdate()
{
((PickupPickerController)pickupPickerController).multiOptionsAvailable = false;