using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using PluginConfig.API;
using PluginConfig.API.Decorators;
using PluginConfig.API.Fields;
using UnityEngine;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("BetterJackhammer")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BetterJackhammer")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("d24676a8-4da0-4d43-a77a-48484b461e2c")]
[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 BetterJackhammer;
public static class F_Utils
{
[CompilerGenerated]
private sealed class <DelayCoroutine>d__0 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public float delayInSeconds;
public Action action;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <DelayCoroutine>d__0(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(delayInSeconds);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
action();
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <NextFrameCoroutine>d__1 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public Action action;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <NextFrameCoroutine>d__1(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForEndOfFrame();
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
action();
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[IteratorStateMachine(typeof(<DelayCoroutine>d__0))]
public static IEnumerator DelayCoroutine(float delayInSeconds, Action action)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <DelayCoroutine>d__0(0)
{
delayInSeconds = delayInSeconds,
action = action
};
}
[IteratorStateMachine(typeof(<NextFrameCoroutine>d__1))]
public static IEnumerator NextFrameCoroutine(Action action)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <NextFrameCoroutine>d__1(0)
{
action = action
};
}
public static bool Try_GetFrom_Config(BoolField boolField, bool regular = false)
{
try
{
if (boolField != null)
{
return boolField.value;
}
}
catch
{
}
return regular;
}
public static int Try_GetFrom_Config(IntField intField, int regular = 1)
{
try
{
if (intField != null)
{
return intField.value;
}
}
catch
{
}
return regular;
}
public static float Try_GetFrom_Config(FloatField floatField, float regular = 1f)
{
try
{
if (floatField != null)
{
return floatField.value;
}
}
catch
{
}
return regular;
}
public static KeyCode Try_GetFrom_Config(KeyCodeField keyCodeField, KeyCode regular = 0)
{
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
try
{
if (keyCodeField != null)
{
return keyCodeField.value;
}
}
catch
{
}
return regular;
}
public static T Try_GetFrom_Config<T>(EnumField<T> enumField, T regular) where T : struct
{
try
{
if (enumField != null)
{
return enumField.value;
}
}
catch
{
}
return regular;
}
}
public static class BetterJackhammer_Settings
{
public enum Jackhammer_State
{
Fraud__Nerf__Current,
Broccolite__Nerf__Idea,
Without__A__Nerf
}
public static EnumField<Jackhammer_State> V__Varb_Selected_Jackhammer_State;
public static FloatField V__Varb_Seconds_Until_Full_Passive_Cooling;
public static FloatField V__Varb_Shotgun_Shot_Cooling;
public static FloatField V__Varb_OverHeat_Others_Cooling;
public static FloatField V__Varb_Heat_Capacity;
public static FloatField V__Varb_Pump_Charge_Heat;
public static FloatField V__Varb_Hitscan_Convertation_Heat;
public static FloatField V__Varb_Green_Gauge_Heat;
public static FloatField V__Varb_Yellow_Gauge_Heat;
public static FloatField V__Varb_Red_Gauge_Heat;
public static FloatField V__Varb_Green_Gauge_Damage;
public static FloatField V__Varb_Yellow_Gauge_Damage;
public static FloatField V__Varb_Red_Gauge_Damage;
public static FloatField V__Varb_Pump_Charge1_Damage;
public static FloatField V__Varb_Pump_Charge2_Damage;
public static FloatField V__Varb_Pump_Charge3_Damage;
public static FloatField V__Varb_Impact_Pitch_Goal;
public static FloatField V__Varb_Impact_Pitch_Variety;
public static Jackhammer_State Selected_Jackhammer_State => F_Utils.Try_GetFrom_Config(V__Varb_Selected_Jackhammer_State, Jackhammer_State.Broccolite__Nerf__Idea);
public static float Seconds_Until_Full_Passive_Cooling => F_Utils.Try_GetFrom_Config(V__Varb_Seconds_Until_Full_Passive_Cooling, 28f);
public static float Shotgun_Shot_Cooling => F_Utils.Try_GetFrom_Config(V__Varb_Shotgun_Shot_Cooling, 0.125f);
public static float OverHeat_Others_Cooling => F_Utils.Try_GetFrom_Config(V__Varb_OverHeat_Others_Cooling, 0f);
public static float Heat_Capacity => F_Utils.Try_GetFrom_Config(V__Varb_Heat_Capacity, 8f);
public static float Pump_Charge_Heat => F_Utils.Try_GetFrom_Config(V__Varb_Pump_Charge_Heat, 0.125f);
public static float Hitscan_Convertation_Heat => F_Utils.Try_GetFrom_Config(V__Varb_Hitscan_Convertation_Heat, 0.25f);
public static float Green_Gauge_Heat => F_Utils.Try_GetFrom_Config(V__Varb_Green_Gauge_Heat, 0.25f);
public static float Yellow_Gauge_Heat => F_Utils.Try_GetFrom_Config(V__Varb_Yellow_Gauge_Heat, 0.5f);
public static float Red_Gauge_Heat => F_Utils.Try_GetFrom_Config(V__Varb_Red_Gauge_Heat);
public static float Green_Gauge_Damage => F_Utils.Try_GetFrom_Config(V__Varb_Green_Gauge_Damage, 3f);
public static float Yellow_Gauge_Damage => F_Utils.Try_GetFrom_Config(V__Varb_Yellow_Gauge_Damage, 6f);
public static float Red_Gauge_Damage => F_Utils.Try_GetFrom_Config(V__Varb_Red_Gauge_Damage, 12f);
public static float Pump_Charge_1_Damage => F_Utils.Try_GetFrom_Config(V__Varb_Pump_Charge1_Damage, 1.5f);
public static float Pump_Charge_2_Damage => F_Utils.Try_GetFrom_Config(V__Varb_Pump_Charge2_Damage, 3.5f);
public static float Pump_Charge_3_Damage => F_Utils.Try_GetFrom_Config(V__Varb_Pump_Charge3_Damage, 7f);
public static float Impact_Pitch_Goal => F_Utils.Try_GetFrom_Config(V__Varb_Impact_Pitch_Goal, 1.2f);
public static float Impact_Pitch_Variety => F_Utils.Try_GetFrom_Config(V__Varb_Impact_Pitch_Variety, 0.025f);
public static float GetHeat(int tier)
{
return tier switch
{
0 => Heat_Capacity * Green_Gauge_Heat,
1 => Heat_Capacity * Yellow_Gauge_Heat,
2 => Heat_Capacity * Red_Gauge_Heat,
_ => Heat_Capacity * Green_Gauge_Heat,
};
}
public static float GetDamage(int tier)
{
return tier switch
{
0 => Green_Gauge_Damage,
1 => Yellow_Gauge_Damage,
2 => Red_Gauge_Damage,
_ => Green_Gauge_Damage,
};
}
}
[BepInPlugin("com.enragedone.BetterJackhammer", "BetterJackhammer", "1.0.5")]
public class BetterJackhammer_Loader : BaseUnityPlugin
{
public const string GUID = "com.enragedone.BetterJackhammer";
public const string Name = "BetterJackhammer";
public const string Version = "1.0.5";
public const string Set_Guid = "com.enragedone.BetterJackhammer.settings";
public PluginConfigurator config;
public bool Confing_Loaded;
public static ManualLogSource _Logger;
public static BetterJackhammer_Loader _Instance;
internal Harmony _Harmony = new Harmony("com.enragedone.betterjackhammer.patches");
public void Awake()
{
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0122: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Expected O, but got Unknown
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: Expected O, but got Unknown
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_0174: Expected O, but got Unknown
//IL_0186: Unknown result type (might be due to invalid IL or missing references)
//IL_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_0190: Unknown result type (might be due to invalid IL or missing references)
//IL_019a: Unknown result type (might be due to invalid IL or missing references)
//IL_01be: Unknown result type (might be due to invalid IL or missing references)
//IL_01c8: Expected O, but got Unknown
//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
//IL_01ec: Expected O, but got Unknown
//IL_0206: Unknown result type (might be due to invalid IL or missing references)
//IL_0210: Expected O, but got Unknown
//IL_022a: Unknown result type (might be due to invalid IL or missing references)
//IL_0234: Expected O, but got Unknown
//IL_024e: Unknown result type (might be due to invalid IL or missing references)
//IL_0258: Expected O, but got Unknown
//IL_0272: Unknown result type (might be due to invalid IL or missing references)
//IL_027c: Expected O, but got Unknown
//IL_028e: Unknown result type (might be due to invalid IL or missing references)
//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
//IL_02e6: Expected O, but got Unknown
//IL_0300: Unknown result type (might be due to invalid IL or missing references)
//IL_030a: Expected O, but got Unknown
//IL_0324: Unknown result type (might be due to invalid IL or missing references)
//IL_032e: Expected O, but got Unknown
//IL_0340: Unknown result type (might be due to invalid IL or missing references)
//IL_0345: Unknown result type (might be due to invalid IL or missing references)
//IL_034a: Unknown result type (might be due to invalid IL or missing references)
//IL_0354: Unknown result type (might be due to invalid IL or missing references)
//IL_0378: Unknown result type (might be due to invalid IL or missing references)
//IL_0382: Expected O, but got Unknown
//IL_039c: Unknown result type (might be due to invalid IL or missing references)
//IL_03a6: Expected O, but got Unknown
//IL_03c0: Unknown result type (might be due to invalid IL or missing references)
//IL_03ca: Expected O, but got Unknown
//IL_03dc: Unknown result type (might be due to invalid IL or missing references)
//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
//IL_03f0: Unknown result type (might be due to invalid IL or missing references)
//IL_0414: Unknown result type (might be due to invalid IL or missing references)
//IL_041e: Expected O, but got Unknown
//IL_0438: Unknown result type (might be due to invalid IL or missing references)
//IL_0442: Expected O, but got Unknown
_Instance = this;
_Logger = ((BaseUnityPlugin)this).Logger;
_Logger.LogInfo((object)"BetterJackhammer_Loader v1.0.5 has started.");
try
{
config = PluginConfigurator.Create("Better Jackhammer", "com.enragedone.BetterJackhammer.settings");
string text = Path.Combine(Path.GetDirectoryName(typeof(BetterJackhammer_Loader).Assembly.Location), "icon.png");
config.SetIconWithURL("file://" + text);
new ConfigHeader(config.rootPanel, "Main / Global Settings", 24).textColor = Color.yellow;
BetterJackhammer_Settings.V__Varb_Selected_Jackhammer_State = new EnumField<BetterJackhammer_Settings.Jackhammer_State>(config.rootPanel, "Jackhammer State", "com.enragedone.BetterJackhammer.settings.V__Varb_Default_Gravity", BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea);
new ConfigHeader(config.rootPanel, "! Settings Only For Broccolite Nerf Idea !", 24).textColor = Color.red;
new ConfigHeader(config.rootPanel, "Cooling Settings", 24).textColor = Color32.op_Implicit(new Color32((byte)105, (byte)172, byte.MaxValue, byte.MaxValue));
BetterJackhammer_Settings.V__Varb_Seconds_Until_Full_Passive_Cooling = new FloatField(config.rootPanel, "Seconds Until Full Passive Cooling", "com.enragedone.BetterJackhammer.settings.V__Varb_Seconds_Until_Full_Passive_Cooling", 28f);
BetterJackhammer_Settings.V__Varb_Shotgun_Shot_Cooling = new FloatField(config.rootPanel, "Shotgun Shot Cooling", "com.enragedone.BetterJackhammer.settings.V__Varb_Shotgun_Shot_Cooling", 0.125f);
BetterJackhammer_Settings.V__Varb_OverHeat_Others_Cooling = new FloatField(config.rootPanel, "Heat Left After Overheat", "com.enragedone.BetterJackhammer.settings.V__Varb_OverHeat_Others_Cooling", 0f);
new ConfigHeader(config.rootPanel, "Heat Settings", 24).textColor = Color.Lerp(Color.red, Color.yellow, 0.4f);
BetterJackhammer_Settings.V__Varb_Heat_Capacity = new FloatField(config.rootPanel, "Heat Capacity \n(og: 7)", "com.enragedone.BetterJackhammer.settings.V__Varb_Heat_Capacity", 8f);
BetterJackhammer_Settings.V__Varb_Pump_Charge_Heat = new FloatField(config.rootPanel, "Pump Charge Heat ", "com.enragedone.BetterJackhammer.settings.V__Varb_Extra_Heat_PerPump", 0.125f);
BetterJackhammer_Settings.V__Varb_Hitscan_Convertation_Heat = new FloatField(config.rootPanel, "Hitscan Convertation Heat", "com.enragedone.BetterJackhammer.settings.V__Varb_Hitscan_Convertation_Heat", 0.25f);
BetterJackhammer_Settings.V__Varb_Green_Gauge_Heat = new FloatField(config.rootPanel, "Green Gauge Heat", "com.enragedone.BetterJackhammer.settings.V__Varb_Green_Gauge_Heat", 0.25f);
BetterJackhammer_Settings.V__Varb_Yellow_Gauge_Heat = new FloatField(config.rootPanel, "Yellow Gauge Heat", "com.enragedone.BetterJackhammer.settings.V__Varb_Yellow_Gauge_Heat", 0.5f);
BetterJackhammer_Settings.V__Varb_Red_Gauge_Heat = new FloatField(config.rootPanel, "Red Gauge Heat", "com.enragedone.BetterJackhammer.settings.V__Varb_Red_Gauge_Heat", 1f);
new ConfigHeader(config.rootPanel, "Damage Settings", 24).textColor = Color.Lerp(Color32.op_Implicit(new Color32((byte)105, (byte)172, byte.MaxValue, byte.MaxValue)), Color.magenta, 0.35f);
BetterJackhammer_Settings.V__Varb_Green_Gauge_Damage = new FloatField(config.rootPanel, "Green Gauge Damage", "com.enragedone.BetterJackhammer.settings.V__Varb_Green_Gauge_Damage", 3f);
BetterJackhammer_Settings.V__Varb_Yellow_Gauge_Damage = new FloatField(config.rootPanel, "Yellow Gauge Damage", "com.enragedone.BetterJackhammer.settings.V__Varb_Yellow_Gauge_Damage", 6f);
BetterJackhammer_Settings.V__Varb_Red_Gauge_Damage = new FloatField(config.rootPanel, "Red Gauge Damage (og: 10)", "com.enragedone.BetterJackhammer.settings.V__Varb_Red_Gauge_Damage", 12f);
new ConfigHeader(config.rootPanel, "Pump Damage Settings", 24).textColor = Color.Lerp(Color.blue, Color.magenta, 0.45f);
BetterJackhammer_Settings.V__Varb_Pump_Charge1_Damage = new FloatField(config.rootPanel, "Green Gauge Damage (og: 35)", "com.enragedone.BetterJackhammer.settings.V__Varb_Pump_Charge1_Damage", 1.5f);
BetterJackhammer_Settings.V__Varb_Pump_Charge2_Damage = new FloatField(config.rootPanel, "Yellow Gauge Damage", "com.enragedone.BetterJackhammer.settings.V__Varb_Pump_Charge2_Damage", 3.5f);
BetterJackhammer_Settings.V__Varb_Pump_Charge3_Damage = new FloatField(config.rootPanel, "Red Gauge Damage", "com.enragedone.BetterJackhammer.settings.V__Varb_Pump_Charge3_Damage", 7f);
new ConfigHeader(config.rootPanel, "Sound Settings", 24).textColor = Color.Lerp(Color.yellow, Color.green, 0.45f);
BetterJackhammer_Settings.V__Varb_Impact_Pitch_Goal = new FloatField(config.rootPanel, "Overheat Impact Pitch Goal", "com.enragedone.BetterJackhammer.settings.V__Varb_Impact_Pitch_Target", 1.2f);
BetterJackhammer_Settings.V__Varb_Impact_Pitch_Variety = new FloatField(config.rootPanel, "Impact Pitch Variety (og: 0.2)", "com.enragedone.BetterJackhammer.settings.V__Varb_Impact_Pitch_Variety", 0.025f);
_Logger.LogInfo((object)"Config v1.0.5 loaded successfully");
Confing_Loaded = true;
}
catch
{
_Logger.LogError((object)"BetterJackhammer_Loader v1.0.5 !!!---!!! ERROR With PluginConfigurator Init");
}
BetterJackhammer_Core.Boot_Core();
_Harmony.PatchAll(typeof(Jackhammer_Patches));
_Logger.LogInfo((object)"BetterJackhammer_Loader v1.0.5 loaded successfully without error.");
}
}
public static class BetterJackhammer_Core
{
public static void Boot_Core()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
public static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
string currentScene = SceneHelper.CurrentScene;
if (currentScene != "Main Menu" && currentScene != "Intro" && currentScene != "Bootstrap")
{
_ = MonoSingleton<NerfHandler>.Instance;
}
}
}
public class NerfHandler : MonoSingleton<NerfHandler>
{
public static bool IgnoreVar0;
public static bool IgnoreVar1;
public static bool IgnoreVar2;
public static float Global_Heat;
public static float Last_Heat_Capacity;
public WeaponCharges wc;
public void Start()
{
Global_Heat = 0f;
wc = MonoSingleton<WeaponCharges>.Instance;
}
public void Update()
{
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Fraud__Nerf__Current)
{
return;
}
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
if (Last_Heat_Capacity != BetterJackhammer_Settings.Heat_Capacity)
{
wc.shoaltcooldowns[0] = 0f;
wc.shoaltcooldowns[1] = 0f;
wc.shoaltcooldowns[2] = 0f;
Last_Heat_Capacity = BetterJackhammer_Settings.Heat_Capacity;
}
Global_Heat = Mathf.MoveTowards(Global_Heat, 0f, Time.deltaTime * (BetterJackhammer_Settings.Heat_Capacity / BetterJackhammer_Settings.Seconds_Until_Full_Passive_Cooling));
if (!IgnoreVar0)
{
wc.shoaltcooldowns[0] = 0f;
}
else if (wc.shoaltcooldowns[0] == 0f)
{
IgnoreVar0 = false;
}
if (!IgnoreVar1)
{
wc.shoaltcooldowns[1] = 0f;
}
else if (wc.shoaltcooldowns[1] == 0f)
{
IgnoreVar1 = false;
}
if (!IgnoreVar2)
{
wc.shoaltcooldowns[2] = 0f;
}
else if (wc.shoaltcooldowns[2] == 0f)
{
IgnoreVar2 = false;
}
wc.shoAltYellows = 0;
wc.shoAltYellowsTimer = 0f;
}
else if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Fraud__Nerf__Current)
{
wc.shoAltYellows = 0;
wc.shoAltYellowsTimer = 0f;
}
}
public static void HeatTry(int variation)
{
if (Global_Heat >= BetterJackhammer_Settings.Heat_Capacity - BetterJackhammer_Settings.Heat_Capacity * 0.0142f)
{
Global_Heat = Mathf.Clamp(BetterJackhammer_Settings.Heat_Capacity * BetterJackhammer_Settings.OverHeat_Others_Cooling, 0f, BetterJackhammer_Settings.Heat_Capacity);
switch (variation)
{
case 0:
IgnoreVar0 = true;
break;
case 1:
IgnoreVar1 = true;
break;
case 2:
IgnoreVar2 = true;
break;
}
MonoSingleton<WeaponCharges>.Instance.shoaltcooldowns[variation] = BetterJackhammer_Settings.Heat_Capacity;
}
}
}
public static class Jackhammer_Patches
{
[HarmonyPatch(typeof(ShotgunHammer), "ImpactEffects")]
[HarmonyPrefix]
private static void ShotgunHammer__ImpactEffects(GameObject ___overPumpExplosion, GameObject ___pumpExplosion, ShotgunHammer __instance)
{
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
if (__instance.variation != 1)
{
return;
}
NerfHandler instance = MonoSingleton<NerfHandler>.Instance;
if (__instance.primaryCharge == 1)
{
Explosion componentInChildren = ___pumpExplosion.GetComponentInChildren<Explosion>();
if (Object.op_Implicit((Object)(object)componentInChildren))
{
componentInChildren.damage = (int)(BetterJackhammer_Settings.Pump_Charge_1_Damage * 10f);
}
}
else if (__instance.primaryCharge == 2)
{
Explosion componentInChildren2 = ___pumpExplosion.GetComponentInChildren<Explosion>();
if (Object.op_Implicit((Object)(object)componentInChildren2))
{
componentInChildren2.damage = (int)(BetterJackhammer_Settings.Pump_Charge_2_Damage * 10f);
}
}
else if (__instance.primaryCharge == 3)
{
Explosion componentInChildren3 = ___overPumpExplosion.GetComponentInChildren<Explosion>();
if (Object.op_Implicit((Object)(object)componentInChildren3))
{
componentInChildren3.damage = (int)(BetterJackhammer_Settings.Pump_Charge_3_Damage * 10f / 2f);
}
}
NerfHandler.Global_Heat = Mathf.Clamp(NerfHandler.Global_Heat + (float)__instance.primaryCharge * BetterJackhammer_Settings.Heat_Capacity * BetterJackhammer_Settings.Pump_Charge_Heat / (float)(1 + MonoSingleton<GunControl>.Instance.dualWieldCount), 0f, BetterJackhammer_Settings.Heat_Capacity);
((MonoBehaviour)instance).StartCoroutine(F_Utils.DelayCoroutine(0.05f, delegate
{
NerfHandler.HeatTry(__instance.variation);
}));
}
else
{
if (__instance.variation != 1)
{
return;
}
if (__instance.primaryCharge == 3)
{
Explosion componentInChildren4 = ___overPumpExplosion.GetComponentInChildren<Explosion>();
if (Object.op_Implicit((Object)(object)componentInChildren4))
{
componentInChildren4.damage = 35;
}
}
else
{
Explosion componentInChildren5 = ___pumpExplosion.GetComponentInChildren<Explosion>();
if (Object.op_Implicit((Object)(object)componentInChildren5))
{
componentInChildren5.damage = 35;
}
}
}
}
[HarmonyPatch(typeof(ShotgunHammer), "DeliverDamage")]
[HarmonyPrefix]
public static void ShotgunHammer__DeliverDamage(EnemyIdentifier ___hitEnemy, int ___tier, ref float ___damage, ShotgunHammer __instance)
{
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Invalid comparison between Unknown and I4
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Invalid comparison between Unknown and I4
if (BetterJackhammer_Settings.Selected_Jackhammer_State != BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
return;
}
NerfHandler instance = MonoSingleton<NerfHandler>.Instance;
___damage = BetterJackhammer_Settings.GetDamage(___tier);
if (Object.op_Implicit((Object)(object)___hitEnemy) && !___hitEnemy.dead && (int)___hitEnemy.enemyType != 21 && (int)___hitEnemy.enemyType != 39)
{
NerfHandler.Global_Heat = Mathf.Clamp(NerfHandler.Global_Heat + BetterJackhammer_Settings.GetHeat(___tier) / (float)(1 + MonoSingleton<GunControl>.Instance.dualWieldCount), 0f, BetterJackhammer_Settings.Heat_Capacity);
((MonoBehaviour)instance).StartCoroutine(F_Utils.DelayCoroutine(0.05f, delegate
{
NerfHandler.HeatTry(__instance.variation);
}));
}
}
[HarmonyPatch(typeof(ShotgunHammer), "DeliverDamage")]
[HarmonyPostfix]
public static void ShotgunHammer__DeliverDamage__Post(EnemyIdentifier ___hitEnemy, int ___tier, ref float ___damage, ShotgunHammer __instance)
{
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
if (__instance.variation == 0 && NerfHandler.IgnoreVar0)
{
MonoSingleton<WeaponCharges>.Instance.shoaltcooldowns[__instance.variation] = BetterJackhammer_Settings.Heat_Capacity;
}
else if (__instance.variation == 1 && NerfHandler.IgnoreVar1)
{
MonoSingleton<WeaponCharges>.Instance.shoaltcooldowns[__instance.variation] = BetterJackhammer_Settings.Heat_Capacity;
}
else if (__instance.variation == 2 && NerfHandler.IgnoreVar2)
{
MonoSingleton<WeaponCharges>.Instance.shoaltcooldowns[__instance.variation] = BetterJackhammer_Settings.Heat_Capacity;
}
}
}
[HarmonyPatch(typeof(ShotgunHammer), "LateUpdate")]
[HarmonyPostfix]
public static void ShotgunHammer__LateUpdate(Transform ___meterHand, ShotgunHammer __instance)
{
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Unknown result type (might be due to invalid IL or missing references)
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
if (__instance.variation == 0 && NerfHandler.IgnoreVar0)
{
___meterHand.localRotation = Quaternion.Euler(0f, 170f - MonoSingleton<WeaponCharges>.Instance.shoaltcooldowns[__instance.variation] / BetterJackhammer_Settings.Heat_Capacity * 200f, -90f);
}
else if (__instance.variation == 1 && NerfHandler.IgnoreVar1)
{
___meterHand.localRotation = Quaternion.Euler(0f, 170f - MonoSingleton<WeaponCharges>.Instance.shoaltcooldowns[__instance.variation] / BetterJackhammer_Settings.Heat_Capacity * 200f, -90f);
}
else if (__instance.variation == 2 && NerfHandler.IgnoreVar2)
{
___meterHand.localRotation = Quaternion.Euler(0f, 170f - MonoSingleton<WeaponCharges>.Instance.shoaltcooldowns[__instance.variation] / BetterJackhammer_Settings.Heat_Capacity * 200f, -90f);
}
else if (NerfHandler.Global_Heat > 0.01f)
{
___meterHand.localRotation = Quaternion.Euler(0f, 170f - NerfHandler.Global_Heat / BetterJackhammer_Settings.Heat_Capacity * 200f, -90f);
}
}
}
[HarmonyPatch(typeof(ShotgunHammer), "HitNade")]
[HarmonyPostfix]
public static void ShotgunHammer__HitNade(ShotgunHammer __instance)
{
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
NerfHandler instance = MonoSingleton<NerfHandler>.Instance;
NerfHandler.Global_Heat = Mathf.Clamp(NerfHandler.Global_Heat + BetterJackhammer_Settings.Heat_Capacity * BetterJackhammer_Settings.Hitscan_Convertation_Heat, 0f, BetterJackhammer_Settings.Heat_Capacity);
((MonoBehaviour)instance).StartCoroutine(F_Utils.DelayCoroutine(0.05f, delegate
{
NerfHandler.HeatTry(__instance.variation);
}));
}
}
[HarmonyPatch(typeof(ShotgunHammer), "ImpactRoutine")]
[HarmonyPostfix]
private static void ShotgunHammer__ImpactRoutine(int ___tier, AudioSource ___hitSound, ShotgunHammer __instance)
{
RandomPitch val2 = default(RandomPitch);
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
float defaultPitch = Mathf.Lerp(0.8f, BetterJackhammer_Settings.Impact_Pitch_Goal, (NerfHandler.Global_Heat + BetterJackhammer_Settings.GetHeat(___tier)) / BetterJackhammer_Settings.Heat_Capacity);
RandomPitch val = default(RandomPitch);
if (Object.op_Implicit((Object)(object)___hitSound) && ((Component)___hitSound).TryGetComponent<RandomPitch>(ref val))
{
val.defaultPitch = defaultPitch;
val.pitchVariation = BetterJackhammer_Settings.Impact_Pitch_Variety;
}
}
else if (Object.op_Implicit((Object)(object)___hitSound) && ((Component)___hitSound).TryGetComponent<RandomPitch>(ref val2))
{
val2.defaultPitch = 1f;
val2.pitchVariation = 0.2f;
}
}
[HarmonyPatch(typeof(WeaponCharges), "MaxCharges")]
[HarmonyPostfix]
public static void WeaponCharges__MaxCharges(ShotgunHammer __instance)
{
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
NerfHandler.Global_Heat = 0f;
}
}
[HarmonyPatch(typeof(Shotgun), "Shoot")]
[HarmonyPostfix]
public static void Shotgun__Shoot(ShotgunHammer __instance)
{
if (BetterJackhammer_Settings.Selected_Jackhammer_State == BetterJackhammer_Settings.Jackhammer_State.Broccolite__Nerf__Idea)
{
NerfHandler.Global_Heat = Mathf.Clamp(NerfHandler.Global_Heat - BetterJackhammer_Settings.Heat_Capacity * BetterJackhammer_Settings.Shotgun_Shot_Cooling / (float)(1 + MonoSingleton<GunControl>.Instance.dualWieldCount), 0f, BetterJackhammer_Settings.Heat_Capacity);
}
}
}