Decompiled source of Stronger Auto Scout Cannons v1.0.2

tony4twentys-Stronger Auto Scout Cannons.dll

Decompiled 2 weeks 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 HarmonyLib;
using Photon.Pun;
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("Stronger Cannons")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Stronger Cannons")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b38956bf-5712-4c59-8790-826a989b6b46")]
[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 StrongerAutoScoutCannons;

[BepInPlugin("tony4twentys.Stronger_Auto_Scout_Cannons", "Stronger Auto Scout Cannons", "1.0.0")]
public class StrongerAutoScoutCannonsPlugin : BaseUnityPlugin
{
	private static ConfigEntry<float> LaunchForceMultiplier;

	private static ConfigEntry<float> ItemLaunchForceMultiplier;

	private static ConfigEntry<float> PullForceMultiplier;

	private static ConfigEntry<float> PushForceMultiplier;

	private static ConfigEntry<bool> EnableMultipliers;

	private static ConfigEntry<bool> EnableAutoFire;

	private static ConfigEntry<float> FuseTimeOverride;

	private void Awake()
	{
		EnableMultipliers = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableMultipliers", true, "Enable to apply multipliers to cannon forces.");
		LaunchForceMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "LaunchForceMultiplier", 2f, "Multiplier for launch force applied to players.");
		ItemLaunchForceMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "ItemLaunchForceMultiplier", 2f, "Multiplier for launch force applied to items.");
		PullForceMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "PullForceMultiplier", 2f, "Multiplier for pull force.");
		PushForceMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "PushForceMultiplier", 2f, "Multiplier for push force.");
		EnableAutoFire = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableAutoFire", true, "If true, the cannon will automatically light when a player enters.");
		FuseTimeOverride = ((BaseUnityPlugin)this).Config.Bind<float>("General", "FuseTimeOverride", -1f, "Override for fuse burn duration before firing. Set to -1 to leave unchanged.");
		Harmony.CreateAndPatchAll(typeof(StrongerAutoScoutCannonsPlugin), (string)null);
	}

	[HarmonyPatch(typeof(ScoutCannon), "Awake")]
	[HarmonyPostfix]
	private static void AdjustCannonForces(ref ScoutCannon __instance)
	{
		if (EnableMultipliers.Value)
		{
			ScoutCannon obj = __instance;
			obj.launchForce *= LaunchForceMultiplier.Value;
			ScoutCannon obj2 = __instance;
			obj2.itemLaunchForce *= ItemLaunchForceMultiplier.Value;
			ScoutCannon obj3 = __instance;
			obj3.pullForce *= PullForceMultiplier.Value;
			ScoutCannon obj4 = __instance;
			obj4.pushForce *= PushForceMultiplier.Value;
		}
	}

	[HarmonyPatch(typeof(ScoutCannon), "FixedUpdate")]
	[HarmonyPostfix]
	private static void AutoLightWhenPlayerIsInside(ScoutCannon __instance)
	{
		//IL_0063: 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 (!EnableAutoFire.Value || !PhotonNetwork.IsMasterClient || __instance.lit)
		{
			return;
		}
		Transform value = Traverse.Create((object)__instance).Field("entry").GetValue<Transform>();
		if ((Object)(object)value == (Object)null)
		{
			return;
		}
		foreach (Character allCharacter in Character.AllCharacters)
		{
			if (Vector3.Distance(allCharacter.Center, value.position) <= 0.75f)
			{
				__instance.Light();
				break;
			}
		}
	}

	[HarmonyPatch(typeof(ScoutCannon), "Awake")]
	[HarmonyPostfix]
	private static void AdjustFuseTime(ref ScoutCannon __instance)
	{
		if (FuseTimeOverride.Value >= 0f)
		{
			__instance.fireTime = FuseTimeOverride.Value;
		}
	}
}