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