using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Threading;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;
using UnstableJetpacks.Patches;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("UnstableJetpacks")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("UnstableJetpacks")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("366344e9-8d68-4e7b-bce8-e89e7d4e6471")]
[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 UnstableJetpacks
{
[BepInPlugin("minecart.UnstableJetpacks", "Unstable Jetpacks", "1.1.0")]
public class UnstableJetpacksModBase : BaseUnityPlugin
{
private const string modGUID = "minecart.UnstableJetpacks";
private const string modName = "Unstable Jetpacks";
private const string modVersion = "1.1.0";
private readonly Harmony harmony = new Harmony("minecart.UnstableJetpacks");
private static UnstableJetpacksModBase Instance;
internal ManualLogSource mls;
private static ConfigEntry<bool> randomExploding;
private static ConfigEntry<bool> randomSpeedIncrease;
private static ConfigEntry<int> minimumSpeedIncrease;
private static ConfigEntry<int> maximumSpeedIncrease;
private static ConfigEntry<int> chanceToExplodeInt;
private static ConfigEntry<int> chancetoIncreaseSpeedInt;
public static bool GetRandomExploding => randomExploding.Value;
public static bool GetRandomSpeedIncrease => randomSpeedIncrease.Value;
public static int GetMinSpeedIncrease => minimumSpeedIncrease.Value;
public static int GetMaxSpeedIncrease => maximumSpeedIncrease.Value;
public static int GetCustomChanceToExplode => chanceToExplodeInt.Value;
public static int GetCustomChanceToIncreaseSpeed => chancetoIncreaseSpeedInt.Value;
private void Awake()
{
if ((Object)(object)Instance == (Object)null)
{
Instance = this;
}
randomExploding = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "Random Chance to Explode", true, "Determines if theres a random chance you can explode by launching your jetpack.");
randomSpeedIncrease = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "Random Chance to Increase Speed", true, "Determines if there can be a random chance to increase your jetpack's speed every frame.");
minimumSpeedIncrease = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Minimum Random Speed Increase", 0, "The minimum value for a random speed increase. (Only applies if 'Random Chance to Increase Speed' is set to true.)");
maximumSpeedIncrease = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Maximum Random Speed Increase", 30, "The maximum value for a random speed increase. (Only applies if 'Random Chance to Increase Speed' is set to true.)");
chanceToExplodeInt = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Number Chance to Explode (1/num)", 20, "The number set here is what the chance will be to explode on jetpack launch. This is put in as 1/(Your Number Here).");
chancetoIncreaseSpeedInt = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Number Chance to Increase Speed (1/num)", 250, "The number set here is what the chance will be to increase your jetpack speed every frame. This is put in as 1/(Your Number Here).");
mls = Logger.CreateLogSource("minecart.UnstableJetpacks");
mls.LogInfo((object)"have fun exploding");
harmony.PatchAll(typeof(UnstableJetpacksModBase));
harmony.PatchAll(typeof(JetpackItemPatch));
}
}
}
namespace UnstableJetpacks.Patches
{
[HarmonyPatch(typeof(JetpackItem))]
internal class JetpackItemPatch
{
private static Random random = new Random();
[HarmonyPatch("ActivateJetpack")]
[HarmonyPostfix]
private static void JetpackExplodePatch(ref float ___jetpackPower, ref AudioSource ___jetpackBeepsAudio, ref AudioClip ___jetpackWarningBeepSFX)
{
if (UnstableJetpacksModBase.GetRandomExploding && random.Next(0, UnstableJetpacksModBase.GetCustomChanceToExplode) == 0)
{
___jetpackPower = 1500f;
___jetpackBeepsAudio.clip = ___jetpackWarningBeepSFX;
___jetpackBeepsAudio.Play();
}
}
[HarmonyPatch("Update")]
[HarmonyPostfix]
private static void JetpackSpeedChancePatch(ref float ___jetpackPower, ref AudioSource ___jetpackBeepsAudio, ref AudioClip ___jetpackLowBatteriesSFX)
{
if (UnstableJetpacksModBase.GetRandomSpeedIncrease && random.Next(0, UnstableJetpacksModBase.GetCustomChanceToIncreaseSpeed) == 0)
{
int num = random.Next(UnstableJetpacksModBase.GetMinSpeedIncrease, UnstableJetpacksModBase.GetMaxSpeedIncrease);
___jetpackPower += num;
___jetpackBeepsAudio.clip = ___jetpackLowBatteriesSFX;
___jetpackBeepsAudio.Play();
Thread.Sleep(2);
___jetpackBeepsAudio.Stop();
}
}
}
}