コード例 #1
0
        public override void OnCastMinion(Board board, Card minion, Card target)
        {
            switch (minion.Template.Id)
            {
            case Card.Cards.EX1_007:                    //Acolyte of Pain, ID: EX1_007
                if (BoardHelper.CanBeImmediatelyKilledByEnemy(board, minion) && board.Hand.Count < CARDS_IN_HAND_THRESHHOLD)
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.3f;
                }
                break;

            case Card.Cards.EX1_402:                     //Armorsmith, ID: EX1_402
                if (BoardHelper.CanBeImmediatelyKilledByEnemy(board, minion) && !BoardHelper.CanPlayCard(board, _enragingSpells, minion.CurrentCost))
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                break;

            case Card.Cards.EX1_012:                                                                                                                                                                    //Bloodmage Thalnos, ID: EX1_012
                if (BoardHelper.CanBeImmediatelyKilledByEnemy(board, minion) || board.Hand.Count > CARDS_IN_HAND_THRESHHOLD || !BoardHelper.CanPlayCard(board, Card.Cards.EX1_400, minion.CurrentCost)) // EX1_400 - whirlwind
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                break;

            case Card.Cards.EX1_603:                     //Cruel Taskmaster, ID: EX1_603
                if ((target.CurrentHealth == 1 && !BoardHelper.IsOwnMinion(board, target)) || BoardHelper.CanEnrageOrGetArmor(board, _enragingSpells, _enrageableMinions) || BoardHelper.CanExecute(board, MIN_VALUE_EXECUTE, minion.CurrentCost))
                {
                    MinionCastGlobalValue += 0;     // GetCardValue(board, minion) * 1.3f;
                }
                else
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                break;

            case Card.Cards.NEW1_022:                    //Dread Corsair, ID: NEW1_022
                if (BoardHelper.CanPlayDreadCorsair(board, minion))
                {
                    MinionCastGlobalValue += GetCardValue(board, minion) * 1.3f;
                }
                else
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                break;

            case Card.Cards.GVG_110:                    //Dr. Boom
                break;

            case Card.Cards.EX1_604:    //Frothing Berserker
                if (BoardHelper.CanBeImmediatelyKilledByEnemy(board, minion) && !BoardHelper.CanCharge(board, minion) && !BoardHelper.CanPlayTaunt(board, minion.CurrentCost))
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                if (!BoardHelper.CanBePlayedAndEnraged(board, _enragingSpells, minion) || !BoardHelper.CanCharge(board, minion) || !BoardHelper.CanPlayTaunt(board, minion.CurrentCost))
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.3f;
                }
                break;

            case Card.Cards.CS2_147:    //Gnomish Inventor
                break;

            case Card.Cards.BRM_019:    //Grim Patron
                if ((BoardHelper.CanBeImmediatelyKilledByEnemy(board, minion) && !BoardHelper.CanBePlayedAndEnraged(board, _enragingSpells, minion)) || !(BoardHelper.CanCharge(board, minion) && BoardHelper.AnyEnemyTargets(board, 2)))
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 2f;
                }
                break;

            case Card.Cards.EX1_084:    //Warsong Commander
                if (!BoardHelper.CanPlayWarsongCommander(board, minion))
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 2f;
                }
                break;

            case Card.Cards.BRMA03_1:    //Emperor Thaurissan
                if (board.Hand.Count < 3)
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                if (board.Hand.Count > 5)
                {
                    MinionCastGlobalValue += GetCardValue(board, minion) * 1.2f;
                }
                break;

            case Card.Cards.EX1_414:    //Grommash Hellscream, ID: EX1_414
                if (!BoardHelper.CanBePlayedAndEnraged(board, _enragingSpells, minion))
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                break;

            case Card.Cards.FP1_024:    //Unstable Ghoul, ID: FP1_024
                if (board.MinionEnemy.Count == 0 || !BoardHelper.CanEnrageOrGetArmor(board, _enragingSpells, _enrageableMinions))
                {
                    MinionCastGlobalCost += GetCardValue(board, minion) * 0.5f;
                }
                break;
            }

            if (BoardHelper.IsFirstMove(board))
            {
                OnFirstAction(board, minion, target, true, false, false);
            }

            //DebugLog("MINION: " + minion.Template.Name + ", standard value: " + GetCardValue(board, minion) + ", added value: " + MinionCastGlobalValue + ", added cost: " + MinionCastGlobalCost + "; TARGET: " + ", standard value: " + GetCardValue(board, target));
            //DebugBestLog("BEST MINION: " + minion.Template.Name + ", standard value: " + GetCardValue(board, minion) + ", added value: " + MinionCastGlobalValue + ", added cost: " + MinionCastGlobalCost + "; TARGET: " + ", standard value: " + GetCardValue(board, target));
        }