Decompiled source of TavernFoodPriorities v1.6.0

TavernFoodPriorities.dll

Decompiled 11 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using SuperFantasyKingdom;
using SuperFantasyKingdom.Tavern;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyCompany("TavernFoodPriorities")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.6.0.0")]
[assembly: AssemblyInformationalVersion("1.6.0+b823ae10082a55c8f271cb8b08bef34628a7a155")]
[assembly: AssemblyProduct("Tavern Food Priorities")]
[assembly: AssemblyTitle("TavernFoodPriorities")]
[assembly: AssemblyVersion("1.6.0.0")]
[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 TavernFoodPriorities
{
	[BepInPlugin("ownly.tavernfoodpriorities", "Tavern Food Priorities", "1.6.0")]
	public class Plugin : BaseUnityPlugin
	{
		private void Awake()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID).PatchAll();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Tavern Food Priorities loaded: units eat the cheapest food first");
		}
	}
	[HarmonyPatch(typeof(TavernFoodManager), "FindBestFood")]
	internal static class Patch_FindLowestFood
	{
		private static readonly ResourceType[] eatOrderConserveFish;

		private static readonly ResourceType[] eatOrderSpendFish;

		private static bool Prefix(TavernFoodManager __instance, ref ResourceType __result)
		{
			//IL_003b: 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_00a2: Expected I4, but got Unknown
			//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_0058: 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_0065: 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_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			List<ResourceAmount> value = Traverse.Create((object)__instance).Field("m_Inventory").GetValue<List<ResourceAmount>>();
			ResourceType[] array = (Traverse.Create((object)__instance).Field("m_CookFish").GetValue<bool>() ? eatOrderConserveFish : eatOrderSpendFish);
			ResourceType val = (ResourceType)0;
			int num = int.MaxValue;
			if (value != null)
			{
				foreach (ResourceAmount item in value)
				{
					if (item.amount > 0)
					{
						int num2 = Array.IndexOf(array, item.type);
						if (num2 >= 0 && num2 < num)
						{
							num = num2;
							val = item.type;
						}
					}
				}
			}
			__result = (ResourceType)(int)val;
			return false;
		}

		static Patch_FindLowestFood()
		{
			ResourceType[] array = new ResourceType[6];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			eatOrderConserveFish = (ResourceType[])(object)array;
			ResourceType[] array2 = new ResourceType[6];
			RuntimeHelpers.InitializeArray(array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			eatOrderSpendFish = (ResourceType[])(object)array2;
		}
	}
}