Decompiled source of Exchange Changes v1.1.5

ExchangeChanges.dll

Decompiled 4 days ago
using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.DroneCombiner;
using EntityStates.DroneScrapper;
using EntityStates.DroneVendor;
using EntityStates.Duplicator;
using EntityStates.MealPrep;
using EntityStates.Scrapper;
using Microsoft.CodeAnalysis;
using On.EntityStates.DroneVendor;
using On.EntityStates.Duplicator;
using On.RoR2;
using On.RoR2.EntityLogic;
using R2API.Utils;
using RiskOfOptions;
using RiskOfOptions.Components.Panel;
using RiskOfOptions.Options;
using RoR2;
using RoR2.EntityLogic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Networking;

[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("ExchangeChanges")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+6579763edabd90444350edd1ae08717d984cdd3d")]
[assembly: AssemblyProduct("ExchangeChanges")]
[assembly: AssemblyTitle("ExchangeChanges")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[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 ExchangeChanges
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("FlyingComputer.ExchangeChanges", "ExchangeChanges", "1.1.5")]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	public class ExchangeChanges : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_Start <>9__113_0;

			public static hook_DropDroplet <>9__113_1;

			public static hook_OnInteractionBegin <>9__113_2;

			public static hook_AddShrineStack <>9__113_3;

			public static hook_AddShrineStack <>9__113_4;

			public static hook_CallDelayed <>9__113_5;

			public static hook_CreateTimer <>9__113_6;

			public static hook_OnEnter <>9__113_7;

			public static hook_OnEnter <>9__113_8;

			public static UnityAction <>9__115_0;

			internal IEnumerator <Awake>b__113_0(orig_Start orig, Stage self)
			{
				if (!hasGatheredDefaults)
				{
					baseDroneVendorDelay = DroneVendorDispatchState.duration;
					baseDroneVendorSpawnDelay = DroneVendorDispatchState.spawnTime;
					baseDroneVendorIdleDelay = DroneVendorAssumeIdle.duration;
					baseDroneVendorTotalDelay = baseDroneVendorDelay + baseDroneVendorIdleDelay;
					baseDroneCombinerInitDelay = DroneCombinerCombining.initialDelayDuration;
					baseDroneCombinerAbsorbDelay = DroneCombinerCombining.droneAbsorbDelay;
					baseDroneCombinerAnimDelay = DroneCombinerCombining.animDelayDuration;
					baseDroneCombinerTotalDelay = baseDroneCombinerInitDelay + baseDroneCombinerAbsorbDelay + baseDroneCombinerAnimDelay;
					baseChefWaitDelay = WaitToBeginCooking.duration;
					baseChefCookingDelay = Cooking.duration;
					baseChefIdleDelay = CookingToIdle.duration;
					baseChefTotalDelay = baseChefWaitDelay + baseChefCookingDelay + baseChefIdleDelay;
					hasGatheredDefaults = true;
				}
				Reflection.SetFieldValue<float>(typeof(Duplicating), "initialDelayDuration", printerDelay.Value / 2f);
				Reflection.SetFieldValue<float>(typeof(Duplicating), "timeBetweenStartAndDropDroplet", printerDelay.Value / 2f);
				Reflection.SetFieldValue<float>(typeof(WaitToBeginScrapping), "duration", scrapperDelay.Value / 2f);
				Reflection.SetFieldValue<float>(typeof(Scrapping), "duration", scrapperDelay.Value / 2f);
				Reflection.SetFieldValue<float>(typeof(ScrappingToIdle), "duration", scrapperItemDelay.Value * 2f);
				DroneVendorDispatchState.duration = baseDroneVendorDelay / baseDroneVendorTotalDelay * droneVendorDelay.Value;
				DroneVendorDispatchState.spawnTime = baseDroneVendorSpawnDelay / baseDroneVendorTotalDelay * droneVendorDelay.Value;
				DroneVendorAssumeIdle.duration = baseDroneVendorIdleDelay / baseDroneVendorTotalDelay * droneVendorDelay.Value;
				DroneScrapping.duration = droneScrapperDelay.Value;
				WaitToBeginScrappingDrone.duration = droneScrapperStartupDelay.Value;
				DroneCombinerCombining.initialDelayDuration = baseDroneCombinerInitDelay / baseDroneCombinerTotalDelay * droneCombinerDelay.Value;
				DroneCombinerCombining.droneAbsorbDelay = baseDroneCombinerAbsorbDelay / baseDroneCombinerTotalDelay * droneCombinerDelay.Value;
				DroneCombinerCombining.animDelayDuration = baseDroneCombinerAnimDelay / baseDroneCombinerTotalDelay * droneCombinerDelay.Value;
				WaitToBeginCooking.duration = baseChefWaitDelay / baseChefTotalDelay * chefDelay.Value;
				Cooking.duration = baseChefCookingDelay / baseChefTotalDelay * chefDelay.Value;
				CookingToIdle.duration = baseChefIdleDelay / baseChefTotalDelay * chefDelay.Value;
				return orig.Invoke(self);
			}

			internal void <Awake>b__113_1(orig_DropDroplet orig, Duplicating self)
			{
				orig.Invoke(self);
				if (NetworkServer.active && self.hasDroppedDroplet)
				{
					((EntityState)self).GetComponent<PurchaseInteraction>().Networkavailable = true;
				}
			}

			internal void <Awake>b__113_2(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor interactor)
			{
				orig.Invoke(self, interactor);
				if (self.displayNameToken == "SHRINE_BOSS_NAME")
				{
					((Component)self).GetComponent<ShrineBossBehavior>().refreshTimer = mountainDelay.Value;
				}
				if (self.displayNameToken == "SHRINE_CHANCE_NAME")
				{
					((Component)self).GetComponent<ShrineChanceBehavior>().refreshTimer = chanceDelay.Value;
				}
			}

			internal void <Awake>b__113_3(orig_AddShrineStack orig, ShrineHealingBehavior self, Interactor interactor)
			{
				orig.Invoke(self, interactor);
				self.refreshTimer = woodsDelay.Value;
			}

			internal void <Awake>b__113_4(orig_AddShrineStack orig, ShrineBloodBehavior self, Interactor interactor)
			{
				orig.Invoke(self, interactor);
				self.refreshTimer = bloodDelay.Value;
			}

			internal void <Awake>b__113_5(orig_CallDelayed orig, DelayedEvent self, float timer)
			{
				if (!((object)self).ToString().Contains("Duplicator"))
				{
					orig.Invoke(self, timer);
				}
			}

			internal TimerHandle <Awake>b__113_6(orig_CreateTimer orig, TimerQueue self, float time, Action action)
			{
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_005d: 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)
				if (action.Target.ToString().Contains("LunarCauldron"))
				{
					return orig.Invoke(self, bazaarDelay.Value, action);
				}
				if (action.Target.ToString().Contains("ShrineCleanse"))
				{
					return orig.Invoke(self, cleanseDelay.Value, action);
				}
				return orig.Invoke(self, time, action);
			}

			internal void <Awake>b__113_7(orig_OnEnter orig, DroneVendorDispatchState self)
			{
				float speed = ((droneVendorDelay.Value <= 0f) ? 100f : (baseDroneVendorTotalDelay / droneVendorDelay.Value));
				((EntityState)self).GetModelAnimator().speed = speed;
				orig.Invoke(self);
			}

			internal void <Awake>b__113_8(orig_OnEnter orig, DroneVendorAssumeIdle self)
			{
				float speed = ((droneVendorDelay.Value <= 0f) ? 100f : (baseDroneVendorTotalDelay / droneVendorDelay.Value));
				((EntityState)self).GetModelAnimator().speed = speed;
				orig.Invoke(self);
			}

			internal void <initRoo>b__115_0()
			{
				ModOptionPanelController obj = Object.FindObjectOfType<ModOptionPanelController>();
				printerDelay.Value = 0.6f;
				scrapperDelay.Value = 0.3f;
				scrapperItemDelay.Value = 0.3f;
				chanceDelay.Value = 0.4f;
				mountainDelay.Value = 0.4f;
				bazaarDelay.Value = 0.5f;
				cleanseDelay.Value = 0.5f;
				woodsDelay.Value = 0.5f;
				bloodDelay.Value = 0.5f;
				droneVendorDelay.Value = 1f;
				droneScrapperStartupDelay.Value = 0.1f;
				droneScrapperDelay.Value = 0.5f;
				droneCombinerDelay.Value = 0.7f;
				chefDelay.Value = 0.5f;
				obj.RevertChanges();
			}
		}

		public const string PluginGUID = "FlyingComputer.ExchangeChanges";

		public const string PluginAuthor = "FlyingComputer";

		public const string PluginName = "ExchangeChanges";

		public const string PluginVersion = "1.1.5";

		public static UnityAction ResetToDefault;

		public static ConfigEntry<float> printerDelay { get; set; }

		public static ConfigEntry<float> scrapperDelay { get; set; }

		public static ConfigEntry<float> scrapperItemDelay { get; set; }

		public static ConfigEntry<float> chanceDelay { get; set; }

		public static ConfigEntry<float> mountainDelay { get; set; }

		public static ConfigEntry<float> bazaarDelay { get; set; }

		public static ConfigEntry<float> cleanseDelay { get; set; }

		public static ConfigEntry<float> woodsDelay { get; set; }

		public static ConfigEntry<float> bloodDelay { get; set; }

		public static ConfigEntry<float> droneVendorDelay { get; set; }

		public static ConfigEntry<float> droneScrapperStartupDelay { get; set; }

		public static ConfigEntry<float> droneScrapperDelay { get; set; }

		public static ConfigEntry<float> droneCombinerDelay { get; set; }

		public static ConfigEntry<float> chefDelay { get; set; }

		private static float baseDroneVendorDelay { get; set; }

		private static float baseDroneVendorSpawnDelay { get; set; }

		private static float baseDroneVendorIdleDelay { get; set; }

		private static float baseDroneVendorTotalDelay { get; set; }

		private static float baseDroneCombinerInitDelay { get; set; }

		private static float baseDroneCombinerAbsorbDelay { get; set; }

		private static float baseDroneCombinerAnimDelay { get; set; }

		private static float baseDroneCombinerTotalDelay { get; set; }

		private static float baseChefWaitDelay { get; set; }

		private static float baseChefCookingDelay { get; set; }

		private static float baseChefIdleDelay { get; set; }

		private static float baseChefTotalDelay { get; set; }

		private static bool hasGatheredDefaults { get; set; }

		public void Awake()
		{
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Expected O, but got Unknown
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Expected O, but got Unknown
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0264: Expected O, but got Unknown
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_0288: Expected O, but got Unknown
			//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ac: Expected O, but got Unknown
			//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: Expected O, but got Unknown
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f4: Expected O, but got Unknown
			//IL_030d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Expected O, but got Unknown
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0336: Unknown result type (might be due to invalid IL or missing references)
			//IL_033c: Expected O, but got Unknown
			printerDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Printer Delay", 0.6f, "Printer delay in seconds");
			scrapperDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Scrapper Delay", 0.3f, "Scrapper startup delay in seconds");
			scrapperItemDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Scrapper Item Delay", 0.3f, "Scrapper delay between item drops in seconds");
			chanceDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Shrine of Chance Delay", 0.4f, "Shrine of Chance delay in seconds");
			mountainDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Shrine of the Mountain Delay", 0.4f, "Shrine of the Mountain delay in seconds, for those with mods enabling more than one use");
			bazaarDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Bazaar trade Delay", 0.5f, "Bazaar item trade delay in seconds");
			cleanseDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Cleansing Pool Delay", 0.5f, "Cleansing Pool delay in seconds");
			woodsDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Shrine of the Woods Delay", 0.5f, "Shrine of the Woods delay in seconds");
			bloodDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Shrine of Blood Delay", 0.5f, "Shrine of Blood delay in seconds");
			droneVendorDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Drone Vendor Delay", 1f, "Drone Vendor delay in seconds");
			droneScrapperStartupDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Drone Scrapper Startup Delay", 0.1f, "Drone Scrapper startup delay in seconds");
			droneScrapperDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Drone Scrapper Delay", 0.5f, "Drone Scrapper delay in seconds");
			droneCombinerDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Drone Combiner Delay", 0.7f, "Drone Combiner Station delay in seconds");
			chefDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Delay Settings", "Wandering Chef Delay", 0.5f, "Wandering Chef delay in seconds");
			checkRoo();
			object obj = <>c.<>9__113_0;
			if (obj == null)
			{
				hook_Start val = delegate(orig_Start orig, Stage self)
				{
					if (!hasGatheredDefaults)
					{
						baseDroneVendorDelay = DroneVendorDispatchState.duration;
						baseDroneVendorSpawnDelay = DroneVendorDispatchState.spawnTime;
						baseDroneVendorIdleDelay = DroneVendorAssumeIdle.duration;
						baseDroneVendorTotalDelay = baseDroneVendorDelay + baseDroneVendorIdleDelay;
						baseDroneCombinerInitDelay = DroneCombinerCombining.initialDelayDuration;
						baseDroneCombinerAbsorbDelay = DroneCombinerCombining.droneAbsorbDelay;
						baseDroneCombinerAnimDelay = DroneCombinerCombining.animDelayDuration;
						baseDroneCombinerTotalDelay = baseDroneCombinerInitDelay + baseDroneCombinerAbsorbDelay + baseDroneCombinerAnimDelay;
						baseChefWaitDelay = WaitToBeginCooking.duration;
						baseChefCookingDelay = Cooking.duration;
						baseChefIdleDelay = CookingToIdle.duration;
						baseChefTotalDelay = baseChefWaitDelay + baseChefCookingDelay + baseChefIdleDelay;
						hasGatheredDefaults = true;
					}
					Reflection.SetFieldValue<float>(typeof(Duplicating), "initialDelayDuration", printerDelay.Value / 2f);
					Reflection.SetFieldValue<float>(typeof(Duplicating), "timeBetweenStartAndDropDroplet", printerDelay.Value / 2f);
					Reflection.SetFieldValue<float>(typeof(WaitToBeginScrapping), "duration", scrapperDelay.Value / 2f);
					Reflection.SetFieldValue<float>(typeof(Scrapping), "duration", scrapperDelay.Value / 2f);
					Reflection.SetFieldValue<float>(typeof(ScrappingToIdle), "duration", scrapperItemDelay.Value * 2f);
					DroneVendorDispatchState.duration = baseDroneVendorDelay / baseDroneVendorTotalDelay * droneVendorDelay.Value;
					DroneVendorDispatchState.spawnTime = baseDroneVendorSpawnDelay / baseDroneVendorTotalDelay * droneVendorDelay.Value;
					DroneVendorAssumeIdle.duration = baseDroneVendorIdleDelay / baseDroneVendorTotalDelay * droneVendorDelay.Value;
					DroneScrapping.duration = droneScrapperDelay.Value;
					WaitToBeginScrappingDrone.duration = droneScrapperStartupDelay.Value;
					DroneCombinerCombining.initialDelayDuration = baseDroneCombinerInitDelay / baseDroneCombinerTotalDelay * droneCombinerDelay.Value;
					DroneCombinerCombining.droneAbsorbDelay = baseDroneCombinerAbsorbDelay / baseDroneCombinerTotalDelay * droneCombinerDelay.Value;
					DroneCombinerCombining.animDelayDuration = baseDroneCombinerAnimDelay / baseDroneCombinerTotalDelay * droneCombinerDelay.Value;
					WaitToBeginCooking.duration = baseChefWaitDelay / baseChefTotalDelay * chefDelay.Value;
					Cooking.duration = baseChefCookingDelay / baseChefTotalDelay * chefDelay.Value;
					CookingToIdle.duration = baseChefIdleDelay / baseChefTotalDelay * chefDelay.Value;
					return orig.Invoke(self);
				};
				<>c.<>9__113_0 = val;
				obj = (object)val;
			}
			Stage.Start += (hook_Start)obj;
			object obj2 = <>c.<>9__113_1;
			if (obj2 == null)
			{
				hook_DropDroplet val2 = delegate(orig_DropDroplet orig, Duplicating self)
				{
					orig.Invoke(self);
					if (NetworkServer.active && self.hasDroppedDroplet)
					{
						((EntityState)self).GetComponent<PurchaseInteraction>().Networkavailable = true;
					}
				};
				<>c.<>9__113_1 = val2;
				obj2 = (object)val2;
			}
			Duplicating.DropDroplet += (hook_DropDroplet)obj2;
			object obj3 = <>c.<>9__113_2;
			if (obj3 == null)
			{
				hook_OnInteractionBegin val3 = delegate(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor interactor)
				{
					orig.Invoke(self, interactor);
					if (self.displayNameToken == "SHRINE_BOSS_NAME")
					{
						((Component)self).GetComponent<ShrineBossBehavior>().refreshTimer = mountainDelay.Value;
					}
					if (self.displayNameToken == "SHRINE_CHANCE_NAME")
					{
						((Component)self).GetComponent<ShrineChanceBehavior>().refreshTimer = chanceDelay.Value;
					}
				};
				<>c.<>9__113_2 = val3;
				obj3 = (object)val3;
			}
			PurchaseInteraction.OnInteractionBegin += (hook_OnInteractionBegin)obj3;
			object obj4 = <>c.<>9__113_3;
			if (obj4 == null)
			{
				hook_AddShrineStack val4 = delegate(orig_AddShrineStack orig, ShrineHealingBehavior self, Interactor interactor)
				{
					orig.Invoke(self, interactor);
					self.refreshTimer = woodsDelay.Value;
				};
				<>c.<>9__113_3 = val4;
				obj4 = (object)val4;
			}
			ShrineHealingBehavior.AddShrineStack += (hook_AddShrineStack)obj4;
			object obj5 = <>c.<>9__113_4;
			if (obj5 == null)
			{
				hook_AddShrineStack val5 = delegate(orig_AddShrineStack orig, ShrineBloodBehavior self, Interactor interactor)
				{
					orig.Invoke(self, interactor);
					self.refreshTimer = bloodDelay.Value;
				};
				<>c.<>9__113_4 = val5;
				obj5 = (object)val5;
			}
			ShrineBloodBehavior.AddShrineStack += (hook_AddShrineStack)obj5;
			object obj6 = <>c.<>9__113_5;
			if (obj6 == null)
			{
				hook_CallDelayed val6 = delegate(orig_CallDelayed orig, DelayedEvent self, float timer)
				{
					if (!((object)self).ToString().Contains("Duplicator"))
					{
						orig.Invoke(self, timer);
					}
				};
				<>c.<>9__113_5 = val6;
				obj6 = (object)val6;
			}
			DelayedEvent.CallDelayed += (hook_CallDelayed)obj6;
			object obj7 = <>c.<>9__113_6;
			if (obj7 == null)
			{
				hook_CreateTimer val7 = delegate(orig_CreateTimer orig, TimerQueue self, float time, Action action)
				{
					//IL_0026: Unknown result type (might be due to invalid IL or missing references)
					//IL_005d: 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)
					if (action.Target.ToString().Contains("LunarCauldron"))
					{
						return orig.Invoke(self, bazaarDelay.Value, action);
					}
					return action.Target.ToString().Contains("ShrineCleanse") ? orig.Invoke(self, cleanseDelay.Value, action) : orig.Invoke(self, time, action);
				};
				<>c.<>9__113_6 = val7;
				obj7 = (object)val7;
			}
			TimerQueue.CreateTimer += (hook_CreateTimer)obj7;
			object obj8 = <>c.<>9__113_7;
			if (obj8 == null)
			{
				hook_OnEnter val8 = delegate(orig_OnEnter orig, DroneVendorDispatchState self)
				{
					float speed = ((droneVendorDelay.Value <= 0f) ? 100f : (baseDroneVendorTotalDelay / droneVendorDelay.Value));
					((EntityState)self).GetModelAnimator().speed = speed;
					orig.Invoke(self);
				};
				<>c.<>9__113_7 = val8;
				obj8 = (object)val8;
			}
			DroneVendorDispatchState.OnEnter += (hook_OnEnter)obj8;
			object obj9 = <>c.<>9__113_8;
			if (obj9 == null)
			{
				hook_OnEnter val9 = delegate(orig_OnEnter orig, DroneVendorAssumeIdle self)
				{
					float speed = ((droneVendorDelay.Value <= 0f) ? 100f : (baseDroneVendorTotalDelay / droneVendorDelay.Value));
					((EntityState)self).GetModelAnimator().speed = speed;
					orig.Invoke(self);
				};
				<>c.<>9__113_8 = val9;
				obj9 = (object)val9;
			}
			DroneVendorAssumeIdle.OnEnter += (hook_OnEnter)obj9;
		}

		public static void checkRoo()
		{
			if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"))
			{
				initRoo();
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void initRoo()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Expected O, but got Unknown
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: 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
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Expected O, but got Unknown
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Expected O, but got Unknown
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Expected O, but got Unknown
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Expected O, but got Unknown
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Expected O, but got Unknown
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Expected O, but got Unknown
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Expected O, but got Unknown
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Expected O, but got Unknown
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Expected O, but got Unknown
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Expected O, but got Unknown
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Expected O, but got Unknown
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Expected O, but got Unknown
			ModSettingsManager.SetModDescription("Adjust the speed of repeatable interactions");
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(printerDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(scrapperDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(scrapperItemDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(chanceDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(mountainDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(bazaarDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(cleanseDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(woodsDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(bloodDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(droneVendorDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(droneScrapperStartupDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(droneScrapperDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(droneCombinerDelay));
			ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(chefDelay));
			UnityAction resetToDefault = ResetToDefault;
			object obj = <>c.<>9__115_0;
			if (obj == null)
			{
				UnityAction val = delegate
				{
					ModOptionPanelController obj2 = Object.FindObjectOfType<ModOptionPanelController>();
					printerDelay.Value = 0.6f;
					scrapperDelay.Value = 0.3f;
					scrapperItemDelay.Value = 0.3f;
					chanceDelay.Value = 0.4f;
					mountainDelay.Value = 0.4f;
					bazaarDelay.Value = 0.5f;
					cleanseDelay.Value = 0.5f;
					woodsDelay.Value = 0.5f;
					bloodDelay.Value = 0.5f;
					droneVendorDelay.Value = 1f;
					droneScrapperStartupDelay.Value = 0.1f;
					droneScrapperDelay.Value = 0.5f;
					droneCombinerDelay.Value = 0.7f;
					chefDelay.Value = 0.5f;
					obj2.RevertChanges();
				};
				<>c.<>9__115_0 = val;
				obj = (object)val;
			}
			ResetToDefault = (UnityAction)Delegate.Combine((Delegate?)(object)resetToDefault, (Delegate?)obj);
			ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Reset delay settings to default:", "Delay Settings", "", "RESET", ResetToDefault));
		}
	}
}