// 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); } }