internal CardReference(CardReference cardRef, bool runUpdateAbilities = true)
 {
     this.card = cardRef.card;
     this.cardID = cardRef.cardID;
     this.old = cardRef;
     if (runUpdateAbilities)
     UpdateAbilities();
 }
 public virtual CardReference[] DrawTopCard(int length)
 {
     CardReference[] result = new CardReference[length];
     for (int n = 0; n < length; n++)
     {
         result[n] = DrawCard(0);
     }
     return result;
 }
 internal BattlefieldCardReference(CardReference card, Player controller)
     : base(card, false)
 {
     if (plainsAbility == null)
         plainsAbility = new ActivatedAbility(new Cost(), new AddToManaPoolAction(controller, ManaAmount.Parse("W")), true, true);
     if (islandAbility == null)
         islandAbility = new ActivatedAbility(new Cost(), new AddToManaPoolAction(controller, ManaAmount.Parse("U")), true, true);
     if (swampAbility == null)
         swampAbility = new ActivatedAbility(new Cost(), new AddToManaPoolAction(controller, ManaAmount.Parse("B")), true, true);
     if (mountainAbility == null)
         mountainAbility = new ActivatedAbility(new Cost(), new AddToManaPoolAction(controller, ManaAmount.Parse("R")), true, true);
     if (forestAbility == null)
         forestAbility = new ActivatedAbility(new Cost(), new AddToManaPoolAction(controller, ManaAmount.Parse("G")), true, true);
     this.controller = controller;
     UpdateAbilities();
 }
 public UICard(CardReference card, int showingGameState)
 {
     this.card = card;
     currentState = showingGameState;
 }
 internal HandCardReference(CardReference card)
     : base(card)
 {
 }
 internal DeckCardReference(CardReference card)
     : base(card)
 {
 }