Decompiled source of ComeBackMod v1.0.0

ComebackMod.dll

Decompiled 4 months ago
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.Logging;
using ComebackMod.Patches;
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("ComebackMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ComebackMod")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("1d6b8d31-4795-4b8a-b102-b2008b98fa0e")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace ComebackMod
{
	[BepInPlugin("Legmr.ComeBackMod", "ComeBackMod", "1.0.0")]
	public class ComeBackModMain : BaseUnityPlugin
	{
		private const string modGUID = "Legmr.ComeBackMod";

		private const string modName = "ComeBackMod";

		private const string modVersion = "1.0.0";

		private readonly Harmony harmony = new Harmony("Legmr.ComeBackMod");

		private static ComeBackModMain Instacne;

		internal ManualLogSource mls;

		private void Awake()
		{
			if ((Object)(object)Instacne == (Object)null)
			{
				Instacne = this;
			}
			mls = Logger.CreateLogSource("Legmr.ComeBackMod");
			mls.LogInfo((object)"The Comeback Mod has Begun.");
			harmony.PatchAll(typeof(ComeBackModMain));
			harmony.PatchAll(typeof(RoundManagerChanges));
		}
	}
}
namespace ComebackMod.Patches
{
	[HarmonyPatch(typeof(RoundManager))]
	internal class RoundManagerChanges
	{
		private static GameObject _ship;

		private static int enemyMinAmount;

		[HarmonyPatch("SpawnScrapInLevel")]
		[HarmonyPrefix]
		private static void PatchInitailLoad(ref float ___scrapAmountMultiplier, ref float ___scrapValueMultiplier, ref TimeOfDay ___timeScript)
		{
			_ship = GameObject.Find("/Environment/HangarShip");
			float num = CalculateLootValue();
			if (___timeScript.timesFulfilledQuota < 7 || !(num <= (float)___timeScript.profitQuota))
			{
				return;
			}
			float num2 = (float)___timeScript.profitQuota - num - (float)(___timeScript.daysUntilDeadline * (50 * ___timeScript.timesFulfilledQuota));
			if (!(num2 > 0f))
			{
				return;
			}
			if (___timeScript.timesFulfilledQuota >= 5)
			{
				if (num2 >= 500f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 0.6f;
						___scrapAmountMultiplier = 1.2f;
						enemyMinAmount = 2;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 0.5f;
						___scrapAmountMultiplier = 1.1f;
						enemyMinAmount = 1;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.45f;
						___scrapAmountMultiplier = 1.05f;
						enemyMinAmount = 0;
					}
				}
				else if (num2 >= 1500f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 0.65f;
						___scrapAmountMultiplier = 1.3f;
						enemyMinAmount = 2;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 0.55f;
						___scrapAmountMultiplier = 1.15f;
						enemyMinAmount = 1;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.5f;
						___scrapAmountMultiplier = 1.05f;
						enemyMinAmount = 0;
					}
				}
			}
			else if (___timeScript.timesFulfilledQuota >= 8)
			{
				if (num2 >= 1000f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 1f;
						___scrapAmountMultiplier = 1.6f;
						enemyMinAmount = 3;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 0.7f;
						___scrapAmountMultiplier = 1.3f;
						enemyMinAmount = 2;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.4f;
						___scrapAmountMultiplier = 1.1f;
						enemyMinAmount = 1;
					}
				}
				else if (num2 >= 3000f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 1.1f;
						___scrapAmountMultiplier = 1.8f;
						enemyMinAmount = 4;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 0.7f;
						___scrapAmountMultiplier = 1.1f;
						enemyMinAmount = 2;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.45f;
						___scrapAmountMultiplier = 1.05f;
						enemyMinAmount = 1;
					}
				}
			}
			else if (___timeScript.timesFulfilledQuota >= 12)
			{
				if (num2 >= 2000f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 1.3f;
						___scrapAmountMultiplier = 1.9f;
						enemyMinAmount = 4;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 0.9f;
						___scrapAmountMultiplier = 1.6f;
						enemyMinAmount = 2;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.6f;
						___scrapAmountMultiplier = 1.2f;
						enemyMinAmount = 1;
					}
				}
				else if (num2 >= 6000f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 1.7f;
						___scrapAmountMultiplier = 2.3f;
						enemyMinAmount = 7;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 0.9f;
						___scrapAmountMultiplier = 1.5f;
						enemyMinAmount = 3;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.5f;
						___scrapAmountMultiplier = 1.1f;
						enemyMinAmount = 1;
					}
				}
			}
			else
			{
				if (___timeScript.timesFulfilledQuota < 18)
				{
					return;
				}
				if (num2 >= 2000f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 1.5f;
						___scrapAmountMultiplier = 2.1f;
						enemyMinAmount = 5;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 1.1f;
						___scrapAmountMultiplier = 1.7f;
						enemyMinAmount = 2;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.7f;
						___scrapAmountMultiplier = 1.3f;
						enemyMinAmount = 1;
					}
				}
				else if (num2 >= 8000f)
				{
					if (___timeScript.daysUntilDeadline == 1)
					{
						___scrapValueMultiplier = 2f;
						___scrapAmountMultiplier = 2.7f;
						enemyMinAmount = 9;
					}
					else if (___timeScript.daysUntilDeadline == 2)
					{
						___scrapValueMultiplier = 1.4f;
						___scrapAmountMultiplier = 1.9f;
						enemyMinAmount = 5;
					}
					else if (___timeScript.daysUntilDeadline == 3)
					{
						___scrapValueMultiplier = 0.7f;
						___scrapAmountMultiplier = 1.3f;
						enemyMinAmount = 2;
					}
				}
			}
		}

		private static float CalculateLootValue()
		{
			List<GrabbableObject> source = (from obj in _ship.GetComponentsInChildren<GrabbableObject>()
				where obj.itemProperties.isScrap && !(obj is RagdollGrabbableObject)
				select obj).ToList();
			return source.Sum((GrabbableObject scrap) => scrap.scrapValue);
		}

		[HarmonyPatch("ResetEnemySpawningVariables")]
		[HarmonyPostfix]
		private static void ChangeEnemyAmount()
		{
			RoundManager.Instance.minEnemiesToSpawn = enemyMinAmount;
		}
	}
}