Example #1
0
    private Card RandomEnergyCard()
    {
        int         value = Random.Range(0, 100);
        Card        card  = null;
        List <Temp> list  = new List <Temp>();

        for (int i = 0; i < TBL_ENERGY_CARD.CountEntities; i++)
        {
            TBL_ENERGY_CARD data = TBL_ENERGY_CARD.GetEntity(i);
            EnergyCard      c    = new EnergyCard(data);
            list.Add(new Temp(c.percent, CardType.EnergyCard, c));
        }

        float cumulative = 0f;

        for (int i = 0; i < list.Count; i++)
        {
            cumulative += list[i].percent;
            if (value <= cumulative)
            {
                card = list[i].card;
                break;
            }
        }
        return(card);
    }
        public void TriggerCardPlayer(EnergyCard card, PokemonCard attachedTo)
        {
            GameController.Instance.playerHand.RemoveCard(card);

            cardImage.sprite = null;
            cardImage.rectTransform.localScale = new Vector3(0.1f, 0.1f, 1);
            cardImage.color = new Color(cardImage.color.r, cardImage.color.g, cardImage.color.b, 0);

            loader.LoadSprite(card, cardImage);

            cardImage.rectTransform.LeanAlpha(1.0f, 0.2f);
            cardImage.rectTransform.LeanScale(new Vector3(1.0f, 1.0f, 1.0f), 0.25f).setOnComplete(() =>
            {
                cardImage.rectTransform.LeanScale(new Vector3(0.1f, 0.1f, 0.1f), 0.2f).setDelay(0.25f).setOnComplete(() =>
                {
                    var target          = GameController.Instance.GetCardRendererById(attachedTo.Id);
                    var targetTransform = target.GetComponent <RectTransform>();
                    cardImage.sprite    = energyResourceManager.GetSpriteForEnergyCard(card);
                    cardImage.color     = new Color(cardImage.color.r, cardImage.color.g, cardImage.color.b, 0);
                    var attachedEnergy  = Instantiate(attachedEnergyPrefab, attachedParent.transform);

                    var energyRectTransform           = attachedEnergy.GetComponent <RectTransform>();
                    energyRectTransform.localPosition = new Vector3(400, 0);
                    attachedEnergy.transform.SetParent(targetTransform.transform);
                    attachedEnergy.GetComponent <Image>().sprite = EnergyResourceManager.Instance.GetSpriteForEnergyCard(card);

                    energyRectTransform.LeanMove(new Vector3(20 * (attachedTo.AttachedEnergy.Count + 1), -targetTransform.rect.height + 20, 0), 0.75f).setEaseOutCirc().setDestroyOnComplete(true).setOnComplete(() =>
                    {
                        target.insertAttachedEnergy(card);
                        GameEventHandler.Instance.EventCompleted();
                    });
                });
            });
        }
        public void AttachedAmountMoreThanDiscard()
        {
            var effect = new DiscardAttachedEnergy
            {
                Amount        = 1,
                TargetingMode = TargetingMode.OpponentActive,
            };

            var opponent = new Player();
            var player   = new Player();

            opponent.ActivePokemonCard = new PokemonCard(opponent);
            var goodCard = new EnergyCard();

            INetworkPlayer sub = Substitute.For <INetworkPlayer>();

            sub.SendAndWaitForResponse <CardListMessage>(Arg.Any <NetworkMessage>())
            .ReturnsForAnyArgs(new CardListMessage()
            {
                Cards = new List <NetworkId> {
                    goodCard.Id
                }
            });

            player.SetNetworkPlayer(sub);

            opponent.ActivePokemonCard.AttachedEnergy.Add(new EnergyCard());
            opponent.ActivePokemonCard.AttachedEnergy.Add(goodCard);

            effect.Process(new GameField(), player, opponent, null);

            Assert.Single(opponent.ActivePokemonCard.AttachedEnergy);
            Assert.Equal(goodCard.Id, opponent.DiscardPile[0].Id);
            Assert.Single(opponent.DiscardPile);
        }
