public void AddCardTypeIfNotPresent(Card card) { if (this.addedCards.Contains(card)) { return; } this.addedCards.Add(card); int count = card.isVictory ? victoryCount : card.defaultSupplyCount; if (card.startingLocation != StartingLocation.Special) { this.list.Add(new CardGainAvailablility(card, count, card.startingLocation)); } card.AddAdditionalCardsNeeded(this); if (card.requiresSpoils) { this.AddCardTypeIfNotPresent(Cards.Spoils); } if (card.potionCost != 0) { this.AddCardTypeIfNotPresent(Cards.Potion); } if (card.isLooter) { this.AddCardTypeIfNotPresent(Cards.Ruins); } if (card.isFate) { //add boons ; } if (card.isDoom) { //add hexes ; } }