using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
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("BetterFishTrap")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BetterFishTrap")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("6cfb9cc5-bbc8-482f-827c-d96be8d6de06")]
[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")]
[BepInPlugin("com.lan.betterFishTrap", "更好用的鱼笼(可配置)", "1.1.0")]
public class RemoveFishingZoneRestrictions : BaseUnityPlugin
{
public static ConfigEntry<int> specialFishProbability;
public static ConfigEntry<int> commonFishProbability;
public static ConfigEntry<int> junkItemProbability;
private void Awake()
{
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Expected O, but got Unknown
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Expected O, but got Unknown
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Expected O, but got Unknown
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_0117: Expected O, but got Unknown
ConfigDescription val = new ConfigDescription("捕获特殊鱼类的概率(0-100) --Probability to catch special fish (0-100)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>());
specialFishProbability = ((BaseUnityPlugin)this).Config.Bind<int>("概率设置 --Probability Settings", "特殊鱼类捕获概率 --Special Fish Probability", 15, val);
ConfigDescription val2 = new ConfigDescription("捕获普通鱼类的概率(0-100) --Probability to catch common fish (0-100)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>());
commonFishProbability = ((BaseUnityPlugin)this).Config.Bind<int>("概率设置 --Probability Settings", "常规鱼类捕获概率 --Common Fish Probability", 70, val2);
ConfigDescription val3 = new ConfigDescription("捕获低价值物品的概率(0-100) --Probability to catch low-value items (0-100)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>());
junkItemProbability = ((BaseUnityPlugin)this).Config.Bind<int>("概率设置 --Probability Settings", "低价值物品捕获概率 --Low-value Items Probability", 15, val3);
if (specialFishProbability.Value + commonFishProbability.Value + junkItemProbability.Value != 100)
{
specialFishProbability.Value = 15;
commonFishProbability.Value = 70;
junkItemProbability.Value = 15;
Debug.LogError((object)"概率设置有误,已使用初始概率:普通鱼类:70%,特殊鱼类:15%,低价值物品:15%");
Debug.LogError((object)"Invalid probability configuration. Resetting to defaults: Common Fish: 70%, Special Fish: 15%, Low-value Items: 15%");
}
Harmony val4 = new Harmony("com.lan.betterFishTrap");
val4.PatchAll();
Debug.LogWarning((object)"更好用的鱼笼加载成功 --作者:她说缝上都不给我");
}
}
[HarmonyPatch(typeof(BlockFishTrap), "CheckFish")]
public static class BlockFishTrap_CheckFish_Patch
{
private static bool Prefix(BlockFishTrap __instance)
{
int value = RemoveFishingZoneRestrictions.commonFishProbability.Value;
int num = value + RemoveFishingZoneRestrictions.specialFishProbability.Value;
int num2 = num + RemoveFishingZoneRestrictions.junkItemProbability.Value;
List<ItemSO> list = new List<ItemSO>();
FishingZone[] array = Resources.FindObjectsOfTypeAll<FishingZone>();
List<ItemSO> list2 = new List<ItemSO>();
FishingZone[] array2 = array;
foreach (FishingZone val in array2)
{
foreach (FishType fish in val.fishes)
{
if (!fish.itemSO.itemName.Equals("junk") && !fish.itemSO.itemName.Equals("fish_trap"))
{
if (fish.itemSO.basePrice < 61)
{
list2.Add(fish.itemSO);
}
else
{
list.Add(fish.itemSO);
}
}
}
}
List<ItemSO> list3 = __instance.commonFishes.Cast<ItemSO>().ToList();
int num3 = Random.Range(0, 100);
if (num3 < value && list3.Count > 0)
{
int index = Random.Range(0, list3.Count);
__instance.currentFish.Value = list3[index].id;
}
else if (num3 < num && list.Count > 0)
{
int index2 = Random.Range(0, list.Count);
__instance.currentFish.Value = list[index2].id;
}
else if (num3 < num2 && list2.Count > 0)
{
int index3 = Random.Range(0, list2.Count);
__instance.currentFish.Value = list2[index3].id;
}
return false;
}
}