Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of GambitGambler v1.0.6
GambitGambler.dll
Decompiled 4 months agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("GambitGambler")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("GambitGambler")] [assembly: AssemblyTitle("GambitGambler")] [assembly: AssemblyVersion("1.0.0.0")] [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 GambitGambler { [BepInPlugin("GambitGambler", "Gambit Gambler", "1.0.6")] public class GambitGambler : BaseUnityPlugin { private const int VAL_1K = 1; private const int VAL_5K = 5; private const int VAL_10K = 10; private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Gambit Gambler Loaded!"); Harmony.CreateAndPatchAll(typeof(GambitGambler), (string)null); } [HarmonyPatch(typeof(EnemySpinny), "Awake")] [HarmonyPostfix] private static void ConfigureWheel(EnemySpinny __instance) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) Colors[] array = new Colors[9]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); Colors[] array2 = (Colors[])(object)array; int num = Mathf.Min(new int[3] { __instance.SliceColours.Length, __instance.colors.Length, array2.Length }); for (int i = 0; i < num; i++) { __instance.SliceColours[i] = array2[i]; __instance.colors[i] = GetColor(array2[i]); } } [HarmonyPatch(typeof(EnemySpinny), "Update")] [HarmonyPrefix] private static void EnemySpinny_Update_Prefix(EnemySpinny __instance) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Invalid comparison between Unknown and I4 //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Invalid comparison between Unknown and I4 //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Invalid comparison between Unknown and I4 //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Invalid comparison between Unknown and I4 //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Invalid comparison between Unknown and I4 //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Invalid comparison between Unknown and I4 //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Invalid comparison between Unknown and I4 //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Invalid comparison between Unknown and I4 if ((int)__instance.currentState == 10 && !(bool)AccessTools.Field(typeof(EnemySpinny), "jinglePlayed").GetValue(__instance) && (int)__instance.GetCurrentColorbyAngle(__instance.targetAngleDegrees) == 4) { __instance.enemySpinnyAnim.jingleRed.Play(((Component)__instance).transform.position, 1f, 1f, 1f, 1f); __instance.enemySpinnyAnim.hurtParticle.PlayParticles(); AccessTools.Field(typeof(EnemySpinny), "jinglePlayed").SetValue(__instance, true); } if ((int)__instance.currentState == 11 && !(bool)AccessTools.Field(typeof(EnemySpinny), "effectDone").GetValue(__instance)) { Colors currentColorbyAngle = __instance.GetCurrentColorbyAngle(__instance.targetAngleDegrees); if ((int)currentColorbyAngle == 2 || (int)currentColorbyAngle == 3 || (int)currentColorbyAngle == 1) { AccessTools.Field(typeof(EnemySpinny), "moneyToBeSpawned").SetValue(__instance, true); AccessTools.Field(typeof(EnemySpinny), "isCollidingMoney").SetValue(__instance, false); __instance.enemySpinnyAnim.moneyPrizeParticle.PlayParticles(); } else if ((int)currentColorbyAngle == 4) { ExecuteBankruptcy(__instance); } else if ((int)currentColorbyAngle == 0) { ExecuteSteal(__instance); } ((MonoBehaviour)__instance).Invoke("CameraShake", 0f); AccessTools.Field(typeof(EnemySpinny), "effectDone").SetValue(__instance, true); } } [HarmonyPatch(typeof(EnemySpinny), "SpawnMoneyBag")] [HarmonyPrefix] private static bool SpawnRewards(EnemySpinny __instance) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected I4, but got Unknown //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Invalid comparison between Unknown and I4 //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) Colors currentColorbyAngle = __instance.GetCurrentColorbyAngle(__instance.targetAngleDegrees); int num = (int)AccessTools.Field(typeof(RoundDirector), "haulGoal").GetValue(RoundDirector.instance); if (num <= 0) { num = 10; } int num2 = 0; int num3 = 0; Colors val = currentColorbyAngle; Colors val2 = val; switch (val2 - 1) { case 2: num2 = num; num3 = 1; break; case 0: num2 = num / 2; num3 = ((num2 > 10000) ? 3 : 2); break; case 1: num2 = num * Random.Range(15, 31) / 100; if (num2 < 1) { num2 = 1; } num3 = ((num2 > 5000) ? 1 : 0); break; } AccessTools.Method(typeof(EnemySpinny), "MoneyEffect", (Type[])null, (Type[])null).Invoke(__instance, null); AccessTools.Field(typeof(EnemySpinny), "moneyToBeSpawned").SetValue(__instance, false); if (num3 > 0) { SpawnSmartLoot(__instance, num2, num3); } else { DirectDeposit(__instance, num2 / 1000); } string text = FormatK(num2); string text2 = (((int)currentColorbyAngle == 3) ? ("JACKPOT! Gambit gave you: $" + text) : ("YOU WIN! Gambit gave you: $" + text)); SemiFunc.UIFocusText(text2, GetColor(currentColorbyAngle), Color.white, 5f); return false; } private static void ExecuteSteal(EnemySpinny instance) { //IL_00f7: 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)instance.playerTarget != (Object)(object)SemiFunc.PlayerAvatarLocal()) { return; } int num = SemiFunc.StatGetRunCurrency(); int num2 = ((Random.Range(1, 101) <= 80) ? Random.Range(15, 31) : Random.Range(31, 51)); int num3 = (int)AccessTools.Field(typeof(RoundDirector), "haulGoal").GetValue(RoundDirector.instance); int num4 = num3 / 1000; int num5 = Mathf.Max(1, num4 * 5 / 100); int num6 = num * num2 / 100; if (num6 < num5) { num6 = num5; } if (num < num6) { if (num > 0) { SemiFunc.StatSetRunCurrency(0); } TriggerEnemyAlert(instance, num6); } else { int num7 = num - num6; SemiFunc.StatSetRunCurrency(num7); TriggerMoneyUI(); string text = ((num2 > 30) ? "GAMBIT WAS GREEDY!" : "YOU LOST!"); SemiFunc.UIFocusText(text + " Gambit won and stole your money. You lost: $" + FormatK(num6), Color.red, Color.white, 4f); instance.enemySpinnyAnim.smallhurtParticle.Play(true); } } private static void ExecuteBankruptcy(EnemySpinny instance) { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)instance.playerTarget != (Object)(object)SemiFunc.PlayerAvatarLocal())) { int num = SemiFunc.StatGetRunCurrency(); if (num <= 0) { TriggerEnemyAlert(instance, 0); return; } string text = FormatK(num); SemiFunc.StatSetRunCurrency(0); TriggerMoneyUI(); SemiFunc.UIFocusText("TOTAL BANKRUPTCY! The Gambit took all of your money and you lost everything ($" + text + ")", Color.black, Color.red, 6f); instance.enemySpinnyAnim.smallhurtParticle.Play(true); instance.enemySpinnyAnim.HurtSound(); } } private static void DirectDeposit(EnemySpinny instance, int kAmount) { if (!SemiFunc.IsMultiplayer() || !((Object)(object)instance.playerTarget != (Object)(object)SemiFunc.PlayerAvatarLocal())) { int num = SemiFunc.StatGetRunCurrency(); SemiFunc.StatSetRunCurrency(num + kAmount); TriggerMoneyUI(); } } private static void SpawnSmartLoot(EnemySpinny instance, int totalAmountRaw, int count) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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) //IL_0102: Expected I4, but got Unknown int num = totalAmountRaw / count; GameObject val = AssetManager.instance.surplusValuableSmall; Type val2 = (Type)1; if (num > 10000) { val = AssetManager.instance.surplusValuableBig; val2 = (Type)3; } else if (num > 5000) { val = AssetManager.instance.surplusValuableMedium; val2 = (Type)2; } for (int i = 0; i < count; i++) { Vector3 val3 = instance.moneyBagSpawnPoint.position + Random.insideUnitSphere * 0.5f; GameObject val4 = ((!SemiFunc.IsMultiplayer()) ? Object.Instantiate<GameObject>(val, val3, Quaternion.identity) : PhotonNetwork.InstantiateRoomObject("Valuables/" + ((Object)val).name, val3, Quaternion.identity, (byte)0, (object[])null)); ValuableObject component = val4.GetComponent<ValuableObject>(); if ((Object)(object)component != (Object)null) { AccessTools.Field(typeof(ValuableObject), "dollarValueOverride").SetValue(component, num); AccessTools.Field(typeof(ValuableObject), "volumeType").SetValue(component, (int)val2); AccessTools.Method(typeof(ValuableObject), "DollarValueSetLogic", (Type[])null, (Type[])null)?.Invoke(component, null); } } } private static void TriggerEnemyAlert(EnemySpinny instance, int missingAmountK) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) string text; if (missingAmountK <= 0) { text = "YOU'RE BANKRUPT! You don't have anything to give Gambit, it got mad and alerted all nearby enemies."; } else { string text2 = FormatK(missingAmountK); text = "YOU FOOL! You gambled with Gambit but you don't have the $" + text2 + " it takes to pay him. He took the rest of your money and alerted all nearby enemies."; } SemiFunc.UIFocusText(text, Color.red, Color.white, 4f); instance.enemySpinnyAnim.smallhurtParticle.Play(true); instance.enemySpinnyAnim.HurtSound(); SemiFunc.EnemyInvestigate(((Component)instance).transform.position, 100f, false); } private static void TriggerMoneyUI() { if ((Object)(object)CurrencyUI.instance != (Object)null) { AccessTools.Method(typeof(SemiUI), "Show", (Type[])null, (Type[])null).Invoke(CurrencyUI.instance, null); AccessTools.Field(typeof(SemiUI), "showTimer").SetValue(CurrencyUI.instance, 2.5f); } } [HarmonyPatch(typeof(SemiUI), "Hide")] [HarmonyPrefix] private static bool PreventHide(SemiUI __instance) { if ((Object)(object)__instance == (Object)(object)CurrencyUI.instance && SemiFunc.RunIsLevel()) { float num = (float)AccessTools.Field(typeof(SemiUI), "showTimer").GetValue(__instance); if (num > 0f) { num -= Time.deltaTime; AccessTools.Field(typeof(SemiUI), "showTimer").SetValue(__instance, num); if (num > 0f) { return false; } } } return true; } private static string FormatK(int kAmount) { return SemiFunc.DollarGetString(kAmount) + "K"; } private static Color GetColor(Colors color) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected I4, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) if (1 == 0) { } Color result = (Color)((int)color switch { 3 => Color.white, 1 => Color.yellow, 2 => Color.green, 0 => Color.red, 4 => Color.black, _ => Color.white, }); if (1 == 0) { } return result; } } }