willuwontu_wills-wacky-cards/Wills Wacky Cards/Cards/Regular Cards/Shotgun.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnboundLib;
using UnboundLib.Cards;
using UnityEngine;
using WWC.Extensions;
using CardChoiceSpawnUniqueCardPatch.CustomCategories;

namespace WWC.Cards
{
    class Shotgun : CustomCard
    {
        public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
        {
            gun.ammo = 9;
            gun.gravity = 0.5f;
            gun.numberOfProjectiles = 4;
            gun.projectileSpeed = 1.5f;
            gun.bulletDamageMultiplier = 0.6f;
            gun.spread = .2f;
            gun.evenSpread = .5f;
            gun.recoilMuiltiplier = 5f;
            gun.destroyBulletAfter = 1.15f;
            gun.timeBetweenBullets = 0.25f;
            gun.GetAdditionalData().useMinimumReloadSpeed = true;
            gun.GetAdditionalData().minimumReloadSpeed = 5.0f;
            gun.GetAdditionalData().attacksPerAttack = 2;
            gun.GetAdditionalData().useAttacksPerAttack = true;
            gun.GetAdditionalData().useForcedAttackSpeed = true;
            gun.forceSpecificAttackSpeed = 1.15f;

            cardInfo.allowMultiple = false;
            cardInfo.categories = new CardCategory[] { CustomCardCategories.instance.CardCategory("GunType"), CustomCardCategories.instance.CardCategory("WWC Gun Type"), TRTCardCategories.TRT_Detective, TRTCardCategories.CannotDiscard, TRTCardCategories.TRT_Slot_2, TRTCardCategories.IgnoreMaxCardsCategory, TRTCardCategories.TRT_DoNotDropOnDeath };
            cardInfo.blacklistedCategories = new CardCategory[] { CustomCardCategories.instance.CardCategory("GunType"), TRTCardCategories.TRT_Slot_2 };
            WillsWackyCards.instance.DebugLog($"[{WillsWackyCards.ModInitials}][Card] {GetTitle()} Built");
        }
        public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
        {
            WillsWackyCards.instance.DebugLog($"[{WillsWackyCards.ModInitials}][Card] {GetTitle()} Added to Player {player.playerID}");
        }
        public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
        {
            WillsWackyCards.instance.DebugLog($"[{WillsWackyCards.ModInitials}][Card] {GetTitle()} removed from Player {player.playerID}");
        }

        protected override string GetTitle()
        {
            return "Shotgun";
        }
        protected override string GetDescription()
        {
            return "It's Double-Barreled!";
        }
        protected override GameObject GetCardArt()
        {
            return null;
        }
        protected override CardInfo.Rarity GetRarity()
        {
            return CardInfo.Rarity.Rare;
        }
        protected override CardInfoStat[] GetStats()
        {
            return new CardInfoStat[]
            {
                new CardInfoStat()
                {
                    positive = true,
                    stat = "Attack",
                    amount = "Double",
                    simepleAmount = CardInfoStat.SimpleAmount.notAssigned
                },
                new CardInfoStat()
                {
                    positive = true,
                    stat = "Bullets",
                    amount = "+4",
                    simepleAmount = CardInfoStat.SimpleAmount.notAssigned
                },
                new CardInfoStat()
                {
                    positive = true,
                    stat = "Ammo",
                    amount = "+9",
                    simepleAmount = CardInfoStat.SimpleAmount.notAssigned
                },
                new CardInfoStat()
                {
                    positive = false,
                    stat = "Minimum Reload Time",
                    amount = "5s",
                    simepleAmount = CardInfoStat.SimpleAmount.notAssigned
                },
                new CardInfoStat()
                {
                    positive = false,
                    stat = "Forced Attack Speed",
                    amount = "1.15s",
                    simepleAmount = CardInfoStat.SimpleAmount.notAssigned
                },
                new CardInfoStat()
                {
                    positive = false,
                    stat = "Damage",
                    amount = "-40%",
                    simepleAmount = CardInfoStat.SimpleAmount.notAssigned
                }
            };
        }
        protected override CardThemeColor.CardThemeColorType GetTheme()
        {
            return CardThemeColor.CardThemeColorType.DestructiveRed;
        }

        public override string GetModName()
        {
            return WillsWackyCards.ModInitials;
        }
    }
}
