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); }
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); }