Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Pingprovements Fixed v1.0.1
Pingprovements_fixed.dll
Decompiled 3 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using Microsoft.CodeAnalysis; using On.RoR2; using On.RoR2.UI; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Pingprovements_fixed")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Pingprovements_fixed")] [assembly: AssemblyTitle("Pingprovements_fixed")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Pingprovements { public static class Extensions { public static void SetObjectValue(this object obj, string fieldName, object value) { obj.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic).SetValue(obj, value); } public static T GetObjectValue<T>(this object obj, string fieldName) { return (T)obj.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic).GetValue(obj); } public static Color ToColor(this string colorString) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) float[] array = Array.ConvertAll(colorString.Split(','), (string str) => float.Parse(str, CultureInfo.InvariantCulture)); return new Color(array[0], array[1], array[2], array[3]); } public static bool IsObjectVisible(this Camera camera, Transform targetObjectTransform) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001b: 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) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) Vector3 val = camera.WorldToViewportPoint(targetObjectTransform.position); if (val.x >= 0f && val.x <= 1f && val.y >= 0f && val.y <= 1f && val.z > 0f) { return true; } return false; } } internal class PingerController { private readonly Dictionary<string, Color> _colors = new Dictionary<string, Color>(); private readonly List<PingIndicator> _pingIndicators = new List<PingIndicator>(); private static PingPainter _painter; private static PingTextBuilder _textBuilder; private static PingNotificationBuilder _notificationBuilder; private PingerController lastController; public PingerController(Pingprovements plugin) { _painter = new PingPainter(); _textBuilder = new PingTextBuilder(); _notificationBuilder = new PingNotificationBuilder(); } public void OnSceneUnloaded(Scene scene) { _pingIndicators.Clear(); } public void SetCurrentPing(orig_SetCurrentPing orig, PingerController self, PingInfo newPingInfo) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: 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_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_0053: 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_0060: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Invalid comparison between Unknown and I4 //IL_00e3: Unknown result type (might be due to invalid IL or missing references) if (!(newPingInfo.origin == Vector3.zero)) { lastController = self; self.NetworkcurrentPing = newPingInfo; GameObject val = (GameObject)Object.Instantiate(Resources.Load("Prefabs/PingIndicator")); PingIndicator component = val.GetComponent<PingIndicator>(); component.pingOwner = ((Component)self).gameObject; component.pingOrigin = newPingInfo.origin; component.pingNormal = newPingInfo.normal; component.pingTarget = ((PingInfo)(ref newPingInfo)).targetGameObject; component.RebuildPing(); PingType objectValue = component.GetObjectValue<PingType>("pingType"); _painter.SetPingIndicatorColor(component, objectValue); _textBuilder.SetPingText(component, objectValue); SetPingTimer(component, objectValue); if ((int)objectValue == 2) { _notificationBuilder.SetUnlockedItemNotification(component); } _pingIndicators.Add(component); if (((NetworkBehaviour)self).hasAuthority) { self.CallCmdPing(self.currentPing); } } } private void SetPingTimer(PingIndicator pingIndicator, PingType pingType) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected I4, but got Unknown float num = 0f; switch ((int)pingType) { case 0: num = Pingprovements.DefaultPingLifetime.Value; break; case 1: num = Pingprovements.EnemyPingLifetime.Value; break; case 2: num = Pingprovements.InteractablePingLifetime.Value; break; } pingIndicator.SetObjectValue("fixedTimer", num); } public bool GeneratePingInfo(orig_GeneratePingInfo orig, Ray aimRay, GameObject bodyObject, out PingInfo result) { //IL_0008: 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_00a0: Unknown result type (might be due to invalid IL or missing references) if (!orig.Invoke(aimRay, bodyObject, ref result)) { return false; } GameObject target = ((PingInfo)(ref result)).targetGameObject; if ((Object)(object)lastController != (Object)null) { lastController.currentPing = PingerController.emptyPing; } if ((Object)(object)target != (Object)null) { PingIndicator val = ((IEnumerable<PingIndicator>)_pingIndicators).FirstOrDefault((Func<PingIndicator, bool>)((PingIndicator ind) => Object.op_Implicit((Object)(object)ind) && (Object)(object)ind.pingTarget == (Object)(object)target)); if ((Object)(object)val != (Object)null) { val.DestroyPing(); _pingIndicators.Remove(val); result = default(PingInfo); return false; } } return true; } } public class PingIndicator { public PingIndicator(Pingprovements plugin) { } public void Update(orig_Update orig, PingIndicator self) { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); if (firstLocalUser != null) { if (Pingprovements.ShowPingDistance.Value && Object.op_Implicit((Object)(object)firstLocalUser.cachedBody)) { Vector3 footPosition = default(Vector3); ((Vector3)(ref footPosition))..ctor(0f, 0f, 0f); footPosition = firstLocalUser.cachedBody.footPosition; float num = Vector3.Distance(footPosition, ((Component)self).transform.position); int num2 = ((TMP_Text)self.pingText).text.IndexOf('\u200b'); string text = ((num2 >= 0) ? ((TMP_Text)self.pingText).text.Substring(0, num2) : ((TMP_Text)self.pingText).text); ((TMP_Text)self.pingText).text = text + "\u200b" + $" ({num:0.0}m)"; } if (Pingprovements.HideOffscreenPingText.Value) { if (!firstLocalUser.cameraRigController.sceneCam.IsObjectVisible(((Component)self).transform)) { ((TMP_Text)self.pingText).alpha = 0f; } else { ((TMP_Text)self.pingText).alpha = 1f; } } } if (Object.op_Implicit((Object)(object)self.pingTarget)) { BarrelInteraction component = self.pingTarget.GetComponent<BarrelInteraction>(); if (Object.op_Implicit((Object)(object)component) && component.Networkopened) { Object.Destroy((Object)(object)((Component)self).gameObject); } } orig.Invoke(self); } } public class PingNotificationBuilder { public void SetUnlockedItemNotification(PingIndicator pingIndicator) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) GenericPickupController component = pingIndicator.pingTarget.GetComponent<GenericPickupController>(); if (Object.op_Implicit((Object)(object)component) && Pingprovements.ShowItemNotification.Value) { BuildNotification(component._pickupState.pickupIndex, pingIndicator); } PurchaseInteraction component2 = pingIndicator.pingTarget.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component2) && Pingprovements.ShowItemNotification.Value) { ShopTerminalBehavior component3 = ((Component)component2).GetComponent<ShopTerminalBehavior>(); if (Object.op_Implicit((Object)(object)component3) && !component3.pickupIndexIsHidden) { BuildNotification(component3.CurrentPickup().pickupIndex, pingIndicator); } } } private void BuildNotification(PickupIndex pickupIndex, PingIndicator pingIndicator) { //IL_0035: 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_005e: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Expected O, but got Unknown //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Expected O, but got Unknown //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Expected O, but got Unknown //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Expected O, but got Unknown LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); if (!(firstLocalUser.currentNetworkUser.userName == Util.GetBestMasterName(pingIndicator.pingOwner.GetComponent<CharacterMaster>())) || !firstLocalUser.userProfile.HasDiscoveredPickup(pickupIndex)) { return; } CharacterMasterNotificationQueue notificationQueueForMaster = CharacterMasterNotificationQueue.GetNotificationQueueForMaster(pingIndicator.pingOwner.GetComponent<CharacterMaster>()); PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex); EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDef.equipmentIndex); ArtifactDef artifactDef = ArtifactCatalog.GetArtifactDef(pickupDef.artifactIndex); if ((Object)(object)itemDef != (Object)null) { CustomOverrideInfo val = new CustomOverrideInfo(); if (Pingprovements.ShowDetailsDescription.Value) { val.SetDescriptionText(itemDef.descriptionToken); } NotificationInfo val2 = new NotificationInfo((object)itemDef, (TransformationInfo)null, val, false); notificationQueueForMaster.PushNotification(val2, (float)Pingprovements.NotificationLifetime.Value); } if ((Object)(object)equipmentDef != (Object)null) { CustomOverrideInfo val3 = new CustomOverrideInfo(); if (Pingprovements.ShowDetailsDescription.Value) { val3.SetDescriptionText(equipmentDef.descriptionToken); } NotificationInfo val4 = new NotificationInfo((object)equipmentDef, (TransformationInfo)null, val3, false); notificationQueueForMaster.PushNotification(val4, (float)Pingprovements.NotificationLifetime.Value); } if ((Object)(object)artifactDef != (Object)null) { CustomOverrideInfo val5 = new CustomOverrideInfo(); if (Pingprovements.ShowDetailsDescription.Value) { val5.SetDescriptionText(artifactDef.descriptionToken); } NotificationInfo val6 = new NotificationInfo((object)artifactDef, (TransformationInfo)null, val5, false); notificationQueueForMaster.PushNotification(val6, (float)Pingprovements.NotificationLifetime.Value); } } } public class PingPainter { private readonly Dictionary<string, Color> _colors = new Dictionary<string, Color>(); public void SetPingIndicatorColor(PingIndicator pingIndicator, PingType pingType) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //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_000d: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_0019: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected I4, but got Unknown //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_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_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) //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_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) SpriteRenderer val = new SpriteRenderer(); Color color = Color.black; Color color2 = Color.black; switch ((int)pingType) { case 0: val = pingIndicator.defaultPingGameObjects[0].GetComponent<SpriteRenderer>(); color = Pingprovements.DefaultPingColorConfig.Value; color2 = Pingprovements.DefaultPingSpriteColorConfig.Value; break; case 1: val = pingIndicator.enemyPingGameObjects[0].GetComponent<SpriteRenderer>(); color = Pingprovements.EnemyPingColorConfig.Value; color2 = Pingprovements.EnemyPingSpriteColorConfig.Value; break; case 2: val = pingIndicator.interactablePingGameObjects[0].GetComponent<SpriteRenderer>(); if (Pingprovements.TieredInteractablePingColor.Value) { Color targetTierColor = GetTargetTierColor(pingIndicator.pingTarget); color = targetTierColor; color2 = targetTierColor; } else { color = Pingprovements.InteractablePingColorConfig.Value; color2 = Pingprovements.InteractablePingSpriteColorConfig.Value; } break; } ((Graphic)pingIndicator.pingText).color = color; val.color = color2; } private Color GetTargetTierColor(GameObject gameObject) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_001c: 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_0026: 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) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_00a6: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: 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_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: 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_0119: Unknown result type (might be due to invalid IL or missing references) Color val = Color.black; ShopTerminalBehavior component = gameObject.GetComponent<ShopTerminalBehavior>(); if (Object.op_Implicit((Object)(object)component)) { PickupIndex pickupIndex = component.CurrentPickup().pickupIndex; PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); if (pickupDef != null) { val = pickupDef.baseColor; } } GenericPickupController component2 = gameObject.GetComponent<GenericPickupController>(); if (Object.op_Implicit((Object)(object)component2)) { PickupDef pickupDef2 = PickupCatalog.GetPickupDef(component2._pickupState.pickupIndex); if (pickupDef2 != null) { val = pickupDef2.baseColor; } } PurchaseInteraction component3 = gameObject.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component3)) { CostTypeDef costTypeDef = CostTypeCatalog.GetCostTypeDef(component3.costType); val = Color32.op_Implicit(ColorCatalog.GetColor(costTypeDef.colorIndex)); } PickupIndexNetworker component4 = gameObject.GetComponent<PickupIndexNetworker>(); if (Object.op_Implicit((Object)(object)component4)) { PickupDef pickupDef3 = PickupCatalog.GetPickupDef(component4.NetworkpickupState.pickupIndex); if (pickupDef3 != null) { val = pickupDef3.baseColor; } } if (val == Color.black) { val = Pingprovements.InteractablePingColorConfig.Value; } return val; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.ebi.pingprovements_fixed", "Pingprovements Fixed!", "1.0.0")] public class Pingprovements : BaseUnityPlugin { public static ConfigEntry<int> DefaultPingLifetime; public static ConfigEntry<int> EnemyPingLifetime; public static ConfigEntry<int> InteractablePingLifetime; public static ConfigEntry<int> NotificationLifetime; public static ConfigEntry<Color> DefaultPingColorConfig; public static ConfigEntry<Color> DefaultPingSpriteColorConfig; public static ConfigEntry<Color> EnemyPingColorConfig; public static ConfigEntry<Color> EnemyPingSpriteColorConfig; public static ConfigEntry<Color> InteractablePingColorConfig; public static ConfigEntry<Color> InteractablePingSpriteColorConfig; public static ConfigEntry<bool> ShowPickupText; public static ConfigEntry<bool> ShowChestText; public static ConfigEntry<bool> ShowShopText; public static ConfigEntry<bool> ShowDroneText; public static ConfigEntry<bool> ShowShrineText; public static ConfigEntry<bool> ShowEnemyText; public static ConfigEntry<bool> ShowPingDistance; public static ConfigEntry<bool> HideOffscreenPingText; public static ConfigEntry<bool> ShowItemNotification; public static ConfigEntry<bool> ShowDetailsDescription; public static ConfigEntry<bool> TieredInteractablePingColor; public void Awake() { //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Expected O, but got Unknown //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Expected O, but got Unknown //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Expected O, but got Unknown //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_0372: Expected O, but got Unknown //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_0382: Expected O, but got Unknown //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Expected O, but got Unknown //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Expected O, but got Unknown //IL_03a8: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Expected O, but got Unknown //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03c2: Expected O, but got Unknown //IL_03c8: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Expected O, but got Unknown //IL_03d8: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: Expected O, but got Unknown //IL_03e8: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Expected O, but got Unknown //IL_03f8: Unknown result type (might be due to invalid IL or missing references) //IL_0402: Expected O, but got Unknown //IL_0408: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Expected O, but got Unknown //IL_0418: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Expected O, but got Unknown //IL_0428: Unknown result type (might be due to invalid IL or missing references) //IL_0432: Expected O, but got Unknown //IL_0438: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Expected O, but got Unknown //IL_0448: Unknown result type (might be due to invalid IL or missing references) //IL_0452: Expected O, but got Unknown //IL_0458: Unknown result type (might be due to invalid IL or missing references) //IL_0462: Expected O, but got Unknown //IL_0468: Unknown result type (might be due to invalid IL or missing references) //IL_0472: Expected O, but got Unknown //IL_0488: Unknown result type (might be due to invalid IL or missing references) //IL_0492: Expected O, but got Unknown //IL_049a: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Expected O, but got Unknown //IL_04ac: Unknown result type (might be due to invalid IL or missing references) //IL_04b6: Expected O, but got Unknown DefaultPingLifetime = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Default Lifetime", 6, "Time in seconds how long a regular 'walk to' ping indicator should be shown on the map"); EnemyPingLifetime = ((BaseUnityPlugin)this).Config.Bind<int>("Enemies", "Enemy Lifetime", 8, "Time in seconds how long a ping indicator for enemies should be shown on the map"); InteractablePingLifetime = ((BaseUnityPlugin)this).Config.Bind<int>("Interactables", "Interactable Lifetime", 30, "Time in seconds how long a ping indicator for interactables should be shown on the map"); NotificationLifetime = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Notification Lifetime", 30, "Time in seconds how long the notification with an item description will be shown"); DefaultPingColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("General", "Default Color", new Color(0.525f, 0.961f, 0.486f, 1f), "Color of the default ping"); DefaultPingSpriteColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("General", "Default Sprite Color", new Color(0.527f, 0.962f, 0.486f, 1f), "Color of the default ping sprite"); EnemyPingColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("Enemies", "Enemy Color", new Color(0.82f, 0.122f, 0.122f, 1f), "Color of the enemy ping"); EnemyPingSpriteColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("Enemies", "Enemy Sprite Color", new Color(0.821f, 0.12f, 0.12f, 1f), "Color of the enemy ping sprite"); InteractablePingColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("Interactables", "Interactable Color", new Color(0.886f, 0.871f, 0.173f, 1f), "Color of the interactable ping"); InteractablePingSpriteColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("Interactables", "Interactable Sprite Color", new Color(0.887f, 0.87f, 0.172f, 1f), "Color of the interactable ping sprite"); ShowPickupText = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactables", "Items", true, "Shows item names on ping"); ShowChestText = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactables", "Chests", true, "Shows item names and cost on chest pings"); ShowShopText = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactables", "Terminals", true, "Shows item names and cost on shop terminal pings"); ShowDroneText = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactables", "Drones", true, "Shows drone type on broken drone pings"); ShowShrineText = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactables", "Shrines", true, "Shows shrine type on shrine pings"); ShowEnemyText = ((BaseUnityPlugin)this).Config.Bind<bool>("Enemies", "Enemies", true, "Shows names on enemy pings"); ShowPingDistance = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Distance", true, "Show distance to ping in ping label"); HideOffscreenPingText = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Hide Offscreen Pings", true, "Hide text of offscreen pings to prevent cluttering"); ShowItemNotification = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactables", "Item Description", true, "Show pickup-style notification with description on ping of an already discovered item"); ShowDetailsDescription = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactables", "Detailed Description", true, "Show detailed description in the item notification. Requires Show Item Description to be enabled"); TieredInteractablePingColor = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Tier Color", true, "Color pings in their target tier color"); ModSettingsManager.AddOption((BaseOption)new IntFieldOption(DefaultPingLifetime)); ModSettingsManager.AddOption((BaseOption)new IntFieldOption(EnemyPingLifetime)); ModSettingsManager.AddOption((BaseOption)new IntFieldOption(InteractablePingLifetime)); ModSettingsManager.AddOption((BaseOption)new ColorOption(DefaultPingColorConfig)); ModSettingsManager.AddOption((BaseOption)new ColorOption(DefaultPingSpriteColorConfig)); ModSettingsManager.AddOption((BaseOption)new ColorOption(EnemyPingColorConfig)); ModSettingsManager.AddOption((BaseOption)new ColorOption(EnemyPingSpriteColorConfig)); ModSettingsManager.AddOption((BaseOption)new ColorOption(InteractablePingColorConfig)); ModSettingsManager.AddOption((BaseOption)new ColorOption(InteractablePingSpriteColorConfig)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowPickupText)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowChestText)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowShopText)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowDroneText)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowShrineText)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowEnemyText)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowPingDistance)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(HideOffscreenPingText)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowItemNotification)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowDetailsDescription)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(TieredInteractablePingColor)); PingIndicator pingIndicator = new PingIndicator(this); PingerController pingerController = new PingerController(this); PingerController.SetCurrentPing += new hook_SetCurrentPing(pingerController.SetCurrentPing); PingerController.GeneratePingInfo += new hook_GeneratePingInfo(pingerController.GeneratePingInfo); PingIndicator.Update += new hook_Update(pingIndicator.Update); SceneManager.sceneUnloaded += pingerController.OnSceneUnloaded; } public void log(string message) { ((BaseUnityPlugin)this).Logger.LogInfo((object)message); } } public class PingTextBuilder { public void SetPingText(PingIndicator pingIndicator, PingType pingType) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected I4, but got Unknown switch ((int)pingType) { case 0: break; case 1: AddEnemyText(pingIndicator); break; case 2: AddLootText(pingIndicator); break; } } private static void AddEnemyText(PingIndicator pingIndicator) { string bestBodyName = Util.GetBestBodyName(pingIndicator.pingTarget); if (Pingprovements.ShowEnemyText.Value) { TextMeshPro pingText = pingIndicator.pingText; ((TMP_Text)pingText).text = ((TMP_Text)pingText).text + "<size=70%>\n" + bestBodyName; } } private static void AddLootText(PingIndicator pingIndicator) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) string price = GetPrice(pingIndicator.pingTarget); ShopTerminalBehavior component = pingIndicator.pingTarget.GetComponent<ShopTerminalBehavior>(); if (Object.op_Implicit((Object)(object)component) && Pingprovements.ShowShopText.Value) { string text = "<size=70%>\n"; PickupIndex pickupIndex = component.CurrentPickup().pickupIndex; PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); text += (component.pickupIndexIsHidden ? "?" : (Language.GetString(pickupDef.nameToken) ?? "")); TextMeshPro pingText = pingIndicator.pingText; ((TMP_Text)pingText).text = ((TMP_Text)pingText).text + text + " (" + price + ")"; return; } GenericPickupController component2 = pingIndicator.pingTarget.GetComponent<GenericPickupController>(); if (Object.op_Implicit((Object)(object)component2) && Pingprovements.ShowPickupText.Value) { PickupDef pickupDef2 = PickupCatalog.GetPickupDef(component2._pickupState.pickupIndex); TextMeshPro pingText2 = pingIndicator.pingText; ((TMP_Text)pingText2).text = ((TMP_Text)pingText2).text + "<size=70%>\n" + Language.GetString(pickupDef2.nameToken); } ChestBehavior component3 = pingIndicator.pingTarget.GetComponent<ChestBehavior>(); if (Object.op_Implicit((Object)(object)component3) && Pingprovements.ShowChestText.Value) { TextMeshPro pingText = pingIndicator.pingText; ((TMP_Text)pingText).text = ((TMP_Text)pingText).text + "<size=70%>\n" + Util.GetBestBodyName(pingIndicator.pingTarget) + " (" + price + ")"; return; } string text2 = ""; PurchaseInteraction component4 = pingIndicator.pingTarget.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component4)) { text2 = Language.GetString(component4.displayNameToken); } SummonMasterBehavior component5 = pingIndicator.pingTarget.GetComponent<SummonMasterBehavior>(); if (Object.op_Implicit((Object)(object)component5) && Pingprovements.ShowDroneText.Value) { TextMeshPro pingText = pingIndicator.pingText; ((TMP_Text)pingText).text = ((TMP_Text)pingText).text + "<size=70%>\n" + text2 + " (" + price + ")"; } else if (Pingprovements.ShowShrineText.Value) { TextMeshPro pingText3 = pingIndicator.pingText; ((TMP_Text)pingText3).text = ((TMP_Text)pingText3).text + "<size=70%>\n" + text2; } } private static string GetPrice(GameObject go) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) PurchaseInteraction component = go.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component)) { StringBuilder stringBuilder = new StringBuilder(); CostTypeCatalog.GetCostTypeDef(component.costType).BuildCostStringStyled(component.cost, stringBuilder, true, true); return stringBuilder.ToString(); } return null; } } }