コード例 #1
0
        public void CloneAura()
        {
            var game = new Game(new GameConfig
            {
                StartPlayer      = 1,
                Player1HeroClass = CardClass.MAGE,
                Player2HeroClass = CardClass.MAGE,
                Player2Deck      = new List <Card>
                {
                    Cards.FromName("Mana Wyrm"),
                    Cards.FromName("Kirin Tor Mage"),
                    Cards.FromName("Vaporize")
                },
                Shuffle   = false,
                FillDecks = false,
                History   = false,
            });

            game.Player1.BaseMana = 10;
            game.Player2.BaseMana = 10;
            game.StartGame();

            game.Process(EndTurnTask.Any(game.CurrentPlayer));

            PlayCardTask task1 = PlayCardTask.Any(game.CurrentPlayer, "Mana Wyrm");
            PlayCardTask task2 = PlayCardTask.Any(game.CurrentPlayer, "The Coin");

            game.Process(task1);
            Game clone = game.Clone();

            clone.Process(task1);
            game.Process(task2);
            clone.Process(task2);
            Game clone2 = clone.Clone();

            SabberStoneCore.Model.Entities.Minion minion       = game.CurrentPlayer.BoardZone[0];
            SabberStoneCore.Model.Entities.Minion cloneMinion  = clone.CurrentPlayer.BoardZone[0];
            SabberStoneCore.Model.Entities.Minion clone2Minion = clone2.CurrentPlayer.BoardZone[0];

            Assert.Equal(2, minion.AttackDamage);
            Assert.Equal(2, cloneMinion.AttackDamage);
            Assert.Equal(2, clone2Minion.AttackDamage);

            clone2.Process(PlayCardTask.Any(game.CurrentPlayer, "Kirin Tor Mage"));
            Assert.Equal(2, clone2.Auras.Count);
            Game clone3 = clone2.Clone();
            var  task3  = PlayCardTask.Any(game.CurrentPlayer, "Vaporize");

            clone3.Process(task3);
            clone2.Process(task3);
            Assert.Single(clone2.Auras);
            Assert.Single(clone3.Auras);

            Assert.Equal(3, clone2Minion.AttackDamage);
        }
コード例 #2
0
        public double scoreMinion(SabberStoneCore.Model.Entities.Minion minion)
        {
            double minionScore = 0;

            if (minion.HasCharge)
            {
                minionScore += weights[M_HAS_CHARGE];
            }
            if (minion.IsRush)
            {
                minionScore += weights[M_IS_RUSH];
            }
            if (minion.HasDeathrattle)
            {
                minionScore += weights[M_HAS_DEAHTRATTLE];
            }
            if (minion.HasDivineShield)
            {
                minionScore += weights[M_HAS_DIVINE_SHIELD];
            }
            if (minion.HasLifeSteal)
            {
                minionScore += weights[M_HAS_LIFE_STEAL];
            }
            if (minion.HasTaunt)
            {
                minionScore += weights[M_HAS_TAUNT];
            }
            if (minion.HasWindfury)
            {
                minionScore += weights[M_HAS_WINDFURY];
            }
            if (minion.HasStealth)
            {
                minionScore += weights[M_HAS_STEALTH];
            }
            if (minion.CantBeTargetedBySpells)
            {
                minionScore += weights[M_CANT_BE_TARGETED_BY_SPELLS];
            }
            if (minion.Poisonous)
            {
                minionScore += weights[M_POISONOUS];
            }
            minionScore += weights[M_MANA_COST] * minion.Card.Cost;
            return(minionScore);
        }