// Handle post-card playing effects (move card to discard pile, spend AP costs, etc.)
    public override void NotifyOfEvent(AbstractEvent eventData)
    {
        if (eventData.type == EventType.CARD_PLAYED)
        {
            EventCardPlayed data       = (EventCardPlayed)eventData;
            AbstractCard    cardPlayed = data.cardPlayed;
            cardsPlayedThisTurn.Add(data.cardPlayed);
            numCardsPlayedThisTurn += 1;

            if (cardPlayed.COSTS_ALL_AP)
            {
                cardPlayed.OWNER.curAP -= cardPlayed.OWNER.curAP;   // Handle X-cost cards
            }
            else
            {
                cardPlayed.OWNER.curAP -= cardPlayed.COST;
            }
            if (cardPlayed.HasTag(CardTags.DESTROY))          // Destroy card
            {
                cardPlayed.OWNER.Destroy(cardPlayed);
            }
            else if (cardPlayed.IsTrait() || cardPlayed.HasTag(CardTags.SCOUR))                  // Scour stuff
            {
                cardPlayed.OWNER.Scour(cardPlayed);
            }
            else
            {
                if (cardPlayed.OWNER.GetHand().Contains(cardPlayed))            // This check is to prevent adding cards from "choice" mechanics from being added to the discard (see: Deckard's Instincts card)
                {
                    cardPlayed.OWNER.GetHand().Remove(cardPlayed);
                    cardPlayed.OWNER.GetDiscardPile().AddCard(cardPlayed);
                }
            }
        }
        else if (eventData.type == EventType.ARGUMENT_DESTROYED)
        {
            EventArgDestroyed data = (EventArgDestroyed)eventData;
            enemy.RecalculateIntents(data.argumentDestroyed);
        }
    }