Example #4
0
    internal void insertAttachedEnergy(EnergyCard attachedEnergy)
    {
        var attachedObject = Instantiate(AttachedEnergyPrefab, AttachedEnergyList.transform);

        attachedObject.GetComponent <AttachedEnergy>().energyCard = attachedEnergy;
        attachedObject.GetComponent <Image>().sprite = EnergyResourceManager.Instance.GetSpriteForEnergyCard(attachedEnergy);
    }
Example #5
0
        public void RetreatActivePokemon_Energy_Removed()
        {
            var p          = new Player();
            var card       = new PokemonCard(p);
            var card2      = new PokemonCard(p);
            var energyCard = new EnergyCard()
            {
                Amount = 1
            };

            p.Hand.Add(energyCard);

            p.SetActivePokemon(card);
            p.SetBenchedPokemon(card2);

            var game = new GameField()
            {
                ActivePlayerIndex = 0
            };

            game.AddPlayer(p);
            game.AddPlayer(new Player());
            game.PlayEnergyCard(energyCard, p.ActivePokemonCard);

            p.RetreatActivePokemon(p.BenchedPokemon.ValidPokemonCards.First(), new List <EnergyCard>(p.ActivePokemonCard.AttachedEnergy), new GameField());

            Assert.Equal(card2.Id, p.ActivePokemonCard.Id);
            Assert.False(card.AttachedEnergy.Any());
        }
Example #6
0
 internal void StartAttachingEnergy(EnergyCard card)
 {
     SpecialState      = SpecialGameState.AttachingEnergyToPokemon;
     currentEnergyCard = card;
     infoText.text     = "Select a Pokémon to attach your energy to";
     EnableButtons();
 }
Example #7
0
        public void OnCancelClick()
        {
            SpecialState = SpecialGameState.None;
            selectFromListPanel.SetActive(false);

            if (IsMyTurn)
            {
                infoText.text = "Your turn!";
            }
            else
            {
                infoText.text = "Opponent's turn!";
            }

            foreach (var card in selectedCards)
            {
                ToggleCardSelected(GetCardRendererById(card.Id));
            }

            selectedCards.Clear();
            currentDeckFilters.Clear();
            currentEnergyCard   = null;
            currentEvolvingCard = null;
            EnableButtons();
        }
Example #8
0
    // 에너지 카드 사용
    private float UseEnergyCard(EnergyCard card)
    {
        guard = 0;

        AddEnergy(card.energyIncrease);

        return(GameSetting.EnergyCardTime);
    }
Example #9
0
        public void CardPlayed(EnergyCard card, PokemonCard target)
        {
            if (target.Name.Contains("Blaine") && card.EnergyType == EnergyTypes.Fire)
            {
                AcceptedRule = true;
                TargetId     = target.Id;
            }

            CardsAttachedThisTurn++;
        }
Example #10
0
        private void OnTryAttachEnergy(CardRenderer cardRenderer)
        {
            PokemonCard pokemon = cardRenderer.card as PokemonCard;

            if (pokemon == null || Player.Hand.Contains(pokemon) || !pokemon.Owner.Id.Equals(myId))
            {
                return;
            }

            NetworkManager.Instance.gameService.AttachEnergy(gameField.Id, pokemon.Id, currentEnergyCard.Id);
            currentEnergyCard = null;
            SpecialState      = SpecialGameState.None;
            infoText.text     = string.Empty;
            EnableButtons();
        }
