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(); 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().FindChildComponent("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().wingusDingus; wingsSizeModifier = theOneWhoIsWinging.GetComponent().radius; currentWings.transform.localScale = new Vector3(1.5f * wingsSizeModifier, 1.5f * wingsSizeModifier, 1.5f * wingsSizeModifier); currentWings.transform.SetParent(theOneWhoIsWinging.GetComponent().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().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 instancesList = InstanceTracker.GetInstancesList(); List instancesList2 = InstanceTracker.GetInstancesList(); 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 GetHowToUnlock => () => AchievementName + "\n" + AchievementDesc + ""; public virtual Func GetUnlocked => () => AchievementName + "\n" + AchievementDesc + ""; 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.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(); ((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 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("Assets/Textures/Icons/Artifacts/Destination/destinationIconEnabled.png"); public override Sprite ArtifactDisabledIcon => Assets.mainAssetBundle.LoadAsset("Assets/Textures/Icons/Artifacts/Destination/destinationIconDisabled.png"); public override Sprite ArtifactUnlockIcon => Assets.mainAssetBundle.LoadAsset("Assets/Textures/Icons/Artifacts/Destination/destinationIconUnlock.png"); public override GameObject ArtifactModelPrefab => Assets.mainAssetBundle.LoadAsset("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("Assets/Artifacts/ExpeditionStagePicker.prefab"); artifactCode = ScriptableObject.CreateInstance(); 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("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[1] { (Instruction x) => ILPatternMatchingExt.MatchStfld(x, "isCharged") })) { _ = val.Next; val.EmitDelegate>((Func)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[4] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "experienceCollector"), (Instruction x) => ILPatternMatchingExt.MatchCall(x, "op_Implicit"), (Instruction x) => ILPatternMatchingExt.MatchBrtrue(x, ref iLLabel) })) { val.EmitDelegate>((Func)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[2] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1), (Instruction x) => ILPatternMatchingExt.MatchCall(x, "set_isRunning") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate>((Action)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(expeditionStagePickerPrefab, HUD.instancesList[0].mainContainer.transform); panelPrefab.AddComponent(); DestinationStagePicker destinationStagePicker = panelPrefab.AddComponent(); DestinationCancelExit destinationCancelExit = ((Component)panelPrefab.transform.Find("body/BeetleJuice/cancelbutton")).gameObject.AddComponent(); destinationStagePicker.childLocator = panelPrefab.GetComponent(); destinationStagePicker.destinationCancelExit = destinationCancelExit; destinationCancelExit.hGButton = ((Component)destinationCancelExit).gameObject.GetComponent(); 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(); destinationCancelExit.hGButton.showImageOnHover = true; destinationCancelExit.hGButton.uiClickSoundOverride = "Play_UI_menuBack"; Destination.destinationStagePicker = destinationStagePicker; ((Behaviour)((Component)HUD.instancesList[0].mainContainer.transform.Find("MainUIArea")).GetComponent()).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())) { EntityStateMachine component = ((Component)sceneExitController).GetComponent(); 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()).enabled = true; } if (Object.op_Implicit((Object)(object)((Component)sceneExitController).GetComponent())) { 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()).enabled = true; ((Component)sceneExitController).GetComponent().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()).onClick).AddListener(new UnityAction(destinationCancelExit.Cancel)); int num = (Object.op_Implicit((Object)(object)nextStageScene) ? nextStageScene.stageOrder : (-1)); List list = (Object.op_Implicit((Object)(object)nextStageScene) ? ((IEnumerable)(object)SceneCatalog.allSceneDefs).ToList() : new List { 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()) && (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, val).GetComponent(); ((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("Assets/Artifacts/GearboxAreStupid/texNest_GearboxAreStupid.png"); } if (sceneDef.cachedName == "villagenight") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/GearboxAreStupid/texVillageNight_GearboxAreStupid.png"); } if (sceneDef.cachedName == "solusweb") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/GearboxAreStupid/texSolusWeb_GearboxAreStupid.png"); } if (Run.instance is InfiniteTowerRun) { if (sceneDef.cachedName == "itancientloft") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/ForSimulacrum/itAncientLoft.png"); } if (sceneDef.cachedName == "itdampcave") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/ForSimulacrum/itDampCave.png"); } if (sceneDef.cachedName == "itfrozenwall") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/ForSimulacrum/itFrozenWall.png"); } if (sceneDef.cachedName == "itgolemplains") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/ForSimulacrum/itGolemPlains.png"); } if (sceneDef.cachedName == "itgoolake") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/ForSimulacrum/itGooLake.png"); } if (sceneDef.cachedName == "itmoon") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/ForSimulacrum/itMoon.png"); } if (sceneDef.cachedName == "itskymeadow") { ((Selectable)component).image.sprite = Assets.mainAssetBundle.LoadAsset("Assets/Artifacts/ForSimulacrum/itSkyMeadow.png"); } } } component.imageOnHover = ((Component)((Component)component).gameObject.transform.Find("button, outline")).gameObject.GetComponent(); 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()).enabled = true; Destination.stopSpawningPortalsPlease = false; if (Util.HasEffectiveAuthority(HUD.instancesList[0].oldTarget.GetComponent().networkIdentity)) { AkSoundEngine.PostEvent(3652871718u, HUD.instancesList[0].oldTarget); } } } if (Object.op_Implicit((Object)(object)((Component)this).gameObject.GetComponent())) { ((Component)this).gameObject.GetComponent().MikeRebuildMyPanel(); } } private void FixedUpdate() { if ((Object)(object)HUD.instancesList[0].mainContainer.GetComponentInChildren() != (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().sizeDelta.x; normalSizeY = ((Component)((Component)this).gameObject.transform.Find("body")).gameObject.GetComponent().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().sizeDelta = new Vector2(normalSizeX + 300f, normalSizeY); normalSizeX = ((Component)((Component)this).gameObject.transform.Find("body")).gameObject.GetComponent().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(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(ref val) && !val.isGrounded) || !((Component)playerBody).TryGetComponent(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 { 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 currentlyRevealedObjects = new Dictionary(); private PositionIndicator positionIndicator; public static void RevealObject(GameObject gameObject, float duration) { if (!currentlyRevealedObjects.TryGetValue(gameObject, out var value)) { if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else if ((Object)(object)gameObject.GetComponent() != (Object)null) { value = gameObject.AddComponent(); } else { if (!((Object)(object)gameObject.GetComponent() != (Object)null)) { return; } value = gameObject.AddComponent(); } } 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(); 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(LegacyResourcesAPI.Load("Prefabs/PositionIndicators/PoiPositionIndicator"), ((Component)this).transform.position, ((Component)this).transform.rotation); positionIndicator = val.GetComponent(); positionIndicator.insideViewObject.GetComponent().sprite = GetInteractableIcon(((Component)this).gameObject); positionIndicator.insideViewObject.GetComponent().color = new Color(0.63f, 0.87f, 1f, 1f); positionIndicator.outsideViewObject.GetComponentInChildren().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 pendingReveals = new List(); private static Type[] typesToCheck; private Vector3 spawn; public float Networkradius { get { return radius; } [param: In] set { ((NetworkBehaviour)this).SetSyncVar(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(); 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())) { text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorTeleporter.png"; } else { PortalStatueBehavior component2 = gameObject.GetComponent(); if (Object.op_Implicit((Object)(object)component2) && (int)component2.portalType == 0) { text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorMystery.png"; } else { PurchaseInteraction component3 = gameObject.GetComponent(); if (Object.op_Implicit((Object)(object)component3) && (int)component3.costType == 3) { text = "Assets/Models/Prefabs/VFX/geolocator/texGeoIndicatorShrine.png"; } } } return Assets.mainAssetBundle.LoadAsset(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() != (Object)null) || !((Component)revealableTransform).gameObject.GetComponent().TrySetTeleporterIndicatorDiscovered(true))) { foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if (!((Object)(object)instance == (Object)null) && instance.isPingTheSameNetworkObject(((Component)revealableTransform).gameObject.GetComponent())) { 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().anchoredPosition = new Vector2(theresholdCurrentPositionX - num, 0f); } else { theresholdInstance.GetComponent().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(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().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().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().segmentContainer.offsetMin.x; theresholdMoveX = segmentMoveX; } } private void FindСorrespondingDificultyBar() { using List.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()).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(); if (Object.op_Implicit((Object)(object)((Component)_characterBody.healthComponent).GetComponent())) { isSucker = ((Component)_characterBody.healthComponent).GetComponent().canBeStunned; isAbsoluteSucker = ((Component)_characterBody.healthComponent).GetComponent().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(); 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()); } 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().RemoveBuff(Paperdog.Continuity); } catch (Exception) { } } private void OnDestroy() { try { ((Component)this).gameObject.GetComponent().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()); } } public class RedGuitarBehaviour : ItemBehavior { private CharacterBody Chris; public int itemCount; private void OnEnable() { try { BossGroup.onBossGroupStartServer += OnBossGroupStartServer; Chris = ((Component)this).gameObject.GetComponent(); } 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().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("Jamming_material.mat"); obj.AddToCharacterModel(((Component)modelTransform).gameObject.GetComponent()); } } } } } 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(); PickupPickerController = ((Component)this).gameObject.GetComponent(); animator = ((Component)this).gameObject.GetComponentInChildren(); ((UnityEvent)(object)((PickupPickerController)((Component)this).gameObject.GetComponent()).onServerInteractionBegin).AddListener((UnityAction)AssignPotentialInteractor); ((UnityEvent)(object)((PickupPickerController)((Component)this).gameObject.GetComponent()).onServerInteractionBegin).AddListener((UnityAction)((PickupPickerController)((Component)this).gameObject.GetComponent()).SetOptionsFromInteractor); ((UnityEvent)(object)((PickupPickerController)((Component)this).gameObject.GetComponent()).onUniquePickupSelected).AddListener((UnityAction)BeginRepair); ((UnityEvent)(object)((PickupPickerController)((Component)this).gameObject.GetComponent()).onUniquePickupSelected).AddListener((UnityAction)ClearParticipant); void ClearParticipant(UniquePickup arg0) { ((Component)this).gameObject.GetComponent().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)(object)ItemCatalog.allItemDefs).Where((ItemDef x) => x.nameToken == name).FirstOrDefault().itemIndex; CharacterBody val = default(CharacterBody); if (!((Component)interactor).TryGetComponent(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(); if (Object.op_Implicit((Object)(object)component)) { Transform modelTransform = component.modelTransform; if (Object.op_Implicit((Object)(object)modelTransform)) { CharacterModel component2 = ((Component)modelTransform).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { List itemDisplayObjects = component2.GetItemDisplayObjects(Items.RegeneratingScrap.itemIndex); if (itemDisplayObjects.Count > 0) { GameObject val2 = itemDisplayObjects[0]; GameObject obj = Addressables.LoadAssetAsync((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((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 itemAcquisitionOrder = inventory.itemAcquisitionOrder; List list = new List(); 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(); ChildLocator component = ((Component)this).GetComponent(); 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)(object)((PickupPickerController)pickupPickerController).onServerInteractionBegin).AddListener((UnityAction)AssignPotentialInteractor); ((UnityEvent)(object)((PickupPickerController)pickupPickerController).onServerInteractionBegin).AddListener((UnityAction)Prepair); ((UnityEvent)(object)((PickupPickerController)pickupPickerController).onServerInteractionBegin).AddListener((UnityAction)pickupPickerController.SetOptionsFromInteractor); ((UnityEvent)(object)((PickupPickerController)pickupPickerController).onUniquePickupSelected).AddListener((UnityAction)AddItemToList); } [ClientRpc] public void RpcDisableSymbol() { symbol.SetActive(false); } public void ClearParticipant() { ((Component)this).gameObject.GetComponent().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().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()._currentParticipantMaster.GetBody()).gameObject.GetComponent(); } 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(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(); 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().transformPairs[0].transform).gameObject.GetComponent().sprite = Addressables.LoadAssetAsync((object)RoR2_Base_Common_MiscIcons.texUnlockIcon_png).WaitForCompletion(); ((Selectable)button.GetComponent()).interactable = false; ((Component)component).gameObject.SetActive(false); } if (!((Component)component).gameObject.activeSelf) { ((Component)button.GetComponent().transformPairs[0].transform).gameObject.GetComponent().sprite = Addressables.LoadAssetAsync((object)RoR2_Base_Common_MiscIcons.texUnlockIcon_png).WaitForCompletion(); ((Selectable)button.GetComponent()).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()._currentLocalParticipant.cameraRigController.hud.mainContainer.gameObject.GetComponentInChildren().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()._currentLocalParticipant.cameraRigController.hud.mainContainer.gameObject.GetComponentInChildren().buttonContainer).gameObject.transform.GetChild(num + 1)).gameObject; } public void FixedUpdate() { ((PickupPickerController)pickupPickerController).multiOptionsAvailable = false; if (!CheckObjectOnGround()) { return; } if (isOfferingButtonClicked) { ((PickupPickerController)pickupPickerController).SetAvailable(false); isActive = true; CallRpcDisableSymbol(); ((ShrineBehavior)this).CallRpcSetPingable(false); } if (!isActive) { return; } if (repeats < 5) { delay -= Time.fixedDeltaTime; if (!(delay <= 0f)) { return; } VehicleSeat[] array = Object.FindObjectsByType((FindObjectsSortMode)1); foreach (VehicleSeat val in array) { if ((Object)(object)((Component)val).gameObject.GetComponent() == (Object)null && ((Object)(object)val.currentPassengerBody == (Object)(object)((Component)this).gameObject || (Object)(object)val.NetworkpassengerBodyObject == (Object)(object)((Component)this).gameObject)) { ThrownObjectProjectile = ((Component)val).gameObject; isActive = false; delay = 0.45f; return; } } SpawnDroplet(); delay = 0.45f; repeats++; } else { ItemIndex[] array2 = new ItemIndex[5]; RuntimeHelpers.InitializeArray(array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); selectedItemsList = (ItemIndex[])(object)array2; ThrownObjectProjectile = null; isActive = false; } } private bool CheckObjectOnGround() { if ((Object)(object)ThrownObjectProjectile == (Object)null) { return true; } return false; } [Server] private void SpawnDroplet() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected I4, but got Unknown //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Expected O, but got Unknown //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Expected O, but got Unknown //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Expected O, but got Unknown //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Expected O, but got Unknown if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.ShrinePlanetManager::SpawnDroplet()' called on client"); return; } ItemIndex newRandomIndex = (ItemIndex)(-1); newRandomIndex = TryRandomize(selectedItemsList[repeats], newRandomIndex); UniquePickup val = default(UniquePickup); Xoroshiro128Plus val2 = new Xoroshiro128Plus(Run.instance.stageRng.nextUlong); PickupIndex pickupIndex = PickupCatalog.FindPickupIndex(newRandomIndex); val.pickupIndex = pickupIndex; val = RandomlyLunarUtils.CheckForLunarReplacement(val, val2); CreatePickupInfo pickupInfo = default(CreatePickupInfo); pickupInfo.position = spawnPoint.transform.position; ((CreatePickupInfo)(ref pickupInfo)).pickup = val; GameObject val3 = ExpeditionHelpfulUtils.CreatePickupDropletWithoutSound(pickupInfo, spawnPoint.transform.position); DropletShrinePlanetBehaviour dropletShrinePlanetBehaviour = val3.AddComponent(); dropletShrinePlanetBehaviour.Parent = ((Component)this).gameObject; dropletShrinePlanetBehaviour.ShrinePlanetManager = ((Component)this).gameObject.GetComponent(); dropletShrinePlanetBehaviour.num = repeats; dropletShrinePlanetBehaviour.center = center.transform.position; dropletShrinePlanetBehaviour.interactor = ((Component)interactor).gameObject; droplets[repeats] = val3; ItemTier tier = ItemCatalog.GetItemDef(((PickupIndex)(ref val.pickupIndex)).itemIndex).tier; switch ((int)tier) { case 0: EffectManager.SpawnEffect(ShrinePlanet.DropletCreatedEffectWhite, new EffectData { origin = val3.transform.position }, true); break; case 1: EffectManager.SpawnEffect(ShrinePlanet.DropletCreatedEffectGreen, new EffectData { origin = val3.transform.position }, true); break; case 2: EffectManager.SpawnEffect(ShrinePlanet.DropletCreatedEffectRed, new EffectData { origin = val3.transform.position }, true); break; case 4: EffectManager.SpawnEffect(ShrinePlanet.DropletCreatedEffectYellow, new EffectData { origin = val3.transform.position }, true); break; case 3: break; } } private ItemIndex TryRandomize(ItemIndex baseItem, ItemIndex newRandomIndex) { //IL_0006: 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_0012: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected I4, but got Unknown //IL_0044: 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_0060: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Invalid comparison between Unknown and I4 //IL_00c3: 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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: 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_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0176: 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_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) List list = new List(); ItemTier tier = ItemCatalog.GetItemDef(baseItem).tier; switch ((int)tier) { case 0: list = ItemCatalog.tier1ItemList; newRandomIndex = list[Random.Range(0, list.Count)]; break; case 1: list = ItemCatalog.tier2ItemList; newRandomIndex = list[Random.Range(0, list.Count)]; break; case 2: list = ItemCatalog.tier3ItemList; newRandomIndex = list[Random.Range(0, list.Count)]; break; case 4: { ItemDef[] itemDefs = ItemCatalog.itemDefs; foreach (ItemDef val in itemDefs) { if ((int)val.tier == 4) { list.Add(val.itemIndex); } } newRandomIndex = list[Random.Range(0, list.Count)]; break; } } if (newRandomIndex == baseItem || ItemCatalog.GetItemDef(newRandomIndex).ContainsTag((ItemTag)10) || newRandomIndex == Items.CaptainDefenseMatrix.itemIndex || ItemCatalog.GetItemDef(newRandomIndex).ContainsTag((ItemTag)9) || ItemCatalog.GetItemDef(newRandomIndex).ContainsTag((ItemTag)33)) { return TryRandomize(baseItem, newRandomIndex); } ExpansionDef[] expansionDefs = ExpansionCatalog._expansionDefs; List list2 = new List(); ExpansionDef[] array = expansionDefs; foreach (ExpansionDef val2 in array) { if (!Run.instance.IsExpansionEnabled(val2)) { list2.Add(val2); } } foreach (ExpansionDef item in list2) { if ((Object)(object)ItemCatalog.GetItemDef(newRandomIndex).requiredExpansion == (Object)(object)item) { return TryRandomize(baseItem, newRandomIndex); } } return newRandomIndex; } public ShrinePlanetManager() { ItemIndex[] array = new ItemIndex[5]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); selectedItemsList = (ItemIndex[])(object)array; delay = 0.45f; droplets = (GameObject[])(object)new GameObject[5]; ((ShrineBehavior)this)..ctor(); } private void UNetVersion() { } protected static void InvokeRpcRpcDisableSymbol(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkClient.active) { Debug.LogError((object)"RPC RpcDisableSymbol called on server."); } else { ((ShrinePlanetManager)(object)obj).RpcDisableSymbol(); } } public void CallRpcDisableSymbol() { //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 RpcDisableSymbol called on client."); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)2); val.WritePackedUInt32((uint)kRpcRpcDisableSymbol); val.Write(((Component)this).GetComponent().netId); ((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcDisableSymbol"); } static ShrinePlanetManager() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown kRpcRpcDisableSymbol = 1797897944; NetworkBehaviour.RegisterRpcDelegate(typeof(ShrinePlanetManager), kRpcRpcDisableSymbol, new CmdDelegate(InvokeRpcRpcDisableSymbol)); NetworkCRC.RegisterBehaviour("ShrinePlanetManager", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool flag = ((ShrineBehavior)this).OnSerialize(writer, forceAll); bool flag2 = default(bool); return flag2 || flag; } public override void OnDeserialize(NetworkReader reader, bool initialState) { ((ShrineBehavior)this).OnDeserialize(reader, initialState); } } public class DropletShrinePlanetBehaviour : NetworkBehaviour { public ShrinePlanetManager ShrinePlanetManager; public int num; public Vector3 center; public GameObject Parent; [SyncVar] private float timer = 2f; [SyncVar] private float elapsedTime; [SyncVar] private bool rotating; private float totalRotation = 360f; private bool attempt = true; public GameObject interactor; private GameObject Child; public float Networktimer { get { return timer; } [param: In] set { ((NetworkBehaviour)this).SetSyncVar(value, ref timer, 1u); } } public float NetworkelapsedTime { get { return elapsedTime; } [param: In] set { ((NetworkBehaviour)this).SetSyncVar(value, ref elapsedTime, 2u); } } public bool Networkrotating { get { return rotating; } [param: In] set { ((NetworkBehaviour)this).SetSyncVar(value, ref rotating, 4u); } } [Server] private void Start() { if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.DropletShrinePlanetBehaviour::Start()' called on client"); return; } Networkrotating = true; NetworkelapsedTime = 0f; } [Server] private void FixedUpdate() { //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: 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_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.DropletShrinePlanetBehaviour::FixedUpdate()' called on client"); } else { if (!rotating) { return; } NetworkelapsedTime = elapsedTime + Time.fixedDeltaTime; if (elapsedTime >= 1f && attempt) { if (Random.Range(0, 100) <= 33) { DestroyDroplet(); } attempt = false; } float num = Mathf.Clamp01(elapsedTime / timer); ((Component)this).transform.RotateAround(center, Vector3.up, totalRotation * Time.fixedDeltaTime / timer); if (num >= 1f) { Vector3 val = Vector3.up * 0f + Parent.transform.forward * 7f; ((Collider)((Component)this).gameObject.GetComponent()).enabled = true; Rigidbody component = ((Component)this).gameObject.GetComponent(); component.mass = 1f; component.useGravity = true; ((Component)this).gameObject.GetComponent().force = new Vector3(0f, 0f, 0f); component.AddForce(val, (ForceMode)1); Networkrotating = false; Object.Destroy((Object)(object)((Component)this).gameObject.GetComponent()); } } } [Server] private void DestroyDroplet() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_0054: Expected I4, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void ExpeditionDemo.DropletShrinePlanetBehaviour::DestroyDroplet()' called on client"); return; } ItemTier tier = ItemCatalog.GetItemDef(((PickupIndex)(ref ((Component)this).gameObject.GetComponent().pickupState.pickupIndex)).itemIndex).tier; switch ((int)tier) { case 0: EffectManager.SpawnEffect(ShrinePlanet.DropletLostEffectWhite, new EffectData { origin = ((Component)this).gameObject.transform.position }, true); break; case 1: EffectManager.SpawnEffect(ShrinePlanet.DropletLostEffectGreen, new EffectData { origin = ((Component)this).gameObject.transform.position }, true); break; case 2: EffectManager.SpawnEffect(ShrinePlanet.DropletLostEffectRed, new EffectData { origin = ((Component)this).gameObject.transform.position }, true); break; case 4: EffectManager.SpawnEffect(ShrinePlanet.DropletLostEffectYellow, new EffectData { origin = ((Component)this).gameObject.transform.position }, true); break; } ShrinePlanetManager.droplets[num] = null; NetworkServer.Destroy(((Component)this).gameObject); } public void DestroyDropletBehaviourByTakeObject() { //IL_004f: 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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_0097: Unknown result type (might be due to invalid IL or missing references) Networkrotating = false; ((Collider)((Component)this).gameObject.GetComponent()).enabled = true; Rigidbody component = ((Component)this).gameObject.GetComponent(); component.mass = 1f; component.useGravity = true; ((Component)this).gameObject.GetComponent().force = new Vector3(0f, -15f, 0f); component.AddForce((((Component)this).gameObject.transform.position - interactor.transform.position + Vector3.up * 1.1f) * 3f, (ForceMode)1); Object.Destroy((Object)(object)this); } private void UNetVersion() { } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { if (forceAll) { writer.Write(timer); writer.Write(elapsedTime); writer.Write(rotating); return true; } bool flag = false; if ((((NetworkBehaviour)this).syncVarDirtyBits & (true ? 1u : 0u)) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(timer); } if ((((NetworkBehaviour)this).syncVarDirtyBits & 2u) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(elapsedTime); } if ((((NetworkBehaviour)this).syncVarDirtyBits & 4u) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(rotating); } if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); } return flag; } public override void OnDeserialize(NetworkReader reader, bool initialState) { if (initialState) { timer = reader.ReadSingle(); elapsedTime = reader.ReadSingle(); rotating = reader.ReadBoolean(); return; } int num = (int)reader.ReadPackedUInt32(); if (((uint)num & (true ? 1u : 0u)) != 0) { timer = reader.ReadSingle(); } if (((uint)num & 2u) != 0) { elapsedTime = reader.ReadSingle(); } if (((uint)num & 4u) != 0) { rotating = reader.ReadBoolean(); } } } public class PlanetPickerPanelHelper : MonoBehaviour { private ShrinePlanetManager ShrinePlanetManager; private ShrinePlanetPPC PickupPickerController; private PickupPickerPanel PickupPickerPanel; public ItemIndex[] ChosenItemsList; public GameObject[] ChosenItemsSlots; public GameObject OfferingButton; public GameObject PickupButtonTemplate; private void Start() { //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Expected O, but got Unknown PickupPickerPanel = ((Component)this).gameObject.GetComponent(); ItemIndex[] array = new ItemIndex[5]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); ChosenItemsList = (ItemIndex[])(object)array; ChosenItemsSlots = (GameObject[])(object)new GameObject[5]; ShrinePlanetManager = ((Component)PickupPickerPanel.pickerController).gameObject.GetComponent(); PickupPickerController = PickupPickerPanel.pickerController as ShrinePlanetPPC; ChildLocator component = ((Component)this).gameObject.GetComponent(); ChosenItemsSlots[0] = ((Component)component.transformPairs[0].transform).gameObject; ChosenItemsSlots[1] = ((Component)component.transformPairs[1].transform).gameObject; ChosenItemsSlots[2] = ((Component)component.transformPairs[2].transform).gameObject; ChosenItemsSlots[3] = ((Component)component.transformPairs[3].transform).gameObject; ChosenItemsSlots[4] = ((Component)component.transformPairs[4].transform).gameObject; OfferingButton = ((Component)component.transformPairs[5].transform).gameObject; ((UnityEvent)((Button)OfferingButton.GetComponent()).onClick).AddListener(new UnityAction(OnOfferingButtonClick)); for (int i = 0; i < ChosenItemsSlots.Length; i++) { ChosenItemsSlots[i].AddComponent().num = i; ChosenItemsSlots[i].GetComponent().ShrinePlanetManager = ShrinePlanetManager; } _ = ((Component)PickupPickerPanel.gridlayoutGroup).gameObject; ((Selectable)OfferingButton.GetComponent()).interactable = false; } private void OnOfferingButtonClick() { ItemIndex[] chosenItemsList = ChosenItemsList; for (int i = 0; i < chosenItemsList.Length; i++) { if ((int)chosenItemsList[i] == -1) { return; } } for (int j = 0; j < 5; j++) { ((Component)ShrinePlanetManager.interactor).GetComponent().inventory.RemoveItemPermanent(ChosenItemsList[j], 1); } ShrinePlanetManager.isActive = true; ShrinePlanetManager.CallRpcDisableSymbol(); ShrinePlanetManager.ClearParticipant(); ShrinePlanetManager.isOfferingButtonClicked = true; ((PickupPickerController)PickupPickerController).SetAvailable(false); } public void SynchronizeLists() { ChosenItemsList = ShrinePlanetManager.selectedItemsList; for (int i = 0; i < ChosenItemsList.Length; i++) { if ((int)ChosenItemsList[i] != -1) { ChosenItemsSlots[i].GetComponentInChildren().token = ItemCatalog.GetItemDef(ChosenItemsList[i]).nameToken; ((Component)ChosenItemsSlots[i].GetComponentInChildren().transformPairs[0].transform).gameObject.GetComponent().sprite = ItemCatalog.GetItemDef(ChosenItemsList[i]).pickupIconSprite; ChosenItemsSlots[i].SetActive(true); } else { ChosenItemsSlots[i].GetComponentInChildren().token = ""; ((Component)ChosenItemsSlots[i].GetComponentInChildren().transformPairs[0].transform).gameObject.GetComponent().sprite = ItemBase.instance.ItemIcon; ChosenItemsSlots[i].SetActive(false); } } bool flag = true; ItemIndex[] chosenItemsList = ChosenItemsList; for (int j = 0; j < chosenItemsList.Length; j++) { if ((int)chosenItemsList[j] == -1) { flag = false; } } if (flag) { ((Selectable)OfferingButton.GetComponent()).interactable = true; } else { ((Selectable)OfferingButton.GetComponent()).interactable = false; } } public PlanetPickerPanelHelper() { ItemIndex[] array = new ItemIndex[5]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); ChosenItemsList = (ItemIndex[])(object)array; ChosenItemsSlots = (GameObject[])(object)new GameObject[5]; ((MonoBehaviour)this)..ctor(); } } public class EXPButtonOffering : MonoBehaviour { public int num; public ShrinePlanetManager ShrinePlanetManager; private void Start() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown ((UnityEvent)((Button)((Component)this).gameObject.GetComponent()).onClick).AddListener(new UnityAction(OnClick)); } private void OnClick() { //IL_001c: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_0057: Unknown result type (might be due to invalid IL or missing references) string token = ((Component)this).gameObject.GetComponent().token; ItemDef val = ((IEnumerable)(object)ItemCatalog.allItemDefs).Where((ItemDef x) => x.nameToken == token).FirstOrDefault(); PickupIndex val2 = PickupCatalog.FindPickupIndex(val.itemIndex); UniquePickup pickup = default(UniquePickup); ((UniquePickup)(ref pickup))..ctor(val2); ShrinePlanetManager.FindItemButton(pickup, out var button); if ((Object)(object)button != (Object)null) { TextMeshProUGUI component = ((Component)button.transform.FindChild("Quantity")).gameObject.GetComponent(); if (!((Component)component).gameObject.activeSelf) { ((Component)component).gameObject.SetActive(true); ((Component)button.GetComponent().transformPairs[0].transform).gameObject.GetComponent().sprite = val.pickupIconSprite; ((Selectable)button.GetComponent()).interactable = true; if (((TMP_Text)component).text != "empty") { ((Component)component).gameObject.SetActive(false); } else { ((TMP_Text)component).text = "0"; } } int num = int.Parse(((TMP_Text)component).text); num++; ((Component)button.GetComponent().transformPairs[0].transform).gameObject.GetComponent().sprite = val.pickupIconSprite; ((Selectable)button.GetComponent()).interactable = true; ((TMP_Text)component).text = num.ToString(); } ShrinePlanetManager.selectedItemsList[this.num] = (ItemIndex)(-1); Sort(); } private void Sort() { ItemIndex[] array = (ItemIndex[])(object)new ItemIndex[5]; Array.Copy(ShrinePlanetManager.selectedItemsList, array, ShrinePlanetManager.selectedItemsList.Length); for (int i = 0; i < 4; i++) { if ((int)array[i] != -1) { continue; } for (int j = i + 1; j < array.Length; j++) { if ((int)array[j] != -1) { array[i] = array[j]; array[j] = (ItemIndex)(-1); break; } } } ShrinePlanetManager.selectedItemsList = array; ((PickupPickerController)ShrinePlanetManager.pickupPickerController).panelInstance.GetComponent().SynchronizeLists(); } } public class ShrinePlanetPPC : PickupPickerController { private ShrinePlanetManager ShrinePlanetManager; public void Start() { ShrinePlanetManager = ((Component)this).GetComponent(); } public override void OnDisplayBegin(NetworkUIPromptController networkUIPromptController, LocalUser localUser, CameraRigController cameraRigController) { if (!((NetworkBehaviour)localUser.cachedMaster).isServer) { Debug.LogWarning((object)"EXPEDITIONLOG: Shrine of Possibilities is currently unavailable for client players. Sorry."); Debug.Log((object)"How ironic"); return; } base.panelInstance = Object.Instantiate(base.panelPrefab, cameraRigController.hud.mainContainer.transform); ((PickupPickerController)this).DisableSimpleDialogbox(base.panelInstance); base.panelInstanceController = base.panelInstance.GetComponent(); base.panelInstanceController.pickerController = (PickupPickerController)(object)this; if ((Object)(object)base.excludedItemsDropTable == (Object)null) { base.excludedItemsDropTable = base.panelInstanceController.excludedItemsDropTable; } base.panelInstanceController.SetPickupOptions(base.options); OnDestroyCallback.AddCallback(base.panelInstance, (Action)base.OnPanelDestroyed); } public void SetOptionsFromInteractor(Interactor activator) { List