Decompiled source of BetterLibrary v1.0.0

BepInEx/plugins/BetterLibrary.dll

Decompiled 3 weeks ago
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;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("BetterLibrary")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BetterLibrary")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("92b2bc11-f873-45be-b55a-cb86a4c259c1")]
[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 BetterLibrary;

[BepInPlugin("cc.lymone.HoL.BetterLibrary", "BetterLibrary", "1.0.0")]
public class BetterLibrary : BaseUnityPlugin
{
	private static ConfigEntry<bool> is_Book_Unbreakable;

	private static ConfigEntry<int> multi_Book_Storage;

	private void Start()
	{
		is_Book_Unbreakable = ((BaseUnityPlugin)this).Config.Bind<bool>("配置 Config", "书本不损坏 Is book unbreakable", true, "");
		multi_Book_Storage = ((BaseUnityPlugin)this).Config.Bind<int>("配置 Config", "藏书阁空间倍率 Library capacity multiplier", 3, "");
		Harmony.CreateAndPatchAll(typeof(BetterLibrary), (string)null);
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(FormulaData), "BackBook_MemberNow")]
	public static bool Unbreakable_Book_Prefix(string BookID, int FudiIndex, string BuildID, int memberIndex, bool isDaiZou)
	{
		if (BuildID != "null")
		{
			int num = 1;
			if (isDaiZou)
			{
				num = 0;
			}
			else if (!is_Book_Unbreakable.Value && TrueRandom.GetRanom(100) < 20)
			{
				Mainload.Event_Tip.Add(new List<string>
				{
					"0",
					"null",
					AllText.Text_UIA[1312][Mainload.SetData[4]].Replace("@", Mainload.Member_now[memberIndex][4].Split(new char[1] { '|' })[0]).Replace("$", AllText.Text_AllProp[int.Parse(BookID)][Mainload.SetData[4]]),
					"0"
				});
				num = 0;
			}
			int num2 = FormulaData.BooksClass(int.Parse(BookID));
			for (int i = 0; i < Mainload.CangShuGeData_Now[FudiIndex].Count; i++)
			{
				if (!(Mainload.CangShuGeData_Now[FudiIndex][i].Split(new char[1] { '|' })[0] == BuildID))
				{
					continue;
				}
				string[] array = Mainload.CangShuGeData_Now[FudiIndex][i].Split(new char[1] { '|' });
				string[] array2 = array[num2].Split(new char[1] { '~' });
				string text = "null";
				for (int j = 0; j < array2.Length; j++)
				{
					if (array2[j].Split(new char[1] { '@' })[0] == BookID)
					{
						int num3 = int.Parse(array2[j].Split(new char[1] { '@' })[1]) + num;
						int num4 = int.Parse(array2[j].Split(new char[1] { '@' })[2]) - 1;
						if (num3 + num4 > 0)
						{
							text = ((!(text == "null")) ? (text + "~" + BookID + "@" + num3 + "@" + num4) : (BookID + "@" + num3 + "@" + num4));
						}
					}
					else
					{
						text = ((!(text == "null")) ? (text + "~" + array2[j]) : array2[j]);
					}
				}
				string text2 = "null";
				for (int k = 0; k < array.Length; k++)
				{
					text2 = ((num2 != k) ? ((!(text2 == "null")) ? (text2 + "|" + array[k]) : array[k]) : ((!(text2 == "null")) ? (text2 + "|" + text) : text));
				}
				Mainload.CangShuGeData_Now[FudiIndex][i] = text2;
				break;
			}
		}
		return false;
	}

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