Example #11
0
        public void PlayEnergyCard(EnergyCard energyCard, PokemonCard target)
        {
            if (!EnergyRule.CanPlayEnergyCard(energyCard, target))
            {
                GameLog.AddMessage("Energy-rule disallowed playing the energy");
                return;
            }

            if (!ActivePlayer.Hand.Contains(energyCard) || ActivePlayer.Hand.Contains(target))
            {
                GameLog.AddMessage($"{ActivePlayer.NetworkPlayer?.Name} tried something wierd");
                return;
            }

            foreach (var ability in target.TemporaryAbilities)
            {
                if (ability is DisableEnergyAttachmentAbility)
                {
                    GameLog.AddMessage($"Ability {ability.Name} stops attaching energy to {target.Name}");
                    return;
                }
            }

            GameLog.AddMessage($"Attaching {energyCard.GetName()} to {target.Name}");

            EnergyRule.CardPlayed(energyCard, target);
            energyCard.RevealToAll();
            target.AttachedEnergy.Add(energyCard);

            bool fromHand = false;

            if (ActivePlayer.Hand.Contains(energyCard))
            {
                fromHand = true;
                ActivePlayer.Hand.Remove(energyCard);
            }

            SendEventToPlayers(new EnergyCardsAttachedEvent()
            {
                AttachedTo = target,
                EnergyCard = energyCard
            });

            energyCard.OnAttached(target, fromHand, this);

            PushGameLogUpdatesToPlayers();
        }
        public void CanAttachOnlyOneNonFireEnergyToBlain(EnergyTypes energyType)
        {
            var card = new EnergyCard {
                EnergyType = energyType
            };
            var pokemon = new PokemonCard {
                Name = "Blaine's Pickachu"
            };

            var rule = new BlainesEnergyRule();

            Assert.True(rule.CanPlayEnergyCard(card, pokemon));

            rule.CardPlayed(card, pokemon);

            Assert.False(rule.CanPlayEnergyCard(card, pokemon));
        }
        public void CanAttach2FireToBlainesPokemon()
        {
            var card = new EnergyCard {
                EnergyType = EnergyTypes.Fire
            };
            var pokemon = new PokemonCard {
                Name = "Blaine's Pickachu"
            };

            var rule = new BlainesEnergyRule();

            Assert.True(rule.CanPlayEnergyCard(card, pokemon));

            rule.CardPlayed(card, pokemon);

            Assert.True(rule.CanPlayEnergyCard(card, pokemon));
        }
        public void CanOnlyAttachToSameBlainePokemon()
        {
            var card = new EnergyCard {
                EnergyType = EnergyTypes.Fire
            };
            var pokemon = new PokemonCard {
                Name = "Blaine's Pickachu"
            };
            var pokemon2 = new PokemonCard {
                Name = "Blaine's Raichi"
            };

            var rule = new BlainesEnergyRule();

            Assert.True(rule.CanPlayEnergyCard(card, pokemon));

            rule.CardPlayed(card, pokemon);

            Assert.False(rule.CanPlayEnergyCard(card, pokemon2));
        }
        public Sprite GetSpriteForEnergyCard(EnergyCard energyCard)
        {
            if (energyCard.AttachedIconOverridden)
            {
                switch (energyCard.EnergyOverrideType)
                {
                case EnergyOverriders.Buzzap:
                    return(BuzzapIcon);
                }
            }

            if (energyCard.Amount == 2 && energyCard.EnergyType == EnergyTypes.Colorless)
            {
                return(DoubleColorless);
            }
            if (!energyCard.IsBasic)
            {
                return(Special);
            }

            return(Icons[energyCard.EnergyType]);
        }
Example #16
0
 public PokemonCard(string name, string cardSet, Rarity cardRarity, string cardNumber, 
                    string illustrator, string hp, string stage, 
                    EnergyCard.EnergyType pokemonType,
                    string evolvedFrom, string abilityName, string abilityText,
                    List<Move> moveData, EnergyCard.EnergyType weaknessType,
                    string weaknessAmount, EnergyCard.EnergyType resistanceType,
                    string resistanceAmount, int retreatCost, string cardUrl, string cardImagePath)
     : base(name, cardSet, cardRarity, cardNumber, illustrator, cardUrl, cardImagePath)
 {
     this.HP = hp;
     this.Stage = stage;
     this.PokemonType = pokemonType;
     this.EvolvedFrom = evolvedFrom;
     this.AbilityName = abilityName;
     this.AbilityText = abilityText;
     this.MoveData = moveData;
     this.WeaknessType = weaknessType;
     this.WeaknessAmount = weaknessAmount;
     this.ResistanceType = resistanceType;
     this.ResistanceAmount = resistanceAmount;
     this.RetreatCost = retreatCost;
     this.CardPrice = CardDownloader.GetPriceOfCard(cardSet, cardNumber);
 }
