public virtual void ClearDecks()
    {
        if (!AbilityDiscard.IsEmpty)
        {
            AbilityDiscard.Empty();
            RaiseDiscard(AbilityDiscard);
        }

        if (!AbilityDeck.IsEmpty)
        {
            AbilityDeck.Empty();
            RaiseMain(AbilityDeck);
        }

        if (!Hand.IsEmpty)
        {
            Hand.Empty();
            RaiseHand(Hand);
        }

        if (!BoostDeck.IsEmpty)
        {
            BoostDeck.Empty();
            RaiseBoost(BoostDeck);
        }
    }
    public virtual void SetupBoostDeck(List <BoostCardData> boostDeckConfig)
    {
        if (BoostDeck.Count > 0)
        {
            BoostDeck.Empty();
        }

        foreach (BoostCardData boostData in boostDeckConfig)
        {
            BoostCard newBoostCard = new BoostCard(boostData);
            BoostDeck.Add(newBoostCard);
        }

        BoostDeck.Shuffle();
        RaiseBoost(BoostDeck);
    }
    public virtual void PlayBoostCard()
    {
        BoostCard lastCard = BoostDeck.TopItem;

        Actions--;
        lastCard.Play();
        // doesn't maintain boost card if it's out of uses
        if (lastCard.Uses == 0)
        {
            BoostDeck.Remove(BoostDeck.LastIndex);
        }
        else
        {
            BoostDeck.Remove(BoostDeck.LastIndex);
            BoostDeck.Add(lastCard, DeckPosition.Bottom);
        }
        RaiseActions(Actions);
        RaiseBoost(BoostDeck);
    }