Decompiled source of Gamblers Choice v1.3.4
plugins/GamblersChoice.dll
Decompiled a day ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using CardChoiceSpawnUniqueCardPatch.CustomCategories; using GamblersChoice.Cards; using GamblersChoice.Effects; using HarmonyLib; using ModdingUtils.Extensions; using UnboundLib; using UnboundLib.Cards; using UnboundLib.GameModes; using UnityEngine; [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyVersion("0.0.0.0")] namespace GamblersChoice.Cards { public class AllIn : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gunAmmo.maxAmmo--; AllInEffect orAddComponent = ExtensionMethods.GetOrAddComponent<AllInEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { AllInEffect component = ((Component)player).gameObject.GetComponent<AllInEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "All In"; } protected override string GetDescription() { return "Every point is a new deal. Your power is random — and so is your life."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Damage"; val.amount = "Random [0.3x - 2.5x]"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "HP"; val.amount = "Random [0.5x - 1.5x]"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max Ammo"; val.amount = "-1"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class AnteUp : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.damage *= 1.35f; gun.knockback *= 1.2f; data.maxHealth *= 0.75f; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { } protected override string GetTitle() { return "Ante Up"; } protected override string GetDescription() { return "Bet your body on your bullets."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)0; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Damage"; val.amount = "+35%"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Knockback"; val.amount = "+20%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-25%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class Bailout : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 0.8f; characterStats.movementSpeed *= 0.9f; BailoutEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BailoutEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { BailoutEffect component = ((Component)player).gameObject.GetComponent<BailoutEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Bailout"; } protected override string GetDescription() { return "Too big to fail."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[4]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Cheat Death"; val.amount = "35% chance"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "On Bailout"; val.amount = "25% HP + 2s invuln"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-20%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Move Speed"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[3] = val; return (CardInfoStat[])(object)array; } } public class Bankroll : CustomCard { private static GameObject bulletPrefab; public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown gunAmmo.reloadTime += 0.5f; BankrollReloadEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BankrollReloadEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; player.GetGamblerData().bankrollStacks++; if (bulletPrefab == null) { bulletPrefab = new GameObject("BankrollBullet", new Type[1] { typeof(BankrollEffect) }); Object.DontDestroyOnLoad((Object)(object)bulletPrefab); } if (player.GetGamblerData().bankrollStacks == 1) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); ObjectsToSpawn val = new ObjectsToSpawn(); val.AddToProjectile = bulletPrefab; list.Add(val); gun.objectsToSpawn = list.ToArray(); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { player.GetGamblerData().bankrollStacks--; BankrollReloadEffect component = ((Component)player).gameObject.GetComponent<BankrollReloadEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } if (player.GetGamblerData().bankrollStacks <= 0) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab); gun.objectsToSpawn = list.ToArray(); } } protected override string GetTitle() { return "Bankroll"; } protected override string GetDescription() { return "Skim a little off the top — it pays out on reload."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[2]; CardInfoStat val = new CardInfoStat(); val.positive = false; val.stat = "Damage"; val.amount = "-20% (banked)"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Reload Time"; val.amount = "+0.5s"; val.simepleAmount = (SimpleAmount)0; array[1] = val; return (CardInfoStat[])(object)array; } } public class Blackjack : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[2] { GamblerCategory.Get(), GamblerCategory.GetBlackjackUnique() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { block.additionalBlocks++; data.maxHealth *= 0.8f; BlackjackEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BlackjackEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories; CardCategory blackjackUnique = GamblerCategory.GetBlackjackUnique(); if (!blacklistedCategories.Contains(blackjackUnique)) { blacklistedCategories.Add(blackjackUnique); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { BlackjackEffect component = ((Component)player).gameObject.GetComponent<BlackjackEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Blackjack"; } protected override string GetDescription() { return "Hit me."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[5]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "On Block"; val.amount = "Draw 3 cards"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "17-21"; val.amount = "Reflect + CD buff"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Additional Blocks"; val.amount = "+1"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Bust (>21)"; val.amount = "1.8x CD penalty"; val.simepleAmount = (SimpleAmount)0; array[3] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-20%"; val.simepleAmount = (SimpleAmount)0; array[4] = val; return (CardInfoStat[])(object)array; } } public class Bluff : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[2] { GamblerCategory.Get(), GamblerCategory.GetBluffUnique() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { block.additionalBlocks++; BluffEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BluffEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories; CardCategory bluffUnique = GamblerCategory.GetBluffUnique(); if (!blacklistedCategories.Contains(bluffUnique)) { blacklistedCategories.Add(bluffUnique); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { BluffEffect component = ((Component)player).gameObject.GetComponent<BluffEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Bluff"; } protected override string GetDescription() { return "Your block cooldown is a gamble — sometimes instant, sometimes glacial."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)2; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[2]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Blocks"; val.amount = "+1"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Block CD"; val.amount = "Random [0.2x - 2.5x]"; val.simepleAmount = (SimpleAmount)0; array[1] = val; return (CardInfoStat[])(object)array; } } public class CardCounter : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.damage *= 0.9f; CardCounterEffect orAddComponent = ExtensionMethods.GetOrAddComponent<CardCounterEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { CardCounterEffect component = ((Component)player).gameObject.GetComponent<CardCounterEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Card Counter"; } protected override string GetDescription() { return "Count your shots. Every seventh is a guaranteed jackpot hit."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)3; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[2]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Crit"; val.amount = "Every 7th shot: 2.5x (5th/3rd at higher stacks)"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Damage"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; return (CardInfoStat[])(object)array; } } public class CardShark : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 0.8f; CardSharkEffect orAddComponent = ExtensionMethods.GetOrAddComponent<CardSharkEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { CardSharkEffect component = ((Component)player).gameObject.GetComponent<CardSharkEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Card Shark"; } protected override string GetDescription() { return "What's yours is mine — and it always was."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Luck Stolen"; val.amount = "0.10 per opponent"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Steal Timing"; val.amount = "Each point start"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-20%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class ChipStack : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { characterStats.movementSpeed *= 1.1f; ChipStackEffect orAddComponent = ExtensionMethods.GetOrAddComponent<ChipStackEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { ChipStackEffect component = ((Component)player).gameObject.GetComponent<ChipStackEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Chip Stack"; } protected override string GetDescription() { return "Put your health where your mouth is."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "HP Bet"; val.amount = "20% per point"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Win Payout"; val.amount = "250% of bet"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Movement Speed"; val.amount = "+10%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class CoinFlip : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { CoinFlipEffect orAddComponent = ExtensionMethods.GetOrAddComponent<CoinFlipEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { CoinFlipEffect component = ((Component)player).gameObject.GetComponent<CoinFlipEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Coin Flip"; } protected override string GetDescription() { return "Heads you're fast, tails you're slow. Flip each point."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)7; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[1]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Attack Speed"; val.amount = "±30% per point (±50% / ±70% at higher stacks)"; val.simepleAmount = (SimpleAmount)0; array[0] = val; return (CardInfoStat[])(object)array; } } public class CompdDrinks : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.damage *= 0.9f; CompdDrinksEffect orAddComponent = ExtensionMethods.GetOrAddComponent<CompdDrinksEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { CompdDrinksEffect component = ((Component)player).gameObject.GetComponent<CompdDrinksEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Comp'd Drinks"; } protected override string GetDescription() { return "The house keeps your glass full — until it doesn't."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Passive Regen"; val.amount = "5 HP/s"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Regen Cutout"; val.amount = "25% every 4s"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Damage"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class DeadMansHand : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 1.2f; DeadMansHandEffect orAddComponent = ExtensionMethods.GetOrAddComponent<DeadMansHandEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { DeadMansHandEffect component = ((Component)player).gameObject.GetComponent<DeadMansHandEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Dead Man's Hand"; } protected override string GetDescription() { return "Aces and eights. If you're going down, take them with you."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[2]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Revenge Damage"; val.amount = "40% of Max HP"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Max HP"; val.amount = "+20%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; return (CardInfoStat[])(object)array; } } public class DealersHand : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[2] { GamblerCategory.Get(), GamblerCategory.GetDealersHandUnique() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.damage *= 0.85f; gunAmmo.maxAmmo = Mathf.Max(gunAmmo.maxAmmo - 1, 1); DealersHandEffect orAddComponent = ExtensionMethods.GetOrAddComponent<DealersHandEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories; CardCategory dealersHandUnique = GamblerCategory.GetDealersHandUnique(); if (!blacklistedCategories.Contains(dealersHandUnique)) { blacklistedCategories.Add(dealersHandUnique); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { DealersHandEffect component = ((Component)player).gameObject.GetComponent<DealersHandEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Dealer's Hand"; } protected override string GetDescription() { return "Every reload deals you a new hand — pray for a royal flush."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "On Reload"; val.amount = "Random damage buff"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Damage"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Ammo"; val.amount = "-1"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class DoubleOrNothing : CustomCard { private static GameObject bulletPrefab; public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown gun.attackSpeed *= 1.1f; player.GetGamblerData().doubleOrNothingStacks++; if (bulletPrefab == null) { bulletPrefab = new GameObject("DoubleOrNothingBullet", new Type[1] { typeof(DoubleOrNothingEffect) }); Object.DontDestroyOnLoad((Object)(object)bulletPrefab); } if (player.GetGamblerData().doubleOrNothingStacks == 1) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); ObjectsToSpawn val = new ObjectsToSpawn(); val.AddToProjectile = bulletPrefab; list.Add(val); gun.objectsToSpawn = list.ToArray(); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { player.GetGamblerData().doubleOrNothingStacks--; if (player.GetGamblerData().doubleOrNothingStacks <= 0) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab); gun.objectsToSpawn = list.ToArray(); } } protected override string GetTitle() { return "Double or Nothing"; } protected override string GetDescription() { return "Every shot's a bet. Might hit twice as hard. Might not hit at all."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Double Chance"; val.amount = "35%"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Nothing Chance"; val.amount = "15%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Attack Speed"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class Fold : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 0.85f; FoldEffect orAddComponent = ExtensionMethods.GetOrAddComponent<FoldEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { FoldEffect component = ((Component)player).gameObject.GetComponent<FoldEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Fold"; } protected override string GetDescription() { return "Know when to walk away."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Dodge Chance"; val.amount = "20%"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Speed on Dodge"; val.amount = "+40% (1.5s)"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class GravityRoulette : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[2] { GamblerCategory.Get(), GamblerCategory.GetGravityRouletteUnique() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.damage *= 1.15f; gun.numberOfProjectiles++; gun.attackSpeed *= 1.15f; GravityRouletteEffect orAddComponent = ExtensionMethods.GetOrAddComponent<GravityRouletteEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories; CardCategory gravityRouletteUnique = GamblerCategory.GetGravityRouletteUnique(); if (!blacklistedCategories.Contains(gravityRouletteUnique)) { blacklistedCategories.Add(gravityRouletteUnique); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { GravityRouletteEffect component = ((Component)player).gameObject.GetComponent<GravityRouletteEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Gravity Roulette"; } protected override string GetDescription() { return "Every bullet takes a different flight path — hope for the best."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Damage"; val.amount = "+15%"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Projectiles"; val.amount = "+1"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Attack Speed"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class HailMary : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { HailMaryEffect orAddComponent = ExtensionMethods.GetOrAddComponent<HailMaryEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { HailMaryEffect component = ((Component)player).gameObject.GetComponent<HailMaryEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Hail Mary"; } protected override string GetDescription() { return "The further behind you fall, the harder you hit. Desperation is fuel."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Behind by 1"; val.amount = "+25% dmg, +15% AS"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Behind by 3+"; val.amount = "+80% dmg, +45% AS"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Tied/Ahead"; val.amount = "-10% dmg, -10% AS"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class HotHand : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 0.85f; HotHandEffect orAddComponent = ExtensionMethods.GetOrAddComponent<HotHandEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { HotHandEffect component = ((Component)player).gameObject.GetComponent<HotHandEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Hot Hand"; } protected override string GetDescription() { return "Ride the streak. Every hit builds your fire — but a fumble burns you."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)0; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Streak Damage"; val.amount = "+20% per hit (+5% per extra stack)"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Fumble Chance"; val.amount = "15%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class HouseEdge : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { block.cdMultiplier *= 0.85f; gun.damage *= 0.85f; data.maxHealth *= 0.8f; HouseEdgeEffect orAddComponent = ExtensionMethods.GetOrAddComponent<HouseEdgeEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { HouseEdgeEffect component = ((Component)player).gameObject.GetComponent<HouseEdgeEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "House Edge"; } protected override string GetDescription() { return "Block at the right moment and send their damage right back. Stacks add interest."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[4]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Reflect on Block"; val.amount = "30% chance"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Block CD"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Damage"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-20%"; val.simepleAmount = (SimpleAmount)0; array[3] = val; return (CardInfoStat[])(object)array; } } public class InsurancePolicy : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 1.2f; gun.damage *= 0.9f; InsurancePolicyEffect orAddComponent = ExtensionMethods.GetOrAddComponent<InsurancePolicyEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; orAddComponent.UpdateDampener(); } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { InsurancePolicyEffect component = ((Component)player).gameObject.GetComponent<InsurancePolicyEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } else { component.UpdateDampener(); } } } protected override string GetTitle() { return "Insurance Policy"; } protected override string GetDescription() { return "The house always hedges."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Less RNG Swing"; val.amount = "35% per stack"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Max HP"; val.amount = "+20%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Damage"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class Jackpot : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.attackSpeed *= 1.15f; data.maxHealth *= 0.85f; JackpotEffect orAddComponent = ExtensionMethods.GetOrAddComponent<JackpotEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { JackpotEffect component = ((Component)player).gameObject.GetComponent<JackpotEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Jackpot"; } protected override string GetDescription() { return "Kill an enemy and pray for the big payout — a full heal."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Full Heal on Kill"; val.amount = "25% chance"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Attack Speed"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class LoadedDice : CustomCard { private static GameObject bulletPrefab; public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown player.GetGamblerData().loadedDiceStacks++; if (bulletPrefab == null) { bulletPrefab = new GameObject("LoadedDiceBullet", new Type[1] { typeof(LoadedDiceEffect) }); Object.DontDestroyOnLoad((Object)(object)bulletPrefab); } if (player.GetGamblerData().loadedDiceStacks == 1) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); ObjectsToSpawn val = new ObjectsToSpawn(); val.AddToProjectile = bulletPrefab; list.Add(val); gun.objectsToSpawn = list.ToArray(); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { player.GetGamblerData().loadedDiceStacks--; if (player.GetGamblerData().loadedDiceStacks <= 0) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab); gun.objectsToSpawn = list.ToArray(); } } protected override string GetTitle() { return "Loaded Dice"; } protected override string GetDescription() { return "Each bullet deals random damage — sometimes pitiful, sometimes devastating."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[1]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Damage"; val.amount = "Random [0.5x - 1.5x]"; val.simepleAmount = (SimpleAmount)0; array[0] = val; return (CardInfoStat[])(object)array; } } public class LoadedGame : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 0.9f; characterStats.movementSpeed *= 0.95f; LoadedGameEffect orAddComponent = ExtensionMethods.GetOrAddComponent<LoadedGameEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { LoadedGameEffect component = ((Component)player).gameObject.GetComponent<LoadedGameEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Loaded Game"; } protected override string GetDescription() { return "First few hands are on the house. After that, you're on your own. (Affects pre-shot rolls only.)"; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[4]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "First 5 Shots"; val.amount = "+0.20 luck"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "After Shot 5"; val.amount = "-0.10 luck"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "HP"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Movement Speed"; val.amount = "-5%"; val.simepleAmount = (SimpleAmount)0; array[3] = val; return (CardInfoStat[])(object)array; } } public class LuckyPenny : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { player.GetGamblerData().luck += 0.15f; data.maxHealth *= 1.15f; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { player.GetGamblerData().luck -= 0.15f; data.maxHealth /= 1.15f; } protected override string GetTitle() { return "Lucky Penny"; } protected override string GetDescription() { return "A small charm that tips the odds in your favor."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[2]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Max HP"; val.amount = "+15%"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Luck"; val.amount = "+0.15"; val.simepleAmount = (SimpleAmount)0; array[1] = val; return (CardInfoStat[])(object)array; } } public class MartingalePoint : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.damage *= 0.85f; gun.attackSpeed *= 1.1f; MartingalePointEffect orAddComponent = ExtensionMethods.GetOrAddComponent<MartingalePointEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { MartingalePointEffect component = ((Component)player).gameObject.GetComponent<MartingalePointEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Martingale (Point)"; } protected override string GetDescription() { return "Double the bet after every loss. It has to work eventually."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[4]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Per Loss"; val.amount = "+25% dmg, +12% aspd"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Max Loss Stacks"; val.amount = "3"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Base Damage"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Attack Speed"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[3] = val; return (CardInfoStat[])(object)array; } } public class MartingaleShot : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.damage *= 0.75f; gunAmmo.maxAmmo = Mathf.Max(gunAmmo.maxAmmo - 1, 1); data.maxHealth *= 0.85f; MartingaleShotEffect orAddComponent = ExtensionMethods.GetOrAddComponent<MartingaleShotEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { MartingaleShotEffect component = ((Component)player).gameObject.GetComponent<MartingaleShotEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Martingale (Shot)"; } protected override string GetDescription() { return "Keep doubling the bet until you score — the payout has to come eventually, right?"; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[5]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Bet Multiplier"; val.amount = "2x per shot until kill (cap 16x)"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "On Kill"; val.amount = "Payout for 2 more shots"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Base Damage"; val.amount = "-25%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Ammo"; val.amount = "-1"; val.simepleAmount = (SimpleAmount)0; array[3] = val; val = new CardInfoStat(); val.positive = false; val.stat = "HP"; val.amount = "-15%"; val.simepleAmount = (SimpleAmount)0; array[4] = val; return (CardInfoStat[])(object)array; } } public class Parlay : CustomCard { private static GameObject bulletPrefab; public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown gun.damage *= 0.8f; gun.attackSpeed *= 1.1f; data.maxHealth *= 0.9f; player.GetGamblerData().parlayStacks++; if (bulletPrefab == null) { bulletPrefab = new GameObject("ParlayBullet", new Type[1] { typeof(ParlayEffect) }); Object.DontDestroyOnLoad((Object)(object)bulletPrefab); } if (player.GetGamblerData().parlayStacks == 1) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); ObjectsToSpawn val = new ObjectsToSpawn(); val.AddToProjectile = bulletPrefab; list.Add(val); gun.objectsToSpawn = list.ToArray(); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { player.GetGamblerData().parlayStacks--; if (player.GetGamblerData().parlayStacks <= 0) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab); gun.objectsToSpawn = list.ToArray(); } } protected override string GetTitle() { return "Parlay"; } protected override string GetDescription() { return "Let it ride — every hit rolls for another."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)4; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[5]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Chain Chance"; val.amount = "40%"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Chain Damage"; val.amount = "75% per link"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Base Damage"; val.amount = "-20%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Attack Speed"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[3] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[4] = val; return (CardInfoStat[])(object)array; } } public class PokerFace : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { gun.attackSpeed *= 1.1f; PokerFaceEffect orAddComponent = ExtensionMethods.GetOrAddComponent<PokerFaceEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { PokerFaceEffect component = ((Component)player).gameObject.GetComponent<PokerFaceEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Poker Face"; } protected override string GetDescription() { return "Never let them see you sweat."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Shield on Block"; val.amount = "15-45 HP"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Shield Duration"; val.amount = "3s decay"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Attack Speed"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class PotCommitted : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { PotCommittedEffect orAddComponent = ExtensionMethods.GetOrAddComponent<PotCommittedEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; orAddComponent.Recalculate(); } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { PotCommittedEffect component = ((Component)player).gameObject.GetComponent<PotCommittedEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { component.RevertAll(); Object.Destroy((Object)(object)component); } else { component.Recalculate(); } } } protected override string GetTitle() { return "Pot Committed"; } protected override string GetDescription() { return "Too deep to fold now."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Per Gambler Card"; val.amount = "+7% damage"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Per Gambler Card"; val.amount = "+5% move speed"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Per Gambler Card"; val.amount = "-4% max HP"; val.simepleAmount = (SimpleAmount)0; array[2] = val; return (CardInfoStat[])(object)array; } } public class RicochetRoulette : CustomCard { private static GameObject bulletPrefab; public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown gun.projectileSpeed *= 1.15f; GamblerData gamblerData = player.GetGamblerData(); gamblerData.ricochetStacks++; if (bulletPrefab == null) { bulletPrefab = new GameObject("RicochetRouletteBullet", new Type[1] { typeof(RicochetRouletteEffect) }); Object.DontDestroyOnLoad((Object)(object)bulletPrefab); } if (gamblerData.ricochetStacks == 1) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); ObjectsToSpawn val = new ObjectsToSpawn(); val.AddToProjectile = bulletPrefab; list.Add(val); gun.objectsToSpawn = list.ToArray(); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { GamblerData gamblerData = player.GetGamblerData(); gamblerData.ricochetStacks--; if (gamblerData.ricochetStacks <= 0) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab); gun.objectsToSpawn = list.ToArray(); } } protected override string GetTitle() { return "Ricochet Roulette"; } protected override string GetDescription() { return "Your bullets bounce off walls — sometimes once, sometimes a dozen times."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)3; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[2]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Bounces"; val.amount = "Random [0-4]"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Bullet Speed"; val.amount = "+15%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; return (CardInfoStat[])(object)array; } } public class ShellGame : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth *= 0.9f; ShellGameEffect orAddComponent = ExtensionMethods.GetOrAddComponent<ShellGameEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { ShellGameEffect component = ((Component)player).gameObject.GetComponent<ShellGameEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Shell Game"; } protected override string GetDescription() { return "Block and spin the wheel — every block triggers a random bonus."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[2]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "On Block"; val.amount = "Random effect"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Max HP"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[1] = val; return (CardInfoStat[])(object)array; } } public class SideBet : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { data.maxHealth += 10f; characterStats.movementSpeed *= 0.9f; SideBetEffect orAddComponent = ExtensionMethods.GetOrAddComponent<SideBetEffect>(((Component)player).gameObject, false); orAddComponent.stacks++; } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { SideBetEffect component = ((Component)player).gameObject.GetComponent<SideBetEffect>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } } protected override string GetTitle() { return "Side Bet"; } protected override string GetDescription() { return "Winner takes all — loser pays double."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)1; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)8; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[4]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Heal on Kill"; val.amount = "40 HP"; val.simepleAmount = (SimpleAmount)0; array[0] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Debt on Death"; val.amount = "20% max HP"; val.simepleAmount = (SimpleAmount)0; array[1] = val; val = new CardInfoStat(); val.positive = true; val.stat = "Max HP"; val.amount = "+10"; val.simepleAmount = (SimpleAmount)0; array[2] = val; val = new CardInfoStat(); val.positive = false; val.stat = "Movement Speed"; val.amount = "-10%"; val.simepleAmount = (SimpleAmount)0; array[3] = val; return (CardInfoStat[])(object)array; } } public class SidePot : CustomCard { private static GameObject bulletPrefab; public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() }; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Expected O, but got Unknown gun.attackSpeed *= 1.1f; data.maxHealth *= 0.9f; SidePotManager orAddComponent = ExtensionMethods.GetOrAddComponent<SidePotManager>(((Component)player).gameObject, false); orAddComponent.stacks++; player.GetGamblerData().sidePotStacks++; if (bulletPrefab == null) { bulletPrefab = new GameObject("SidePotBullet", new Type[1] { typeof(SidePotEffect) }); Object.DontDestroyOnLoad((Object)(object)bulletPrefab); } if (player.GetGamblerData().sidePotStacks == 1) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); ObjectsToSpawn val = new ObjectsToSpawn(); val.AddToProjectile = bulletPrefab; list.Add(val); gun.objectsToSpawn = list.ToArray(); } } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { player.GetGamblerData().sidePotStacks--; SidePotManager component = ((Component)player).gameObject.GetComponent<SidePotManager>(); if (component != null) { component.stacks--; if (component.stacks <= 0) { Object.Destroy((Object)(object)component); } } if (player.GetGamblerData().sidePotStacks <= 0) { List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList(); list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab); gun.objectsToSpawn = list.ToArray(); } } protected override string GetTitle() { return "Side Pot"; } protected override string GetDescription() { return "Part of every hit is riding on the next roll."; } protected override GameObject GetCardArt() { return null; } protected override Rarity GetRarity() { return (Rarity)0; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)1; } public override string GetModName() { return "GC"; } protected override CardInfoStat[] GetStats() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_002d: 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_003c: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) CardInfoStat[] array = new CardInfoStat[3]; CardInfoStat val = new CardInfoStat(); val.positive = true; val.stat = "Delayed Damage"; val.amount = "30% held [0.5x-