Example #17
0
        public void EvolveAndAttachEnergy()
        {
            var game = new GameField();

            game.InitTest();
            game.GameState = GameFieldState.InTurn;

            var player = game.ActivePlayer;

            player.TurnsTaken = 32;
            var pokemon = new PokemonCard(player)
            {
                Hp = 100, PokemonName = "Basic", Stage = 0, PlayedThisTurn = false
            };
            var evolution = new PokemonCard(player)
            {
                Hp = 100, EvolvesFrom = "Basic", Name = "Evolver", Stage = 1
            };
            var energyCard = new EnergyCard()
            {
                Amount = 1, EnergyType = EnergyTypes.Colorless
            };

            player.ActivePokemonCard = pokemon;

            player.Hand.Add(evolution);
            player.Hand.Add(energyCard);

            game.EvolvePokemon(pokemon, evolution);

            Assert.Equal(evolution, player.ActivePokemonCard);

            game.PlayEnergyCard(energyCard, evolution);

            Assert.Single(evolution.AttachedEnergy);
        }
        public void DeckSearched()
        {
            var effect = new SearchDeckForCardEffect()
            {
                CardType = CardType.Any
            };

            var player = new Player();

            player.Id = NetworkId.Generate();
            var target = new EnergyCard();

            player.Deck.Cards.Push(target);
            player.Deck.Cards.Push(new EnergyCard());
            player.Deck.Cards.Push(new EnergyCard());
            player.Deck.Cards.Push(new EnergyCard());
            player.Deck.Cards.Push(new EnergyCard());

            var sub = Substitute.For <INetworkPlayer>();

            sub.SendAndWaitForResponse <CardListMessage>(Arg.Any <NetworkMessage>()).ReturnsForAnyArgs(new CardListMessage {
                Cards = new List <NetworkId> {
                    target.Id
                }
            });
            player.SetNetworkPlayer(sub);

            var game = new GameField();

            game.AddPlayer(player);
            effect.Process(game, player, null, null);

            Assert.Single(player.Hand);
            Assert.Equal(4, player.Deck.Cards.Count);
            Assert.Equal(target.Id, player.Hand[0].Id);
        }
Example #19
0
        public bool CanPlayEnergyCard(EnergyCard card, PokemonCard target)
        {
            if (AcceptedRule && !target.Id.Equals(TargetId))
            {
                return(false);
            }

            if (target.Name.Contains("Blaine") && card.EnergyType == EnergyTypes.Fire)
            {
                if (TargetId != null)
                {
                    return(target.Id.Equals(TargetId));
                }

                return(CardsAttachedThisTurn < 2);
            }

            if (AcceptedRule)
            {
                return(false);
            }

            return(CardsAttachedThisTurn < 1);
        }
Example #20
0
        public void DiscardEnergyCard(EnergyCard energyCard, GameField game, bool isExtraCost = false)
        {
            if (!isExtraCost)
            {
                var preventer = TemporaryAbilities.OfType <EffectPreventer>().FirstOrDefault();

                if (preventer != null)
                {
                    game.GameLog.AddMessage($"Discard energy card prevented by {preventer.Name}");
                    return;
                }
            }

            AttachedEnergy.Remove(energyCard);
            Owner.DiscardPile.Add(energyCard);

            game?.SendEventToPlayers(new AttachedEnergyDiscardedEvent
            {
                FromPokemonId = Id,
                DiscardedCard = energyCard
            });

            energyCard.OnPutInDiscard(Owner);
        }
