Decompiled source of LethalDeaths v1.0.3

LethalDeaths.dll

Decompiled 11 months ago
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 GameNetcodeStuff;
using HarmonyLib;
using LethalDeaths.Patches;
using TMPro;
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("LethalDeaths")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("LethalDeaths")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("2286a8b2-ce93-4e46-8063-5b495e3e1f57")]
[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 LethalDeaths
{
	[BepInPlugin("MythicalRev.LethalDeaths", "LethalDeaths", "1.0.3")]
	public class Plugin : BaseUnityPlugin
	{
		private const string modGUID = "MythicalRev.LethalDeaths";

		private const string modName = "LethalDeaths";

		private const string modVersion = "1.0.3";

		private readonly Harmony harmony = new Harmony("MythicalRev.LethalDeaths");

		internal static Plugin Instance;

		public static ManualLogSource mls;

		internal static int maxdeaths = 1;

		public static ConfigEntry<int> deathcountConfSF1;

		public static ConfigEntry<int> deathcountConfSF2;

		public static ConfigEntry<int> deathcountConfSF3;

		public static ConfigEntry<float> deathamountConfSF1;

		public static ConfigEntry<float> deathamountConfSF2;

		public static ConfigEntry<float> deathamountConfSF3;

		public static ConfigEntry<float> deathspeedConfSF1;

		public static ConfigEntry<float> deathspeedConfSF2;

		public static ConfigEntry<float> deathspeedConfSF3;

		public static ConfigEntry<bool> weightIncreaseToggle;

		public static ConfigEntry<bool> healthDecreaseToggle;

		public static ConfigEntry<bool> sprintAmoundDecToggle;

		private void Awake()
		{
			if ((Object)(object)Instance == (Object)null)
			{
				Instance = this;
			}
			mls = Logger.CreateLogSource("MythicalRev.LethalDeaths");
			mls.LogInfo((object)"LethalDeaths Enabled");
			harmony.PatchAll(typeof(Plugin));
			harmony.PatchAll(typeof(PlayerControllerBPatch));
			harmony.PatchAll(typeof(StartOfRoundPatch));
			harmony.PatchAll(typeof(SaveFileUISlotPatch));
			harmony.PatchAll(typeof(DeleteFilePatch));
			mls.LogInfo((object)"LethalDeaths Patched");
			setupConfigs();
		}

		private void setupConfigs()
		{
			weightIncreaseToggle = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Weight Increase Enabled", true, "Does Your Weight Increase on Death");
			healthDecreaseToggle = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Health Decrease Enabled", true, "Does Your Health Decrease on Death");
			sprintAmoundDecToggle = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Sprint Decrease Enabled", true, "Does Your Sprint Decrease on Death");
			deathcountConfSF1 = ((BaseUnityPlugin)this).Config.Bind<int>("Save Data", "Death Value File 1", 10, "Number Of Deaths Left, MIN 10 - MAX 1");
			deathcountConfSF2 = ((BaseUnityPlugin)this).Config.Bind<int>("Save Data", "Death Value File 2", 10, "Number Of Deaths Left, MIN 10 - MAX 1");
			deathcountConfSF3 = ((BaseUnityPlugin)this).Config.Bind<int>("Save Data", "Death Value File 3", 10, "Number Of Deaths Left, MIN 10 - MAX 1");
			deathamountConfSF1 = ((BaseUnityPlugin)this).Config.Bind<float>("Save Data", "Death Amount File 1", 0f, "Death Count Number, Min 0 - Max 100");
			deathamountConfSF2 = ((BaseUnityPlugin)this).Config.Bind<float>("Save Data", "Death Amount File 2", 0f, "Death Count Number, Min 0 - Max 100");
			deathamountConfSF3 = ((BaseUnityPlugin)this).Config.Bind<float>("Save Data", "Death Amount File 3", 0f, "Death Count Number, Min 0 - Max 100");
			deathspeedConfSF1 = ((BaseUnityPlugin)this).Config.Bind<float>("Save Data", "Death Amount File Sprint 1", 1f, "Death Count Number Sprint, Min 1 - Max 0");
			deathspeedConfSF2 = ((BaseUnityPlugin)this).Config.Bind<float>("Save Data", "Death Amount File Sprint 2", 1f, "Death Count Number Sprint, Min 1 - Max 0");
			deathspeedConfSF3 = ((BaseUnityPlugin)this).Config.Bind<float>("Save Data", "Death Amount File Sprint 3", 1f, "Death Count Number Sprint, Min 1 - Max 1000");
		}
	}
}
namespace LethalDeaths.Patches
{
	[HarmonyPatch(typeof(DeleteFileButton))]
	internal class DeleteFilePatch
	{
		[HarmonyPatch("DeleteFile")]
		[HarmonyPostfix]
		public static void resetDeathOnFileDel(ref int ___fileToDelete)
		{
			if (___fileToDelete == 0)
			{
				Plugin.deathcountConfSF1.Value = 10;
				Plugin.deathamountConfSF1.Value = 0f;
				Plugin.deathspeedConfSF1.Value = 1f;
			}
			else if (___fileToDelete == 1)
			{
				Plugin.deathcountConfSF2.Value = 10;
				Plugin.deathamountConfSF2.Value = 0f;
				Plugin.deathspeedConfSF2.Value = 1f;
			}
			else if (___fileToDelete == 2)
			{
				Plugin.deathcountConfSF3.Value = 10;
				Plugin.deathamountConfSF3.Value = 0f;
				Plugin.deathspeedConfSF3.Value = 1f;
			}
		}
	}
	[HarmonyPatch(typeof(SaveFileUISlot))]
	internal class SaveFileUISlotPatch
	{
		[HarmonyPatch("OnEnable")]
		[HarmonyPostfix]
		public static void setSaveInfoText(ref TextMeshProUGUI ___fileStatsText, ref string ___fileString)
		{
			if (ES3.FileExists(___fileString))
			{
				int num = ES3.Load<int>("GroupCredits", ___fileString, 30);
				int num2 = ES3.Load<int>("Stats_DaysSpent", ___fileString, 0);
				((TMP_Text)___fileStatsText).fontSize = 8f;
				if (___fileString == "LCSaveFile1")
				{
					((TMP_Text)___fileStatsText).text = $"${num}\nDays: {num2}\nHP: {Plugin.deathcountConfSF1.Value * 10}";
				}
				else if (___fileString == "LCSaveFile2")
				{
					((TMP_Text)___fileStatsText).text = $"${num}\nDays: {num2}\nHP: {Plugin.deathcountConfSF2.Value * 10}";
				}
				else if (___fileString == "LCSaveFile3")
				{
					((TMP_Text)___fileStatsText).text = $"${num}\nDays: {num2}\nHP: {Plugin.deathcountConfSF3.Value * 10}";
				}
				else
				{
					Plugin.mls.LogError((object)"No SaveData Found");
				}
			}
			else
			{
				((TMP_Text)___fileStatsText).text = "";
			}
		}
	}
	[HarmonyPatch(typeof(PlayerControllerB))]
	internal class PlayerControllerBPatch
	{
		internal static bool debounce = true;

		[HarmonyPatch("KillPlayer")]
		[HarmonyPostfix]
		public static void setDeathCountOnDeath()
		{
			GameNetworkManager instance = GameNetworkManager.Instance;
			int saveFileNum = instance.saveFileNum;
			if (debounce)
			{
				return;
			}
			debounce = true;
			switch (saveFileNum)
			{
			case 0:
				if (Plugin.sprintAmoundDecToggle.Value)
				{
					ConfigEntry<float> deathspeedConfSF2 = Plugin.deathspeedConfSF1;
					deathspeedConfSF2.Value -= 0.1f;
				}
				if (Plugin.weightIncreaseToggle.Value)
				{
					ConfigEntry<float> deathamountConfSF2 = Plugin.deathamountConfSF1;
					deathamountConfSF2.Value += 0.1f;
				}
				if (Plugin.healthDecreaseToggle.Value)
				{
					if (Plugin.deathcountConfSF1.Value != 0)
					{
						ConfigEntry<int> deathcountConfSF2 = Plugin.deathcountConfSF1;
						deathcountConfSF2.Value -= 1;
					}
					else
					{
						Plugin.deathcountConfSF1.Value = Plugin.maxdeaths;
					}
				}
				break;
			case 1:
				if (Plugin.sprintAmoundDecToggle.Value)
				{
					ConfigEntry<float> deathspeedConfSF3 = Plugin.deathspeedConfSF2;
					deathspeedConfSF3.Value -= 0.1f;
				}
				if (Plugin.weightIncreaseToggle.Value)
				{
					ConfigEntry<float> deathamountConfSF3 = Plugin.deathamountConfSF2;
					deathamountConfSF3.Value += 0.1f;
				}
				if (Plugin.healthDecreaseToggle.Value)
				{
					if (Plugin.deathcountConfSF2.Value != 0)
					{
						ConfigEntry<int> deathcountConfSF3 = Plugin.deathcountConfSF2;
						deathcountConfSF3.Value -= 1;
					}
					else
					{
						Plugin.deathcountConfSF2.Value = Plugin.maxdeaths;
					}
				}
				break;
			case 2:
				if (Plugin.sprintAmoundDecToggle.Value)
				{
					ConfigEntry<float> deathspeedConfSF = Plugin.deathspeedConfSF3;
					deathspeedConfSF.Value -= 0.1f;
				}
				if (Plugin.weightIncreaseToggle.Value)
				{
					ConfigEntry<float> deathamountConfSF = Plugin.deathamountConfSF3;
					deathamountConfSF.Value += 0.1f;
				}
				if (Plugin.healthDecreaseToggle.Value)
				{
					if (Plugin.deathcountConfSF3.Value != 0)
					{
						ConfigEntry<int> deathcountConfSF = Plugin.deathcountConfSF3;
						deathcountConfSF.Value -= 1;
					}
					else
					{
						Plugin.deathcountConfSF3.Value = Plugin.maxdeaths;
					}
				}
				break;
			}
		}

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		public static void maxSprintSet(ref float ___sprintMeter)
		{
			GameNetworkManager instance = GameNetworkManager.Instance;
			switch (instance.saveFileNum)
			{
			case 0:
				if (___sprintMeter > Plugin.deathspeedConfSF1.Value)
				{
					___sprintMeter = Plugin.deathspeedConfSF1.Value;
				}
				break;
			case 1:
				if (___sprintMeter > Plugin.deathspeedConfSF2.Value)
				{
					___sprintMeter = Plugin.deathspeedConfSF2.Value;
				}
				break;
			case 2:
				if (___sprintMeter > Plugin.deathspeedConfSF3.Value)
				{
					___sprintMeter = Plugin.deathspeedConfSF3.Value;
				}
				break;
			}
		}
	}
	[HarmonyPatch(typeof(StartOfRound))]
	internal class StartOfRoundPatch
	{
		[HarmonyPatch("StartGame")]
		[HarmonyPostfix]
		public static void updatePlayerStartHealth()
		{
			GameNetworkManager instance = GameNetworkManager.Instance;
			int saveFileNum = instance.saveFileNum;
			if (PlayerControllerBPatch.debounce)
			{
				PlayerControllerBPatch.debounce = false;
				switch (saveFileNum)
				{
				case 0:
				{
					PlayerControllerB localPlayerController3 = GameNetworkManager.Instance.localPlayerController;
					localPlayerController3.health = Plugin.deathcountConfSF1.Value * 10;
					localPlayerController3.carryWeight += Plugin.deathamountConfSF1.Value;
					localPlayerController3.sprintMeter = Plugin.deathspeedConfSF1.Value;
					break;
				}
				case 1:
				{
					PlayerControllerB localPlayerController2 = GameNetworkManager.Instance.localPlayerController;
					localPlayerController2.health = Plugin.deathcountConfSF2.Value * 10;
					localPlayerController2.carryWeight += Plugin.deathamountConfSF2.Value;
					localPlayerController2.sprintMeter = Plugin.deathspeedConfSF2.Value;
					break;
				}
				case 2:
				{
					PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
					localPlayerController.health = Plugin.deathcountConfSF3.Value * 10;
					localPlayerController.carryWeight += Plugin.deathamountConfSF3.Value;
					localPlayerController.sprintMeter = Plugin.deathspeedConfSF3.Value;
					break;
				}
				}
			}
		}

		[HarmonyPatch("ResetShip")]
		[HarmonyPostfix]
		public static void resetDeathCount()
		{
			GameNetworkManager instance = GameNetworkManager.Instance;
			int saveFileNum = instance.saveFileNum;
			PlayerControllerBPatch.debounce = true;
			switch (saveFileNum)
			{
			case 0:
				Plugin.deathcountConfSF1.Value = 10;
				Plugin.deathamountConfSF1.Value = 0f;
				Plugin.deathspeedConfSF1.Value = 1f;
				break;
			case 1:
				Plugin.deathcountConfSF2.Value = 10;
				Plugin.deathamountConfSF2.Value = 0f;
				Plugin.deathspeedConfSF2.Value = 1f;
				break;
			case 2:
				Plugin.deathcountConfSF3.Value = 10;
				Plugin.deathamountConfSF3.Value = 0f;
				Plugin.deathspeedConfSF3.Value = 1f;
				break;
			}
		}
	}
}