Decompiled source of BossController v1.0.0

plugins/BossControll.dll

Decompiled 8 months ago
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
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("AntiRush")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AntiRush")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("d2dc9ef5-4589-4ad0-a18c-6e5054a0a946")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace BossControll;

[BepInPlugin("EnderBombz_Holanda.AntiRush", "BossControll", "1.0.0")]
[BepInProcess("valheim.exe")]
public class AntiRush : BaseUnityPlugin
{
	public class ControlBossConfig
	{
		public string NameTranslate { get; set; }

		public int Days { get; set; }

		public string PlaceName { get; set; }

		public int ItemAmount { get; set; }

		public ControlBossConfig()
		{
		}

		public ControlBossConfig(string name)
		{
			PlaceName = name;
		}
	}

	[HarmonyPatch(typeof(OfferingBowl), "Interact")]
	public static class AntiRushInteraction_patch
	{
		private static bool Prefix(OfferingBowl __instance, Humanoid user)
		{
			foreach (ControlBossConfig boss in bossList)
			{
				if (__instance.m_name == boss.PlaceName && boss.ItemAmount > 0)
				{
					__instance.m_bossItems = boss.ItemAmount;
				}
			}
			currentDay = EnvMan.instance.GetDay(ZNet.instance.GetTimeSeconds());
			Debug.Log((object)"Interact debugging...");
			Debug.Log((object)$"Current day is: {currentDay}");
			Debug.Log((object)("Current boss is: " + Localization.instance.Localize(__instance.m_name)));
			Debug.Log((object)("Current boss altar name: " + __instance.m_name));
			return CheckBossAccess(__instance.m_name, __instance, user);
		}
	}

	[HarmonyPatch(typeof(OfferingBowl), "UseItem")]
	public static class AntiRushUseItem_patch
	{
		private static bool Prefix(OfferingBowl __instance, Humanoid user, ItemData item)
		{
			foreach (ControlBossConfig boss in bossList)
			{
				if (__instance.m_name == boss.PlaceName && boss.ItemAmount > 0)
				{
					__instance.m_bossItems = boss.ItemAmount;
				}
			}
			currentDay = EnvMan.instance.GetDay(ZNet.instance.GetTimeSeconds());
			Debug.Log((object)"UseItem debugging...");
			Debug.Log((object)$"{currentDay}<{realDay} && {__instance.m_name}=={bosses[0]}?");
			return !CheckBossAccess(__instance.m_name, __instance, user);
		}
	}

	private readonly Harmony harmony = new Harmony("EnderBombz_Holanda.BossControll");

	public static int realDay = 31;

	public static int currentDay;

	public static string[] bosses = new string[5] { "$piece_offerbowl_eikthyr", "$prop_eldersummoningbowl_name", "$piece_offerbowl_bonemass", "$prop_dragonsummoningbowl_name", "$piece_offerbowl_yagluth" };

	public static ConfigEntry<bool> Real;

	public static ConfigEntry<int> EikthyrInvokeDay;

	public static ConfigEntry<int> EikthyrItemAmount;

	public static ConfigEntry<int> ElderInvokeDay;

	public static ConfigEntry<int> ElderItemAmount;

	public static ConfigEntry<int> BoneMassInvokeDay;

	public static ConfigEntry<int> BoneMassItemAmount;

	public static ConfigEntry<int> ModerInvokeDay;

	public static ConfigEntry<int> YagluthInvokeDay;

	public static List<ControlBossConfig> bossList;

	private void Awake()
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected O, but got Unknown
		ConfigFile val = new ConfigFile(Path.Combine(Paths.ConfigPath, "bossControll_config.cfg"), true);
		Real = val.Bind<bool>("Real", "realLife", true, "This option changes the calculation method, one day in real life, there are 31 days in the game, turn false this option if you want the normal game days.'");
		EikthyrInvokeDay = val.Bind<int>("EikthyrInvokeDay", "spawnDay", 1, "Eikthyr day to be invoked ");
		EikthyrItemAmount = val.Bind<int>("EikthyrItemAmount", "amountItem", 2, "Amout of items to invoke");
		ElderInvokeDay = val.Bind<int>("ElderInvokeDay", "spawnDay", 4, "Elder day to be invoked ");
		ElderItemAmount = val.Bind<int>("ElderItemAmount", "amountItem", 3, "Amout of items to invoke");
		BoneMassInvokeDay = val.Bind<int>("BoneMassInvokeDay", "spawnDay", 10, "BoneMass day to be invoked");
		BoneMassItemAmount = val.Bind<int>("BoneMassItemAmount", "amountItem", 3, "Amout of items to invoke");
		ModerInvokeDay = val.Bind<int>("ModerInvokeDay", "spawnDay", 20, "Moder day to be invoked");
		YagluthInvokeDay = val.Bind<int>("YagluthInvokeDay", "spawnDay", 30, "Yagluth day to be invoked ");
		bossList = new List<ControlBossConfig>
		{
			new ControlBossConfig
			{
				NameTranslate = "Eikthyr",
				PlaceName = "$piece_offerbowl_eikthyr",
				Days = EikthyrInvokeDay.Value,
				ItemAmount = EikthyrItemAmount.Value
			},
			new ControlBossConfig
			{
				NameTranslate = "Ancião",
				PlaceName = "$prop_eldersummoningbowl_name",
				Days = ElderInvokeDay.Value,
				ItemAmount = ElderItemAmount.Value
			},
			new ControlBossConfig
			{
				NameTranslate = "Massa Óssea",
				PlaceName = "$piece_offerbowl_bonemass",
				Days = BoneMassInvokeDay.Value,
				ItemAmount = BoneMassItemAmount.Value
			},
			new ControlBossConfig
			{
				NameTranslate = "Moder",
				PlaceName = "$prop_dragonsummoningbowl_name",
				Days = ModerInvokeDay.Value,
				ItemAmount = 0
			},
			new ControlBossConfig
			{
				NameTranslate = "Yagluth",
				PlaceName = "$piece_offerbowl_yagluth",
				Days = YagluthInvokeDay.Value,
				ItemAmount = 0
			}
		};
		harmony.PatchAll();
	}

	public static bool CheckBossAccess(string bossPlace, OfferingBowl __instance, Humanoid user)
	{
		foreach (ControlBossConfig boss in bossList)
		{
			if (Real.Value)
			{
				int num = realDay * boss.Days;
				if (currentDay < num && bossPlace == boss.PlaceName)
				{
					Debug.Log((object)"Yes he is entering in exeption");
					((Character)user).Message((MessageType)2, $"O {boss.NameTranslate} só pode ser invocado em {currentDay} / {num} dias!", 0, (Sprite)null);
					return true;
				}
			}
			else if (currentDay < boss.Days && bossPlace == boss.PlaceName)
			{
				Debug.Log((object)"Yes he is entering in exeption");
				((Character)user).Message((MessageType)2, $"O {boss.NameTranslate} só pode ser invocado em {currentDay} / {boss.Days} dias!", 0, (Sprite)null);
				return true;
			}
		}
		return false;
	}
}