Example #21
0
        public List<string> getListOfPokemon(string name, string text, string evolvesFrom, string cardType, 
            BaseCard.Rarity rarity, string cardSet, int hp, int retreat, EnergyCard.EnergyType weakness,
            EnergyCard.EnergyType resistance, string illustrator)
        {
            List<string> results = new List<string>();

            string cardSetUrl = cardSetSearchDictionary[cardSet];

            string queryString = BASE_SEARCH_URL + name + SEARCH_ALL_POKEMON_URL + cardSetUrl;

            HtmlDocument doc = web.Load(Uri.EscapeUriString(POKEMON_CARD_URL + queryString));

            // Check if the user input returns any results on the website
            if (doc.DocumentNode.SelectSingleNode(XPATH_NO_RESULT_FOUND) != null)
            {
                // Search turned up no results
                return null;
            }
            HtmlNode resultNode = doc.DocumentNode.SelectSingleNode("//*[@id='cardResults']");
            string numberOfPages = doc.DocumentNode.SelectSingleNode("//*[@id='cards-load-more']/div/span").InnerText;
            string[] stringSplit = numberOfPages.Split();
            int pagesToSearch = Int32.Parse(stringSplit[stringSplit.Length - 1]);

            if (pagesToSearch > 50)
            {
                Console.WriteLine("Please enter more search criteria");
                return null;
            }
            for (int i = 1; i <= pagesToSearch; ++i)
            {
                HtmlNodeCollection resultNodes = resultNode.SelectNodes(".//li/a");
                foreach (HtmlNode searchNode in resultNodes)
                {
                    results.Add(searchNode.Attributes["href"].Value);
                }
                if (i != pagesToSearch)
                {
                    string url = doc.DocumentNode.SelectSingleNode("//*[@id='cards-load-more']/div/a[2]").Attributes["href"].Value;
                    doc = web.Load(Uri.EscapeUriString(POKEMON_CARD_URL + url));
                    resultNode = doc.DocumentNode.SelectSingleNode("//*[@id='cardResults']");
                }
            }
            return results;
        }
Example #22
0
    void SetCard()
    {
        int startCount = CardSetting.AttackCardStartCount;

        while (startCount > 0)
        {
            int        random = Random.Range(0, TBL_ATTACK_CARD.CountEntities);
            AttackCard card   = new AttackCard(TBL_ATTACK_CARD.GetEntity(random));
            if (!CheckDuplicate(card))
            {
                cardList.Add(card);
                startCount--;
            }
        }

        startCount = CardSetting.EnergyCardStartCount;
        while (startCount > 0)
        {
            int        random = Random.Range(0, TBL_ENERGY_CARD.CountEntities);
            EnergyCard card   = new EnergyCard(TBL_ENERGY_CARD.GetEntity(random));
            if (!CheckDuplicate(card))
            {
                cardList.Add(card);
                startCount--;
            }
        }

        startCount = CardSetting.GuardCardStartCount;
        while (startCount > 0)
        {
            int       random = Random.Range(0, TBL_GUARD_CARD.CountEntities);
            GuardCard card   = new GuardCard(TBL_GUARD_CARD.GetEntity(random));
            if (!CheckDuplicate(card))
            {
                cardList.Add(card);
                startCount--;
            }
        }

        startCount = CardSetting.HealCardStartCount;
        while (startCount > 0)
        {
            int      random = Random.Range(0, TBL_HEAL_CARD.CountEntities);
            HealCard card   = new HealCard(TBL_HEAL_CARD.GetEntity(random));
            if (!CheckDuplicate(card))
            {
                cardList.Add(card);
                startCount--;
            }
        }

        startCount = CardSetting.MoveCardStartCount;
        while (startCount > 0)
        {
            int      random = Random.Range(0, TBL_MOVE_CARD.CountEntities);
            MoveCard card   = new MoveCard(TBL_MOVE_CARD.GetEntity(random));
            if (!CheckDuplicate(card))
            {
                cardList.Add(card);
                startCount--;
            }
        }



        Shuffle(cardList);

        //for(int i=0; i<list.Count; i++)
        //{
        //    cardPos[i].GetComponent<CardComponent>().SetCard(list[i]);
        //}

        UpdateCardPos();
    }
