Decompiled source of MultitudeOfServants v1.3.0

BepInEx/plugins/MultitudeOfServants.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("MultitudeOfServants")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MultitudeOfServants")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("a837ba19-4d7f-4495-afc5-0ebf26657e9b")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace MultitudeOfServants;

[BepInPlugin("cc.lymone.HoL.MultitudeOfServants", "MultitudeOfServants", "1.3.0")]
public class MultitudeOfServants : BaseUnityPlugin
{
	[CompilerGenerated]
	private sealed class <Fast_ZhaoPuRen_Multi_PuRenMax_Patch>d__7 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public FastZhaoPuPanel __instance;

		private int <SceneIndex>5__2;

		private int <a>5__3;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <Fast_ZhaoPuRen_Multi_PuRenMax_Patch>d__7(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<SceneIndex>5__2 = int.Parse(Mainload.SceneID.Split(new char[1] { '|' })[1]);
				<a>5__3 = 0;
				goto IL_03a5;
			case 1:
				<>1__state = -1;
				goto IL_02e6;
			case 2:
				{
					<>1__state = -1;
					goto IL_02e6;
				}
				IL_03a5:
				if (<a>5__3 < Mainload.BuildInto_m.Count)
				{
					if (Mainload.AllBuilddata[int.Parse(Mainload.BuildInto_m[<a>5__3][1])][5] == "10" && int.Parse(Mainload.BuildInto_m[<a>5__3][6]) >= 0)
					{
						int num = FormulaData.PuNum_PuFang(int.Parse(Mainload.BuildInto_m[<a>5__3][1]), int.Parse(Mainload.BuildInto_m[<a>5__3][2])) - int.Parse(Mainload.BuildInto_m[<a>5__3][3]);
						if ((float)Mathf.CeilToInt(float.Parse(Mainload.FamilyData[2]) / 5f) * 200f * (float)PuRenMaxConfig.Value > (float)int.Parse(Mainload.Fudi_now[<SceneIndex>5__2][2]))
						{
							if (num > 0)
							{
								Mainload.Fudi_now[<SceneIndex>5__2][2] = (int.Parse(Mainload.Fudi_now[<SceneIndex>5__2][2]) + num).ToString();
								Mainload.Fudi_now[<SceneIndex>5__2][3] = (int.Parse(Mainload.Fudi_now[<SceneIndex>5__2][3]) - num).ToString();
								Mainload.BuildInto_m[<a>5__3][3] = (int.Parse(Mainload.BuildInto_m[<a>5__3][3]) + num).ToString();
								Mainload.PLNQCanShowNow += num;
								if (Mainload.PLNQCanShowNow >= Mainload.MemberQShowNum[0])
								{
									Mainload.PLNQCanShowNow = Mainload.MemberQShowNum[0];
								}
								FormulaData.TaskOrder_AddNum(39, num);
							}
							<>2__current = null;
							<>1__state = 1;
							return true;
						}
						Mainload.Tip_Show.Add(new List<string>
						{
							"1",
							AllText.Text_TipShow[315][Mainload.SetData[4]]
						});
						((MonoBehaviour)__instance).StopCoroutine("OnEnableData");
						((MonoBehaviour)__instance).Invoke("EndShow", 0.5f);
					}
					else if ((<a>5__3 + 1) % 50 == 0)
					{
						<>2__current = null;
						<>1__state = 2;
						return true;
					}
					goto IL_02e6;
				}
				return false;
				IL_02e6:
				if (<a>5__3 >= Mainload.BuildInto_m.Count - 1)
				{
					Mainload.Tip_Show.Add(new List<string>
					{
						"0",
						AllText.Text_TipShow[314][Mainload.SetData[4]]
					});
					((MonoBehaviour)__instance).StopCoroutine("OnEnableData");
					((MonoBehaviour)__instance).Invoke("EndShow", 0.5f);
				}
				if (Input.GetKeyDown(Mainload.FastKey[0]))
				{
					((MonoBehaviour)__instance).StopCoroutine("OnEnableData");
					((MonoBehaviour)__instance).Invoke("EndShow", 0.5f);
				}
				<a>5__3++;
				goto IL_03a5;
			}
		}

		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 static ConfigEntry<int> XiangFangConfig;

	private static ConfigEntry<float> GongZiConfig;

	private static ConfigEntry<int> PuRenMaxConfig;

	private void Start()
	{
		XiangFangConfig = ((BaseUnityPlugin)this).Config.Bind<int>("配置 Config", "厢房居住仆人倍率 Servant Quarters Capacity Multiplier", 10, "");
		GongZiConfig = ((BaseUnityPlugin)this).Config.Bind<float>("配置 Config", "仆人工资倍率 Servant Wage Multiplier", 1f, "");
		PuRenMaxConfig = ((BaseUnityPlugin)this).Config.Bind<int>("配置 Config", "仆人上限倍率 Servant Cap Multiplier", 1, "");
		Harmony.CreateAndPatchAll(typeof(MultitudeOfServants), (string)null);
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(FormulaData), "CostPuRen")]
	public static void Multi_PuRen_Cost(ref int __result)
	{
		__result = (int)((float)__result * GongZiConfig.Value);
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "PuNum_PuFang")]
	public static bool Multi_XiangFang_PuNum(ref int Lv)
	{
		Lv *= XiangFangConfig.Value;
		return true;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormuAct), "ZhaoPuRen")]
	public static bool ZhaoPuRen_Multi_PuRenMax_Patch(int RenNum, ref string __result)
	{
		string text = AllText.Text_UIA[703][Mainload.SetData[4]];
		int index = int.Parse(Mainload.SceneID.Split(new char[1] { '|' })[1]);
		if ((float)TrueRandom.GetRanom(100) < (float)Mathf.CeilToInt(float.Parse(Mainload.FamilyData[2]) / 5f) * 200f * (float)PuRenMaxConfig.Value - (float)int.Parse(Mainload.Fudi_now[index][2]))
		{
			Mainload.Fudi_now[index][2] = (int.Parse(Mainload.Fudi_now[index][2]) + RenNum).ToString();
			Mainload.Fudi_now[index][3] = (int.Parse(Mainload.Fudi_now[index][3]) - RenNum).ToString();
			Mainload.BuildInto_m[Mainload.BuildIndex_click][3] = (int.Parse(Mainload.BuildInto_m[Mainload.BuildIndex_click][3]) + RenNum).ToString();
			Mainload.PLNQCanShowNow += RenNum;
			if (Mainload.PLNQCanShowNow >= Mainload.MemberQShowNum[0])
			{
				Mainload.PLNQCanShowNow = Mainload.MemberQShowNum[0];
			}
			text = AllText.Text_UIA[704][Mainload.SetData[4]].Replace("@", RenNum.ToString());
			FormulaData.TaskOrder_AddNum(39, RenNum);
			int num = 0;
			for (int i = 0; i < Mainload.Fudi_now.Count; i++)
			{
				num += int.Parse(Mainload.Fudi_now[i][2]);
			}
			Mainload.AchDataUpdate.Add(new List<int> { 23, num });
		}
		Mainload.isTimeGoDay = true;
		__result = text;
		return false;
	}

	[IteratorStateMachine(typeof(<Fast_ZhaoPuRen_Multi_PuRenMax_Patch>d__7))]
	[HarmonyPostfix]
	[HarmonyPatch(typeof(FastZhaoPuPanel), "OnEnableData")]
	public static IEnumerator Fast_ZhaoPuRen_Multi_PuRenMax_Patch(IEnumerator result, FastZhaoPuPanel __instance)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <Fast_ZhaoPuRen_Multi_PuRenMax_Patch>d__7(0)
		{
			__instance = __instance
		};
	}
}