Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of DiscountFix v1.0.5
plugins/yazirushi-DiscountFix/DiscountFix.dll
Decompiled 6 months agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; 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("DiscountFix")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("DiscountFix")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("2695e571-6b44-43ad-9520-ff66c3505a41")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace DiscountFix; [BepInPlugin("yazirushi.Discountfix", "Discount Fix", "1.0.4")] public class DiscountFix : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("yazirushi.Discountfix"); internal static ManualLogSource mls; public static ConfigEntry<int> MaxDiscountRate; public static ConfigEntry<int> DiscountPerPlayer; public static ConfigEntry<bool> EnableLogging; private void Awake() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown MaxDiscountRate = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "MaxDiscountRate(%)", 90, new ConfigDescription("割引の上限(%)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>())); DiscountPerPlayer = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "DiscountPerPlayer(%)", 10, "一人当たりの割引率(%)"); EnableLogging = ((BaseUnityPlugin)this).Config.Bind<bool>("ConsoleLog", "EnableLogging", false, "ログの有効化"); mls = ((BaseUnityPlugin)this).Logger; mls.LogInfo((object)"\n\n ▓▓▅▄ ▄ \n ▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ \n █ █▀▀▅ ▀█▀▀ ▅▀▀▅▒ ▅▀▀▅ ▅▀▀▅ █▒ █▒ █▄ █▒ ▀█▀▀▒ █▀▀▀ ▀█▀▀ █▒▄█▒ █ \n █ █▒ █▒ █▒ ▀▅▅▒ █▒ █▒ █▒ █▒ █▒ █▀▅█▒ █▒ █▀▀▒ █▒ █▀▒ █ \n █ █▄▅▀▒ ▄█▄▄ ▅▄▄█▒ ▀▅▅▀▒ ▀▅▅▀▒ ▀▅▅▀▒ █▒▀█▒ █▒ █▒ ▄█▄▄ █▒▀▅▒ █ \n ▄█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ \n █ \n ▀▅▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ \n ● ● \n"); mls.LogInfo((object)"DiscountFixが起動しました!"); mls.LogInfo((object)$"DiscountFix:Config:MaxDiscountRate = {MaxDiscountRate.Value}%"); mls.LogInfo((object)$"DiscountFix:Config:DiscountPerPlayer = {DiscountPerPlayer.Value}%"); mls.LogInfo((object)$"DiscountFix:Config:EnableLogging = {EnableLogging.Value}"); harmony.PatchAll(); } } [HarmonyPatch(typeof(ShopManager), "UpgradeValueGet")] public class UpgradeValuePatch { private static readonly FieldInfo fieldUpgrade = AccessTools.Field(typeof(ShopManager), "upgradeValueIncrease"); private static bool Prefix(ref float __result, float _value, Item item, ShopManager __instance) { int count = GameDirector.instance.PlayerList.Count; float num = (float)fieldUpgrade.GetValue(__instance); int itemsUpgradesPurchased = StatsManager.instance.GetItemsUpgradesPurchased(((Object)item).name); count = Mathf.Max(count, 1); float num2 = (float)DiscountFix.MaxDiscountRate.Value / 100f; float num3 = (float)DiscountFix.DiscountPerPlayer.Value / 100f; float num4 = num3 * (float)(count - 1); num4 = Mathf.Min(num4, num2); float num5 = _value * (1f - num4); float num6 = num * (float)itemsUpgradesPurchased; float num7 = num5 * num6; float num8 = num5 + num7; __result = Mathf.Ceil(num8); __result = Mathf.Max(__result, 1f); if (DiscountFix.EnableLogging.Value) { DiscountFix.mls.LogInfo((object)("\nItem: " + (item?.itemName ?? "null") + " \n" + $"Original: {_value} \n" + $"Discounted: {num5} \n" + $"Increase: {num7} \n" + $"Final: {__result} \n" + $"Players: {count} \n" + $"Purchases: {itemsUpgradesPurchased} \n" + $"DiscountRate: {num4 * 100f:F1}% \n" + $"IncreaseRate: {num6:F2} \n")); } return false; } } [HarmonyPatch(typeof(ShopManager), "HealthPackValueGet")] public class HealthPackValuePatch { private static readonly FieldInfo fieldHealthPack = AccessTools.Field(typeof(ShopManager), "healthPackValueIncrease"); private static bool Prefix(ref float __result, float _value, ShopManager __instance) { int count = GameDirector.instance.PlayerList.Count; float num = (float)fieldHealthPack.GetValue(__instance); int num2 = Mathf.Min(RunManager.instance.levelsCompleted, 15); count = Mathf.Max(count, 1); float num3 = (float)DiscountFix.MaxDiscountRate.Value / 100f; float num4 = (float)DiscountFix.DiscountPerPlayer.Value / 100f; float num5 = num4 * (float)(count - 1); num5 = Mathf.Min(num5, num3); float num6 = _value * (1f - num5); float num7 = num * (float)num2; float num8 = num6 * num7; float num9 = num6 + num8; __result = Mathf.Ceil(num9); __result = Mathf.Max(__result, 1f); if (DiscountFix.EnableLogging.Value) { DiscountFix.mls.LogInfo((object)("\nItem: HealthPack \n" + $"Original: {_value} \n" + $"Discounted: {num6} \n" + $"Increase: {num8} \n" + $"Final: {__result} \n" + $"Players: {count} \n" + $"Levels: {num2} \n" + $"DiscountRate: {num5 * 100f:F1}% \n" + $"IncreaseRate: {num7:F2} \n")); } return false; } }