Example #23
0
        public void AttachEnergy(EnergyCard energyCard, GameField game)
        {
            energyCard.RevealToAll();
            AttachedEnergy.Add(energyCard);
            bool fromHand = false;

            if (Owner.Hand.Contains(energyCard))
            {
                Owner.Hand.Remove(energyCard);
                fromHand = true;
            }
            else if (Owner.DiscardPile.Contains(energyCard))
            {
                Owner.DiscardPile.Remove(energyCard);
            }

            game.SendEventToPlayers(new EnergyCardsAttachedEvent()
            {
                AttachedTo = this,
                EnergyCard = energyCard
            });

            energyCard.OnAttached(this, fromHand, game);

            switch (energyCard.EnergyType)
            {
            case EnergyTypes.All:
            case EnergyTypes.Colorless:
                game.TriggerAbilityOfType(TriggerType.EnergyAttached, this, 0, this);
                break;

            case EnergyTypes.Water:
                game.TriggerAbilityOfType(TriggerType.WaterAttached, this, 0, this);
                break;

            case EnergyTypes.Fire:
                game.TriggerAbilityOfType(TriggerType.FireAttached, this, 0, this);
                break;

            case EnergyTypes.Grass:
                game.TriggerAbilityOfType(TriggerType.GrassAttached, this, 0, this);
                break;

            case EnergyTypes.Electric:
                game.TriggerAbilityOfType(TriggerType.ElectricAttached, this, 0, this);
                break;

            case EnergyTypes.Psychic:
                game.TriggerAbilityOfType(TriggerType.PsychicAttached, this, 0, this);
                break;

            case EnergyTypes.Fighting:
                game.TriggerAbilityOfType(TriggerType.FightingAttached, this, 0, this);
                break;

            case EnergyTypes.Darkness:
                break;

            case EnergyTypes.Steel:
                break;

            case EnergyTypes.Fairy:
                break;

            case EnergyTypes.Dragon:
                break;

            default:
                break;
            }
        }
Example #24
0
 public void CardPlayed(EnergyCard card, PokemonCard target)
 {
     CardsPlayedThisTurn++;
 }
Example #25
0
 // Get By Type
 public List<BaseCard> GetCardsByType(EnergyCard.EnergyType key, List<BaseCard> searchList)
 {
     List<BaseCard> resultList = new List<BaseCard>();
     foreach (PokemonCard card in searchList)
     {
         if (card.PokemonType == key)
         {
             resultList.Add(card);
         }
     }
     return resultList;
 }
Example #26
0
 public bool CanPlayEnergyCard(EnergyCard card, PokemonCard target)
 {
     return(CardsPlayedThisTurn == 0);
 }
Example #27
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pokemonName"></param>
        /// <returns></returns>
        public async Task<List<Tuple<string, string>>> SearchWebsite(string pokemonName, string set, string number, 
                                                                     BaseCard.Rarity rarity, EnergyCard.EnergyType energyType)
        {
            List<BaseCard> allResults = new List<BaseCard>();

            //Console.WriteLine("Awaiting pokemon card results at " + DateTime.Now);
            await getListOfPokemonByName(pokemonName, set, number, rarity, energyType);
            //Console.WriteLine("Pokemon card results received at " + DateTime.Now);

            List<Tuple<string, string>> resultList = new List<Tuple<string, string>>();

            //Console.WriteLine("Downloading images at " + DateTime.Now);
            foreach (Tuple<string, string, string> result in results)
            {
                cardUrl = POKEMON_CARD_URL + result.Item1;
                string url = result.Item2;
                string filePath = "";
                string folderName = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);
                Directory.CreateDirectory(folderName + "\\CardImages");
                string[] cardNumberSplit = url.Split('_');
                string cardNumber = cardNumberSplit[cardNumberSplit.Length - 1].Split('/', '.')[0];
                number = number.Split('/')[0];

                if (number != "" && cardNumber != number)
                {
                    // Card number did not match user input
                    // Continue with the next card
                    continue;
                }                

                string cardName = result.Item3;
                url = "http:" + url;
                try
                {
                    if (!File.Exists(folderName + "\\CardImages\\" + cardNumber + cardName + ".png"))
                    {
                        using (var client = new WebClient())
                        {                                              
                            client.DownloadFile(new Uri(url), folderName + "\\CardImages\\" + cardNumber + cardName + ".png");
                        }
                    }

                    filePath = folderName + "\\CardImages\\" + cardNumber + cardName + ".png";

                    resultList.Add(new Tuple<string, string>(cardUrl, filePath));
                }
                catch(WebException ex)
                {
                    Console.WriteLine(ex.InnerException);
                }              
                catch(Exception e)
                {
                    Console.WriteLine(e.StackTrace);
                }          
            }
            Console.WriteLine("Images downloaded at " + DateTime.Now);
            return resultList;
        }
 public void Update(EnergyCard obj)
 {
     throw new NotImplementedException();
 }
