Decompiled source of BalancedCaravans v1.0.0

BalancedCaravans.dll

Decompiled 21 hours ago
using System;
using System.Collections.Generic;
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.Configuration;
using HarmonyLib;
using Microsoft.CodeAnalysis;

[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.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: AssemblyCompany("BalancedCaravans")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Example Mod for Against The Storm")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+d6ada77561ccfe85ca4c2c807fd24c8c3fc0d51c")]
[assembly: AssemblyProduct("BalancedCaravans")]
[assembly: AssemblyTitle("BalancedCaravans")]
[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 BalancedCaravans
{
	[BepInPlugin("BalancedCaravans", "Balanced Caravans", "1.0.0")]
	public class Plugin : BaseUnityPlugin
	{
		public static ConfigEntry<bool> IsEnabled;

		private void Awake()
		{
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			IsEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("BalancedCaravans", "BalancedCaravans", true, "If true, distributes caravan villagers as evenly as possible (e.g., 3-3-2 instead of 5-2-1).");
			Harmony val = new Harmony("BalancedCaravans");
			MethodInfo methodInfo = AccessTools.Method("Eremite.Services.Meta.CaravanGenerator:GenerateVillagerFrom", (Type[])null, (Type[])null);
			MethodInfo methodInfo2 = AccessTools.Method(typeof(Plugin), "EqualizeDistribution", (Type[])null, (Type[])null);
			if (methodInfo != null)
			{
				val.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				((BaseUnityPlugin)this).Logger.LogInfo((object)"Balanced Caravans: Patch applied. Config file name: BalancedCaravans.cfg");
			}
			else
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Balanced Caravans: Failed to find the target method. Ensure the game version is compatible.");
			}
		}

		private static void EqualizeDistribution(List<string> races, ref List<string> __result)
		{
			if (!IsEnabled.Value || __result == null || races == null || races.Count == 0)
			{
				return;
			}
			int count = __result.Count;
			int count2 = races.Count;
			int num = count / count2;
			int num2 = count % count2;
			List<string> list = new List<string>();
			foreach (string race in races)
			{
				int num3 = num;
				if (num2 > 0)
				{
					num3++;
					num2--;
				}
				for (int i = 0; i < num3; i++)
				{
					list.Add(race);
				}
			}
			__result = list;
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "BalancedCaravans";

		public const string PLUGIN_NAME = "BalancedCaravans";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}