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
};
}
}