Example #29
0
        /// <summary>
        /// Search function for the cards.
        /// Returns a list of cards based on a user input search term.
        /// Searches based on pokemon name.
        /// </summary>
        /// <param name="pokemonName"></param>
        /// <returns></returns>        
        public async Task getListOfPokemonByName(string pokemonName, string cardSet, string number, 
                                                BaseCard.Rarity rarity, EnergyCard.EnergyType energyType)
        {
            HtmlDocument doc;

            List<string> urlSearchList = new List<string>();

            // This function should return all the URLs gathered by the search            
            string cardSetSearch = "";
            string cardRaritySearch = "";
            string energySearch = "";

            if (rarity != BaseCard.Rarity.None)
            {
                cardRaritySearch = rarityDictionary[rarity];
            }
            if (energyType != EnergyCard.EnergyType.None)
            {
                energySearch = energyDictionary[energyType];
            }
            if (cardSet != "All")
            {
                cardSetSearch = cardSetSearchDictionary[cardSet];
            }
            else if (cardSet == "All" || number.Contains("/"))
            {
                cardSetSearch = "";

                if (number.Contains("/"))
                {
                    cardSetSearch = "";
                    string[] splitString = number.Split('/');
                    if (cardSetNumberDictionary.ContainsKey(splitString[1]))
                    {
                        string[] cardSets = cardSetNumberDictionary[splitString[1]];

                        if (cardSets.Length > 0)
                        {
                            foreach (string setNumber in cardSets)
                            {
                                cardSetSearch += setNumber;
                            }
                            number = splitString[0];
                        }
                    }
                    else
                    {
                        Console.WriteLine("Invalid Set Number Provided");
                        return;
                    }
                }
            }
            else
            {
                cardSetSearch = cardSetSearchDictionary[cardSet];
            }

            string queryString = "?" + NAME_SEARCH + pokemonName + SEARCH_ALL_POKEMON_URL + cardSetSearch + cardRaritySearch + energySearch;

            doc = web.Load(POKEMON_CARD_URL + BASE_SEARCH_URL + queryString);

            // Check if the user input returns any results on the website
            if (doc.DocumentNode.SelectSingleNode(XPATH_NO_RESULT_FOUND) != null)
            {
                // Search turned up no results
                return;
            }
            HtmlNode resultNode = doc.DocumentNode.SelectSingleNode("//*[@id='cardResults']");
            string numberOfPages = doc.DocumentNode.SelectSingleNode("//*[@id='cards-load-more']/div/span").InnerText;
            string[] stringSplit = numberOfPages.Split();
            int pagesToSearch = Int32.Parse(stringSplit[stringSplit.Length - 1]);

            if (pagesToSearch > 50)
            {                
                return;
            }

            for (int i = 1; i <= pagesToSearch; ++i)
            {
                string url = POKEMON_CARD_URL + BASE_SEARCH_URL + i.ToString() + queryString;
                urlSearchList.Add(url);
            }

            await DownloadMultipleFilesAsync(urlSearchList);
            return;
        }