Decompiled source of MultifunctionalCheat v1.2.0

BepInEx/plugins/cs.HoLMod.MultifunctionalCheat.dll

Decompiled 2 days ago
using System;
using System.Diagnostics;
using System.IO;
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.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("c.HoLMod.MultifunctionalCheat")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("c.HoLMod.MultifunctionalCheat")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("63afa192-a162-4975-9059-d934f8ad4b74")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7", FrameworkDisplayName = ".NET Framework 4.7")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace MultifunctionalCheat;

[BepInPlugin("cs.HoLMod.MultifunctionalCheat.AnZhi20", "HoLMod.MultifunctionalCheat", "1.2.0")]
public class PluginMain : BaseUnityPlugin
{
	private const string CURRENT_VERSION = "1.2.0";

	public static ConfigEntry<int> 城中可招门客上限倍数;

	public static ConfigEntry<int> 城中可建民居上限倍数;

	public static ConfigEntry<int> 城中可建商铺上限倍数;

	public static ConfigEntry<int> 全角色体力上限倍数;

	public static ConfigEntry<int> 城中商铺兑换元宝上限;

	public static ConfigEntry<int> 科举人数上限;

	public static ConfigEntry<int> 最大子嗣上限;

	private void Awake()
	{
		((BaseUnityPlugin)this).Logger.LogInfo((object)"多功能修改器已加载!当前版本:1.2.0");
		((BaseUnityPlugin)this).Logger.LogInfo((object)"The multifunctional modifier has been loaded! Current version:1.2.0");
		string path = Path.Combine(Paths.ConfigPath, "cs.HoLMod.MultifunctionalCheat.AnZhi20.cfg");
		try
		{
			if (File.Exists(path))
			{
				string text = "";
				using (StreamReader streamReader = new StreamReader(path))
				{
					string text2;
					while ((text2 = streamReader.ReadLine()) != null)
					{
						if (text2.StartsWith("## 已加载版本(Loaded Version) = "))
						{
							text = text2.Substring(33).Trim();
							break;
						}
					}
				}
				if (text != "1.2.0")
				{
					((BaseUnityPlugin)this).Logger.LogInfo((object)"检测到插件版本更新至 1.2.0,正在删除旧的配置文件...");
					((BaseUnityPlugin)this).Logger.LogInfo((object)"Detected plugin version update to 1.2.0, deleting old configuration file...");
					File.Delete(path);
					((BaseUnityPlugin)this).Logger.LogInfo((object)"旧配置文件已成功删除。");
					((BaseUnityPlugin)this).Logger.LogInfo((object)"Old configuration file has been successfully deleted.");
				}
			}
		}
		catch (Exception ex)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)("读取或删除配置文件时出错: " + ex.Message));
		}
		城中可招门客上限倍数 = ((BaseUnityPlugin)this).Config.Bind<int>("倍率调整(Magnification)", "城中可招门客上限倍数(CityMaxRecruitableCustomersMultiplier)", 1, "城中可招募门客的数量=家族等级*2*城中可招门客上限倍数,填1为不修改(The number of potential recruits in the city = family level * 2 * CityMaxRecruitableCustomersMultiplier , default: 1)");
		城中可建民居上限倍数 = ((BaseUnityPlugin)this).Config.Bind<int>("倍率调整(Magnification)", "城中可建民居上限倍数(CityMaxBuildableHousesMultiplier)", 1, "所有城中可购买民居数量总和=家族等级*城中可建民居上限倍数,填1为不修改(The total number of potential buildings in the city = family level * CityMaxBuildableHousesMultiplier , default: 1)");
		城中可建商铺上限倍数 = ((BaseUnityPlugin)this).Config.Bind<int>("倍率调整(Magnification)", "城中可建商铺上限倍数(CityMaxBuildableShopsMultiplier)", 1, "所有城中可建造商铺数量总和=家族等级*城中可建商铺上限倍数,填1为不修改(The total number of potential shops in the city = family level * CityMaxBuildableShopsMultiplier , default: 1)");
		全角色体力上限倍数 = ((BaseUnityPlugin)this).Config.Bind<int>("倍率调整(Magnification)", "全角色体力上限倍数(AllCharactersMaxHealthMultiplier)", 1, "全角色体力上限=默认上限*全角色体力上限倍数,填1为不修改(The maximum health of all characters = default health * AllCharactersMaxHealthMultiplier , default: 1)");
		城中商铺兑换元宝上限 = ((BaseUnityPlugin)this).Config.Bind<int>("倍率调整(Magnification)", "城中商铺兑换元宝上限倍数(CityShopExchangeGoldMultiplier)", 1, "所有城中每个商铺可兑换元宝上限=钱庄等级*10*城中商铺兑换元宝上限倍数,填1为不修改(The maximum gold exchange per shop in the city = bank level * 10 * CityShopExchangeGoldMultiplier , default: 1)");
		科举人数上限 = ((BaseUnityPlugin)this).Config.Bind<int>("倍率调整(Magnification)", "科举人数上限倍数(ExaminationNumMaxMultiplier)", 1, "科举可选人数上限=家族等级*科举人数上限倍数,填1为不修改(The maximum number of candidates for the exam = family level * ExaminationNumMaxMultiplier , default: 1)");
		最大子嗣上限 = ((BaseUnityPlugin)this).Config.Bind<int>("倍率调整(Magnification)", "最大子嗣上限倍数(MaxOffspringNumMultiplier)", 1, "每个女性可以生的子嗣上限=1(或2)*最大子嗣上限倍数,填1为不修改(The maximum number of children that each woman can have = 1(or 2) * MaxOffspringNumMultiplier , default: 1)");
		((BaseUnityPlugin)this).Config.Bind<string>("内部配置(Internal Settings)", "已加载版本(Loaded Version)", "1.2.0", "用于跟踪插件版本,请勿手动修改");
		((BaseUnityPlugin)this).Config.Save();
		Harmony.CreateAndPatchAll(typeof(PluginMain), (string)null);
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "MenkeNumMax")]
	public static bool MenkeNumMax(FormulaData __instance, ref int __result)
	{
		__result = int.Parse(Mainload.FamilyData[2]) * 2 * 城中可招门客上限倍数.Value;
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "MinjuNumMaxPerCity")]
	public static bool MinjuNumMaxPerCity(FormulaData __instance, ref int __result)
	{
		__result = int.Parse(Mainload.FamilyData[2]) * 城中可建民居上限倍数.Value;
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "ShopNumMaxPerCity")]
	public static bool ShopNumMaxPerCity(FormulaData __instance, ref int __result)
	{
		__result = int.Parse(Mainload.FamilyData[2]) * 城中可建商铺上限倍数.Value;
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "GetTiliMax")]
	public static bool GetTiliMax(FormulaData __instance, ref int __result, ref int OldNum)
	{
		int num = ((OldNum <= 30) ? OldNum : ((OldNum <= 30 || OldNum > 50) ? (10 + Mathf.FloorToInt((float)(50 - OldNum) / 10f) * 2) : (60 - OldNum)));
		if (num <= 0)
		{
			num = 2;
		}
		__result = num * 全角色体力上限倍数.Value;
		return false;
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(H_MinJuPanelA), "OnEnableData")]
	public static void H_MinJuPanelA_OnEnableData(H_MinJuPanelA __instance)
	{
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "YunBaoToCoinsNum")]
	public static bool YunBaoToCoinsNum(FormulaData __instance, ref int __result, ref int ShopLv)
	{
		__result = ShopLv * 10 * 城中商铺兑换元宝上限.Value;
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "GetCanKejuNumMax")]
	public static bool GetCanKejuNumMax(FormulaData __instance, ref int __result)
	{
		__result = int.Parse(Mainload.FamilyData[2]) * 科举人数上限.Value;
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "GetChildMax")]
	public static bool GetChildMax(FormulaData __instance, ref int __result, ref string MemberID)
	{
		int num = 9;
		if (int.TryParse(MemberID.Substring(MemberID.Length - 1, 1), out var result))
		{
			num = result % 10;
		}
		int num2 = ((num != 0 && num != 1 && num != 2 && num != 3 && num != 4) ? 1 : 2);
		__result = num2 * 最大子嗣上限.Value;
		return false;
	}
}