Yar.dll

Decompiled a year ago
using System;
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.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LC_API.GameInterfaceAPI;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.InputSystem;
using Yar.Patches;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Yar")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Yar")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("6e403451-7efa-4027-ad10-e18939ca0090")]
[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 Yar
{
	[BepInPlugin("IHaveAName2653.Yar", "Yar", "0.4.3")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class YarModBase : BaseUnityPlugin
	{
		private const string modGUID = "IHaveAName2653.Yar";

		private const string modName = "Yar";

		private const string modVersion = "0.4.3";

		private readonly Harmony harmony = new Harmony("IHaveAName2653.Yar");

		private static YarModBase Instance;

		internal ManualLogSource mls;

		private void Awake()
		{
			if ((Object)(object)Instance == (Object)null)
			{
				Instance = this;
			}
			mls = Logger.CreateLogSource("IHaveAName2653.Yar");
			mls.LogInfo((object)"It appears as if Yar has begun");
			mls.LogInfo((object)"Yar Version: 0.4.3");
			mls.LogInfo((object)"Enabled Plugins:");
			mls.LogInfo((object)"Harder Eclipse - 0.2");
			mls.LogInfo((object)"Better Eclipse - 0.2.7");
			mls.LogInfo((object)"Drop Items With Terminal - 0.4");
			mls.LogInfo((object)"Eclipse is now hell :)");
			harmony.PatchAll(typeof(ReallyHardEclipse));
			harmony.PatchAll(typeof(MakeEclipsedBetter));
			harmony.PatchAll(typeof(MakePlayersDropItems));
		}
	}
}
namespace Yar.Patches
{
	[HarmonyPatch(typeof(RoundManager))]
	internal class OverrideSpawnCode
	{
		[HarmonyPatch("PlotOutEnemiesForNextHour")]
		[HarmonyPostfix]
		private static void MakeEclipsePainful()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			_ = TimeOfDay.Instance.currentLevelWeather;
			_ = 5;
		}
	}
	[HarmonyPatch(typeof(Terminal))]
	internal class MakePlayersDropItems
	{
		public static InputAction act;

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void MakeEclipsedMoreLoot()
		{
			if (act.triggered && InputControlExtensions.IsPressed((InputControl)(object)Keyboard.current.ctrlKey, 0f))
			{
				Debug.Log((object)"!!!!!! Input Action getting player to drop items !!!!!!");
				PlayerControllerB targetedPlayer = StartOfRound.Instance.mapScreen.targetedPlayer;
				targetedPlayer.DropAllHeldItemsClientRpc();
				targetedPlayer.DropAllHeldItemsAndSync();
				targetedPlayer.activatingItem = false;
				targetedPlayer.currentItemSlot = 0;
			}
		}

		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void StartTheBinding()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			act = new InputAction((string)null, (InputActionType)1, "<Keyboard>/o", "press(behaviour=1)", (string)null, (string)null);
			act.Enable();
		}
	}
	[HarmonyPatch(typeof(RoundManager))]
	internal class MakeEclipsedBetter
	{
		private static float lastKnownMultiplier;

		private static int CheckTimer;

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void MakeEclipsedMoreLoot()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Invalid comparison between Unknown and I4
			CheckTimer++;
			if (CheckTimer > 20)
			{
				if ((int)TimeOfDay.Instance.currentLevelWeather == 5)
				{
					lastKnownMultiplier = RoundManager.Instance.scrapValueMultiplier;
					RoundManager.Instance.scrapValueMultiplier = 10f;
				}
				else if (RoundManager.Instance.scrapValueMultiplier >= 10f)
				{
					RoundManager.Instance.scrapValueMultiplier = lastKnownMultiplier;
				}
				CheckTimer %= 20;
			}
		}
	}
	[HarmonyPatch(typeof(EclipseWeather))]
	internal class ReallyHardEclipse
	{
		[HarmonyPatch("OnEnable")]
		[HarmonyPostfix]
		private static void MakeEclipsePainful()
		{
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0203: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_0252: Unknown result type (might be due to invalid IL or missing references)
			//IL_0258: Unknown result type (might be due to invalid IL or missing references)
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_025f: Unknown result type (might be due to invalid IL or missing references)
			int num = 3333;
			RoundManager.Instance.minOutsideEnemiesToSpawn = num;
			RoundManager.Instance.minEnemiesToSpawn = num;
			RoundManager.Instance.hourTimeBetweenEnemySpawnBatches = 1;
			List<int> list = new List<int>();
			list.Clear();
			TimeOfDay timeScript = RoundManager.Instance.timeScript;
			float num2 = timeScript.lengthOfHours * 0f;
			int num3 = 0;
			for (int i = 0; i < Math.Max(RoundManager.Instance.currentLevel.DaytimeEnemies.Count, 300); i++)
			{
				EnemyType enemyType = RoundManager.Instance.currentLevel.DaytimeEnemies[i].enemyType;
				if (enemyType.PowerLevel > RoundManager.Instance.currentLevel.maxDaytimeEnemyPowerCount - RoundManager.Instance.currentDaytimeEnemyPower || enemyType.numberSpawned >= RoundManager.Instance.currentLevel.DaytimeEnemies[i].enemyType.MaxCount || enemyType.normalizedTimeInDayToLeave < TimeOfDay.Instance.normalizedTimeOfDay || enemyType.spawningDisabled)
				{
					list.Add(0);
					continue;
				}
				int num4 = (int)((float)RoundManager.Instance.currentLevel.DaytimeEnemies[i].rarity * enemyType.probabilityCurve.Evaluate(num2 / timeScript.totalTime));
				list.Add(num4);
				num3 += num4;
			}
			GameObject[] array = GameObject.FindGameObjectsWithTag("OutsideAINode");
			int randomWeightedIndex = RoundManager.Instance.GetRandomWeightedIndex(list.ToArray(), RoundManager.Instance.EnemySpawnRandom);
			Vector3 position = array[RoundManager.Instance.AnomalyRandom.Next(0, array.Length)].transform.position;
			position = RoundManager.Instance.GetRandomNavMeshPositionInRadius(position, 4f, default(NavMeshHit));
			Debug.Log((object)$"Anomaly random 4: {position.x}, {position.y}, {position.z}");
			int num5 = 0;
			bool flag = false;
			for (int j = 0; j < array.Length - 1; j++)
			{
				for (int k = 0; k < RoundManager.Instance.spawnDenialPoints.Length; k++)
				{
					flag = true;
					if (Vector3.Distance(position, RoundManager.Instance.spawnDenialPoints[k].transform.position) < 16f)
					{
						num5 = (num5 + 1) % array.Length;
						position = array[num5].transform.position;
						position = RoundManager.Instance.GetRandomNavMeshPositionInRadius(position, 4f, default(NavMeshHit));
						flag = false;
						break;
					}
				}
				if (flag)
				{
					break;
				}
			}
			Object.Instantiate<GameObject>(RoundManager.Instance.currentLevel.OutsideEnemies[randomWeightedIndex].enemyType.enemyPrefab, position, Quaternion.Euler(Vector3.zero)).gameObject.GetComponentInChildren<NetworkObject>().Spawn(true);
		}
	}
	[HarmonyPatch(typeof(StormyWeather))]
	internal class StormyWeatherPatch
	{
		public static InputAction act;

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void LightningUpdate()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			if (act.triggered)
			{
				Debug.Log((object)"trigger explode");
				Camera gameplayCamera = GameNetworkManager.Instance.localPlayerController.gameplayCamera;
				Vector3 val = Vector3.zero;
				gameplayCamera.ScreenPointToRay(Vector2.op_Implicit(((InputControl<Vector2>)(object)((Pointer)Mouse.current).position).ReadValue()));
				RaycastHit val2 = default(RaycastHit);
				if (Physics.Raycast(((Component)gameplayCamera).transform.position, ((Component)gameplayCamera).transform.eulerAngles, ref val2, 100000f))
				{
					val = ((RaycastHit)(ref val2)).point;
				}
				((StormyWeather)Object.FindFirstObjectByType(typeof(StormyWeather))).LightningStrike(val, false);
				Debug.Log((object)"hi");
			}
		}

		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void LightningBind()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			act = new InputAction((string)null, (InputActionType)1, "<Keyboard>/l", "press(behaviour=1)", (string)null, (string)null);
			act.Enable();
		}
	}
	[HarmonyPatch(typeof(Terminal))]
	internal class TerminalPatch
	{
		public static InputAction act;

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void InfCredits()
		{
			if (act.triggered)
			{
				Object.FindObjectOfType<Terminal>().groupCredits = 100000000;
				Debug.Log((object)"hi hello we triggered.");
			}
		}

		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void MakeSureThatTheTerminalHasCredits()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			act = new InputAction((string)null, (InputActionType)1, "<Keyboard>/i", "press(behaviour=1)", (string)null, (string)null);
			act.Enable();
		}
	}
	[HarmonyPatch(typeof(PlayerControllerB))]
	internal class PlayerControllerBPatch
	{
		public static InputAction die;

		public static InputAction explode;

		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void update()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Invalid comparison between Unknown and I4
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			if ((int)GameState.ShipState == 1)
			{
				if (die.triggered)
				{
					PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
					Vector3 velocity = ((Component)localPlayerController).gameObject.GetComponent<CharacterController>().velocity;
					localPlayerController.KillPlayer(velocity, true, (CauseOfDeath)0, 0);
					Debug.Log((object)"yes we should be dead");
				}
				if (explode.triggered)
				{
					Debug.Log((object)"trigger explode");
					_ = GameNetworkManager.Instance.localPlayerController.gameplayCamera;
					Landmine.SpawnExplosion(Vector3.zero, true, 2.5f, 5f);
					Debug.Log((object)"hi");
				}
			}
		}

		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void start()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			Debug.Log((object)"should start");
			die = new InputAction((string)null, (InputActionType)1, "<Keyboard>/Alpha9", "press(behaviour=1)", (string)null, (string)null);
			die.Enable();
			explode = new InputAction((string)null, (InputActionType)1, "<Keyboard>/Alpha8", "press(behaviour=1)", (string)null, (string)null);
			explode.Enable();
			Debug.Log((object)"binds added");
		}
	}
}