using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using AmmoOnSpawnSpawner;
using HarmonyLib;
using Il2CppSLZ.Marrow;
using Il2CppTMPro;
using MelonLoader;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Infinite Reserve Ammo 2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Infinite Reserve Ammo 2")]
[assembly: AssemblyCopyright("Created by thebonerworksthebonerworks")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: NeutralResourcesLanguage("en")]
[assembly: MelonInfo(typeof(global::AmmoOnSpawnSpawner.AmmoOnSpawnSpawner), "Infinite Reserve Ammo 2", "1.0.0", "thebonerworks", null)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
[HarmonyPatch(typeof(AmmoInventory), "Awake")]
internal static class Patch
{
private static void Postfix(AmmoInventory __instance)
{
__instance.AddCartridge(__instance.lightAmmoGroup, 500000);
__instance.AddCartridge(__instance.mediumAmmoGroup, 500000);
__instance.AddCartridge(__instance.heavyAmmoGroup, 500000);
}
}
[HarmonyPatch(typeof(AmmoInventory), "RemoveCartridge")]
internal static class Patch2
{
private static void Postfix(AmmoInventory __instance)
{
__instance.AddCartridge(__instance.lightAmmoGroup, 500000);
__instance.AddCartridge(__instance.mediumAmmoGroup, 500000);
__instance.AddCartridge(__instance.heavyAmmoGroup, 500000);
}
}
[HarmonyPatch(typeof(TMP_Text), "set_text")]
internal class NewAmmoTextPatch
{
private static void Prefix(TMP_Text __instance, ref string value)
{
if (value == "∞")
{
return;
}
Transform val = __instance.transform;
bool flag = false;
bool flag2 = false;
while ((Object)(object)val != (Object)null)
{
string text = ((Object)val).name.ToLower();
if (text.Contains("hud"))
{
flag = true;
}
if ((text.Contains("txt_val_ammo") || text.StartsWith("txt_val_ammo_total")) && (Object)(object)((Component)val).GetComponent<TMP_Text>() != (Object)null)
{
flag2 = true;
}
val = val.parent;
}
if (!flag && !flag2)
{
return;
}
int result2;
if (flag2)
{
if (double.TryParse(value, out var _))
{
value = "∞";
}
}
else if (flag && int.TryParse(value, out result2))
{
value = "∞";
}
}
}
namespace AmmoOnSpawnSpawner;
public static class BuildInfo
{
public const string Name = "Infinite Reserve Ammo 2";
public const string Author = "thebonerworks";
public const string Company = "";
public const string Version = "1.0.0";
public const string DownloadLink = null;
}
public class AmmoOnSpawnSpawner : MelonMod
{
public const int AmmoCount = 500000;
}