using System;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AmmoLab;
using BoneLib;
using BoneLib.BoneMenu;
using GamblingMod;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSLZ.Marrow;
using Il2CppSLZ.Marrow.Data;
using MelonLoader;
using Microsoft.CodeAnalysis;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: MelonInfo(typeof(Core), "GamblingMod", "1.0.0", "freakycheesy", null)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("GamblingMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("GamblingMod")]
[assembly: AssemblyTitle("GamblingMod")]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace GamblingMod
{
public class Core : MelonMod
{
public enum AmmoGroupEnum
{
light,
medium,
heavy
}
public static int gambleAmount;
public static AmmoGroup ammoGroup;
public AmmoGroupEnum ammoEnum = AmmoGroupEnum.light;
public static Page page;
private static FunctionElement gambleinfo;
private static Color red => Color.HSVToRGB(0f, 0.7f, 1f);
public override void OnInitializeMelon()
{
((MelonBase)this).LoggerInstance.Msg("Initialized.");
Menu.Initialize();
AmmoInventoryUtils.OnAwake = (Action<AmmoInventory>)Delegate.Combine(AmmoInventoryUtils.OnAwake, (Action<AmmoInventory>)delegate
{
MakeMenu();
});
}
private void MakeMenu()
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)Player.UIRig == (Object)null) && page == null)
{
ChangeAmmoGroup(ammoEnum);
page = Page.Root.CreatePage("Gambling Mod", red, 0, true);
page.Name = "Gambling <color=white>Mod";
page.CreateEnum("Change Ammo Group", Color.yellow, (Enum)ammoEnum, (Action<Enum>)ChangeAmmoGroup);
page.CreateInt("Amount", Color.blue, 10, 10, 10, 200, (Action<int>)ChangeAmount);
gambleinfo = page.CreateFunction("the gamble info", Color.white, (Action)null);
page.CreateFunction("Gamble", red, (Action)Gamble);
}
}
public static void ChangeAmount(int amount)
{
gambleAmount = amount;
}
public static void Gamble()
{
if (!Object.op_Implicit((Object)(object)ammoGroup))
{
Log("No ammo in your dumb pouch");
return;
}
if (AmmoInventory.Instance.GetCartridgeCount(((Il2CppArrayBase<CartridgeData>)(object)ammoGroup.cartridges)[0]) < gambleAmount)
{
Log("Not enough Ammo");
return;
}
AmmoInventoryUtils.RemoveCartridgeToInventory(ammoGroup, gambleAmount);
int num = Random.Range(0, gambleAmount);
if (num <= Mathf.RoundToInt((float)(num / 2)))
{
int num2 = gambleAmount * Random.Range(0, 10);
Log($"You won {num2} ammo\nwoohoo");
AmmoInventoryUtils.AddAmmoToInventory(num2);
}
else
{
Log($"You lost {gambleAmount} ammo lol");
}
}
public static void Log(string context)
{
((Element)gambleinfo).ElementName = "the gamble info:\n";
FunctionElement obj = gambleinfo;
((Element)obj).ElementName = ((Element)obj).ElementName + context;
}
public static void ChangeAmmoGroup(Enum i)
{
if (i is AmmoGroupEnum)
{
switch ((AmmoGroupEnum)(object)i)
{
case AmmoGroupEnum.light:
ammoGroup = AmmoInventory.Instance.lightAmmoGroup;
break;
case AmmoGroupEnum.medium:
ammoGroup = AmmoInventory.Instance.mediumAmmoGroup;
break;
case AmmoGroupEnum.heavy:
ammoGroup = AmmoInventory.Instance.mediumAmmoGroup;
break;
}
}
}
}
}