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 SuppressorInBazaar v1.2.1
SuppressorInBazaar.dll
Decompiled 6 months agousing System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using On.RoR2; using RoR2; using RoR2.Items; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SuppressorInBazaar")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("SuppressorInBazaar")] [assembly: AssemblyTitle("SuppressorInBazaar")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace SuppressorInBazaar; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("thebugreport.SuppressorInBazaar", "SuppressorInBazaar", "1.0.0")] public class SuppressorInBazaar : BaseUnityPlugin { public sealed class SuppressorUnit { public Vector3 position; public float offsetY; public Quaternion rotation = Quaternion.Euler(0f, 85f, 0f); } private ConfigEntry<bool> replaceVoidScrap; private ConfigEntry<string> amountOfSuppressors; private ConfigEntry<int> debugSuppressorToSpawn; private readonly int _debugSuppressorToSpawn = -1; public List<SuppressorUnit> suppressorPositions = new List<SuppressorUnit> { new SuppressorUnit { position = new Vector3(-140.7042f, -24.45994f, -20.14482f), rotation = Quaternion.Euler(0f, 85f, 0f), offsetY = -1.15f }, new SuppressorUnit { position = new Vector3(-141.1033f, -25.3802f, -14.5926f), rotation = Quaternion.Euler(0f, 180f, 0f), offsetY = -0.8f }, new SuppressorUnit { position = new Vector3(-142.7284f, -23.52035f, -24.3129f), rotation = Quaternion.Euler(0f, 5f, 0f), offsetY = -1.5f }, new SuppressorUnit { position = new Vector3(-146.1029f, -23.8468f, -17.74881f), rotation = Quaternion.Euler(0f, 105f, 0f), offsetY = -1.5f }, new SuppressorUnit { position = new Vector3(-123.1761f, -22.92046f, -0.2019209f), rotation = Quaternion.Euler(0f, 225f, 0f), offsetY = -1.4f }, new SuppressorUnit { position = new Vector3(-70.04802f, -22.58818f, -22.26592f), rotation = Quaternion.Euler(0f, 280f, 0f), offsetY = -1.4f }, new SuppressorUnit { position = new Vector3(-91.48799f, -22.65284f, -5.782152f), rotation = Quaternion.Euler(0f, 120f, 0f), offsetY = -1.5f }, new SuppressorUnit { position = new Vector3(-62.53033f, -22.66195f, -59.45711f), rotation = Quaternion.Euler(0f, 275f, 0f), offsetY = -1.4f }, new SuppressorUnit { position = new Vector3(-65.79401f, -22.75067f, -54.65296f), rotation = Quaternion.Euler(0f, 255f, 0f), offsetY = -1.4f }, new SuppressorUnit { position = new Vector3(-63.60971f, -25.34011f, -74.19511f), rotation = Quaternion.Euler(0f, 295f, 0f), offsetY = -1.55f } }; public void Awake() { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown amountOfSuppressors = ((BaseUnityPlugin)this).Config.Bind<string>("Settings", "Amount of Suppressors", "1-3", "How many Suppressors to spawn in the Bazaar. Use a single number or a range between two numbers (e.g. 1-3). Max amount is 9 (4-12 would convert into 4-9)."); replaceVoidScrap = ((BaseUnityPlugin)this).Config.Bind<bool>("Compatibility", "Replace Void Scrap", true, "If true, Void Scrap produced from banished items will produce regular scrap instead. Turn off if you have another mod installed that uses void/suppressed scrap. Requires Restart."); debugSuppressorToSpawn = ((BaseUnityPlugin)this).Config.Bind<int>("Debug", "Debug Suppressor To Spawn", -1, "If set to a value >= 0, will spawn only the suppressor at that index for debugging purposes. Set to -1 to disable."); SceneCatalog.OnActiveSceneChanged += new hook_OnActiveSceneChanged(SceneCatalog_OnActiveSceneChanged); if (replaceVoidScrap.Value) { VoidSuppressorBehavior.RefreshItems += new hook_RefreshItems(VoidSuppressorBehavior_RefreshItems); } } private List<int> GetSuppressorCountList() { List<int> result = new List<int>(); int num = Math.Max(0, suppressorPositions?.Count ?? 0); if (num == 0) { return result; } string text = amountOfSuppressors?.Value?.Trim() ?? "1"; int minValue; int num2; int result4; if (text.Contains("-")) { string[] array = text.Split('-', StringSplitOptions.RemoveEmptyEntries); if (array.Length == 2 && int.TryParse(array[0].Trim(), out var result2) && int.TryParse(array[1].Trim(), out var result3)) { result2 = Math.Max(0, Math.Min(result2, num)); result3 = Math.Max(0, Math.Min(result3, num)); minValue = Math.Min(result2, result3); num2 = Math.Max(result2, result3); } else { minValue = (num2 = 1); } } else if (int.TryParse(text, out result4)) { result4 = Math.Max(0, Math.Min(result4, num)); minValue = (num2 = result4); } else { minValue = (num2 = 1); } Random random = new Random(); int count = random.Next(minValue, num2 + 1); List<int> list = Enumerable.Range(0, num).ToList(); for (int num3 = list.Count - 1; num3 > 0; num3--) { int num4 = random.Next(0, num3 + 1); List<int> list2 = list; int index = num4; List<int> list3 = list; int index2 = num3; int value = list[num3]; int value2 = list[num4]; list2[index] = value; list3[index2] = value2; } return list.Take(count).ToList(); } private void SceneCatalog_OnActiveSceneChanged(orig_OnActiveSceneChanged orig, Scene oldScene, Scene newScene) { //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_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: 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_006d: 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_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: 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_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(oldScene, newScene); if (((Scene)(ref newScene)).name != "bazaar" || !NetworkServer.active) { return; } if (debugSuppressorToSpawn.Value >= 0) { int value = debugSuppressorToSpawn.Value; if (value >= 0 && value < suppressorPositions.Count) { SuppressorUnit suppressorUnit = suppressorPositions[value]; GameObject obj = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSuppressor/VoidSuppressor.prefab").WaitForCompletion()); Vector3 position = suppressorUnit.position; position.y += suppressorUnit.offsetY; obj.transform.position = position; obj.transform.rotation = suppressorUnit.rotation; NetworkServer.Spawn(obj); Debug.Log((object)$"[SuppressorInBazaar] Spawned debug suppressor at index {value} (position {position})."); return; } } List<int> suppressorCountList = GetSuppressorCountList(); if (suppressorCountList == null || suppressorCountList.Count == 0) { return; } GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSuppressor/VoidSuppressor.prefab").WaitForCompletion(); if ((Object)(object)val == (Object)null) { return; } foreach (int item in suppressorCountList) { if (item >= 0 && item < suppressorPositions.Count) { SuppressorUnit suppressorUnit2 = suppressorPositions[item]; GameObject obj2 = Object.Instantiate<GameObject>(val); Vector3 position2 = suppressorUnit2.position; position2.y += suppressorUnit2.offsetY; obj2.transform.position = position2; obj2.transform.rotation = suppressorUnit2.rotation; NetworkServer.Spawn(obj2); } } } public void VoidSuppressorBehavior_RefreshItems(orig_RefreshItems orig, VoidSuppressorBehavior self) { //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_003c: 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_0074: 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_00b1: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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_00ec: 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_00f0: 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_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: 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_0103: 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_00cf: Expected O, but got I4 //IL_010a: Expected O, but got I4 //IL_0145: Expected O, but got I4 //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_016f: 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_0178: 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_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ca->IL00ca: Incompatible stack types: O vs I4 //IL_00c8->IL00ca: Incompatible stack types: I4 vs O //IL_00c8->IL00ca: Incompatible stack types: O vs I4 //IL_0105->IL0105: Incompatible stack types: O vs I4 //IL_0103->IL0105: Incompatible stack types: I4 vs O //IL_0103->IL0105: Incompatible stack types: O vs I4 //IL_0140->IL0140: Incompatible stack types: O vs I4 //IL_013e->IL0140: Incompatible stack types: I4 vs O //IL_013e->IL0140: Incompatible stack types: O vs I4 if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void RoR2.VoidSuppressorBehavior::RefreshItems()' called on client"); } else { if (self.GetTimeUntilItemRefresh() > 0f) { return; } IList<PickupIndex> nextItemsToSuppress = self.GetNextItemsToSuppress(); for (int num = nextItemsToSuppress.Count - 1; num >= 0; num--) { PickupIndex val = nextItemsToSuppress[num]; if (SuppressedItemManager.HasItemBeenSuppressed(((PickupIndex)(ref val)).itemIndex)) { nextItemsToSuppress.RemoveAt(num); } } int num2 = self.GetItemsSuppressedPerPurchase() - nextItemsToSuppress.Count; if (num2 > 0) { List<PickupIndex> list = null; PickupIndex item = PickupIndex.none; switch (self.GetPurchaseCount()) { case 0: { list = new List<PickupIndex>(Run.instance.availableTier1DropList); ItemIndex itemIndex3 = Items.ScrapWhite.itemIndex; item = PickupCatalog.FindPickupIndex(itemIndex3); object obj3 = self; int num5; if (self.GetTransformItems()) { obj3 = itemIndex3; num5 = (int)obj3; } else { num5 = -1; obj3 = num5; num5 = (int)obj3; } ((VoidSuppressorBehavior)(object)num5).SetTransformItemIndex((ItemIndex)obj3); break; } case 1: { list = new List<PickupIndex>(Run.instance.availableTier2DropList); ItemIndex itemIndex2 = Items.ScrapGreen.itemIndex; item = PickupCatalog.FindPickupIndex(itemIndex2); object obj2 = self; int num4; if (self.GetTransformItems()) { obj2 = itemIndex2; num4 = (int)obj2; } else { num4 = -1; obj2 = num4; num4 = (int)obj2; } ((VoidSuppressorBehavior)(object)num4).SetTransformItemIndex((ItemIndex)obj2); break; } case 2: { list = new List<PickupIndex>(Run.instance.availableTier3DropList); ItemIndex itemIndex = Items.ScrapRed.itemIndex; item = PickupCatalog.FindPickupIndex(itemIndex); object obj = self; int num3; if (self.GetTransformItems()) { obj = itemIndex; num3 = (int)obj; } else { num3 = -1; obj = num3; num3 = (int)obj; } ((VoidSuppressorBehavior)(object)num3).SetTransformItemIndex((ItemIndex)obj); break; } } if (list != null && list.Count > 0) { list.Remove(item); foreach (PickupIndex item2 in nextItemsToSuppress) { list.Remove(item2); } object rng = self.GetRng(); Xoroshiro128Plus val2 = (Xoroshiro128Plus)(((rng is Xoroshiro128Plus) ? rng : null) ?? ((object)(Xoroshiro128Plus)rng)); Util.ShuffleList<PickupIndex>(list, val2); int num6 = list.Count - num2; if (num6 > 0) { list.RemoveRange(num2, num6); } foreach (PickupIndex item3 in list) { nextItemsToSuppress.Add(item3); } } } self.InvokeRefreshPickupDisplays(); if (nextItemsToSuppress.Count != 0) { return; } if (self.GetPurchaseCount() < self.GetMaxPurchaseCount()) { self.SetPurchaseCount(self.GetPurchaseCount() + 1); self.RefreshItems(); return; } Transform symbolTransform = self.GetSymbolTransform(); if ((Object)(object)symbolTransform != (Object)null) { ((Component)symbolTransform).gameObject.SetActive(false); } self.GetPurchaseInteraction().SetAvailable(false); self.GetAnimator().SetBool(self.GetAnimatorIsAvailableName(), false); } } } public static class ReflectionExtensions { private sealed class SyncListPickupIndexAdapter : IList<PickupIndex>, ICollection<PickupIndex>, IEnumerable<PickupIndex>, IEnumerable { [CompilerGenerated] private sealed class <GetEnumerator>d__19 : IEnumerator<PickupIndex>, IEnumerator, IDisposable { private int <>1__state; private PickupIndex <>2__current; public SyncListPickupIndexAdapter <>4__this; private int <i>5__2; PickupIndex IEnumerator<PickupIndex>.Current { [DebuggerHidden] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return <>2__current; } } [DebuggerHidden] public <GetEnumerator>d__19(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; SyncListPickupIndexAdapter syncListPickupIndexAdapter = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <i>5__2 = 0; break; case 1: <>1__state = -1; <i>5__2++; break; } if (<i>5__2 < syncListPickupIndexAdapter.Count) { <>2__current = syncListPickupIndexAdapter[<i>5__2]; <>1__state = 1; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private readonly object _target; private readonly Type _targetType; private readonly MethodInfo _getCount; private readonly MethodInfo _getItem; private readonly MethodInfo _add; private readonly MethodInfo _removeAt; private readonly MethodInfo _clear; public PickupIndex this[int index] { get { //IL_0020: Unknown result type (might be due to invalid IL or missing references) return (PickupIndex)_getItem.Invoke(_target, new object[1] { index }); } set { throw new NotSupportedException("Setting by index is not supported on SyncList adapter."); } } public int Count => Convert.ToInt32(_getCount.Invoke(_target, null)); public bool IsReadOnly => false; public SyncListPickupIndexAdapter(object target) { _target = target ?? throw new ArgumentNullException("target"); _targetType = target.GetType(); _getCount = GetMethodInfo(_targetType, "get_Count"); _getItem = GetMethodInfo(_targetType, "get_Item", typeof(int)); _add = GetMethodInfo(_targetType, "Add", typeof(PickupIndex)); _removeAt = GetMethodInfo(_targetType, "RemoveAt", typeof(int)); try { _clear = GetMethodInfo(_targetType, "Clear"); } catch { _clear = null; } } public void Add(PickupIndex item) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) _add.Invoke(_target, new object[1] { item }); } public void Clear() { if (_clear != null) { _clear.Invoke(_target, null); return; } for (int num = Count - 1; num >= 0; num--) { RemoveAt(num); } } public bool Contains(PickupIndex item) { //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_000e: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < Count; i++) { PickupIndex val = this[i]; if (((PickupIndex)(ref val)).Equals(item)) { return true; } } return false; } public void CopyTo(PickupIndex[] array, int arrayIndex) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < Count; i++) { array[arrayIndex + i] = this[i]; } } [IteratorStateMachine(typeof(<GetEnumerator>d__19))] public IEnumerator<PickupIndex> GetEnumerator() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GetEnumerator>d__19(0) { <>4__this = this }; } public int IndexOf(PickupIndex item) { //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_000e: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < Count; i++) { PickupIndex val = this[i]; if (((PickupIndex)(ref val)).Equals(item)) { return i; } } return -1; } public void Insert(int index, PickupIndex item) { throw new NotSupportedException("Insert not supported on SyncList adapter."); } public bool Remove(PickupIndex item) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) int num = IndexOf(item); if (num >= 0) { RemoveAt(num); return true; } return false; } public void RemoveAt(int index) { _removeAt.Invoke(_target, new object[1] { index }); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } private static readonly ConcurrentDictionary<(Type, string), FieldInfo> FieldCache = new ConcurrentDictionary<(Type, string), FieldInfo>(); private static readonly ConcurrentDictionary<(Type, string), MethodInfo> MethodCache = new ConcurrentDictionary<(Type, string), MethodInfo>(); private static FieldInfo GetFieldInfo(Type type, string name) { if (type == null) { throw new ArgumentNullException("type"); } (Type, string) key = (type, name); if (FieldCache.TryGetValue(key, out var value)) { return value; } Type type2 = type; while (type2 != null) { value = type2.GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (value != null) { FieldCache[key] = value; return value; } type2 = type2.BaseType; } throw new MissingFieldException("Field '" + name + "' not found on type '" + type.FullName + "' or its base types."); } private static MethodInfo GetMethodInfo(Type type, string name, params Type[] parameters) { if (type == null) { throw new ArgumentNullException("type"); } (Type, string) key = (type, name); if (MethodCache.TryGetValue(key, out var value)) { return value; } Type type2 = type; while (type2 != null) { value = type2.GetMethod(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, parameters, null); if (value != null) { MethodCache[key] = value; return value; } type2 = type2.BaseType; } throw new MissingMethodException("Method '" + name + "' not found on type '" + type.FullName + "' or its base types."); } public static T GetPrivateField<T>(this object obj, string name) { if (obj == null) { throw new ArgumentNullException("obj"); } return (T)GetFieldInfo(obj.GetType(), name).GetValue(obj); } public static void SetPrivateField<T>(this object obj, string name, T value) { if (obj == null) { throw new ArgumentNullException("obj"); } GetFieldInfo(obj.GetType(), name).SetValue(obj, value); } public static IList<PickupIndex> GetNextItemsToSuppress(this VoidSuppressorBehavior self) { if ((Object)(object)self == (Object)null) { throw new ArgumentNullException("self"); } object value = GetFieldInfo(((object)self).GetType(), "nextItemsToSuppress").GetValue(self); if (value == null) { return new List<PickupIndex>(); } if (value is IList<PickupIndex> result) { return result; } return new SyncListPickupIndexAdapter(value); } public static void SetNextItemsToSuppress(this VoidSuppressorBehavior self, List<PickupIndex> value) { self.SetPrivateField("nextItemsToSuppress", value); } public static float GetTimeUntilItemRefresh(this VoidSuppressorBehavior self) { return self.GetPrivateField<float>("timeUntilItemRefresh"); } public static void SetTimeUntilItemRefresh(this VoidSuppressorBehavior self, float value) { self.SetPrivateField("timeUntilItemRefresh", value); } public static int GetItemsSuppressedPerPurchase(this VoidSuppressorBehavior self) { return self.GetPrivateField<int>("itemsSuppressedPerPurchase"); } public static bool GetTransformItems(this VoidSuppressorBehavior self) { return self.GetPrivateField<bool>("transformItems"); } public static void SetTransformItems(this VoidSuppressorBehavior self, bool value) { self.SetPrivateField("transformItems", value); } public static ItemIndex GetTransformItemIndex(this VoidSuppressorBehavior self) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) return self.GetPrivateField<ItemIndex>("transformItemIndex"); } public static void SetTransformItemIndex(this VoidSuppressorBehavior self, ItemIndex value) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) self.SetPrivateField<ItemIndex>("transformItemIndex", value); } public static int GetPurchaseCount(this VoidSuppressorBehavior self) { return self.GetPrivateField<int>("purchaseCount"); } public static void SetPurchaseCount(this VoidSuppressorBehavior self, int value) { self.SetPrivateField("purchaseCount", value); } public static int GetMaxPurchaseCount(this VoidSuppressorBehavior self) { return self.GetPrivateField<int>("maxPurchaseCount"); } public static object GetRng(this VoidSuppressorBehavior self) { return self.GetPrivateField<object>("rng"); } public static Transform GetSymbolTransform(this VoidSuppressorBehavior self) { return self.GetPrivateField<Transform>("symbolTransform"); } public static void SetSymbolTransform(this VoidSuppressorBehavior self, Transform value) { self.SetPrivateField<Transform>("symbolTransform", value); } public static PurchaseInteraction GetPurchaseInteraction(this VoidSuppressorBehavior self) { return self.GetPrivateField<PurchaseInteraction>("purchaseInteraction"); } public static Animator GetAnimator(this VoidSuppressorBehavior self) { return self.GetPrivateField<Animator>("animator"); } public static string GetAnimatorIsAvailableName(this VoidSuppressorBehavior self) { return self.GetPrivateField<string>("animatorIsAvailableName"); } public static void InvokeRefreshPickupDisplays(this VoidSuppressorBehavior self) { if ((Object)(object)self == (Object)null) { throw new ArgumentNullException("self"); } GetMethodInfo(((object)self).GetType(), "RefreshPickupDisplays").Invoke(self, null); } }