public static void ManageNeutralMinion(Card.Cards card)
        {
            //<= max mana
            var boardCard = new BoardCard(card);

            if (boardCard.ResultingBoardCard.Quality >= ValueReader.MinCardQualityToInstantAddMinion) //epic by default
            {
                MainLists.chosenCards.Add(card);
            }
            else
            {
                //card quality not hight enoughbut <= max mana
                if (!ValueReader.AttendMinionValue ||
                    boardCard.ResultingBoardCard.Cost < ValueReader.MinManaCostToAttendValue)
                {
                    //mana <= max cost & mana < MinManaCostToAttendValue
                    MainLists.chosenCards.Add(card);
                }
                else if (boardCard.ResultingBoardCard.Cost >= ValueReader.MinManaCostToAttendValue)
                {
                    var minionCard = new NeutralMinion(card);
                    MinionValue.Value requiredMinNeutralMinionValue =
                        minionCard.minionBoardCard.IsMaxManaCard && ValueReader.IncreaseMinMinionValueIfMaxCost
                            ? ValueReader.IncreasedMinNeutralMinionValue
                            : ValueReader.MinNeutralMinionValue;

                    if (minionCard.thisCardValue >= requiredMinNeutralMinionValue)
                    {
                        MainLists.chosenCards.Add(card);
                    }
                }
            }
        }
        public static bool WouldTakeMinion(CardTemplate boardCard)
        {
            try
            {
                if (new NeutralMinion(boardCard).minionBoardCard == null) //not a neutral minion
                {
                    return(false);
                }
                //<= max mana
                Card.Cards card = CardTemplate.StringToCard(boardCard.Id.ToString());

                #region normalChecks

                if (MainLists.whiteList.Contains(boardCard.Id.ToString()))
                {
                    return(true);
                }
                if (MainLists.blackList.Contains((boardCard.Id.ToString())))
                {
                    return(false);
                }

                if (boardCard.Quality >= ValueReader.MinCardQualityToInstantAddMinion) //epic by default
                {
                    return(true);
                }

                //card quality not hight enough and mana to high too
                if ((!ValueReader.AttendMinionValue ||
                     boardCard.Cost < ValueReader.MinManaCostToAttendValue) && boardCard.Cost <= MainLists.MaxManaCost)
                {
                    return(true);
                }

                if (boardCard.Cost > MainLists.MaxManaCost)
                {
                    return(false);
                }

                //value has to be attended
                var minionCard = new NeutralMinion(card);
                MinionValue.Value requiredMinNeutralMinionValue =
                    minionCard.minionBoardCard.IsMaxManaCard && ValueReader.IncreaseMinMinionValueIfMaxCost
                        ? ValueReader.IncreasedMinNeutralMinionValue
                        : ValueReader.MinNeutralMinionValue;

                return(minionCard.thisCardValue >= requiredMinNeutralMinionValue);

                #endregion normalChecks
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(false);
            }
        }
        private NeutralMinion(Card.Cards NeutralMinionMulliganCard)
        {
            minionBoardCard = new BoardCard(NeutralMinionMulliganCard).IsClassCard() ||
                              NeutralMinionMulliganCard.ToString() == "GAME_005"
                ?
                              null
                :
                              new BoardCard(NeutralMinionMulliganCard);

            thisCardValue =
                minionBoardCard != null
                    ? MinionValue.SetCardValue(minionBoardCard)
                    : MinionValue.Value.NotANeutralMinion;

            if (minionBoardCard != null && MainLists.whiteList.Contains(minionBoardCard.ResultingBoardCard.Name))
            {
                thisCardValue = MinionValue.Value.InWhiteList;
            }
        }
        /// <summary>
        /// load obvious whitelist first to determine if Value.InWhiteList
        /// </summary>
        /// <param name="NeutralMinionBoardCard"></param>
        public NeutralMinion(CardTemplate NeutralMinionBoardCard)
        {
            Card.Cards NeutralMinionMulliganCardCard = BoardToMulliganCard(NeutralMinionBoardCard);

            minionBoardCard = NeutralMinionBoardCard.Class != Card.CClass.NONE ||
                              NeutralMinionMulliganCardCard.ToString() == "GAME_005"
                ?
                              null
                :
                              new BoardCard(NeutralMinionMulliganCardCard);

            thisCardValue =
                minionBoardCard != null?MinionValue.SetCardValue(minionBoardCard) :
                    MinionValue.Value.NotANeutralMinion;

            if (minionBoardCard != null && MainLists.whiteList.Contains(minionBoardCard.ResultingBoardCard.Name))
            {
                thisCardValue = MinionValue.Value.InWhiteList;
            }
        }