Decompiled source of GamblingLab v3.0.0

Mods/GamblingMod.dll

Decompiled 6 months ago
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;
				}
			}
		}
	}
}